minor
Some checks failed
CI / test (pull_request) Failing after 28s
API CI / api-tests (pull_request) Failing after 44s

This commit is contained in:
Tim Lorsbach
2026-08-28 13:14:43 +02:00
parent f885745127
commit b54c8eaab6
3 changed files with 41 additions and 9 deletions

View File

@ -11,6 +11,7 @@ from .models import (
CompoundStructure, CompoundStructure,
Edge, Edge,
EnviFormer, EnviFormer,
EnzymeLink,
ExternalDatabase, ExternalDatabase,
ExternalIdentifier, ExternalIdentifier,
Group, Group,
@ -212,6 +213,10 @@ class CompoundStructureAdmin(EPAdmin):
pass pass
class EnzymeLinkAdmin(EPAdmin):
pass
class SimpleAmbitRuleAdmin(EPAdmin): class SimpleAmbitRuleAdmin(EPAdmin):
pass pass
@ -266,6 +271,7 @@ admin.site.register(License, LicenseAdmin)
admin.site.register(ClassifierPluginModel, ClassifierPluginModelAdmin) admin.site.register(ClassifierPluginModel, ClassifierPluginModelAdmin)
admin.site.register(Compound, CompoundAdmin) admin.site.register(Compound, CompoundAdmin)
admin.site.register(CompoundStructure, CompoundStructureAdmin) admin.site.register(CompoundStructure, CompoundStructureAdmin)
admin.site.register(EnzymeLink, EnzymeLinkAdmin)
admin.site.register(SimpleAmbitRule, SimpleAmbitRuleAdmin) admin.site.register(SimpleAmbitRule, SimpleAmbitRuleAdmin)
admin.site.register(ParallelRule, ParallelRuleAdmin) admin.site.register(ParallelRule, ParallelRuleAdmin)
admin.site.register(Reaction, ReactionAdmin) admin.site.register(Reaction, ReactionAdmin)

View File

@ -665,11 +665,11 @@ class PackageManager(object):
# EDIT START # EDIT START
if data.get("classification"): if data.get("classification"):
if data["classification"] == "INTERNAL": if data["classification"] == "INTERNAL":
pack.classification = Package.Classification.RESTRICTED pack.classification_level = Package.Classification.RESTRICTED
elif data["classification"] == "RESTRICTED": elif data["classification"] == "RESTRICTED":
pack.classification = Package.Classification.RESTRICTED pack.classification_level = Package.Classification.RESTRICTED
elif data["classification"] == "SECRET": elif data["classification"] == "SECRET":
pack.classification = Package.Classification.SECRET pack.classification_level = Package.Classification.SECRET
if not "datapool" in data: if not "datapool" in data:
raise ValueError("Missing datapool in package") raise ValueError("Missing datapool in package")

View File

@ -21,6 +21,8 @@ from epdb.models import (
Compound, Compound,
CompoundStructure, CompoundStructure,
Edge, Edge,
EnzymeLink,
Group,
License, License,
Node, Node,
ParallelRule, ParallelRule,
@ -150,6 +152,8 @@ class ReactionExportSchema(RefReactionExportSchema):
# Rules # # Rules #
######### #########
class EnzymeExportSchema(RefEnzymeExportSchema): class EnzymeExportSchema(RefEnzymeExportSchema):
name: str
description: str
ec_number: str ec_number: str
classification_level: int classification_level: int
linking_method: str linking_method: str
@ -162,11 +166,11 @@ class EnzymeRuleExportSchema(RefRuleExportSchema):
@staticmethod @staticmethod
def resolve_enzymes(obj): def resolve_enzymes(obj):
if isinstance(obj, dict): if isinstance(obj, EnzymeRuleExportSchema):
res = [] return obj.enzymes
for e in obj.get("enzymes", []): elif isinstance(obj, dict):
res.append(EnzymeExportSchema.model_validate(e)) return obj.get("enzymes", [])
return res else:
return obj.enzymelink_set.all() return obj.enzymelink_set.all()
@ -679,6 +683,27 @@ class PackageImporter:
for scen in elem.scenarios: for scen in elem.scenarios:
elem_obj.scenarios.add(self._cache[scen.uuid]) elem_obj.scenarios.add(self._cache[scen.uuid])
def _import_enzyme(self, rule: Rule, enzyme: EnzymeExportSchema):
e = EnzymeLink()
e.uuid = str(uuid.uuid4()) if not self.preserve_uuids else enzyme.uuid
e.rule = rule
e.name = enzyme.name
e.description = enzyme.description
e.ec_number = enzyme.ec_number
e.classification_level = enzyme.classification_level
e.linking_method = enzyme.linking_method
e.save()
for reaction in enzyme.reaction_evidence:
e.reaction_evidence.add(self._cache[reaction.uuid])
for edge in enzyme.edge_evidence:
e.edge_evidence.add(self._cache[edge.uuid])
self._cache[enzyme.uuid] = e
def _import_and_link_enzymes(self, data: PackageExportSchema):
for rule in data.composite_rules:
for enzyme in rule.enzymes:
self._import_enzyme(self._cache[rule.uuid], enzyme)
def _import_package_from_json( def _import_package_from_json(
self, self,
) -> Package: ) -> Package:
@ -717,6 +742,7 @@ class PackageImporter:
self._import_scenarios(package, parsed.scenarios) self._import_scenarios(package, parsed.scenarios)
self._import_additional_information(package, parsed.additional_information) self._import_additional_information(package, parsed.additional_information)
self._link_scenarios_after_import(parsed) self._link_scenarios_after_import(parsed)
self._import_and_link_enzymes(parsed)
return package return package