You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

165 lines
5.2 KiB

# coding=utf-8
import random
import re
from lms.decors import api_decor
from management.letters import sent_comment_news
from library.models import Article
from management.models import Comment
from storage.models import Storage
import django.utils.timezone
@api_decor(without_auth=True)
def get_random_article(request, context):
context['code'] = '1'
context['data'] = random.choice(Article.objects.exclude(id=request.GET['id'])).slug
return context
@api_decor(without_auth=False, method='POST', need_keys=['art'], check_request=True)
def set_favorite(request, context):
try:
article = Article.objects.get(id=request.POST['art'])
except Article.DoesNotExist:
context['code'] = '0'
context['response'] = u'Статья не найдена'
else:
article.set_favorite(request.user)
context['code'] = '1'
return context
@api_decor(without_auth=False, method='POST', need_keys=['art'], check_request=True)
def unset_favorite(request, context):
try:
article = Article.objects.get(id=request.POST['art'])
except Article.DoesNotExist:
context['code'] = '0'
context['response'] = u'Статья не найдена'
else:
article.unset_favorite(request.user)
context['code'] = '1'
return context
@api_decor(without_auth=False, method='GET', need_keys=['id'], check_request=True)
def check_favorite(request, context):
try:
article = Article.objects.get(id=request.GET['id'])
except Article.DoesNotExist:
context['code'] = '0'
context['response'] = u'Статья не найдена'
else:
if article.check_favorit_exists(request.user):
context['code'] = '1'
else:
context['code'] = '0'
return context
@api_decor(without_auth=True, need_keys=['lesson'], method='POST', check_request=True)
def load_comments(request, context):
# Загрузка списка комментариев
lesson = Article.objects.get(id=request.POST['lesson'])
context['data'] = lesson.get_comments(_user=request.user)
if len(context['data']) == 0:
context['code'] = '0'
else:
context['code'] = '1'
return context
@api_decor(without_auth=True)
def get_comments_length(request, context):
context['code'] = '1'
context['data'] = Article.objects.get(id=request.GET['id']).comments.filter(closed=False).count()
return context
@api_decor(without_auth=False)
def sent_comment(request, context):
# Отправка комментария урока
if request.POST['comment_sent_text']:
lesson = Article.objects.get(id=request.POST['comment_for_lesson_id'])
parent_id = request.POST['reply_for_comment_id']
comment = Comment.objects.create(parent_id=parent_id, owner=request.user,
bbtext=request.POST['comment_sent_text'], date=django.utils.timezone.now())
lesson.comments.add(comment)
lesson.save()
# Получение о добавление файлов комментария
r = re.compile('^file_')
files_keys = []
for i in request.POST.keys():
if r.match(i): files_keys.append(i)
if files_keys:
for i in files_keys:
comment.files.add(Storage.objects.get(key=request.POST[i]))
comment.save()
if parent_id != '0':
comment2 = Comment.objects.get(id=parent_id)
if comment2.owner.check_subscription('new_comment'):
sent_comment_news(comment2, comment, lesson)
context['code'] = '1'
context['data'] = comment.id
context['code'] = '1'
return context
@api_decor(without_auth=False)
def set_like(request, context):
try:
article = Article.objects.get(id=request.POST['id'])
except Article.DoesNotExist:
context['code'] = '0'
context['response'] = u'Статья не найдена'
else:
result = article.like_plus(request.user)
context['code'] = '1' if result else '0'
return context
@api_decor(without_auth=False)
def unset_like(request, context):
try:
article = Article.objects.get(id=request.POST['id'])
except Article.DoesNotExist:
context['code'] = '0'
context['response'] = u'Статья не найдена'
else:
result = article.like_minus(request.user)
context['code'] = '1' if result else '0'
return context
@api_decor(without_auth=True)
def refresh_like(request, context):
try:
article = Article.objects.get(id=request.GET['id'])
except Article.DoesNotExist:
context['code'] = '0'
context['response'] = u'Статья не найдена'
else:
context['data'] = article.get_likes_length()
context['code'] = '1'
return context
@api_decor(without_auth=True)
def get_articles_length(request, context):
context['data'] = Article.objects.all().count()
context['code'] = '1'
return context
@api_decor(without_auth=True)
def get_all_views_length(request, context):
views = 0
for i in Article.objects.filter(public=True):
views += i.get_views_length()
context['code'] = '1'
context['data'] = views
return context