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
1a694377
Commit
1a694377
authored
May 24, 2017
by
Luuk Scholten
Browse files
Move photo base64 encoder to the member serializer
parent
b01e5491
Changes
2
Hide whitespace changes
Inline
Side-by-side
website/members/api/serializers.py
View file @
1a694377
from
django.urls
import
reverse
from
django.contrib.staticfiles.finders
import
find
as
find_static_file
from
events.api.serializers
import
CalenderJSSerializer
from
members.models
import
Member
from
rest_framework
import
serializers
from
base64
import
b64encode
class
MemberBirthdaySerializer
(
CalenderJSSerializer
):
...
...
@@ -45,10 +47,20 @@ class MemberBirthdaySerializer(CalenderJSSerializer):
class
MemberSerializer
(
serializers
.
ModelSerializer
):
photo
=
serializers
.
CharField
(
source
=
'b64_photo'
)
class
Meta
:
model
=
Member
fields
=
(
'pk'
,
'display_name'
,
'photo'
)
photo
=
serializers
.
SerializerMethodField
(
'_b64_photo'
)
def
_b64_photo
(
self
,
instance
):
if
instance
.
photo
:
photo
=
''
.
join
([
'data:image/jpeg;base64,'
,
b64encode
(
instance
.
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
()])
return
photo
website/members/models.py
View file @
1a694377
...
...
@@ -3,7 +3,6 @@ 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
...
...
@@ -18,8 +17,6 @@ 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"""
...
...
@@ -379,23 +376,6 @@ 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