Commit 18e91ded authored by Mickaël Desfrênes's avatar Mickaël Desfrênes
Browse files

add rpc option for serialization of new permissions

parent c8f94c53
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
__version__ = "0.1.79"
__version__ = "0.1.80"
+8 −2
Original line number Diff line number Diff line
@@ -2344,7 +2344,9 @@ def list_permissions(user: User) -> List[Dict]:


@_rpc_groups(["Access"])
def projects_user_permissions(user: User) -> List[Dict]:
def projects_user_permissions(
    user: User, advanced_permissions: bool = False
) -> List[Dict]:
    """
    Get all rights for the current user.

@@ -2364,7 +2366,11 @@ def projects_user_permissions(user: User) -> List[Dict]:
    serializer_cache = SerializerCache()
    for project_access in ProjectAccess.objects.filter(user=user):
        access_list.append(
            serializers.project_access(project_access, cache=serializer_cache)
            serializers.project_access(
                project_access,
                advanced_permissions=advanced_permissions,
                cache=serializer_cache,
            )
        )
    return access_list

+50 −7
Original line number Diff line number Diff line
@@ -272,12 +272,51 @@ def permission(
    }


def role(role_instance: models.Role, cache: SerializerCache = None) -> dict:
def role(
    role_instance: models.Role,
    advanced_permissions: bool = False,
    cache: SerializerCache = None,
) -> dict:
    permissions = []
    if advanced_permissions:
        for permission_instance in models.ObjectPermission.objects.filter(
            role=role_instance
        ):
            permissions.append(permission(permission_instance, cache=cache))
    else:
        for permission_instance in models.ObjectPermission.objects.filter(
            role=role_instance
        ):
            # keeping old permissions serialization for compatibility reasons
            if permission_instance.object_pk is None:
                if permission_instance.object_create:
                    permissions.append(
                        {
                            "id": permission_instance.pk,
                            "label": f"{permission_instance.object_class}.create",
                        }
                    )
                if permission_instance.object_read:
                    permissions.append(
                        {
                            "id": permission_instance.pk,
                            "label": f"{permission_instance.object_class}.read",
                        }
                    )
                if permission_instance.object_update:
                    permissions.append(
                        {
                            "id": permission_instance.pk,
                            "label": f"{permission_instance.object_class}.update",
                        }
                    )
                if permission_instance.object_delete:
                    permissions.append(
                        {
                            "id": permission_instance.pk,
                            "label": f"{permission_instance.object_class}.delete",
                        }
                    )
    return {
        "object_type": "role",
        "id": role_instance.id,
@@ -287,7 +326,9 @@ def role(role_instance: models.Role, cache: SerializerCache = None) -> dict:


def project_access(
    project_access_instance: models.ProjectAccess, cache: SerializerCache = None
    project_access_instance: models.ProjectAccess,
    advanced_permissions: bool = False,
    cache: SerializerCache = None,
) -> dict:
    cache = get_cache(cache)
    role_instance = cache.fetch_obj("role", project_access_instance.role_id)
@@ -296,7 +337,9 @@ def project_access(
    return {
        "object_type": "project_access",
        "project": project(project_instance, cache=cache),
        "role": role(role_instance, cache=cache),
        "role": role(
            role_instance, advanced_permissions=advanced_permissions, cache=cache
        ),
        "user": user_instance.username,
    }

+1 −1
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@
    "preview": "vite preview"
  },
  "dependencies": {
    "@pdn-certic/vue3-jama": "0.7.6",
    "@pdn-certic/vue3-jama": "0.7.9",
    "vue": "^3.5.25"
  },
  "devDependencies": {