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