Changeset bda4d86
- Timestamp:
- Nov 4, 2012, 2:45:54 AM (14 years ago)
- Branches:
- master, space-access, stable, stage
- Children:
- 72a3d90
- Parents:
- ef00d33
- git-author:
- Alex Dehnert <adehnert@…> (11/04/12 01:13:13)
- git-committer:
- Alex Dehnert <adehnert@…> (11/04/12 02:45:54)
- Location:
- asadb
- Files:
-
- 1 added
- 8 edited
-
forms/admin.py (modified) (2 diffs)
-
forms/migrations/0012_add_group_cycle.py (added)
-
forms/models.py (modified) (1 diff)
-
forms/views.py (modified) (9 diffs)
-
groups/models.py (modified) (1 diff)
-
template/forms/select.html (modified) (1 diff)
-
template/index.html (modified) (1 diff)
-
template/membership/update.html (modified) (1 diff)
-
urls.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
asadb/forms/admin.py
r0229bd5 rbda4d86 38 38 'pk', 39 39 'group', 40 'cycle', 40 41 'update_time', 41 42 'updater_name', … … 47 48 'num_other', 48 49 ) 50 list_filter = ('cycle', ) 49 51 list_display_links = ('pk', 'group', ) 50 52 search_fields = ('group__name', 'group__abbreviation', 'updater_name', ) -
asadb/forms/models.py
r8eca9da rbda4d86 155 155 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.") 156 156 157 cycle = models.ForeignKey(GroupConfirmationCycle) 157 158 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.", db_index=True, ) 158 159 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.") -
asadb/forms/views.py
ref00d33 rbda4d86 6 6 7 7 from django.contrib.auth.decorators import user_passes_test, login_required, permission_required 8 from django.core.exceptions import PermissionDenied 8 9 from django.views.generic import list_detail, ListView, DetailView 9 10 from django.shortcuts import render_to_response, get_object_or_404 … … 40 41 self.fields["group"].queryset = queryset 41 42 42 def select_group(request, url_name_after, pagename='homepage', queryset=None,):43 def select_group(request, url_name_after, url_args=[], pagename='homepage', queryset=None, title="", msg=""): 43 44 if request.method == 'POST': # If the form has been submitted... 44 45 # A form bound to the POST data … … 46 47 if form.is_valid(): # All validation rules pass 47 48 group = form.cleaned_data['group'].id 48 return HttpResponseRedirect(reverse(url_name_after, args= [group],)) # Redirect after POST49 return HttpResponseRedirect(reverse(url_name_after, args=url_args+[group],)) # Redirect after POST 49 50 else: 50 51 form = SelectGroupForm(queryset=queryset, ) # An unbound form 51 52 53 if not title: title = "Select group" 52 54 context = { 53 55 'form':form, 56 'title':title, 57 'msg':msg, 54 58 'pagename':pagename, 55 59 } … … 243 247 membership_update_qs = groups.models.Group.objects.filter(group_status__slug__in=['active', 'suspended', ]) 244 248 249 @login_required 250 def group_membership_update_select_group(request, ): 251 cycle = forms.models.GroupConfirmationCycle.latest() 252 253 users_groups = groups.models.Group.involved_groups(request.user.username) 254 qs = membership_update_qs.filter(pk__in=users_groups) 255 256 return select_group(request=request, 257 url_name_after='membership-update-group', 258 url_args=[cycle.slug], 259 pagename='groups', 260 queryset=qs, 261 title="Submit membership update for...", 262 msg="The list below contains only groups that list you as being involved. You must be an administrator of a group to submit an update.", 263 ) 264 245 265 class Form_GroupMembershipUpdate(ModelForm): 246 group = ModelChoiceField(queryset=membership_update_qs)247 248 266 def __init__(self, *args, **kwargs): 249 267 super(Form_GroupMembershipUpdate, self).__init__(*args, **kwargs) … … 253 271 model = forms.models.GroupMembershipUpdate 254 272 fields = [ 255 'group',256 273 'updater_title', 257 274 'group_email', … … 270 287 271 288 @login_required 272 def group_membership_update(request, ): 273 initial = { 274 } 275 update_obj = forms.models.GroupMembershipUpdate() 276 update_obj.update_time = datetime.datetime.now() 277 update_obj.updater_name = request.user.username 289 def group_membership_update(request, cycle_slug, pk, ): 290 cycle = get_object_or_404(forms.models.GroupConfirmationCycle, slug=cycle_slug) 291 group_obj = get_object_or_404(groups.models.Group, pk=pk) 292 if not request.user.has_perm('groups.admin_group', group_obj): 293 raise PermissionDenied 294 295 try: 296 update_obj = forms.models.GroupMembershipUpdate.objects.get(group=group_obj, cycle=cycle, ) 297 except forms.models.GroupMembershipUpdate.DoesNotExist: 298 update_obj = None 278 299 279 300 confirm_path = reverse('membership-confirm', ) … … 281 302 request.get_host(), confirm_path) 282 303 283 if request.method == 'POST': # If the form has been submitted...304 if request.method == 'POST': 284 305 form = Form_GroupMembershipUpdate(request.POST, request.FILES, instance=update_obj) # A form bound to the POST data 285 306 286 307 if form.is_valid(): # All validation rules pass 308 # Update the updater info 309 form.instance.group = group_obj 310 form.instance.cycle = cycle 311 form.instance.update_time = datetime.datetime.now() 312 form.instance.updater_name = request.user.username 287 313 request_obj = form.save() 288 group_obj = request_obj.group289 290 314 291 315 # Send email … … 332 356 333 357 else: 334 form = Form_GroupMembershipUpdate(in itial=initial, ) # An unbound form358 form = Form_GroupMembershipUpdate(instance=update_obj) 335 359 336 360 context = { 337 361 'form':form, 362 'group':group_obj, 338 363 'confirm_uri': confirm_uri, 339 364 'pagename':'groups', … … 457 482 458 483 def get_queryset(self): 484 cycle = forms.models.GroupConfirmationCycle.latest() 459 485 group_updates = forms.models.GroupMembershipUpdate.objects.all() 460 486 group_updates = group_updates.filter( 487 cycle=cycle, 488 group__personmembershipupdate__cycle=cycle, 461 489 group__personmembershipupdate__deleted__isnull=True, 462 490 group__personmembershipupdate__valid__gt=0, -
asadb/groups/models.py
r54babcd rbda4d86 105 105 def __str__(self, ): 106 106 return self.name 107 108 @staticmethod 109 def involved_groups(username): 110 current_officers = OfficeHolder.current_holders.filter(person=username) 111 users_groups = Group.objects.filter(officeholder__in=current_officers).distinct() 112 return users_groups 107 113 108 114 @classmethod -
asadb/template/forms/select.html
rc9d8369 rbda4d86 4 4 {% block content %} 5 5 6 <h2>Select Group</h2> 6 <h2>{{title}}</h2> 7 8 {% if msg %}<p>{{msg}}</p>{%endif%} 7 9 8 10 <form method="post" action=""> -
asadb/template/index.html
r826a126 rbda4d86 44 44 </ul></li> 45 45 <li>Membership updates<ul> 46 <li><a href='{%url membership-update %}'>Group update</a></li>46 <li><a href='{%url membership-update-cycle %}'>Group update</a></li> 47 47 <li><a href='{%url membership-confirm%}'>Individual confirmations</a></li> 48 48 <li><a href='{%url membership-submitted%}'>Groups with submitted updates</a></li> -
asadb/template/membership/update.html
rf48884a rbda4d86 57 57 {% csrf_token %} 58 58 <table class='pretty-table'> 59 <tr> 60 <th>Group</th> 61 <td>{{group}}</td> 62 </tr> 59 63 {{ form.as_table }} 60 64 <tr><th colspan='2'><input type='submit' value='Submit membership update' /></th></tr> -
asadb/urls.py
r2c86ed1 rbda4d86 46 46 url(r'^fysm/(?:(\d+)/)?(?:([\w-]+)/)?$', forms.views.fysm_by_years, name='fysm', ), 47 47 48 url(r'^membership/update/$', forms.views.group_membership_update, name='membership-update', ), 48 url( 49 regex=r'^membership/update/$', 50 view=forms.views.group_membership_update_select_group, 51 name='membership-update-cycle', 52 ), 53 url(r'^membership/update/(?P<cycle_slug>[\w-]+)/(?P<pk>\d+)/$', forms.views.group_membership_update, name='membership-update-group', ), 49 54 url(r'^membership/confirm/$', forms.views.person_membership_update, name='membership-confirm', ), 50 55 url(
Note: See TracChangeset
for help on using the changeset viewer.