def ingest_metadata_edit(request, uuid, id=None): if id: # If we have the ID of the DC object, use that - Edit dc = models.DublinCore.objects.get(pk=id) else: # Otherwise look for a SIP with the provided UUID, creating a new one # if needed. Not using get_or_create because that save the empty # object, even if the form is not submitted. sip_type_id = ingest_sip_metadata_type_id() try: dc = models.DublinCore.objects.get( metadataappliestotype=sip_type_id, metadataappliestoidentifier=uuid) id = dc.id except models.DublinCore.DoesNotExist: dc = models.DublinCore( metadataappliestotype=sip_type_id, metadataappliestoidentifier=uuid) # If the SIP is an AIC, use the AIC metadata form if 'AIC' in models.SIP.objects.get(uuid=uuid).sip_type: form = ingest_forms.AICDublinCoreMetadataForm(request.POST or None, instance=dc) dc_type = "Archival Information Collection" else: form = ingest_forms.DublinCoreMetadataForm(request.POST or None, instance=dc) dc_type = "Archival Information Package" if form.is_valid(): dc = form.save() dc.type = dc_type dc.save() return redirect('components.ingest.views.ingest_metadata_list', uuid) jobs = models.Job.objects.filter(sipuuid=uuid, subjobof='') name = utils.get_directory_name_from_job(jobs[0]) return render(request, 'ingest/metadata_edit.html', locals())
def aic_metadata_add(request, uuid): sip_type_id = ingest_sip_metadata_type_id() try: dc = models.DublinCore.objects.get(metadataappliestotype=sip_type_id, metadataappliestoidentifier=uuid) id = dc.id except models.DublinCore.DoesNotExist: dc = models.DublinCore(metadataappliestotype=sip_type_id, metadataappliestoidentifier=uuid) form = ingest_forms.AICDublinCoreMetadataForm(request.POST or None, instance=dc) if form.is_valid(): # Save the metadata dc = form.save() dc.type = "Archival Information Collection" dc.save() # Start the MicroServiceChainLink for the AIC shared_dir = django_settings.SHARED_DIRECTORY source = os.path.join(shared_dir, 'tmp', uuid) watched_dir = django_settings.WATCH_DIRECTORY name = dc.title if dc.title else dc.identifier name = slugify(name).replace('-', '_') dir_name = '{name}-{uuid}'.format(name=name, uuid=uuid) destination = os.path.join(watched_dir, 'system', 'createAIC', dir_name) destination_db = destination.replace(shared_dir, '%sharedPath%') + '/' models.SIP.objects.filter(uuid=uuid).update(currentpath=destination_db) shutil.move(source, destination) return redirect('ingest_index') name = dc.title or "New AIC" aic = True return render(request, 'ingest/metadata_edit.html', locals())