Changeset 5b834ab
- Timestamp:
- Sep 8, 2011, 1:31:12 AM (14 years ago)
- Branches:
- master, space-access, stable, stage, test-hooks
- Children:
- aa31d18
- Parents:
- bb674c2
- git-author:
- Alex Dehnert <adehnert@…> (09/08/11 00:51:05)
- git-committer:
- Alex Dehnert <adehnert@…> (09/08/11 01:31:12)
- Location:
- asadb
- Files:
-
- 7 added
- 4 edited
-
forms/admin.py (modified) (1 diff)
-
forms/migrations/0005_group_membership_update.py (added)
-
forms/migrations/0006_person_membership_update.py (added)
-
forms/models.py (modified) (1 diff)
-
forms/views.py (modified) (1 diff)
-
template/membership/anti-hazing.txt (added)
-
template/membership/confirm.html (added)
-
template/membership/submit-confirm-email.txt (added)
-
template/membership/thanks.html (added)
-
template/membership/update.html (added)
-
urls.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
asadb/forms/admin.py
rbb674c2 r5b834ab 22 22 admin.site.register(forms.models.FYSM, FYSMAdmin) 23 23 admin.site.register(forms.models.FYSMCategory, FYSMCategoryAdmin) 24 25 class Admin_GroupMembershipUpdate(admin.ModelAdmin): 26 list_display = ( 27 'pk', 28 'group', 29 'update_time', 30 'updater_name', 31 'updater_title', 32 'num_undergrads', 33 'num_grads', 34 'num_community', 35 'num_other', 36 ) 37 list_display_links = ('pk', 'group', ) 38 admin.site.register(forms.models.GroupMembershipUpdate, Admin_GroupMembershipUpdate) 39 40 class Admin_PersonMembershipUpdate(admin.ModelAdmin): 41 list_display = ( 42 'pk', 43 'username', 44 'update_time', 45 ) 46 list_display_links = ('pk', 'username', ) 47 admin.site.register(forms.models.PersonMembershipUpdate, Admin_PersonMembershipUpdate) -
asadb/forms/models.py
rbb674c2 r5b834ab 135 135 preview.update_time = cls.never_updated 136 136 preview.save() 137 138 139 class GroupMembershipUpdate(models.Model): 140 update_time = models.DateTimeField(default=datetime.datetime.utcfromtimestamp(0)) 141 updater_name = models.CharField(max_length=30) 142 updater_title = models.CharField(max_length=30, help_text="You need not hold any particular title in the group, but we like to know who is completing the form.") 143 144 group = models.ForeignKey(groups.models.Group, help_text="If your group does not appear in the list above, then please email asa-exec@mit.edu.") 145 group_email = models.EmailField(help_text="The text of the law will be automatically distributed to your members via this list, in order to comply with the law.") 146 officer_email = models.EmailField() 147 148 membership_definition = models.TextField() 149 num_undergrads = models.IntegerField() 150 num_grads = models.IntegerField() 151 num_community = models.IntegerField() 152 num_other = models.IntegerField() 153 154 membership_list = models.TextField(help_text="Member emails on separate lines (Athena usernames where applicable)") 155 156 compliance_statement = "By checking this, I hereby affirm that I have read and understand Chapter 269: Sections 17, 18, and 19 of Massachusetts Law. I furthermore attest that I will distribute to group members, pledges, and/or applicants, copies of Massachusetts Law 269: 17, 18, 19 and that our organization, group, or team agrees to comply with the provisions of that law. (See below for text.)" 157 no_hazing = models.BooleanField(help_text=compliance_statement) 158 159 160 class PersonMembershipUpdate(models.Model): 161 update_time = models.DateTimeField(default=datetime.datetime.utcfromtimestamp(0)) 162 username = models.CharField(max_length=30) 163 groups = models.ManyToManyField(groups.models.Group, help_text="By selecting a group here, you indicate that you are an active member of the group in question.<br>If your group does not appear in the list above, then please email asa-exec@mit.edu.<br>") -
asadb/forms/views.py
r2c0eaa1 r5b834ab 220 220 } 221 221 return render_to_response('fysm/thanks.html', context, context_instance=RequestContext(request), ) 222 223 ##################### 224 # Membership update # 225 ##################### 226 227 class Form_GroupMembershipUpdate(ModelForm): 228 def __init__(self, *args, **kwargs): 229 super(Form_GroupMembershipUpdate, self).__init__(*args, **kwargs) 230 self.fields['no_hazing'].required = True 231 232 class Meta: 233 model = forms.models.GroupMembershipUpdate 234 fields = [ 235 'group', 236 'updater_title', 237 'group_email', 238 'officer_email', 239 'no_hazing', 240 'membership_definition', 241 'num_undergrads', 242 'num_grads', 243 'num_community', 244 'num_other', 245 'membership_list', 246 ] 247 248 @login_required 249 def group_membership_update(request, ): 250 year = datetime.date.today().year 251 252 initial = { 253 } 254 update_obj = forms.models.GroupMembershipUpdate() 255 update_obj.update_time = datetime.datetime.now() 256 update_obj.updater_name = request.user.username 257 258 confirm_path = reverse('membership-confirm', ) 259 confirm_uri = '%s://%s%s' % (request.is_secure() and 'https' or 'http', 260 request.get_host(), confirm_path) 261 262 if request.method == 'POST': # If the form has been submitted... 263 form = Form_GroupMembershipUpdate(request.POST, request.FILES, instance=update_obj) # A form bound to the POST data 264 265 if form.is_valid(): # All validation rules pass 266 request_obj = form.save() 267 group_obj = request_obj.group 268 269 270 # Send email 271 tmpl = get_template('membership/anti-hazing.txt') 272 ctx = Context({ 273 'update': request_obj, 274 'group': group_obj, 275 'submitter': request.user, 276 }) 277 body = tmpl.render(ctx) 278 email = EmailMessage( 279 subject='ASA Anti-Hazing Acknowledgement for %s' % ( 280 group_obj.name, 281 ), 282 body=body, 283 from_email=request.user.email, 284 to=[request_obj.group_email, ], 285 cc=[request_obj.officer_email, ], 286 #bcc=['asa-db-outgoing@mit.edu', ], 287 ) 288 email.send() 289 290 # Send email 291 tmpl = get_template('membership/submit-confirm-email.txt') 292 ctx = Context({ 293 'update': request_obj, 294 'group': group_obj, 295 'submitter': request.user, 296 'confirm_uri': confirm_uri, 297 }) 298 body = tmpl.render(ctx) 299 email = EmailMessage( 300 subject='ASA Membership Information for %s' % ( 301 group_obj.name, 302 ), 303 body=body, 304 from_email=request.user.email, 305 to=[request_obj.officer_email, ], 306 #bcc=['asa-db-outgoing@mit.edu', ], 307 ) 308 email.send() 309 310 return HttpResponseRedirect(reverse('membership-thanks', )) # Redirect after POST 311 312 else: 313 form = Form_GroupMembershipUpdate(initial=initial, ) # An unbound form 314 315 context = { 316 'form':form, 317 'confirm_uri': confirm_uri, 318 'pagename':'groups', 319 } 320 return render_to_response('membership/update.html', context, context_instance=RequestContext(request), ) 321 322 class Form_PersonMembershipUpdate(ModelForm): 323 class Meta: 324 model = forms.models.PersonMembershipUpdate 325 fields = [ 326 'groups', 327 ] 328 329 @login_required 330 def person_membership_update(request, ): 331 year = datetime.date.today().year 332 333 initial = { 334 } 335 update_obj = forms.models.PersonMembershipUpdate() 336 update_obj.update_time = datetime.datetime.now() 337 update_obj.username = request.user.username 338 339 if request.method == 'POST': # If the form has been submitted... 340 form = Form_PersonMembershipUpdate(request.POST, request.FILES, instance=update_obj) # A form bound to the POST data 341 342 if form.is_valid(): # All validation rules pass 343 request_obj = form.save() 344 return HttpResponseRedirect(reverse('membership-thanks', )) # Redirect after POST 345 346 else: 347 form = Form_PersonMembershipUpdate(initial=initial, ) # An unbound form 348 349 context = { 350 'form':form, 351 'pagename':'groups', 352 } 353 return render_to_response('membership/confirm.html', context, context_instance=RequestContext(request), ) -
asadb/urls.py
rb01b0ba r5b834ab 35 35 url(r'^fysm/(?:(\d+)/)?(?:([\w-]+)/)?$', forms.views.fysm_by_years, name='fysm', ), 36 36 37 url(r'^membership/update/$', forms.views.group_membership_update, name='membership-update', ), 38 url(r'^membership/confirm/$', forms.views.person_membership_update, name='membership-confirm', ), 39 url( 40 r'^membership/thanks/$', 41 'django.views.generic.simple.direct_to_template', 42 {'template': 'membership/thanks.html', 'extra_context': { 'pagename':'groups' }, }, 43 name='membership-thanks', 44 ), 45 37 46 # Group list 38 47 url(
Note: See TracChangeset
for help on using the changeset viewer.