[Feature] Package Export/Import (#116)

Fixes #90
Fixes #91
Fixes #115
Fixes #104

Co-authored-by: Tim Lorsbach <tim@lorsba.ch>
Reviewed-on: enviPath/enviPy#116
This commit is contained in:
2025-09-16 02:41:10 +12:00
parent ce349a287b
commit 762a6b7baf
32 changed files with 2500683 additions and 145 deletions

View File

@ -1,8 +1,15 @@
import logging
import os
import shutil
from django.conf import settings as s
from django.db import transaction
from django.db.models.signals import pre_delete
from django.db.models.signals import pre_delete, post_delete
from django.dispatch import receiver
from epdb.models import Node, Edge
from epdb.models import Node, Edge, EPModel
logger = logging.getLogger(__name__)
@receiver(pre_delete, sender=Node)
@ -18,3 +25,14 @@ def delete_orphan_edges(sender, instance, **kwargs):
# check if the node that is about to be deleted is the only start node
if edge.end_nodes.count() == 1:
edge.delete()
@receiver(post_delete, sender=EPModel)
def delete_epmodel_files(sender, instance, **kwargs):
# Delete the files on disk for the deleted model
mod_uuid = str(instance.uuid)
for f in os.listdir(s.MODEL_DIR):
if f.startswith(mod_uuid):
logger.info(f"Deleting {os.path.join(s.MODEL_DIR, f)}")
shutil.rmtree(os.path.join(s.MODEL_DIR, f))