Beispiel #1
0
 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
Beispiel #2
0
    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
Beispiel #3
0
    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")
Beispiel #4
0
    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")