Skip to content

Commit 2555b50

Browse files
Remove django-extensions package
* Add custom UUIDField and use it for uuid model attributes * Remove django_extensions from existing migrations * Add migrations for current changes * Update requirements Co-authored-by: Douglas Cerna (Soy Douglas) <[email protected]>
1 parent 279c190 commit 2555b50

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+632
-281
lines changed

requirements-dev.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,6 @@ django-cas-ng==3.6.0
6464
# via -r requirements.txt
6565
django-csp==3.7
6666
# via -r requirements.txt
67-
django-extensions==1.7.9
68-
# via -r requirements.txt
6967
django-forms-bootstrap==3.1.0
7068
# via -r requirements.txt
7169
django-prometheus==2.0.0
@@ -251,7 +249,6 @@ six==1.16.0
251249
# via
252250
# -r requirements.txt
253251
# amclient
254-
# django-extensions
255252
# jsonschema
256253
# mozilla-django-oidc
257254
# opf-fido

requirements.in

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ brotli
88
clamd
99
django-autoslug==1.9.8
1010
django-csp
11-
django-extensions==1.7.9
1211
django-forms-bootstrap>=3.0.0,<4.0.0
1312
django-prometheus>=2.0,<2.1
1413
django-tastypie==0.14.3

requirements.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@ django-cas-ng==3.6.0
4646
# via -r requirements.in
4747
django-csp==3.7
4848
# via -r requirements.in
49-
django-extensions==1.7.9
50-
# via -r requirements.in
5149
django-forms-bootstrap==3.1.0
5250
# via -r requirements.in
5351
django-prometheus==2.0.0
@@ -152,7 +150,6 @@ requests==2.27.1
152150
six==1.16.0
153151
# via
154152
# amclient
155-
# django-extensions
156153
# jsonschema
157154
# mozilla-django-oidc
158155
# opf-fido

src/MCPClient/lib/clientScripts/archivematicaCreateMETSMetadataXML.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def process_xml_metadata(mets, sip_dir, sip_uuid, sip_type, xml_validation):
6767
continue
6868
valid, errors = _validate_xml(tree, schema_uri)
6969
_add_validation_event(
70-
mets, metadata_file.uuid, schema_uri, valid, errors
70+
mets, str(metadata_file.uuid), schema_uri, valid, errors
7171
)
7272
if not valid:
7373
xml_metadata_errors += errors
@@ -251,5 +251,5 @@ def _add_validation_event(mets, file_uuid, schema_uri, valid, errors):
251251
"eventOutcomeDetailNote": "\n".join([str(err) for err in errors]),
252252
}
253253
event_object = insertIntoEvents(file_uuid, **event_data)
254-
metadata_fsentry = mets.get_file(file_uuid=file_uuid)
254+
metadata_fsentry = mets.get_file(file_uuid=str(file_uuid))
255255
metadata_fsentry.add_premis_event(createmets2.createEvent(event_object))

src/MCPClient/lib/clientScripts/archivematicaCreateMETSReingest.py

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,11 @@ def update_object(job, mets):
7272
# Iterate through original files
7373
for fsentry in mets.all_files():
7474
# Only update original files
75-
if fsentry.use != "original" or fsentry.type != "Item" or not fsentry.file_uuid:
75+
if (
76+
fsentry.use != "original"
77+
or fsentry.type != "Item"
78+
or not str(fsentry.file_uuid)
79+
):
7680
continue
7781

7882
# Copy techMD
@@ -101,7 +105,7 @@ def update_object(job, mets):
101105
fixity.find("premis:messageDigest", namespaces=ns.NSMAP).text = f.checksum
102106

103107
# If FileID exists, update file ID
104-
if models.FileID.objects.filter(file_id=fsentry.file_uuid):
108+
if models.FileID.objects.filter(file_id=str(fsentry.file_uuid)):
105109
job.pyprint("Updating format for", fsentry.file_uuid)
106110
modified = True
107111
# Delete old formats
@@ -119,7 +123,7 @@ def update_object(job, mets):
119123

