diff --git a/src/ptf/migrations/0089_collection_last_container_doi.py b/src/ptf/migrations/0089_collection_last_container_doi.py new file mode 100644 index 0000000000000000000000000000000000000000..a54813502be398d4a96b9f2cbe2dd6ab1b0c148c --- /dev/null +++ b/src/ptf/migrations/0089_collection_last_container_doi.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.16 on 2025-02-25 09:26 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ptf', '0088_rename_new_date_accepted_resource_date_accepted_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='collection', + name='last_container_doi', + field=models.IntegerField(default=0), + ), + ] diff --git a/src/ptf/model_helpers.py b/src/ptf/model_helpers.py index e8f4ae932700c41847a76137272f1ebc23cd870a..32be5f286e4f540f57315fa1dcb1b3401e953917 100644 --- a/src/ptf/model_helpers.py +++ b/src/ptf/model_helpers.py @@ -820,6 +820,20 @@ def assign_doi(pid): return doi +def assign_container_doi(pid): + collection = get_collection(pid) + if collection is None: + return None + + last_container_doi = collection.last_container_doi + 1 + doi = f"10.5802/{pid.lower()}.sp.{str(last_container_doi)}" + if pid == "CRBIOL" and last_container_doi == 175: + last_container_doi = 176 + collection.last_container_doi = last_container_doi + collection.save() + return doi + + # TODO make a command ? diff --git a/src/ptf/models.py b/src/ptf/models.py index 1e06947c039aa030f5f0c0856a06c2b2d4eb7c4e..d67426e6f94a690c6eb7162de9af424b1e57134b 100644 --- a/src/ptf/models.py +++ b/src/ptf/models.py @@ -733,7 +733,6 @@ class Resource(models.Model): else: try: obj = self.datastream_set.get(mimetype=mimetype) - except DataStream.DoesNotExist: # status = 404 @@ -1008,6 +1007,7 @@ class Collection(Resource): fyear = models.IntegerField(default=0) lyear = models.IntegerField(default=0) last_doi = models.IntegerField(default=0) + last_container_doi = models.IntegerField(default=0) # Ancestors means journals that existed before the creation of the Collection: time-based relation # (the name 'ancestor' does not fit with 'parent' as 'parent' refers to a tree structure)