Skip to content
Open
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions specifyweb/backend/context/app_resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,19 @@
"invertebrate": "invertebrate",
"geology": "geology",
}
DISCIPLINE_NAMES = {
'fish': 'Fish',
'herpetology': 'Herpetology',
'paleobotany': 'Paleobotany',
'invertpaleo': 'Invertebrate Paleontology',
'vertpaleo': 'Vertebrate Paleontology',
'bird': 'Bird',
'mammal': 'Mammal',
'insect': 'Insect',
'botany': 'Botany',
'invertebrate': 'Invertebrate',
'geology': 'Geology',
}

FORM_RESOURCE_EXCLUDED_LST = [
"fish/fishbase.views.xml",
Expand Down
82 changes: 82 additions & 0 deletions specifyweb/specify/migrations/0042_discipline_type_picklist.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
from django.db import migrations
from specifyweb.backend.context.app_resource import DISCIPLINE_NAMES

DISCIPLINE_TYPE_PICKLIST_NAME = 'DisciplineType'

def create_discipline_type_picklist(apps):
Collection = apps.get_model('specify', 'Collection')
Picklist = apps.get_model('specify', 'Picklist')
Picklistitem = apps.get_model('specify', 'Picklistitem')

# Create a discipline type picklist for each collection
for collection in Collection.objects.all():
picklist, created = Picklist.objects.get_or_create(
name=DISCIPLINE_TYPE_PICKLIST_NAME,
type=0,
collection=collection,
defaults={
"issystem": True,
"readonly": True,
"sizelimit": -1,
"sorttype": 1,
}
)
# If the picklist doesn't exist, create a new one
if created:
ordinal = 1
items = []
for value, title in DISCIPLINE_NAMES.items():
items.append(
Picklistitem(
picklist=picklist,
ordinal=ordinal,
value=value,
title=title,
)
)
ordinal += 1
Picklistitem.objects.bulk_create(items)

def revert_discipline_type_picklist(apps):
Picklist = apps.get_model('specify', 'Picklist')

Picklist.objects.filter(name=DISCIPLINE_TYPE_PICKLIST_NAME).delete()

def update_discipline_type_splocalecontaineritem(apps):
Splocalecontaineritem = apps.get_model("specify", "Splocalecontaineritem")

Splocalecontaineritem.objects.filter(
container__name="discipline",
container__schematype=0,
name="type",
).update(picklistname=DISCIPLINE_TYPE_PICKLIST_NAME, isrequired=True)

def revert_discipline_type_splocalecontaineritem(apps):
Splocalecontaineritem = apps.get_model("specify", "Splocalecontaineritem")

Splocalecontaineritem.objects.filter(
container__name="discipline",
container__schematype=0,
name="type",
).update(picklistname=None, isrequired=None)

class Migration(migrations.Migration):
dependencies = [
('specify', '0041_add_missing_schema_after_reorganization'),
]

def apply_migration(apps, schema_editor):
create_discipline_type_picklist(apps)
update_discipline_type_splocalecontaineritem(apps)

def revert_migration(apps, schema_editor):
revert_discipline_type_picklist(apps)
revert_discipline_type_splocalecontaineritem(apps)

operations = [
migrations.RunPython(
apply_migration,
revert_migration,
atomic=True,
),
]