source: asadb/space/models.py @ 6ff04b1

space-accessstablestage
Last change on this file since 6ff04b1 was 6ff04b1, checked in by Alex Dehnert <adehnert@…>, 14 years ago

Office access: allow viewing access

  • Property mode set to 100755
File size: 2.9 KB
RevLine 
[a86a924]1import datetime
2
3from django.db import models
4
5import reversion
6
7import groups.models
8
9# Create your models here.
10
11class Space(models.Model):
12    number = models.CharField(max_length=20, unique=True, )
13    asa_owned = models.BooleanField(default=True, )
14    notes = models.TextField(blank=True, )
15
16    def __unicode__(self, ):
17        if self.asa_owned:
18            asa_str = "ASA"
19        else:
20            asa_str = "Non-ASA"
21        return u"%s (%s)" % (self.number, asa_str)
22reversion.register(Space)
23
[6ff04b1]24
25class CurrentAssignmentManager(models.Manager):
26    def get_query_set(self, ):
27        return super(CurrentAssignmentManager, self).get_query_set().filter(
28            start__lte=datetime.date.today,
29            end__gte=datetime.date.today,
30        )
31
[a86a924]32class SpaceAssignment(models.Model):
33    END_NEVER       = datetime.datetime.max
34
35    group = models.ForeignKey(groups.models.Group)
36    space = models.ForeignKey(Space)
37    start = models.DateField(default=datetime.datetime.now)
38    end = models.DateField(default=END_NEVER)
39
40    notes = models.TextField(blank=True, )
41    locker_num = models.CharField(max_length=10, blank=True, help_text='Locker number. If set, will use the "locker-access" OfficerRole to maintain access. If unset/blank, uses "office-access" and SpaceAccessListEntry for access.')
42
[6ff04b1]43    objects = models.Manager()
44    current = CurrentAssignmentManager()
45
[a86a924]46    def expire(self, ):
47        self.end_time = datetime.datetime.now()-self.EXPIRE_OFFSET
48        self.save()
49
[6ff04b1]50    def is_locker(self, ):
51        return bool(self.locker_num)
52
53    def __unicode__(self, ):
54        return u"<SpaceAssignment group=%s space=%s locker=%s start=%s end=%s>" % (
55            self.group,
56            self.space,
57            self.locker_num,
58            self.start,
59            self.end,
60        )
61
62
63class CurrentACLEntryManager(models.Manager):
64    def get_query_set(self, ):
65        return super(CurrentACLEntryManager, self).get_query_set().filter(
66            start__lte=datetime.datetime.now,
67            end__gte=datetime.datetime.now,
68        )
69
[a86a924]70class SpaceAccessListEntry(models.Model):
71    END_NEVER       = datetime.datetime.max
72
73    group = models.ForeignKey(groups.models.Group)
74    space = models.ForeignKey(Space)
75    start = models.DateTimeField(default=datetime.datetime.now)
76    end = models.DateTimeField(default=END_NEVER)
77
78    name = models.CharField(max_length=50)
79    card_number = models.CharField(max_length=20)
80
[6ff04b1]81    objects = models.Manager()
82    current = CurrentACLEntryManager()
83
[a86a924]84    def expire(self, ):
85        self.end_time = datetime.datetime.now()-self.EXPIRE_OFFSET
86        self.save()
[6ff04b1]87
88    def format_name(self, ):
89        return u"%s (%s)" % (self.name, self.card_number, )
90
91    def __unicode__(self, ):
92        return u"<SpaceAccessListEntry group=%s space=%s name=%s start=%s end=%s>" % (
93            self.group,
94            self.space,
95            self.name,
96            self.start,
97            self.end,
98        )
Note: See TracBrowser for help on using the repository browser.