120124
# If FPCommand output exists, update objectCharacteristicsExtension
121125
if models.FPCommandOutput.objects.filter(
122-
file_id=fsentry.file_uuid,
126+
file_id=str(fsentry.file_uuid),
123127
rule__purpose__in=["characterization", "default_characterization"],
124128
).exists():
125129
job.pyprint(
@@ -143,7 +147,7 @@ def update_object(job, mets):
143147

144148
# If Derivation exists, update relationships
145149
if models.Derivation.objects.filter(
146-
source_file_id=fsentry.file_uuid, event__isnull=False
150+
source_file_id=str(fsentry.file_uuid), event__isnull=False
147151
):
148152
job.pyprint("Updating relationships for", fsentry.file_uuid)
149153
modified = True
@@ -375,7 +379,7 @@ def add_events(job, mets, sip_uuid):
375379
for event in models.Event.objects.filter(file_uuid__sip__uuid=sip_uuid).iterator():
376380
job.pyprint("Adding", event.event_type, "event to file", event.file_uuid_id)
377381
try:
378-
fsentry = fsentries[event.file_uuid_id]
382+
fsentry = fsentries[str(event.file_uuid_id)]
379383
except KeyError:
380384
job.pyprint(
381385
"File with UUID",
@@ -433,7 +437,7 @@ def add_new_files(job, mets, sip_uuid, sip_dir):
433437
if rel_path != old_mets_rel_path:
434438
job.pyprint(rel_path, "not found in METS, must be new file")
435439
f = models.File.objects.get(
436-
currentlocation=current_loc, sip_id=sip_uuid
440+
currentlocation=current_loc, sip_id=str(sip_uuid)
437441
)
438442
new_files.append(f)
439443
if rel_path == "objects/metadata/metadata.csv":
@@ -455,20 +459,20 @@ def add_new_files(job, mets, sip_uuid, sip_dir):
455459

456460
for f in new_files:
457461
# Create amdSecs
458-
job.pyprint("Adding amdSec for", f.currentlocation, "(", f.uuid, ")")
462+
job.pyprint("Adding amdSec for", f.currentlocation, "(", str(f.uuid), ")")
459463
amdsec, amdid = createmets2.getAMDSec(
460464
job,
461-
fileUUID=f.uuid,
465+
fileUUID=str(f.uuid),
462466
filePath=None, # Only needed if use=original
463467
use=f.filegrpuse,
464-
sip_uuid=sip_uuid,
468+
sip_uuid=str(sip_uuid),
465469
transferUUID=None, # Only needed if use=original
466470
itemdirectoryPath=None, # Only needed if use=original
467471
typeOfTransfer=None, # Only needed if use=original
468472
baseDirectoryPath=sip_dir,
469473
state=state,
470474
)
471-
job.pyprint(f.uuid, "has amdSec with ID", amdid)
475+
job.pyprint(str(f.uuid), "has amdSec with ID", amdid)
472476

473477
# Create parent directories if needed
474478
dirs = os.path.dirname(
@@ -485,12 +489,12 @@ def add_new_files(job, mets, sip_uuid, sip_dir):
485489
derived_from = None
486490
if f.original_file_set.exists():
487491
original_f = f.original_file_set.get().source_file
488-
derived_from = mets.get_file(file_uuid=original_f.uuid)
492+
derived_from = mets.get_file(file_uuid=str(original_f.uuid))
489493
entry = metsrw.FSEntry(
490494
path=f.currentlocation.replace("%SIPDirectory%", "", 1),
491495
use=f.filegrpuse,
492496
type="Item",
493-
file_uuid=f.uuid,
497+
file_uuid=str(f.uuid),
494498
derived_from=derived_from,
495499
)
496500
metsrw_amdsec = metsrw.AMDSec.parse(amdsec)
@@ -514,7 +518,7 @@ def delete_files(mets, sip_uuid):
514518
sip_id=sip_uuid, event__event_type="deletion"
515519
).values_list("uuid", flat=True)
516520
for file_uuid in deleted_files:
517-
df = mets.get_file(file_uuid=file_uuid)
521+
df = mets.get_file(file_uuid=str(file_uuid))
518522
df.use = "deleted"
519523
df.path = None
520524
df.label = None
@@ -554,7 +558,7 @@ def update_metadata_csv(job, mets, metadata_csv, sip_uuid, sip_dir, state):
554558
file_obj = None
555559
try:
556560
file_obj = models.File.objects.get(
557-
sip_id=sip_uuid, originallocation__endswith="%" + f
561+
sip_id=str(sip_uuid), originallocation__endswith="%" + f
558562
)
559563
except models.File.DoesNotExist:
560564
try:
@@ -564,7 +568,7 @@ def update_metadata_csv(job, mets, metadata_csv, sip_uuid, sip_dir, state):
564568
except models.File.DoesNotExist:
565569
pass
566570
if file_obj is not None:
567-
fsentry = mets.get_file(file_uuid=file_obj.uuid)
571+
fsentry = mets.get_file(file_uuid=str(file_obj.uuid))
568572
else:
569573
fsentry = _get_directory_fsentry(mets, f)
570574
if fsentry is None:

src/MCPClient/lib/clientScripts/archivematicaCreateMETSRights.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ def createRightsStatement(job, statement, fileUUID, state):
269269
).text = "UUID"
270270
etree.SubElement(
271271
linkingObjectIdentifier, ns.premisBNS + "linkingObjectIdentifierValue"
272-
).text = fileUUID
272+
).text = str(fileUUID)
273273
return rightsStatement
274274

