Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
B
Backend
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Analyze
Contributor analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
swp-unisport
team-warumkeinrust
Backend
Commits
fedca85f
Commit
fedca85f
authored
3 years ago
by
borzechof99
Browse files
Options
Downloads
Patches
Plain Diff
implemented redesign of Greeting and End
parent
4800a157
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
unisportomat/quiz/models.py
+22
-35
22 additions, 35 deletions
unisportomat/quiz/models.py
unisportomat/quiz/views.py
+71
-87
71 additions, 87 deletions
unisportomat/quiz/views.py
unisportomat/unisportomat/urls.py
+1
-2
1 addition, 2 deletions
unisportomat/unisportomat/urls.py
with
94 additions
and
124 deletions
unisportomat/quiz/models.py
+
22
−
35
View file @
fedca85f
...
...
@@ -368,63 +368,50 @@ class QuestionOrderEntry(models.Model):
return
f
"
Entry
{
self
.
order_id
}
:
{
self
.
type_of_slot
}
"
class
GreetingTextManager
(
models
.
Manager
):
"""
Manager for getting or creating Greeting Texts for the User Frontend
"""
class
SingletonModel
(
models
.
Model
):
class
Meta
:
abstract
=
True
def
get_or_create
(
self
):
"""
If not Object exists, make one before returning it
"""
def
save
(
self
,
*
args
,
**
kwargs
):
self
.
pk
=
1
super
(
SingletonModel
,
self
).
save
(
*
args
,
**
kwargs
)
if
self
.
count
()
==
0
:
new_greeting
=
GreetingText
()
new_greeting
.
save
()
def
delete
(
self
,
*
args
,
**
kwargs
):
pass
return
self
.
first
()
@classmethod
def
load
(
cls
):
obj
,
_created
=
cls
.
objects
.
get_or_create
(
pk
=
1
)
return
obj
class
GreetingText
(
models
.
Model
):
class
GreetingText
(
Singleton
Model
):
"""
Database with only one row (if everything is done right)
Includes start text as column
"""
objects
=
GreetingTextManager
()
text
=
models
.
TextField
(
default
=
"
Willkommen zum Uni-Sport-O-Mat!
"
)
def
delete
(
self
,
*
args
,
**
kwargs
):
self
.
text_de
=
self
.
_meta
.
get_field
(
"
text
"
).
get_default
()
self
.
text_en
=
self
.
_meta
.
get_field
(
"
text
"
).
get_default
()
def
__str__
(
self
):
return
f
"
{
self
.
text
}
"
class
EndTextManager
(
models
.
Manager
):
"""
Manager for getting or creating End Texts for the User Frontend
"""
def
get_or_create
(
self
):
"""
If not Object exists, make one before returning it
"""
if
self
.
count
()
==
0
:
new_greeting
=
EndText
()
new_greeting
.
save
()
return
self
.
first
()
class
EndText
(
models
.
Model
):
class
EndText
(
SingletonModel
):
"""
Database with only one row (if everything is done right)
Includes end text as column
"""
objects
=
EndTextManager
()
text
=
models
.
TextField
(
default
=
"
Wähle deinen Sport!
"
)
def
delete
(
self
,
*
args
,
**
kwargs
):
self
.
text_de
=
self
.
_meta
.
get_field
(
"
text
"
).
get_default
()
self
.
text_en
=
self
.
_meta
.
get_field
(
"
text
"
).
get_default
()
def
__str__
(
self
):
return
f
"
{
self
.
text
}
"
This diff is collapsed.
Click to expand it.
unisportomat/quiz/views.py
+
71
−
87
View file @
fedca85f
...
...
@@ -851,128 +851,112 @@ class ScraperView(APIView):
return
Response
(
status
=
200
)
class
GreetingEndView
(
API
View
):
class
GreetingEndView
(
viewsets
.
View
Set
):
"""
View for handling the beginning sentence
Method POST isn
'
t allowed, since at all times, a single model for each text exists.
Method DELETE resets the values to their set default.
"""
given_object
=
None
def
post
(
self
,
request
):
def
list
(
self
,
request
):
"""
api/greeting POST
Creates a new object if none exist, otherwise forwards to PUT
Gives a List with two rows: Greeting in slot 1, End in slot 2.
Still needs to be paginated thanks to the Admin Frontend Design
"""
paginator
=
PageNumberWithPageSizePagination
()
greeting
=
GreetingText
.
load
()
end
=
EndText
.
load
()
if
self
.
given_object
.
objects
.
count
()
>
0
:
return
self
.
put
(
request
)
sentence
=
self
.
given_object
()
# pylint: disable=not-callable
if
"
text_de
"
in
request
.
data
.
keys
():
sentence
.
text_de
=
request
.
data
[
"
text_de
"
]
if
"
text_en
"
in
request
.
data
.
keys
():
sentence
.
text_en
=
request
.
data
[
"
text_en
"
]
# Needs to be called once so paginator can get meta info
paginator
.
paginate_queryset
([
greeting
,
end
],
request
)
sentence
.
save
()
data
=
[
GreetingEndSerializer
(
greeting
).
data
,
GreetingEndSerializer
(
end
).
data
,
]
return
Response
(
GreetingEndSerializer
(
sentence
).
data
)
return
paginator
.
get_paginated_response
(
data
=
data
)
def
g
et
(
self
,
request
):
def
r
et
rieve
(
self
,
request
,
pk
=
None
):
"""
api/greeting GET
Sends out the greeting
Retrieves the Greeting Text if pk==1, else End Text
"""
sentence
=
self
.
given_object
.
objects
.
all
()
if
sentence
.
count
()
==
0
:
sentence
=
self
.
given_object
()
# pylint: disable=not-callable
if
pk
==
"
1
"
:
obj
=
GreetingText
.
load
()
else
:
sentence
=
sentence
.
first
()
obj
=
EndText
.
load
()
data
=
GreetingEndSerializer
(
obj
).
data
return
Response
(
GreetingEndSerializer
(
sentence
).
data
)
return
Response
(
data
=
data
)
def
put
(
self
,
request
):
def
update
(
self
,
request
,
pk
=
None
):
"""
api/greeting PUT
Overwrites German and English beginning
Updates Greeting or End depending on pk
"""
sentence
=
self
.
given_object
.
objects
.
all
()
data
=
request
.
data
if
"
text_de
"
not
in
data
.
keys
()
or
"
text_en
"
not
in
data
.
keys
():
return
Response
(
status
=
400
,
data
=
{
"
message
"
:
"
Es müssen sowohl text_de als auch text_en geliefert werden!
"
},
)
if
sentence
.
count
()
==
0
:
return
Response
(
status
=
404
)
if
pk
==
"
1
"
:
obj
=
GreetingText
.
load
()
else
:
obj
=
EndText
.
load
()
sentence
=
sentence
.
first
()
obj
.
text_de
=
data
[
"
text_de
"
]
obj
.
text_en
=
data
[
"
text_en
"
]
sentence
.
text_de
=
request
.
data
[
"
text_de
"
]
sentence
.
text_en
=
request
.
data
[
"
text_en
"
]
obj
.
save
()
sentence
.
save
()
data
=
GreetingEndSerializer
(
obj
).
data
return
Response
(
GreetingEndSerializer
(
sentence
).
data
)
return
Response
(
data
)
def
pa
tch
(
self
,
request
):
def
pa
rtial_update
(
self
,
request
,
pk
=
None
):
"""
api/greeting PATCH
Overwrites German and/or English beginning, if they exist
Updates Greeting or End depending on pk
"""
sentence
=
self
.
given_object
.
objects
.
all
()
data
=
request
.
data
if
sentence
.
count
()
==
0
:
return
Response
(
status
=
404
)
if
pk
==
"
1
"
:
obj
=
GreetingText
.
load
()
else
:
obj
=
EndText
.
load
()
sentence
=
sentence
.
first
()
if
"
text_de
"
in
data
.
keys
():
obj
.
text_de
=
data
[
"
text_de
"
]
if
"
text_en
"
in
data
.
keys
():
obj
.
text_en
=
data
[
"
text_en
"
]
if
"
text_de
"
in
request
.
data
.
keys
():
sentence
.
text_de
=
request
.
data
[
"
text_de
"
]
if
"
text_en
"
in
request
.
data
.
keys
():
sentence
.
text_en
=
request
.
data
[
"
text_en
"
]
obj
.
save
()
sentence
.
save
()
data
=
GreetingEndSerializer
(
obj
).
data
return
Response
(
GreetingEndSerializer
(
sentence
).
data
)
return
Response
(
data
)
def
de
lete
(
self
,
request
):
def
de
stroy
(
self
,
request
,
pk
=
None
):
"""
api/greeting DELETE
Deletes the object so default values are reinstated
Resets Object to their Default Texts
"""
sentence
=
self
.
given_object
.
objects
.
all
()
if
sentence
.
count
()
==
0
:
return
Response
(
status
=
404
)
sentence
=
sentence
.
first
()
sentence
.
text_de
=
self
.
given_object
.
_meta
.
get_field
(
"
text
"
).
get_default
()
sentence
.
text_en
=
self
.
given_object
.
_meta
.
get_field
(
"
text
"
).
get_default
()
sentence
.
save
()
return
Response
(
GreetingEndSerializer
(
sentence
).
data
)
class
GreetingView
(
GreetingEndView
):
"""
View for the greeting strings
Inherited CRUD from GreetingEndView
"""
given_object
=
GreetingText
if
pk
==
"
1
"
:
obj
=
GreetingText
.
load
()
else
:
obj
=
EndText
.
load
()
class
EndView
(
GreetingEndView
):
"""
View for the end strings
Inherited CRUD from GreetingEndView
"""
obj
.
delete
()
obj
.
save
()
given_object
=
EndText
return
Response
(
status
=
200
,
data
=
{
"
message
"
:
"
Daten zurückgesetzt!
"
})
class
QuizView
(
APIView
):
...
...
@@ -988,10 +972,10 @@ class QuizView(APIView):
queryset
=
QuestionOrderEntry
.
objects
.
all
().
order_by
(
"
order_id
"
)
data_dict
=
{
"
start_de
"
:
GreetingText
.
objects
.
get_or_create
().
text_de
,
"
end_de
"
:
EndText
.
objects
.
get_or_create
().
text_de
,
"
start_en
"
:
GreetingText
.
objects
.
get_or_create
().
text_en
,
"
end_en
"
:
EndText
.
objects
.
get_or_create
().
text_en
,
"
start_de
"
:
GreetingText
.
load
().
text_de
,
"
end_de
"
:
EndText
.
load
().
text_de
,
"
start_en
"
:
GreetingText
.
load
().
text_en
,
"
end_en
"
:
EndText
.
load
().
text_en
,
}
order_list
=
[]
...
...
This diff is collapsed.
Click to expand it.
unisportomat/unisportomat/urls.py
+
1
−
2
View file @
fedca85f
...
...
@@ -25,6 +25,7 @@ router.register(r"sport", views.SmallSportListView, "small-sport-list")
router
.
register
(
r
"
question
"
,
views
.
SmallQuestionListView
,
"
small-question-list
"
)
router
.
register
(
r
"
snack
"
,
views
.
SnackListView
,
"
snack
"
)
router
.
register
(
r
"
activity
"
,
views
.
ActivityView
,
"
activity
"
)
router
.
register
(
r
"
greeting-end
"
,
views
.
GreetingEndView
,
"
greeting-end
"
)
urlpatterns
=
[
path
(
"
admin/
"
,
admin
.
site
.
urls
),
...
...
@@ -37,8 +38,6 @@ urlpatterns = [
path
(
"
api/admin/sport-scraper/
"
,
views
.
ScraperView
.
as_view
(),
name
=
"
scraper
"
),
path
(
"
api/admin/criteria/
"
,
views
.
CriteriaView
.
as_view
(),
name
=
"
criteria
"
),
path
(
"
api/admin/question-order/
"
,
views
.
QuestionOrderView
.
as_view
(),
name
=
"
order
"
),
path
(
"
api/admin/greeting/
"
,
views
.
GreetingView
.
as_view
(),
name
=
"
greeting
"
),
path
(
"
api/admin/end/
"
,
views
.
EndView
.
as_view
(),
name
=
"
end
"
),
path
(
"
api/admin/
"
,
include
(
router
.
urls
)),
path
(
"
api/user/quiz/
"
,
views
.
QuizView
.
as_view
(),
name
=
"
quiz
"
),
]
+
static
(
settings
.
MEDIA_URL
,
document_root
=
settings
.
MEDIA_ROOT
)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment