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:
@@ -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
|
||||
@@ -69,6 +69,7 @@ INSTALLED_APPS = [
|
||||
'news',
|
||||
'user',
|
||||
'ema',
|
||||
'codelist',
|
||||
]
|
||||
if DEBUG:
|
||||
INSTALLED_APPS += [
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user