275275

src/MCPClient/lib/clientScripts/archivematica_clamscan.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -219,9 +219,12 @@ def version_attrs(self):
219219

220220

221221
def file_already_scanned(file_uuid):
222-
return Event.objects.filter(
223-
file_uuid_id=file_uuid, event_type="virus check"
224-
).exists()
222+
return (
223+
file_uuid != "None"
224+
and Event.objects.filter(
225+
file_uuid_id=file_uuid, event_type="virus check"
226+
).exists()
227+
)
225228

226229

227230
def queue_event(file_uuid, date, scanner, passed, queue):
@@ -274,7 +277,6 @@ def get_scanner():
274277
"""
275278
choice = str(mcpclient_settings.CLAMAV_CLIENT_BACKEND).lower()
276279
if choice not in SCANNERS_NAMES:
277-
278280
logger.warning(
279281
"Unexpected antivirus scanner (CLAMAV_CLIENT_BACKEND):" ' "%s"; using %s.',
280282
choice,

src/MCPClient/lib/clientScripts/create_mets_v2.py

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,9 @@ def _add_identifier(object_elem, identifier, bns=ns.premisBNS):
230230
idfr_type, idfr_val = identifier
231231
objectIdentifier = etree.SubElement(object_elem, bns + "objectIdentifier")
232232
etree.SubElement(objectIdentifier, bns + "objectIdentifierType").text = idfr_type
233-
etree.SubElement(objectIdentifier, bns + "objectIdentifierValue").text = idfr_val
233+
etree.SubElement(objectIdentifier, bns + "objectIdentifierValue").text = str(
234+
idfr_val
235+
)
234236
return object_elem
235237

236238

@@ -527,7 +529,7 @@ def create_premis_object(fileUUID):
527529
:param str fileUUID: UUID of the File to create an object for
528530
:return: premis:object Element, suitable for inserting into mets:xmlData
529531
"""
530-
f = File.objects.get(uuid=fileUUID)
532+
f = File.objects.get(uuid=str(fileUUID))
531533
# PREMIS:OBJECT
532534
object_elem = etree.Element(ns.premisBNS + "object", nsmap={"premis": ns.premisNS})
533535
object_elem.set(ns.xsiBNS + "type", "premis:file")
@@ -657,7 +659,7 @@ def create_premis_object_derivations(fileUUID):
657659
).text = "UUID"
658660
etree.SubElement(
659661
relatedObjectIdentifier, ns.premisBNS + "relatedObjectIdentifierValue"
660-
).text = derivation.derived_file_id
662+
).text = str(derivation.derived_file_id)
661663

662664
relatedEventIdentifier = etree.SubElement(
663665
relationship, ns.premisBNS + "relatedEventIdentifier"
@@ -667,7 +669,7 @@ def create_premis_object_derivations(fileUUID):
667669
).text = "UUID"
668670
etree.SubElement(
669671
relatedEventIdentifier, ns.premisBNS + "relatedEventIdentifierValue"
670-
).text = derivation.event_id
672+
).text = str(derivation.event_id)
671673

672674
elements.append(relationship)
673675

@@ -691,7 +693,7 @@ def create_premis_object_derivations(fileUUID):
691693
).text = "UUID"
692694
etree.SubElement(
693695
relatedObjectIdentifier, ns.premisBNS + "relatedObjectIdentifierValue"
694-
).text = derivation.source_file_id
696+
).text = str(derivation.source_file_id)
695697

696698
relatedEventIdentifier = etree.SubElement(
697699
relationship, ns.premisBNS + "relatedEventIdentifier"
@@ -701,7 +703,7 @@ def create_premis_object_derivations(fileUUID):
701703
).text = "UUID"
702704
etree.SubElement(
703705
relatedEventIdentifier, ns.premisBNS + "relatedEventIdentifierValue"
704-
).text = derivation.event_id
706+
).text = str(derivation.event_id)
705707

706708
elements.append(relationship)
707709

