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.
 
 
 
 
 
 

176 lines
5.5 KiB

import hashlib
import time
from django.db.models import Q
from django.http import Http404
from lms.decors import response_decor
from lms.settings import COMMENT_SECRET
from lms.tools import check_role, comment_auth_data
from finance.models import Bill, ServiceRequest, Price
from management.models import News, Faq, FaqTitle
from courses.models import Course, CourseTheme
from management.reports import get_now_success_hw, get_second_success_hw
from access.models import User
from finance.models import Bill, Price
from .forms import UploadFileForm
@response_decor(template='super_bill.html')
def super_bill(request):
return {}
@response_decor(template='manager_profile.html')
def profile(request):
checker = check_role(request.user, 'M')
if checker['result']:
return {}
else:
return checker
@response_decor(template='manager_account.html')
def account(request):
checker = check_role(request.user, 'M')
if checker['result']:
return {'prices': Price.objects.filter(public=True)}
else:
return checker
@response_decor(template='news_one.html', without_auth=True)
def news(request, id):
try:
news = News.objects.get(id=id)
except News.DoesNotExist:
raise Http404
return {'news': news}
@response_decor(template='manager_history.html')
def history(request):
if request.user.in_role != 'T' and request.user.in_role != 'U':
return {'yourbills': Bill.objects.filter(manager=request.user).order_by('-id')}
else:
raise Http404
@response_decor(template='manager_servicerequest.html')
def servicerequest(request):
if request.user.in_role != 'T' and request.user.in_role != 'U':
return {'servicerequests': ServiceRequest.objects.filter(Q(status='S', manager=request.user)|Q(status='W', manager=request.user)).order_by('date')}
else:
raise Http404
@response_decor(template='super_profile.html')
def super_profile(request):
checker = check_role(request.user, 'S')
if checker['result']:
return {}
else:
return checker
@response_decor(template='super_history.html')
def super_history(request):
if request.user.in_role != 'T' and request.user.in_role != 'U' and request.user.in_role != 'M':
return {'yourbills': Bill.objects.all().order_by('-id'), 'failed': ServiceRequest.objects.filter(status='B').order_by('-id')}
else:
raise Http404
@response_decor(template='super_servicerequest.html')
def super_servicerequest(request):
if request.user.in_role != 'T' and request.user.in_role != 'U' and request.user.in_role != 'M':
return {'servicerequests': ServiceRequest.objects.filter(Q(status='S')|Q(status='W')).order_by('date')}
else:
raise Http404
@response_decor(template='admin_profile.html')
def admin_profile(request):
checker = check_role(request.user, 'A')
if checker['result']:
return {}
else:
return checker
@response_decor(template='faq.html', without_auth=True)
def faq(request):
a_faq = False
if request.user.is_authenticated() and (request.user.is_admin or request.user.is_staff):
if request.user.is_authenticated():
if request.user.is_admin:
a_faq = FaqTitle.objects.filter(Q(is_admin=True)|Q(is_staff=True))
elif request.user.is_staff:
a_faq = FaqTitle.objects.filter(is_admin=False, is_staff=True)
return {'faqs': [i.get_face() for i in FaqTitle.objects.filter(is_admin=False, is_staff=False)],
'a_faqs': [i.get_face() for i in a_faq] if a_faq else None,
'admin': True if request.user.is_authenticated() and (request.user.is_staff or request.user.is_admin) else False}
@response_decor(template='faq_one.html', without_auth=False)
def faq_one(request, id):
try:
faq = Faq.objects.get(id=id)
except Faq.DoesNotExist:
raise Http404
else:
faq = faq.get_face()
return {'faq': faq}
@response_decor(template='progress_report.html')
def progress_report(request):
map = []
for i in Course.objects.filter(public=True):
c = {'title': i.get_title(), 'themes': CourseTheme.objects.filter(course=i), 'id': i.id,
'journals': []}
map.append(c)
return {'map': map, 'get_now_success_hw': get_now_success_hw(), 'get_second_success_hw': get_second_success_hw()}
@response_decor(template='cabinet.html')
def render_management_cabinet(request):
if request.user.in_role != 'A':
raise Http404
else:
courses = Course.objects.filter(hidden=False).order_by('id')
return {'courses': courses}
@response_decor(template='diplomscab.html')
def render_diplom_cabinet(request):
context = {}
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
for l in request.FILES['file'].readlines():
try:
user = User.objects.get(email=l.rstrip().lower())
except User.DoesNotExist:
context['error'] = 'Плохая почта %s' % l
try:
data = form.cleaned_data
id_ = int(data['service_id'])
service = Price.objects.get(id=id_)
bill = Bill.objects.create(user=user, status='F', service=service)
bill.save()
except Exception:
context['error'] = 'Не получилось создать счет для %s' % l
context['form'] = form
return context
else:
form = UploadFileForm()
context['form'] = form
return context