class KadastraalObjectNummeraanduiding(BrkMixin, rest.HALSerializer): """ Serializer used in custom nummeraanduiding endpoint """ _display = rest.DisplayField() aanduiding = serializers.CharField(source='get_aanduiding_spaties') rechten = rest.RelatedSummaryField() beperkingen = rest.RelatedSummaryField() aantekeningen = rest.RelatedSummaryField() a_percelen = KadastraalObject(many=True) g_percelen = KadastraalObject(many=True) class Meta: model = models.KadastraalObject fields = ( '_links', '_display', 'id', 'aanduiding', 'rechten', 'beperkingen', 'aantekeningen', 'a_percelen', 'g_percelen', )
class BeperkingDetail(rest.HALSerializer): _display = rest.DisplayField() beperkingtype = Beperkingcode() kadastrale_objecten = rest.RelatedSummaryField() documenten = rest.RelatedSummaryField() class Meta: model = models.Beperking fields = ( '_links', '_display', 'id', 'inschrijfnummer', 'beperkingtype', 'datum_in_werking', 'datum_einde', 'kadastrale_objecten', 'documenten' ) # TODO handle this smarter def to_representation(self, instance): data = super(BeperkingDetail, self).to_representation(instance) data['beperkingcode'] = data['beperkingtype'] del data['beperkingtype'] return data def get_beperkingcode(self, obj): return Beperkingcode(source='*')
class StadsdeelDetail(GebiedenMixin, BboxMixin, rest.HALSerializer): _display = rest.DisplayField() buurten = rest.RelatedSummaryField() gebiedsgerichtwerken = rest.RelatedSummaryField() buurtcombinaties = rest.RelatedSummaryField() gemeente = Gemeente() bbox = serializers.SerializerMethodField() stadsdeelidentificatie = serializers.CharField(source='id') class Meta: model = models.Stadsdeel fields = ( '_links', '_display', 'stadsdeelidentificatie', 'code', 'date_modified', 'begin_geldigheid', 'einde_geldigheid', 'naam', 'gemeente', 'brondocument_naam', 'brondocument_datum', 'bbox', 'geometrie', 'buurten', 'buurtcombinaties', 'gebiedsgerichtwerken', )
class KadastraalObjectDetailPublic(BrkMixin, rest.HALSerializer): """ Public version kadastraal object Forbidden fields: koopsom, koopjaar, cultuur (on)bebouwd, rechten en aantekeningen https://dokuwiki.datapunt.amsterdam.nl/doku.php?id=start:aa:datarestricties&s[]=restricties # noqa """ _display = rest.DisplayField() aanduiding = serializers.CharField(source='get_aanduiding_spaties') objectnummer = serializers.CharField(source='perceelnummer') kadastrale_gemeente = KadastraleGemeente() sectie = KadastraleSectie() soort_grootte = SoortGrootte() verblijfsobjecten = rest.RelatedSummaryField() _adressen = rest.AdresFilterField() # a_percelen = rest.RelatedSummaryField(source='a_percelen') betrokken_bij = rest.RelatedSummaryField(source='a_percelen') # g_percelen = rest.RelatedSummaryField(source='g_percelen') ontstaan_uit = rest.RelatedSummaryField(source='g_percelen') beperkingen = rest.RelatedSummaryField() geometrie = rest.MultipleGeometryField() class Meta: model = models.KadastraalObject fields = ( '_links', '_display', 'id', 'aanduiding', 'kadastrale_gemeente', 'sectie', 'objectnummer', 'indexletter', 'indexnummer', 'soort_grootte', 'grootte', 'meer_objecten', 'register9_tekst', 'status_code', 'toestandsdatum', 'voorlopige_kadastrale_grens', 'in_onderzoek', 'geometrie', 'ontstaan_uit', 'betrokken_bij', 'verblijfsobjecten', '_adressen', 'beperkingen', )
class VerblijfsobjectNummeraanduiding( VerblijfsobjectDetailMixin, BagMixin, rest.HALSerializer): """ Serializer used in custom nummeraanduiding endpoint """ _display = rest.DisplayField() status = Status() eigendomsverhouding = Eigendomsverhouding() financieringswijze = Financieringswijze() gebruik = Gebruik() ligging = Ligging() locatie_ingang = LocatieIngang() toegang = Toegang() status_coordinaat = serializers.SerializerMethodField() type_woonobject = serializers.SerializerMethodField() reden_afvoer = RedenAfvoer() reden_opvoer = RedenOpvoer() panden = rest.RelatedSummaryField() adressen = rest.RelatedSummaryField() kadastrale_objecten = \ brk_serializers.KadastraalObjectNummeraanduiding(many=True) class Meta: model = models.Verblijfsobject fields = ( '_links', '_display', 'id', 'landelijk_id', 'date_modified', 'document_mutatie', 'document_nummer', 'begin_geldigheid', 'einde_geldigheid', 'mutatie_gebruiker', 'status', 'bron', 'geometrie', 'oppervlakte', 'bouwlaag_toegang', 'status_coordinaat', 'verhuurbare_eenheden', 'bouwlagen', 'type_woonobject', 'woningvoorraad', 'aantal_kamers', 'reden_afvoer', 'reden_opvoer', 'eigendomsverhouding', 'financieringswijze', 'gebruik', 'ligging', 'locatie_ingang', 'toegang', 'panden', 'adressen', 'kadastrale_objecten', )
class KadastraalObjectDetailWkpb(brk_serializers.BrkMixin, rest.HALSerializer): """ Serializer used in custom wkpb endpoint """ _display = rest.DisplayField() aanduiding = serializers.CharField(source='get_aanduiding_spaties') kadastrale_gemeente = brk_serializers.KadastraleGemeente() sectie = brk_serializers.KadastraleSectie() soort_grootte = brk_serializers.SoortGrootte() cultuurcode_onbebouwd = brk_serializers.CultuurCodeOnbebouwd() cultuurcode_bebouwd = brk_serializers.CultuurCodeBebouwd() rechten = brk_serializers.ZakelijkRecht(many=True) verblijfsobjecten = Verblijfsobject(many=True) beperkingen = BeperkingDetail(many=True) aantekeningen = rest.RelatedSummaryField() a_percelen = rest.RelatedSummaryField() g_percelen = rest.RelatedSummaryField() class Meta: model = models.KadastraalObject fields = ( '_links', '_display', 'id', 'aanduiding', 'kadastrale_gemeente', 'sectie', 'perceelnummer', 'indexletter', 'indexnummer', 'soort_grootte', 'grootte', 'koopsom', 'koopsom_valuta_code', 'koopjaar', 'meer_objecten', 'cultuurcode_onbebouwd', 'cultuurcode_bebouwd', 'register9_tekst', 'status_code', 'toestandsdatum', 'voorlopige_kadastrale_grens', 'in_onderzoek', 'g_percelen', 'a_percelen', 'verblijfsobjecten', 'rechten', 'aantekeningen', 'beperkingen', )
class WoonplaatsDetail(BagMixin, rest.HALSerializer): _display = rest.DisplayField() openbare_ruimtes = rest.RelatedSummaryField() gemeente = Gemeente() woonplaatsidentificatie = serializers.CharField(source='landelijk_id') sleutelverzendend = serializers.CharField(source='id') naam_17_posities = serializers.CharField(source='naam_ptt') class Meta: model = models.Woonplaats fields = ( '_links', '_display', 'sleutelverzendend', # 'id', 'woonplaatsidentificatie', # 'landelijk_id', 'date_modified', 'document_mutatie', 'document_nummer', 'begin_geldigheid', 'einde_geldigheid', 'mutatie_gebruiker', 'naam', # 'naam_ptt', 'naam_17_posities', 'gemeente', 'openbare_ruimtes' )
class BuurtcombinatieDetail(GebiedenMixin, BboxMixin, rest.HALSerializer): _display = rest.DisplayField() stadsdeel = Stadsdeel() buurten = rest.RelatedSummaryField() bbox = serializers.SerializerMethodField() _gemeente = Gemeente() buurtcombinatie_identificatie = serializers.CharField(source='id') volledige_code = serializers.CharField(source='vollcode') class Meta: model = models.Buurtcombinatie fields = ( '_links', '_display', 'buurtcombinatie_identificatie', 'naam', 'code', 'volledige_code', 'brondocument_naam', 'brondocument_datum', 'geometrie', 'begin_geldigheid', 'einde_geldigheid', 'stadsdeel', 'buurten', 'bbox', '_gemeente', )
class PandDetail(BagMixin, BboxMixin, rest.HALSerializer): _display = rest.DisplayField() status = Status() verblijfsobjecten = rest.RelatedSummaryField() bouwblok = Bouwblok() _adressen = rest.AdresFilterField() _monumenten = rest.ExternalRelationField('monumenten/monumenten/', 'betreft_pand') _buurt = Buurt() _buurtcombinatie = Buurtcombinatie() _stadsdeel = Stadsdeel() _gemeente = Gemeente() pandidentificatie = serializers.CharField(source='landelijk_id') sleutelverzendend = serializers.CharField(source='id') oorspronkelijk_bouwjaar = serializers.CharField(source='bouwjaar') bbox = serializers.SerializerMethodField() class Meta: model = models.Pand fields = ( '_links', '_display', 'sleutelverzendend', 'pandidentificatie', 'date_modified', 'document_mutatie', 'document_nummer', 'status', 'bbox', 'geometrie', 'oorspronkelijk_bouwjaar', 'hoogste_bouwlaag', 'laagste_bouwlaag', 'pandnummer', 'pandnaam', 'verblijfsobjecten', '_adressen', '_monumenten', 'bouwblok', 'begin_geldigheid', 'einde_geldigheid', 'mutatie_gebruiker', '_buurt', '_buurtcombinatie', '_stadsdeel', '_gemeente', )
class StandplaatsDetail(BagMixin, BboxMixin, rest.HALSerializer): _display = rest.DisplayField() status = Status() adressen = rest.RelatedSummaryField() hoofdadres = Nummeraanduiding() buurt = Buurt() _buurtcombinatie = Buurtcombinatie() _stadsdeel = Stadsdeel() _gemeente = Gemeente() _woonplaats = Woonplaats() _gebiedsgerichtwerken = Gebiedsgerichtwerken() _grootstedelijkgebied = Grootstedelijkgebied() standplaatsidentificatie = serializers.CharField(source='landelijk_id') sleutelverzendend = serializers.CharField(source='id') aanduiding_in_onderzoek = serializers.BooleanField( source='indicatie_in_onderzoek') bbox = serializers.SerializerMethodField() class Meta: model = models.Standplaats fields = ( '_links', '_display', 'standplaatsidentificatie', 'sleutelverzendend', 'landelijk_id', 'date_modified', 'document_mutatie', 'document_nummer', 'begin_geldigheid', 'einde_geldigheid', 'mutatie_gebruiker', 'status', 'bron', 'indicatie_geconstateerd', 'aanduiding_in_onderzoek', 'bbox', 'geometrie', 'hoofdadres', 'adressen', 'buurt', '_buurtcombinatie', '_stadsdeel', '_gebiedsgerichtwerken', '_grootstedelijkgebied', '_gemeente', '_woonplaats', )
class KadastraalSubjectDetailWithPersonalData(BrkMixin, rest.HALSerializer): _display = rest.DisplayField() woonadres = Adres() postadres = Adres() beschikkingsbevoegdheid = Beschikkingsbevoegdheid() geslacht = Geslacht() aanduiding_naam = AanduidingNaam() geboorteland = Land() land_waarnaar_vertrokken = Land() rechtsvorm = Rechtsvorm() aantekeningen = rest.RelatedSummaryField() class Meta: model = models.KadastraalSubject fields = ( '_links', '_display', 'id', 'type', 'beschikkingsbevoegdheid', 'volledige_naam', 'is_natuurlijk_persoon', 'voornamen', 'voorvoegsels', 'naam', 'geslacht', 'aanduiding_naam', 'geboortedatum', 'geboorteplaats', 'geboorteland', 'overlijdensdatum', 'partner_voornamen', 'partner_voorvoegsels', 'partner_naam', 'land_waarnaar_vertrokken', 'rsin', 'kvknummer', 'rechtsvorm', 'statutaire_naam', 'statutaire_zetel', 'bron', 'woonadres', 'postadres', 'aantekeningen', )
class BroncodeDetail(rest.HALSerializer): _display = rest.DisplayField() documenten = rest.RelatedSummaryField() class Meta: model = models.Broncode fields = ( '_links', '_display', 'code', 'omschrijving', 'documenten', )
class KadastraleGemeenteDetail(BrkMixin, rest.HALSerializer): _display = rest.DisplayField() gemeente = Gemeente() secties = rest.RelatedSummaryField() class Meta: model = models.KadastraleGemeente fields = ( '_links', '_display', 'id', 'gemeente', 'geometrie', 'secties', )
class OpenbareRuimteDetail(BagMixin, BboxMixin, rest.HALSerializer): _display = rest.DisplayField() status = Status() type = serializers.CharField(source='get_type_display') adressen = rest.RelatedSummaryField() woonplaats = Woonplaats() sleutelverzendend = serializers.CharField(source='id') openbare_ruimte_identificatie = serializers.CharField( source='landelijk_id') openbare_ruimte_code = serializers.CharField(source='code') naam_17_posities = serializers.CharField(source='naam_ptt') naam_24_posities = serializers.CharField(source='naam_nen') bbox = serializers.SerializerMethodField() class Meta: model = models.OpenbareRuimte fields = ( '_links', '_display', 'sleutelverzendend', 'openbare_ruimte_identificatie', 'openbare_ruimte_code', 'date_modified', 'document_mutatie', 'document_nummer', 'begin_geldigheid', 'einde_geldigheid', 'mutatie_gebruiker', 'status', 'bron', 'geometrie', 'type', 'naam', 'omschrijving', 'naam_17_posities', 'naam_24_posities', 'straat_nummer', 'woonplaats', 'adressen', 'bbox', 'geometrie', )
class GemeenteDetail(BagMixin, rest.HALSerializer): _display = rest.DisplayField() woonplaatsen = rest.RelatedSummaryField() class Meta: model = models.Gemeente fields = ( '_links', '_display', 'id', 'code', 'date_modified', 'begin_geldigheid', 'einde_geldigheid', 'naam', 'verzorgingsgebied', 'woonplaatsen', )
class BouwblokDetail(GebiedenMixin, BboxMixin, rest.HALSerializer): _display = rest.DisplayField() panden = rest.RelatedSummaryField() buurt = Buurt() meetbouten = serializers.SerializerMethodField() _buurtcombinatie = Buurtcombinatie() _stadsdeel = Stadsdeel() _gemeente = Gemeente() bouwblokidentificatie = serializers.CharField(source='id') bbox = serializers.SerializerMethodField() class Meta: model = models.Bouwblok fields = ( '_links', '_display', 'bouwblokidentificatie', 'code', 'buurt', 'begin_geldigheid', 'einde_geldigheid', 'bbox', 'geometrie', 'panden', 'meetbouten', '_buurtcombinatie', '_stadsdeel', '_gemeente', ) def get_meetbouten(self, obj): link = "/meetbouten/meetbout/?bouwbloknummer={}".format(obj.code) req = self.context.get('request') if req: return req.build_absolute_uri(link) return link
class GebiedsgerichtwerkenDetail(GebiedenMixin, BboxMixin, rest.HALSerializer): _display = rest.DisplayField() stadsdeel = Stadsdeel() buurten = rest.RelatedSummaryField() bbox = serializers.SerializerMethodField() class Meta: model = models.Gebiedsgerichtwerken fields = ( '_links', '_display', 'naam', 'code', 'stadsdeel', 'buurten', 'bbox', 'geometrie', )
class VerblijfsobjectDetail( VerblijfsobjectDetailMixin, BagMixin, BboxMixin, rest.HALSerializer): _display = rest.DisplayField() status = Status() eigendomsverhouding = Eigendomsverhouding() financieringswijze = Financieringswijze() gebruik = Gebruik() ligging = Ligging() locatie_ingang = LocatieIngang() toegang = Toegang() status_coordinaat = serializers.SerializerMethodField() type_woonobject = serializers.SerializerMethodField() hoofdadres = Nummeraanduiding() buurt = Buurt() reden_afvoer = RedenAfvoer() reden_opvoer = RedenOpvoer() kadastrale_objecten = rest.RelatedSummaryField() panden = rest.RelatedSummaryField() adressen = rest.RelatedSummaryField() rechten = rest.RelatedSummaryField() beperkingen = rest.RelatedSummaryField() bouwblok = Bouwblok() _buurtcombinatie = Buurtcombinatie() _stadsdeel = Stadsdeel() _gebiedsgerichtwerken = Gebiedsgerichtwerken() _grootstedelijkgebied = Grootstedelijkgebied() _gemeente = Gemeente() _woonplaats = Woonplaats() verblijfsobjectidentificatie = serializers.CharField( source='landelijk_id') sleutelverzendend = serializers.CharField(source='id') aanduiding_in_onderzoek = serializers.BooleanField( source='indicatie_in_onderzoek') gebruiksdoelen = serializers.SerializerMethodField() bbox = serializers.SerializerMethodField() class Meta: model = models.Verblijfsobject fields = ( '_links', '_display', 'sleutelverzendend', 'verblijfsobjectidentificatie', 'date_modified', 'document_mutatie', 'document_nummer', 'begin_geldigheid', 'einde_geldigheid', 'mutatie_gebruiker', 'status', 'bron', 'bbox', 'geometrie', 'oppervlakte', 'bouwlaag_toegang', 'status_coordinaat', 'verhuurbare_eenheden', 'bouwlagen', 'type_woonobject', 'woningvoorraad', 'aantal_kamers', 'reden_afvoer', 'reden_opvoer', 'eigendomsverhouding', 'financieringswijze', 'gebruik', 'ligging', 'locatie_ingang', 'toegang', 'hoofdadres', 'adressen', 'buurt', 'panden', 'kadastrale_objecten', 'rechten', 'beperkingen', 'bouwblok', 'indicatie_geconstateerd', 'aanduiding_in_onderzoek', '_buurtcombinatie', '_stadsdeel', '_gebiedsgerichtwerken', '_grootstedelijkgebied', '_gemeente', '_woonplaats', 'gebruiksdoelen', )
class KadastraalObjectDetail(BrkMixin, rest.HALSerializer): _display = rest.DisplayField() aanduiding = serializers.CharField(source='get_aanduiding_spaties') objectnummer = serializers.CharField(source='perceelnummer') kadastrale_gemeente = KadastraleGemeente() sectie = KadastraleSectie() soort_grootte = SoortGrootte() cultuurcode_onbebouwd = CultuurCodeOnbebouwd() cultuurcode_bebouwd = CultuurCodeBebouwd() rechten = rest.RelatedSummaryField() verblijfsobjecten = rest.RelatedSummaryField() _adressen = rest.AdresFilterField() aantekeningen = rest.RelatedSummaryField() # a_percelen = rest.RelatedSummaryField(source='a_percelen') betrokken_bij = rest.RelatedSummaryField(source='a_percelen') # g_percelen = rest.RelatedSummaryField(source='g_percelen') ontstaan_uit = rest.RelatedSummaryField(source='g_percelen') beperkingen = rest.RelatedSummaryField() geometrie = rest.MultipleGeometryField() class Meta: model = models.KadastraalObject fields = ( '_links', '_display', 'id', 'aanduiding', 'kadastrale_gemeente', 'sectie', 'objectnummer', 'indexletter', 'indexnummer', 'soort_grootte', 'grootte', 'koopsom', 'koopsom_valuta_code', 'koopjaar', 'meer_objecten', 'cultuurcode_onbebouwd', 'cultuurcode_bebouwd', 'register9_tekst', 'status_code', 'toestandsdatum', 'voorlopige_kadastrale_grens', 'in_onderzoek', 'geometrie', 'ontstaan_uit', 'betrokken_bij', 'verblijfsobjecten', '_adressen', 'rechten', 'aantekeningen', 'beperkingen', )
class KadastraalSubjectDetail(KadastraalSubjectDetailWithPersonalData): rechten = rest.RelatedSummaryField() class Meta: model = models.KadastraalSubject fields = ( '_links', '_display', 'id', 'type', 'beschikkingsbevoegdheid', 'is_natuurlijk_persoon', 'voornamen', 'voorvoegsels', 'naam', 'geslacht', 'aanduiding_naam', 'geboortedatum', 'geboorteplaats', 'geboorteland', 'overlijdensdatum', 'partner_voornamen', 'partner_voorvoegsels', 'partner_naam', 'land_waarnaar_vertrokken', 'rsin', 'kvknummer', 'rechtsvorm', 'statutaire_naam', 'statutaire_zetel', 'bron', 'woonadres', 'postadres', 'aantekeningen', 'rechten', # employee NOT OK for natuurlijk ) def to_representation(self, subject): """ Remove 'rechten' if not plus user """ data = super().to_representation(subject) if subject.type == subject.SUBJECT_TYPE_NIET_NATUURLIJK: return data # check if we are authorized voor natuurlijke personen request = self.context['request'] if request.is_authorized_for(authorization_levels.SCOPE_BRK_RSN): return data # We are employee and should not see 'rechten' / eigendommen data.pop('rechten') return data