update rcr migration app

This commit is contained in:
Ross
2023-11-12 18:58:45 +00:00
parent 0fad480db4
commit b7fb96633e
10 changed files with 179 additions and 11 deletions
+1
View File
@@ -1059,4 +1059,5 @@ table .peninsula-trainee::before {
.form-control {
background-color: unset;
color: unset
}
+4 -2
View File
@@ -2,8 +2,10 @@ from django.contrib import admin
# Register your models here.
from rcr.models import Item, Category, Level
from rcr.models import Item, Category, Level, Outcome, OutcomeReason
admin.site.register(Item)
admin.site.register(Category)
admin.site.register(Level)
admin.site.register(Level)
admin.site.register(Outcome)
admin.site.register(OutcomeReason)
@@ -0,0 +1,38 @@
# Generated by Django 4.1.4 on 2023-11-12 18:53
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', '0002_alter_item_category_alter_item_level'),
]
operations = [
migrations.CreateModel(
name='Outcome',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255)),
],
),
migrations.AddField(
model_name='item',
name='assessed_by',
field=models.ManyToManyField(blank=True, to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='item',
name='assessed_date',
field=models.DateTimeField(auto_now=True),
),
migrations.AddField(
model_name='item',
name='outcome',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='rcr.outcome'),
),
]
@@ -0,0 +1,26 @@
# Generated by Django 4.1.4 on 2023-11-12 18:55
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('rcr', '0003_outcome_item_assessed_by_item_assessed_date_and_more'),
]
operations = [
migrations.CreateModel(
name='OutcomeReason',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('reason', models.CharField(max_length=255)),
],
),
migrations.AddField(
model_name='item',
name='outcome_reason',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='rcr.outcomereason'),
),
]
+24
View File
@@ -1,4 +1,6 @@
from django.conf import settings
from django.db import models
from django.urls import reverse
from django.utils.translation import gettext_lazy as _
# Create your models here.
@@ -20,12 +22,22 @@ class Item(models.Model):
level = models.ManyToManyField("Level", blank=True)
assessed_date = models.DateTimeField(auto_now=True)
assessed_by = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True)
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)
completed = models.BooleanField(default=False)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("rcr:radiology_detail_view", kwargs={"pk": self.pk})
class Category(models.Model):
name = models.CharField(max_length=255)
@@ -38,3 +50,15 @@ class Level(models.Model):
def __str__(self):
return self.name
class Outcome(models.Model):
name = models.CharField(max_length=255)
def __str__(self):
return self.name
class OutcomeReason(models.Model):
reason = models.CharField(max_length=255)
def __str__(self):
return self.reason
+21 -2
View File
@@ -2,6 +2,21 @@
{% block content %}
{% if completed %}
<h2>Completed items:</h2>
{% else %}
<h2>Items to assess:</h2>
{% endif %}
{% if items %}
<a href="{% url 'rcr:radiology_update_next_view' %}">Click to assess next item</a>
{% endif %}
<ul>
{% for item in items %}
@@ -10,10 +25,14 @@
<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.
{% endfor %}
</ul>
TEST
<a href="{% url 'rcr:radiology_index_view' %}">Todo</a>
<a href="{% url 'rcr:radiology_index_completed_view' %}">Done</a>
{% endblock %}
+16
View File
@@ -2,6 +2,22 @@
{% block content %}
<h2>Item: {{object.name}}</h2>
<p>Category: {{object.category}}</p>
<p>
Level(s):
{% for level in object.level.all %}
{{level}},
{% endfor %}
</p>
<p>
Completed: {{object.completed}}
</p>
<p><a href='{% url "rcr:radiology_update_view" object.pk %}'>Edit</a></p>
<details><summary> </summary>
</details>
{% endblock %}
+2
View File
@@ -5,6 +5,8 @@
{% comment %} {% if request.user.is_superuser %}
(<a href="{% url 'admin:auth_user_change' object.id %}" title="Edit the user using the admin interface">Admin Edit</a>)
{% endif %} {% endcomment %}
<p>Link: <a href="" title="Link to content on learning hub">click here</a></p>
<form method="post">{% csrf_token %}
{{ form|crispy }}
<input type="submit" value="Update">
+1
View File
@@ -12,6 +12,7 @@ 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/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"),
+46 -7
View File
@@ -1,6 +1,7 @@
from typing import Any
from django.db import models
from django.shortcuts import render
from django.http import Http404
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
@@ -12,18 +13,40 @@ from rcr.forms import ItemForm
def radiology_index(request):
items = Item.objects.all()
items = Item.objects.all().exclude(completed=True)
return render(
request,
"rcr/index.html",
{
"items": items
"items": items,
"completed": False
},
)
def radiology_index_completed(request):
items = Item.objects.filter(completed=True)
return render(
request,
"rcr/index.html",
{
"items": items,
"completed": True
},
)
class ItemUpdateView(UpdateView):
class ItemUpdateBase(UpdateView):
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.save()
form.instance.author.add(self.request.user.id)
return super().form_valid(form)
class ItemUpdateView(ItemUpdateBase):
model = Item
form_class = ItemForm
@@ -31,17 +54,33 @@ class ItemUpdateView(UpdateView):
#excludes = ["rcr_platform_id"]
#fields = ["category", "level"]
class ItemUpdateNextView(UpdateView):
class ItemUpdateNextView(ItemUpdateBase):
model = Item
form_class = ItemForm
template_name = "rcr/item_update.html"
def get(self, request, *args, **kwargs):
try:
self.object = self.get_object()
print("What", self.object)
except Http404:
print("YES")
# redirect here
return redirect("rcr:radiology_index_view")
context = self.get_context_data(object=self.object)
return self.render_to_response(context)
def get_object(self):
obj = Item.objects.filter(completed=False).first()
#~if not obj:
#~ return reverse_lazy("rcr:radiology_index_view")
print("HELLO", obj)
print(obj)
if not obj:
print("raise")
raise Http404
return obj
print("test")