.
This commit is contained in:
+33
-3
@@ -1,11 +1,13 @@
|
|||||||
from django.contrib.admin import widgets
|
from django.contrib.admin import widgets
|
||||||
from django.forms import (
|
from django.forms import (
|
||||||
|
BaseInlineFormSet,
|
||||||
Form,
|
Form,
|
||||||
ModelForm,
|
ModelForm,
|
||||||
ModelMultipleChoiceField,
|
ModelMultipleChoiceField,
|
||||||
ModelChoiceField,
|
ModelChoiceField,
|
||||||
ChoiceField,
|
ChoiceField,
|
||||||
CharField,
|
CharField,
|
||||||
|
modelformset_factory,
|
||||||
)
|
)
|
||||||
from django.forms import inlineformset_factory
|
from django.forms import inlineformset_factory
|
||||||
|
|
||||||
@@ -122,6 +124,9 @@ class SeriesForm(ModelForm):
|
|||||||
js = ["jsi18n.js", "tesseract.min.js"]
|
js = ["jsi18n.js", "tesseract.min.js"]
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
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"):
|
if kwargs.get("instance"):
|
||||||
# We get the 'initial' keyword argument or initialize it
|
# We get the 'initial' keyword argument or initialize it
|
||||||
# as a dict if it didn't exist.
|
# as a dict if it didn't exist.
|
||||||
@@ -143,7 +148,12 @@ class SeriesForm(ModelForm):
|
|||||||
|
|
||||||
ModelForm.__init__(self, *args, **kwargs)
|
ModelForm.__init__(self, *args, **kwargs)
|
||||||
|
|
||||||
|
if self.user.groups.filter(name="atlas_editor").exists():
|
||||||
case_queryset = Case.objects.all()
|
case_queryset = Case.objects.all()
|
||||||
|
else:
|
||||||
|
case_queryset = Case.objects.filter(
|
||||||
|
author__id=self.user.id
|
||||||
|
) #| Case.objects.filter(open_access=True)
|
||||||
|
|
||||||
self.fields["case"] = ModelMultipleChoiceField(
|
self.fields["case"] = ModelMultipleChoiceField(
|
||||||
required=False,
|
required=False,
|
||||||
@@ -216,6 +226,18 @@ 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 =
|
||||||
|
|
||||||
|
def get_queryset(self, request):
|
||||||
|
return (
|
||||||
|
super()
|
||||||
|
.get_queryset(request)
|
||||||
|
.prefetch_related(
|
||||||
|
"condition", "subspecialty", "pathological_process", "series"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Case
|
model = Case
|
||||||
@@ -291,14 +313,23 @@ CaseDifferentialFormSet = inlineformset_factory(
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
class BaseSeriesFormSet(BaseInlineFormSet):
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(BaseSeriesFormSet, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
self.queryset = Series.case.through.objects.filter(series__author__id=99)
|
||||||
|
|
||||||
|
#for form in self.forms:
|
||||||
|
# form.fields['series'].queryset = series_queryset
|
||||||
|
|
||||||
SeriesFormSet = inlineformset_factory(
|
SeriesFormSet = inlineformset_factory(
|
||||||
Case,
|
Case,
|
||||||
Series.case.through,
|
Series.case.through,
|
||||||
|
formset=BaseSeriesFormSet,
|
||||||
exclude=[],
|
exclude=[],
|
||||||
can_delete=True,
|
can_delete=True,
|
||||||
extra=0,
|
extra=1,
|
||||||
max_num=10,
|
max_num=10,
|
||||||
field_classes="testing",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -309,5 +340,4 @@ SeriesImageFormSet = inlineformset_factory(
|
|||||||
can_delete=True,
|
can_delete=True,
|
||||||
extra=0,
|
extra=0,
|
||||||
max_num=2000,
|
max_num=2000,
|
||||||
field_classes="testing",
|
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -400,6 +400,10 @@ class Series(models.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
return f"{self.pk}:{self.description}"
|
||||||
|
|
||||||
|
|
||||||
|
def get_full_str(self):
|
||||||
if self.case:
|
if self.case:
|
||||||
case_id = ", ".format([case.pk for case in self.case.all()])
|
case_id = ", ".format([case.pk for case in self.case.all()])
|
||||||
# case_id = self.case.pk
|
# case_id = self.case.pk
|
||||||
|
|||||||
@@ -1,9 +1,21 @@
|
|||||||
{% extends 'atlas/base.html' %}
|
{% extends 'atlas/base.html' %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h2>Case {{case_number|add:1}}</h2>
|
<h2>Case {{case_number|add:1}}
|
||||||
|
|
||||||
<div class="pre-whitespace multi-image-block">
|
{% if collection.show_title %}
|
||||||
|
: {{case.title}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
{% if collection.show_description and case.description%}
|
||||||
|
<div>
|
||||||
|
Description: {{case.description}}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="pre-whitespace multi-image-block">
|
||||||
{% for series in series_list %}
|
{% for series in series_list %}
|
||||||
<span class="series-block">
|
<span class="series-block">
|
||||||
<span>
|
<span>
|
||||||
@@ -14,31 +26,49 @@
|
|||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<div id="single-dicom-viewer" class="dicom-viewer" data-images="" data-annotations=''>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
|
||||||
<div id="single-dicom-viewer" class="dicom-viewer" data-images="" data-annotations=''>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
{% if collection.show_discussion and case.discussion%}
|
||||||
|
<details>
|
||||||
|
<summary>
|
||||||
|
Discussion:
|
||||||
|
</summary>
|
||||||
|
<div>
|
||||||
|
{{case.discussion}}
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
{% if previous %}
|
{% if previous %}
|
||||||
<a href="{% url 'atlas:collection_case_view' pk=collection.pk case_number=case_number|add:-1 %}">Previous</a>
|
<a href="{% url 'atlas:collection_case_view' pk=collection.pk case_number=case_number|add:-1 %}">Previous</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if next %}
|
{% if next %}
|
||||||
<a href="{% url 'atlas:collection_case_view' pk=collection.pk case_number=case_number|add:1 %}">Next</a>
|
<a href="{% url 'atlas:collection_case_view' pk=collection.pk case_number=case_number|add:1 %}">Next</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<br/>
|
<br />
|
||||||
Return to <a href='{{collection.get_absolute_url}}'>collection</a>
|
Return to <a href='{{collection.get_absolute_url}}'>collection</a>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block js %}
|
{% block js %}
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
window.images = {
|
window.images = {
|
||||||
{% for series in series_list %}
|
{
|
||||||
{{forloop.counter0}} : ["{{ series.get_image_url_array_not_json }}"],
|
%
|
||||||
{% endfor %}
|
for series in series_list %
|
||||||
|
} {
|
||||||
|
{
|
||||||
|
forloop.counter0
|
||||||
|
}
|
||||||
|
}: ["{{ series.get_image_url_array_not_json }}"],
|
||||||
|
{
|
||||||
|
% endfor %
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
@@ -46,7 +76,6 @@ Return to <a href='{{collection.get_absolute_url}}'>collection</a>
|
|||||||
window.loadDicomViewer(window.images[0])
|
window.loadDicomViewer(window.images[0])
|
||||||
}, 500);
|
}, 500);
|
||||||
})
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{% endblock js %}
|
{% endblock js %}
|
||||||
@@ -4,7 +4,11 @@
|
|||||||
<h2>{{collection.name}}
|
<h2>{{collection.name}}
|
||||||
<ul>
|
<ul>
|
||||||
{% for case in collection.cases.all %}
|
{% for case in collection.cases.all %}
|
||||||
<li><a href="{% url 'atlas:collection_case_view' pk=collection.pk case_number=forloop.counter0 %}">Case {{forloop.counter}}</a></li>
|
<li><a href="{% url 'atlas:collection_case_view' pk=collection.pk case_number=forloop.counter0 %}">Case {{forloop.counter}}</a>
|
||||||
|
{% if collection.show_title %}
|
||||||
|
: {{case.title}}
|
||||||
|
{% endif %}
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
+14
-3
@@ -363,6 +363,11 @@ class SeriesCreate(RevisionMixin, LoginRequiredMixin, CreateView):
|
|||||||
|
|
||||||
return initial
|
return initial
|
||||||
|
|
||||||
|
def get_form_kwargs(self):
|
||||||
|
kwargs = super(SeriesCreate, self).get_form_kwargs()
|
||||||
|
kwargs.update({"user": self.request.user})
|
||||||
|
return kwargs
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super(SeriesCreate, self).get_context_data(**kwargs)
|
context = super(SeriesCreate, self).get_context_data(**kwargs)
|
||||||
|
|
||||||
@@ -416,6 +421,11 @@ class SeriesUpdate(
|
|||||||
context["image_formset"] = SeriesImageFormSet(instance=self.object)
|
context["image_formset"] = SeriesImageFormSet(instance=self.object)
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
def get_form_kwargs(self):
|
||||||
|
kwargs = super(SeriesUpdate, self).get_form_kwargs()
|
||||||
|
kwargs.update({"user": self.request.user})
|
||||||
|
return kwargs
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
|
|
||||||
self.object = form.save(commit=False)
|
self.object = form.save(commit=False)
|
||||||
@@ -484,7 +494,7 @@ 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
|
self.request.POST, self.request.FILES, queryset=Series.objects.filter(author__id=self.request.user.id)
|
||||||
)
|
)
|
||||||
context["casedifferential_formset"] = CaseDifferentialFormSet(
|
context["casedifferential_formset"] = CaseDifferentialFormSet(
|
||||||
self.request.POST, self.request.FILES
|
self.request.POST, self.request.FILES
|
||||||
@@ -492,6 +502,7 @@ class AtlasCreateBase(RevisionMixin, LoginRequiredMixin):
|
|||||||
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=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()
|
||||||
context["casedifferential_formset"] = CaseDifferentialFormSet()
|
context["casedifferential_formset"] = CaseDifferentialFormSet()
|
||||||
return context
|
return context
|
||||||
@@ -558,7 +569,7 @@ 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
|
self.request.POST, self.request.FILES, instance=self.object, queryset=Series.objects.filter(author__id=self.request.user.id)
|
||||||
)
|
)
|
||||||
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
|
||||||
@@ -566,7 +577,7 @@ 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)
|
context["series_formset"] = SeriesFormSet(instance=self.object, queryset=Series.objects.filter(author__id=self.request.user.id))
|
||||||
context["casedifferential_formset"] = CaseDifferentialFormSet(
|
context["casedifferential_formset"] = CaseDifferentialFormSet(
|
||||||
instance=self.object
|
instance=self.object
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user