Codelist integration

* adds codelist app
* adds KonovaCodeList and KonovaCode model for fetching and storing OSIRIS Codelisten entries
* adds update_codelist command for updating and fetching codes
* adds autocomplete route for using codelists in forms
This commit is contained in:
mipel
2021-08-23 18:30:02 +02:00
parent 631b5d0ea6
commit 41c9ed106c
12 changed files with 344 additions and 2 deletions

View File

@@ -7,6 +7,7 @@ Created on: 07.12.20
"""
from dal_select2.views import Select2QuerySetView
from codelist.models import KonovaCode
from compensation.models import EcoAccount
from intervention.models import Intervention
from organisation.models import Organisation
@@ -73,4 +74,39 @@ class InterventionAutocomplete(Select2QuerySetView):
qs = qs.order_by(
"identifier"
)
return qs
class KonovaCodeAutocomplete(Select2QuerySetView):
"""
Provides simple autocomplete functionality for codes
Parameter support:
* q: Search for a word inside long_name of a code
* c: Search inside a special codelist
"""
def dispatch(self, request, *args, **kwargs):
# Retrieve 'c' for 'code' from request
self.c = request.GET.get("c", "")
return super().dispatch(request, *args, **kwargs)
def get_queryset(self):
if self.request.user.is_anonymous:
return KonovaCode.objects.none()
qs = KonovaCode.objects.filter(
is_active=True,
is_leaf=True,
)
if self.c:
qs = qs.filter(
code_lists__in=[self.c]
)
if self.q:
qs = qs.filter(
long_name__icontains=self.q
)
qs.order_by(
"long_name"
)
return qs

View File

@@ -69,6 +69,7 @@ INSTALLED_APPS = [
'news',
'user',
'ema',
'codelist',
]
if DEBUG:
INSTALLED_APPS += [

View File

@@ -18,7 +18,7 @@ from django.contrib import admin
from django.urls import path, include
from konova.autocompletes import OrganisationAutocomplete, NonOfficialOrganisationAutocomplete, EcoAccountAutocomplete, \
InterventionAutocomplete
InterventionAutocomplete, KonovaCodeAutocomplete
from konova.settings import SSO_SERVER, SSO_PUBLIC_KEY, SSO_PRIVATE_KEY, DEBUG
from konova.sso.sso import KonovaSSOClient
from konova.views import logout_view, home_view, get_document_view, remove_document_view, remove_deadline_view
@@ -35,6 +35,7 @@ urlpatterns = [
path('organisation/', include("organisation.urls")),
path('user/', include("user.urls")),
path('news/', include("news.urls")),
path('news/', include("codelist.urls")),
# Generic documents routes
path('document/<id>', get_document_view, name="doc-open"),
@@ -43,11 +44,12 @@ urlpatterns = [
# Generic deadline routes
path('deadline/<id>/remove', remove_deadline_view, name="deadline-remove"),
# Autocomplete paths
# Autocomplete paths for all apps
path("atcmplt/orgs", OrganisationAutocomplete.as_view(), name="orgs-autocomplete"),
path("atcmplt/orgs/other", NonOfficialOrganisationAutocomplete.as_view(), name="other-orgs-autocomplete"),
path("atcmplt/eco-accounts", EcoAccountAutocomplete.as_view(), name="accounts-autocomplete"),
path("atcmplt/interventions", InterventionAutocomplete.as_view(), name="interventions-autocomplete"),
path("atcmplt/codes", KonovaCodeAutocomplete.as_view(), name="codes-autocomplete"),
]
if DEBUG: