Skip to content

Commit

Permalink
separate Models for ObservationForm and MetaData
Browse files Browse the repository at this point in the history
  • Loading branch information
biodiv committed Nov 11, 2022
1 parent e9510dc commit f817ec0
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 0 deletions.
46 changes: 46 additions & 0 deletions localcosmos_server/datasets/migrations/0002_auto_20221111_1535.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Generated by Django 3.1.14 on 2022-11-11 15:35

from django.db import migrations, models
import django.db.models.deletion
import uuid


class Migration(migrations.Migration):

dependencies = [
('datasets', '0001_initial'),
]

operations = [
migrations.CreateModel(
name='ObservationForm',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
('version', models.TextField()),
('definition', models.JSONField()),
],
options={
'unique_together': {('uuid', 'version')},
},
),
migrations.CreateModel(
name='MetaData',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('data', models.JSONField()),
('observation_form', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='datasets.observationform')),
],
),
migrations.AddField(
model_name='dataset',
name='meta_data',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='datasets.metadata'),
),
migrations.AddField(
model_name='dataset',
name='observation_form',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.PROTECT, to='datasets.observationform'),
preserve_default=False,
),
]
25 changes: 25 additions & 0 deletions localcosmos_server/datasets/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,28 @@ def import_module(module):
COMPLETED_VALIDATION_STEP = 'completed'


'''
ObservationForm
'''
class ObservationForm(models.Model):

uuid = models.UUIDField(default=uuid.uuid4, unique=True, editable=False)
version = models.TextField()
definition = models.JSONField()

class Meta:
unique_together=('uuid', 'version')


'''
MetaData
'''
class MetaData(models.Model):

observation_form = models.ForeignKey(ObservationForm, on_delete=models.PROTECT)
data = models.JSONField()


'''
Dataset
- datasets have to be validated AFTER being saved, which means going through the validation routine
Expand All @@ -71,6 +93,9 @@ class Dataset(ModelWithTaxon):
# all data except the taxononmic inherited from ModelWithTaxon is stored in the json data column without schema
# for quicker queries, some fields have their own (redundant) db columns below
data = models.JSONField()
observation_form = models.ForeignKey(ObservationForm, on_delete=models.PROTECT)

meta_data = models.ForeignKey(MetaData, null=True, on_delete=models.PROTECT)

### redundant fields for quick DB queries
# geographic reference, useful for anycluster and quick GIS queries
Expand Down

0 comments on commit f817ec0

Please sign in to comment.