diff options
| author | Maksim A. Boyko <maksim.a.boyko@gmail.com> | 2012-08-25 17:18:33 -0400 |
|---|---|---|
| committer | Maksim A. Boyko <maksim.a.boyko@gmail.com> | 2012-08-25 17:18:33 -0400 |
| commit | 14427a86c0cd838c53f65c11f81733c89838602e (patch) | |
| tree | 72f3073bb88a168fe313793c2ff3acf35ab84762 /backend | |
| parent | 6105c46a6221afdd2cc1539e2729039a5318d411 (diff) | |
Backend: Add api_video_unlike view
Diffstat (limited to 'backend')
| -rw-r--r-- | backend/views.py | 42 |
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): |
