add case collections

This commit is contained in:
Ross
2022-03-21 16:03:18 +00:00
parent 0a1aa72fe1
commit 1a21dba545
3 changed files with 56 additions and 0 deletions
+4
View File
@@ -1,6 +1,8 @@
from django.contrib import admin
from .models import (
Case,
CaseDetail,
CaseCollection,
Differential,
Series,
SeriesImage,
@@ -37,6 +39,8 @@ admin.site.register(SeriesFinding)
admin.site.register(Differential)
admin.site.register(PathologicalProcess)
admin.site.register(Presentation)
admin.site.register(CaseCollection)
admin.site.register(CaseDetail)
class DifferentialInline(admin.TabularInline):
@@ -0,0 +1,36 @@
# Generated by Django 3.2.10 on 2022-03-21 16:02
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('atlas', '0024_alter_case_previous_case'),
]
operations = [
migrations.CreateModel(
name='CaseCollection',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255, unique=True)),
('open_access', models.BooleanField(default=True, help_text='If a collection should be freely available to browse')),
],
),
migrations.CreateModel(
name='CaseDetail',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('sort_order', models.IntegerField()),
('case', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='atlas.case')),
('collection', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='atlas.casecollection')),
],
),
migrations.AddField(
model_name='casecollection',
name='cases',
field=models.ManyToManyField(through='atlas.CaseDetail', to='atlas.Case'),
),
]
+16
View File
@@ -530,3 +530,19 @@ class Series(models.Model):
size += i.image.size
return size
class CaseCollection(models.Model):
name = models.CharField(max_length=255, unique=True)
cases = models.ManyToManyField(Case, through="CaseDetail")
open_access = models.BooleanField(
help_text="If a collection should be freely available to browse", default=True
)
class CaseDetail(models.Model):
case = models.ForeignKey(Case, on_delete=models.CASCADE)
collection = models.ForeignKey(CaseCollection, on_delete=models.CASCADE)
sort_order = models.IntegerField()