upgrade rcr migration

This commit is contained in:
Ross
2023-12-12 21:57:21 +00:00
parent e1d9f1ecad
commit 1936a66d7f
13 changed files with 130 additions and 12 deletions
+1 -1
View File
@@ -34,6 +34,7 @@ from django.utils.html import format_html
from easy_thumbnails.files import get_thumbnailer
from easy_thumbnails.exceptions import InvalidImageFormatError
import pydicom
import dicognito.anonymizer
@@ -1282,7 +1283,6 @@ USER_EXAM_TYPES = (
# ("CaseCollection", "user_casecollection_exams"),
)
class UserProfile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
supervisor = models.ForeignKey(
+1
View File
@@ -50,6 +50,7 @@ INSTALLED_APPS = [
"wally",
"atlas",
"rcr",
"rota",
"reversion",
"debug_toolbar",
"django_tables2",
+1
View File
@@ -65,6 +65,7 @@ urlpatterns = [
path("generic/", include("generic.urls"), name="generic"),
path("atlas/", include("atlas.urls"), name="atlas"),
path("rcr/", include("rcr.urls"), name="rcr"),
path("rota/", include("rota.urls"), name="rota"),
path(
"accounts/check_users", views.accounts_check_users, name="accounts_check_users"
),
+5 -1
View File
@@ -16,9 +16,13 @@ from django.forms import (
)
from rcr.models import Item, Category, Level
from django.contrib.auth.models import User
class ItemForm(ModelForm):
class Meta:
model = Item
exclude = ["rcr_platform_id", "name", "assessed_by", "assessed_date"]
#fields = ["category", "level"]
#fields = ["category", "level"]
class AssessorAssignmentForm(Form):
items = ModelMultipleChoiceField(queryset=Item.objects.all())
@@ -0,0 +1,26 @@
# Generated by Django 4.1.4 on 2023-12-12 20:11
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('rcr', '0004_outcomereason_item_outcome_reason'),
]
operations = [
migrations.AddField(
model_name='item',
name='assigned_to',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='assigned_items', to=settings.AUTH_USER_MODEL),
),
migrations.AlterField(
model_name='item',
name='assessed_by',
field=models.ManyToManyField(blank=True, related_name='assessed_items', to=settings.AUTH_USER_MODEL),
),
]
+3 -1
View File
@@ -24,7 +24,9 @@ class Item(models.Model):
assessed_date = models.DateTimeField(auto_now=True)
assessed_by = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True)
assessed_by = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name="assessed_items")
assigned_to = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, on_delete=models.SET_NULL, related_name="assigned_items")
outcome = models.ForeignKey("Outcome", on_delete=models.SET_NULL, blank=True, null=True)
outcome_reason = models.ForeignKey("OutcomeReason", on_delete=models.SET_NULL, blank=True, null=True)
@@ -0,0 +1,14 @@
{% extends 'rcr/base.html' %}
{% block content %}
<h2>Items assigned:</h2>
<form action="" method="post" enctype="multipart/form-data" id="assessor-assignment-form">
{{assessor_assignment_form}}
<input type="submit" class="submit-button" value="Submit" name="submit">
</form>
{% endblock %}
+17
View File
@@ -0,0 +1,17 @@
{% extends 'rcr/base.html' %}
{% block content %}
<h2>Assessors:</h2>
<ul>
{% for assessor in assessors %}
<li>
{{assessor}} <a href='{% url "rcr:radiology_index_completed_by_user_view" assessor.pk %}'>(items assessed)</a> <a href='{% url "rcr:radiology_assessor_assignment_view" assessor.pk %}'>(items assigned)</a>
</li>
{% endfor %}
</ul>
{% endblock %}
+3
View File
@@ -79,6 +79,9 @@
<span id="" class="top-bar-link">
<a href="{% url 'rcr:radiology_index_view' %}">Index</a>
</span>
<span id="" class="top-bar-link">
<a href="{% url 'rcr:radiology_assessors_view' %}">Assessors</a>
</span>
{% if request.user.is_staff %}
<span id="admin-link" class="top-bar-link">
<a href="{% url 'admin:index' %}">Admin</a>
+9 -4
View File
@@ -3,6 +3,13 @@
{% block content %}
{% if assessor %}
Assessor: {{assessor}}
{% endif %}
{% if completed %}
<h2>Completed items:</h2>
{% else %}
@@ -20,10 +27,8 @@
<ul>
{% for item in items %}
<li>
{{item.name}} / {{item.rcr_platform_id}}<br />
<a href="{% url 'rcr:radiology_detail_view' item.pk %}">view</a>
<a href="{% url 'rcr:radiology_update_view' item.pk %}">edit</a>
<li> {{forloop.counter}}:
{{item.name}} / {{item.rcr_platform_id}} <a href="{% url 'rcr:radiology_detail_view' item.pk %}">view</a> <a href="{% url 'rcr:radiology_update_view' item.pk %}">edit</a>
</li>
{% empty %}
No items found.
+7
View File
@@ -11,6 +11,13 @@
{% endfor %}
</p>
<p>
Outcome: {{object.outcome}}
</p>
<p>
Outcome reason: {{object.reason}}
</p>
<p>
Date assessed: {{object.assessed_date}}
</p>
+3
View File
@@ -13,6 +13,9 @@ app_name = "rcr"
urlpatterns = [
path("radiology/", views.radiology_index, name="radiology_index_view"),
path("radiology/completed", views.radiology_index_completed, name="radiology_index_completed_view"),
path("radiology/assessors", views.radiology_assessors, name="radiology_assessors_view"),
path("radiology/assessors/<int:assessor_pk>/assignment", views.radiology_assessor_assignment, name="radiology_assessor_assignment_view"),
path("radiology/completed/user/<int:user_pk>", views.radiology_index_completed_by_user, name="radiology_index_completed_by_user_view"),
path("radiology/item/<int:pk>/", views.ItemDetailView.as_view(), name="radiology_detail_view"),
path("radiology/item/next/update", views.ItemUpdateNextView.as_view(), name="radiology_update_next_view"),
path("radiology/item/<int:pk>/update", views.ItemUpdateView.as_view(), name="radiology_update_view"),
+40 -5
View File
@@ -5,9 +5,13 @@ from django.shortcuts import redirect, render
from django.urls import reverse_lazy
from django.views.generic.edit import UpdateView
from django.views.generic.detail import DetailView
from django.shortcuts import get_object_or_404
from django.conf import settings
from django.contrib.auth.models import User
from rcr.models import Item
from rcr.forms import ItemForm
from rcr.forms import AssessorAssignmentForm, ItemForm
# Create your views here.
@@ -24,16 +28,47 @@ def radiology_index(request):
},
)
def radiology_index_completed(request):
def radiology_assessor_assignment(request, assessor_pk: int):
assessor_assignment_form = AssessorAssignmentForm()
items = Item.objects.filter(completed=True)
return render(
request,
"rcr/assessor_assignment_form.html",
{
"assessor_assignment_form": assessor_assignment_form,
},
)
def radiology_assessors(request):
assessors = User.objects.filter(groups__name="rcr_radiology_assessor")
return render(
request,
"rcr/assessors.html",
{
"assessors": assessors
},
)
def radiology_index_completed_by_user(request, user_pk: int):
return radiology_index_completed(request, user_pk = user_pk)
def radiology_index_completed(request, user_pk=None):
assessor = None
if user_pk is not None:
items = Item.objects.filter(completed=True, assessed_by=user_pk)
assessor = User.objects.get(pk=user_pk)
else:
items = Item.objects.filter(completed=True)
return render(
request,
"rcr/index.html",
{
"items": items,
"completed": True
"completed": True,
"assessor": assessor
},
)
@@ -43,7 +78,7 @@ class ItemUpdateBase(UpdateView):
self.object = form.save(commit=False)
self.object.save()
form.instance.author.add(self.request.user.id)
form.instance.assessed_by.add(self.request.user.id)
return super().form_valid(form)
class ItemUpdateView(ItemUpdateBase):