Ignore:
Timestamp:
Dec 23, 2011, 12:01:31 AM (14 years ago)
Author:
Alex Dehnert <adehnert@…>
Branches:
master, space-access, stable, stage
Children:
d7dcfee
Parents:
ac1d897
git-author:
Alex Dehnert <adehnert@…> (12/23/11 00:00:02)
git-committer:
Alex Dehnert <adehnert@…> (12/23/11 00:01:31)
Message:

Sync staff status with the asa-admin list as well

It's possible we actually want to have some whitelist of "people who should
always have staff status". Not clearly worthwhile enough for me to implement
something now, though.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • asadb/util/sync_moira_authz.py

    rac1d897 rc8cb9ba  
    2424        self.dj_groups = django.contrib.auth.models.Group.objects
    2525
    26     def sync_members(self, sys_name, dj_name, ):
     26    def sync_helper(self, sys_name, dj_members, adder, remover, ):
    2727        kept = []
    2828        added = []
     
    3131        removed = []
    3232        sys_members = self.get_members(sys_name)
    33         dj_group = self.dj_groups.get(name=dj_name)
    34         dj_members = dj_group.user_set.all()
    3533        dj_usernames = set([m.username for m in dj_members])
    3634        for username in sys_members:
     
    4240                    user, is_new = mit.get_or_create_mit_user(username, )
    4341                    if is_new: created.append(username)
    44                     user.groups.add(dj_group)
     42                    adder(user)
    4543                    added.append(username)
    4644                except ValueError:
     
    5149                assert username in kept
    5250            else:
    53                 user.groups.remove(dj_group)
     51                remover(user)
    5452                removed.append(username)
    5553        return {
     
    6260        }
    6361
     62    def sync_staff(self, sys_name, ):
     63        dj_members = django.contrib.auth.models.User.objects.filter(is_staff=True, )
     64        def adder(user, ):
     65            user.is_staff = True
     66            user.save()
     67        def remover(user, ):
     68            user.is_staff = False
     69            user.save()
     70        return self.sync_helper(sys_name, dj_members, adder, remover, )
     71
     72    def sync_members(self, sys_name, dj_name, ):
     73        dj_group = self.dj_groups.get(name=dj_name)
     74        dj_members = dj_group.user_set.all()
     75        adder = lambda user: user.groups.add(dj_group)
     76        remover = lambda user: user.groups.remove(dj_group)
     77        return self.sync_helper(sys_name, dj_members, adder, remover, )
     78
    6479    def sync_many(con, what, force_print=False, ):
    6580        changed = False
     
    6782        for sys_name, dj_group in what:
    6883            assert dj_group not in results
    69             results[dj_group] = con_afs.sync_members(sys_name, dj_group)
     84            if dj_group == "STAFF":
     85                results[dj_group] = con_afs.sync_staff(sys_name, )
     86            else:
     87                results[dj_group] = con_afs.sync_members(sys_name, dj_group)
    7088            if results[dj_group]['change']: changed = True
    7189        if changed or force_print:
     
    129147
    130148sync_pairs = [
     149    ('asa-admin', 'STAFF', ),
    131150    ('asa-admin', 'asa-ebm', ),
    132151    ('asa-db-mit-deskworker', 'mit-deskworker', ),
Note: See TracChangeset for help on using the changeset viewer.