#18 File upload in certain folders
* removes 'revocation' folder if RevocationDocument is removed from an intervention and removes the whole intervention document folder as well, if no other documents for this intervention exist * adds further documentation * refactors getting of related documents into Intervention model
This commit is contained in:
parent
cd3eb8099d
commit
9dbea71af5
@ -9,6 +9,7 @@ import shutil
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.gis.db import models
|
||||
from django.db.models import QuerySet
|
||||
from django.utils.timezone import localtime
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
@ -94,8 +95,39 @@ class RevocationDocument(AbstractDocument):
|
||||
|
||||
@property
|
||||
def intervention(self):
|
||||
"""
|
||||
Shortcut for opening the related intervention
|
||||
|
||||
Returns:
|
||||
intervention (Intervention)
|
||||
"""
|
||||
return self.instance.legaldata.intervention
|
||||
|
||||
def delete(self, *args, **kwargs):
|
||||
"""
|
||||
Custom delete functionality for RevocationDocuments.
|
||||
Removes the folder from the file system if there are no further documents for this entry.
|
||||
|
||||
Args:
|
||||
*args ():
|
||||
**kwargs ():
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
revoc_docs, other_intervention_docs = self.intervention.get_documents()
|
||||
|
||||
# Remove the file itself
|
||||
super().delete(*args, **kwargs)
|
||||
|
||||
# Always remove 'revocation' folder
|
||||
folder_path = self.file.path.split("/")
|
||||
shutil.rmtree("/".join(folder_path[:-1]))
|
||||
|
||||
if other_intervention_docs.count() == 0:
|
||||
# If there are no further documents for the intervention, we can simply remove the whole folder as well!
|
||||
shutil.rmtree("/".join(folder_path[:-2]))
|
||||
|
||||
|
||||
class LegalData(UuidModel):
|
||||
"""
|
||||
@ -326,6 +358,21 @@ class Intervention(BaseObject):
|
||||
tooltip = _("Recorded on {} by {}").format(on, self.recorded.user)
|
||||
return tooltip
|
||||
|
||||
def get_documents(self) -> (QuerySet, QuerySet):
|
||||
""" Getter for all documents of an intervention
|
||||
|
||||
Returns:
|
||||
revoc_docs (QuerySet): The queryset of a revocation document
|
||||
regular_docs (QuerySet): The queryset of regular other documents
|
||||
"""
|
||||
revoc_docs = RevocationDocument.objects.filter(
|
||||
instance=self.legal.revocation
|
||||
)
|
||||
regular_docs = InterventionDocument.objects.filter(
|
||||
instance=self
|
||||
)
|
||||
return revoc_docs, regular_docs
|
||||
|
||||
|
||||
class InterventionDocument(AbstractDocument):
|
||||
"""
|
||||
@ -353,12 +400,7 @@ class InterventionDocument(AbstractDocument):
|
||||
Returns:
|
||||
|
||||
"""
|
||||
revoc_docs = RevocationDocument.objects.filter(
|
||||
instance=self.instance.legal.revocation
|
||||
)
|
||||
other_intervention_docs = InterventionDocument.objects.filter(
|
||||
instance=self.instance
|
||||
)
|
||||
revoc_docs, other_intervention_docs = self.instance.get_documents()
|
||||
|
||||
folder_path = None
|
||||
if revoc_docs.count() == 0 and other_intervention_docs.count() == 1:
|
||||
|
Loading…
Reference in New Issue
Block a user