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