Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit30a94fc

Browse files
Remove TODO notes in sponsors app (python#1692)
* Refactor unit test by centralizing data dict in set up* Only proceed to sponsor info form if Django can use cookies* Remove outdated template tag (used with old Sponsors models)* Update sponsors/views.py* Update sponsors/tests/test_views.pyCo-authored-by: Ernest W. Durbin III <ernest@python.org>
1 parentaf59bc0 commit30a94fc

File tree

6 files changed

+54
-58
lines changed

6 files changed

+54
-58
lines changed

‎sponsors/templatetags/sponsors.py

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,6 @@
66
register=template.Library()
77

88

9-
@register.inclusion_tag("sponsors/templatetags/featured_sponsor_rotation.html")
10-
deffeatured_sponsor_rotation():
11-
"""
12-
Retrieve featured Sponsors for rotation
13-
"""
14-
# TODO remove this code completely if not necessary
15-
# this templatetag logic was removed by the PR #1667
16-
# the Sponsor model got updated and its previous use was deprecated
17-
# this templated tag is used at https://www.python.org/psf-landing/ but since the prod
18-
# DB doesn't have any published sponsor, the default message is being print
19-
return {}
20-
21-
229
@register.inclusion_tag("sponsors/partials/full_sponsorship.txt")
2310
deffull_sponsorship(sponsorship):
2411
return {

‎sponsors/tests/test_templatetags.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,7 @@
44
fromcompanies.modelsimportCompany
55

66
from ..modelsimportSponsor
7-
from ..templatetags.sponsorsimportfeatured_sponsor_rotation,full_sponsorship
8-
9-
10-
classSponsorTemplatetagTests(TestCase):
11-
deftest_templatetag(self):
12-
sponsors_context=featured_sponsor_rotation()
13-
self.assertEqual({},sponsors_context)
7+
from ..templatetags.sponsorsimportfull_sponsorship
148

159

1610
classFullSponsorshipTemplatetagTests(TestCase):

‎sponsors/tests/test_views.py

Lines changed: 39 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@
22
frommodel_bakeryimportbaker
33
fromitertoolsimportchain
44

5+
fromdjango.confimportsettings
56
fromdjango.contribimportmessages
67
fromdjango.contrib.auth.modelsimportGroup
7-
fromdjango.confimportsettings
8+
fromdjango.contrib.messagesimportget_messages
9+
fromdjango.contrib.sessions.backends.baseimportSessionBase
810
fromdjango.coreimportmail
9-
fromdjango.urlsimportreverse,reverse_lazy
1011
fromdjango.testimportTestCase
11-
fromdjango.contrib.messagesimportget_messages
12+
fromdjango.urlsimportreverse,reverse_lazy
1213

1314
from .utilsimportget_static_image_file_as_upload
1415
from ..modelsimport (
@@ -42,11 +43,24 @@ def setUp(self):
4243
self.program_2_benefits=baker.make(
4344
SponsorshipBenefit,program=self.wk,_quantity=5
4445
)
46+
self.package=baker.make("sponsors.SponsorshipPackage")
47+
forbenefitinself.program_1_benefits:
48+
benefit.packages.add(self.package)
4549
self.user=baker.make(settings.AUTH_USER_MODEL,is_staff=True,is_active=True)
4650
self.client.force_login(self.user)
4751

4852
self.group=Group(name="Sponsorship Preview")
4953
self.group.save()
54+
self.data= {
55+
"benefits_psf": [b.idforbinself.program_1_benefits],
56+
"benefits_working_group": [b.idforbinself.program_2_benefits],
57+
"package":self.package.id,
58+
}
59+
60+
defpopulate_test_cookie(self):
61+
session=self.client.session
62+
session[SessionBase.TEST_COOKIE_NAME]=SessionBase.TEST_COOKIE_VALUE
63+
session.save()
5064

5165
deftest_display_template_with_form_and_context(self):
5266
psf_package=baker.make("sponsors.SponsorshipPackage")
@@ -59,45 +73,36 @@ def test_display_template_with_form_and_context(self):
5973
self.assertTemplateUsed(r,"sponsors/sponsorship_benefits_form.html")
6074
self.assertIsInstance(r.context["form"],SponsorshiptBenefitsForm)
6175
self.assertEqual(r.context["benefit_model"],SponsorshipBenefit)
62-
self.assertEqual(2,packages.count())
76+
self.assertEqual(3,packages.count())
6377
self.assertIn(psf_package,packages)
6478
self.assertIn(extra_package,packages)
79+
self.assertEqual(
80+
r.client.session[SessionBase.TEST_COOKIE_NAME],
81+
SessionBase.TEST_COOKIE_VALUE,
82+
)
6583

6684
deftest_display_form_with_errors_if_invalid_post(self):
85+
self.populate_test_cookie()
6786
r=self.client.post(self.url, {})
6887
form=r.context["form"]
6988

7089
self.assertIsInstance(form,SponsorshiptBenefitsForm)
7190
self.assertTrue(form.errors)
7291

7392
deftest_valid_post_redirect_user_to_next_form_step_and_save_info_in_cookies(self):
74-
package=baker.make("sponsors.SponsorshipPackage")
75-
forbenefitinself.program_1_benefits:
76-
benefit.packages.add(package)
77-
78-
data= {
79-
"benefits_psf": [b.idforbinself.program_1_benefits],
80-
"benefits_working_group": [b.idforbinself.program_2_benefits],
81-
"package":package.id,
82-
}
83-
response=self.client.post(self.url,data=data)
93+
self.populate_test_cookie()
94+
response=self.client.post(self.url,data=self.data)
8495

8596
self.assertRedirects(response,reverse("new_sponsorship_application"))
8697
cookie_value=json.loads(
8798
response.client.cookies["sponsorship_selected_benefits"].value
8899
)
89-
self.assertEqual(data,cookie_value)
100+
self.assertEqual(self.data,cookie_value)
90101

91102
deftest_populate_form_initial_with_values_from_cookie(self):
92-
initial= {
93-
"benefits_psf": [b.idforbinself.program_1_benefits],
94-
"benefits_working_group": [b.idforbinself.program_2_benefits],
95-
"package":"",
96-
}
97-
self.client.cookies["sponsorship_selected_benefits"]=json.dumps(initial)
103+
self.client.cookies["sponsorship_selected_benefits"]=json.dumps(self.data)
98104
r=self.client.get(self.url)
99-
100-
self.assertEqual(initial,r.context["form"].initial)
105+
self.assertEqual(self.data,r.context["form"].initial)
101106

102107
deftest_capacity_flag(self):
103108
psf_package=baker.make("sponsors.SponsorshipPackage")
@@ -117,20 +122,22 @@ def test_redirect_to_login(self):
117122
redirect_url= (
118123
f"{settings.LOGIN_URL}?next={reverse('new_sponsorship_application')}"
119124
)
120-
package=baker.make("sponsors.SponsorshipPackage")
121-
forbenefitinself.program_1_benefits:
122-
benefit.packages.add(package)
123125

124-
data= {
125-
"benefits_psf": [b.idforbinself.program_1_benefits],
126-
"benefits_working_group": [b.idforbinself.program_2_benefits],
127-
"package":package.id,
128-
}
129126
self.client.logout()
130-
response=self.client.post(self.url,data=data)
127+
self.populate_test_cookie()
128+
response=self.client.post(self.url,data=self.data)
131129

132130
self.assertRedirects(response,redirect_url,fetch_redirect_response=False)
133131

132+
deftest_invalidate_post_even_if_valid_data_but_user_does_not_allow_cookies(self):
133+
# do not set Django's test cookie
134+
r=self.client.post(self.url,data=self.data)
135+
form=r.context["form"]
136+
137+
self.assertIsInstance(form,SponsorshiptBenefitsForm)
138+
msg="You must allow cookies from python.org to proceed."
139+
self.assertEqual(form.non_field_errors(), [msg])
140+
134141

135142
classNewSponsorshipApplicationViewTests(TestCase):
136143
url=reverse_lazy("new_sponsorship_application")

‎sponsors/views.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
fromdjango.contrib.auth.decoratorsimportlogin_required
66
fromdjango.contrib.auth.mixinsimportLoginRequiredMixin
77
fromdjango.dbimporttransaction
8+
fromdjango.forms.utilsimportErrorList
89
fromdjango.utils.decoratorsimportmethod_decorator
910
fromdjango.httpimportJsonResponse
1011
fromdjango.views.genericimportListView,FormView
@@ -57,12 +58,21 @@ def get_initial(self):
5758
returncookies.get_sponsorship_selected_benefits(self.request)
5859

5960
defform_valid(self,form):
61+
ifnotself.request.session.test_cookie_worked():
62+
error=ErrorList()
63+
error.append("You must allow cookies from python.org to proceed.")
64+
form._errors.setdefault("__all__",error)
65+
returnself.form_invalid(form)
66+
6067
response=super().form_valid(form)
6168
self._set_form_data_cookie(form,response)
6269
returnresponse
6370

71+
defget(self,request,*args,**kwargs):
72+
request.session.set_test_cookie()
73+
returnsuper().get(request,*args,**kwargs)
74+
6475
def_set_form_data_cookie(self,form,response):
65-
# TODO: make sure user accepts cookies with set_test_cookie
6676
data= {
6777
"package":""ifnotform.get_package()elseform.get_package().id,
6878
}

‎templates/psf/index.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@
5454

5555
<divclass="small-widget psf-widget4 last">
5656
<h2class="widget-title">Sponsors</h2>
57-
{% featured_sponsor_rotation %}
57+
<divid="sponsor-rotation"class="flex-slideshow">
58+
<p>Without our sponsors we wouldn't be able to help the Python community grow and prosper.</p>
59+
</div>
5860
<p><aclass="button"href="/psf/sponsorship/">Sponsorship Possibilities</a></p>
5961
</div>
6062

‎templates/sponsors/templatetags/featured_sponsor_rotation.html

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp