refactor: extract function
This commit is contained in:
@@ -7,6 +7,7 @@ import os
|
||||
import shutil
|
||||
import zipfile
|
||||
from asyncio.tasks import create_task
|
||||
from collections.abc import Mapping
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
@@ -83,6 +84,14 @@ class ExtensionPermission(BaseModel):
|
||||
description: str | None = None
|
||||
policy: dict[str, Any] | None = None
|
||||
|
||||
@staticmethod
|
||||
def list_from_config(config_json: Mapping[str, Any]) -> list[ExtensionPermission]:
|
||||
return [
|
||||
ExtensionPermission.parse_obj(permission)
|
||||
for permission in config_json.get("permissions") or []
|
||||
if isinstance(permission, dict) and permission.get("id")
|
||||
]
|
||||
|
||||
|
||||
class ExtensionConfig(BaseModel):
|
||||
name: str
|
||||
@@ -642,11 +651,7 @@ class InstallableExtension(BaseModel):
|
||||
version=version,
|
||||
short_description=config_json.get("short_description"),
|
||||
icon=config_json.get("tile"),
|
||||
permissions=[
|
||||
ExtensionPermission.parse_obj(permission)
|
||||
for permission in config_json.get("permissions") or []
|
||||
if isinstance(permission, dict) and permission.get("id")
|
||||
],
|
||||
permissions=ExtensionPermission.list_from_config(config_json),
|
||||
meta=ExtensionMeta(
|
||||
installed_release=ExtensionRelease(
|
||||
name=ext_id,
|
||||
|
||||
@@ -121,11 +121,7 @@ def _validate_extension_permissions(
|
||||
|
||||
requested_permissions = validate_extension_permissions(
|
||||
ext_info.id,
|
||||
[
|
||||
ExtensionPermission.parse_obj(permission)
|
||||
for permission in extension_config.get("permissions") or []
|
||||
if isinstance(permission, dict) and permission.get("id")
|
||||
],
|
||||
ExtensionPermission.list_from_config(extension_config),
|
||||
)
|
||||
if not requested_permissions:
|
||||
return []
|
||||
|
||||
Reference in New Issue
Block a user