Advertisement
Guest User

Untitled

a guest
Jan 10th, 2018
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.21 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_url='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. class AskView(View):
  63.     def get(self,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.     @method_decorator(login_required(login_url='login/'))
  74.     def dispatch(self, request, *args, **kwargs):
  75.          return super(AskView,self).dispatch(self, request, *args, **kwargs)
  76.  
  77.  
  78. '''
  79. def ask_view(request):
  80.    if request.method=='POST':
  81.        form = QuestionForm(request.POST)
  82.        if form.is_valid():
  83.            form.save()
  84.            return HttpResponseRedirect("../question/"+str(Question.objects.latest('id').id))
  85.    else:
  86.        form=QuestionForm
  87.    return render(request,'ask.html',{'form':form})
  88. '''
  89.  
  90. def singup_view(request):
  91.     if request.method=='POST':
  92.         form = RegistrationForm(request.POST)
  93.         if form.is_valid():
  94.             form.save()
  95.             return HttpResponseRedirect("/")
  96.     else:
  97.         form=RegistrationForm
  98.     return render(request,'singup.html',{'form':form})
  99.  
  100.  
  101.  
  102. def settings_view(request):
  103.     return render(request, 'settings.html')
  104.  
  105.  
  106. def login_view(request):
  107.     return render(request, 'login.html')
  108.  
  109. def logged_out_view(request):
  110.     return render(request, 'logged_out.html')
  111.  
  112.  
  113. def paginate(objects_list, request):
  114.     # do smth with Paginator, etc...
  115.     paginator = Paginator(objects_list, 3)  # 3 вопроса на страницу
  116.     page = request.GET.get('page')
  117.     try:
  118.        page = paginator.page(page)
  119.     except PageNotAnInteger:
  120.         # If page is not an integer, deliver first page.
  121.         page = paginator.page(1)
  122.     except EmptyPage:
  123.         # If page is out of range (e.g. 9999), deliver last page of results.
  124.         page = paginator.page(paginator.num_pages)
  125.     return page
  126.  
  127.  
  128.  
  129. def register(request):
  130.     errors = []
  131.     form = {}
  132.     if request.method == 'POST':
  133.         username = request.POST.get('username')
  134.         if not username:
  135.             errors.append("Введите имя пользователя")
  136.         elif len(username) < 5:
  137.             errors.append("Имя пользователя должно содержать не менее 5 символов")
  138.  
  139.         email = request.POST.get('email')
  140.         if not email:
  141.             errors.append("Введите адрес эл. почты")
  142.  
  143.         firstname = request.POST.get('firstname')
  144.         if not firstname:
  145.             errors.append("Введите своё имя")
  146.         else:
  147.             form['firstname'] = firstname
  148.  
  149.         lastname = request.POST.get('lastname')
  150.         if not lastname:
  151.             errors.append("Введите своё фамилию")
  152.         else:
  153.             form['lastname'] = lastname
  154.  
  155.         password = request.POST.get('password')
  156.         if not password:
  157.             errors.append("Введите пароль")
  158.         elif len(password) < 8:
  159.             errors.append("Пароль должен содержать не менее 8 символов")
  160.         else:
  161.             confirmpass = request.POST.get('confirmpass')
  162.             if not confirmpass:
  163.                 errors.append("Подтвердите пароль")
  164.             elif password != confirmpass:
  165.                 errors.append("Пароли не совпадают")
  166.                 form['confirmpass'] = confirmpass
  167.             form['password'] = password
  168.  
  169.         sameusers = []
  170.         try:
  171.             sameusers.append(User.objects.get(username=username))
  172.         except User.DoesNotExist:
  173.             form['username'] = username
  174.         try:
  175.             sameusers.append(User.objects.get(email=email))
  176.         except User.DoesNotExist:
  177.             form['email'] = email
  178.  
  179.         if sameusers:
  180.             errors.append("Пользователь с таким именем или адресом эл. почты уже существует")
  181.  
  182.         if errors:
  183.             return render(request, 'singup.html', {'errors': errors, 'form': form})
  184.  
  185.         User.objects.create_user(username=username, email=email, password=password)
  186.         return HttpResponseRedirect("/login/")
  187.  
  188.     return render(request, 'singup.html', {'errors': [], 'formdata': form})
  189.  
  190.  
  191. '''
  192. from ask.models import AuthorForm
  193. def index(request):
  194.    return render(request,'authors.html',{'articles':models.Article.objects.all().prefetch_related('author')})
  195.  
  196. def create_author(request):
  197.  
  198.    if request.method == 'POST':
  199.        form=AuthorForm(request.POST)
  200.        if form.is_valid():
  201.        #birthday = form.cleaned_data['birthday']
  202.        #name = form.cleaned_data['name']
  203.        #models.Author.objects.create(birthday=birthday,name=name)
  204.        form.save()
  205.        ###
  206.        return redirect('/')
  207.    else:
  208.        form = AuthorForm()
  209.  
  210.    return render(request,'ask.html',{'form': form})
  211. '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement