Skip to content

Commit

Permalink
Merge pull request #130 from RockefellerArchiveCenter/v1.0
Browse files Browse the repository at this point in the history
V1.0
  • Loading branch information
bonniegee authored Mar 3, 2020
2 parents 6593654 + de1771f commit 602fa72
Show file tree
Hide file tree
Showing 10 changed files with 69 additions and 24 deletions.
2 changes: 1 addition & 1 deletion entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ if [ ! -f aquarius/config.py ]; then
fi

echo "Apply database migrations"
python manage.py makemigrations && python manage.py migrate
python manage.py migrate

#Start server
echo "Starting server"
Expand Down
3 changes: 2 additions & 1 deletion fixtures/data/c33ff643-0f1b-4fa8-9105-08d2e6a9e0d5.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"uri": "http://dev.fedora.marist.edu:8000/fedora/rest/c33ff643-0f1b-4fa8-9105-08d2e6a9e0d5",
"identifier": "286e977d-ff33-4345-a532-4d6d85c25b3a",
"package_type": "dip"
"package_type": "dip",
"origin": "aurora"
}
4 changes: 3 additions & 1 deletion fixtures/data/d33ff643-0f1b-4fa8-9105-08d2e6a9e0d5.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{
"uri": "http://dev.fedora.marist.edu:8000/fedora/rest/d33ff643-0f1b-4fa8-9105-08d2e6a9e0d5",
"identifier": "286e977d-ff33-4345-a532-4d6d85c25b3a",
"package_type": "aip"
"package_type": "aip",
"origin": "digitization",
"archivesspace_uri": "/repositories/2/archival_objects/170"
}
4 changes: 3 additions & 1 deletion fixtures/data/e33ff643-0f1b-4fa8-9105-08d2e6a9e0d5.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{
"uri": "http://dev.fedora.marist.edu:8000/fedora/rest/e33ff643-0f1b-4fa8-9105-08d2e6a9e0d5",
"identifier": "abcbcf60-d197-4c54-bf67-42f80b10f190",
"package_type": "aip"
"package_type": "aip",
"origin": "legacy_digital",
"archivesspace_uri": "/repositories/2/archival_objects/170"
}
20 changes: 10 additions & 10 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
ArchivesSnake==0.8.2
attrs==19.3.0
boltons==19.2.0
boltons==20.0.0
certifi==2019.9.11
chardet==3.0.4
click==6.7
click==7.0
clinner==1.12.3
colorlog==4.0.2
Django==2.2.6
Django==2.2.8
djangorestframework==3.10.3
ElectronBonder==0.5
git+https://github.com/RockefellerArchiveCenter/[email protected]#egg=asterism
gitdb2==2.0.3
gitdb2==2.0.6
GitPython==3.0.4
health-check==3.4.1
idna==2.7
idna==2.8
iso-639==0.4.5
iso8601==0.1.12
jsonpointer==1.14
jsonschema==2.6.0
jsonpointer==2.0
jsonschema==3.2.0
MarkupSafe==1.1.1
more-itertools==7.2.0
multidict==4.5.2
Expand All @@ -26,11 +26,11 @@ pytz==2019.3
PyYAML==5.1.2
requests==2.22.0
rfc3987==1.3.8
six==1.12.0
six==1.14.0
smmap2==2.0.5
strict-rfc3339==0.7
uritemplate==3.0.0
urllib3==1.25.3
vcrpy==2.1.0
urllib3==1.25.7
vcrpy==4.0.2
wrapt==1.11.2
yarl==1.3.0
18 changes: 18 additions & 0 deletions transformer/migrations/0006_package_origin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 2.2.6 on 2020-01-13 18:37

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('transformer', '0005_auto_20190919_2321'),
]

