Guest User

Untitled

a guest
Jul 27th, 2017
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.67 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. from __future__ import unicode_literals
  3.  
  4. from django.shortcuts import render,redirect
  5. from datetime import timedelta
  6. from demoapp.forms import SignUpForms,LoginForm,PostForm,CommentForm,LikeForm
  7. from demoapp.models import UserModel, SessionToken, PostModel,CommentModel,LikeModel
  8. from django.contrib.auth.hashers import make_password,check_password
  9. from instagram.settings import BASE_DIR
  10. from django.utils import timezone
  11. from imgurpython import ImgurClient
  12. # Create your views here.
  13. def signup_view(request):
  14. if request.method == 'POST':
  15. form = SignUpForms(request.POST)
  16. if form.is_valid():
  17. Username = form.cleaned_data['Username']
  18. Email =form.cleaned_data['Email']
  19. Name = form.cleaned_data['Name']
  20. Password = form.cleaned_data['Password']
  21. # insert data to db
  22. new_user = UserModel(Name=Name,Password=make_password(Password),Username=Username, Email=Email)
  23. new_user.save()
  24. template_name = 'success.html'
  25. else:
  26. template_name = 'failed.html'
  27. else:
  28. form = SignUpForms()
  29. template_name = 'signup.html'
  30.  
  31. return render(request, template_name, {'form':form})
  32.  
  33.  
  34. def login_view(request):
  35. if request.method == 'GET':
  36. #Display Login Page
  37. login_form = LoginForm()
  38. template_name = 'login.html'
  39. elif request.method == 'POST':
  40. #Process The Data
  41. login_form = LoginForm(request.POST)
  42. if login_form.is_valid():
  43. #Validation Success
  44. Username = login_form.cleaned_data['Username']
  45. Password = login_form.cleaned_data['Password']
  46. #read Data From db
  47. user = UserModel.objects.filter(Username=Username).first()
  48. if user:
  49. #compare Password
  50. if check_password(Password, user.Password):
  51. token = SessionToken(user = user)
  52. token.create_token()
  53. token.save()
  54. response = redirect('feed/')
  55. response.set_cookie(key='session_token', value=token.session_token)
  56. return response
  57. #successfully Login
  58.  
  59. template_name = 'login_success.html'
  60. else:
  61.  
  62. #Failed
  63. template_name = 'login_fail.html'
  64. else:
  65. #user doesn't exist
  66. template_name = 'login_fail.html'
  67. else:
  68. #Validation Failed
  69. template_name = 'login_fail.html'
  70.  
  71.  
  72. return render(request,template_name,{'login_form':login_form})
  73.  
  74.  
  75. def post_view(request):
  76. user = check_validation(request)
  77.  
  78. if user:
  79. if request.method == 'POST':
  80. form = PostForm(request.POST, request.FILES)
  81. if form.is_valid():
  82. image = form.cleaned_data.get('image')
  83. caption = form.cleaned_data.get('caption')
  84. post = PostModel(user=user, image=image, caption=caption)
  85. post.save()
  86.  
  87. path = str(BASE_DIR + post.image.url)
  88.  
  89. client = ImgurClient('d2d18027cc82a9e', '455ca114d7df83fad4fae1091316dfab42087c18')
  90. post.image_url = client.upload_from_path(path,anon=True)['link']
  91. post.save()
  92.  
  93. return redirect('/feed/')
  94.  
  95. else:
  96. form = PostForm()
  97. return render(request, 'post.html', {'form' : form})
  98. else:
  99. return redirect('/login/')
  100.  
  101.  
  102. def feed_view(request):
  103. user = check_validation(request)
  104. if user:
  105.  
  106. posts = PostModel.objects.all().order_by('-created_on',)
  107.  
  108. for post in posts:
  109.  
  110. existing_like = LikeModel.objects.filter(post_id=post.id, user=user).first()
  111. if existing_like:
  112. post.has_liked = True
  113.  
  114.  
  115. return render(request, 'feed.html', {'posts': posts})
  116. else:
  117.  
  118. return redirect('/login/')
  119.  
  120.  
  121.  
  122.  
  123. def like_view(request):
  124. user = check_validation(request)
  125. if user and request.method == 'POST':
  126. form = LikeForm(request.POST)
  127. if form.is_valid():
  128. post_id = form.cleaned_data.get('post').id
  129. existing_like = LikeModel.objects.filter(post_id=post_id, user=user).first()
  130. if not existing_like:
  131. LikeModel.objects.create(post_id=post_id, user=user)
  132. else:
  133. existing_like.delete()
  134.  
  135. return redirect('/feed/')
  136.  
  137. else:
  138. return redirect('/login/')
  139.  
  140.  
  141. def comment_view(request):
  142. user = check_validation(request)
  143. if user and request.method == 'POST':
  144. form = CommentForm(request.POST)
  145. if form.is_valid():
  146. post_id = form.cleaned_data.get('post').id
  147. comment_text = form.cleaned_data.get('comment_text')
  148. comment = CommentModel.objects.create(user=user, post_id=post_id, comment_text=comment_text)
  149. comment.save()
  150. # TODO: ADD MESSAGE TO INDICATE SUCCESS
  151. return redirect('/feed/')
  152. else:
  153. # TODO: ADD MESSAGE FOR FAILING TO POST COMMENT
  154. return redirect('/feed/')
  155. else:
  156. return redirect('/login')
  157.  
  158.  
  159.  
  160.  
  161. #For validating the session
  162. def check_validation(request):
  163. if request.COOKIES.get('session_token'):
  164. session = SessionToken.objects.filter(session_token=request.COOKIES.get('session_token')).first()
  165. if session:
  166. time_to_live = session.created_on + timedelta(days=1)
  167. if time_to_live > timezone.now():
  168. return session.user
  169. else:
  170. return None
Add Comment
Please, Sign In to add comment