PageRenderTime 50ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/dom/mysite/microblog/views.py

https://bitbucket.org/mjanisiewicz/zadania-zad7
Python | 180 lines | 150 code | 20 blank | 10 comment | 31 complexity | db54d04524b2f2a825a221420e61e4cc MD5 | raw file
  1. # -*- coding: utf-8 -*-
  2. from django.http import HttpResponseRedirect
  3. from django.core.urlresolvers import reverse
  4. from django.shortcuts import render
  5. from forms import AddForm, LoginForm, RegisterForm, TagForm #formularze
  6. from django.contrib import messages #system flash message'y
  7. from django.contrib.auth import authenticate, login
  8. from models import Tag
  9. #obsługa dodawania wpisu
  10. def add_entry_view(request):
  11. if not request.user.is_authenticated():
  12. return HttpResponseRedirect(redirect_to=reverse('list_entries'))
  13. #jestem zalogowany
  14. username = request.user.username
  15. form = AddForm(initial={'author' : username})
  16. if request.method == "POST":
  17. form = AddForm(request.POST)
  18. if form.is_valid():
  19. from models import Entry
  20. from django.utils import timezone
  21. checkboxes = request.POST.getlist('checkboxes')
  22. messages.success(request, checkboxes)
  23. listaCheckboxow = []
  24. for tag in checkboxes:
  25. listaCheckboxow.append(Tag.objects.get(name=tag))
  26. title = form.cleaned_data['title']
  27. content = form.cleaned_data['content']
  28. author = form.cleaned_data['author']
  29. entry = Entry(title=title, content=content, nick=author)
  30. entry.full_clean()
  31. entry.save()
  32. for tagg in listaCheckboxow:
  33. entry.tags.add(tagg)
  34. messages.success(request, 'Message added successfully')
  35. url = reverse('list_entries')
  36. return HttpResponseRedirect(redirect_to=url)
  37. else:
  38. messages.error(request, 'Invalid form submission')
  39. return render(request, 'microblog/add.html', {'form' : form})
  40. else:
  41. return render(request, 'microblog/add.html', {'form' : form, 'tags': Tag.objects.all()})
  42. #obsługa rejestracji - nie przeczytałem, bo wszystko udostępnia już Django, eh.
  43. def register_view(request):
  44. form = RegisterForm()
  45. url = reverse('list_entries')
  46. if request.user.is_authenticated():
  47. return HttpResponseRedirect(redirect_to=url)
  48. if request.method == "POST":
  49. form = RegisterForm(request.POST)
  50. if form.is_valid():
  51. login = form.cleaned_data['username']
  52. password = form.cleaned_data['passs']
  53. email = form.cleaned_data['email']
  54. user = authenticate(username=login, password=password)
  55. if user is None:
  56. #tworzymy nowego usera jeśli już taki nie istnieje
  57. from django.contrib.auth.models import User
  58. user = User.objects.create_user(login, email, password)
  59. user.save()
  60. messages.success(request, 'User registered successfully, now you can log in')
  61. return HttpResponseRedirect(redirect_to=url)
  62. else:
  63. messages.error(request, 'User already exists!')
  64. else:
  65. messages.error(request, 'Invalid form submission')
  66. return render(request, 'microblog/register.html', {'form' : form})
  67. #obsługa logowania
  68. def login_view(request):
  69. url = reverse('list_entries')
  70. if not request.user.is_authenticated():
  71. form = LoginForm()
  72. if request.method == "POST":
  73. form = LoginForm(request.POST)
  74. if form.is_valid():
  75. login_ = form.cleaned_data['login']
  76. password_ = form.cleaned_data['password']
  77. #logujemy usera
  78. user = authenticate(username=login_, password=password_)
  79. if user is not None:
  80. # the password verified for the user
  81. if user.is_active:
  82. login(request, user)
  83. messages.success(request, "Logged In!")
  84. return HttpResponseRedirect(redirect_to=url)
  85. else:
  86. messages.error(request, "You were banned! Haha!")
  87. return HttpResponseRedirect(redirect_to=url)
  88. messages.error(request, 'Invalid username or password')
  89. return render(request, 'microblog/login.html', {'form' : form})
  90. else:
  91. messages.success(request, 'You are already authenticated!')
  92. return HttpResponseRedirect(redirect_to=url)
  93. def logout_view(request):
  94. from django.contrib.auth import logout
  95. logout(request)
  96. messages.success(request, 'Logged out successfully')
  97. return HttpResponseRedirect(redirect_to=reverse('list_entries'))
  98. def userlist_view(request):
  99. from django.contrib.auth.models import User
  100. users = User.objects.all()
  101. return render(request, 'microblog/userslist.html', {'users' : users})
  102. def entries_username_view(request, username):
  103. from models import Entry
  104. entries = Entry.objects.filter(nick=username).order_by('-published')
  105. return render(request, 'microblog/stub.html', {'entries' : entries})
  106. #obsluga error page'y
  107. def error404_view(request):
  108. return render(request, 'microblog/error.html')
  109. def error500_view(request):
  110. return render(request, 'microblog/error.html')
  111. def add_tag_view(request):
  112. if not request.user.is_authenticated() and request.user.username != 'admin':
  113. return HttpResponseRedirect(redirect_to=reverse('list_entries'))
  114. #jestem zalogowany
  115. username = request.user.username
  116. form = TagForm()
  117. if request.method == "POST":
  118. form = TagForm(request.POST)
  119. if form.is_valid():
  120. from models import Tag
  121. name = form.cleaned_data['name']
  122. tag = Tag(name=name)
  123. tag.full_clean()
  124. tag.save()
  125. messages.success(request, 'Tag added successfully')
  126. url = reverse('add_tag')
  127. return HttpResponseRedirect(redirect_to=url)
  128. else:
  129. messages.error(request, 'Invalid form submission')
  130. return render(request, 'microblog/tagadd.html', {'form' : form})
  131. else:
  132. return render(request, 'microblog/tagadd.html', {'form' : form})
  133. def edit_entry_view(request, id):
  134. from models import Entry, Tag
  135. from forms import AddForm
  136. from django.utils import timezone
  137. entry = Entry.objects.get(pk = id)
  138. now = timezone.now()
  139. before = entry.published
  140. url = reverse('list_entries')
  141. isModerator = request.user.has_perm('microblog.change_entry')
  142. username = request.user.username
  143. if username != entry.nick and not isModerator:
  144. messages.error(request, 'Nie jesteś sobą')
  145. return HttpResponseRedirect(redirect_to=url)
  146. if (now - before).seconds > 10*60 and not isModerator:
  147. messages.error(request, 'Nie możesz bo 10minut')
  148. return HttpResponseRedirect(redirect_to=url)
  149. if request.method == "POST":
  150. title = request.POST['title']
  151. content = request.POST['content']
  152. entry.edited_by = username
  153. entry.last_edited =timezone.now()
  154. entry.title = title
  155. entry.content = content
  156. entry.save()
  157. messages.success(request, 'Edytowano pomyślnie')
  158. messages.success(request, 'siemasz psie')
  159. form = AddForm(initial={'title' : entry.title, 'content' : entry.content})
  160. return render(request, 'microblog/edit.html', {'form' : form, 'pk' : id, 'tags': Tag.objects.all()})