.
This commit is contained in:
+33
-3
@@ -1,11 +1,13 @@
|
||||
from django.contrib.admin import widgets
|
||||
from django.forms import (
|
||||
BaseInlineFormSet,
|
||||
Form,
|
||||
ModelForm,
|
||||
ModelMultipleChoiceField,
|
||||
ModelChoiceField,
|
||||
ChoiceField,
|
||||
CharField,
|
||||
modelformset_factory,
|
||||
)
|
||||
from django.forms import inlineformset_factory
|
||||
|
||||
@@ -122,6 +124,9 @@ class SeriesForm(ModelForm):
|
||||
js = ["jsi18n.js", "tesseract.min.js"]
|
||||
|
||||
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.
|
||||
@@ -143,7 +148,12 @@ class SeriesForm(ModelForm):
|
||||
|
||||
ModelForm.__init__(self, *args, **kwargs)
|
||||
|
||||
if self.user.groups.filter(name="atlas_editor").exists():
|
||||
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(
|
||||
required=False,
|
||||
@@ -216,6 +226,18 @@ class CaseForm(ModelForm):
|
||||
ModelForm.__init__(self, *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:
|
||||
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(
|
||||
Case,
|
||||
Series.case.through,
|
||||
formset=BaseSeriesFormSet,
|
||||
exclude=[],
|
||||
can_delete=True,
|
||||
extra=0,
|
||||
extra=1,
|
||||
max_num=10,
|
||||
field_classes="testing",
|
||||
)
|
||||
|
||||
|
||||
@@ -309,5 +340,4 @@ SeriesImageFormSet = inlineformset_factory(
|
||||
can_delete=True,
|
||||
extra=0,
|
||||
max_num=2000,
|
||||
field_classes="testing",
|
||||
)
|
||||
|
||||
@@ -400,6 +400,10 @@ class Series(models.Model):
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.pk}:{self.description}"
|
||||
|
||||
|
||||
def get_full_str(self):
|
||||
if self.case:
|
||||
case_id = ", ".format([case.pk for case in self.case.all()])
|
||||
# case_id = self.case.pk
|
||||
|
||||
@@ -1,7 +1,19 @@
|
||||
{% extends 'atlas/base.html' %}
|
||||
|
||||
{% block content %}
|
||||
<h2>Case {{case_number|add:1}}</h2>
|
||||
<h2>Case {{case_number|add:1}}
|
||||
|
||||
{% 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 %}
|
||||
@@ -21,6 +33,16 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% if collection.show_discussion and case.discussion%}
|
||||
<details>
|
||||
<summary>
|
||||
Discussion:
|
||||
</summary>
|
||||
<div>
|
||||
{{case.discussion}}
|
||||
</div>
|
||||
</details>
|
||||
{% endif %}
|
||||
|
||||
<div>
|
||||
{% if previous %}
|
||||
@@ -36,9 +58,17 @@ Return to <a href='{{collection.get_absolute_url}}'>collection</a>
|
||||
{% block js %}
|
||||
<script type="text/javascript">
|
||||
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 () {
|
||||
@@ -46,7 +76,6 @@ Return to <a href='{{collection.get_absolute_url}}'>collection</a>
|
||||
window.loadDicomViewer(window.images[0])
|
||||
}, 500);
|
||||
})
|
||||
|
||||
</script>
|
||||
|
||||
{% endblock js %}
|
||||
@@ -4,7 +4,11 @@
|
||||
<h2>{{collection.name}}
|
||||
<ul>
|
||||
{% 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 %}
|
||||
|
||||
+14
-3
@@ -363,6 +363,11 @@ class SeriesCreate(RevisionMixin, LoginRequiredMixin, CreateView):
|
||||
|
||||
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):
|
||||
context = super(SeriesCreate, self).get_context_data(**kwargs)
|
||||
|
||||
@@ -416,6 +421,11 @@ class SeriesUpdate(
|
||||
context["image_formset"] = SeriesImageFormSet(instance=self.object)
|
||||
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):
|
||||
|
||||
self.object = form.save(commit=False)
|
||||
@@ -484,7 +494,7 @@ class AtlasCreateBase(RevisionMixin, LoginRequiredMixin):
|
||||
context = super(AtlasCreateBase, self).get_context_data(**kwargs)
|
||||
if self.request.POST:
|
||||
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(
|
||||
self.request.POST, self.request.FILES
|
||||
@@ -492,6 +502,7 @@ class AtlasCreateBase(RevisionMixin, LoginRequiredMixin):
|
||||
context["series_formset"].full_clean()
|
||||
context["casedifferential_formset"].full_clean()
|
||||
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["casedifferential_formset"] = CaseDifferentialFormSet()
|
||||
return context
|
||||
@@ -558,7 +569,7 @@ class AtlasUpdate(
|
||||
context = super(AtlasUpdate, self).get_context_data(**kwargs)
|
||||
if self.request.POST:
|
||||
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(
|
||||
self.request.POST, self.request.FILES, instance=self.object
|
||||
@@ -566,7 +577,7 @@ class AtlasUpdate(
|
||||
context["series_formset"].full_clean()
|
||||
context["casedifferential_formset"].full_clean()
|
||||
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(
|
||||
instance=self.object
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user