Skip to content
This repository has been archived by the owner on Jun 8, 2023. It is now read-only.

Commit

Permalink
Merge pull request #10 from VNG-Realisatie/feature/filtering
Browse files Browse the repository at this point in the history
Feature/filtering
  • Loading branch information
joeribekker authored Sep 9, 2020
2 parents af41927 + dd9a5a7 commit 1945f5b
Show file tree
Hide file tree
Showing 6 changed files with 556 additions and 1 deletion.
123 changes: 123 additions & 0 deletions src/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2023,6 +2023,117 @@ paths:
summary: Alle VERZOEKen opvragen.
description: Alle VERZOEKen opvragen.
parameters:
- name: identificatie
in: query
description: De unieke identificatie van het VERZOEK binnen de organisatie
die verantwoordelijk is voor de behandeling van het VERZOEK.
required: false
schema:
type: string
- name: bronorganisatie
in: query
description: Het RSIN van de Niet-natuurlijk persoon zijnde de organisatie
die de klantinteractie heeft gecreeerd. Dit moet een geldig RSIN zijn van
9 nummers en voldoen aan https://nl.wikipedia.org/wiki/Burgerservicenummer#11-proef
required: false
schema:
type: string
- name: externeIdentificatie
in: query
description: De identificatie van het VERZOEK buiten de eigen organisatie.
required: false
schema:
type: string
- name: registratiedatum
in: query
description: De datum en het tijdstip waarop het VERZOEK is geregistreerd.
required: false
schema:
type: string
- name: registratiedatum__gt
in: query
description: De datum en het tijdstip waarop het VERZOEK is geregistreerd.
required: false
schema:
type: string
- name: registratiedatum__gte
in: query
description: De datum en het tijdstip waarop het VERZOEK is geregistreerd.
required: false
schema:
type: string
- name: registratiedatum__lt
in: query
description: De datum en het tijdstip waarop het VERZOEK is geregistreerd.
required: false
schema:
type: string
- name: registratiedatum__lte
in: query
description: De datum en het tijdstip waarop het VERZOEK is geregistreerd.
required: false
schema:
type: string
- name: voorkeurskanaal
in: query
description: Het communicatiekanaal dat voor opvolging van het VERZOEK de
voorkeur heeft van de KLANT.
required: false
schema:
type: string
- name: tekst
in: query
description: Een toelichting die inhoudelijk het VERZOEK van de KLANT beschrijft.
required: false
schema:
type: string
- name: status
in: query
description: De waarden van de typering van de voortgang van afhandeling van
een VERZOEK.
required: false
schema:
type: string
enum:
- ontvangen
- in_behandeling
- afgehandeld
- afgewezen
- ingetrokken
- name: inTeTrekkenVerzoek
in: query
description: URL-referentie naar het (eerdere) VERZOEK dat door dit VERZOEK
wordt verzocht ingetrokken te worden.
required: false
schema:
type: string
format: uri
- name: intrekkendeVerzoek
in: query
description: URL-referentie naar het (latere) VERZOEK waarin verzocht wordt
dit VERZOEK in te trekken. Dit veld is alleen leesbaar en wordt automatisch
gezet wanneer er een ander VERZOEK wordt aangemaakt dat dit VERZOEK intrekt.
required: false
schema:
type: string
format: uri
- name: aangevuldeVerzoek
in: query
description: URL-referentie naar het (eerdere) VERZOEK dat door dit VERZOEK
wordt aangevuld.
required: false
schema:
type: string
format: uri
- name: aanvullendeVerzoek
in: query
description: URL-referentie naar het (latere) VERZOEK waarin dit VERZOEK wordt
aangevuld. Dit veld is alleen leesbaar en wordt automatisch gezet indien
een ander VERZOEK wordt aangemaakt dat dit VERZOEK aanvult.
required: false
schema:
type: string
format: uri
- name: page
in: query
description: Een pagina binnen de gepagineerde set resultaten.
Expand Down Expand Up @@ -2060,6 +2171,18 @@ paths:
type: array
items:
$ref: '#/components/schemas/Verzoek'
'400':
description: Bad request
headers:
API-version:
schema:
type: string
description: 'Geeft een specifieke API-versie aan in de context van
een specifieke aanroep. Voorbeeld: 1.2.1.'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ValidatieFout'
'401':
description: Unauthorized
headers:
Expand Down
130 changes: 130 additions & 0 deletions src/swagger2.0.json
Original file line number Diff line number Diff line change
Expand Up @@ -2347,6 +2347,122 @@
"summary": "Alle VERZOEKen opvragen.",
"description": "Alle VERZOEKen opvragen.",
"parameters": [
{
"name": "identificatie",
"in": "query",
"description": "De unieke identificatie van het VERZOEK binnen de organisatie die verantwoordelijk is voor de behandeling van het VERZOEK.",
"required": false,
"type": "string"
},
{
"name": "bronorganisatie",
"in": "query",
"description": "Het RSIN van de Niet-natuurlijk persoon zijnde de organisatie die de klantinteractie heeft gecreeerd. Dit moet een geldig RSIN zijn van 9 nummers en voldoen aan https://nl.wikipedia.org/wiki/Burgerservicenummer#11-proef",
"required": false,
"type": "string"
},
{
"name": "externeIdentificatie",
"in": "query",
"description": "De identificatie van het VERZOEK buiten de eigen organisatie.",
"required": false,
"type": "string"
},
{
"name": "registratiedatum",
"in": "query",
"description": "De datum en het tijdstip waarop het VERZOEK is geregistreerd.",
"required": false,
"type": "string"
},
{
"name": "registratiedatum__gt",
"in": "query",
"description": "De datum en het tijdstip waarop het VERZOEK is geregistreerd.",
"required": false,
"type": "string"
},
{
"name": "registratiedatum__gte",
"in": "query",
"description": "De datum en het tijdstip waarop het VERZOEK is geregistreerd.",
"required": false,
"type": "string"
},
{
"name": "registratiedatum__lt",
"in": "query",
"description": "De datum en het tijdstip waarop het VERZOEK is geregistreerd.",
"required": false,
"type": "string"
},
{
"name": "registratiedatum__lte",
"in": "query",
"description": "De datum en het tijdstip waarop het VERZOEK is geregistreerd.",
"required": false,
"type": "string"
},
{
"name": "voorkeurskanaal",
"in": "query",
"description": "Het communicatiekanaal dat voor opvolging van het VERZOEK de voorkeur heeft van de KLANT.",
"required": false,
"type": "string"
},
{
"name": "tekst",
"in": "query",
"description": "Een toelichting die inhoudelijk het VERZOEK van de KLANT beschrijft.",
"required": false,
"type": "string"
},
{
"name": "status",
"in": "query",
"description": "De waarden van de typering van de voortgang van afhandeling van een VERZOEK.",
"required": false,
"type": "string",
"enum": [
"ontvangen",
"in_behandeling",
"afgehandeld",
"afgewezen",
"ingetrokken"
]
},
{
"name": "inTeTrekkenVerzoek",
"in": "query",
"description": "URL-referentie naar het (eerdere) VERZOEK dat door dit VERZOEK wordt verzocht ingetrokken te worden.",
"required": false,
"type": "string",
"format": "uri"
},
{
"name": "intrekkendeVerzoek",
"in": "query",
"description": "URL-referentie naar het (latere) VERZOEK waarin verzocht wordt dit VERZOEK in te trekken. Dit veld is alleen leesbaar en wordt automatisch gezet wanneer er een ander VERZOEK wordt aangemaakt dat dit VERZOEK intrekt.",
"required": false,
"type": "string",
"format": "uri"
},
{
"name": "aangevuldeVerzoek",
"in": "query",
"description": "URL-referentie naar het (eerdere) VERZOEK dat door dit VERZOEK wordt aangevuld.",
"required": false,
"type": "string",
"format": "uri"
},
{
"name": "aanvullendeVerzoek",
"in": "query",
"description": "URL-referentie naar het (latere) VERZOEK waarin dit VERZOEK wordt aangevuld. Dit veld is alleen leesbaar en wordt automatisch gezet indien een ander VERZOEK wordt aangemaakt dat dit VERZOEK aanvult.",
"required": false,
"type": "string",
"format": "uri"
},
{
"name": "page",
"in": "query",
Expand Down Expand Up @@ -2395,6 +2511,20 @@
}
}
},
"400": {
"description": "Bad request",
"schema": {
"$ref": "#/definitions/ValidatieFout"
},
"headers": {
"API-version": {
"schema": {
"type": "string"
},
"description": "Geeft een specifieke API-versie aan in de context van een specifieke aanroep. Voorbeeld: 1.2.1."
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
Expand Down
49 changes: 49 additions & 0 deletions src/verzoeken/api/filters.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,65 @@
from django.utils.translation import ugettext_lazy as _

from django_filters import filters
from vng_api_common.filters import URLModelChoiceFilter
from vng_api_common.filtersets import FilterSet
from vng_api_common.utils import get_help_text

from verzoeken.datamodel.models import (
KlantVerzoek,
ObjectVerzoek,
Verzoek,
VerzoekContactMoment,
VerzoekInformatieObject,
VerzoekProduct,
)


class VerzoekFilter(FilterSet):
class Meta:
model = Verzoek
fields = {
"identificatie": ["exact"],
"bronorganisatie": ["exact"],
"externe_identificatie": ["exact"],
"registratiedatum": ["exact", "gt", "gte", "lt", "lte"],
"voorkeurskanaal": ["exact"],
"tekst": ["exact"],
"status": ["exact"],
"in_te_trekken_verzoek": ["exact"],
"intrekkende_verzoek": ["exact"],
"aangevulde_verzoek": ["exact"],
"aanvullende_verzoek": ["exact"],
}

@classmethod
def filter_for_field(cls, f, name, lookup_expr):
# Needed because `intrekkende_verzoek` and `aanvullende_verzoek`
# are reverse OneToOne relations
if f.name == "intrekkende_verzoek":
filter = URLModelChoiceFilter()
filter.field_name = "intrekkende_verzoek"
filter.extra["help_text"] = _(
"URL-referentie naar het (latere) VERZOEK waarin verzocht wordt "
"dit VERZOEK in te trekken. Dit veld is alleen leesbaar en wordt "
"automatisch gezet wanneer er een ander VERZOEK wordt aangemaakt "
"dat dit VERZOEK intrekt."
)
filter.queryset = Verzoek.objects.all()
elif f.name == "aanvullende_verzoek":
filter = URLModelChoiceFilter()
filter.field_name = "aanvullende_verzoek"
filter.extra["help_text"] = _(
"URL-referentie naar het (latere) VERZOEK waarin dit VERZOEK "
"wordt aangevuld. Dit veld is alleen leesbaar en wordt automatisch "
"gezet indien een ander VERZOEK wordt aangemaakt dat dit VERZOEK aanvult."
)
filter.queryset = Verzoek.objects.all()
else:
filter = super().filter_for_field(f, name, lookup_expr)
return filter


class ObjectVerzoekFilter(FilterSet):
class Meta:
model = ObjectVerzoek
Expand Down
Loading

0 comments on commit 1945f5b

Please sign in to comment.