Changeset 6ff04b1


Ignore:
Timestamp:
Mar 12, 2012, 6:55:19 AM (14 years ago)
Author:
Alex Dehnert <adehnert@…>
Branches:
master, space-access, stable, stage
Children:
0a0a96c
Parents:
a86a924
git-author:
Alex Dehnert <adehnert@…> (02/09/12 11:52:38)
git-committer:
Alex Dehnert <adehnert@…> (03/12/12 06:55:19)
Message:

Office access: allow viewing access

Location:
asadb
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • asadb/groups/urls.py

    raa2aa58 r6ff04b1  
    22
    33import groups.views
     4import space.views
    45
    56group_patterns = patterns('',
     
    89    url(r'^edit/officers$', groups.views.manage_officers, name='group-manage-officers', ),
    910    url(r'^history/$', groups.views.GroupHistoryView.as_view(), name='group-manage-history', ),
     11    url(r'^space/view/$', space.views.view_access, name='group-space-access', ),
    1012)
    1113
  • asadb/space/models.py

    ra86a924 r6ff04b1  
    2222reversion.register(Space)
    2323
     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
    2432class SpaceAssignment(models.Model):
    2533    END_NEVER       = datetime.datetime.max
     
    3341    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.')
    3442
     43    objects = models.Manager()
     44    current = CurrentAssignmentManager()
     45
    3546    def expire(self, ):
    3647        self.end_time = datetime.datetime.now()-self.EXPIRE_OFFSET
    3748        self.save()
     49
     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        )
    3869
    3970class SpaceAccessListEntry(models.Model):
     
    4879    card_number = models.CharField(max_length=20)
    4980
     81    objects = models.Manager()
     82    current = CurrentACLEntryManager()
     83
    5084    def expire(self, ):
    5185        self.end_time = datetime.datetime.now()-self.EXPIRE_OFFSET
    5286        self.save()
     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        )
  • asadb/space/views.py

    ra86a924 r6ff04b1  
    11# Create your views here.
     2from django.contrib.auth.decorators import user_passes_test, login_required, permission_required
     3from django.shortcuts import render_to_response, get_object_or_404, redirect
     4from django.template import RequestContext, Context, Template
     5from django.http import Http404, HttpResponseRedirect
     6from django.core.urlresolvers import reverse
     7from django.core.mail import EmailMessage, mail_admins
     8from django import forms
     9from django.forms import ValidationError
     10from django.db import connection
     11from django.db.models import Q
     12from django.utils.safestring import mark_safe
     13
     14import django_filters
     15
     16import groups.models
     17import space.models
     18
     19def view_access(request, pk, ):
     20    group = get_object_or_404(groups.models.Group, pk=pk)
     21    if not request.user.has_perm('groups.admin_group', group):
     22        raise PermissionDenied
     23    office_access = group.officers(role='office-access')
     24    locker_access = group.officers(role='locker-access')
     25    assignments = space.models.SpaceAssignment.current.filter(group=group)
     26    office_pairs = []
     27    locker_pairs = []
     28    for assignment in assignments:
     29        entries = space.models.SpaceAccessListEntry.current.filter(group=group, space=assignment.space)
     30        pair = (assignment, entries)
     31        if assignment.is_locker():
     32            locker_pairs.append(pair)
     33        else:
     34            office_pairs.append(pair)
     35    context = {
     36        'group': group,
     37        'office': office_access,
     38        'locker': locker_access,
     39        'office_pairs': office_pairs,
     40        'locker_pairs': locker_pairs,
     41        'pagename':'group',
     42    }
     43    return render_to_response('space/view-access.html', context, context_instance=RequestContext(request), )
Note: See TracChangeset for help on using the changeset viewer.