Skip to content

Commit

Permalink
order tables
Browse files Browse the repository at this point in the history
  • Loading branch information
nicokant committed Jan 15, 2025
1 parent 51c7806 commit 92b9293
Show file tree
Hide file tree
Showing 7 changed files with 271 additions and 10 deletions.
77 changes: 74 additions & 3 deletions src/genlab_bestilling/tables.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,40 @@
import django_tables2 as tables

from .models import Genrequest, Order, Sample
from .models import (
AnalysisOrder,
EquipmentOrder,
ExtractionOrder,
Genrequest,
Order,
Sample,
)


class OrderTable(tables.Table):
polymorphic_ctype = tables.Column(verbose_name="Type")
class BaseOrderTable(tables.Table):
id = tables.Column(linkify=True, orderable=False, empty_values=())

class Meta:
model = Order
fields = (
"name",
"status",
"created_at",
"last_modified_at",
)
sequence = (
"id",
"name",
"status",
)
empty_text = "No Orders"

def render_id(self, record):
return str(record)


class OrderTable(BaseOrderTable):
polymorphic_ctype = tables.Column(verbose_name="Type")

class Meta:
model = Order
fields = (
Expand Down Expand Up @@ -103,3 +131,46 @@ class Meta:
attrs = {"class": "w-full table-auto tailwind-table table-sm"}

empty_text = "No Samples"


class AnalysisOrderTable(BaseOrderTable):
id = tables.Column(
linkify=True,
orderable=False,
empty_values=(),
)

class Meta(BaseOrderTable.Meta):
model = AnalysisOrder
fields = BaseOrderTable.Meta.fields + ("return_samples",)


class ExtractionOrderTable(BaseOrderTable):
id = tables.Column(
linkify=True,
orderable=False,
empty_values=(),
)

class Meta(BaseOrderTable.Meta):
model = ExtractionOrder
fields = BaseOrderTable.Meta.fields + (
"species",
"sample_types",
"internal_status",
"needs_guid",
"return_samples",
"pre_isolated",
)


class EquipmentOrderTable(BaseOrderTable):
id = tables.Column(
linkify=True,
orderable=False,
empty_values=(),
)

class Meta(BaseOrderTable.Meta):
model = EquipmentOrder
fields = BaseOrderTable.Meta.fields + ("needs_guid", "sample_types")
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{% extends "genlab_bestilling/base_filter.html" %}
{% load neapolitan %}
{% load render_table from django_tables2 %}

{% block page-title %}Analysis Orders relative to {{ genrequest }}{% endblock page-title %}
{% block page-inner %}
<div class="flex gap-5 mb-5">
<a class="btn bg-primary" href="{% url 'genrequest-detail' pk=genrequest.id %}"><i class="fas fa-arrow-left"></i> back</a>
<a class="btn bg-primary" href="{% url 'genrequest-analysis-create' genrequest_id=genrequest.id %}"><i class="fas fa-plus"></i> Equipment order</a>
</div>
{% endblock page-inner %}
18 changes: 18 additions & 0 deletions src/genlab_bestilling/templates/genlab_bestilling/base_filter.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{% extends "base.html" %}
{% load crispy_forms_tags %}
{% load render_table from django_tables2 %}

{% block content %}
<h3 class="text-4xl mb-5">{% block page-title %}{% endblock page-title %}</h3>
{% block page-inner %}{% endblock page-inner %}

<form method="get" class="py-3 px-4 border mb-3 ">
<div class="flex flex-wrap gap-4">
{{ filter.form | crispy }}
</div>
{% csrf_token %}
<button class="btn bg-primary" type="submit">Search</button>
</form>

{% render_table table %}
{% endblock %}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{% extends "genlab_bestilling/base_filter.html" %}
{% load neapolitan %}
{% load render_table from django_tables2 %}

{% block page-title %}Equipment Orders relative to {{ genrequest }}{% endblock page-title %}
{% block page-inner %}
<div class="flex gap-5 mb-5">
<a class="btn bg-primary" href="{% url 'genrequest-detail' pk=genrequest.id %}"><i class="fas fa-arrow-left"></i> back</a>
<a class="btn bg-primary" href="{% url 'genrequest-equipment-create' genrequest_id=genrequest.id %}"><i class="fas fa-plus"></i> Equipment order</a>
</div>
{% endblock page-inner %}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{% extends "genlab_bestilling/base_filter.html" %}
{% load neapolitan %}
{% load render_table from django_tables2 %}

{% block page-title %}Extraction Orders relative to {{ genrequest }}{% endblock page-title %}
{% block page-inner %}
<div class="flex gap-5 mb-5">
<a class="btn bg-primary" href="{% url 'genrequest-detail' pk=genrequest.id %}"><i class="fas fa-arrow-left"></i> back</a>
<a class="btn bg-primary" href="{% url 'genrequest-extraction-create' genrequest_id=genrequest.id %}"><i class="fas fa-plus"></i> Equipment order</a>
</div>
{% endblock page-inner %}
18 changes: 18 additions & 0 deletions src/genlab_bestilling/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,12 @@
ExtractionOrderCreateView,
ExtractionOrderDetailView,
ExtractionOrderEditView,
GenrequestAnalysisOrderListView,
GenrequestCreateView,
GenrequestDeleteView,
GenrequestDetailView,
GenrequestEquipmentOrderListView,
GenrequestExtractionOrderListView,
GenrequestListView,
GenrequestOrderDeleteView,
GenrequestOrderListView,
Expand Down Expand Up @@ -58,6 +61,21 @@
GenrequestOrderListView.as_view(),
name="genrequest-order-list",
),
path(
"genrequests/<int:genrequest_id>/orders/equipment/",
GenrequestEquipmentOrderListView.as_view(),
name="genrequest-equipment-list",
),
path(
"genrequests/<int:genrequest_id>/orders/extraction/",
GenrequestExtractionOrderListView.as_view(),
name="genrequest-extraction-list",
),
path(
"genrequests/<int:genrequest_id>/orders/analysis/",
GenrequestAnalysisOrderListView.as_view(),
name="genrequest-analysis-list",
),
path(
"genrequests/<int:genrequest_id>/orders/<int:pk>/clone/",
CloneOrderActionView.as_view(),
Expand Down
135 changes: 128 additions & 7 deletions src/genlab_bestilling/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
UpdateView,
)
from django.views.generic.detail import SingleObjectMixin
from django_tables2.views import SingleTableView
from django_filters.views import FilterView
from django_tables2.views import SingleTableMixin, SingleTableView
from formset.views import (
BulkEditCollectionView,
FormViewMixin,
Expand All @@ -28,6 +29,7 @@
from view_breadcrumbs import BaseBreadcrumbMixin

from .api.serializers import AnalysisSerializer, ExtractionSerializer
from .filters import OrderAnalysisFilter, OrderEquipmentFilter
from .forms import (
ActionForm,
AnalysisOrderForm,
Expand All @@ -48,7 +50,15 @@
Sample,
SampleMarkerAnalysis,
)
from .tables import AnalysisSampleTable, GenrequestTable, OrderTable, SampleTable
from .tables import (
AnalysisOrderTable,
AnalysisSampleTable,
EquipmentOrderTable,
ExtractionOrderTable,
GenrequestTable,
OrderTable,
SampleTable,
)


class ActionView(FormView):
Expand Down Expand Up @@ -251,6 +261,87 @@ def get_queryset(self):
return super().get_queryset().select_related("genrequest", "polymorphic_ctype")


class GenrequestEquipmentOrderListView(
GenrequestNestedMixin, SingleTableMixin, FilterView
):
model = EquipmentOrder
table_class = EquipmentOrderTable
filterset_class = OrderEquipmentFilter

@cached_property
def gen_crumbs(self):
return [
(
"Orders",
reverse(
"genrequest-order-list",
kwargs={"genrequest_id": self.kwargs["genrequest_id"]},
),
),
(
self.model._meta.verbose_name_plural,
"",
),
]

def get_queryset(self):
return super().get_queryset().select_related("genrequest")


class GenrequestExtractionOrderListView(
GenrequestNestedMixin, SingleTableMixin, FilterView
):
model = ExtractionOrder
table_class = ExtractionOrderTable
filterset_class = OrderEquipmentFilter

@cached_property
def gen_crumbs(self):
return [
(
"Orders",
reverse(
"genrequest-order-list",
kwargs={"genrequest_id": self.kwargs["genrequest_id"]},
),
),
(
self.model._meta.verbose_name_plural,
"",
),
]

def get_queryset(self):
return super().get_queryset().select_related("genrequest")


class GenrequestAnalysisOrderListView(
GenrequestNestedMixin, SingleTableMixin, FilterView
):
model = AnalysisOrder
table_class = AnalysisOrderTable
filterset_class = OrderAnalysisFilter

@cached_property
def gen_crumbs(self):
return [
(
"Orders",
reverse(
"genrequest-order-list",
kwargs={"genrequest_id": self.kwargs["genrequest_id"]},
),
),
(
self.model._meta.verbose_name_plural,
"",
),
]

def get_queryset(self):
return super().get_queryset().select_related("genrequest")


class EquipmentOrderDetailView(GenrequestNestedMixin, DetailView):
model = EquipmentOrder

Expand All @@ -264,7 +355,13 @@ def gen_crumbs(self):
kwargs={"genrequest_id": self.kwargs["genrequest_id"]},
),
),
(self.model._meta.verbose_name_plural, ""),
(
self.model._meta.verbose_name_plural,
reverse(
"genrequest-equipment-list",
kwargs={"genrequest_id": self.kwargs["genrequest_id"]},
),
),
(str(self.object), ""),
]

