Changeset 1d85006
- Timestamp:
- Jul 31, 2011, 4:21:48 AM (14 years ago)
- Branches:
- master, space-access, stable, stage, test-hooks
- Children:
- ee679c6
- Parents:
- 3ffb210
- git-author:
- Alex Dehnert <adehnert@…> (07/31/11 04:08:48)
- git-committer:
- Alex Dehnert <adehnert@…> (07/31/11 04:21:48)
- Location:
- asadb/groups
- Files:
-
- 1 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
asadb/groups/admin.py
r54c467a r1d85006 19 19 search_fields = [ 'id', 'name', 'abbreviation', 'officer_email', 'athena_locker', ] 20 20 21 class OfficerRoleAdmin(VersionAdmin): 22 list_display = ( 23 'id', 24 'display_name', 25 'slug', 26 'max_count', 27 ) 28 list_display_links = ('id', 'display_name', 'slug', ) 29 prepopulated_fields = {"slug": ("display_name",)} 30 31 class OfficeHolderAdmin(VersionAdmin): 32 list_display = ( 33 'id', 34 'person', 35 'role', 36 'group', 37 'start_time', 'end_time', 38 ) 39 list_display_links = ( 40 'id', 41 'person', 42 'role', 43 'group', 44 'start_time', 'end_time', 45 ) 46 search_fields = ( 47 'id', 48 'person', 49 'role__display_name', 'role__slug', 50 'group__name', 'group__abbreviation', 51 'start_time', 'end_time', 52 ) 53 21 54 class ActivityCategoryAdmin(admin.ModelAdmin): 22 55 list_display = ( … … 28 61 admin.site.register(groups.models.Group, GroupAdmin) 29 62 admin.site.register(groups.models.ActivityCategory, ActivityCategoryAdmin) 63 admin.site.register(groups.models.OfficerRole, OfficerRoleAdmin) 64 admin.site.register(groups.models.OfficeHolder, OfficeHolderAdmin) -
asadb/groups/models.py
r2a6907a r1d85006 1 1 from django.db import models 2 3 import datetime 2 4 3 5 # Create your models here. … … 24 26 updater = models.CharField(max_length=30) # match Django username field 25 27 28 def officers(self, role=None, person=None, as_of="now",): 29 """Get the set of people holding some office. 30 31 If None is passed for role, person, or as_of, that field will not 32 be constrained. If as_of is "now" (default) the status will be 33 required to be current. If any of the three parameters are set 34 to another value, the corresponding filter will be applied. 35 """ 36 office_holders = OfficeHolder.objects.filter(group=self,) 37 if role: 38 if isinstance(role, str): 39 office_holders = office_holders.filter(role__slug=role) 40 else: 41 office_holders = office_holders.filter(role=role) 42 if person: 43 office_holders = office_holders.filter(person=person) 44 if as_of: 45 if as_of == "now": as_of = datetime.datetime.now() 46 office_holders = office_holders.filter(start_time__lte=as_of, end_time__gte=as_of) 47 return office_holders 48 26 49 def __str__(self, ): 27 50 return self.name … … 29 52 class Meta: 30 53 ordering = ('name', ) 54 55 56 class OfficerRole(models.Model): 57 UNLIMITED = 10000 58 59 display_name = models.CharField(max_length=50) 60 slug = models.SlugField() 61 description = models.TextField() 62 max_count = models.IntegerField(default=UNLIMITED, help_text='Maximum number of holders of this role. Use %d for no limit.' % UNLIMITED) 63 64 def __str__(self, ): 65 return self.display_name 66 67 @classmethod 68 def retrieve(cls, slug, ): 69 return cls.objects.get(slug=slug) 70 71 72 class OfficeHolder(models.Model): 73 person = models.CharField(max_length=30) 74 role = models.ForeignKey('OfficerRole') 75 group = models.ForeignKey('Group') 76 start_time = models.DateTimeField(default=datetime.datetime.now) 77 end_time = models.DateTimeField(default=datetime.datetime.max) 78 79 def __str__(self, ): 80 return "<OfficeHolder: person=%s, role=%s, group=%s, start_time=%s, end_time=%s>" % ( 81 self.person, self.role, self.group, self.start_time, self.end_time, ) 82 83 def __repr__(self, ): 84 return str(self) 85 31 86 32 87 class ActivityCategory(models.Model):
Note: See TracChangeset
for help on using the changeset viewer.