Ignore:
Timestamp:
Mar 28, 2012, 5:57:20 AM (14 years ago)
Author:
Alex Dehnert <adehnert@…>
Branches:
master, space-access, stable, stage
Children:
96ef09f
Parents:
6ae8c4a
git-author:
Alex Dehnert <adehnert@…> (03/28/12 05:57:20)
git-committer:
Alex Dehnert <adehnert@…> (03/28/12 05:57:20)
Message:

Optimize space/diffs.py a bit by batching a query

We don't care for running this on the server, but cutting the edittest cycle
time from 10s to 5s is worthwhile...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • asadb/space/diffs.py

    r6ae8c4a r57a2ad6  
    2222import util.emails
    2323
    24 role = {}
     24role = {
     25    'office': groups.models.OfficerRole.objects.get(slug='office-access')
     26}
     27
    2528people_name = {} # username -> full name
    2629people_id = {} # username -> MIT ID
     
    2831all_spaces = {} # Space.pk -> Space
    2932
     33def bulk_fill_people(times):
     34    max_time = max(times)
     35    min_time = min(times)
     36    active_holders = groups.models.OfficeHolder.objects.filter(
     37        start_time__lte=max_time,
     38        end_time__gte=min_time,
     39        role__in=role.values(),
     40    )
     41    usernames = active_holders.values_list('person', flat=True,)
     42    people = groups.models.AthenaMoiraAccount.objects.filter(username__in=usernames)
     43    for person in people:
     44        people_name[person.username] = person.format()
     45        people_id[person.username] = person.mit_id
     46
    3047def fill_people(holder):
    3148    if not holder.person in people_name:
     49        #print "Person %s not pre-cached" % (holder.person, )
    3250        try:
    3351            person = groups.models.AthenaMoiraAccount.objects.get(username=holder.person)
     
    136154    new_time = datetime.datetime.utcnow()
    137155    old_time = new_time - datetime.timedelta(days=1)
     156    bulk_fill_people([old_time, new_time])
    138157    group_data = {} # Group.pk -> GroupInfo
    139158    changed_groups = []
Note: See TracChangeset for help on using the changeset viewer.