Expand All @@ -282,7 +379,13 @@ def gen_crumbs(self):
kwargs={"genrequest_id": self.kwargs["genrequest_id"]},
),
),
(self.model._meta.verbose_name_plural, ""),
(
self.model._meta.verbose_name_plural,
reverse(
"genrequest-analysis-list",
kwargs={"genrequest_id": self.kwargs["genrequest_id"]},
),
),
(str(self.object), ""),
]

Expand All @@ -308,7 +411,13 @@ def gen_crumbs(self):
kwargs={"genrequest_id": self.kwargs["genrequest_id"]},
),
),
(self.model._meta.verbose_name_plural, ""),
(
self.model._meta.verbose_name_plural,
reverse(
"genrequest-extraction-list",
kwargs={"genrequest_id": self.kwargs["genrequest_id"]},
),
),
(str(self.object), ""),
]

Expand All @@ -327,7 +436,13 @@ def gen_crumbs(self):
kwargs={"genrequest_id": self.kwargs["genrequest_id"]},
),
),
(self.model._meta.verbose_name_plural, ""),
(
self.model._meta.verbose_name_plural,
reverse(
f"genrequest-{self.object.get_type()}-list",
kwargs={"genrequest_id": self.kwargs["genrequest_id"]},
),
),
(str(self.object), self.object.get_absolute_url()),
("Delete", ""),
]
Expand Down Expand Up @@ -436,7 +551,13 @@ def gen_crumbs(self):
kwargs={"genrequest_id": self.kwargs["genrequest_id"]},
),
),
(self.model._meta.verbose_name_plural, ""),
(
self.model._meta.verbose_name_plural,
reverse(
f"genrequest-{self.object.get_type()}-list",
kwargs={"genrequest_id": self.kwargs["genrequest_id"]},
),
),
(str(self.object), self.object.get_absolute_url()),
("Update", ""),
]
Expand Down

0 comments on commit 92b9293

Please sign in to comment.