|
|
|
from django.contrib import messages
|
|
|
|
from django.contrib.auth import authenticate, login
|
|
|
|
from django.contrib.auth.decorators import login_required
|
|
|
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
|
|
|
from django.http import HttpRequest, HttpResponseRedirect
|
|
|
|
from django.shortcuts import render
|
|
|
|
from django.urls import reverse
|
|
|
|
from django.views import View
|
|
|
|
|
|
|
|
from cms import promoters
|
|
|
|
from cms.forms import ArticleForm, UserForm
|
|
|
|
from cms.models import Article
|
|
|
|
|
|
|
|
|
|
|
|
class ArticleView(LoginRequiredMixin, View):
|
|
|
|
def post(self, request: HttpRequest):
|
|
|
|
post_data = request.POST
|
|
|
|
article = Article.objects.create(body=post_data['body'],
|
|
|
|
link=post_data['link'])
|
|
|
|
marketer = promoters.Marketer(article)
|
|
|
|
try:
|
|
|
|
marketer.promote()
|
|
|
|
message_type = messages.SUCCESS
|
|
|
|
message_text = 'Продвижение статьи прошло успешно'
|
|
|
|
except promoters.PromoteError as exc:
|
|
|
|
message_type = messages.ERROR
|
|
|
|
message_text = 'Произошла ошибка: %s' % str(exc)
|
|
|
|
messages.add_message(request=request,
|
|
|
|
level=message_type,
|
|
|
|
message=message_text)
|
|
|
|
return HttpResponseRedirect(reverse('new-article'))
|
|
|
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
|
def new_article(request):
|
|
|
|
article_form = ArticleForm()
|
|
|
|
article_context = {
|
|
|
|
'new_article_form': article_form
|
|
|
|
}
|
|
|
|
return render(request,
|
|
|
|
template_name='articles/new.html',
|
|
|
|
context=article_context)
|
|
|
|
|
|
|
|
|
|
|
|
class AuthenticationView(View):
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
|
|
user_form = UserForm()
|
|
|
|
auth_context = {
|
|
|
|
'user_form': user_form,
|
|
|
|
}
|
|
|
|
return render(request,
|
|
|
|
'user/sign_in.html',
|
|
|
|
context=auth_context)
|
|
|
|
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
|
|
username = request.POST['username']
|
|
|
|
password = request.POST['password']
|
|
|
|
authenticated_user = authenticate(username=username,
|
|
|
|
password=password)
|
|
|
|
if authenticated_user is None:
|
|
|
|
messages.add_message(request,
|
|
|
|
messages.ERROR,
|
|
|
|
'Неправильное имя пользователя и/или пароль')
|
|
|
|
return HttpResponseRedirect(reverse('authenticate'))
|
|
|
|
else:
|
|
|
|
messages.add_message(request,
|
|
|
|
messages.SUCCESS,
|
|
|
|
'Поздравляю, вы вошли успешно')
|
|
|
|
login(request,
|
|
|
|
user=authenticated_user)
|
|
|
|
return HttpResponseRedirect(reverse('new-article'))
|