Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
K
kszkepzes-backend
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
JetBrains YouTrack
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
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
KSZK
DevTeam
kszkepzes
old
kszkepzes-backend
Commits
82ad93fb
Commit
82ad93fb
authored
5 years ago
by
rlacko
Browse files
Options
Downloads
Patches
Plain Diff
User and Staff serializer class separated
parent
a4c2d173
No related branches found
No related tags found
1 merge request
!2
Dev
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
src/account/serializers.py
+49
-3
49 additions, 3 deletions
src/account/serializers.py
src/account/views.py
+7
-1
7 additions, 1 deletion
src/account/views.py
src/homework/serializers.py
+47
-11
47 additions, 11 deletions
src/homework/serializers.py
src/homework/views.py
+7
-2
7 additions, 2 deletions
src/homework/views.py
with
110 additions
and
17 deletions
src/account/serializers.py
+
49
−
3
View file @
82ad93fb
...
...
@@ -10,7 +10,7 @@ class ChoiceSerializer(serializers.ModelSerializer):
fields
=
(
'
choice
'
,
'
profile
'
)
class
ProfileSerializer
(
serializers
.
ModelSerializer
):
class
ProfileSerializer
_User
(
serializers
.
ModelSerializer
):
groups
=
serializers
.
SlugRelatedField
(
many
=
True
,
slug_field
=
'
choice
'
,
queryset
=
models
.
GroupChoice
.
objects
.
all
())
updated_at
=
serializers
.
DateTimeField
(
read_only
=
True
)
full_name
=
serializers
.
SerializerMethodField
()
...
...
@@ -40,13 +40,13 @@ class ProfileSerializer(serializers.ModelSerializer):
def
validate_role
(
self
,
value
):
modifier_role
=
CurrentUserMiddleware
.
get_current_user_profile
().
role
if
value
!=
modifier_role
and
modifier_role
!=
"
Staff
"
:
if
value
!=
modifier_role
:
raise
serializers
.
ValidationError
(
"
You don
'
t have permission change role
"
)
return
value
def
validate_signed
(
self
,
value
):
modifier
=
CurrentUserMiddleware
.
get_current_user_profile
()
if
value
is
False
and
modifier
.
role
!=
"
Staff
"
:
if
value
is
False
:
raise
serializers
.
ValidationError
(
"
You cannot join without signed
"
)
return
value
...
...
@@ -61,3 +61,49 @@ class ProfileSerializer(serializers.ModelSerializer):
def
get_full_name
(
self
,
obj
):
return
obj
.
full_name
class
ProfileSerializer_Staff
(
serializers
.
ModelSerializer
):
groups
=
serializers
.
SlugRelatedField
(
many
=
True
,
slug_field
=
'
choice
'
,
queryset
=
models
.
GroupChoice
.
objects
.
all
())
updated_at
=
serializers
.
DateTimeField
(
read_only
=
True
)
full_name
=
serializers
.
SerializerMethodField
()
class
Meta
:
model
=
models
.
Profile
read_only_fields
=
(
'
id
'
,
'
join_date
'
,
'
updated_at
'
,
'
full_name
'
,
)
fields
=
(
'
id
'
,
'
join_date
'
,
'
updated_at
'
,
'
nick
'
,
'
signed
'
,
'
groups
'
,
'
motivation_about
'
,
'
motivation_profession
'
,
'
motivation_exercise
'
,
'
full_name
'
,
'
role
'
,
)
def
validate_updated_at
(
self
,
value
):
deadline
=
models
.
Deadline
.
get_solo
().
deadline
if
deadline
is
not
None
and
value
>
deadline
:
raise
serializers
.
ValidationError
(
"
You cannot join after the deadline
"
)
return
value
def
validate_role
(
self
,
value
):
return
value
def
validate_signed
(
self
,
value
):
return
value
def
update
(
self
,
instance
,
validated_data
):
new_role
=
validated_data
.
get
(
'
role
'
,
instance
.
role
)
if
instance
.
role
!=
new_role
:
if
new_role
==
'
Student
'
:
email
.
admitted
(
instance
.
user
)
if
new_role
==
'
Denied
'
:
email
.
denied
(
instance
.
user
)
return
super
().
update
(
instance
,
validated_data
)
def
get_full_name
(
self
,
obj
):
return
obj
.
full_name
\ No newline at end of file
This diff is collapsed.
Click to expand it.
src/account/views.py
+
7
−
1
View file @
82ad93fb
...
...
@@ -9,9 +9,15 @@ from . import serializers
class
ProfileViewSet
(
viewsets
.
ModelViewSet
):
serializer_class
=
serializers
.
ProfileSerializer
serializer_class
=
serializers
.
ProfileSerializer
_User
permission_classes
=
(
permissions
.
IsAuthenticated
,
IsSafeOrPatch
)
def
get_serializer_class
(
self
):
user
=
self
.
request
.
user
if
user
.
profile
.
role
==
'
Staff
'
:
return
serializers
.
ProfileSerializer_Staff
return
serializers
.
ProfileSerializer_User
def
get_queryset
(
self
):
user
=
self
.
request
.
user
if
user
.
profile
.
role
==
'
Staff
'
:
...
...
This diff is collapsed.
Click to expand it.
src/homework/serializers.py
+
47
−
11
View file @
82ad93fb
...
...
@@ -23,8 +23,7 @@ class TaskSerializer(serializers.ModelSerializer):
email
.
new_homework
(
profile
.
user
,
validated_data
.
get
(
'
deadline
'
))
return
self
.
Meta
.
model
.
objects
.
create
(
**
validated_data
)
class
SolutionSerializer
(
serializers
.
ModelSerializer
):
class
SolutionSerializer_Student
(
serializers
.
ModelSerializer
):
class
Meta
:
model
=
models
.
Solution
read_only_fields
=
(
'
created_by
'
,
'
created_at
'
,
'
updated_at
'
,
'
ready
'
,
'
files
'
)
...
...
@@ -46,21 +45,58 @@ class SolutionSerializer(serializers.ModelSerializer):
return
value
def
validate_accepted
(
self
,
value
):
raise
serializers
.
ValidationError
(
"
You don
'
t have permission to modify accepted!
"
)
def
validate_corrected
(
self
,
value
):
raise
serializers
.
ValidationError
(
"
You don
'
t have permission to modify corrected!
"
)
def
validate_note
(
self
,
value
):
if
value
!=
''
:
raise
serializers
.
ValidationError
(
"
You don
'
t have permission to create note!
"
)
return
value
def
update
(
self
,
instance
,
validated_data
):
if
instance
.
corrected
is
not
True
and
validated_data
.
get
(
'
corrected
'
,
instance
.
corrected
)
is
True
:
email
.
homework_corrected
(
instance
.
created_by
.
user
,
instance
.
task
.
title
,
validated_data
.
get
(
'
accepted
'
,
instance
.
accepted
)
)
return
super
().
update
(
instance
,
validated_data
)
def
create
(
self
,
validated_data
):
profile
=
CurrentUserMiddleware
.
get_current_user_profile
()
if
profile
.
role
!=
'
Staff
'
and
value
:
raise
serializers
.
ValidationError
(
"
You don
'
t have permission to modify accepted!
"
)
models
.
Solution
.
objects
.
filter
(
created_by
=
profile
,
task
=
validated_data
[
'
task
'
]).
delete
()
return
super
().
create
(
validated_data
)
class
SolutionSerializer_Staff
(
serializers
.
ModelSerializer
):
class
Meta
:
model
=
models
.
Solution
read_only_fields
=
(
'
created_by
'
,
'
created_at
'
,
'
updated_at
'
,
'
ready
'
,
'
files
'
)
fields
=
(
'
id
'
,
'
task
'
,
'
created_at
'
,
'
updated_at
'
,
'
accepted
'
,
'
files
'
,
'
created_by
'
,
'
corrected
'
,
'
note
'
,
)
def
validate_task
(
self
,
value
):
if
timezone
.
now
()
>
value
.
deadline
:
raise
serializers
.
ValidationError
(
'
You late.
'
)
return
value
def
validate_accepted
(
self
,
value
):
return
value
def
validate_corrected
(
self
,
value
):
profile
=
CurrentUserMiddleware
.
get_current_user_profile
()
if
profile
.
role
!=
'
Staff
'
and
value
:
raise
serializers
.
ValidationError
(
"
You don
'
t have permission to modify corrected!
"
)
return
value
def
validate_note
(
self
,
value
):
profile
=
CurrentUserMiddleware
.
get_current_user_profile
()
if
profile
.
role
!=
'
Staff
'
and
value
!=
''
:
raise
serializers
.
ValidationError
(
"
You don
'
t have permission to create note!
"
)
return
value
def
update
(
self
,
instance
,
validated_data
):
...
...
@@ -75,4 +111,4 @@ class SolutionSerializer(serializers.ModelSerializer):
def
create
(
self
,
validated_data
):
profile
=
CurrentUserMiddleware
.
get_current_user_profile
()
models
.
Solution
.
objects
.
filter
(
created_by
=
profile
,
task
=
validated_data
[
'
task
'
]).
delete
()
return
super
().
create
(
validated_data
)
return
super
().
create
(
validated_data
)
\ No newline at end of file
This diff is collapsed.
Click to expand it.
src/homework/views.py
+
7
−
2
View file @
82ad93fb
...
...
@@ -10,11 +10,16 @@ class TasksViewSet(viewsets.ModelViewSet):
queryset
=
models
.
Task
.
objects
.
all
()
permission_classes
=
(
permissions
.
IsStaffOrReadOnlyForAuthenticated
,
permissions
.
IsStaffOrStudent
,
)
class
SolutionsViewSet
(
viewsets
.
ModelViewSet
):
serializer_class
=
serializers
.
SolutionSerializer
serializer_class
=
serializers
.
SolutionSerializer
_Student
permission_classes
=
(
permissions
.
IsStaffOrStudent
,
)
def
get_serializer_class
(
self
):
user
=
self
.
request
.
user
if
user
.
profile
.
role
==
'
Staff
'
:
return
serializers
.
SolutionSerializer_Staff
return
serializers
.
SolutionSerializer_Student
def
get_queryset
(
self
):
user
=
self
.
request
.
user
queryset
=
models
.
Solution
.
objects
.
filter
(
created_by
=
user
.
profile
)
...
...
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