Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
thalia
concrexit
Commits
ad6e2f26
Commit
ad6e2f26
authored
May 16, 2017
by
Gijs Hendriksen
Committed by
Luuk Scholten
May 24, 2017
Browse files
Serializer for display name and avatar
parent
8143e661
Changes
3
Hide whitespace changes
Inline
Side-by-side
website/members/api/serializers.py
View file @
ad6e2f26
...
...
@@ -3,6 +3,8 @@ from django.urls import reverse
from
events.api.serializers
import
CalenderJSSerializer
from
members.models
import
Member
from
rest_framework
import
serializers
class
MemberBirthdaySerializer
(
CalenderJSSerializer
):
class
Meta
(
CalenderJSSerializer
.
Meta
):
...
...
@@ -40,3 +42,13 @@ class MemberBirthdaySerializer(CalenderJSSerializer):
def
_text_color
(
self
,
instance
):
return
'white'
class
MemberSerializer
(
serializers
.
ModelSerializer
):
photo
=
serializers
.
CharField
(
source
=
'b64_photo'
)
class
Meta
:
model
=
Member
fields
=
(
'display_name'
,
'photo'
)
website/members/api/viewsets.py
View file @
ad6e2f26
...
...
@@ -8,7 +8,7 @@ from rest_framework.exceptions import ParseError
from
rest_framework.response
import
Response
from
rest_framework
import
permissions
from
members.api.serializers
import
MemberBirthdaySerializer
from
members.api.serializers
import
MemberBirthdaySerializer
,
MemberSerializer
from
members.models
import
Member
...
...
@@ -61,3 +61,9 @@ class MemberViewset(viewsets.ViewSet):
serializer
=
MemberBirthdaySerializer
(
birthdays
,
many
=
True
)
return
Response
(
serializer
.
data
)
@
list_route
()
def
info
(
self
,
request
):
serializer
=
MemberSerializer
(
request
.
user
.
member
)
return
Response
(
serializer
.
data
)
website/members/models.py
View file @
ad6e2f26
...
...
@@ -3,6 +3,7 @@ from datetime import date, timedelta
from
functools
import
reduce
from
django.conf
import
settings
from
django.contrib.staticfiles.finders
import
find
as
find_static_file
from
django.core
import
validators
from
django.core.exceptions
import
ValidationError
from
django.db
import
models
...
...
@@ -17,6 +18,8 @@ from activemembers.models import Committee
from
utils.snippets
import
datetime_to_lectureyear
from
utils.validators
import
validate_file_extension
from
base64
import
b64encode
class
ActiveMemberManager
(
models
.
Manager
):
"""Get all active members"""
...
...
@@ -376,6 +379,23 @@ class Member(models.Model):
'display name'
)})
raise
ValidationError
(
errors
)
@
property
def
b64_photo
(
self
):
if
self
.
photo
:
photo
=
''
.
join
([
'data:image/jpeg;base64,'
,
b64encode
(
self
.
photo
.
file
.
read
()).
decode
()
])
else
:
filename
=
find_static_file
(
'members/images/default-avatar.jpg'
)
with
open
(
filename
,
'rb'
)
as
f
:
photo
=
''
.
join
([
'data:image/jpeg;base64,'
,
b64encode
(
f
.
read
()).
decode
()
])
print
(
len
(
photo
))
return
photo
def
__str__
(
self
):
return
'{} ({})'
.
format
(
self
.
get_full_name
(),
self
.
user
.
username
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment