Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
tdt4242-group16
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository 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
Ole-Christian Bjerkeset
tdt4242-group16
Commits
baf217d3
Commit
baf217d3
authored
2 years ago
by
Simen
Browse files
Options
Downloads
Patches
Plain Diff
refactor: comments, docstring, line length and naming conventions
parent
30f3ca1b
No related branches found
No related tags found
1 merge request
!6
Refactor/backend workouts
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
backend/secfit/workouts/models.py
+9
-4
9 additions, 4 deletions
backend/secfit/workouts/models.py
backend/secfit/workouts/serializers.py
+21
-4
21 additions, 4 deletions
backend/secfit/workouts/serializers.py
backend/secfit/workouts/views.py
+34
-10
34 additions, 10 deletions
backend/secfit/workouts/views.py
with
64 additions
and
18 deletions
backend/secfit/workouts/models.py
+
9
−
4
View file @
baf217d3
...
...
@@ -48,20 +48,25 @@ class Workout(models.Model):
)
# Visibility levels
PUBLIC
=
"
PU
"
# Visible to all authenticated users
COACH
=
"
CO
"
# Visible only to owner and their coach
PRIVATE
=
"
PR
"
# Visible only to owner
# Visible to all authenticated users
PUBLIC
=
"
PU
"
# Visible only to owner and their coach
COACH
=
"
CO
"
# Visible only to owner
PRIVATE
=
"
PR
"
# Choices for visibility level
VISIBILITY_CHOICES
=
[
(
PUBLIC
,
"
Public
"
),
(
COACH
,
"
Coach
"
),
(
PRIVATE
,
"
Private
"
),
]
# Choices for visibility level
]
visibility
=
models
.
CharField
(
max_length
=
2
,
choices
=
VISIBILITY_CHOICES
,
default
=
COACH
)
class
Meta
:
"""
Orders the object by date descendingly
"""
ordering
=
[
"
-date
"
]
def
__str__
(
self
):
...
...
This diff is collapsed.
Click to expand it.
backend/secfit/workouts/serializers.py
+
21
−
4
View file @
baf217d3
...
...
@@ -19,6 +19,7 @@ class ExerciseInstanceSerializer(serializers.HyperlinkedModelSerializer):
)
class
Meta
:
"""
serialized fields for the model ExerciseInstance
"""
model
=
ExerciseInstance
fields
=
[
"
url
"
,
"
id
"
,
"
exercise
"
,
"
sets
"
,
"
number
"
,
"
workout
"
]
...
...
@@ -39,6 +40,7 @@ class WorkoutFileSerializer(serializers.HyperlinkedModelSerializer):
)
class
Meta
:
"""
serialized fields for the model WorkoutFile
"""
model
=
WorkoutFile
fields
=
[
"
url
"
,
"
id
"
,
"
owner
"
,
"
file
"
,
"
workout
"
]
...
...
@@ -66,6 +68,7 @@ class WorkoutSerializer(serializers.HyperlinkedModelSerializer):
files
=
WorkoutFileSerializer
(
many
=
True
,
required
=
False
)
class
Meta
:
"""
serialized fields for the Workout. Owner is read only and cant be modified
"""
model
=
Workout
fields
=
[
"
url
"
,
...
...
@@ -101,10 +104,12 @@ class WorkoutSerializer(serializers.HyperlinkedModelSerializer):
workout
=
Workout
.
objects
.
create
(
**
validated_data
)
for
exercise_instance_data
in
exercise_instances_data
:
ExerciseInstance
.
objects
.
create
(
workout
=
workout
,
**
exercise_instance_data
)
ExerciseInstance
.
objects
.
create
(
workout
=
workout
,
**
exercise_instance_data
)
for
file_data
in
files_data
:
WorkoutFile
.
objects
.
create
(
workout
=
workout
,
owner
=
workout
.
owner
,
file
=
file_data
.
get
(
"
file
"
)
workout
=
workout
,
owner
=
workout
.
owner
,
file
=
file_data
.
get
(
"
file
"
)
)
return
workout
...
...
@@ -127,7 +132,8 @@ class WorkoutSerializer(serializers.HyperlinkedModelSerializer):
instance
.
name
=
validated_data
.
get
(
"
name
"
,
instance
.
name
)
instance
.
notes
=
validated_data
.
get
(
"
notes
"
,
instance
.
notes
)
instance
.
visibility
=
validated_data
.
get
(
"
visibility
"
,
instance
.
visibility
)
instance
.
visibility
=
validated_data
.
get
(
"
visibility
"
,
instance
.
visibility
)
instance
.
date
=
validated_data
.
get
(
"
date
"
,
instance
.
date
)
instance
.
save
()
...
...
@@ -212,8 +218,18 @@ class ExerciseSerializer(serializers.HyperlinkedModelSerializer):
)
class
Meta
:
"""
serialized fields for the model Exercise
"""
model
=
Exercise
fields
=
[
"
url
"
,
"
id
"
,
"
name
"
,
"
description
"
,
"
duration
"
,
"
calories
"
,
"
muscleGroup
"
,
"
unit
"
,
"
instances
"
]
fields
=
[
"
url
"
,
"
id
"
,
"
name
"
,
"
description
"
,
"
duration
"
,
"
calories
"
,
"
muscleGroup
"
,
"
unit
"
,
"
instances
"
]
class
RememberMeSerializer
(
serializers
.
HyperlinkedModelSerializer
):
...
...
@@ -226,5 +242,6 @@ class RememberMeSerializer(serializers.HyperlinkedModelSerializer):
"""
class
Meta
:
"""
serialized fields for the model RememberMe
"""
model
=
RememberMe
fields
=
[
"
remember_me
"
]
This diff is collapsed.
Click to expand it.
backend/secfit/workouts/views.py
+
34
−
10
View file @
baf217d3
...
...
@@ -31,12 +31,14 @@ from rest_framework_simplejwt.tokens import RefreshToken
from
rest_framework.response
import
Response
import
json
from
collections
import
namedtuple
import
base64
,
pickle
import
base64
import
pickle
from
django.core.signing
import
Signer
@api_view
([
"
GET
"
])
def
api_root
(
request
,
format
=
None
):
"""
The API root view
"""
return
Response
(
{
"
users
"
:
reverse
(
"
user-list
"
,
request
=
request
,
format
=
format
),
...
...
@@ -54,13 +56,16 @@ def api_root(request, format=None):
)
# Allow users to save a persistent session in their browser
class
RememberMe
(
mixins
.
ListModelMixin
,
mixins
.
CreateModelMixin
,
mixins
.
DestroyModelMixin
,
generics
.
GenericAPIView
,
):
"""
Allow users to save a persistent session in their browser.
HTTP methods: GET, POST
"""
serializer_class
=
RememberMeSerializer
...
...
@@ -68,7 +73,7 @@ class RememberMe(
if
request
.
user
.
is_authenticated
==
False
:
raise
PermissionDenied
else
:
return
Response
({
"
remember_me
"
:
self
.
rememberme
()})
return
Response
({
"
remember_me
"
:
self
.
remember
_
me
()})
def
post
(
self
,
request
):
cookieObject
=
namedtuple
(
"
Cookies
"
,
request
.
COOKIES
.
keys
())(
...
...
@@ -91,7 +96,7 @@ class RememberMe(
if
sign
==
self
.
sign_user
(
user
):
return
user
def
rememberme
(
self
):
def
remember
_
me
(
self
):
creds
=
[
self
.
request
.
user
,
self
.
sign_user
(
str
(
self
.
request
.
user
))]
return
base64
.
b64encode
(
pickle
.
dumps
(
creds
))
...
...
@@ -111,13 +116,15 @@ class WorkoutList(
"""
serializer_class
=
WorkoutSerializer
# User must be authenticated to create/view workouts
permission_classes
=
[
permissions
.
IsAuthenticated
]
# User must be authenticated to create/view workouts
]
# For parsing JSON and Multi-part requests
parser_classes
=
[
MultipartJsonParser
,
JSONParser
,
]
# For parsing JSON and Multi-part requests
]
filter_backends
=
[
filters
.
OrderingFilter
]
ordering_fields
=
[
"
name
"
,
"
date
"
,
"
owner__username
"
]
...
...
@@ -131,18 +138,18 @@ class WorkoutList(
serializer
.
save
(
owner
=
self
.
request
.
user
)
def
get_queryset
(
self
):
q
s
=
Workout
.
objects
.
none
()
q
ueryset
=
Workout
.
objects
.
none
()
if
self
.
request
.
user
:
# A workout should be visible to the requesting user if any of the following hold:
# - The workout has public visibility
# - The owner of the workout is the requesting user
# - The workout has coach visibility and the requesting user is the owner's coach
q
s
=
Workout
.
objects
.
filter
(
q
ueryset
=
Workout
.
objects
.
filter
(
Q
(
visibility
=
"
PU
"
)
|
(
Q
(
visibility
=
"
CO
"
)
&
Q
(
owner__coach
=
self
.
request
.
user
))
).
distinct
()
return
q
s
return
q
ueryset
class
WorkoutDetail
(
...
...
@@ -228,7 +235,10 @@ class ExerciseInstanceList(
CreateListModelMixin
,
generics
.
GenericAPIView
,
):
"""
Class defining the web response for the creation
"""
"""
Class defining the web response for the creation
HTTP methods: GET, POST
"""
serializer_class
=
ExerciseInstanceSerializer
permission_classes
=
[
permissions
.
IsAuthenticated
&
IsOwnerOfWorkout
]
...
...
@@ -259,6 +269,12 @@ class ExerciseInstanceDetail(
mixins
.
DestroyModelMixin
,
generics
.
GenericAPIView
,
):
"""
Class defining the web response for the modification, deletion and getting
exercise instance details.
HTTP methods: GET, PUT, PATCH, DELETE
"""
serializer_class
=
ExerciseInstanceSerializer
permission_classes
=
[
permissions
.
IsAuthenticated
...
...
@@ -287,6 +303,10 @@ class WorkoutFileList(
CreateListModelMixin
,
generics
.
GenericAPIView
,
):
"""
Class defining the web response for the getting and creating list for workout files.
HTTP methods: GET, POST
"""
queryset
=
WorkoutFile
.
objects
.
all
()
serializer_class
=
WorkoutFileSerializer
...
...
@@ -323,6 +343,10 @@ class WorkoutFileDetail(
mixins
.
DestroyModelMixin
,
generics
.
GenericAPIView
,
):
"""
Class defining the web response for the getting deleting workout file details.
HTTP methods: GET, POST
"""
queryset
=
WorkoutFile
.
objects
.
all
()
serializer_class
=
WorkoutFileSerializer
...
...
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