update rcr migration app
This commit is contained in:
@@ -1059,4 +1059,5 @@ table .peninsula-trainee::before {
|
||||
|
||||
.form-control {
|
||||
background-color: unset;
|
||||
color: unset
|
||||
}
|
||||
+4
-2
@@ -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'),
|
||||
),
|
||||
]
|
||||
@@ -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
|
||||
@@ -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 %}
|
||||
@@ -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 %}
|
||||
@@ -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">
|
||||
|
||||
@@ -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
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user