Skip to content

Commit

Permalink
App Datenmanagement: neue Codeliste bevollmächtigte Bezirksschornstei…
Browse files Browse the repository at this point in the history
…nfeger
  • Loading branch information
gdmhrogut committed Oct 26, 2023
1 parent 8c265b8 commit 3597382
Show file tree
Hide file tree
Showing 9 changed files with 506 additions and 128 deletions.
3 changes: 2 additions & 1 deletion bemas/models/models_objectclass.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
from toolbox.constants_vars import standard_validators, personennamen_validators, \
d3_regex, d3_message, email_message, hausnummer_regex, hausnummer_message, \
postleitzahl_regex, postleitzahl_message, rufnummer_regex, rufnummer_message
from bemas.utils import LOG_ACTIONS, concat_address, shorten_string
from toolbox.utils import concat_address
from bemas.utils import LOG_ACTIONS, shorten_string
from .base import GeometryObjectclass, Objectclass
from .functions import store_complaint_search_content
from .models_codelist import Sector, Status, TypeOfEvent, TypeOfImmission
Expand Down
22 changes: 0 additions & 22 deletions bemas/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,28 +19,6 @@
}


def concat_address(street=None, house_number=None, postal_code=None, place=None):
"""
concats passed address string parts and returns address string
:param street: street name
:param house_number: house number
:param postal_code: postal code
:param place: place
:return: address string
"""
first_part = (street + ' ' if street else '') + (house_number if house_number else '')
second_part = (postal_code + ' ' if postal_code else '') + (place if place else '')
if first_part and second_part:
return first_part.strip() + ', ' + second_part.strip()
elif first_part:
return first_part.strip()
elif second_part:
return second_part.strip()
else:
return None


