def get_page_data(self, request): p_l=Menu.objects \ .select_related().all() \ .exclude(page__visibility="public") \ .values_list( "page__pk", "page__name", "page__url", "column") \ .order_by("column", "row") acl_d=vAcl().get_all_rights_by_user({"obj": True}) users=User.objects.all() \ .order_by("username") \ .values_list("db", "username") \ if request.sarvuser.pk \ in PROJECT_ADMINS\ else User.objects.filter( db=request.sarvuser.db) \ .order_by("username") \ .values_list("db", "username") out={} for u in users: po_l=[] g = AclGroup() g.keyword = u[0] groups = [g] c_n=p_l[0][3] n=0 cn_d={} for p in p_l: if not p[2] \ or not c_n == p[3]: #column header cn_d.update({n:p[1]}) c_n=p[3] continue elif p[2] is not None \ and len(p[2]) > 0: o_d={} for group in groups: gkw=group.keyword try: x = acl_d[u[1]][gkw][p[0]] except KeyError: x = None o_d.update({gkw:x}) po_l.append({p[1]:[p[0],o_d]}) n+=1 out.update({u[1]: po_l}) return out,[i[1] for i in users], cn_d
def get_page_data(self, request): p_l=Menu.objects \ .select_related().all() \ .exclude(page__visibility="public") \ .values_list( "page__pk", "page__name", "page__url", "column") \ .order_by("column", "row") acl_d = vAcl().get_all_rights_by_user({"obj": True}) users=User.objects.all() \ .order_by("username") \ .values_list("db", "username") \ if request.sarvuser.pk \ in PROJECT_ADMINS\ else User.objects.filter( db=request.sarvuser.db) \ .order_by("username") \ .values_list("db", "username") out = {} for u in users: po_l = [] g = AclGroup() g.keyword = u[0] groups = [g] c_n = p_l[0][3] n = 0 cn_d = {} for p in p_l: if not p[2] \ or not c_n == p[3]: #column header cn_d.update({n: p[1]}) c_n = p[3] continue elif p[2] is not None \ and len(p[2]) > 0: o_d = {} for group in groups: gkw = group.keyword try: x = acl_d[u[1]][gkw][p[0]] except KeyError: x = None o_d.update({gkw: x}) po_l.append({p[1]: [p[0], o_d]}) n += 1 out.update({u[1]: po_l}) return out, [i[1] for i in users], cn_d
def handle(self, *args, **options): if not hasattr(settings, "LANGUAGE_CODE"): print("No LANGUAGE_CODE specified in settings.py. Aborting") return # create user with admin rights database = Database.objects.filter(acronym=options["database"][:3]) if len(database) < 1: database = Database(name=options["database"], acronym=options["database"][:3]) database.save() else: database = database[0] username = options["username"] personal_code = options["personal_code"] new_user = User(username=username, isikukood=int(personal_code), user_added=username, db=database.acronym) try: new_user.save() User.objects.filter(pk=new_user.pk).update(database_id=database.pk) user = User.objects.get(pk=new_user.pk) except Exception as e: print(e) print("Aborting") return print("Admin user created") # Fill ACL tables # sarv_acl_destination (AclDestination): remains empty # sarv_acl_group: [{keyword: <db.acronym> name: <db.name>}] aclgroup = AclGroup(keyword=database.acronym, name=database.name) aclgroup.save() print("table sarv_acl_group filled") # sarv_acl_permission_type: [{type_name:"read"}, {type_name:"create"}, {type_name:"update"}, {type_name:"delete"}] AclPermissionType.objects.bulk_create( [ AclPermissionType(type_name="read"), AclPermissionType(type_name="create"), AclPermissionType(type_name="update"), AclPermissionType(type_name="delete"), ] ) print("table sarv_acl_permission_type filled") # sarv_acl_rights_group AclRightsGroup: [{id:1,name:"guest"},{"viewer"},{"user"},{"editor"},{id:5,name:"admin"}] AclRightsGroup.objects.bulk_create( [ AclRightsGroup(name="guest"), AclRightsGroup(name="viewer"), AclRightsGroup(name="user"), AclRightsGroup(name="editor"), AclRightsGroup(name="admin"), ] ) print("table sarv_acl_permission_group filled") # sarv_acl_rights_group_permission_type AclRightsGroupPermissionType: NULL # sarv_acl_user_group AclUserGroup: [{id:1,id_user:<admin_user_id>,id_group:<sarv_acl_group's see ainuke kirje, mis database'ga tuli>}] aclusergroup = AclUserGroup(user=user, group=AclGroup.objects.get(pk=aclgroup.pk)) aclusergroup.save() print("table sarv_acl_user_group filled") admin_group = AclUserGroup.objects.get(pk=aclusergroup.pk) # create initial admin page layout label = SarvPage(name="Administration", url="", language=settings.LANGUAGE_CODE, visibility="acl") label.save() admin_pages = SarvPage( name="Pages administration", url="admin/menu", language=settings.LANGUAGE_CODE, visibility="acl" ) admin_pages.save() print("Page admin page link created") admin_users = SarvPage( name="User right administration", url="admin/acl", language=settings.LANGUAGE_CODE, visibility="acl" ) admin_users.save() print("Use right admin page link created") menu_label = SarvMenu(page=label, column=1, row=0, usergroup=admin_group) menu_label.save() menu_pages = SarvMenu(page=admin_pages, column=1, row=1, usergroup=admin_group) menu_pages.save() print("Page button created") menu_users = SarvMenu(page=admin_users, column=1, row=2, usergroup=admin_group) menu_users.save() print("Use right button created") # give rights to user to see these pages content_type = ContentType.objects.get(app_label="nextify", model="sarvpage") permission = AclPermissionType.objects.get(type_name="read") rights_group = AclRightsGroup.objects.get(name="admin") acl_label = Acl( id_tested=new_user.pk, type="group", content_type=content_type, object_id=label.pk, permission=permission, rights_group=rights_group, ) acl_label.save() acl_pages = Acl( id_tested=new_user.pk, type="group", content_type=content_type, object_id=admin_pages.pk, permission=permission, rights_group=rights_group, ) acl_pages.save() acl_menu = Acl( id_tested=new_user.pk, type="group", content_type=content_type, object_id=admin_users.pk, permission=permission, rights_group=rights_group, ) acl_menu.save() print("acl rights created") print("Finished succesfully")
def handle(self, *args, **options): if not hasattr(settings, "LANGUAGE_CODE"): print("No LANGUAGE_CODE specified in settings.py. Aborting") return # create user with admin rights database = Database.objects.filter(acronym=options['database'][:3]) if len(database) < 1: database = Database(name=options['database'], acronym=options['database'][:3]) database.save() else: database = database[0] username = options['username'] personal_code = options['personal_code'] new_user = User(username=username, isikukood=int(personal_code), user_added=username, db=database.acronym) try: new_user.save() User.objects.filter(pk=new_user.pk).update(database_id=database.pk) user = User.objects.get(pk=new_user.pk) except Exception as e: print(e) print("Aborting") return print("Admin user created") # Fill ACL tables # sarv_acl_destination (AclDestination): remains empty # sarv_acl_group: [{keyword: <db.acronym> name: <db.name>}] aclgroup = AclGroup(keyword=database.acronym, name=database.name) aclgroup.save() print("table sarv_acl_group filled") #sarv_acl_permission_type: [{type_name:"read"}, {type_name:"create"}, {type_name:"update"}, {type_name:"delete"}] AclPermissionType.objects.bulk_create([ AclPermissionType(type_name="read"), AclPermissionType(type_name="create"), AclPermissionType(type_name="update"), AclPermissionType(type_name="delete") ]) print("table sarv_acl_permission_type filled") #sarv_acl_rights_group AclRightsGroup: [{id:1,name:"guest"},{"viewer"},{"user"},{"editor"},{id:5,name:"admin"}] AclRightsGroup.objects.bulk_create([ AclRightsGroup(name="guest"), AclRightsGroup(name="viewer"), AclRightsGroup(name="user"), AclRightsGroup(name="editor"), AclRightsGroup(name="admin"), ]) print("table sarv_acl_permission_group filled") #sarv_acl_rights_group_permission_type AclRightsGroupPermissionType: NULL #sarv_acl_user_group AclUserGroup: [{id:1,id_user:<admin_user_id>,id_group:<sarv_acl_group's see ainuke kirje, mis database'ga tuli>}] aclusergroup = AclUserGroup(user=user, group=AclGroup.objects.get(pk=aclgroup.pk)) aclusergroup.save() print("table sarv_acl_user_group filled") admin_group = AclUserGroup.objects.get(pk=aclusergroup.pk) # create initial admin page layout label = SarvPage(name="Administration", url="", language=settings.LANGUAGE_CODE, visibility="acl") label.save() admin_pages = SarvPage(name="Pages administration", url="admin/menu", language=settings.LANGUAGE_CODE, visibility="acl") admin_pages.save() print("Page admin page link created") admin_users = SarvPage(name="User right administration", url="admin/acl", language=settings.LANGUAGE_CODE, visibility="acl") admin_users.save() print("Use right admin page link created") menu_label = SarvMenu(page=label, column=1, row=0, usergroup=admin_group) menu_label.save() menu_pages = SarvMenu(page=admin_pages, column=1, row=1, usergroup=admin_group) menu_pages.save() print("Page button created") menu_users = SarvMenu(page=admin_users, column=1, row=2, usergroup=admin_group) menu_users.save() print("Use right button created") # give rights to user to see these pages content_type = ContentType.objects.get(app_label="nextify", model="sarvpage") permission = AclPermissionType.objects.get(type_name="read") rights_group = AclRightsGroup.objects.get(name="admin") acl_label = Acl(id_tested=new_user.pk, type="group", content_type=content_type, object_id=label.pk, permission=permission, rights_group=rights_group) acl_label.save() acl_pages = Acl(id_tested=new_user.pk, type="group", content_type=content_type, object_id=admin_pages.pk, permission=permission, rights_group=rights_group) acl_pages.save() acl_menu = Acl(id_tested=new_user.pk, type="group", content_type=content_type, object_id=admin_users.pk, permission=permission, rights_group=rights_group) acl_menu.save() print("acl rights created") print("Finished succesfully")