~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to ivle/makeuser.py

  • Committer: William Grant
  • Date: 2009-05-11 04:28:07 UTC
  • mto: (1165.3.65 submissions-admin)
  • mto: This revision was merged to the branch mainline in revision 1247.
  • Revision ID: grantw@unimelb.edu.au-20090511042807-xk9seshzis29sfs6
Exclude group members from the SVN submission grants, to avoid revoking write access.

Show diffs side-by-side

added added

removed removed

Lines of Context:
136
136
 
137
137
""" % {'time': time.asctime()})
138
138
 
 
139
    group_members_cache = {}
139
140
    for group in store.find(ProjectGroup):
140
141
        offering = group.project_set.offering
141
142
        reponame = "_".join([offering.subject.short_name,
144
145
                             group.name])
145
146
 
146
147
        f.write("[%s:/]\n" % reponame)
 
148
        if group.id not in group_members_cache:
 
149
            group_members_cache[group.id] = set()
147
150
        for user in group.members:
 
151
            group_members_cache[group.id].add(user.login)
148
152
            f.write("%s = rw\n" % user.login)
149
153
        f.write("\n")
150
154
 
154
158
    # fast. We can grab all of the paths needing authorisation directives with
155
159
    # a single query, and we cache the list of viewers for each offering.
156
160
    offering_viewers_cache = {}
157
 
    for (ssn, year, sem, name, psid, pspath, offeringid) in store.find(
 
161
    for (ssn, year, sem, name, psid, pspath, gid, offeringid) in store.find(
158
162
        (Subject.short_name, Semester.year, Semester.semester,
159
163
         ProjectGroup.name, ProjectSubmission.id, ProjectSubmission.path,
160
 
         Offering.id),
 
164
         ProjectGroup.id, Offering.id),
161
165
            Assessed.id == ProjectSubmission.assessed_id,
162
166
            ProjectGroup.id == Assessed.project_group_id,
163
167
            Project.id == Assessed.project_id,
191
195
""" % {'repo': reponame, 'id': psid, 'path': pspath})
192
196
 
193
197
        for viewer_login in offering_viewers_cache[offeringid]:
194
 
            # TODO: Skip existing group members.
195
 
            f.write("%s = r\n" % viewer_login)
 
198
            # Skip existing group members, or they can't write to it any more.
 
199
            if viewer_login not in group_members_cache[gid]:
 
200
                f.write("%s = r\n" % viewer_login)
196
201
 
197
202
    f.close()
198
203
    os.rename(temp_name, conf_name)