Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
erikvw committed Nov 15, 2024
1 parent 873a60f commit ed61f4e
Show file tree
Hide file tree
Showing 100 changed files with 7,401 additions and 9,403 deletions.
7 changes: 1 addition & 6 deletions edc_pharmacy/admin/__init__.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,4 @@
from .autocomplete_admin import (
LabelSpecificationProxyAdmin,
RegisteredSubjectProxyAdmin,
SiteProxyAdmin,
VisitScheduleAdmin,
)
from .autocomplete_admin import SiteProxyAdmin, VisitScheduleAdmin
from .dispensing_history_admin import DispensingHistoryAdmin
from .medication import (
AssignmentAdmin,
Expand Down
11 changes: 8 additions & 3 deletions edc_pharmacy/admin/actions/__init__.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
from .allocate_stock_to_subject import allocate_stock_to_subject
from .confirm_stock import confirm_repacked_stock_action, confirm_stock_action
from .create_stock_request_items import create_stock_request_items_action
from .confirm_stock import (
confirm_received_stock_action,
confirm_repacked_stock_action,
confirm_stock_from_instance,
confirm_stock_from_queryset,
)
from .delete_items_for_stock_request import delete_items_for_stock_request_action
from .go_to_add_repack_request import go_to_add_repack_request_action
from .go_to_allocations import go_to_allocations
from .go_to_stock import go_to_stock
from .print_labels import print_labels
from .prepare_stock_request_items import prepare_stock_request_items_action
from .print_labels import print_labels, print_labels_from_repack_request
from .print_stock_labels import print_stock_labels
from .process_repack_request import process_repack_request_action
from .transfer_stock import transfer_stock_action
46 changes: 43 additions & 3 deletions edc_pharmacy/admin/actions/confirm_stock.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from __future__ import annotations

from typing import TYPE_CHECKING
from uuid import uuid4

from django.contrib import admin, messages
from django.db.models import QuerySet
Expand All @@ -14,11 +15,34 @@

@admin.display(description="Confirm repacked and labeled stock")
def confirm_repacked_stock_action(modeladmin, request, queryset: QuerySet[RepackRequest]):
return confirm_stock_action(modeladmin, request, queryset)
if queryset.count() > 1 or queryset.count() == 0:
messages.add_message(
request,
messages.ERROR,
gettext("Select one and only one item"),
)
else:
return confirm_stock_from_instance(modeladmin, request, queryset)
return None


@admin.display(description="Confirm received and labeled stock")
def confirm_received_stock_action(modeladmin, request, queryset: QuerySet[RepackRequest]):
if queryset.count() > 1 or queryset.count() == 0:
messages.add_message(
request,
messages.ERROR,
gettext("Select one and only one item"),
)
else:
return confirm_stock_from_instance(modeladmin, request, queryset)
return None


@admin.display(description="Confirm labeled stock")
def confirm_stock_action(modeladmin, request, queryset: QuerySet[RepackRequest | Receive]):
def confirm_stock_from_instance(
modeladmin, request, queryset: QuerySet[RepackRequest | Receive]
):
"""See also : utils.confirm_stock"""
if queryset.count() > 1 or queryset.count() == 0:
messages.add_message(
Expand All @@ -28,11 +52,27 @@ def confirm_stock_action(modeladmin, request, queryset: QuerySet[RepackRequest |
)
else:
url = reverse(
"edc_pharmacy:confirm_stock_url",
"edc_pharmacy:confirm_stock_from_instance_url",
kwargs={
"source_pk": str(queryset.first().id),
"model": queryset.model._meta.label_lower.split(".")[1],
},
)
return HttpResponseRedirect(url)
return None


@admin.display(description="Confirm labeled stock")
def confirm_stock_from_queryset(
modeladmin, request, queryset: QuerySet[RepackRequest | Receive]
):
if queryset.count() > 0:
session_uuid = str(uuid4())
stock_pks = queryset.values_list("pk", flat=True)
request.session[session_uuid] = [str(o) for o in stock_pks]
url = reverse(
"edc_pharmacy:confirm_stock_from_queryset_url",
kwargs={"session_uuid": session_uuid},
)
return HttpResponseRedirect(url)
return None
93 changes: 0 additions & 93 deletions edc_pharmacy/admin/actions/create_stock_request_items.py

This file was deleted.

4 changes: 2 additions & 2 deletions edc_pharmacy/admin/actions/go_to_add_repack_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ def go_to_add_repack_request_action(modeladmin, request, queryset):
obj = queryset.first()
url = reverse("edc_pharmacy_admin:edc_pharmacy_repackrequest_add")
url = (
f"{url}?next=edc_pharmacy_admin:edc_pharmacy_stock_changelist,q"
f"&q={obj.id}&from_stock={obj.id}"
f"{url}?next=edc_pharmacy_admin:edc_pharmacy_repackrequest_changelist,q"
f"&q={obj.code}&from_stock={obj.id}"
)
return HttpResponseRedirect(url)
return None
33 changes: 33 additions & 0 deletions edc_pharmacy/admin/actions/prepare_stock_request_items.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
from typing import TYPE_CHECKING

from django.contrib import admin, messages
from django.http import HttpResponseRedirect
from django.urls import reverse
from django.utils.translation import gettext

if TYPE_CHECKING:

from ...models import StockRequest


@admin.display(description="Prepare stock request items")
def prepare_stock_request_items_action(modeladmin, request, queryset):
"""
1. is there an open unprocess stock request?
2. what stock is available at the site?
3. what stock is available at central?
"""
if queryset.count() > 1 or queryset.count() == 0:
messages.add_message(
request,
messages.ERROR,
gettext("Select one and only one item"),
)
else:
stock_request: StockRequest = queryset.first()
url = reverse(
"edc_pharmacy:review_stock_request_url",
kwargs={"stock_request": stock_request.pk},
)
return HttpResponseRedirect(url)
44 changes: 36 additions & 8 deletions edc_pharmacy/admin/actions/print_labels.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,46 @@
from uuid import uuid4

from django.contrib import admin
from django.contrib import admin, messages
from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME
from django.http import HttpResponseRedirect
from django.urls import reverse
from django.utils.translation import gettext

from edc_pharmacy.models import Stock


@admin.action(description="Print labels")
def print_labels(modeladmin, request, queryset):
selected = request.POST.getlist(ACTION_CHECKBOX_NAME)
session_uuid = str(uuid4())
request.session[session_uuid] = selected
url = reverse(
"edc_pharmacy:print_labels_url",
kwargs={"session_uuid": session_uuid, "model": "stock"},
)
return HttpResponseRedirect(url)
if len(selected) > 0:
session_uuid = str(uuid4())
request.session[session_uuid] = selected
url = reverse(
"edc_pharmacy:print_labels_url",
kwargs={"session_uuid": session_uuid, "model": "stock"},
)
return HttpResponseRedirect(url)
return None


@admin.action(description="Print labels")
def print_labels_from_repack_request(modeladmin, request, queryset):
if queryset.count() > 1 or queryset.count() == 0:
messages.add_message(
request,
messages.ERROR,
gettext("Select one and only one item"),
)
else:
session_uuid = str(uuid4())
stock_qs = Stock.objects.values_list("pk", flat=True).filter(
repack_request=queryset.first()
)
if stock_qs.exists():
request.session[session_uuid] = [o for o in stock_qs]
url = reverse(
"edc_pharmacy:print_labels_url",
kwargs={"session_uuid": session_uuid, "model": "stock"},
)
return HttpResponseRedirect(url)
return None
2 changes: 1 addition & 1 deletion edc_pharmacy/admin/actions/process_repack_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,6 @@ def process_repack_request_action(modeladmin, request, queryset):
else:
process_repack_request(repack_obj)
url = reverse("edc_pharmacy_admin:edc_pharmacy_repackrequest_changelist")
url = f"{url}?q={repack_obj.id}"
url = f"{url}?q={repack_obj.from_stock.code}"
return HttpResponseRedirect(url)
return None
34 changes: 1 addition & 33 deletions edc_pharmacy/admin/autocomplete_admin.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,8 @@
from django.contrib.admin import ModelAdmin
from django.contrib.admin.decorators import register
from django_revision.modeladmin_mixin import ModelAdminRevisionMixin
from edc_model_admin.mixins import (
ModelAdminFormInstructionsMixin,
ModelAdminInstitutionMixin,
TemplatesModelAdminMixin,
)
from edc_registration.admin import RegisteredSubjectAdmin as BaseRegisteredSubjectAdmin

from ..admin_site import edc_pharmacy_admin
from ..models import (
LabelSpecificationProxy,
RegisteredSubjectProxy,
SiteProxy,
VisitSchedule,
)


@register(RegisteredSubjectProxy, site=edc_pharmacy_admin)
class RegisteredSubjectProxyAdmin(BaseRegisteredSubjectAdmin):
ordering = ("subject_identifier",)
search_fields = ("subject_identifier",)
from ..models import SiteProxy, VisitSchedule


@register(VisitSchedule, site=edc_pharmacy_admin)
Expand All @@ -29,20 +11,6 @@ class VisitScheduleAdmin(ModelAdmin):
search_fields = ("visit_code", "visit_title")


@register(LabelSpecificationProxy, site=edc_pharmacy_admin)
class LabelSpecificationProxyAdmin(
TemplatesModelAdminMixin,
ModelAdminFormInstructionsMixin,
ModelAdminRevisionMixin,
ModelAdminInstitutionMixin,
ModelAdmin,
):
show_object_tools = True
ordering = ("name",)
list_display = ["name", "page_description", "layout_description", "label_description"]
search_fields = ["id", "name"]


@register(SiteProxy, site=edc_pharmacy_admin)
class SiteProxyAdmin(ModelAdmin):
ordering = ("name",)
Expand Down
Loading

0 comments on commit ed61f4e

Please sign in to comment.