diff --git a/rcr/forms.py b/rcr/forms.py index 7d2277c7..7d1add11 100644 --- a/rcr/forms.py +++ b/rcr/forms.py @@ -21,7 +21,7 @@ from django.contrib.auth.models import User class ItemForm(ModelForm): class Meta: model = Item - exclude = ["rcr_platform_id", "name", "assessed_by", "assessed_date"] + exclude = ["rcr_platform_id", "name", "assessed_by", "assessed_date", "assigned_to"] #fields = ["category", "level"] class AssessorAssignmentForm(Form): diff --git a/rcr/migrations/0006_item_outcome_free_text.py b/rcr/migrations/0006_item_outcome_free_text.py new file mode 100644 index 00000000..60b0bc40 --- /dev/null +++ b/rcr/migrations/0006_item_outcome_free_text.py @@ -0,0 +1,21 @@ +# Generated by Django 4.1.4 on 2023-12-13 20:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("rcr", "0005_item_assigned_to_alter_item_assessed_by"), + ] + + operations = [ + migrations.AddField( + model_name="item", + name="outcome_free_text", + field=models.CharField( + default="", + help_text="Reason for outcome (if not available above)", + max_length=255, + ), + ), + ] diff --git a/rcr/migrations/0007_alter_item_outcome_free_text.py b/rcr/migrations/0007_alter_item_outcome_free_text.py new file mode 100644 index 00000000..d9e9f057 --- /dev/null +++ b/rcr/migrations/0007_alter_item_outcome_free_text.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.4 on 2023-12-13 20:29 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rcr', '0006_item_outcome_free_text'), + ] + + operations = [ + migrations.AlterField( + model_name='item', + name='outcome_free_text', + field=models.CharField(blank=True, default='', help_text='Reason for outcome (if not available above)', max_length=255), + ), + ] diff --git a/rcr/migrations/0008_alter_item_options.py b/rcr/migrations/0008_alter_item_options.py new file mode 100644 index 00000000..23593cde --- /dev/null +++ b/rcr/migrations/0008_alter_item_options.py @@ -0,0 +1,17 @@ +# Generated by Django 4.1.4 on 2023-12-13 21:56 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('rcr', '0007_alter_item_outcome_free_text'), + ] + + operations = [ + migrations.AlterModelOptions( + name='item', + options={'ordering': ('pk',)}, + ), + ] diff --git a/rcr/models.py b/rcr/models.py index 9b2c5520..71915e9d 100644 --- a/rcr/models.py +++ b/rcr/models.py @@ -30,9 +30,13 @@ class Item(models.Model): 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) + outcome_free_text = models.CharField(max_length=255, help_text="Reason for outcome (if not available above)", default="", blank=True) completed = models.BooleanField(default=False) + class Meta: + ordering = ("pk",) + def __str__(self): return self.name diff --git a/rcr/templates/rcr/item_update.html b/rcr/templates/rcr/item_update.html index 1440b46c..9d8a25b7 100644 --- a/rcr/templates/rcr/item_update.html +++ b/rcr/templates/rcr/item_update.html @@ -10,6 +10,11 @@
{% csrf_token %} {{ form|crispy }} + + {% if skip %} + + {% endif %} +
diff --git a/rcr/urls.py b/rcr/urls.py index ef1d00d8..6a023709 100644 --- a/rcr/urls.py +++ b/rcr/urls.py @@ -18,5 +18,6 @@ urlpatterns = [ path("radiology/completed/user/", views.radiology_index_completed_by_user, name="radiology_index_completed_by_user_view"), path("radiology/item//", 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/next/update/skip/", views.ItemUpdateNextView.as_view(), name="radiology_update_next_skip_view"), path("radiology/item//update", views.ItemUpdateView.as_view(), name="radiology_update_view"), ] \ No newline at end of file diff --git a/rcr/views.py b/rcr/views.py index 64798bdc..01dc7fb5 100644 --- a/rcr/views.py +++ b/rcr/views.py @@ -57,7 +57,7 @@ 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) + items = Item.objects.filter(completed=True, assessed_by=user_pk).order_by("pk") assessor = User.objects.get(pk=user_pk) else: items = Item.objects.filter(completed=True) @@ -95,20 +95,33 @@ class ItemUpdateNextView(ItemUpdateBase): form_class = ItemForm template_name = "rcr/item_update.html" + skip = 0 + + def get_context_data(self, **kwargs: Any) -> dict[str, Any]: + context = super().get_context_data(**kwargs) + context["skip"] = self.skip + + return context def get(self, request, *args, **kwargs): try: + if "skip" in kwargs: + self.skip = kwargs["skip"] 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 self.skip < 1: + obj = Item.objects.filter(completed=False).order_by("pk").first() + else: + try: + obj = Item.objects.filter(completed=False)[self.skip] + except IndexError: + raise Http404 print("HELLO", obj) print(obj)