def format_date_datetime(value, time_string_only=False):
"""
formats date or datetime and returns appropriate date, datetime or time string
Expand Down
4 changes: 4 additions & 0 deletions datenmanagement/models/constants_vars.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
# validators
#

bevollmaechtigte_bezirksschornsteinfeger_bezirk_regex = r'^[A-Z]{3}-[0-9]{2}$'
bevollmaechtigte_bezirksschornsteinfeger_bezirk_message = 'Der <strong><em>Bezirk</em></strong> ' \
'muss aus drei Großbuchstaben, einem ' \
'Bindestrich und zwei Ziffern bestehen.'
denksteine_nummer_regex = r'^[0-9]+[a-z]*$'
denksteine_nummer_message = 'Die <strong><em>Nummer</em></strong> muss mit ' \
'einer Ziffer beginnen und mit einer Ziffer ' \
Expand Down
148 changes: 142 additions & 6 deletions datenmanagement/models/models_codelist.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
from decimal import Decimal
from django.core.validators import EmailValidator, MaxValueValidator, MinValueValidator, \
RegexValidator
from django.db.models.fields import CharField, DecimalField
from django.db.models.fields import BooleanField, CharField, DateField, DecimalField

from toolbox.constants_vars import personennamen_validators, standard_validators, email_message
from toolbox.constants_vars import personennamen_validators, standard_validators, email_message, \
hausnummer_regex, hausnummer_message, postleitzahl_regex, postleitzahl_message, \
rufnummer_regex, rufnummer_message
from toolbox.utils import concat_address
from .base import Metamodel, Codelist, Art, Befestigungsart, Material, Schlagwort, Status, Typ
from .constants_vars import fahrbahnwinterdienst_code_regex, fahrbahnwinterdienst_code_message, \
haefen_abkuerzung_regex, haefen_abkuerzung_message, linien_linie_regex, linien_linie_message, \
parkscheinautomaten_zone_regex, parkscheinautomaten_zone_message, quartiere_code_regex, \
quartiere_code_message
from .constants_vars import bevollmaechtigte_bezirksschornsteinfeger_bezirk_regex, \
bevollmaechtigte_bezirksschornsteinfeger_bezirk_message, fahrbahnwinterdienst_code_regex, \
fahrbahnwinterdienst_code_message, haefen_abkuerzung_regex, haefen_abkuerzung_message, \
linien_linie_regex, linien_linie_message, parkscheinautomaten_zone_regex, \
parkscheinautomaten_zone_message, quartiere_code_regex, quartiere_code_message
from .fields import PositiveSmallIntegerMinField, PositiveSmallIntegerRangeField, \
multipolygon_field

Expand Down Expand Up @@ -671,6 +675,138 @@ def __str__(self):
return self.betriebszeit


class Bevollmaechtigte_Bezirksschornsteinfeger(Codelist):
"""
bevollmächtigte Bezirksschornsteinfeger
"""

bezirk = CharField(
'Bezirk',
max_length=6,
blank=True,
null=True,
validators=[
RegexValidator(
regex=bevollmaechtigte_bezirksschornsteinfeger_bezirk_regex,
message=bevollmaechtigte_bezirksschornsteinfeger_bezirk_message
)
]
)
auswaertig = BooleanField(
' auswärtig?'
)
bestellungszeitraum_beginn = DateField('Beginn des Bestellungszeitraums')
bestellungszeitraum_ende = DateField('Ende des Bestellungszeitraums')
vorname = CharField(
'Vorname',
max_length=255,
validators=personennamen_validators
)
nachname = CharField(
'Nachname',
max_length=255,
validators=personennamen_validators
)
anschrift_strasse = CharField(
'Straße',
max_length=255,
validators=standard_validators
)
anschrift_hausnummer = CharField(
'Hausnummer',
max_length=4,
validators=[
RegexValidator(
regex=hausnummer_regex,
message=hausnummer_message
)
]
)
anschrift_postleitzahl = CharField(
'Postleitzahl',
max_length=5,
validators=[
RegexValidator(
regex=postleitzahl_regex,
message=postleitzahl_message
)
]
)
anschrift_ort = CharField(
'Ort',
max_length=255,
validators=standard_validators
)
telefon_festnetz = CharField(
'Telefon (Festnetz)',
max_length=255,
blank=True,
null=True,
validators=[
RegexValidator(
regex=rufnummer_regex,
message=rufnummer_message
)
]
)
telefon_mobil = CharField(
'Telefon (mobil)',
max_length=255,
blank=True,
null=True,
validators=[
RegexValidator(
regex=rufnummer_regex,
message=rufnummer_message
)
]
)
email = CharField(
'E-Mail-Adresse',
max_length=255,
blank=True,
null=True,
validators=[
EmailValidator(
message=email_message
)
]
)

class Meta(Codelist.Meta):
db_table = 'codelisten\".\"bevollmaechtigte_bezirksschornsteinfeger'
ordering = [
'nachname',
'vorname'
]
verbose_name = 'bevollmächtigter Bezirksschornsteinfeger'
verbose_name_plural = 'bevollmächtigte Bezirksschornsteinfeger'

class BasemodelMeta(Codelist.BasemodelMeta):
description = 'bevollmächtigte Bezirksschornsteinfeger'
list_fields = {
'bezirk': 'Bezirk',
'auswaertig': 'auswärtig?',
'bestellungszeitraum_beginn': 'Beginn des Bestellungszeitraums',
'bestellungszeitraum_ende': 'Ende des Bestellungszeitraums',
'vorname': 'Vorname',
'nachname': 'Nachname',
'anschrift': 'Anschrift',
'telefon_festnetz': 'Telefon (Festnetz)',
'telefon_mobil': 'Telefon (mobil)',
'email': 'E-Mail-Adresse'
}
list_fields_with_date = ['bestellungszeitraum_beginn', 'bestellungszeitraum_ende']

def __str__(self):
bezirk = ' (Bezirk ' + self.bezirk + ')' if self.bezirk else ''
return self.vorname + ' ' + self.nachname + bezirk

def address(self):
return concat_address(self.anschrift_strasse, self.anschrift_hausnummer,
self.anschrift_postleitzahl, self.anschrift_ort)


class Bewirtschafter_Betreiber_Traeger_Eigentuemer(Codelist):
"""
Bewirtschafter, Betreiber, Träger, Eigentümer etc.
Expand Down
66 changes: 66 additions & 0 deletions datenmanagement/sql/schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -681,6 +681,30 @@ CREATE TABLE codelisten.betriebszeiten (
);


--
-- Name: bevollmaechtigte_bezirksschornsteinfeger; Type: TABLE; Schema: codelisten; Owner: -
--

CREATE TABLE codelisten.bevollmaechtigte_bezirksschornsteinfeger (
uuid uuid DEFAULT public.uuid_generate_v4() NOT NULL,
aktualisiert date DEFAULT (now())::date NOT NULL,
erstellt date DEFAULT (now())::date NOT NULL,
auswaertig boolean NOT NULL,
bezirk character(6),
bestellungszeitraum_beginn date NOT NULL,
bestellungszeitraum_ende date NOT NULL,
vorname character varying(255) NOT NULL,
nachname character varying(255) NOT NULL,
anschrift_strasse character varying(255) NOT NULL,
anschrift_hausnummer character varying(4) NOT NULL,
anschrift_postleitzahl character(5) NOT NULL,
anschrift_ort character varying(255) NOT NULL,
telefon_festnetz character varying(255),
telefon_mobil character varying(255),
email character varying(255)
);


