Advertisement
Guest User

Untitled

a guest
Jan 10th, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.60 KB | None | 0 0
  1. #! /usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. from django.views.generic import TemplateView
  4. from django.shortcuts import render_to_response, redirect, render
  5. from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
  6. from django.shortcuts import get_object_or_404
  7. from django.contrib import auth
  8. from django.views.generic import View
  9. from ask.models import Question,Answer,Tag,Profile
  10. from ask.forms import QuestionForm,RegistrationForm
  11. from django.http import HttpResponse
  12. from django.http import HttpResponseRedirect
  13. from django.contrib.auth.models import User
  14. from django.contrib.auth.decorators import login_required
  15. from django.utils.decorators import method_decorator
  16.  
  17. class QuestionsView(View):
  18.     def get(self,request):
  19.         questions = Question.objects.all()
  20.         questions = paginate(questions, request)
  21.         return render(request, 'index.html', {'questions': questions})
  22.  
  23.     @method_decorator(login_required('login/'))
  24.     def dispatch(self, request, *args, **kwargs):
  25.         return super(QuestionsView,self).dispatch(self, request, *args, **kwargs)
  26.  
  27.  
  28. class BestQuestionsView(View):
  29.     def get(self,request):
  30.         choices = Question.objects.best_questions()
  31.         choices = choices[:5]
  32.         questions = paginate(choices, request)
  33.         return render(request, 'index.html', {'questions': questions})
  34.  
  35.  
  36. class NewQuestionsView(View):
  37.     def get(self,request):
  38.         choices = Question.objects.new_questions()
  39.         questions = paginate(choices, request)
  40.         return render(request, 'index.html', {'questions': questions})
  41.  
  42.  
  43. class QuestionView(View):
  44.     def get(self,request, id):
  45.         q = Question.objects.get(pk=id)
  46.         answers = Answer.objects.filter(question=q)
  47.         answers = paginate(answers, request)
  48.         return render(request,"questions.html",{"question": q,"answers": answers})
  49.  
  50.  
  51. class QuestionTagView(View):
  52.     def get(self,request, tag_name):
  53.         tag = Tag.objects.get(name=tag_name)
  54.         choices = Question.objects.filter(tags=tag)
  55.         questions = paginate(choices, request)
  56.         return render(request, 'index.html', {'questions': questions})
  57.  
  58.  
  59. #def ask_view(request):
  60. #    return render(request, 'ask.html')
  61.  
  62.  
  63. def ask_view(request):
  64.     if request.method=='POST':
  65.         form = QuestionForm(request.POST)
  66.         if form.is_valid():
  67.             form.save()
  68.             return HttpResponseRedirect("../question/"+str(Question.objects.latest('id').id))
  69.     else:
  70.         form=QuestionForm
  71.     return render(request,'ask.html',{'form':form})
  72.  
  73.  
  74. def singup_view(request):
  75.     if request.method=='POST':
  76.         form = RegistrationForm(request.POST)
  77.         if form.is_valid():
  78.             form.save()
  79.             return HttpResponseRedirect("/")
  80.     else:
  81.         form=RegistrationForm
  82.     return render(request,'singup.html',{'form':form})
  83.  
  84.  
  85.  
  86. def settings_view(request):
  87.     return render(request, 'settings.html')
  88.  
  89.  
  90. def login_view(request):
  91.     return render(request, 'login.html')
  92.  
  93. def logged_out_view(request):
  94.     return render(request, 'logged_out.html')
  95.  
  96.  
  97. def paginate(objects_list, request):
  98.     # do smth with Paginator, etc...
  99.     paginator = Paginator(objects_list, 3)  # 3 вопроса на страницу
  100.     page = request.GET.get('page')
  101.     try:
  102.        page = paginator.page(page)
  103.     except PageNotAnInteger:
  104.         # If page is not an integer, deliver first page.
  105.         page = paginator.page(1)
  106.     except EmptyPage:
  107.         # If page is out of range (e.g. 9999), deliver last page of results.
  108.         page = paginator.page(paginator.num_pages)
  109.     return page
  110.  
  111.  
  112.  
  113. def register(request):
  114.     errors = []
  115.     form = {}
  116.     if request.method == 'POST':
  117.         username = request.POST.get('username')
  118.         if not username:
  119.             errors.append("Введите имя пользователя")
  120.         elif len(username) < 5:
  121.             errors.append("Имя пользователя должно содержать не менее 5 символов")
  122.  
  123.         email = request.POST.get('email')
  124.         if not email:
  125.             errors.append("Введите адрес эл. почты")
  126.  
  127.         firstname = request.POST.get('firstname')
  128.         if not firstname:
  129.             errors.append("Введите своё имя")
  130.         else:
  131.             form['firstname'] = firstname
  132.  
  133.         lastname = request.POST.get('lastname')
  134.         if not lastname:
  135.             errors.append("Введите своё фамилию")
  136.         else:
  137.             form['lastname'] = lastname
  138.  
  139.         password = request.POST.get('password')
  140.         if not password:
  141.             errors.append("Введите пароль")
  142.         elif len(password) < 8:
  143.             errors.append("Пароль должен содержать не менее 8 символов")
  144.         else:
  145.             confirmpass = request.POST.get('confirmpass')
  146.             if not confirmpass:
  147.                 errors.append("Подтвердите пароль")
  148.             elif password != confirmpass:
  149.                 errors.append("Пароли не совпадают")
  150.                 form['confirmpass'] = confirmpass
  151.             form['password'] = password
  152.  
  153.         sameusers = []
  154.         try:
  155.             sameusers.append(User.objects.get(username=username))
  156.         except User.DoesNotExist:
  157.             form['username'] = username
  158.         try:
  159.             sameusers.append(User.objects.get(email=email))
  160.         except User.DoesNotExist:
  161.             form['email'] = email
  162.  
  163.         if sameusers:
  164.             errors.append("Пользователь с таким именем или адресом эл. почты уже существует")
  165.  
  166.         if errors:
  167.             return render(request, 'singup.html', {'errors': errors, 'form': form})
  168.  
  169.         User.objects.create_user(username=username, email=email, password=password)
  170.         return HttpResponseRedirect("/login/")
  171.  
  172.     return render(request, 'singup.html', {'errors': [], 'formdata': form})
  173.  
  174.  
  175. '''
  176. from ask.models import AuthorForm
  177. def index(request):
  178.    return render(request,'authors.html',{'articles':models.Article.objects.all().prefetch_related('author')})
  179.  
  180. def create_author(request):
  181.  
  182.    if request.method == 'POST':
  183.        form=AuthorForm(request.POST)
  184.        if form.is_valid():
  185.        #birthday = form.cleaned_data['birthday']
  186.        #name = form.cleaned_data['name']
  187.        #models.Author.objects.create(birthday=birthday,name=name)
  188.        form.save()
  189.        ###
  190.        return redirect('/')
  191.    else:
  192.        form = AuthorForm()
  193.  
  194.    return render(request,'ask.html',{'form': form})
  195. '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement