From 11e77d06afa809450b05efb6f9b0e887395a5d4d Mon Sep 17 00:00:00 2001 From: KK Date: Mon, 2 Sep 2024 11:05:20 +0200 Subject: [PATCH] refactor(models,api): remove remaining MultiSelectFields Remove leftover Expression edition_type field, Character fictionality field from models. Point to new ArrayFields and change field type to ListField in custom API endpoints. --- apis_ontology/api/serializers.py | 23 ++++++++++----- apis_ontology/api/views.py | 6 ++-- ..._remove_character_fictionality_and_more.py | 29 +++++++++++++++++++ apis_ontology/models.py | 20 ------------- 4 files changed, 48 insertions(+), 30 deletions(-) create mode 100644 apis_ontology/migrations/0077_remove_character_fictionality_and_more.py diff --git a/apis_ontology/api/serializers.py b/apis_ontology/api/serializers.py index cd03c16..9386bff 100644 --- a/apis_ontology/api/serializers.py +++ b/apis_ontology/api/serializers.py @@ -66,7 +66,9 @@ class ExpressionDataSerializer(serializers.ModelSerializer): place_of_publication = PlaceDataSerializer( required=False, allow_null=True, many=True ) - edition_type = serializers.SerializerMethodField() + edition_type = serializers.ListField( + child=serializers.CharField(allow_null=True), required=False, allow_empty=True + ) language = serializers.ListField( child=serializers.CharField(allow_null=True), required=False, allow_empty=True ) @@ -84,11 +86,6 @@ class Meta: "place_of_publication", ] - def get_edition_type(self, obj) -> list["str"]: - edition_type_str = obj.get("edition_type", None) - edition_types = list(filter(None, edition_type_str.split(","))) - return get_choices_labels(edition_types, Expression.EditionTypes) - class SimpleDetailSerializer(serializers.Serializer): id = serializers.IntegerField() @@ -126,9 +123,21 @@ class RelatedWorksDict(TypedDict): class CharacterDataSerializer(serializers.ModelSerializer): + fictionality = serializers.ListField( + child=serializers.CharField(allow_null=True), required=False, allow_empty=True + ) + class Meta: model = Character - exclude = ["self_contenttype", "data_source"] + fields = [ + "forename", + "surname", + "fallback_name", + "alternative_name", + "description", + "relevancy", + "fictionality", + ] class ArchiveDataSerializer(serializers.ModelSerializer): diff --git a/apis_ontology/api/views.py b/apis_ontology/api/views.py index cc19a86..de0ca4a 100644 --- a/apis_ontology/api/views.py +++ b/apis_ontology/api/views.py @@ -219,7 +219,7 @@ def get_queryset(self): title="title", subtitle="subtitle", edition="edition", - edition_type="edition_type", + edition_type="new_edition_type", language="language", publication_date="publication_date_iso_formatted", publisher="publisher", @@ -324,7 +324,7 @@ def get_queryset(self): title="title", subtitle="subtitle", edition="edition", - edition_type="edition_type", + edition_type="new_edition_type", language="language", publication_date="publication_date_iso_formatted", publisher="publisher", @@ -342,7 +342,7 @@ def get_queryset(self): surname="surname", fallback_name="fallback_name", relevancy="relevancy", - fictionality="fictionality", + fictionality="new_fictionality", ) ) diff --git a/apis_ontology/migrations/0077_remove_character_fictionality_and_more.py b/apis_ontology/migrations/0077_remove_character_fictionality_and_more.py new file mode 100644 index 0000000..7643337 --- /dev/null +++ b/apis_ontology/migrations/0077_remove_character_fictionality_and_more.py @@ -0,0 +1,29 @@ +# Generated by Django 4.2.15 on 2024-09-02 09:07 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('apis_ontology', '0076_migrate_multiselectfield_data_to_arrayfields'), + ] + + operations = [ + migrations.RemoveField( + model_name='character', + name='fictionality', + ), + migrations.RemoveField( + model_name='expression', + name='edition_type', + ), + migrations.RemoveField( + model_name='versioncharacter', + name='fictionality', + ), + migrations.RemoveField( + model_name='versionexpression', + name='edition_type', + ), + ] diff --git a/apis_ontology/models.py b/apis_ontology/models.py index 62ed4a2..9fb9f92 100644 --- a/apis_ontology/models.py +++ b/apis_ontology/models.py @@ -667,16 +667,6 @@ class EditionTypes(models.TextChoices): help_text=_('Eingabe muss im Format "X-Y" erfolgen, z.B. 5-12'), ) - edition_type = MultiSelectField( - max_length=255, - choices=EditionTypes.choices, - blank=True, - default="", - editable=False, - verbose_name=_("Ausgabetyp (deprecated)"), - help_text=_("Zur Markierung speziell relevanter Ausgaben"), - ) - new_edition_type = ArrayField( base_field=models.CharField( max_length=255, @@ -912,16 +902,6 @@ class CharacterFictionality(models.TextChoices): help_text=_("Bedeutsamkeit für den Text, Erzählfokus"), ) - fictionality = MultiSelectField( - max_length=255, - choices=CharacterFictionality.choices, - blank=False, - default="", - editable=False, - verbose_name=_("Erfindungsgrad (deprecated)"), - help_text=_("Faktizität vs. Fiktionalität"), - ) - new_fictionality = ArrayField( base_field=models.CharField( max_length=255,