.
This commit is contained in:
+58
-3
@@ -13,6 +13,7 @@ from django.forms import inlineformset_factory
|
|||||||
|
|
||||||
from atlas.models import (
|
from atlas.models import (
|
||||||
Case,
|
Case,
|
||||||
|
CaseCollection,
|
||||||
Differential,
|
Differential,
|
||||||
Finding,
|
Finding,
|
||||||
Series,
|
Series,
|
||||||
@@ -50,6 +51,26 @@ class ConditionForm(ModelForm):
|
|||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class CaseCollectionForm(ModelForm):
|
||||||
|
class Meta:
|
||||||
|
model = CaseCollection
|
||||||
|
exclude = ["cases", "author"]
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
self.user = kwargs.pop(
|
||||||
|
"user"
|
||||||
|
) # To get request.user. Do not use kwargs.pop('user', None) due to potential security hole
|
||||||
|
if kwargs.get("instance"):
|
||||||
|
# We get the 'initial' keyword argument or initialize it
|
||||||
|
# as a dict if it didn't exist.
|
||||||
|
initial = kwargs.setdefault("initial", {})
|
||||||
|
# The widget for a ModelMultipleChoiceField expects
|
||||||
|
# a list of primary key for the selected data.
|
||||||
|
# initial["exams"] = [t.pk for t in kwargs["instance"].exams.all()]
|
||||||
|
|
||||||
|
ModelForm.__init__(self, *args, **kwargs)
|
||||||
|
|
||||||
|
super(CaseCollectionForm, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
class FindingForm(ModelForm):
|
class FindingForm(ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -226,7 +247,6 @@ class CaseForm(ModelForm):
|
|||||||
ModelForm.__init__(self, *args, **kwargs)
|
ModelForm.__init__(self, *args, **kwargs)
|
||||||
|
|
||||||
super(CaseForm, self).__init__(*args, **kwargs)
|
super(CaseForm, self).__init__(*args, **kwargs)
|
||||||
print(1)
|
|
||||||
|
|
||||||
# self.fields["series"].queryset =
|
# self.fields["series"].queryset =
|
||||||
|
|
||||||
@@ -313,8 +333,10 @@ CaseDifferentialFormSet = inlineformset_factory(
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class BaseSeriesFormSet(BaseInlineFormSet):
|
class BaseSeriesFormSet(BaseInlineFormSet):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
|
||||||
super(BaseSeriesFormSet, self).__init__(*args, **kwargs)
|
super(BaseSeriesFormSet, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
self.queryset = Series.case.through.objects.filter(series__author__id=99)
|
self.queryset = Series.case.through.objects.filter(series__author__id=99)
|
||||||
@@ -322,16 +344,49 @@ class BaseSeriesFormSet(BaseInlineFormSet):
|
|||||||
# for form in self.forms:
|
# for form in self.forms:
|
||||||
# form.fields['series'].queryset = series_queryset
|
# form.fields['series'].queryset = series_queryset
|
||||||
|
|
||||||
|
|
||||||
|
class CaseSeriesForm(ModelForm):
|
||||||
|
def __init__(self, *args, user, **kwargs):
|
||||||
|
super(CaseSeriesForm, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
self.fields["series"] = ModelChoiceField(
|
||||||
|
required=False,
|
||||||
|
queryset=Series.objects.filter(author__id=user.id),
|
||||||
|
# widget=Select(verbose_name="Series", is_stacked=False),
|
||||||
|
)
|
||||||
|
|
||||||
|
class CaseCollectionCaseForm(ModelForm):
|
||||||
|
def __init__(self, *args, user, **kwargs):
|
||||||
|
super(CaseCollectionCaseForm, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
self.fields["case"] = ModelChoiceField(
|
||||||
|
required=False,
|
||||||
|
queryset=Case.objects.filter(author__id=user.id),
|
||||||
|
# widget=Select(verbose_name="Series", is_stacked=False),
|
||||||
|
)
|
||||||
|
|
||||||
SeriesFormSet = inlineformset_factory(
|
SeriesFormSet = inlineformset_factory(
|
||||||
Case,
|
Case,
|
||||||
Series.case.through,
|
Series.case.through,
|
||||||
formset=BaseSeriesFormSet,
|
form=CaseSeriesForm,
|
||||||
|
# formset=BaseSeriesFormSet,
|
||||||
exclude=[],
|
exclude=[],
|
||||||
can_delete=True,
|
can_delete=True,
|
||||||
extra=1,
|
extra=0,
|
||||||
max_num=10,
|
max_num=10,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
CaseCollectionCaseFormSet = inlineformset_factory(
|
||||||
|
CaseCollection,
|
||||||
|
Case.casecollection_set.through,
|
||||||
|
form=CaseCollectionCaseForm,
|
||||||
|
# formset=BaseSeriesFormSet,
|
||||||
|
exclude=[],
|
||||||
|
can_delete=True,
|
||||||
|
extra=0,
|
||||||
|
max_num=50,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
SeriesImageFormSet = inlineformset_factory(
|
SeriesImageFormSet = inlineformset_factory(
|
||||||
Series,
|
Series,
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# Generated by Django 3.2.10 on 2022-03-29 20:53
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
('atlas', '0027_auto_20220325_2138'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='casecollection',
|
||||||
|
name='author',
|
||||||
|
field=models.ManyToManyField(blank=True, help_text='Author of the collection', to=settings.AUTH_USER_MODEL),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 3.2.10 on 2022-03-29 20:59
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('atlas', '0028_casecollection_author'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='casecollection',
|
||||||
|
name='show_report',
|
||||||
|
field=models.BooleanField(default=False, help_text='Show the case report'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -572,6 +572,14 @@ class CaseCollection(models.Model):
|
|||||||
show_title = models.BooleanField(default=False, help_text="Show the title of the cases")
|
show_title = models.BooleanField(default=False, help_text="Show the title of the cases")
|
||||||
show_description = models.BooleanField(default=False, help_text="Show the description of the cases")
|
show_description = models.BooleanField(default=False, help_text="Show the description of the cases")
|
||||||
show_discussion = models.BooleanField(default=False, help_text="Show the case discussion")
|
show_discussion = models.BooleanField(default=False, help_text="Show the case discussion")
|
||||||
|
show_report = models.BooleanField(default=False, help_text="Show the case report")
|
||||||
|
|
||||||
|
author = models.ManyToManyField(
|
||||||
|
settings.AUTH_USER_MODEL,
|
||||||
|
blank=True,
|
||||||
|
help_text="Author of the collection",
|
||||||
|
#related_name="atlas_authored_cases",
|
||||||
|
)
|
||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse("atlas:collection_detail_view", kwargs={"pk": self.pk})
|
return reverse("atlas:collection_detail_view", kwargs={"pk": self.pk})
|
||||||
|
|||||||
@@ -19,8 +19,9 @@ Atlas:
|
|||||||
{% if request.user.is_authenticated %}
|
{% if request.user.is_authenticated %}
|
||||||
<a href="{% url 'atlas:case_view' %}">Cases</a> /
|
<a href="{% url 'atlas:case_view' %}">Cases</a> /
|
||||||
<a href="{% url 'atlas:series_view' %}">Series</a> /
|
<a href="{% url 'atlas:series_view' %}">Series</a> /
|
||||||
|
<a href="{% url 'atlas:collection_index_view' %}">Collections</a> /
|
||||||
<a href="{% url 'atlas:categories_list' %}">Categories</a> /
|
<a href="{% url 'atlas:categories_list' %}">Categories</a> /
|
||||||
<a href="{% url 'atlas:create' %}" title="Create a new atlas case">Create Case</a> /
|
<a href="{% url 'atlas:case_create' %}" title="Create a new atlas case">Create Case</a> /
|
||||||
<a href="{% url 'atlas:series_create' %}" title="Create a new image series">Create Series</a>
|
<a href="{% url 'atlas:series_create' %}" title="Create a new image series">Create Series</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% comment %} </br>
|
{% comment %} </br>
|
||||||
|
|||||||
+54
@@ -0,0 +1,54 @@
|
|||||||
|
{% extends "atlas/base.html" %}
|
||||||
|
<!-- {% load static from static %} -->
|
||||||
|
|
||||||
|
{% block css %}
|
||||||
|
{% endblock %}
|
||||||
|
{% block js %}
|
||||||
|
<!--<script type="text/javascript" src="/admin/jsi18n/"></script>-->
|
||||||
|
{{form.media}}
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
function add_case_input_form() {
|
||||||
|
var form_idx = $('#id_casedetail_set-TOTAL_FORMS').val();
|
||||||
|
$('#case_formset').append($('#empty_case_form').html().replace(/__prefix__/g, form_idx));
|
||||||
|
$('#id_casedetail_set-TOTAL_FORMS').val(parseInt(form_idx) + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$(document).ready(function () {
|
||||||
|
$('#add_more_case').click(() => { add_case_input_form() });
|
||||||
|
})
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<!-- {{ form.media }} -->
|
||||||
|
{% endblock %}
|
||||||
|
{% block content %}
|
||||||
|
<h2>Create Collection</h2>
|
||||||
|
Use this form to create a collection of cases
|
||||||
|
<form action="" method="post" enctype="multipart/form-data" id="atlas-form">
|
||||||
|
{% csrf_token %}
|
||||||
|
|
||||||
|
<table>
|
||||||
|
{{ form.as_table }}
|
||||||
|
</table>
|
||||||
|
<h3>Cases:</h3>
|
||||||
|
Add cases here. These can only be added once created (they can also be added to cases on creation).
|
||||||
|
<input type="button" value="Add More Cases" id="add_more_case">
|
||||||
|
<div id="case_formset">
|
||||||
|
{% for form in case_formset %}
|
||||||
|
<ul class="no-error case-formset">
|
||||||
|
{{form.non_field_errors}}
|
||||||
|
{{form.errors}}
|
||||||
|
{{ form.as_ul }}
|
||||||
|
</ul>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{{ case_formset.management_form }}
|
||||||
|
<input type="submit" class="submit-button" value="Submit" name="submit">
|
||||||
|
</form>
|
||||||
|
<div id="empty_case_form" style="display:none">
|
||||||
|
<ul class='no_error case-formset'>
|
||||||
|
{{ case_formset.empty_form.as_ul }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
@@ -43,6 +43,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</details>
|
</details>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if collection.show_report and case.report%}
|
||||||
|
<details>
|
||||||
|
<summary>
|
||||||
|
Report:
|
||||||
|
</summary>
|
||||||
|
<div>
|
||||||
|
{{case.report}}
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
{% if previous %}
|
{% if previous %}
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
{% extends 'atlas/base.html' %}
|
{% extends 'atlas/base.html' %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
{% if request.user.is_authenticated %}
|
||||||
|
<div class="floating-header">
|
||||||
|
<a href="{% url 'atlas:collection_update' pk=collection.pk %}" title="Edit the Collection">Edit</a>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
<h2>{{collection.name}}
|
<h2>{{collection.name}}
|
||||||
<ul>
|
<ul>
|
||||||
{% for case in collection.cases.all %}
|
{% for case in collection.cases.all %}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<div>{{ series.modality}}, {{ series.examination }}, {{ series.plane }}, {{ series.contrast }}</div>
|
<div>{{ series.modality}}, {{ series.examination }}, {{ series.plane }}, {{ series.contrast }}</div>
|
||||||
|
<div>Description: {{series.description}}</div>
|
||||||
|
|
||||||
{% if series.case %}
|
{% if series.case %}
|
||||||
Associated case:
|
Associated case:
|
||||||
|
|||||||
+8
-3
@@ -1,4 +1,6 @@
|
|||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
|
from django.views.generic import RedirectView
|
||||||
|
|
||||||
|
|
||||||
from atlas.models import Condition, Finding, Presentation, Structure
|
from atlas.models import Condition, Finding, Presentation, Structure
|
||||||
from . import views
|
from . import views
|
||||||
@@ -7,12 +9,15 @@ app_name = "atlas"
|
|||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("", views.CaseView.as_view(), name="index"),
|
path("", views.CaseView.as_view(), name="index"),
|
||||||
|
path("create/", RedirectView.as_view(pattern_name='atlas:case_create', permanent=False), name="create"),
|
||||||
path("author/<int:pk>/", views.author_detail, name="author_detail"),
|
path("author/<int:pk>/", views.author_detail, name="author_detail"),
|
||||||
path("author/", views.author_list, name="author_list"),
|
path("author/", views.author_list, name="author_list"),
|
||||||
path("case/", views.CaseView.as_view(), name="case_view"),
|
path("case/", views.CaseView.as_view(), name="case_view"),
|
||||||
path("collection/", views.collection_index_view, name="collection_index_view"),
|
path("collection/", views.collection_index_view, name="collection_index_view"),
|
||||||
path("collections/<int:pk>", views.collection_detail_view, name="collection_detail_view"),
|
path("collection/create", views.CaseCollectionCreate.as_view(), name="collection_create"),
|
||||||
path("collections/<int:pk>/<int:case_number>", views.collection_case_view, name="collection_case_view"),
|
path("collection/<int:pk>/update", views.CaseCollectionUpdate.as_view(), name="collection_update"),
|
||||||
|
path("collection/<int:pk>", views.collection_detail_view, name="collection_detail_view"),
|
||||||
|
path("collection/<int:pk>/<int:case_number>", views.collection_case_view, name="collection_case_view"),
|
||||||
path("condition/", views.ConditionView.as_view(), name="condition_view"),
|
path("condition/", views.ConditionView.as_view(), name="condition_view"),
|
||||||
path("categories/", views.categories_list, name="categories_list"),
|
path("categories/", views.categories_list, name="categories_list"),
|
||||||
path("condition/<int:pk>", views.condition_detail, name="condition_detail"),
|
path("condition/<int:pk>", views.condition_detail, name="condition_detail"),
|
||||||
@@ -97,7 +102,7 @@ urlpatterns = [
|
|||||||
# path("all_questions/", views.all_questions, name="all_questions"),
|
# path("all_questions/", views.all_questions, name="all_questions"),
|
||||||
path("case/<int:pk>/scrap", views.atlas_scrap, name="case_scrap"),
|
path("case/<int:pk>/scrap", views.atlas_scrap, name="case_scrap"),
|
||||||
path("case/<int:pk>/delete", views.CaseDelete.as_view(), name="case_delete"),
|
path("case/<int:pk>/delete", views.CaseDelete.as_view(), name="case_delete"),
|
||||||
path("case/create/", views.AtlasCreate.as_view(), name="create"),
|
path("case/create/", views.AtlasCreate.as_view(), name="case_create"),
|
||||||
path("series/create", views.SeriesCreate.as_view(), name="series_create"),
|
path("series/create", views.SeriesCreate.as_view(), name="series_create"),
|
||||||
path(
|
path(
|
||||||
"series/<int:pk>/create",
|
"series/<int:pk>/create",
|
||||||
|
|||||||
+150
-8
@@ -27,6 +27,8 @@ from django.http import Http404, JsonResponse
|
|||||||
from django.http import HttpResponseRedirect, HttpResponse
|
from django.http import HttpResponseRedirect, HttpResponse
|
||||||
|
|
||||||
from .forms import (
|
from .forms import (
|
||||||
|
CaseCollectionCaseFormSet,
|
||||||
|
CaseCollectionForm,
|
||||||
CaseForm,
|
CaseForm,
|
||||||
ConditionForm,
|
ConditionForm,
|
||||||
FindingForm,
|
FindingForm,
|
||||||
@@ -349,6 +351,60 @@ def case_clone(request, pk):
|
|||||||
return render(request, "atlas/case_form.html", context)
|
return render(request, "atlas/case_form.html", context)
|
||||||
|
|
||||||
|
|
||||||
|
class CaseCollectionCreate(RevisionMixin, LoginRequiredMixin, CreateView):
|
||||||
|
model = CaseCollection
|
||||||
|
form_class = CaseCollectionForm
|
||||||
|
|
||||||
|
def get_initial(self):
|
||||||
|
# print(self.request)
|
||||||
|
if "pk" in self.kwargs:
|
||||||
|
initial = super(CaseCollectionCreate, self).get_initial()
|
||||||
|
# case = get_object_or_404(Case, pk=self.kwargs["pk"])
|
||||||
|
|
||||||
|
# initial["case"] = case.id
|
||||||
|
|
||||||
|
return initial
|
||||||
|
|
||||||
|
def get_form_kwargs(self):
|
||||||
|
kwargs = super(CaseCollectionCreate, self).get_form_kwargs()
|
||||||
|
kwargs.update({"user": self.request.user})
|
||||||
|
return kwargs
|
||||||
|
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
context = super(CaseCollectionCreate, self).get_context_data(**kwargs)
|
||||||
|
|
||||||
|
if self.request.POST:
|
||||||
|
context["case_formset"] = CaseCollectionCaseFormSet(
|
||||||
|
self.request.POST,
|
||||||
|
self.request.FILES,
|
||||||
|
form_kwargs={"user": self.request.user},
|
||||||
|
)
|
||||||
|
context["case_formset"].full_clean()
|
||||||
|
else:
|
||||||
|
context["case_formset"] = CaseCollectionCaseFormSet(
|
||||||
|
form_kwargs={"user": self.request.user}
|
||||||
|
)
|
||||||
|
return context
|
||||||
|
|
||||||
|
def form_valid(self, form):
|
||||||
|
|
||||||
|
self.object = form.save(commit=False)
|
||||||
|
self.object.save()
|
||||||
|
|
||||||
|
form.instance.author.add(self.request.user.id)
|
||||||
|
|
||||||
|
context = self.get_context_data(form=form)
|
||||||
|
case_formset = context["case_formset"]
|
||||||
|
if case_formset.is_valid():
|
||||||
|
response = super().form_valid(form)
|
||||||
|
case_formset.instance = self.object
|
||||||
|
case_formset.save()
|
||||||
|
return response
|
||||||
|
|
||||||
|
else:
|
||||||
|
return super().form_invalid(form)
|
||||||
|
|
||||||
|
|
||||||
class SeriesCreate(RevisionMixin, LoginRequiredMixin, CreateView):
|
class SeriesCreate(RevisionMixin, LoginRequiredMixin, CreateView):
|
||||||
model = Series
|
model = Series
|
||||||
form_class = SeriesForm
|
form_class = SeriesForm
|
||||||
@@ -399,6 +455,67 @@ class SeriesCreate(RevisionMixin, LoginRequiredMixin, CreateView):
|
|||||||
return super().form_invalid(form)
|
return super().form_invalid(form)
|
||||||
|
|
||||||
|
|
||||||
|
class CaseCollectionUpdate(RevisionMixin, LoginRequiredMixin, UpdateView):
|
||||||
|
model = CaseCollection
|
||||||
|
form_class = CaseCollectionForm
|
||||||
|
|
||||||
|
# fields = '__all__'
|
||||||
|
# #fields = [ 'condition' ]
|
||||||
|
# #initial = {'date_of_death': '05/01/2018'}
|
||||||
|
# exclude = [ 'created_date', 'published_date' ]
|
||||||
|
|
||||||
|
def get_form_kwargs(self):
|
||||||
|
kwargs = super(CaseCollectionUpdate, self).get_form_kwargs()
|
||||||
|
kwargs.update({"user": self.request.user})
|
||||||
|
return kwargs
|
||||||
|
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
context = super(CaseCollectionUpdate, self).get_context_data(**kwargs)
|
||||||
|
if self.request.POST:
|
||||||
|
context["case_formset"] = CaseCollectionCaseFormSet(
|
||||||
|
self.request.POST,
|
||||||
|
self.request.FILES,
|
||||||
|
instance=self.object,
|
||||||
|
form_kwargs={"user": self.request.user},
|
||||||
|
)
|
||||||
|
context["case_formset"].full_clean()
|
||||||
|
else:
|
||||||
|
context["case_formset"] = CaseCollectionCaseFormSet(
|
||||||
|
instance=self.object, form_kwargs={"user": self.request.user}
|
||||||
|
)
|
||||||
|
return context
|
||||||
|
|
||||||
|
def form_valid(self, form):
|
||||||
|
# save exam orders (there must be a better way to do this)
|
||||||
|
# exam_orders = {}
|
||||||
|
# for exam in self.object.exams.all():
|
||||||
|
# exam_orders[exam] = list(exam.exam_questions.all())
|
||||||
|
|
||||||
|
self.object = form.save(commit=False)
|
||||||
|
self.object.save()
|
||||||
|
|
||||||
|
form.instance.author.add(self.request.user.id)
|
||||||
|
|
||||||
|
context = self.get_context_data(form=form)
|
||||||
|
case_formset = context["case_formset"]
|
||||||
|
# logger.debug(formset.is_valid())
|
||||||
|
if case_formset.is_valid():
|
||||||
|
response = super().form_valid(form)
|
||||||
|
case_formset.instance = self.object
|
||||||
|
case_formset.save()
|
||||||
|
|
||||||
|
# restore exam orders
|
||||||
|
# for exam in self.object.exams.all():
|
||||||
|
# if exam in exam_orders and self.object in exam_orders[exam]:
|
||||||
|
# print(exam_orders[exam])
|
||||||
|
# exam.exam_questions.set(exam_orders[exam])
|
||||||
|
# exam.save()
|
||||||
|
|
||||||
|
return response
|
||||||
|
else:
|
||||||
|
return super().form_invalid(form)
|
||||||
|
|
||||||
|
|
||||||
class SeriesUpdate(
|
class SeriesUpdate(
|
||||||
RevisionMixin, LoginRequiredMixin, AuthorOrCheckerRequiredMixin, UpdateView
|
RevisionMixin, LoginRequiredMixin, AuthorOrCheckerRequiredMixin, UpdateView
|
||||||
):
|
):
|
||||||
@@ -494,7 +611,9 @@ class AtlasCreateBase(RevisionMixin, LoginRequiredMixin):
|
|||||||
context = super(AtlasCreateBase, self).get_context_data(**kwargs)
|
context = super(AtlasCreateBase, self).get_context_data(**kwargs)
|
||||||
if self.request.POST:
|
if self.request.POST:
|
||||||
context["series_formset"] = SeriesFormSet(
|
context["series_formset"] = SeriesFormSet(
|
||||||
self.request.POST, self.request.FILES, queryset=Series.objects.filter(author__id=self.request.user.id)
|
self.request.POST,
|
||||||
|
self.request.FILES,
|
||||||
|
form_kwargs={"user": self.request.user},
|
||||||
)
|
)
|
||||||
context["casedifferential_formset"] = CaseDifferentialFormSet(
|
context["casedifferential_formset"] = CaseDifferentialFormSet(
|
||||||
self.request.POST, self.request.FILES
|
self.request.POST, self.request.FILES
|
||||||
@@ -503,7 +622,9 @@ class AtlasCreateBase(RevisionMixin, LoginRequiredMixin):
|
|||||||
context["casedifferential_formset"].full_clean()
|
context["casedifferential_formset"].full_clean()
|
||||||
else:
|
else:
|
||||||
# context["series_formset"] = SeriesFormSet(instance=Case.objects.filter(author__id=self.request.user.id), queryset=Series.objects.filter(author__id=self.request.user.id))
|
# context["series_formset"] = SeriesFormSet(instance=Case.objects.filter(author__id=self.request.user.id), queryset=Series.objects.filter(author__id=self.request.user.id))
|
||||||
context["series_formset"] = SeriesFormSet()
|
context["series_formset"] = SeriesFormSet(
|
||||||
|
form_kwargs={"user": self.request.user}
|
||||||
|
)
|
||||||
context["casedifferential_formset"] = CaseDifferentialFormSet()
|
context["casedifferential_formset"] = CaseDifferentialFormSet()
|
||||||
return context
|
return context
|
||||||
|
|
||||||
@@ -569,7 +690,10 @@ class AtlasUpdate(
|
|||||||
context = super(AtlasUpdate, self).get_context_data(**kwargs)
|
context = super(AtlasUpdate, self).get_context_data(**kwargs)
|
||||||
if self.request.POST:
|
if self.request.POST:
|
||||||
context["series_formset"] = SeriesFormSet(
|
context["series_formset"] = SeriesFormSet(
|
||||||
self.request.POST, self.request.FILES, instance=self.object, queryset=Series.objects.filter(author__id=self.request.user.id)
|
self.request.POST,
|
||||||
|
self.request.FILES,
|
||||||
|
instance=self.object,
|
||||||
|
form_kwargs={"user": self.request.user},
|
||||||
)
|
)
|
||||||
context["casedifferential_formset"] = CaseDifferentialFormSet(
|
context["casedifferential_formset"] = CaseDifferentialFormSet(
|
||||||
self.request.POST, self.request.FILES, instance=self.object
|
self.request.POST, self.request.FILES, instance=self.object
|
||||||
@@ -577,7 +701,9 @@ class AtlasUpdate(
|
|||||||
context["series_formset"].full_clean()
|
context["series_formset"].full_clean()
|
||||||
context["casedifferential_formset"].full_clean()
|
context["casedifferential_formset"].full_clean()
|
||||||
else:
|
else:
|
||||||
context["series_formset"] = SeriesFormSet(instance=self.object, queryset=Series.objects.filter(author__id=self.request.user.id))
|
context["series_formset"] = SeriesFormSet(
|
||||||
|
instance=self.object, form_kwargs={"user": self.request.user}
|
||||||
|
)
|
||||||
context["casedifferential_formset"] = CaseDifferentialFormSet(
|
context["casedifferential_formset"] = CaseDifferentialFormSet(
|
||||||
instance=self.object
|
instance=self.object
|
||||||
)
|
)
|
||||||
@@ -908,12 +1034,18 @@ def categories_list(request):
|
|||||||
def collection_index_view(request):
|
def collection_index_view(request):
|
||||||
collections = CaseCollection.objects.all()
|
collections = CaseCollection.objects.all()
|
||||||
|
|
||||||
return render(request, "atlas/collection_index_view.html", {"collections": collections})
|
return render(
|
||||||
|
request, "atlas/collection_index_view.html", {"collections": collections}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def collection_detail_view(request, pk):
|
def collection_detail_view(request, pk):
|
||||||
collection = get_object_or_404(CaseCollection, pk=pk)
|
collection = get_object_or_404(CaseCollection, pk=pk)
|
||||||
|
|
||||||
return render(request, "atlas/collection_detail_view.html", {"collection": collection})
|
return render(
|
||||||
|
request, "atlas/collection_detail_view.html", {"collection": collection}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def collection_case_view(request, pk, case_number):
|
def collection_case_view(request, pk, case_number):
|
||||||
collection = get_object_or_404(CaseCollection, pk=pk)
|
collection = get_object_or_404(CaseCollection, pk=pk)
|
||||||
@@ -926,5 +1058,15 @@ def collection_case_view(request, pk, case_number):
|
|||||||
previous = case_number > 0
|
previous = case_number > 0
|
||||||
next = case_number < (len(cases) - 1)
|
next = case_number < (len(cases) - 1)
|
||||||
|
|
||||||
|
return render(
|
||||||
return render(request, "atlas/collection_case_view.html", {"collection": collection, "case": case, "series_list": series_list, "case_number": case_number, "previous": previous, "next": next})
|
request,
|
||||||
|
"atlas/collection_case_view.html",
|
||||||
|
{
|
||||||
|
"collection": collection,
|
||||||
|
"case": case,
|
||||||
|
"series_list": series_list,
|
||||||
|
"case_number": case_number,
|
||||||
|
"previous": previous,
|
||||||
|
"next": next,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user