Juhi_Chauhan

Untitled

Jul 27th, 2017
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.18 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. from __future__ import unicode_literals
  3. from django.shortcuts import render, redirect
  4. from forms import SignUpForm, LoginForm, PostForm, LikeForm, CommentForm
  5. from models import UserModel, SessionToken, PostModel, LikeModel, CommentModel
  6. from django.contrib.auth.hashers import make_password, check_password
  7. from datetime import timedelta
  8. from django.utils import timezone
  9. from instagram.settings import BASE_DIR
  10.  
  11. from imgurpython import ImgurClient
  12.  
  13. from django.http import HttpResponse
  14.  
  15. # Create your views here.
  16.  
  17. def signup_view(request):
  18. if request.method == "POST":
  19. form = SignUpForm(request.POST)
  20. if form.is_valid():
  21. username = form.cleaned_data['username']
  22. name = form.cleaned_data['name']
  23. email = form.cleaned_data['email']
  24. password = form.cleaned_data['password']
  25. # saving data to DB
  26. user = UserModel(name=name, password=make_password(password), email=email, username=username)
  27. user.save()
  28. return render(request, 'success.html')
  29. else:
  30. return HttpResponse("Form data is not valid.s")
  31. else:
  32. form = SignUpForm()
  33.  
  34. return render(request, 'signup.html', {'forms': form})
  35.  
  36.  
  37. def login_view(request):
  38. response_data = {}
  39. if request.method == "POST":
  40. form = LoginForm(request.POST)
  41. if form.is_valid():
  42. username = form.cleaned_data.get('username')
  43. password = form.cleaned_data.get('password')
  44. user = UserModel.objects.filter(username=username).first()
  45.  
  46. if user:
  47. if check_password(password, user.password):
  48. token = SessionToken(user=user)
  49. token.create_token()
  50. token.save()
  51. response = redirect('/feed/')
  52. response.set_cookie(key='session_token', value=token.session_token)
  53. return response
  54. else:
  55. response_data['message'] = 'Incorrect Password! Please try again!'
  56. elif request.method == 'GET':
  57. form = LoginForm()
  58.  
  59. response_data['form'] = form
  60. return render(request, 'login.html', response_data)
  61.  
  62.  
  63. def post_view(request):
  64. user = check_validation(request)
  65.  
  66. if user:
  67. if request.method == 'POST':
  68. form = PostForm(request.POST, request.FILES)
  69. if form.is_valid():
  70. image = form.cleaned_data.get('image')
  71. caption = form.cleaned_data.get('caption')
  72. post = PostModel(user=user, image=image, caption=caption)
  73. post.save()
  74.  
  75. path = str(BASE_DIR + "/" + post.image.url)
  76.  
  77. client = ImgurClient('3402b40cf104724', '3c498635c7ea8cee8c9831927c8ebda6b9e69e18')
  78. post.image_url = client.upload_from_path(path, anon=True)['link']
  79. post.save()
  80.  
  81. return redirect('/feed/')
  82. else:
  83. return HttpResponse("Form data is not valid.")
  84.  
  85. else:
  86. form = PostForm()
  87. return render(request, 'post.html', {'forms': form})
  88. else:
  89. return redirect('/login/')
  90.  
  91.  
  92. def feed_view(request):
  93. user = check_validation(request)
  94. if user:
  95. posts = PostModel.objects.all().order_by('created_on')
  96. for post in posts:
  97. existing_like = LikeModel.objects.filter(post_id=post.id, user=user).first()
  98. if existing_like:
  99. post.has_liked = True
  100.  
  101. return render(request, 'feeds.html', {'posts': posts})
  102. else:
  103.  
  104. return redirect('/login/')
  105.  
  106.  
  107. def like_view(request):
  108. user = check_validation(request)
  109. if user and request.method == 'POST':
  110. form = LikeForm(request.POST)
  111. if form.is_valid():
  112. post_id = form.cleaned_data.get('post').id
  113. existing_like = LikeModel.objects.filter(post_id=post_id, user=user).first()
  114. if not existing_like:
  115. LikeModel.objects.create(post_id=post_id, user=user)
  116. else:
  117. existing_like.delete()
  118. return redirect('/feeds/')
  119. else:
  120. return redirect('/login/')
  121.  
  122.  
  123. def comment_view(request):
  124. user = check_validation(request)
  125. if user and request.method == 'POST':
  126. form = CommentForm(request.POST)
  127. if form.is_valid():
  128. post_id = form.cleaned_data.get('post').id
  129. comment_text = form.cleaned_data.get('comment_text')
  130. comment = CommentModel.objects.create(user=user, post_id=post_id, comment_text=comment_text)
  131. comment.save()
  132. return redirect('/feeds/')
  133. else:
  134. return redirect('/feeds/')
  135. else:
  136. return redirect('/login')
  137.  
  138.  
  139. # For validating the session
  140. def check_validation(request):
  141. if request.COOKIES.get('session_token'):
  142. session = SessionToken.objects.filter(session_token=request.COOKIES.get('session_token')).first()
  143. if session:
  144. time_to_live = session.created_on + timedelta(days=1)
  145. if time_to_live > timezone.now():
  146. return session.user
  147. else:
  148. return None
Add Comment
Please, Sign In to add comment