--
-- Name: bewirtschafter_betreiber_traeger_eigentuemer; Type: TABLE; Schema: codelisten; Owner: -
--
Expand Down Expand Up @@ -2964,6 +2988,24 @@ CREATE TABLE fachdaten_adressbezug.hospize_hro (
);


--
-- Name: kehrbezirke_hro; Type: TABLE; Schema: fachdaten_adressbezug; Owner: -
--

CREATE TABLE fachdaten_adressbezug.kehrbezirke_hro (
uuid uuid DEFAULT public.uuid_generate_v4() NOT NULL,
aktualisiert date DEFAULT (now())::date NOT NULL,
erstellt date DEFAULT (now())::date NOT NULL,
id_fachsystem character varying(255),
id_zielsystem character varying(255),
aktiv boolean DEFAULT true NOT NULL,
deaktiviert date,
adresse uuid,
bevollmaechtigter_bezirksschornsteinfeger uuid NOT NULL,
vergabedatum date
);


--
-- Name: kinder_jugendbetreuung_hro; Type: TABLE; Schema: fachdaten_adressbezug; Owner: -
--
Expand Down Expand Up @@ -3981,6 +4023,14 @@ ALTER TABLE ONLY codelisten.betriebszeiten
ADD CONSTRAINT betriebszeiten_pk PRIMARY KEY (uuid);


--
-- Name: bevollmaechtigte_bezirksschornsteinfeger bevollmaechtigte_bezirksschornsteinfeger_pk; Type: CONSTRAINT; Schema: codelisten; Owner: -
--

ALTER TABLE ONLY codelisten.bevollmaechtigte_bezirksschornsteinfeger
ADD CONSTRAINT bevollmaechtigte_bezirksschornsteinfeger_pk PRIMARY KEY (uuid);


--
-- Name: bewirtschafter_betreiber_traeger_eigentuemer bewirtschafter_betreiber_traeger_eigentuemer_bezeichnung_unique; Type: CONSTRAINT; Schema: codelisten; Owner: -
--
Expand Down Expand Up @@ -5565,6 +5615,14 @@ ALTER TABLE ONLY fachdaten_adressbezug.hospize_hro
ADD CONSTRAINT hospize_hro_pk PRIMARY KEY (uuid);


--
-- Name: kehrbezirke_hro kehrbezirke_hro_pk; Type: CONSTRAINT; Schema: fachdaten_adressbezug; Owner: -
--

ALTER TABLE ONLY fachdaten_adressbezug.kehrbezirke_hro
ADD CONSTRAINT kehrbezirke_hro_pk PRIMARY KEY (uuid);


--
-- Name: kinder_jugendbetreuung_hro kinder_jugendbetreuung_hro_pk; Type: CONSTRAINT; Schema: fachdaten_adressbezug; Owner: -
--
Expand Down Expand Up @@ -6889,6 +6947,14 @@ ALTER TABLE ONLY fachdaten_adressbezug.hospize_hro
ADD CONSTRAINT hospize_hro_traeger_fk FOREIGN KEY (traeger) REFERENCES codelisten.bewirtschafter_betreiber_traeger_eigentuemer(uuid) MATCH FULL ON UPDATE CASCADE ON DELETE RESTRICT;


--
-- Name: kehrbezirke_hro kehrbezirke_hro_bevollmaechtigte_bezirksschornsteinfeger_fk; Type: FK CONSTRAINT; Schema: fachdaten_adressbezug; Owner: -
--

ALTER TABLE ONLY fachdaten_adressbezug.kehrbezirke_hro
ADD CONSTRAINT kehrbezirke_hro_bevollmaechtigte_bezirksschornsteinfeger_fk FOREIGN KEY (bevollmaechtigter_bezirksschornsteinfeger) REFERENCES codelisten.bevollmaechtigte_bezirksschornsteinfeger(uuid) MATCH FULL ON UPDATE CASCADE ON DELETE RESTRICT;


--
-- Name: kinder_jugendbetreuung_hro kinder_jugendbetreuung_hro_traeger_fk; Type: FK CONSTRAINT; Schema: fachdaten_adressbezug; Owner: -
--
Expand Down
Loading

0 comments on commit 3597382

Please sign in to comment.