Skip to content

Commit e50df63

Browse files
author
Hooram Nam
committed
Add album auto list view serializer
1 parent 081b043 commit e50df63

File tree

3 files changed

+75
-6
lines changed

3 files changed

+75
-6
lines changed

api/serializers.py

+54-6
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,30 @@ class Meta:
2626
'image_hash',
2727
'image_path')
2828
def get_thumbnail_url(self, obj):
29-
return obj.thumbnail.url
29+
try:
30+
return obj.thumbnail.url
31+
except:
32+
return None
3033
def get_thumbnail_height(self, obj):
31-
return obj.thumbnail.height
34+
try:
35+
return obj.thumbnail.height
36+
except:
37+
return None
3238
def get_thumbnail_width(self, obj):
33-
return obj.thumbnail.width
39+
try:
40+
return obj.thumbnail.width
41+
except:
42+
return None
3443
def get_square_thumbnail_url(self, obj):
35-
return obj.square_thumbnail.url
44+
try:
45+
return obj.square_thumbnail.url
46+
except:
47+
return None
3648
def get_image_url(self, obj):
37-
return obj.image.url
49+
try:
50+
return obj.image.url
51+
except:
52+
return None
3853
def get_geolocation(self, obj):
3954
if obj.geolocation_json:
4055
return json.loads(obj.geolocation_json)
@@ -205,4 +220,37 @@ def get_people(self,obj):
205220
serialized_person = PersonSerializer(face.person).data
206221
if serialized_person not in res:
207222
res.append(serialized_person)
208-
return res
223+
return res
224+
225+
226+
class AlbumAutoListSerializer(serializers.ModelSerializer):
227+
# people = serializers.SerializerMethodField()
228+
cover_photo_url = serializers.SerializerMethodField()
229+
230+
class Meta:
231+
model = AlbumAuto
232+
fields = (
233+
"id",
234+
"title",
235+
"timestamp",
236+
"created_on",
237+
"cover_photo_url",
238+
"gps_lat",
239+
# 'people',
240+
"gps_lon")
241+
242+
def get_cover_photo_url(self,obj):
243+
first_photo = obj.photos.first()
244+
return first_photo.image.url
245+
246+
# def get_people(self,obj):
247+
# # ipdb.set_trace()
248+
# photos = obj.photos.all()
249+
# res = []
250+
# for photo in photos:
251+
# faces = photo.faces.all()
252+
# for face in faces:
253+
# serialized_person = PersonSerializer(face.person).data
254+
# if serialized_person not in res:
255+
# res.append(serialized_person)
256+
# return res

api/views.py

+19
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
from api.serializers import AlbumPersonSerializer
1313
from api.serializers import AlbumDateSerializer
1414

15+
16+
from api.serializers import AlbumAutoListSerializer
17+
18+
1519
from api.face_classify import train_faces, cluster_faces
1620
from api.social_graph import build_social_graph
1721
from api.autoalbum import generate_event_albums
@@ -155,6 +159,21 @@ def list(self, *args, **kwargs):
155159

156160

157161

162+
class AlbumAutoListViewSet(viewsets.ModelViewSet):
163+
queryset = AlbumAuto.objects.all().order_by('-timestamp')
164+
serializer_class = AlbumAutoListSerializer
165+
pagination_class = StandardResultsSetPagination
166+
167+
@cache_response(key_func=CustomObjectKeyConstructor())
168+
def retrieve(self, *args, **kwargs):
169+
return super(AlbumAutoListViewSet, self).retrieve(*args, **kwargs)
170+
171+
@cache_response(key_func=CustomListKeyConstructor())
172+
def list(self, *args, **kwargs):
173+
return super(AlbumAutoListViewSet, self).list(*args, **kwargs)
174+
175+
176+
158177
class AlbumPersonViewSet(viewsets.ModelViewSet):
159178
queryset = Person.objects.all().order_by('name')
160179
serializer_class = AlbumPersonSerializer

ownphotos/urls.py

+2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222

2323
router = routers.DefaultRouter()
2424

25+
router.register(r'api/albums/auto/list', views.AlbumAutoListViewSet)
26+
2527
router.register(r'api/albums/auto', views.AlbumAutoViewSet)
2628
router.register(r'api/albums/person', views.AlbumPersonViewSet)
2729
router.register(r'api/albums/date', views.AlbumDateViewSet)

0 commit comments

Comments
 (0)