#!/usr/bin/env python # -*- coding: utf-8 -*- # -*- Python -*- # ''' This script configures Django Admin permissions ''' # Set PYTHONPATH and load environment variables for standalone script ----------------- import os, sys basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")) sys.path = [ basedir ] + sys.path os.environ["DJANGO_SETTINGS_MODULE"] = "ietf.settings" virtualenv_activation = os.path.join(basedir, "env", "bin", "activate_this.py") if os.path.exists(virtualenv_activation): execfile(virtualenv_activation, dict(__file__=virtualenv_activation)) import django django.setup() # ------------------------------------------------------------------------------------- from django.contrib.auth.models import Group as AuthGroup from django.contrib.auth.models import Permission from ietf.group.models import Group def permission_names_to_objects(names): """ Given an iterable of permission names (e.g. 'app_label.add_model'), return an iterable of Permission objects for them. The permission must already exist, because a permission name is not enough information to create a new permission. """ result = [] for name in names: app_label, codename = name.split(".", 1) try: result.append(Permission.objects.get(content_type__app_label=app_label, codename=codename)) except Permission.DoesNotExist: print "NO SUCH PERMISSION: %s, %s" % (app_label, codename) raise return result def main(): secretariat = Group.objects.get(acronym='secretariat') users = [ r.person.user for r in secretariat.role_set.filter(name='secr') ] # Set Auth Group members auth_group, _ = AuthGroup.objects.get_or_create(name='secretariat') auth_group.user_set.set(users) # Set Auth Group Admin Permissions names = ['auth.add_user','auth.change_user','auth.delete_user', 'dbtemplate.change_dbtemplate', 'group.add_group','group.change_group','group.delete_group', 'group.add_role','group.change_role','group.delete_role', 'group.add_groupevent','group.change_groupevent','group.delete_groupevent', 'iesg.add_telechatagendaitem','iesg.change_telechatagendaitem','iesg.delete_telechatagendaitem', 'iesg.add_telechatdate','iesg.change_telechatdate','iesg.delete_telechatdate', 'liaisons.add_liaisonstatementgroupcontacts','liaisons.change_liaisonstatementgroupcontacts', 'liaisons.delete_liaisonstatementgroupcontacts', 'mailinglists.add_list','mailinglists.change_list','mailinglists.delete_list', 'mailtrigger.add_mailtrigger','mailtrigger.change_mailtrigger','mailtrigger.delete_mailtrigger', 'mailtrigger.add_recipient','mailtrigger.change_recipient','mailtrigger.delete_recipient', 'meeting.add_floorplan','meeting.change_floorplan','meeting.delete_floorplan', 'meeting.add_importantdate','meeting.change_importantdate','meeting.delete_importantdate', 'meeting.add_meeting','meeting.change_meeting','meeting.delete_meeting', 'meeting.add_room','meeting.change_room','meeting.delete_room', 'meeting.add_urlresource','meeting.change_urlresource','meeting.delete_urlresource', 'message.add_announcementfrom','message.change_announcementfrom','message.delete_announcementfrom', 'nomcom.add_nomcom','nomcom.change_nomcom','nomcom.delete_nomcom', 'person.add_person','person.change_person','person.delete_person', 'person.add_alias','person.change_alias','person.delete_alias', 'person.add_email','person.change_email','person.delete_email', 'submit.add_submission','submit.change_submission','submit.delete_submission', ] permissions = permission_names_to_objects(names) auth_group.permissions.set(permissions) if __name__ == '__main__': main()