Skip to content
Snippets Groups Projects
Commit 2659f80d authored by borzechof99's avatar borzechof99 :whale2:
Browse files

Add GreetingEndModel and Views

parent 1fc55036
Branches
No related tags found
No related merge requests found
# Generated by Django 3.2 on 2021-06-28 17:51
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('quiz', '0012_merge_20210627_2254'),
]
operations = [
migrations.CreateModel(
name='GreetingEndTexts',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('greeting', models.TextField(default='Willkommen zum Uni-Sport-O-Mat!')),
('greeting_de', models.TextField(default='Willkommen zum Uni-Sport-O-Mat!', null=True)),
('greeting_en', models.TextField(default='Willkommen zum Uni-Sport-O-Mat!', null=True)),
('end', models.TextField(default='Wähle deinen Sport!')),
('end_de', models.TextField(default='Wähle deinen Sport!', null=True)),
('end_en', models.TextField(default='Wähle deinen Sport!', null=True)),
],
),
migrations.AlterField(
model_name='sport',
name='last_used',
field=models.DateField(default=django.utils.timezone.localdate),
),
]
......@@ -301,3 +301,16 @@ class QuestionOrderEntry(models.Model):
def __str__(self):
return f"Entry {self.order_id}: {self.type_of_slot}"
class GreetingEndTexts(models.Model):
"""
Database With only one Row (if everything is done right)
Includes Start and End text as column
"""
greeting = models.TextField(default="Willkommen zum Uni-Sport-O-Mat!")
end = models.TextField(default="Wähle deinen Sport!")
def __str__(self):
return f"{self.greeting} | {self.end}"
......@@ -204,3 +204,22 @@ class CriteriaSerializer(serializers.BaseSerializer):
criteria_list.append(criterion_dict)
return criteria_list
class GreetingEndSerializer(serializers.BaseSerializer):
def to_representation(self, obj_tuple):
obj, greeting_bool = obj_tuple
if greeting_bool:
json_obj = {
"text_de": obj.greeting_de,
"text_en": obj.greeting_en,
}
else:
json_obj = {
"text_de": obj.end_de,
"text_en": obj.end_en,
}
return json_obj
......@@ -4,7 +4,7 @@ Here, every Model which needs translation fields is registered.
from modeltranslation.translator import register, TranslationOptions
from .models import Question, CallToMove, KnowledgeSnack
from .models import Question, CallToMove, KnowledgeSnack, GreetingEndTexts
@register(Question)
......@@ -41,3 +41,12 @@ class KnowledgeSnackTranslationOptions(TranslationOptions):
fields = ("text",)
required_languages = ("de",)
fallback_values = ("No Translation for this Field",)
@register(GreetingEndTexts)
class GreetingEndTextsTranslationOptions(TranslationOptions):
"""
Translation Options for GreetingEndTexts.
"""
fields = ("greeting", "end")
......@@ -18,8 +18,9 @@ from .serializers import (
SingleSportSerializer,
CriteriaSerializer,
IncompleteSportSerializer,
GreetingEndSerializer,
)
from .models import Sport, Criterion, Question
from .models import Sport, Criterion, Question, GreetingEndTexts
# Create your views here.
......@@ -281,3 +282,209 @@ class CriteriaView(APIView):
response = CriteriaSerializer(data)
return Response(response.data)
class BeginningView(APIView):
"""
View for handling the beginning sentence
"""
def post(self, request):
"""
api/greeting POST
Creates a New Object if none exist, otherwise forwards to PUT
"""
if GreetingEndTexts.objects.count() > 0:
return self.put(request)
sentence = GreetingEndTexts()
sentence.greeting_de = request.data["text_de"]
sentence.greeting_en = request.data["text_en"]
sentence.save()
return Response(GreetingEndSerializer((sentence, True)).data)
def get(self, request):
"""
api/greeting GET
Sends out the Greeting
"""
sentence = GreetingEndTexts.objects.all()
if sentence.count() == 0:
return Response(status=404)
else:
sentence = sentence.first()
return Response(GreetingEndSerializer((sentence, True)).data)
def put(self, request):
"""
api/greeting PUT
Overwrites german and english Beginning
"""
sentence = GreetingEndTexts.objects.all()
if sentence.count() == 0:
return Response(status=404)
else:
sentence = sentence.first()
sentence.greeting_de = request.data["text_de"]
sentence.greeting_en = request.data["text_en"]
sentence.save()
return Response(GreetingEndSerializer((sentence, True)).data)
def patch(self, request):
"""
api/greeting PATCH
Overwrites german and/or english Beginning, if they exist
"""
sentence = GreetingEndTexts.objects.all()
if sentence.count() == 0:
return Response(status=404)
else:
sentence = sentence.first()
if "text_de" in request.data.keys():
sentence.greeting_de = request.data["text_de"]
if "text_en" in request.data.keys():
sentence.greeting_en = request.data["text_en"]
sentence.save()
return Response(GreetingEndSerializer((sentence, True)).data)
def delete(self, request):
"""
api/greeting DELETE
Deletes The Object so Default Values are reinstated
"""
sentence = GreetingEndTexts.objects.all()
if sentence.count() == 0:
return Response(status=404)
else:
sentence = sentence.first()
sentence.greeting_de = GreetingEndTexts._meta.get_field(
"greeting"
).get_default()
sentence.greeting_en = GreetingEndTexts._meta.get_field(
"greeting"
).get_default()
sentence.save()
return Response(GreetingEndSerializer((sentence, True)).data)
class EndView(APIView):
"""
View for handling the ending sentence
"""
def post(self, request):
"""
api/end POST
Creates a New Object if none exist, otherwise forwards to PUT
"""
if GreetingEndTexts.objects.count() > 0:
return self.put(request)
sentence = GreetingEndTexts()
sentence.end_de = request.data["text_de"]
sentence.end_en = request.data["text_en"]
sentence.save()
return Response(GreetingEndSerializer((sentence, False)).data)
def get(self, request):
"""
api/end GET
Sends out the Greeting
"""
sentence = GreetingEndTexts.objects.all()
if sentence.count() == 0:
return Response(status=404)
else:
sentence = sentence.first()
return Response(GreetingEndSerializer((sentence, False)).data)
def put(self, request):
"""
api/end PUT
Overwrites german and english Beginning
"""
sentence = GreetingEndTexts.objects.all()
if sentence.count() == 0:
return Response(status=404)
else:
sentence = sentence.first()
sentence.end_de = request.data["text_de"]
sentence.end_en = request.data["text_en"]
sentence.save()
return Response(GreetingEndSerializer((sentence, False)).data)
def patch(self, request):
"""
api/end PATCH
Overwrites german and/or english Beginning, if they exist
"""
sentence = GreetingEndTexts.objects.all()
if sentence.count() == 0:
return Response(status=404)
else:
sentence = sentence.first()
if "text_de" in request.data.keys():
sentence.end_de = request.data["text_de"]
if "text_en" in request.data.keys():
sentence.end_en = request.data["text_en"]
sentence.save()
return Response(GreetingEndSerializer((sentence, False)).data)
def delete(self, request):
"""
api/end DELETE
Deletes The Object so Default Values are reinstated
"""
sentence = GreetingEndTexts.objects.all()
if sentence.count() == 0:
return Response(status=404)
else:
sentence = sentence.first()
sentence.end_de = GreetingEndTexts._meta.get_field("end").get_default()
sentence.end_en = GreetingEndTexts._meta.get_field("end").get_default()
sentence.save()
return Response(GreetingEndSerializer((sentence, False)).data)
......@@ -33,4 +33,6 @@ urlpatterns = [
name="incomplete",
),
path("api/admin/criteria/", views.CriteriaView.as_view(), name="criteria"),
path("api/admin/beginning/", views.BeginningView.as_view(), name="beginning"),
path("api/admin/end/", views.EndView.as_view(), name="end"),
]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment