source: asadb/groups/find_missing_transition.py @ 1aaa525

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

Script to poke groups about updating their entries

  • Property mode set to 100644
File size: 2.4 KB
Line 
1#!/usr/bin/python
2import csv
3import os
4import sys
5
6if __name__ == '__main__':
7    cur_file = os.path.abspath(__file__)
8    django_dir = os.path.abspath(os.path.join(os.path.dirname(cur_file), '..'))
9    sys.path.append(django_dir)
10    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
11
12from django.core import mail
13from django.template import Context, Template
14from django.template.loader import get_template
15
16import groups.models
17
18def get_roles():
19    roles = [
20        ['treasurer', 'No treasurer listed', ],
21        ['financial', 'No financial signatories listed. At minimum, this should generally be your president and treasurer.', ],
22        ['reservation', 'No reservation signatories listed. Members reserving space for the group should be reservation signatories.', ],
23    ]
24    for role in roles:
25        obj = groups.models.OfficerRole.objects.get(slug=role[0])
26        role[0] = obj
27    return roles
28
29def check_group(group, roles, ):
30    problems = []
31    if group.officer_email or group.description:
32        pass
33    else:
34        problems.append("No basic group information listed")
35    for role, msg in roles:
36        if len(group.officers(role=role)) == 0:
37            problems.append(msg)
38    return problems
39
40def officers_lists(fd, ):
41    reader = csv.DictReader(fd)
42    lists = {}
43    for d in reader:
44        pk = int(d['ASA_STUDENT_GROUP_KEY'])
45        lists[pk] = d['OFFICER_EMAIL']
46    return lists
47
48def check_groups(old_groups_data):
49    roles = get_roles()
50    officers = officers_lists(open(old_groups_data, 'r'))
51    tmpl = get_template('groups/letters/missing-transition.txt')
52    emails = []
53    for group in groups.models.Group.active_groups.all():
54        problems = check_group(group, roles, )
55        if problems:
56            to = [officers[group.pk]]
57            if group.officer_email:
58                to.append(group.officer_email)
59            ctx = Context({
60                'group': group,
61                'problems': problems,
62            })
63            body = tmpl.render(ctx)
64            email = mail.EmailMessage(
65                subject="[ASA] Missing information for %s" % (group.name, ),
66                body=body,
67                from_email='asa-exec@mit.edu',
68                to=to,
69                bcc=['asa-admin@mit.edu' , 'asa-db-outgoing@mit.edu'],
70            )
71            emails.append(email)
72
73    connection = mail.get_connection()
74    connection.send_messages(emails)
75
76if __name__ == '__main__':
77    check_groups(sys.argv[1])
Note: See TracBrowser for help on using the repository browser.