From 2edd5125148a477e78e9dd1562d8e677dd1a6db1 Mon Sep 17 00:00:00 2001 From: Sebastian Gutzeit Date: Tue, 30 Apr 2024 16:14:39 +0200 Subject: [PATCH] =?UTF-8?q?App=20Datenmanagement:=20Erweiterung=20Datenthe?= =?UTF-8?q?men=20Freizeitsport=20und=20Spielpl=C3=A4tze?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- datenmanagement/models/models_codelist.py | 140 ++++ datenmanagement/models/models_complex.py | 83 +- datenmanagement/sql/schema.sql | 149 +++- datenmanagement/tests/test_models_codelist.py | 764 ++++++++++++++++-- datenmanagement/tests/test_models_complex.py | 98 ++- 5 files changed, 1123 insertions(+), 111 deletions(-) diff --git a/datenmanagement/models/models_codelist.py b/datenmanagement/models/models_codelist.py index 626afe0..f84588c 100644 --- a/datenmanagement/models/models_codelist.py +++ b/datenmanagement/models/models_codelist.py @@ -776,6 +776,62 @@ class BasemodelMeta(Befestigungsart.BasemodelMeta): description = 'Befestigungsarten der Wartefläche innerhalb eines Haltestellenkatasters' +class Besonderheiten_Freizeitsport(Codelist): + """ + Besonderheiten in Bezug auf Freizeitsport + """ + + besonderheit = CharField( + verbose_name='Besonderheit', + max_length=255, + unique=True, + validators=standard_validators + ) + + class Meta(Codelist.Meta): + db_table = 'codelisten\".\"besonderheiten_freizeitsport' + ordering = ['besonderheit'] + verbose_name = 'Besonderheit in Bezug auf Freizeitsport' + verbose_name_plural = 'Besonderheiten in Bezug auf Freizeitsport' + + class BasemodelMeta(Codelist.BasemodelMeta): + description = 'Besonderheiten in Bezug auf Freizeitsport' + list_fields = { + 'besonderheit': 'Besonderheit' + } + + def __str__(self): + return self.besonderheit + + +class Besonderheiten_Spielplaetze(Codelist): + """ + Besonderheiten in Bezug auf Spielplätze + """ + + besonderheit = CharField( + verbose_name='Besonderheit', + max_length=255, + unique=True, + validators=standard_validators + ) + + class Meta(Codelist.Meta): + db_table = 'codelisten\".\"besonderheiten_spielplaetze' + ordering = ['besonderheit'] + verbose_name = 'Besonderheit in Bezug auf einen Spielplatz' + verbose_name_plural = 'Besonderheiten in Bezug auf Spielplätze' + + class BasemodelMeta(Codelist.BasemodelMeta): + description = 'Besonderheiten in Bezug auf Spielplätze' + list_fields = { + 'besonderheit': 'Besonderheit' + } + + def __str__(self): + return self.besonderheit + + class Betriebsarten(Codelist): """ Betriebsarten @@ -1013,6 +1069,62 @@ def __str__(self): return self.bezeichnung +class Bodenarten_Freizeitsport(Codelist): + """ + Bodenarten in Bezug auf Freizeitsport + """ + + bodenart = CharField( + verbose_name='Bodenart', + max_length=255, + unique=True, + validators=standard_validators + ) + + class Meta(Codelist.Meta): + db_table = 'codelisten\".\"bodenarten_freizeitsport' + ordering = ['bodenart'] + verbose_name = 'Bodenart in Bezug auf Freizeitsport' + verbose_name_plural = 'Bodenarten in Bezug auf Freizeitsport' + + class BasemodelMeta(Codelist.BasemodelMeta): + description = 'Bodenarten in Bezug auf Freizeitsport' + list_fields = { + 'bodenart': 'Bodenart' + } + + def __str__(self): + return self.bodenart + + +class Bodenarten_Spielplaetze(Codelist): + """ + Bodenarten in Bezug auf Spielplätze + """ + + bodenart = CharField( + verbose_name='Bodenart', + max_length=255, + unique=True, + validators=standard_validators + ) + + class Meta(Codelist.Meta): + db_table = 'codelisten\".\"bodenarten_spielplaetze' + ordering = ['bodenart'] + verbose_name = 'Bodenart in Bezug auf einen Spielplatz' + verbose_name_plural = 'Bodenarten in Bezug auf Spielplätze' + + class BasemodelMeta(Codelist.BasemodelMeta): + description = 'Bodenarten in Bezug auf Spielplätze' + list_fields = { + 'bodenart': 'Bodenart' + } + + def __str__(self): + return self.bodenart + + class Anbieter_Carsharing(Codelist): """ Carsharing-Anbieter @@ -2124,6 +2236,34 @@ def __str__(self): return self.sparte +class Spielgeraete(Codelist): + """ + Spielgeräte + """ + + bezeichnung = CharField( + verbose_name='Bezeichnung', + max_length=255, + unique=True, + validators=standard_validators + ) + + class Meta(Codelist.Meta): + db_table = 'codelisten\".\"spielgeraete' + ordering = ['bezeichnung'] + verbose_name = 'Spielgerät' + verbose_name_plural = 'Spielgeräte' + + class BasemodelMeta(Codelist.BasemodelMeta): + description = 'Spielgeräte' + list_fields = { + 'bezeichnung': 'Bezeichnung' + } + + def __str__(self): + return self.bezeichnung + + class Sportarten(Codelist): """ Sportarten diff --git a/datenmanagement/models/models_complex.py b/datenmanagement/models/models_complex.py index 0490446..c5a0f20 100644 --- a/datenmanagement/models/models_complex.py +++ b/datenmanagement/models/models_complex.py @@ -1131,12 +1131,13 @@ class Freizeitsport(ComplexModel): null=True, validators=standard_validators ) - beschreibung = CharField( - verbose_name='Beschreibung', - max_length=255, - blank=True, - null=True, - validators=standard_validators + bodenarten = ChoiceArrayField( + CharField( + verbose_name='Bodenarten', + max_length=255, + choices=() + ), + verbose_name='Bodenarten' ) sportarten = ChoiceArrayField( CharField( @@ -1146,6 +1147,14 @@ class Freizeitsport(ComplexModel): ), verbose_name='Sportarten' ) + besonderheiten = ChoiceArrayField( + CharField( + verbose_name='Besonderheiten', + max_length=255, + choices=() + ), + verbose_name='Besonderheiten' + ) freizeitsport = CharField( max_length=255, blank=True, @@ -1163,7 +1172,9 @@ class Meta(ComplexModel.Meta): class BasemodelMeta(ComplexModel.BasemodelMeta): description = 'Freizeitsport in der Hanse- und Universitätsstadt Rostock' choices_models_for_choices_fields = { - 'sportarten': 'Freizeitsportarten' + 'bodenarten': 'Bodenarten_Freizeitsport', + 'sportarten': 'Freizeitsportarten', + 'besonderheiten': 'Besonderheiten_Freizeitsport' } associated_models = { 'Freizeitsport_Fotos': 'freizeitsport' @@ -1175,8 +1186,9 @@ class BasemodelMeta(ComplexModel.BasemodelMeta): 'gruenpflegeobjekt': 'Grünpflegeobjekt', 'staedtisch': 'städtisch?', 'bezeichnung': 'Bezeichnung', - 'beschreibung': 'Beschreibung', - 'sportarten': 'Sportarten' + 'bodenarten': 'Bodenarten', + 'sportarten': 'Sportarten', + 'besonderheiten': 'Besonderheiten' } list_fields_with_foreign_key = { 'gruenpflegeobjekt': 'gruenpflegeobjekt' @@ -1186,17 +1198,17 @@ class BasemodelMeta(ComplexModel.BasemodelMeta): 'gruenpflegeobjekt': 'Grünpflegeobjekt', 'staedtisch': 'städtisch?', 'bezeichnung': 'Bezeichnung', - 'beschreibung': 'Beschreibung', - 'sportarten': 'Sportarten' + 'bodenarten': 'Bodenarten', + 'sportarten': 'Sportarten', + 'besonderheiten': 'Besonderheiten' } map_filter_fields_as_list = ['gruenpflegeobjekt'] def string_representation(self): gruenpflegeobjekt_str = str(self.gruenpflegeobjekt) + ', ' if self.gruenpflegeobjekt else '' bezeichnung_str = self.bezeichnung + ', ' if self.bezeichnung else '' - beschreibung_str = self.beschreibung + ', ' if self.beschreibung else '' staedtisch_str = 'städtisch' if self.staedtisch else 'nicht städtisch' - return gruenpflegeobjekt_str + bezeichnung_str + beschreibung_str + staedtisch_str + return gruenpflegeobjekt_str + bezeichnung_str + staedtisch_str def __str__(self): return self.string_representation() @@ -3225,12 +3237,29 @@ class Spielplaetze(ComplexModel): null=True, validators=standard_validators ) - beschreibung = CharField( - verbose_name='Beschreibung', - max_length=255, - blank=True, - null=True, - validators=standard_validators + bodenarten = ChoiceArrayField( + CharField( + verbose_name='Bodenarten', + max_length=255, + choices=() + ), + verbose_name='Bodenarten' + ) + spielgeraete = ChoiceArrayField( + CharField( + verbose_name='Spielgeräte', + max_length=255, + choices=() + ), + verbose_name='Spielgeräte' + ) + besonderheiten = ChoiceArrayField( + CharField( + verbose_name='Besonderheiten', + max_length=255, + choices=() + ), + verbose_name='Besonderheiten' ) spielplatz = CharField( max_length=255, @@ -3248,6 +3277,11 @@ class Meta(ComplexModel.Meta): class BasemodelMeta(ComplexModel.BasemodelMeta): description = 'Spielplätze in der Hanse- und Universitätsstadt Rostock' + choices_models_for_choices_fields = { + 'bodenarten': 'Bodenarten_Spielplaetze', + 'spielgeraete': 'Spielgeraete', + 'besonderheiten': 'Besonderheiten_Spielplaetze' + } associated_models = { 'Spielplaetze_Fotos': 'spielplatz' } @@ -3258,7 +3292,9 @@ class BasemodelMeta(ComplexModel.BasemodelMeta): 'gruenpflegeobjekt': 'Grünpflegeobjekt', 'staedtisch': 'städtisch?', 'bezeichnung': 'Bezeichnung', - 'beschreibung': 'Beschreibung' + 'bodenarten': 'Bodenarten', + 'spielgeraete': 'Spielgeräte', + 'besonderheiten': 'Besonderheiten' } list_fields_with_foreign_key = { 'gruenpflegeobjekt': 'gruenpflegeobjekt' @@ -3268,16 +3304,17 @@ class BasemodelMeta(ComplexModel.BasemodelMeta): 'gruenpflegeobjekt': 'Grünpflegeobjekt', 'staedtisch': 'städtisch?', 'bezeichnung': 'Bezeichnung', - 'beschreibung': 'Beschreibung' + 'bodenarten': 'Bodenarten', + 'spielgeraete': 'Spielgeräte', + 'besonderheiten': 'Besonderheiten' } map_filter_fields_as_list = ['gruenpflegeobjekt'] def string_representation(self): gruenpflegeobjekt_str = str(self.gruenpflegeobjekt) + ', ' if self.gruenpflegeobjekt else '' bezeichnung_str = self.bezeichnung + ', ' if self.bezeichnung else '' - beschreibung_str = self.beschreibung + ', ' if self.beschreibung else '' staedtisch_str = 'städtisch' if self.staedtisch else 'nicht städtisch' - return gruenpflegeobjekt_str + bezeichnung_str + beschreibung_str + staedtisch_str + return gruenpflegeobjekt_str + bezeichnung_str + staedtisch_str def __str__(self): return self.string_representation() diff --git a/datenmanagement/sql/schema.sql b/datenmanagement/sql/schema.sql index abc484d..4de9f3c 100644 --- a/datenmanagement/sql/schema.sql +++ b/datenmanagement/sql/schema.sql @@ -702,6 +702,30 @@ CREATE TABLE codelisten.befestigungsarten_warteflaeche_haltestellenkataster ( ); +-- +-- Name: besonderheiten_freizeitsport; Type: TABLE; Schema: codelisten; Owner: - +-- + +CREATE TABLE codelisten.besonderheiten_freizeitsport ( + uuid uuid DEFAULT public.uuid_generate_v4() NOT NULL, + aktualisiert date DEFAULT (now())::date NOT NULL, + erstellt date DEFAULT (now())::date NOT NULL, + besonderheit character varying(255) NOT NULL +); + + +-- +-- Name: besonderheiten_spielplaetze; Type: TABLE; Schema: codelisten; Owner: - +-- + +CREATE TABLE codelisten.besonderheiten_spielplaetze ( + uuid uuid DEFAULT public.uuid_generate_v4() NOT NULL, + aktualisiert date DEFAULT (now())::date NOT NULL, + erstellt date DEFAULT (now())::date NOT NULL, + besonderheit character varying(255) NOT NULL +); + + -- -- Name: betriebsarten; Type: TABLE; Schema: codelisten; Owner: - -- @@ -764,6 +788,30 @@ CREATE TABLE codelisten.bewirtschafter_betreiber_traeger_eigentuemer ( ); +-- +-- Name: bodenarten_freizeitsport; Type: TABLE; Schema: codelisten; Owner: - +-- + +CREATE TABLE codelisten.bodenarten_freizeitsport ( + uuid uuid DEFAULT public.uuid_generate_v4() NOT NULL, + aktualisiert date DEFAULT (now())::date NOT NULL, + erstellt date DEFAULT (now())::date NOT NULL, + bodenart character varying(255) NOT NULL +); + + +-- +-- Name: bodenarten_spielplaetze; Type: TABLE; Schema: codelisten; Owner: - +-- + +CREATE TABLE codelisten.bodenarten_spielplaetze ( + uuid uuid DEFAULT public.uuid_generate_v4() NOT NULL, + aktualisiert date DEFAULT (now())::date NOT NULL, + erstellt date DEFAULT (now())::date NOT NULL, + bodenart character varying(255) NOT NULL +); + + -- -- Name: dfi_typen_haltestellenkataster; Type: TABLE; Schema: codelisten; Owner: - -- @@ -1245,6 +1293,18 @@ CREATE TABLE codelisten.sparten_baustellen ( ); +-- +-- Name: spielgeraete; Type: TABLE; Schema: codelisten; Owner: - +-- + +CREATE TABLE codelisten.spielgeraete ( + uuid uuid DEFAULT public.uuid_generate_v4() NOT NULL, + aktualisiert date DEFAULT (now())::date NOT NULL, + erstellt date DEFAULT (now())::date NOT NULL, + bezeichnung character varying(255) NOT NULL +); + + -- -- Name: sportarten; Type: TABLE; Schema: codelisten; Owner: - -- @@ -2006,7 +2066,9 @@ CREATE TABLE fachdaten.freizeitsport_hro ( beschreibung character varying(255), sportarten character varying(255)[] NOT NULL, geometrie public.geometry(Point,25833) NOT NULL, - freizeitsport character varying(255) + freizeitsport character varying(255), + bodenarten character varying(255)[], + besonderheiten character varying(255)[] ); @@ -2639,7 +2701,10 @@ CREATE TABLE fachdaten.spielplaetze_hro ( bezeichnung character varying(255), beschreibung character varying(255), geometrie public.geometry(Point,25833) NOT NULL, - spielplatz character varying(255) + spielplatz character varying(255), + spielgeraete character varying(255)[], + bodenarten character varying(255)[], + besonderheiten character varying(255)[] ); @@ -4308,6 +4373,38 @@ ALTER TABLE ONLY codelisten.befestigungsarten_warteflaeche_haltestellenkataster ADD CONSTRAINT befestigungsarten_warteflaeche_haltestellenkataster_pk PRIMARY KEY (uuid); +-- +-- Name: besonderheiten_freizeitsport besonderheiten_freizeitsport_besonderheit_unique; Type: CONSTRAINT; Schema: codelisten; Owner: - +-- + +ALTER TABLE ONLY codelisten.besonderheiten_freizeitsport + ADD CONSTRAINT besonderheiten_freizeitsport_besonderheit_unique UNIQUE (besonderheit); + + +-- +-- Name: besonderheiten_freizeitsport besonderheiten_freizeitsport_pk; Type: CONSTRAINT; Schema: codelisten; Owner: - +-- + +ALTER TABLE ONLY codelisten.besonderheiten_freizeitsport + ADD CONSTRAINT besonderheiten_freizeitsport_pk PRIMARY KEY (uuid); + + +-- +-- Name: besonderheiten_spielplaetze besonderheiten_spielplaetze_besonderheit_unique; Type: CONSTRAINT; Schema: codelisten; Owner: - +-- + +ALTER TABLE ONLY codelisten.besonderheiten_spielplaetze + ADD CONSTRAINT besonderheiten_spielplaetze_besonderheit_unique UNIQUE (besonderheit); + + +-- +-- Name: besonderheiten_spielplaetze besonderheiten_spielplaetze_pk; Type: CONSTRAINT; Schema: codelisten; Owner: - +-- + +ALTER TABLE ONLY codelisten.besonderheiten_spielplaetze + ADD CONSTRAINT besonderheiten_spielplaetze_pk PRIMARY KEY (uuid); + + -- -- Name: betriebsarten betriebsarten_betriebsart_unique; Type: CONSTRAINT; Schema: codelisten; Owner: - -- @@ -4372,6 +4469,38 @@ ALTER TABLE ONLY codelisten.bewirtschafter_betreiber_traeger_eigentuemer ADD CONSTRAINT bewirtschafter_betreiber_traeger_eigentuemer_pk PRIMARY KEY (uuid); +-- +-- Name: bodenarten_freizeitsport bodenarten_freizeitsport_bodenart_unique; Type: CONSTRAINT; Schema: codelisten; Owner: - +-- + +ALTER TABLE ONLY codelisten.bodenarten_freizeitsport + ADD CONSTRAINT bodenarten_freizeitsport_bodenart_unique UNIQUE (bodenart); + + +-- +-- Name: bodenarten_freizeitsport bodenarten_freizeitsport_pk; Type: CONSTRAINT; Schema: codelisten; Owner: - +-- + +ALTER TABLE ONLY codelisten.bodenarten_freizeitsport + ADD CONSTRAINT bodenarten_freizeitsport_pk PRIMARY KEY (uuid); + + +-- +-- Name: bodenarten_spielplaetze bodenarten_spielplaetze_bodenart_unique; Type: CONSTRAINT; Schema: codelisten; Owner: - +-- + +ALTER TABLE ONLY codelisten.bodenarten_spielplaetze + ADD CONSTRAINT bodenarten_spielplaetze_bodenart_unique UNIQUE (bodenart); + + +-- +-- Name: bodenarten_spielplaetze bodenarten_spielplaetze_pk; Type: CONSTRAINT; Schema: codelisten; Owner: - +-- + +ALTER TABLE ONLY codelisten.bodenarten_spielplaetze + ADD CONSTRAINT bodenarten_spielplaetze_pk PRIMARY KEY (uuid); + + -- -- Name: dfi_typen_haltestellenkataster dfi_typen_haltestellenkataster_dfi_typ_unique; Type: CONSTRAINT; Schema: codelisten; Owner: - -- @@ -4996,6 +5125,22 @@ ALTER TABLE ONLY codelisten.sparten_baustellen ADD CONSTRAINT sparten_baustellen_sparte_unique UNIQUE (sparte); +-- +-- Name: spielgeraete spielgeraete_pk; Type: CONSTRAINT; Schema: codelisten; Owner: - +-- + +ALTER TABLE ONLY codelisten.spielgeraete + ADD CONSTRAINT spielgeraete_pk PRIMARY KEY (uuid); + + +-- +-- Name: spielgeraete spielgeraete_unique; Type: CONSTRAINT; Schema: codelisten; Owner: - +-- + +ALTER TABLE ONLY codelisten.spielgeraete + ADD CONSTRAINT spielgeraete_unique UNIQUE (bezeichnung); + + -- -- Name: sportarten sportarten_pk; Type: CONSTRAINT; Schema: codelisten; Owner: - -- diff --git a/datenmanagement/tests/test_models_codelist.py b/datenmanagement/tests/test_models_codelist.py index 35e9f9d..5974fd1 100644 --- a/datenmanagement/tests/test_models_codelist.py +++ b/datenmanagement/tests/test_models_codelist.py @@ -9,13 +9,14 @@ Arten_UVP_Vorpruefungen, Arten_Wege, Auftraggeber_Baustellen, \ Ausfuehrungen_Haltestellenkataster, Ausfuehrungen_Ingenieurbauwerke, \ Befestigungsarten_Aufstellflaeche_Bus_Haltestellenkataster, \ - Befestigungsarten_Warteflaeche_Haltestellenkataster, Betriebsarten, Betriebszeiten, \ + Befestigungsarten_Warteflaeche_Haltestellenkataster, Besonderheiten_Freizeitsport, \ + Besonderheiten_Spielplaetze, Betriebsarten, Betriebszeiten, \ Bevollmaechtigte_Bezirksschornsteinfeger, Bewirtschafter_Betreiber_Traeger_Eigentuemer, \ - E_Anschluesse_Parkscheinautomaten, Ergebnisse_UVP_Vorpruefungen, \ - Fahrbahnwinterdienst_Strassenreinigungssatzung_HRO, Fotomotive_Haltestellenkataster, \ - Freizeitsportarten, Fundamenttypen_RSAG, Gebaeudebauweisen, Gebaeudefunktionen, \ - Genehmigungsbehoerden_UVP_Vorhaben, Geschlechter_Kadaverfunde, Haefen, Hersteller_Poller, \ - Kabeltypen_Lichtwellenleiterinfrastruktur, Kategorien_Strassen, \ + Bodenarten_Freizeitsport, Bodenarten_Spielplaetze, E_Anschluesse_Parkscheinautomaten, \ + Ergebnisse_UVP_Vorpruefungen, Fahrbahnwinterdienst_Strassenreinigungssatzung_HRO, \ + Fotomotive_Haltestellenkataster, Freizeitsportarten, Fundamenttypen_RSAG, Gebaeudebauweisen, \ + Gebaeudefunktionen, Genehmigungsbehoerden_UVP_Vorhaben, Geschlechter_Kadaverfunde, Haefen, \ + Hersteller_Poller, Kabeltypen_Lichtwellenleiterinfrastruktur, Kategorien_Strassen, \ Ladekarten_Ladestationen_Elektrofahrzeuge, Linien, Mastkennzeichen_RSAG, Masttypen_RSAG, \ Masttypen_Haltestellenkataster, Materialien_Denksteine, Materialien_Durchlaesse, \ Objektarten_Lichtwellenleiterinfrastruktur, Ordnungen_Fliessgewaesser, Personentitel, \ @@ -23,7 +24,7 @@ Reinigungsklassen_Strassenreinigungssatzung_HRO, \ Reinigungsrhythmen_Strassenreinigungssatzung_HRO, Schaeden_Haltestellenkataster, \ Schlagwoerter_Bildungstraeger, Schlagwoerter_Vereine, Schliessungen_Poller, \ - Sitzbanktypen_Haltestellenkataster, Sparten_Baustellen, Sportarten, \ + Sitzbanktypen_Haltestellenkataster, Sparten_Baustellen, Spielgeraete, Sportarten, \ Status_Baudenkmale_Denkmalbereiche, Status_Baustellen_geplant, Status_Poller, \ Status_Baustellen_Fotodokumentation_Fotos, Tierseuchen, Typen_Abfallbehaelter, \ DFI_Typen_Haltestellenkataster, Typen_Erdwaermesonden, \ @@ -4055,27 +4056,556 @@ def test_view_deleteimmediately(self): ) +class BesonderheitenFreizeitsportTest(DefaultCodelistTestCase): + """ + Besonderheiten in Bezug auf Freizeitsport + """ + + model = Besonderheiten_Freizeitsport + create_test_subset_in_classmethod = False + attributes_values_db_initial = { + 'besonderheit': 'Besonderheit1' + } + attributes_values_db_updated = { + 'besonderheit': 'Besonderheit2' + } + attributes_values_view_initial = { + 'besonderheit': 'Besonderheit3' + } + attributes_values_view_updated = { + 'besonderheit': 'Besonderheit4' + } + attributes_values_view_invalid = { + 'besonderheit': INVALID_STRING + } + + def setUp(self): + self.init() + + def test_is_codelist(self): + self.generic_is_codelist_test() + + def test_create(self): + self.generic_create_test(self.model, self.attributes_values_db_initial) + + def test_update(self): + self.generic_update_test(self.model, self.attributes_values_db_updated) + + def test_delete(self): + self.generic_delete_test(self.model) + + def test_view_start(self): + self.generic_view_test( + self.model, + self.model.__name__ + '_start', + {}, + 200, + 'text/html; charset=utf-8', + START_VIEW_STRING + ) + + def test_view_list(self): + self.generic_view_test( + self.model, + self.model.__name__ + '_list', + {}, + 200, + 'text/html; charset=utf-8', + LIST_VIEW_STRING + ) + + def test_view_data(self): + self.generic_view_test( + self.model, + self.model.__name__ + '_data', + DATA_VIEW_PARAMS, + 200, + 'application/json', + str(self.test_object.pk) + ) + + def test_view_add_success(self): + self.generic_add_update_view_test( + False, + self.model, + self.attributes_values_view_initial, + 302, + 'text/html; charset=utf-8', + 1 + ) + + def test_view_add_error(self): + self.generic_add_update_view_test( + False, + self.model, + self.attributes_values_view_invalid, + 200, + 'text/html; charset=utf-8', + 0 + ) + + def test_view_change_success(self): + self.generic_add_update_view_test( + True, + self.model, + self.attributes_values_view_updated, + 302, + 'text/html; charset=utf-8', + 1 + ) + + def test_view_change_error(self): + self.generic_add_update_view_test( + True, + self.model, + self.attributes_values_view_invalid, + 200, + 'text/html; charset=utf-8', + 0 + ) + + def test_view_delete(self): + self.generic_delete_view_test( + False, + self.model, + self.attributes_values_db_initial, + 302, + 'text/html; charset=utf-8' + ) + + def test_view_deleteimmediately(self): + self.generic_delete_view_test( + True, + self.model, + self.attributes_values_db_initial, + 204, + 'text/html; charset=utf-8' + ) + + +class BesonderheitenSpielplaetzeTest(DefaultCodelistTestCase): + """ + Besonderheiten in Bezug auf Spielplätze + """ + + model = Besonderheiten_Spielplaetze + create_test_subset_in_classmethod = False + attributes_values_db_initial = { + 'besonderheit': 'Besonderheit1' + } + attributes_values_db_updated = { + 'besonderheit': 'Besonderheit2' + } + attributes_values_view_initial = { + 'besonderheit': 'Besonderheit3' + } + attributes_values_view_updated = { + 'besonderheit': 'Besonderheit4' + } + attributes_values_view_invalid = { + 'besonderheit': INVALID_STRING + } + + def setUp(self): + self.init() + + def test_is_codelist(self): + self.generic_is_codelist_test() + + def test_create(self): + self.generic_create_test(self.model, self.attributes_values_db_initial) + + def test_update(self): + self.generic_update_test(self.model, self.attributes_values_db_updated) + + def test_delete(self): + self.generic_delete_test(self.model) + + def test_view_start(self): + self.generic_view_test( + self.model, + self.model.__name__ + '_start', + {}, + 200, + 'text/html; charset=utf-8', + START_VIEW_STRING + ) + + def test_view_list(self): + self.generic_view_test( + self.model, + self.model.__name__ + '_list', + {}, + 200, + 'text/html; charset=utf-8', + LIST_VIEW_STRING + ) + + def test_view_data(self): + self.generic_view_test( + self.model, + self.model.__name__ + '_data', + DATA_VIEW_PARAMS, + 200, + 'application/json', + str(self.test_object.pk) + ) + + def test_view_add_success(self): + self.generic_add_update_view_test( + False, + self.model, + self.attributes_values_view_initial, + 302, + 'text/html; charset=utf-8', + 1 + ) + + def test_view_add_error(self): + self.generic_add_update_view_test( + False, + self.model, + self.attributes_values_view_invalid, + 200, + 'text/html; charset=utf-8', + 0 + ) + + def test_view_change_success(self): + self.generic_add_update_view_test( + True, + self.model, + self.attributes_values_view_updated, + 302, + 'text/html; charset=utf-8', + 1 + ) + + def test_view_change_error(self): + self.generic_add_update_view_test( + True, + self.model, + self.attributes_values_view_invalid, + 200, + 'text/html; charset=utf-8', + 0 + ) + + def test_view_delete(self): + self.generic_delete_view_test( + False, + self.model, + self.attributes_values_db_initial, + 302, + 'text/html; charset=utf-8' + ) + + def test_view_deleteimmediately(self): + self.generic_delete_view_test( + True, + self.model, + self.attributes_values_db_initial, + 204, + 'text/html; charset=utf-8' + ) + + class BetriebsartenTest(DefaultCodelistTestCase): """ - Betriebsarten + Betriebsarten + """ + + model = Betriebsarten + create_test_subset_in_classmethod = False + attributes_values_db_initial = { + 'betriebsart': 'Betriebsart1' + } + attributes_values_db_updated = { + 'betriebsart': 'Betriebsart2' + } + attributes_values_view_initial = { + 'betriebsart': 'Betriebsart3' + } + attributes_values_view_updated = { + 'betriebsart': 'Betriebsart4' + } + attributes_values_view_invalid = { + 'betriebsart': INVALID_STRING + } + + def setUp(self): + self.init() + + def test_is_codelist(self): + self.generic_is_codelist_test() + + def test_create(self): + self.generic_create_test(self.model, self.attributes_values_db_initial) + + def test_update(self): + self.generic_update_test(self.model, self.attributes_values_db_updated) + + def test_delete(self): + self.generic_delete_test(self.model) + + def test_view_start(self): + self.generic_view_test( + self.model, + self.model.__name__ + '_start', + {}, + 200, + 'text/html; charset=utf-8', + START_VIEW_STRING + ) + + def test_view_list(self): + self.generic_view_test( + self.model, + self.model.__name__ + '_list', + {}, + 200, + 'text/html; charset=utf-8', + LIST_VIEW_STRING + ) + + def test_view_data(self): + self.generic_view_test( + self.model, + self.model.__name__ + '_data', + DATA_VIEW_PARAMS, + 200, + 'application/json', + str(self.test_object.pk) + ) + + def test_view_add_success(self): + self.generic_add_update_view_test( + False, + self.model, + self.attributes_values_view_initial, + 302, + 'text/html; charset=utf-8', + 1 + ) + + def test_view_add_error(self): + self.generic_add_update_view_test( + False, + self.model, + self.attributes_values_view_invalid, + 200, + 'text/html; charset=utf-8', + 0 + ) + + def test_view_change_success(self): + self.generic_add_update_view_test( + True, + self.model, + self.attributes_values_view_updated, + 302, + 'text/html; charset=utf-8', + 1 + ) + + def test_view_change_error(self): + self.generic_add_update_view_test( + True, + self.model, + self.attributes_values_view_invalid, + 200, + 'text/html; charset=utf-8', + 0 + ) + + def test_view_delete(self): + self.generic_delete_view_test( + False, + self.model, + self.attributes_values_db_initial, + 302, + 'text/html; charset=utf-8' + ) + + def test_view_deleteimmediately(self): + self.generic_delete_view_test( + True, + self.model, + self.attributes_values_db_initial, + 204, + 'text/html; charset=utf-8' + ) + + +class BetriebszeitenTest(DefaultCodelistTestCase): + """ + Betriebszeiten + """ + + model = Betriebszeiten + create_test_subset_in_classmethod = False + attributes_values_db_initial = { + 'betriebszeit': 'Betriebszeit1' + } + attributes_values_db_updated = { + 'betriebszeit': 'Betriebszeit2' + } + attributes_values_view_initial = { + 'betriebszeit': 'Betriebszeit3' + } + attributes_values_view_updated = { + 'betriebszeit': 'Betriebszeit4' + } + attributes_values_view_invalid = { + 'betriebszeit': INVALID_STRING + } + + def setUp(self): + self.init() + + def test_is_codelist(self): + self.generic_is_codelist_test() + + def test_create(self): + self.generic_create_test(self.model, self.attributes_values_db_initial) + + def test_update(self): + self.generic_update_test(self.model, self.attributes_values_db_updated) + + def test_delete(self): + self.generic_delete_test(self.model) + + def test_view_start(self): + self.generic_view_test( + self.model, + self.model.__name__ + '_start', + {}, + 200, + 'text/html; charset=utf-8', + START_VIEW_STRING + ) + + def test_view_list(self): + self.generic_view_test( + self.model, + self.model.__name__ + '_list', + {}, + 200, + 'text/html; charset=utf-8', + LIST_VIEW_STRING + ) + + def test_view_data(self): + self.generic_view_test( + self.model, + self.model.__name__ + '_data', + DATA_VIEW_PARAMS, + 200, + 'application/json', + str(self.test_object.pk) + ) + + def test_view_add_success(self): + self.generic_add_update_view_test( + False, + self.model, + self.attributes_values_view_initial, + 302, + 'text/html; charset=utf-8', + 1 + ) + + def test_view_add_error(self): + self.generic_add_update_view_test( + False, + self.model, + self.attributes_values_view_invalid, + 200, + 'text/html; charset=utf-8', + 0 + ) + + def test_view_change_success(self): + self.generic_add_update_view_test( + True, + self.model, + self.attributes_values_view_updated, + 302, + 'text/html; charset=utf-8', + 1 + ) + + def test_view_change_error(self): + self.generic_add_update_view_test( + True, + self.model, + self.attributes_values_view_invalid, + 200, + 'text/html; charset=utf-8', + 0 + ) + + def test_view_delete(self): + self.generic_delete_view_test( + False, + self.model, + self.attributes_values_db_initial, + 302, + 'text/html; charset=utf-8' + ) + + def test_view_deleteimmediately(self): + self.generic_delete_view_test( + True, + self.model, + self.attributes_values_db_initial, + 204, + 'text/html; charset=utf-8' + ) + + +class BevollmaechtigteBezirksschornsteinfegerTest(DefaultCodelistTestCase): + """ + bevollmächtigte Bezirksschornsteinfeger """ - model = Betriebsarten + model = Bevollmaechtigte_Bezirksschornsteinfeger create_test_subset_in_classmethod = False attributes_values_db_initial = { - 'betriebsart': 'Betriebsart1' + 'bezirk': 'ABC-12', + 'auswaertig': False, + 'vorname': 'Vorname1', + 'nachname': 'Nachname1', + 'anschrift_strasse': 'Straße1', + 'anschrift_hausnummer': '123', + 'anschrift_postleitzahl': '12345', + 'anschrift_ort': 'Ort1' } attributes_values_db_updated = { - 'betriebsart': 'Betriebsart2' + 'nachname': 'Nachname2' } attributes_values_view_initial = { - 'betriebsart': 'Betriebsart3' + 'bezirk': 'DEF-34', + 'auswaertig': False, + 'vorname': 'Vorname3', + 'nachname': 'Nachname3', + 'anschrift_strasse': 'Straße3', + 'anschrift_hausnummer': '345', + 'anschrift_postleitzahl': '34567', + 'anschrift_ort': 'Ort3' } attributes_values_view_updated = { - 'betriebsart': 'Betriebsart4' + 'bezirk': 'GHI-56', + 'auswaertig': False, + 'vorname': 'Vorname4', + 'nachname': 'Nachname4', + 'anschrift_strasse': 'Straße4', + 'anschrift_hausnummer': '456', + 'anschrift_postleitzahl': '45678', + 'anschrift_ort': 'Ort4' } attributes_values_view_invalid = { - 'betriebsart': INVALID_STRING + 'nachname': INVALID_STRING } def setUp(self): @@ -4182,27 +4712,32 @@ def test_view_deleteimmediately(self): ) -class BetriebszeitenTest(DefaultCodelistTestCase): +class BewirtschafterBetreiberTraegerEigentuemerTest(DefaultCodelistTestCase): """ - Betriebszeiten + Bewirtschafter, Betreiber, Träger, Eigentümer etc. """ - model = Betriebszeiten + model = Bewirtschafter_Betreiber_Traeger_Eigentuemer create_test_subset_in_classmethod = False attributes_values_db_initial = { - 'betriebszeit': 'Betriebszeit1' + 'bezeichnung': 'Bezeichnung1', + 'art': 'Art1' } attributes_values_db_updated = { - 'betriebszeit': 'Betriebszeit2' + 'bezeichnung': 'Bezeichnung2', + 'art': 'Art2' } attributes_values_view_initial = { - 'betriebszeit': 'Betriebszeit3' + 'bezeichnung': 'Bezeichnung3', + 'art': 'Art3' } attributes_values_view_updated = { - 'betriebszeit': 'Betriebszeit4' + 'bezeichnung': 'Bezeichnung4', + 'art': 'Art4' } attributes_values_view_invalid = { - 'betriebszeit': INVALID_STRING + 'bezeichnung': INVALID_STRING, + 'art': INVALID_STRING } def setUp(self): @@ -4309,48 +4844,27 @@ def test_view_deleteimmediately(self): ) -class BevollmaechtigteBezirksschornsteinfegerTest(DefaultCodelistTestCase): +class BodenartenFreizeitsportTest(DefaultCodelistTestCase): """ - bevollmächtigte Bezirksschornsteinfeger + Bodenarten in Bezug auf Freizeitsport """ - model = Bevollmaechtigte_Bezirksschornsteinfeger + model = Bodenarten_Freizeitsport create_test_subset_in_classmethod = False attributes_values_db_initial = { - 'bezirk': 'ABC-12', - 'auswaertig': False, - 'vorname': 'Vorname1', - 'nachname': 'Nachname1', - 'anschrift_strasse': 'Straße1', - 'anschrift_hausnummer': '123', - 'anschrift_postleitzahl': '12345', - 'anschrift_ort': 'Ort1' + 'bodenart': 'Bodenart1' } attributes_values_db_updated = { - 'nachname': 'Nachname2' + 'bodenart': 'Bodenart2' } attributes_values_view_initial = { - 'bezirk': 'DEF-34', - 'auswaertig': False, - 'vorname': 'Vorname3', - 'nachname': 'Nachname3', - 'anschrift_strasse': 'Straße3', - 'anschrift_hausnummer': '345', - 'anschrift_postleitzahl': '34567', - 'anschrift_ort': 'Ort3' + 'bodenart': 'Bodenart3' } attributes_values_view_updated = { - 'bezirk': 'GHI-56', - 'auswaertig': False, - 'vorname': 'Vorname4', - 'nachname': 'Nachname4', - 'anschrift_strasse': 'Straße4', - 'anschrift_hausnummer': '456', - 'anschrift_postleitzahl': '45678', - 'anschrift_ort': 'Ort4' + 'bodenart': 'Bodenart4' } attributes_values_view_invalid = { - 'nachname': INVALID_STRING + 'bodenart': INVALID_STRING } def setUp(self): @@ -4457,32 +4971,27 @@ def test_view_deleteimmediately(self): ) -class BewirtschafterBetreiberTraegerEigentuemerTest(DefaultCodelistTestCase): +class BodenartenSpielplaetzeTest(DefaultCodelistTestCase): """ - Bewirtschafter, Betreiber, Träger, Eigentümer etc. + Bodenarten in Bezug auf Spielplätze """ - model = Bewirtschafter_Betreiber_Traeger_Eigentuemer + model = Bodenarten_Spielplaetze create_test_subset_in_classmethod = False attributes_values_db_initial = { - 'bezeichnung': 'Bezeichnung1', - 'art': 'Art1' + 'bodenart': 'Bodenart1' } attributes_values_db_updated = { - 'bezeichnung': 'Bezeichnung2', - 'art': 'Art2' + 'bodenart': 'Bodenart2' } attributes_values_view_initial = { - 'bezeichnung': 'Bezeichnung3', - 'art': 'Art3' + 'bodenart': 'Bodenart3' } attributes_values_view_updated = { - 'bezeichnung': 'Bezeichnung4', - 'art': 'Art4' + 'bodenart': 'Bodenart4' } attributes_values_view_invalid = { - 'bezeichnung': INVALID_STRING, - 'art': INVALID_STRING + 'bodenart': INVALID_STRING } def setUp(self): @@ -9220,6 +9729,133 @@ def test_view_deleteimmediately(self): ) +class SpielgeraeteTest(DefaultCodelistTestCase): + """ + Spielgeräte + """ + + model = Spielgeraete + create_test_subset_in_classmethod = False + attributes_values_db_initial = { + 'bezeichnung': 'Bezeichnung1' + } + attributes_values_db_updated = { + 'bezeichnung': 'Bezeichnung2' + } + attributes_values_view_initial = { + 'bezeichnung': 'Bezeichnung3' + } + attributes_values_view_updated = { + 'bezeichnung': 'Bezeichnung4' + } + attributes_values_view_invalid = { + 'bezeichnung': INVALID_STRING + } + + def setUp(self): + self.init() + + def test_is_codelist(self): + self.generic_is_codelist_test() + + def test_create(self): + self.generic_create_test(self.model, self.attributes_values_db_initial) + + def test_update(self): + self.generic_update_test(self.model, self.attributes_values_db_updated) + + def test_delete(self): + self.generic_delete_test(self.model) + + def test_view_start(self): + self.generic_view_test( + self.model, + self.model.__name__ + '_start', + {}, + 200, + 'text/html; charset=utf-8', + START_VIEW_STRING + ) + + def test_view_list(self): + self.generic_view_test( + self.model, + self.model.__name__ + '_list', + {}, + 200, + 'text/html; charset=utf-8', + LIST_VIEW_STRING + ) + + def test_view_data(self): + self.generic_view_test( + self.model, + self.model.__name__ + '_data', + DATA_VIEW_PARAMS, + 200, + 'application/json', + str(self.test_object.pk) + ) + + def test_view_add_success(self): + self.generic_add_update_view_test( + False, + self.model, + self.attributes_values_view_initial, + 302, + 'text/html; charset=utf-8', + 1 + ) + + def test_view_add_error(self): + self.generic_add_update_view_test( + False, + self.model, + self.attributes_values_view_invalid, + 200, + 'text/html; charset=utf-8', + 0 + ) + + def test_view_change_success(self): + self.generic_add_update_view_test( + True, + self.model, + self.attributes_values_view_updated, + 302, + 'text/html; charset=utf-8', + 1 + ) + + def test_view_change_error(self): + self.generic_add_update_view_test( + True, + self.model, + self.attributes_values_view_invalid, + 200, + 'text/html; charset=utf-8', + 0 + ) + + def test_view_delete(self): + self.generic_delete_view_test( + False, + self.model, + self.attributes_values_db_initial, + 302, + 'text/html; charset=utf-8' + ) + + def test_view_deleteimmediately(self): + self.generic_delete_view_test( + True, + self.model, + self.attributes_values_db_initial, + 204, + 'text/html; charset=utf-8' + ) + + class SportartenTest(DefaultCodelistTestCase): """ Sportarten diff --git a/datenmanagement/tests/test_models_complex.py b/datenmanagement/tests/test_models_complex.py index c3e915a..bae5281 100644 --- a/datenmanagement/tests/test_models_complex.py +++ b/datenmanagement/tests/test_models_complex.py @@ -5,7 +5,8 @@ Arten_Adressunsicherheiten, Arten_Fallwildsuchen_Kontrollen, Arten_UVP_Vorpruefungen, \ Arten_Wege, Auftraggeber_Baustellen, Baustellen_Fotodokumentation_Baustellen, \ Baustellen_Fotodokumentation_Fotos, Baustellen_geplant, Baustellen_geplant_Dokumente, \ - Baustellen_geplant_Links, Durchlaesse_Durchlaesse, Durchlaesse_Fotos, \ + Baustellen_geplant_Links, Besonderheiten_Freizeitsport, Besonderheiten_Spielplaetze, \ + Bodenarten_Freizeitsport, Bodenarten_Spielplaetze, Durchlaesse_Durchlaesse, Durchlaesse_Fotos, \ E_Anschluesse_Parkscheinautomaten, Ergebnisse_UVP_Vorpruefungen, \ Fallwildsuchen_Kontrollgebiete, Fallwildsuchen_Nachweise, Fotomotive_Haltestellenkataster, \ Freizeitsport, Freizeitsportarten, Freizeitsport_Fotos, Geh_Radwegereinigung, \ @@ -16,7 +17,7 @@ Objektarten_Lichtwellenleiterinfrastruktur, Parkscheinautomaten_Tarife, \ Parkscheinautomaten_Parkscheinautomaten, Rechtsgrundlagen_UVP_Vorhaben, RSAG_Gleise, \ RSAG_Leitungen, RSAG_Masten, RSAG_Quertraeger, RSAG_Spanndraehte, Sparten_Baustellen, \ - Spielplaetze, Spielplaetze_Fotos, Status_Baustellen_Fotodokumentation_Fotos, \ + Spielgeraete, Spielplaetze, Spielplaetze_Fotos, Status_Baustellen_Fotodokumentation_Fotos, \ Status_Baustellen_geplant, Strassenreinigung, Strassenreinigung_Flaechen, Strassen_Simple, \ Strassen_Simple_Historie, Strassen_Simple_Namensanalyse, Tierseuchen, Typen_UVP_Vorhaben, \ UVP_Vorhaben, UVP_Vorpruefungen, Verkehrliche_Lagen_Baustellen, Verkehrsmittelklassen, \ @@ -2659,15 +2660,29 @@ class FreizeitsportTest(DefaultComplexModelTestCase): @classmethod def setUpTestData(cls): super().setUpTestData() + bodenart1 = Bodenarten_Freizeitsport.objects.create( + bodenart='Bodenart1' + ) + bodenart2 = Bodenarten_Freizeitsport.objects.create( + bodenart='Bodenart2' + ) sportart1 = Freizeitsportarten.objects.create( bezeichnung='Sportart1' ) sportart2 = Freizeitsportarten.objects.create( bezeichnung='Sportart2' ) + besonderheit1 = Besonderheiten_Freizeitsport.objects.create( + besonderheit='Besonderheit1' + ) + besonderheit2 = Besonderheiten_Freizeitsport.objects.create( + besonderheit='Besonderheit2' + ) cls.attributes_values_db_initial = { 'staedtisch': True, + 'bodenarten': [bodenart1, bodenart2], 'sportarten': [sportart1, sportart2], + 'besonderheiten': [besonderheit1, besonderheit2], 'geometrie': VALID_POINT_DB } cls.attributes_values_db_updated = { @@ -2676,13 +2691,17 @@ def setUpTestData(cls): cls.attributes_values_view_initial = { 'aktiv': True, 'staedtisch': True, + 'bodenarten': [bodenart1, bodenart2], 'sportarten': [sportart1, sportart2], + 'besonderheiten': [besonderheit1, besonderheit2], 'geometrie': VALID_POINT_VIEW } cls.attributes_values_view_updated = { 'aktiv': True, 'staedtisch': False, + 'bodenarten': [bodenart1, bodenart2], 'sportarten': [sportart1, sportart2], + 'besonderheiten': [besonderheit1, besonderheit2], 'geometrie': VALID_POINT_VIEW } cls.attributes_values_view_invalid = { @@ -6171,26 +6190,61 @@ class SpielplaetzeTest(DefaultComplexModelTestCase): """ model = Spielplaetze - attributes_values_db_initial = { - 'staedtisch': True, - 'geometrie': VALID_POINT_DB - } - attributes_values_db_updated = { - 'staedtisch': False - } - attributes_values_view_initial = { - 'aktiv': True, - 'staedtisch': True, - 'geometrie': VALID_POINT_VIEW - } - attributes_values_view_updated = { - 'aktiv': True, - 'staedtisch': False, - 'geometrie': VALID_POINT_VIEW - } - attributes_values_view_invalid = { - 'bezeichnung': INVALID_STRING - } + create_test_object_in_classmethod = False + create_test_subset_in_classmethod = False + + @classmethod + def setUpTestData(cls): + super().setUpTestData() + bodenart1 = Bodenarten_Spielplaetze.objects.create( + bodenart='Bodenart1' + ) + bodenart2 = Bodenarten_Spielplaetze.objects.create( + bodenart='Bodenart2' + ) + spielgeraet1 = Spielgeraete.objects.create( + bezeichnung='Spielgeraet1' + ) + spielgeraet2 = Spielgeraete.objects.create( + bezeichnung='Spielgeraet2' + ) + besonderheit1 = Besonderheiten_Spielplaetze.objects.create( + besonderheit='Besonderheit1' + ) + besonderheit2 = Besonderheiten_Spielplaetze.objects.create( + besonderheit='Besonderheit2' + ) + cls.attributes_values_db_initial = { + 'staedtisch': True, + 'bodenarten': [bodenart1, bodenart2], + 'spielgeraete': [spielgeraet1, spielgeraet2], + 'besonderheiten': [besonderheit1, besonderheit2], + 'geometrie': VALID_POINT_DB + } + cls.attributes_values_db_updated = { + 'staedtisch': False + } + cls.attributes_values_view_initial = { + 'aktiv': True, + 'staedtisch': True, + 'bodenarten': [bodenart1, bodenart2], + 'spielgeraete': [spielgeraet1, spielgeraet2], + 'besonderheiten': [besonderheit1, besonderheit2], + 'geometrie': VALID_POINT_VIEW + } + cls.attributes_values_view_updated = { + 'aktiv': True, + 'staedtisch': False, + 'bodenarten': [bodenart1, bodenart2], + 'spielgeraete': [spielgeraet1, spielgeraet2], + 'besonderheiten': [besonderheit1, besonderheit2], + 'geometrie': VALID_POINT_VIEW + } + cls.attributes_values_view_invalid = { + 'bezeichnung': INVALID_STRING + } + cls.test_object = cls.model.objects.create(**cls.attributes_values_db_initial) + cls.test_subset = create_test_subset(cls.model, cls.test_object) def setUp(self): self.init()