@@ -714,7 +716,7 @@ def createDigiprovMD(fileUUID, state):
714716
"""
715717
ret = []
716718

717-
events = Event.objects.filter(file_uuid_id=fileUUID)
719+
events = Event.objects.filter(file_uuid_id=str(fileUUID))
718720
for event_record in events:
719721
state.globalDigiprovMDCounter += 1
720722
digiprovMD = etree.Element(
@@ -730,7 +732,7 @@ def createDigiprovMD(fileUUID, state):
730732
xmlData.append(createEvent(event_record))
731733

732734
for agent in Agent.objects.extend_queryset_with_preservation_system(
733-
Agent.objects.filter(event__file_uuid_id=fileUUID).distinct()
735+
Agent.objects.filter(event__file_uuid_id=str(fileUUID)).distinct()
734736
):
735737
state.globalDigiprovMDCounter += 1
736738
digiprovMD = etree.Element(
@@ -761,10 +763,9 @@ def createEvent(event_record):
761763
etree.SubElement(
762764
eventIdentifier, ns.premisBNS + "eventIdentifierType"
763765
).text = "UUID"
764-
etree.SubElement(
765-
eventIdentifier, ns.premisBNS + "eventIdentifierValue"
766-
).text = event_record.event_id
767-
766+
etree.SubElement(eventIdentifier, ns.premisBNS + "eventIdentifierValue").text = str(
767+
event_record.event_id
768+
)
768769
etree.SubElement(event, ns.premisBNS + "eventType").text = event_record.event_type
769770
etree.SubElement(
770771
event, ns.premisBNS + "eventDateTime"
@@ -895,7 +896,7 @@ def getAMDSec(
895896
)
896897
AMD.append(digiprovMD)
897898

898-
for a in createDigiprovMD(fileUUID, state):
899+
for a in createDigiprovMD(str(fileUUID), state):
899900
AMD.append(a)
900901

901902
return ret
@@ -1136,7 +1137,7 @@ def createFileSec(
11361137
GROUPID = ""
11371138
if f.filegrpuuid:
11381139
# GROUPID was determined elsewhere
1139-
GROUPID = "Group-%s" % (f.filegrpuuid)
1140+
GROUPID = f"Group-{f.filegrpuuid}"
11401141
if use == "TRIM file metadata":
11411142
use = "metadata"
11421143

@@ -1147,7 +1148,7 @@ def createFileSec(
11471148
"maildirFile",
11481149
):
11491150
# These files are in a group defined by themselves
1150-
GROUPID = "Group-%s" % (f.uuid)
1151+
GROUPID = f"Group-{f.uuid}"
11511152
if use == "maildirFile":
11521153
use = "original"
11531154
# Check for CSV-based Dublincore dmdSec
@@ -1193,7 +1194,7 @@ def createFileSec(
11931194
}
11941195
original_file = File.objects.filter(**kwargs).first()
11951196
if original_file is not None:
1196-
GROUPID = "Group-" + original_file.uuid
1197+
GROUPID = f"Group-{original_file.uuid}"
11971198

11981199
elif use in ("preservation", "text/ocr", "derivative"):
11991200
# Derived files should be in the original file's group
@@ -1205,7 +1206,7 @@ def createFileSec(
12051206
" where the derived file is {}".format(f.uuid)
12061207
)
12071208
raise
1208-
GROUPID = "Group-" + d.source_file_id
1209+
GROUPID = f"Group-{d.source_file_id}"
12091210

12101211
elif use == "service":
12111212
# Service files are in the original file's group
@@ -1223,10 +1224,10 @@ def createFileSec(
12231224
"currentlocation__startswith": fileFileIDPath,
12241225
}
12251226
original_file = File.objects.get(**kwargs)
1226-
GROUPID = "Group-" + original_file.uuid
1227+
GROUPID = f"Group-{original_file.uuid}"
12271228

12281229
elif use == "TRIM container metadata":
1229-
GROUPID = "Group-%s" % (f.uuid)
1230+
GROUPID = f"Group-{f.uuid}"
12301231
use = "metadata"
12311232

12321233
# Special DSPACEMETS processing
@@ -1765,7 +1766,7 @@ def main(
17651766

17661767
# Get the <dmdSec> for the entire AIP; it is associated to the root
17671768
# <mets:div> in the physical structMap.
1768-
sip_mdl = SIP.objects.filter(uuid=sipUUID).first()
1769+
sip_mdl = SIP.objects.filter(uuid=str(sipUUID)).first()
17691770
if sip_mdl:
17701771
aipDmdSec = getDirDmdSec(sip_mdl, sip_dir_name)
17711772
state.globalDmdSecCounter += 1

0 commit comments

Comments
 (0)