Changeset b8172c8
- Timestamp:
- Mar 28, 2013, 6:16:41 AM (13 years ago)
- Branches:
- master, space-access, stable, stage
- Children:
- 870992c
- Parents:
- 5260840 (diff), c3a5618 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - git-author:
- Alex Dehnert <adehnert@…> (03/28/13 06:16:41)
- git-committer:
- Alex Dehnert <adehnert@…> (03/28/13 06:16:41)
- Files:
-
- 4 added
- 10 edited
-
.gitignore (modified) (1 diff)
-
asadb/forms/admin.py (modified) (2 diffs)
-
asadb/forms/migrations/0014_midway.py (added)
-
asadb/forms/migrations/0015_midway_perms.py (added)
-
asadb/forms/models.py (modified) (2 diffs)
-
asadb/forms/views.py (modified) (4 diffs)
-
asadb/groups/models.py (modified) (2 diffs)
-
asadb/groups/views.py (modified) (2 diffs)
-
asadb/template/index.html (modified) (1 diff)
-
asadb/template/midway/map.html (added)
-
asadb/template/midway/upload.html (added)
-
asadb/urls.py (modified) (1 diff)
-
asadb/util/diff_static_data.sh (modified) (1 diff)
-
asadb/template/groups/create/startup_review.html (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
.gitignore
r7ef7143 r7d7801f 7 7 asadb/media/fysm/slides/ 8 8 asadb/media/page-previews/fysm/ 9 asadb/media/midway/maps/ 9 10 asadb/util/saved-data/ 10 11 asadb/util/static-data/ -
asadb/forms/admin.py
rbda4d86 r26826c9 1 from django.contrib import admin 2 1 3 import forms.models 2 from django.contrib import admin3 4 4 5 class FYSMAdmin(admin.ModelAdmin): … … 66 67 search_fields = ('username', 'groups__officer_email', 'groups__name', 'groups__abbreviation', ) 67 68 admin.site.register(forms.models.PersonMembershipUpdate, Admin_PersonMembershipUpdate) 69 70 class Admin_Midway(admin.ModelAdmin): 71 list_display = ( 72 'pk', 73 'name', 74 'slug', 75 'date', 76 ) 77 list_display_links = list_display 78 search_fields = ('name', ) 79 prepopulated_fields = {"slug": ("name",)} 80 admin.site.register(forms.models.Midway, Admin_Midway) 81 82 class Admin_MidwayAssignment(admin.ModelAdmin): 83 list_display = ( 84 'pk', 85 'midway', 86 'location', 87 'group', 88 ) 89 list_display_links = list_display 90 list_filter = ('midway', ) 91 search_fields = ('location', 'group__name', ) 92 admin.site.register(forms.models.MidwayAssignment, Admin_MidwayAssignment) -
asadb/forms/models.py
rafc5348 r26826c9 1 import datetime 2 import os, errno 3 1 4 from django.conf import settings 2 5 from django.db import models 3 4 import datetime5 import os, errno6 6 7 7 import groups.models … … 205 205 def __unicode__(self, ): 206 206 return "PersonMembershipUpdate for %s" % (self.username, ) 207 208 209 210 ########## 211 # MIDWAY # 212 ########## 213 214 215 class Midway(models.Model): 216 name = models.CharField(max_length=50) 217 slug = models.SlugField() 218 date = models.DateTimeField() 219 table_map = models.ImageField(upload_to='midway/maps') 220 221 def __str__(self, ): 222 return "%s" % (self.name, ) 223 224 class MidwayAssignment(models.Model): 225 midway = models.ForeignKey(Midway) 226 location = models.CharField(max_length=20) 227 group = models.ForeignKey(groups.models.Group) 228 229 def __str__(self, ): 230 return "<MidwayAssignment: %s at %s at %s>" % (self.group, self.location, self.midway, ) -
asadb/forms/views.py
rafc5348 rc3a5618 1 import forms.models2 import groups.models3 import groups.views4 import util.emails1 import collections 2 import csv 3 import datetime 4 import StringIO 5 5 6 6 from django.conf import settings … … 15 15 from django.core.urlresolvers import reverse 16 16 from django.core.mail import EmailMessage, mail_admins 17 from django.forms import FileField 17 18 from django.forms import Form 18 19 from django.forms import ModelForm … … 22 23 from django.db.models import Q, Count 23 24 24 import csv 25 import datetime 26 import StringIO 25 import django_filters 26 27 import forms.models 28 import groups.models 29 import groups.views 30 import util.emails 27 31 28 32 ################# … … 554 558 555 559 return HttpResponse(buf.getvalue(), mimetype='text/csv', ) 560 561 562 563 ########## 564 # Midway # 565 ########## 566 567 def midway_map_latest(request, ): 568 midways = forms.models.Midway.objects.order_by('-date')[:1] 569 if len(midways) == 0: 570 raise Http404("No midways found.") 571 else: 572 url = reverse('midway-map', args=(midways[0].slug, )) 573 return HttpResponseRedirect(url) 574 575 576 class MidwayAssignmentFilter(django_filters.FilterSet): 577 name = django_filters.CharFilter(name='group__name', lookup_type='icontains', label="Name contains") 578 abbreviation = django_filters.CharFilter(name='group__abbreviation', lookup_type='iexact', label="Abbreviation is") 579 activity_category = django_filters.ModelChoiceFilter( 580 label='Activity category', 581 name='group__activity_category', 582 queryset=groups.models.ActivityCategory.objects, 583 ) 584 585 class Meta: 586 model = forms.models.MidwayAssignment 587 fields = [ 588 'name', 589 'abbreviation', 590 'activity_category', 591 ] 592 order_by = ( 593 ('group__name', 'Name', ), 594 ('group__abbreviation', 'Abbreviation', ), 595 ('group__activity_category__name', 'Activity category', ), 596 ('location', 'Location', ), 597 ) 598 599 600 class MidwayMapView(DetailView): 601 context_object_name = "midway" 602 model = forms.models.Midway 603 template_name = 'midway/map.html' 604 605 def get_context_data(self, **kwargs): 606 # Call the base implementation first to get a context 607 context = super(MidwayMapView, self).get_context_data(**kwargs) 608 609 filterset = MidwayAssignmentFilter(self.request.GET) 610 context['assignments'] = filterset.qs 611 context['filter'] = filterset 612 context['pagename'] = 'midway' 613 614 return context 615 616 617 class MidwayAssignmentsUploadForm(Form): 618 assignments = FileField() 619 620 @permission_required('forms.add_midwayassignment') 621 def midway_assignment_upload(request, slug, ): 622 midway = get_object_or_404(forms.models.Midway, slug=slug, ) 623 624 uploaded = False 625 found = [] 626 issues = collections.defaultdict(list) 627 628 if request.method == 'POST': # If the form has been submitted... 629 form = MidwayAssignmentsUploadForm(request.POST, request.FILES, ) # A form bound to the POST data 630 631 if form.is_valid(): # All validation rules pass 632 uploaded = True 633 reader = csv.DictReader(request.FILES['assignments']) 634 for row in reader: 635 group_name = row['Group'] 636 group_officers = row['officers'] 637 table = row['Table'] 638 issue = False 639 try: 640 group = groups.models.Group.objects.get(name=group_name) 641 assignment = forms.models.MidwayAssignment( 642 midway=midway, 643 location=table, 644 group=group, 645 ) 646 assignment.save() 647 found.append(assignment) 648 status = group.group_status.slug 649 if status != 'active': 650 issue = 'status=%s (added anyway)' % (status, ) 651 except groups.models.Group.DoesNotExist: 652 issue = 'unknown group (ignored)' 653 except groups.models.Group.MultipleObjectsReturned: 654 issue = 'multiple groups found (ignored)' 655 if issue: 656 issues[issue].append((group_name, group_officers, table)) 657 for issue in issues: 658 issues[issue] = sorted(issues[issue], key=lambda x: x[0]) 659 660 else: 661 form = MidwayAssignmentsUploadForm() # An unbound form 662 663 context = { 664 'midway':midway, 665 'form':form, 666 'uploaded': uploaded, 667 'found': found, 668 'issues': dict(issues), 669 'pagename':'midway', 670 } 671 return render_to_response('midway/upload.html', context, context_instance=RequestContext(request), ) -
asadb/groups/models.py
r9b22b0f r26826c9 1 from django.conf import settings2 from django.db import models3 from django.core.validators import RegexValidator4 from django.contrib.auth.models import User5 from django.template.defaultfilters import slugify6 import reversion7 8 1 import datetime 9 2 import filecmp … … 16 9 import urllib 17 10 import urllib2 11 12 from django.conf import settings 13 from django.db import models 14 from django.core.validators import RegexValidator 15 from django.contrib.auth.models import User 16 from django.template.defaultfilters import slugify 17 18 import reversion 18 19 19 20 import mit -
asadb/groups/views.py
r5260840 rb8172c8 4 4 import csv 5 5 import datetime 6 7 import groups.models8 6 9 7 from django.contrib.auth.decorators import user_passes_test, login_required, permission_required … … 30 28 import django_filters 31 29 30 import groups.models 32 31 from util.db_form_utils import StaticWidget 33 32 import util.db_filters -
asadb/template/index.html
rde2f0ac r1cfab5a 44 44 <li><a href='{%url fysm-select%}'>Submit an entry</a></li> 45 45 </ul></li> 46 <li>Midway assignments: <a href='{% url midway-map-latest %}'>map</a></li> 46 47 <li>Membership updates<ul> 47 48 <li><a href='{%url membership-update-cycle %}'>Group update</a></li> -
asadb/urls.py
rafc5348 r1cfab5a 73 73 url(r'^membership/admin/issues.csv$', forms.views.group_confirmation_issues, name='membership-issues', ), 74 74 75 # Midway 76 url(r'^midway/latest/$', forms.views.midway_map_latest, name='midway-map-latest', ), 77 url(r'^midway/(?P<slug>[\w-]+)/$', forms.views.MidwayMapView.as_view(), name='midway-map', ), 78 url(r'^midway/(?P<slug>[\w-]+)/assign/$', forms.views.midway_assignment_upload, name='midway-assign', ), 79 75 80 # Group list 76 81 (r'^groups/', include(groups.urls.urls(), ), ), -
asadb/util/diff_static_data.sh
rc060d8c raab0dc8 5 5 date 6 6 7 cd static-data7 cd "$(dirname "$0")/static-data" 8 8 9 9 ../dump_group_perms.py > group-perms.py -
asadb/template/groups/create/startup_review.html
rac93a0c r172255b 14 14 <tr><th>Description</th><td>{{group.description}}</td></tr> 15 15 16 <tr><th colspan='2'> Type</th></tr>16 <tr><th colspan='2'>Officers</th></tr> 17 17 <tr><th>President</th><td>{{startup.president_name}} ({{startup.president_kerberos}})</td></tr> 18 18 <tr><th>Treasurer</th><td>{{startup.treasurer_name}} ({{startup.treasurer_kerberos}})</td></tr>
Note: See TracChangeset
for help on using the changeset viewer.