operations = [
migrations.AddField(
model_name='package',
name='origin',
field=models.CharField(choices=[('aurora', 'Aurora'), ('legacy_digital', 'Legacy Digital Processing'), ('digitization', 'Digitization')], default='aurora', max_length=20),
),
]
6 changes: 6 additions & 0 deletions transformer/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,12 @@ class Package(models.Model):
(ACCESSION_UPDATE_SENT, 'Updated Accession data sent to Aurora')
)
process_status = models.CharField(max_length=50, choices=PROCESS_STATUS_CHOICES)
ORIGIN_CHOICES = (
('aurora', 'Aurora'),
('legacy_digital', 'Legacy Digital Processing'),
('digitization', 'Digitization')
)
origin = models.CharField(max_length=20, choices=ORIGIN_CHOICES, default='aurora')
transfer_data = JSONField(null=True, blank=True)
accession_data = JSONField(null=True, blank=True)

Expand Down
2 changes: 1 addition & 1 deletion transformer/routines.py
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ def __init__(self):

def run(self):
update_ids = []
for obj in Package.objects.filter(process_status=self.start_status):
for obj in Package.objects.filter(process_status=self.start_status, origin='aurora'):
try:
data = self.update_data(obj)
identifier = data['url'].rstrip('/').split('/')[-1]
Expand Down
13 changes: 8 additions & 5 deletions transformer/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,16 +58,19 @@ def create_transfers(self):
for transfer in self.transfer_data:
request = self.factory.post(reverse('package-list'), transfer, format='json')
response = PackageViewSet.as_view(actions={"post": "create"})(request)
self.assertEqual(response.status_code, 200, "Wrong HTTP code")
self.assertEqual(response.status_code, 200, "Request threw exception: {}".format(response.data))
new_obj = Package.objects.get(fedora_uri=transfer.get('uri'))
process_status = Package.SAVED if new_obj.origin == 'aurora' else Package.TRANSFER_COMPONENT_CREATED
self.assertEqual(int(new_obj.process_status), process_status, "Package was created with the incorrect process status.")
if new_obj.origin in ['digitization', 'legacy_digital']:
self.assertEqual(new_obj.transfer_data['data']['archivesspace_identifier'], transfer.get('archivesspace_uri'), "ArchivesSpace Identifier was not created correctly")
self.assertEqual(len(self.transfer_data), len(Package.objects.all()))

def process_transfers(self):
for r in ROUTINES:
with transformer_vcr.use_cassette(r[0]):
accessions = r[1]().run()
self.assertNotEqual(False, accessions)
for transfer in Package.objects.all():
self.assertEqual(int(transfer.process_status), r[2])
transfers = r[1]().run()
self.assertNotEqual(False, transfers)
self.assertEqual(len(Package.objects.all()), self.transfer_count)

def search_objects(self):
Expand Down
21 changes: 17 additions & 4 deletions transformer/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,29 @@ class PackageViewSet(ModelViewSet):
serializer_class = PackageSerializer

def create(self, request):
"""Create a package object and based on data supplied with a request. If request
data contains `archivesspace_uri`, add that URI to `transfer_data` and set
`process_status` to TRANSFER_COMPONENT_CREATED."""
try:
source_object = Package.objects.create(
fedora_uri=request.data['uri'],
identifier=request.data['identifier'],
package_type=request.data['package_type'],
fedora_uri=request.data.get('uri'),
identifier=request.data.get('identifier'),
package_type=request.data.get('package_type'),
process_status=Package.SAVED
)
if request.data.get('origin') in ['digitization', 'legacy_digital']:
# TODO: investigate using defaultdict for this
source_object.transfer_data = {
'data': {
'archivesspace_identifier': request.data['archivesspace_uri']
}
}
source_object.process_status = Package.TRANSFER_COMPONENT_CREATED
source_object.origin = request.data.get('origin')
source_object.save()
return Response(prepare_response(("Package created", source_object.identifier)))
except Exception as e:
return Response(prepare_response("Error creating package: {}".format(str(e))))
return Response(prepare_response("Error creating package: {}".format(str(e))), status=500)

def get_queryset(self):
queryset = Package.objects.all().order_by('-last_modified')
Expand Down

0 comments on commit 602fa72

Please sign in to comment.