summaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorMaksim A. Boyko <maksim.a.boyko@gmail.com>2012-08-25 17:18:33 -0400
committerMaksim A. Boyko <maksim.a.boyko@gmail.com>2012-08-25 17:18:33 -0400
commit14427a86c0cd838c53f65c11f81733c89838602e (patch)
tree72f3073bb88a168fe313793c2ff3acf35ab84762 /backend
parent6105c46a6221afdd2cc1539e2729039a5318d411 (diff)
Backend: Add api_video_unlike view
Diffstat (limited to 'backend')
-rw-r--r--backend/views.py42
1 files changed, 30 insertions, 12 deletions
diff --git a/backend/views.py b/backend/views.py
index 0d50287..89140fb 100644
--- a/backend/views.py
+++ b/backend/views.py
@@ -881,23 +881,24 @@ def api_video_like(request):
return response
try:
video = SJContent.objects.get(id=request.POST['video'], content_type='video')
- settings = video.settings
- if 'likes' not in settings:
- settings['likes'] = 0
- settings['likes'] += 1
- video.settings = settings
- video.save()
- autor_profile = video.user.get_profile()
- autor_profile.score += 1
- autor_profile.save()
- like = SJLike.objects.create(user=user, datetime=datetime.now(), content=video)
+ if not SJLike.objects.filter(user=user, content=video):
+ settings = video.settings
+ if 'likes' not in settings:
+ settings['likes'] = 0
+ settings['likes'] += 1
+ video.settings = settings
+ video.save()
+ autor_profile = video.user.get_profile()
+ autor_profile.score += 1
+ autor_profile.save()
+ like = SJLike.objects.create(user=user, datetime=datetime.now(), content=video)
except:
return response_error('NO VIDEO')
return response_success('LIKED\t%s' % request.POST['video'])
@require_POST
def api_video_unlike(request):
- """ Private API
+ """ Unlike video. Private API
"""
user = request.user
if not user.is_authenticated():
@@ -907,7 +908,24 @@ def api_video_unlike(request):
response = check_form_fields(request, form_fields)
if response:
return response
- return HttpResponse('Not implemented yet!\n')
+ try:
+ video = SJContent.objects.get(id=request.POST['video'], content_type='video')
+ likes = SJLike.objects.filter(user=user, content=video)
+ if likes:
+ settings = video.settings
+ if 'likes' not in settings:
+ settings['likes'] = 0
+ autor_profile = video.user.get_profile()
+ for like in likes:
+ settings['likes'] -= 1
+ autor_profile.score -= 1
+ like.delete()
+ video.settings = settings
+ video.save()
+ autor_profile.save()
+ except:
+ return response_error('NO VIDEO')
+ return response_success('UNLIKED\t%s' % request.POST['video'])
@require_POST
def api_video_remove(request):