Implement drug refresh and view

This commit is contained in:
2024-01-15 15:29:33 +00:00
parent 37534b31bf
commit 0488a3e0b2
16 changed files with 842 additions and 31 deletions

View File

@@ -1,9 +1,12 @@
from django.contrib.auth.mixins import LoginRequiredMixin
from django.shortcuts import render
from django.urls import reverse
from rest_framework.views import APIView
from core.clients.sources.psychwiki import PsychWikiClient
from core.forms import DrugForm
from core.models import Drug
from core.views.helpers import synchronize_async_helper
from mxs.restrictions import StaffMemberRequiredMixin
from mxs.views import ObjectCreate, ObjectDelete, ObjectList, ObjectUpdate
@@ -19,6 +22,19 @@ class DrugList(LoginRequiredMixin, StaffMemberRequiredMixin, ObjectList):
submit_url_name = "drug_create"
delete_all_url_name = "drug_clear"
def get_context_data(self):
context = super().get_context_data()
self.extra_buttons = [
{
"url": reverse("drug_pull_merge"),
"action": "refresh",
"method": "post",
"label": "Update database from sources",
"icon": "fa-solid fa-refresh",
},
]
return context
class DrugCreate(LoginRequiredMixin, StaffMemberRequiredMixin, ObjectCreate):
model = Drug
@@ -50,3 +66,18 @@ class DrugClear(LoginRequiredMixin, StaffMemberRequiredMixin, APIView):
response = render(request, template_name, context)
response["HX-Trigger"] = "drugEvent"
return response
class DrugPullMerge(LoginRequiredMixin, StaffMemberRequiredMixin, APIView):
def post(self, request):
template_name = "mixins/partials/notify.html"
# Do something
run = synchronize_async_helper(PsychWikiClient())
result = synchronize_async_helper(run.update_drugs())
context = {
"message": f"Drugs fetched: {result}",
"class": "success",
}
response = render(request, template_name, context)
response["HX-Trigger"] = "drugEvent"
return response