From 9f11f4c4263a5fdfad93fa6b053829f9709b4480 Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 20 Oct 2017 18:54:40 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9C=D0=B8=D0=B3=D1=80=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20=D0=BA=D1=83=D1=80=D1=81=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- access/migrations/0003_auto_20171019_1149.py | 20 + access/migrations/0004_auto_20171019_1150.py | 20 + access/migrations/0005_auto_20171019_1241.py | 20 + access/migrations/0006_auto_20171019_1243.py | 20 + access/models.py | 25 +- access/serializers.py | 7 +- access/tasks.py | 52 +- access/views.py | 25 +- config_app/__init__.py | 1 + config_app/apps.py | 7 + .../management}/__init__.py | 0 config_app/management/commands/__init__.py | 0 config_app/management/commands/clear_log.py | 25 + config_app/settings/__init__.py | 0 config_app/settings/dev.env | 5 + config_app/settings/prod.env | 5 + config_app/settings/test.env | 5 + config_app/supervisor_configs/celery.conf | 7 + config_app/supervisor_configs/flower.conf | 7 + config_app/supervisor_configs/schedule.conf | 7 + courses/__init__.py | 2 +- courses/models.py | 81 +- csv/load_perm.py | 30 +- finance/models.py | 1 - finance/tasks.py | 60 +- finance/yandex_pay.py | 3 +- journals/models.py | 2 + journals/tasks.py | 142 +- lms/__init__.py | 7 + lms/celery.py | 23 + lms/settings.py | 115 +- lms/urls.py | 1 + management/admin.py | 5 +- requirements.txt | 1 + service/__init__.py | 1 - service/admin.py | 5 - service/apps.py | 7 - service/migrations/0001_initial.py | 46 - service/models.py | 41 - service/tasks.py | 9 - templates/404.html | 280 ---- templates/500.html | 291 ---- templates/access_error.html | 73 - templates/activation.html | 369 ----- templates/admin_profile.html | 140 -- templates/all_achievements.html | 84 -- templates/all_actions.html | 35 - templates/all_articles.html | 117 -- templates/all_comments.html | 244 --- templates/analytics/base.html | 41 - templates/analytics/homework.html | 2 - templates/analytics/index.html | 12 - templates/analytics/theme.html | 9 - templates/articles.html | 120 -- templates/articles_index.html | 41 - templates/auth_error.html | 34 - templates/auth_modals.html | 652 --------- templates/base_index.html | 1303 ----------------- templates/bill_out.html | 159 -- templates/by_error.html | 34 - templates/cabinet.html | 236 --- templates/clean_articles.html | 25 - templates/comment_one.html | 67 - templates/comments.html | 10 - templates/comments_block.html | 22 - templates/contacts.html | 48 - templates/course.html | 375 ----- templates/diplomscab.html | 14 - templates/everyone_modals.html | 165 --- templates/exam.html | 333 ----- templates/fail_pay.html | 185 --- templates/faq.html | 111 -- templates/faq_one.html | 25 - templates/freeweek_more.html | 55 - templates/good_pay.html | 185 --- templates/homework.html | 336 ----- templates/index.html | 140 -- templates/index_menu.html | 143 -- templates/lesson.html | 248 ---- templates/mail.html | 14 - templates/mails/new_users.html | 50 - templates/mails/sent_order.html | 279 ---- templates/mails/sent_out_order.html | 275 ---- templates/mails/webinar.html | 30 - templates/manager_account.html | 101 -- templates/manager_history.html | 178 --- templates/manager_profile.html | 135 -- templates/manager_servicerequest.html | 295 ---- templates/menu.html | 47 - templates/new_reports.html | 70 - templates/news_one.html | 67 - templates/no_auth_modals.html | 283 ---- templates/one_comment.html | 63 - templates/practice_workshop.html | 281 ---- templates/profile.html | 446 ------ templates/progress_report.html | 85 -- templates/reports.html | 55 - templates/reports/base_index.html | 222 --- templates/reports/bills.html | 81 - templates/reports/freeweek.html | 149 -- templates/reports/hw_process_pp.html | 117 -- templates/reports/hw_process_pt.html | 139 -- templates/reports/mails.html | 113 -- templates/reports/menu.html | 47 - templates/reports/progress.html | 104 -- templates/right_site.html | 23 - templates/self_bill_result.html | 73 - templates/selfbill.html | 79 - templates/simplepayresult.xml | 9 - templates/student_matrix.html | 35 - templates/super_bill.html | 177 --- templates/super_history.html | 151 -- templates/super_profile.html | 180 --- templates/super_servicerequest.html | 344 ----- templates/teach_profile.html | 253 ---- templates/teacher_comments.html | 237 --- templates/teacher_exams.html | 116 -- templates/teacher_history.html | 144 -- templates/teacher_homeworks.html | 116 -- templates/teacher_materials.html | 182 --- templates/test.html | 17 - templates/traffic_map.html | 61 - templates/wallet.html | 110 -- templates/workshop_exam.html | 202 --- templates/workshop_homework.html | 210 --- templates/yandexkassa_result.xml | 2 - templates/zendesk.html | 30 - 127 files changed, 508 insertions(+), 13572 deletions(-) create mode 100644 access/migrations/0003_auto_20171019_1149.py create mode 100644 access/migrations/0004_auto_20171019_1150.py create mode 100644 access/migrations/0005_auto_20171019_1241.py create mode 100644 access/migrations/0006_auto_20171019_1243.py create mode 100644 config_app/__init__.py create mode 100644 config_app/apps.py rename {service/migrations => config_app/management}/__init__.py (100%) mode change 100755 => 100644 create mode 100644 config_app/management/commands/__init__.py create mode 100644 config_app/management/commands/clear_log.py create mode 100644 config_app/settings/__init__.py create mode 100644 config_app/settings/dev.env create mode 100644 config_app/settings/prod.env create mode 100644 config_app/settings/test.env create mode 100644 config_app/supervisor_configs/celery.conf create mode 100644 config_app/supervisor_configs/flower.conf create mode 100644 config_app/supervisor_configs/schedule.conf create mode 100644 lms/celery.py delete mode 100755 service/__init__.py delete mode 100755 service/admin.py delete mode 100644 service/apps.py delete mode 100644 service/migrations/0001_initial.py delete mode 100755 service/models.py delete mode 100755 service/tasks.py delete mode 100755 templates/404.html delete mode 100755 templates/500.html delete mode 100755 templates/access_error.html delete mode 100755 templates/activation.html delete mode 100755 templates/admin_profile.html delete mode 100644 templates/all_achievements.html delete mode 100755 templates/all_actions.html delete mode 100755 templates/all_articles.html delete mode 100755 templates/all_comments.html delete mode 100644 templates/analytics/base.html delete mode 100644 templates/analytics/homework.html delete mode 100644 templates/analytics/index.html delete mode 100644 templates/analytics/theme.html delete mode 100755 templates/articles.html delete mode 100755 templates/articles_index.html delete mode 100755 templates/auth_error.html delete mode 100755 templates/auth_modals.html delete mode 100755 templates/base_index.html delete mode 100644 templates/bill_out.html delete mode 100755 templates/by_error.html delete mode 100644 templates/cabinet.html delete mode 100755 templates/clean_articles.html delete mode 100644 templates/comment_one.html delete mode 100755 templates/comments.html delete mode 100644 templates/comments_block.html delete mode 100755 templates/contacts.html delete mode 100755 templates/course.html delete mode 100644 templates/diplomscab.html delete mode 100755 templates/everyone_modals.html delete mode 100755 templates/exam.html delete mode 100755 templates/fail_pay.html delete mode 100755 templates/faq.html delete mode 100755 templates/faq_one.html delete mode 100755 templates/freeweek_more.html delete mode 100755 templates/good_pay.html delete mode 100755 templates/homework.html delete mode 100755 templates/index.html delete mode 100755 templates/index_menu.html delete mode 100755 templates/lesson.html delete mode 100755 templates/mail.html delete mode 100644 templates/mails/new_users.html delete mode 100644 templates/mails/sent_order.html delete mode 100644 templates/mails/sent_out_order.html delete mode 100644 templates/mails/webinar.html delete mode 100755 templates/manager_account.html delete mode 100755 templates/manager_history.html delete mode 100755 templates/manager_profile.html delete mode 100755 templates/manager_servicerequest.html delete mode 100644 templates/menu.html delete mode 100755 templates/new_reports.html delete mode 100755 templates/news_one.html delete mode 100755 templates/no_auth_modals.html delete mode 100644 templates/one_comment.html delete mode 100644 templates/practice_workshop.html delete mode 100755 templates/profile.html delete mode 100755 templates/progress_report.html delete mode 100755 templates/reports.html delete mode 100755 templates/reports/base_index.html delete mode 100755 templates/reports/bills.html delete mode 100755 templates/reports/freeweek.html delete mode 100755 templates/reports/hw_process_pp.html delete mode 100755 templates/reports/hw_process_pt.html delete mode 100755 templates/reports/mails.html delete mode 100755 templates/reports/menu.html delete mode 100755 templates/reports/progress.html delete mode 100644 templates/right_site.html delete mode 100755 templates/self_bill_result.html delete mode 100755 templates/selfbill.html delete mode 100755 templates/simplepayresult.xml delete mode 100755 templates/student_matrix.html delete mode 100644 templates/super_bill.html delete mode 100755 templates/super_history.html delete mode 100755 templates/super_profile.html delete mode 100755 templates/super_servicerequest.html delete mode 100755 templates/teach_profile.html delete mode 100755 templates/teacher_comments.html delete mode 100755 templates/teacher_exams.html delete mode 100644 templates/teacher_history.html delete mode 100755 templates/teacher_homeworks.html delete mode 100755 templates/teacher_materials.html delete mode 100755 templates/test.html delete mode 100755 templates/traffic_map.html delete mode 100755 templates/wallet.html delete mode 100755 templates/workshop_exam.html delete mode 100755 templates/workshop_homework.html delete mode 100644 templates/yandexkassa_result.xml delete mode 100755 templates/zendesk.html diff --git a/access/migrations/0003_auto_20171019_1149.py b/access/migrations/0003_auto_20171019_1149.py new file mode 100644 index 0000000..ee6ab96 --- /dev/null +++ b/access/migrations/0003_auto_20171019_1149.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.6 on 2017-10-19 11:49 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0002_auto_20171018_1437'), + ] + + operations = [ + migrations.AlterField( + model_name='account', + name='gender', + field=models.SmallIntegerField(choices=[(1, 'male'), (2, 'female'), (0, 'undefined')], default=0), + ), + ] diff --git a/access/migrations/0004_auto_20171019_1150.py b/access/migrations/0004_auto_20171019_1150.py new file mode 100644 index 0000000..0612a9e --- /dev/null +++ b/access/migrations/0004_auto_20171019_1150.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.6 on 2017-10-19 11:50 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0003_auto_20171019_1149'), + ] + + operations = [ + migrations.AlterField( + model_name='account', + name='gender', + field=models.SmallIntegerField(choices=[(0, 'undefined'), (1, 'male'), (2, 'female')], default=0), + ), + ] diff --git a/access/migrations/0005_auto_20171019_1241.py b/access/migrations/0005_auto_20171019_1241.py new file mode 100644 index 0000000..c962a23 --- /dev/null +++ b/access/migrations/0005_auto_20171019_1241.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.6 on 2017-10-19 12:41 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0004_auto_20171019_1150'), + ] + + operations = [ + migrations.AlterField( + model_name='account', + name='gender', + field=models.SmallIntegerField(choices=[(1, 'male'), (0, 'undefined'), (2, 'female')], default=0), + ), + ] diff --git a/access/migrations/0006_auto_20171019_1243.py b/access/migrations/0006_auto_20171019_1243.py new file mode 100644 index 0000000..92d2c1d --- /dev/null +++ b/access/migrations/0006_auto_20171019_1243.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.6 on 2017-10-19 12:43 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0005_auto_20171019_1241'), + ] + + operations = [ + migrations.AlterField( + model_name='account', + name='gender', + field=models.SmallIntegerField(choices=[(0, 'undefined'), (1, 'male'), (2, 'female')], default=0), + ), + ] diff --git a/access/models.py b/access/models.py index 8f7966d..e707f8b 100755 --- a/access/models.py +++ b/access/models.py @@ -3,6 +3,7 @@ import random import string from courses.models import Vertex, Course from storage.models import Storage +from django.core.mail import send_mail from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager from django.contrib.auth.models import PermissionsMixin, Group @@ -26,11 +27,11 @@ class Invite(models.Model): class Account(models.Model): - GENDER_CHOICES = { + GENDER_CHOICES = ( (0, 'undefined'), (1, 'male'), (2, 'female'), - } + ) b_day = models.DateField(blank=True, null=True) city = models.CharField(max_length=63, null=True, blank=True) gender = models.SmallIntegerField(choices=GENDER_CHOICES, default=0) @@ -77,7 +78,7 @@ class CustomUserManager(BaseUserManager): email = self.normalize_email(email) - user = self.model(email=email, is_staff=is_staff, is_active=is_active, first_name=first_name, + user = self.model(email=email, is_staff=is_staff, is_active=is_active, first_name=first_name, id=self.last().id +1, is_superuser=is_superuser, date_joined=date_joined, last_login=last_login, **extra_fields) if not password: @@ -97,9 +98,16 @@ class CustomUserManager(BaseUserManager): user.groups.add(Group.objects.get(name=group)) if is_send: - pass - Invite.objects.create(owner=user, hash=''.join(random.choice(string.ascii_letters) for x in range(15))) - # Должна идти отбивка + invite = Invite.objects.create(owner=user, hash=''.join(random.choice(string.ascii_letters) for x in range(15))) + send_mail( + subject='Спасибо за регистрацию', + message=''' + Вы были успешны зарегистрированны на портале go.skillbox.ru + для подтверждения регистрации перейдите по ссылке + https://go.skillbox.ru/api/v1/users/registration/?hash=''' + invite.hash, + from_email='robo@skillbox.ru', + recipient_list=[user.email], + ) return user def create_user(self, email, password, **extra_fields): @@ -109,10 +117,7 @@ class CustomUserManager(BaseUserManager): return self._create_user(email=email, password=password, is_superuser=True, is_staff=True, is_active=True) def create_student(self, email, password, **extra_fields): - user = self.create_user(email=email, password=password, is_send=True, **extra_fields) - group = Group.objects.get(name='students') - user.groups.add(group) - return user + return self.create_user(email=email, password=password, role_list=['students'], is_send=True, **extra_fields) class User(AbstractBaseUser, PermissionsMixin): diff --git a/access/serializers.py b/access/serializers.py index c1d9582..803ee08 100644 --- a/access/serializers.py +++ b/access/serializers.py @@ -17,15 +17,20 @@ class AccountSerializer(serializers.ModelSerializer): class UserInitSerializer(serializers.ModelSerializer): account = serializers.SerializerMethodField() + groups = serializers.SerializerMethodField() class Meta: model = get_user_model() - fields = ('id', 'email', 'first_name', 'last_name', 'account', ) + fields = ('id', 'email', 'first_name', 'last_name', 'account', 'groups', 'is_staff', 'is_superuser') @staticmethod def get_account(self): return AccountSerializer(self.account).data + @staticmethod + def get_groups(self): + return [group.name for group in self.groups.all()] + class ExtraPrivilegeSerializer(serializers.ModelSerializer): class Meta: diff --git a/access/tasks.py b/access/tasks.py index 117a22b..93bc02e 100755 --- a/access/tasks.py +++ b/access/tasks.py @@ -4,32 +4,32 @@ from datetime import timedelta, datetime from access.models import User, TrafSource, TrafTokenHistory -@periodic_task(run_every=timedelta(minutes=20)) -def check_prepo_delay(): - # Проверка просроченых задач преподавателя - for res in User.objects.filter(delay_date__lte=datetime.now(), in_role='T'): - res.delay = False - res.delay_description = '' - res.delay_date = None - res.save() - - -@periodic_task(run_every=timedelta(minutes=1)) -def check_online(): - for user in User.objects.filter(status='ON', last_time__lte=datetime.now()-timedelta(minutes=10)): - user.status = 'OFF' - user.save() - - -@periodic_task(run_every=timedelta(hours=1)) -def check_traf_source(): - for source in TrafSource.objects.filter(on=True).exclude(live_time=None): - if source.token and source.token_start + timedelta(hours=source.live_time) < datetime.now(): - source.on = False - TrafTokenHistory.objects.create(token=source.token, source=source, live_time=source.live_time, date_start=source.token_start, date_end=datetime.now()) - source.token = None - source.token_start = None - source.save() +# @periodic_task(run_every=timedelta(minutes=20)) +# def check_prepo_delay(): +# # Проверка просроченых задач преподавателя +# for res in User.objects.filter(delay_date__lte=datetime.now(), in_role='T'): +# res.delay = False +# res.delay_description = '' +# res.delay_date = None +# res.save() +# +# +# @periodic_task(run_every=timedelta(minutes=1)) +# def check_online(): +# for user in User.objects.filter(status='ON', last_time__lte=datetime.now()-timedelta(minutes=10)): +# user.status = 'OFF' +# user.save() +# +# +# @periodic_task(run_every=timedelta(hours=1)) +# def check_traf_source(): +# for source in TrafSource.objects.filter(on=True).exclude(live_time=None): +# if source.token and source.token_start + timedelta(hours=source.live_time) < datetime.now(): +# source.on = False +# TrafTokenHistory.objects.create(token=source.token, source=source, live_time=source.live_time, date_start=source.token_start, date_end=datetime.now()) +# source.token = None +# source.token_start = None +# source.save() #@periodic_task(run_every=timedelta(minutes=1)) diff --git a/access/views.py b/access/views.py index e64d328..7a52eca 100644 --- a/access/views.py +++ b/access/views.py @@ -1,9 +1,11 @@ from django.contrib.auth import get_user_model from django.contrib import auth +from django.shortcuts import redirect from rest_framework.views import APIView from rest_framework.renderers import JSONRenderer from rest_framework.response import Response +from access.models import Invite from access.serializers import UserInitSerializer @@ -20,7 +22,7 @@ class CheckUserView(APIView): status_code = 200 def get(self, request): - if request.user.is_authenticated() and (request.user.is_staff or request.user.is_admin): + if request.user.is_authenticated() and (request.user.is_staff or request.user.is_superuser): return Response(True, status=self.status_code) return Response(False, status=self.status_code) @@ -38,17 +40,28 @@ class InfoUserView(APIView): class RegistrationView(APIView): renderer_classes = (JSONRenderer,) + @staticmethod + def get(request): + try: + invite = Invite.objects.get(hash=request.GET['hash']) + invite.owner.is_active = True + invite.owner.save() + auth.login(request, invite.owner) + invite.delete() + return redirect('/') + except Invite.DoesNotExist: + return Response('Приглошения не существует возможно оно сгорело', status=404) + @staticmethod def post(request): try: - user = get_user_model().objects.get(email=request.JSON['email'].lower()) + get_user_model().objects.get(email=request.JSON['email'].lower()) + return Response('user already exist', status=403) except get_user_model().DoesNotExist: - user = get_user_model().objects.create_user( + user = get_user_model().objects.create_student( email=request.JSON['email'].lower(), + password=request.JSON['password'] ) - user.set_password(request.JSON['password']) - user.reg_status = '2' - user.save() return Response(UserInitSerializer(user).data, status=200) diff --git a/config_app/__init__.py b/config_app/__init__.py new file mode 100644 index 0000000..c5441f7 --- /dev/null +++ b/config_app/__init__.py @@ -0,0 +1 @@ +default_app_config = "config_app.apps.ConfigAppConfig" diff --git a/config_app/apps.py b/config_app/apps.py new file mode 100644 index 0000000..ae86c7d --- /dev/null +++ b/config_app/apps.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +from django.apps import AppConfig + + +class ConfigAppConfig(AppConfig): + name = "config_app" + verbose_name = "Конфиги" \ No newline at end of file diff --git a/service/migrations/__init__.py b/config_app/management/__init__.py old mode 100755 new mode 100644 similarity index 100% rename from service/migrations/__init__.py rename to config_app/management/__init__.py diff --git a/config_app/management/commands/__init__.py b/config_app/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/config_app/management/commands/clear_log.py b/config_app/management/commands/clear_log.py new file mode 100644 index 0000000..bc1cf88 --- /dev/null +++ b/config_app/management/commands/clear_log.py @@ -0,0 +1,25 @@ +from django.core.management.base import BaseCommand, CommandError +import os +import shutil +from django.conf import settings + + +class Command(BaseCommand): + help = 'Clear log files' + + def add_arguments(self, parser): + parser.add_argument( + '--log_name', + type=str, + default='__all__', + dest='log_name', + help='указать имя конкретного файла' + ) + + def handle(self, *args, **options): + if options['log_name'] == '__all__': + shutil.rmtree(settings.BASE_DIR + '/logs') + os.mkdir(settings.BASE_DIR + '/logs') + + else: + os.remove(settings.BASE_DIR + '/logs/' + options['log_name']) \ No newline at end of file diff --git a/config_app/settings/__init__.py b/config_app/settings/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/config_app/settings/dev.env b/config_app/settings/dev.env new file mode 100644 index 0000000..4207109 --- /dev/null +++ b/config_app/settings/dev.env @@ -0,0 +1,5 @@ +DEBUG=True +SECRET_KEY='!eiquy7_+2#vn3z%zfp51$m-=tmvtcv*cj*@x$!v(_9btq0w=$' +DATABASE_URL='psql://team:nu5Xefise@127.0.0.1:5432/new_lms' +EMAIL_URL='smtp+tls://robo@skillbox.ru:nu5Xefise@smtp.gmail.com:587' +CACHE_URL=rediscache://127.0.0.1:6379/1?client_class=django_redis.client.DefaultClient \ No newline at end of file diff --git a/config_app/settings/prod.env b/config_app/settings/prod.env new file mode 100644 index 0000000..6f33e00 --- /dev/null +++ b/config_app/settings/prod.env @@ -0,0 +1,5 @@ +DEBUG=False +SECRET_KEY='!eiquy7_+2#vn3z%zfp51$m-=tmvtcv*cj*@x$!v(_9btq0w=$' +DATABASE_URL='psql://team:nu5Xefise@127.0.0.1:5432/new_lms' +EMAIL_URL='smtp+tls://robo@skillbox.ru:nu5Xefise@smtp.gmail.com:587' +CACHE_URL=rediscache://127.0.0.1:6379/1?client_class=django_redis.client.DefaultClient \ No newline at end of file diff --git a/config_app/settings/test.env b/config_app/settings/test.env new file mode 100644 index 0000000..3a1aac2 --- /dev/null +++ b/config_app/settings/test.env @@ -0,0 +1,5 @@ +DEBUG=True +SECRET_KEY='!eiquy7_+2#vn3z%zfp51$m-=tmvtcv*cj*@x$!v(_9btq0w=$' +DATABASE_URL='psql://team:nu5Xefise@127.0.0.1:5432/new_lms' +EMAIL_URL='smtp+tls://9ae31a1a770138:a7d79ee373a14c@smtp.mailtrap.io:2525' +CACHE_URL=rediscache://127.0.0.1:6379/1?client_class=django_redis.client.DefaultClient \ No newline at end of file diff --git a/config_app/supervisor_configs/celery.conf b/config_app/supervisor_configs/celery.conf new file mode 100644 index 0000000..50e0e96 --- /dev/null +++ b/config_app/supervisor_configs/celery.conf @@ -0,0 +1,7 @@ +[program:celery] +command=/home/andrey/skillbox/bin/celery -A lms worker -l=info +directory=/home/andrey/skillbox/go.skillbox.ru +user=andrey +stdout_logfile=/home/andrey/skillbox/go.skillbox.ru/logs/celery.log +autorestart=true +redirect_stderr=true \ No newline at end of file diff --git a/config_app/supervisor_configs/flower.conf b/config_app/supervisor_configs/flower.conf new file mode 100644 index 0000000..406f2a7 --- /dev/null +++ b/config_app/supervisor_configs/flower.conf @@ -0,0 +1,7 @@ +[program:flower] +command=/home/andrey/skillbox/bin/celery -A lms flower -l=info +directory=/home/andrey/skillbox/go.skillbox.ru +user=andrey +stdout_logfile=/home/andrey/skillbox/go.skillbox.ru/logs/flower.log +autorestart=true +redirect_stderr=true \ No newline at end of file diff --git a/config_app/supervisor_configs/schedule.conf b/config_app/supervisor_configs/schedule.conf new file mode 100644 index 0000000..8b7e176 --- /dev/null +++ b/config_app/supervisor_configs/schedule.conf @@ -0,0 +1,7 @@ +[program:schedule] +command=/home/andrey/skillbox/bin/celery -A lms beat -l=info +directory=/home/andrey/skillbox/go.skillbox.ru +user=andrey +stdout_logfile=/home/andrey/skillbox/go.skillbox.ru/logs/schedule.log +autorestart=true +redirect_stderr=true \ No newline at end of file diff --git a/courses/__init__.py b/courses/__init__.py index 9c23fe4..354e387 100755 --- a/courses/__init__.py +++ b/courses/__init__.py @@ -1 +1 @@ -default_app_config = "courses.apps.CoursesAppConfig" \ No newline at end of file +default_app_config = "courses.apps.CoursesAppConfig" diff --git a/courses/models.py b/courses/models.py index 9745faa..46281f3 100755 --- a/courses/models.py +++ b/courses/models.py @@ -73,6 +73,38 @@ class Course(models.Model): return {"topic_count": topic_count, "tutorial_count": tutorial_count, "task_count": task_count} + def get_first(self, vertex_model_list=None): + if vertex_model_list is None: + vertex_model_list = ['topic', 'tutorial', 'task'] + + else: + for i in vertex_model_list: + if i not in ['topic', 'tutorial', 'task']: + raise ValueError('undefined model: ' + i) + + vertex = Vertex.objects.get(id=self.coursemap.get_first()) + + if vertex.content_type.model in vertex_model_list: + return vertex + + return vertex.get_next(vertex_model_list) + + def get_last(self, vertex_model_list=None): + if vertex_model_list is None: + vertex_model_list = ['topic', 'tutorial', 'task'] + + else: + for i in vertex_model_list: + if i not in ['topic', 'tutorial', 'task']: + raise ValueError('undefined model: ' + i) + + vertex = Vertex.objects.get(id=self.coursemap.get_last()) + + if vertex.content_type.model in vertex_model_list: + return vertex + + return vertex.get_previous(vertex_model_list) + class Meta: verbose_name = u"Курс" verbose_name_plural = u"Курсы" @@ -181,9 +213,37 @@ class Vertex(models.Model): def __str__(self): return self.title + ': ' + str(self.content_type.model) - def get_next(self): + def get_next(self, vertex_model_list=None): + if vertex_model_list is None: + vertex_model_list = ['topic', 'tutorial', 'task'] + + else: + for i in vertex_model_list: + if i not in ['topic', 'tutorial', 'task']: + raise ValueError('undefined model: ' + i) + vertex_id = CourseMap.objects.get(course=self.course).get_next(self.id) - return Vertex.objects.get(id=int(vertex_id), ) + vertex = Vertex.objects.get(id=int(vertex_id),) + + if vertex.content_type.model in vertex_model_list: + return vertex + return vertex.get_next(vertex_model_list) + + def get_previous(self, vertex_model_list=None): + if vertex_model_list is None: + vertex_model_list = ['topic', 'tutorial', 'task'] + + else: + for i in vertex_model_list: + if i not in ['topic', 'tutorial', 'task']: + raise ValueError('undefined model: ' + i) + + vertex_id = CourseMap.objects.get(course=self.course).get_previous(self.id) + vertex = Vertex.objects.get(id=int(vertex_id),) + + if vertex.content_type.model in vertex_model_list: + return vertex + return vertex.get_previous(vertex_model_list) def is_more(self, vertex) -> bool: if not self.course == vertex.course: @@ -255,9 +315,22 @@ class CourseMap(models.Model): return helper(json.loads(self.dependent_elements)) - def get_next(self, vertex_id) -> str: + def get_next(self, vertex_id) -> int: res_list = self.map_to_list() if not res_list[-1] == vertex_id: - return res_list[res_list.index(vertex_id)+1] + return res_list[res_list.index(vertex_id) + 1] error = "vertex_id " + str(vertex_id) + " last object in list\n" + ",".join([str(v) for v in res_list]) raise ValueError(error) + + def get_previous(self, vertex_id) -> int: + res_list = self.map_to_list() + if not res_list[0] == vertex_id: + return res_list[res_list.index(vertex_id) - 1] + error = "vertex_id " + str(vertex_id) + " first object in list\n" + ",".join([str(v) for v in res_list]) + raise ValueError(error) + + def get_first(self): + return self.map_to_list()[0] + + def get_last(self): + return self.map_to_list()[-1] diff --git a/csv/load_perm.py b/csv/load_perm.py index ee180e6..c565558 100644 --- a/csv/load_perm.py +++ b/csv/load_perm.py @@ -6,7 +6,7 @@ django.setup() from django.contrib.auth import get_user_model from access.models import Progress -from courses.models import Vertex +from courses.models import Vertex, Course if __name__ == '__main__': with open('./access/progress.csv') as progress_csv: @@ -23,13 +23,29 @@ if __name__ == '__main__': get_id = int(row['last_success_obj'])+10000 vertex = Vertex.objects.get(content_type__model='task', object_id=str(get_id)) - if vertex: - try: + course = Course.objects.get(id=row['course']) + + try: + if vertex and not vertex == course.get_last(['task', 'tutorial']): + Progress.objects.get_or_create( + user=get_user_model().objects.get(id=row['user']), + course=course, + active_obj=vertex.get_next(['task', 'tutorial']) + ) + + elif vertex and vertex == course.get_last(['task', 'tutorial']): + Progress.objects.get_or_create( + user=get_user_model().objects.get(id=row['user']), + course=course, + success=True + ) + + else: Progress.objects.get_or_create( user=get_user_model().objects.get(id=row['user']), - course_id=row['course'], - active_obj=vertex.get_next() + course=course, + active_obj=course.get_first(['task', 'tutorial']) ) - except get_user_model().DoesNotExist: - print(row['user']) \ No newline at end of file + except get_user_model().DoesNotExist: + print(row['user']) \ No newline at end of file diff --git a/finance/models.py b/finance/models.py index af52c73..54253ca 100755 --- a/finance/models.py +++ b/finance/models.py @@ -2,7 +2,6 @@ from django.db import models from django.conf import settings from courses.models import Course, Vertex -from service.models import MailBox class Price(models.Model): diff --git a/finance/tasks.py b/finance/tasks.py index bc1ace7..2fe4319 100755 --- a/finance/tasks.py +++ b/finance/tasks.py @@ -8,33 +8,33 @@ from finance.models import Price, Bill, ServiceRequest from courses.models import CourseMap -@periodic_task(run_every=timedelta(minutes=1)) -def price_map_migrator(): - for price in Price.objects.filter(included=None).exclude(course=None): - if not price.included.exists(): - inc_type = [] - - if price.m_type == 'B': - inc_type = ['B'] - elif price.m_type == 'E': - inc_type = ['B', 'E'] - elif price.m_type == 'P': - inc_type = ['B', 'E', 'P'] - for m in CourseMap.objects.filter(course=price.course): - if m.get_obj().theme.price_type in inc_type: - price.included.add(m) - - -@periodic_task(run_every=timedelta(hours=1)) -def price_map_migrator(): - for price in Price.objects.exclude(by_time=None): - for bill in Bill.objects.filter(service=price, fire_date__lt=datetime.now()): - bill.status = 'H' - bill.save() - - -@periodic_task(run_every=timedelta(minutes=1)) -def sent_service_request_to_amo(): - sr = ServiceRequest.objects.filter(send=False, send_date__lt=datetime.now()).exclude(Q(name='TEST')| Q(status='E')).first() - if sr: - sr.sent_to_amo() +# @periodic_task(run_every=timedelta(minutes=1)) +# def price_map_migrator(): +# for price in Price.objects.filter(included=None).exclude(course=None): +# if not price.included.exists(): +# inc_type = [] +# +# if price.m_type == 'B': +# inc_type = ['B'] +# elif price.m_type == 'E': +# inc_type = ['B', 'E'] +# elif price.m_type == 'P': +# inc_type = ['B', 'E', 'P'] +# for m in CourseMap.objects.filter(course=price.course): +# if m.get_obj().theme.price_type in inc_type: +# price.included.add(m) +# +# +# @periodic_task(run_every=timedelta(hours=1)) +# def price_map_migrator(): +# for price in Price.objects.exclude(by_time=None): +# for bill in Bill.objects.filter(service=price, fire_date__lt=datetime.now()): +# bill.status = 'H' +# bill.save() +# +# +# @periodic_task(run_every=timedelta(minutes=1)) +# def sent_service_request_to_amo(): +# sr = ServiceRequest.objects.filter(send=False, send_date__lt=datetime.now()).exclude(Q(name='TEST')| Q(status='E')).first() +# if sr: +# sr.sent_to_amo() diff --git a/finance/yandex_pay.py b/finance/yandex_pay.py index 02a1aa1..6707370 100644 --- a/finance/yandex_pay.py +++ b/finance/yandex_pay.py @@ -1,11 +1,12 @@ # coding=utf-8 import datetime from hashlib import md5 + from django.shortcuts import render from django.views.decorators.csrf import csrf_exempt from finance.models import Bill, YandexKassaHistory -from lms.settings import YANDEX_MONEY_SHOP_PASSWORD +from settings.settings import YANDEX_MONEY_SHOP_PASSWORD def gen_md5(cd): diff --git a/journals/models.py b/journals/models.py index c6b2ee6..e0ef49c 100755 --- a/journals/models.py +++ b/journals/models.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals from django.conf import settings +from django.contrib.auth.models import Group from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from django.db import models @@ -45,6 +46,7 @@ class Thread(models.Model): is_staff = models.BooleanField(default=False, verbose_name=u'Админская ли табличка') recurse_step = models.SmallIntegerField(default=0, verbose_name=u'Поле аптимизации поиска') subscribers = models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name=u'Подписчики', blank=True) + groups = models.ManyToManyField(to=Group, verbose_name=u'Подписчики', blank=True) check_subscribe = models.BooleanField(default=True, verbose_name='Проверять ли подписки') parent = models.ManyToManyField(to='self', blank=True, symmetrical=False) x = models.SmallIntegerField(default=300) diff --git a/journals/tasks.py b/journals/tasks.py index ab04e2e..5c530ed 100755 --- a/journals/tasks.py +++ b/journals/tasks.py @@ -1,77 +1,79 @@ # coding=utf-8 -from celery.task import periodic_task from datetime import timedelta, datetime + +from celery.task import periodic_task from django.core.files import File -from access.models import User -from journals.models import ExamTry, HomeworkTry, DiplomaJ from management.letters import sent_new_expired -from lms.settings import TEACHER - - -@periodic_task(run_every=timedelta(hours=1)) -def check_expired(): - # Проверка просроченых задач преподавателя - for res in (ExamTry.objects.filter(f_date=None).exclude(expired=True), - HomeworkTry.objects.filter(f_date=None).exclude(expired=True)): - for _try in res: - if _try.parent.get_status_flag() not in ['N', 'F']: - # Проверка экзамена - if _try.date + timedelta(days=1) < datetime.now(): - _try.expired = True - _try.save() - for user in User.objects.filter(in_role='S2'): - sent_new_expired(_try, user.email) - - -@periodic_task(run_every=timedelta(minutes=1)) -def check_robo_prep(): - teacher = User.objects.get(email=TEACHER) - handler = [] - for journal in HomeworkTry.objects.filter(teacher=teacher, f_date=None).exclude(success=True, date=None).order_by( - 'date'): - if journal.parent.get_status_flag not in ['N', 'F']: - handler.append(journal) - - for journal in ExamTry.objects.filter(teacher=teacher, f_date=None).exclude(success=True, date=None).order_by( - 'date'): - if journal.parent.get_status_flag not in ['N', 'F']: - handler.append(journal) - - print(handler) - for _tr in handler: - for _cm in _tr.comments.all(): - s = False - print(_cm.text) - if 'GO_TO_SUCCESS' in _cm.text: - _tr.success = True - _tr.f_date = datetime.now() - s = True - elif 'GO_TO_FAIL' in _cm.text: - _tr.f_date = datetime.now() - s = True - if s: - _tr.save() - - -#@periodic_task(run_every=timedelta(minutes=3)) -#def block_warning(): -# for tm in CourseThemeJ.objects.filter(material__empty=True): -# for n in CourseThemeJ.objects.filter(material__sort__gte=tm.material.sort-1, f_date=None).exclude(date=None): -# for u in User.objects.filter(in_role='A'): -# letters.block_warning(n, n.material.course.get_title(), u) +from access.models import User +from journals.models import ExamTry, HomeworkTry, DiplomaJ +from settings.settings import TEACHER -@periodic_task(run_every=timedelta(minutes=3)) -def gen_in_diploma(): - for tm in DiplomaJ.objects.filter(gen=False): - if not tm.out_image or not tm.in_image: - _in, _out = tm.draw_key(*tm.draw_name(*tm.draw_date())) - if _in: - _in = open(_in, 'rb') - tm.in_image.save(File(_in).name, File(_in), save=True) - if _out: - _out = open(_out, 'rb') - tm.out_image.save(File(_out).name, File(_out), save=True) - tm.gen = True - tm.save() +# @periodic_task(run_every=timedelta(hours=1)) +# def check_expired(): +# # Проверка просроченых задач преподавателя +# for res in (ExamTry.objects.filter(f_date=None).exclude(expired=True), +# HomeworkTry.objects.filter(f_date=None).exclude(expired=True)): +# for _try in res: +# if _try.parent.get_status_flag() not in ['N', 'F']: +# # Проверка экзамена +# if _try.date + timedelta(days=1) < datetime.now(): +# _try.expired = True +# _try.save() +# for user in User.objects.filter(in_role='S2'): +# sent_new_expired(_try, user.email) +# +# +# @periodic_task(run_every=timedelta(minutes=1)) +# def check_robo_prep(): +# teacher = User.objects.get(email=TEACHER) +# handler = [] +# for journal in HomeworkTry.objects.filter(teacher=teacher, f_date=None).exclude(success=True, date=None).order_by( +# 'date'): +# if journal.parent.get_status_flag not in ['N', 'F']: +# handler.append(journal) +# +# for journal in ExamTry.objects.filter(teacher=teacher, f_date=None).exclude(success=True, date=None).order_by( +# 'date'): +# if journal.parent.get_status_flag not in ['N', 'F']: +# handler.append(journal) +# +# print(handler) +# for _tr in handler: +# for _cm in _tr.comments.all(): +# s = False +# print(_cm.text) +# if 'GO_TO_SUCCESS' in _cm.text: +# _tr.success = True +# _tr.f_date = datetime.now() +# s = True +# elif 'GO_TO_FAIL' in _cm.text: +# _tr.f_date = datetime.now() +# s = True +# if s: +# _tr.save() +# +# +# #@periodic_task(run_every=timedelta(minutes=3)) +# #def block_warning(): +# # for tm in CourseThemeJ.objects.filter(material__empty=True): +# # for n in CourseThemeJ.objects.filter(material__sort__gte=tm.material.sort-1, f_date=None).exclude(date=None): +# # for u in User.objects.filter(in_role='A'): +# # letters.block_warning(n, n.material.course.get_title(), u) +# +# +# @periodic_task(run_every=timedelta(minutes=3)) +# def gen_in_diploma(): +# for tm in DiplomaJ.objects.filter(gen=False): +# if not tm.out_image or not tm.in_image: +# _in, _out = tm.draw_key(*tm.draw_name(*tm.draw_date())) +# if _in: +# _in = open(_in, 'rb') +# tm.in_image.save(File(_in).name, File(_in), save=True) +# +# if _out: +# _out = open(_out, 'rb') +# tm.out_image.save(File(_out).name, File(_out), save=True) +# tm.gen = True +# tm.save() diff --git a/lms/__init__.py b/lms/__init__.py index e69de29..d618d8a 100644 --- a/lms/__init__.py +++ b/lms/__init__.py @@ -0,0 +1,7 @@ +from __future__ import absolute_import, unicode_literals + +# This will make sure the app is always imported when +# Django starts so that shared_task will use this app. +from lms.celery import app as celery_app + +__all__ = ['celery_app'] \ No newline at end of file diff --git a/lms/celery.py b/lms/celery.py new file mode 100644 index 0000000..5f3c106 --- /dev/null +++ b/lms/celery.py @@ -0,0 +1,23 @@ +from __future__ import absolute_import, unicode_literals +import os +from celery import Celery +from raven import Client +from raven.contrib.celery import register_signal, register_logger_signal + +# set the default Django settings module for the 'celery' program. +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'lms.settings') + +app = Celery('lms') + +app.config_from_object('django.conf:settings', namespace='CELERY') + +app.autodiscover_tasks() + +client = Client('http://caaea487274f4e23a9107862484c79f3:3d463ad4717942508536f7a659921950@sentry.skillbox.ru/3') +register_logger_signal(client) +register_signal(client) + + +@app.task(bind=True) +def debug_task(self): + print('Request: {0!r}'.format(self.request)) \ No newline at end of file diff --git a/lms/settings.py b/lms/settings.py index 4d75dd2..a421324 100644 --- a/lms/settings.py +++ b/lms/settings.py @@ -1,51 +1,50 @@ # coding=utf-8 import os + import raven -# Build paths inside the project like this: os.path.join(BASE_DIR, ...) -BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +import environ +root = environ.Path(__file__) - 2 +env = environ.Env() +MOD = os.environ.get('MOD', 'Dev') -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/1.9/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = '!eiquy7_+2#vn3z%zfp51$m-=tmvtcv*cj*@x$!v(_9btq0w=$' -COMMENT_SECRET = 'ntyy70()&^&%)_^%#++i[k,q4jnb' - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = False if os.environ.get('DEBUG', 'False') == 'False' else True - -TESTING = False -TEST_EMAIL = 'bez.b.unix@gmail.com' -TEACHER = 't@skillbox.ru' -SUPERVISOR = 's@skillbox.ru' -MANAGER = 'm@skillbox.ru' -MANAGERS = [ - 'maksim.shachkov@skillbox.ru', - 'aleksey.zelentsov@skillbox.ru', - 'roman.fatullaev@skillbox.ru', - 'vladimir.kakaulin@skillbox.ru', - 'dmitry.perepelitsa@skillbox.ru', - 'timofey.trifonov@skillbox.ru', - 'sergej.gavrilovich@skillbox.ru', -] +if MOD == 'Test': + environ.Env.read_env(str(root) + '/config_app/settings/test.env') + +elif MOD == 'Dev': + environ.Env.read_env(str(root) + '/config_app/settings/dev.env') + +elif MOD == 'Prod': + environ.Env.read_env(str(root) + '/config_app/settings/prod.env') + +else: + raise ImportError('no such environ ' + MOD) + +EMAIL_CONFIG = env.email_url('EMAIL_URL',) +vars().update(EMAIL_CONFIG) + +BROKER_URL = 'amqp://guest:guest@localhost:5672//' +CELERY_RESULT_BACKEND = 'django-db' +CELERY_CACHE_BACKEND = 'django-cache' +BROKER_TRANSPORT_OPTIONS = {'visibility_timeout': 180} + +CELERY_EMAIL_TASK_CONFIG = { + 'name': 'djcelery_email_send', + 'queue': 'celery', + 'rate_limit': '50/m', + 'ignore_result': False, +} + +CELERYD_TASK_TIME_LIMIT = 300 + +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -SUPPORT = 'hello@skillbox.ru' -SUPPORT_PHONE = '+7 (495) 984-41-77' -SUPPORT_TIME = '(с 10 до 19 по Москве)' -ADDRESS = 'Москва, ул. Бауманская, д. 11' AUTH_USER_MODEL = 'access.User' VZAAR = 'f1e965defc6fbaa92c544cf84267e830' SMS = '5ED9C6BB-41E8-C760-10FA-F8A310D88952' ALLOWED_HOSTS = ['*'] DOMAIN = 'https://go.skillbox.ru' -NAME = u'SkillBox - обучающая платформа' -BROKER_URL = 'amqp://guest:guest@localhost:5672//' -CELERY_ACCEPT_CONTENT = ['json'] -CELERY_TASK_SERIALIZER = 'json' -CELERY_RESULT_SERIALIZER = 'json' -CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' BILL_LOGIN = '1501' BILL_URL = 'https://api.simplepay.pro/sp/payment' BILL_KEY = u'848360a6b0b8cdfaca3603ede75e4d8b' @@ -54,11 +53,6 @@ BILL_TOKEN = u'c63fc7fdc74de318e1f9b078b6d4406a3e62f522b00fb305afe61c0ead238eb9c AMO_USER_LOGIN = 'baryshnikov@mokselle.com' AMO_USER_HASH = 'd639c26c1c1900e5a8cee66cd3395bdc' AMO_SUBDOMAIN = 'mokselle' -EMAIL_HOST = 'smtp.gmail.com' -EMAIL_HOST_PASSWORD = 'nu5Xefise' -EMAIL_HOST_USER = 'robo@skillbox.ru' -EMAIL_PORT = '587' -EMAIL_USE_TLS = True DEFAULT_FROM_EMAIL = 'robo@skillbox.ru' YANDEX_MONEY_SHOP_PASSWORD = 'nu5Xefise' YANDEX_SHOP_ID = '157133' @@ -68,6 +62,20 @@ YANDEX_scid = '149639' # место куда сохраняем пользовательские файлы PERSONAL_FILES = '/personal_files/' +DATABASES = { + 'default': env.db(), +} + +SESSION_ENGINE = 'redis_sessions.session' +CELERY_EMAIL_CHUNK_SIZE = 1 + +CACHES = { + 'default': env.cache(), +} + +EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend' + +SECRET_KEY = env('SECRET_KEY') INSTALLED_APPS = [ 'django.contrib.admin', @@ -78,6 +86,7 @@ INSTALLED_APPS = [ 'django.contrib.staticfiles', 'django_celery_results', 'django_celery_beat', + "djcelery_email", 'raven.contrib.django.raven_compat', 'access', 'courses', @@ -85,8 +94,8 @@ INSTALLED_APPS = [ 'management', 'finance', 'journals', - 'service', 'library', + 'config_app', ] MIDDLEWARE_CLASSES = [ @@ -123,21 +132,6 @@ TEMPLATES = [ WSGI_APPLICATION = 'lms.wsgi.application' - -# Database -# https://docs.djangoproject.com/en/1.9/ref/settings/#databases - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql_psycopg2', - 'NAME': os.environ.get('DB_NAME', 'new_lms'), - 'USER': os.environ.get('PG_ENV_POSTGRES_USER', 'team'), - 'PASSWORD': os.environ.get('PG_ENV_POSTGRES_PASSWORD', 'nu5Xefise'), - 'HOST': os.environ.get('PG_PORT_5432_TCP_ADDR', '127.0.0.1'), - 'PORT': os.environ.get('PG_PORT_5432_TCP_PORT', '5432'), - }, -} - # Password validation # https://docs.djangoproject.com/en/1.9/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ @@ -156,9 +150,6 @@ AUTH_PASSWORD_VALIDATORS = [ ] -# Internationalization -# https://docs.djangoproject.com/en/1.9/topics/i18n/ - LANGUAGE_CODE = 'ru-ru' TIME_ZONE = 'Europe/Moscow' USE_I18N = True @@ -166,14 +157,10 @@ USE_L10N = True USE_TZ = False -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/1.9/howto/static-files/ MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') STATIC_URL = '/static/' -REDACTOR_OPTIONS = {'lang': 'ru'} -REDACTOR_UPLOAD = 'uploads/' RAVEN_CONFIG = { 'dsn': 'http://caaea487274f4e23a9107862484c79f3:3d463ad4717942508536f7a659921950@sentry.skillbox.ru/3' diff --git a/lms/urls.py b/lms/urls.py index d6f5cc1..a23e50e 100644 --- a/lms/urls.py +++ b/lms/urls.py @@ -1,6 +1,7 @@ from django.conf.urls import url, include from django.contrib import admin from django.views.static import serve + from lms import settings urlpatterns = [ diff --git a/management/admin.py b/management/admin.py index b488d64..199d744 100755 --- a/management/admin.py +++ b/management/admin.py @@ -1,5 +1,6 @@ from django.contrib import admin -from management.models import Comment +from management.models import Comment, Like -admin.site.register(Comment) \ No newline at end of file +admin.site.register(Comment) +admin.site.register(Like) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 8f21f62..cb2f4b2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ +environ amqp==2.2.2 billiard==3.5.0.3 celery==4.1.0 diff --git a/service/__init__.py b/service/__init__.py deleted file mode 100755 index 51b6435..0000000 --- a/service/__init__.py +++ /dev/null @@ -1 +0,0 @@ -default_app_config = "service.apps.ServiceAppConfig" \ No newline at end of file diff --git a/service/admin.py b/service/admin.py deleted file mode 100755 index 4c4cd7e..0000000 --- a/service/admin.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.contrib import admin -from service.models import MailBox, MailTemplate - -admin.site.register(MailBox) -admin.site.register(MailTemplate) diff --git a/service/apps.py b/service/apps.py deleted file mode 100644 index 414b516..0000000 --- a/service/apps.py +++ /dev/null @@ -1,7 +0,0 @@ -# -*- coding: utf-8 -*- -from django.apps import AppConfig - - -class ServiceAppConfig(AppConfig): - name = "service" - verbose_name = "Сервис" \ No newline at end of file diff --git a/service/migrations/0001_initial.py b/service/migrations/0001_initial.py deleted file mode 100644 index b80896d..0000000 --- a/service/migrations/0001_initial.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.6 on 2017-10-18 14:37 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='MailBox', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('status', models.CharField(choices=[('Q', 'На очереди'), ('S', 'Отправлен'), ('E', 'Ошибка отправки'), ('D', 'Доставлен'), ('F', 'Ошибка доставки')], default='Q', max_length=1, verbose_name='Статус письма')), - ('send_to', models.EmailField(max_length=254, verbose_name='Почта')), - ('error_text', models.TextField(blank=True, verbose_name='Текст ошибки')), - ('sent_date', models.DateTimeField(default=datetime.datetime.now, verbose_name='Время отправки')), - ('title', models.CharField(max_length=255, verbose_name='Заголовок письма')), - ('text', models.TextField(editable=False, verbose_name='Текст отправки')), - ], - options={ - 'verbose_name': 'Письмо', - 'verbose_name_plural': 'Письма', - }, - ), - migrations.CreateModel( - name='MailTemplate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('title', models.CharField(max_length=255, verbose_name='Название шаблона')), - ('text', models.TextField(default='', verbose_name='Шаблон')), - ('kwarg', models.TextField(default='', verbose_name='Пораметры для шаблона')), - ], - options={ - 'verbose_name': 'Шаблон письма', - 'verbose_name_plural': 'Шаблоны писем', - }, - ), - ] diff --git a/service/models.py b/service/models.py deleted file mode 100755 index 81fc83c..0000000 --- a/service/models.py +++ /dev/null @@ -1,41 +0,0 @@ -# coding=utf-8 -from __future__ import unicode_literals -import datetime - -from django.db import models - - -class MailTemplate(models.Model): - title = models.CharField(verbose_name='Название шаблона', max_length=255) - text = models.TextField(verbose_name='Шаблон', default='') - kwarg = models.TextField(verbose_name='Пораметры для шаблона', default='') - - def __str__(self): - return '%s' % self.title - - class Meta: - verbose_name = u'Шаблон письма' - verbose_name_plural = u'Шаблоны писем' - - -class MailBox(models.Model): - MAIL_STATUS = ( - ('Q', 'На очереди'), - ('S', 'Отправлен'), - ('E', 'Ошибка отправки'), - ('D', 'Доставлен'), - ('F', 'Ошибка доставки') - ) - status = models.CharField(verbose_name='Статус письма', choices=MAIL_STATUS, default='Q', max_length=1) - send_to = models.EmailField(verbose_name='Почта') - error_text = models.TextField(verbose_name='Текст ошибки', blank=True) - sent_date = models.DateTimeField(verbose_name='Время отправки', default=datetime.datetime.now) - title = models.CharField(verbose_name='Заголовок письма', max_length=255) - text = models.TextField(verbose_name='Текст отправки', editable=False) - - def __str__(self): - return '%s %s' % (self.send_to, self.get_status_display()) - - class Meta: - verbose_name = 'Письмо' - verbose_name_plural = 'Письма' \ No newline at end of file diff --git a/service/tasks.py b/service/tasks.py deleted file mode 100755 index 73e4361..0000000 --- a/service/tasks.py +++ /dev/null @@ -1,9 +0,0 @@ -import datetime -from celery.task import periodic_task -from service.models import MailBox - - -@periodic_task(run_every=datetime.timedelta(minutes=1)) -def mailbox_send(): - for box in MailBox.objects.filter(queue_date__lte=datetime.datetime.now(), status__in=['Q', 'W']).order_by('-queue_date'): - box.send_letter() diff --git a/templates/404.html b/templates/404.html deleted file mode 100755 index c967da8..0000000 --- a/templates/404.html +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - 404 - - - - - - - - - - - - - - -
- -
-
- -
- -
-

404

- {% if request.GET.error %}{{ request.GET.error }}{% else %}error{% endif %} -
- - - - \ No newline at end of file diff --git a/templates/500.html b/templates/500.html deleted file mode 100755 index 100fb15..0000000 --- a/templates/500.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - 500 - - - - - - - - - - - - - - - -
- -
-
- -
-
-
-
-
-
-
- -
-
-
-
-
-
-
-

500

- error -
- - - - \ No newline at end of file diff --git a/templates/access_error.html b/templates/access_error.html deleted file mode 100755 index a58b7e3..0000000 --- a/templates/access_error.html +++ /dev/null @@ -1,73 +0,0 @@ -{% extends 'base_index.html' %} -{% load static %} -{% load course_filter %} -{% block page_title %}Доступ на страницу закрыт{% endblock %} -{% block title %}Доступ запрещен{% endblock %} -{% block head %} -{% endblock %} -{% block content %} -
-
-
-
-

- Доступ на страницу закрыт - - Перейти на главную страницу - -

-
-
-
- -
- -{% if request.user.is_authenticated %} -
-
- -
Последняя активность
-
-
-
-
минуту назад
Курс «Профессия веб-разработчик», занятие 6
-

Ваше домашнее задание одобрено преподавателем.

-
-
-
-
-
23:30
Курс «Профессия веб-разработчик», занятие 6.
-

Ваше домашнее задание проверено преподавателем. Вам необходимо провести работу над ошибками

-
-
- -
-
-
понедельник, 03.02.2015
Курс «Профессия веб-разработчик», занятие 6.
-

Преподаватель оставил комментарий

-
-
- -
- - -
- - -
- {% endif %} -{% endblock %} diff --git a/templates/activation.html b/templates/activation.html deleted file mode 100755 index b29db2d..0000000 --- a/templates/activation.html +++ /dev/null @@ -1,369 +0,0 @@ -{% load static %} - - - - - {% block title %}{% endblock %} {{ NAME }} - - - - - - - - - - - - - - - - - {% block head %} - {% endblock %} - - - - - - -
- -
- - - - - - - -
-
-
-
-
- -
-
-
- - - -
-
    -
  • -

    Придумайте пароль

    -

    -
    - -

    Введите пароль

    - -

    Повторите пароль

    - -

    - -

    - - - -
    -
  • -
  • -

    Расскажите о себе

    -

    -
    - - - - - -
    - -
    -

    - -

    - - - -
    -
  • -
  • -

    Загрузите фотографию

    -

    -
    - ... -

    Загрузить фотографию

    -

    -
    - Пропустить -

    - - - - -
    -
  • -
  • -

    Поздравляем!

    -
    - Вы приняты в сообщество — «{{ NAME }}».
    - -
    -

    -
    - {% csrf_token %} -

    -
    - -

    С Уважением,
    {{ NAME }}.

    -
  • - -
-
- - Регистрируясь, вы соглашаетесь с договором-оферты -
-

- {% now "Y" %} - {{ NAME }} -

- - - -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{% block js %} -{% endblock %} - - diff --git a/templates/admin_profile.html b/templates/admin_profile.html deleted file mode 100755 index f89b5e7..0000000 --- a/templates/admin_profile.html +++ /dev/null @@ -1,140 +0,0 @@ -{% extends 'base_index.html' %} -{% block modals %} - - - -{% endblock %} -{% block asside %} - -{% endblock %} - - - -{% block content %} -
- -
-
-
-

Пользователи системы

- -
-
-
-
-
-
-

Поиск пользователей

- - -
-

-

Результатов нет

- - - - - - - - - - - -
ПользовательТелефонДействие
-
-
- - -
- - - -{% endblock %} diff --git a/templates/all_achievements.html b/templates/all_achievements.html deleted file mode 100644 index 0915f9e..0000000 --- a/templates/all_achievements.html +++ /dev/null @@ -1,84 +0,0 @@ -{% extends 'base_index.html' %} -{% block title %}Все доступные достижения{% endblock %} -{% block head %} - - -{% endblock %} -{% block content %} -
- -
-

Все доступные достижения системы

- - {% for achievement in achievements %} -
- ... - {{ achievement.title }} -
- {% empty %} -

Достижений еще нет

- {% endfor %} - -
- -
-

Получаемые навыки

- {% for course, points in skills.items %} - -
-
{{ course.1 }}
- -
- {% if points %} -
- {% else %} -

Навыков не назначено

- {% endif %} -
- -
    - {% for key, value in points.items %} -
  • - {{ value.size }} очков - {% if value.icon %}{% endif %}{{ key }} - -
  • - {% endfor %} -
-
- {% endfor %} - -
- -
-{% endblock %} -{% block js %} - - - -{% endblock %} \ No newline at end of file diff --git a/templates/all_actions.html b/templates/all_actions.html deleted file mode 100755 index 2fa8969..0000000 --- a/templates/all_actions.html +++ /dev/null @@ -1,35 +0,0 @@ -{% extends 'base_index.html' %} -{% load course_filter %} -{% block title %}История активности {% endblock %} -{% block content %} -
- -
-
-

История активности

-
    - {% for i in b_actions %} -
  • -
    -
    - - -
    {{ i.place }}{{ i.date }}
    -
    -
    {{ i.text|safe }}
    -
    -
    -
    -
  • - {% endfor %} -
-
-
- - -
-{% endblock %} \ No newline at end of file diff --git a/templates/all_articles.html b/templates/all_articles.html deleted file mode 100755 index 3be34a9..0000000 --- a/templates/all_articles.html +++ /dev/null @@ -1,117 +0,0 @@ -{% extends 'base_index.html' %} -{% block title %}Статьи{% endblock %} -{% block head %} - - - - -{% endblock %} -{% block content %} -
-
-
-
-

- Обучающие статьи - -

-
-
-
- - -
- - -
- Loader image -
-

- - {% for article in articles %} - -
-
- -
-
{{ article.section.title }}{{ article.date }}
- -
{{ article.preview.description }}
- {% if article.tags %} -
{% for tag in article.tags.content %}#{{ tag.name }}{% endfor %}
- {% endif %} -
-
- -
- {{ article.favorites.count }} - {{ article.views.count }} - -
-
-
- - -
- - {% endfor %} - -
-
-
-{% endblock %} -{% block js %} - - - - - -{% endblock %} \ No newline at end of file diff --git a/templates/all_comments.html b/templates/all_comments.html deleted file mode 100755 index aad4292..0000000 --- a/templates/all_comments.html +++ /dev/null @@ -1,244 +0,0 @@ -{% extends 'reports/base_index.html' %} -{% load comment_filter %} -{% block title %}Все комментарии{% endblock %} -{% block head %} - - -{% endblock %} -{% block content %} -
-
-

Комментарии

- - 0 -
-
- - - - - -
-
-
- - - - - -
-
- -
- - {% for comment in lessons %} - - {% if not comment.comment.saw %} -
-
Автор: {{ comment.comment.owner_name }} - - [ {{ comment.comment.owner_email }} ]
Курс: {{ comment.course.get_title|truncatewords:2 }} - Тема: {{ comment.theme.get_title|truncatewords:2 }} - Урок №{{ comment.lesson.sort }}: {{ comment.lesson.get_title|truncatewords:2 }} - - {% if comment.comment.response %} - Есть ответ - {% endif %} - Дата: {{ comment.comment.date }} - -
-

- -
- -
- -
- - {% endif %} - {% empty %} - - {% endfor %} - -
- -
- {% for comment in articles %} -
-
Автор: {{ comment.comment.owner_name }} - - [ {{ comment.comment.owner_email }} ] -
Статья: {{ comment.article.title }} - - {% if comment.comment.response %} - Есть ответ - {% endif %} - - Дата: {{ comment.comment.date }} - -
-

- - -
- -
- -
- {% empty %} - - {% endfor %} - -
-
-
-
-{% endblock %} -{% block js %} - - -{% endblock %} \ No newline at end of file diff --git a/templates/analytics/base.html b/templates/analytics/base.html deleted file mode 100644 index 64d1492..0000000 --- a/templates/analytics/base.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Аналитика - - -

Дата создания отчёта {{ date_create }}

- - - -
- - - - - -
- - - - {% for i in header %} - - {% endfor %} - - {% for i in body %} - - {% for j in i %} - - {% endfor %} - - {% endfor %} -
{{ i }}
{{ j.value }}
-

- {% block description %}{% endblock %} -

- -

Внимание! Новый отчёт генерируется 1 раз! Следите за записью в хедоре страницы, если вы нуждаетесь в обновлении
- данных жмите кнопку "Сгенерировать отчёт" таким образом вы получите обновлённые данные для заданных пораметров фильтрации

- - \ No newline at end of file diff --git a/templates/analytics/homework.html b/templates/analytics/homework.html deleted file mode 100644 index 7629c61..0000000 --- a/templates/analytics/homework.html +++ /dev/null @@ -1,2 +0,0 @@ -{% extends 'analytics/base.html' %} -{% block description %}{% endblock %} \ No newline at end of file diff --git a/templates/analytics/index.html b/templates/analytics/index.html deleted file mode 100644 index 72e6a43..0000000 --- a/templates/analytics/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - Аналитика - - -

Меню поиска

-

Студентов успешно прошедших тему

-

Студентов ожидающих проверки домашки

- - \ No newline at end of file diff --git a/templates/analytics/theme.html b/templates/analytics/theme.html deleted file mode 100644 index 3e3f0b2..0000000 --- a/templates/analytics/theme.html +++ /dev/null @@ -1,9 +0,0 @@ -{% extends 'analytics/base.html' %} -{% block description %} - В данной таблице представлены данные о том, сколько студентов прошло заданную тему.
- Темы не всегда проходятся последовательно, поэтому порой тему с большим порядковым номером прошло большее количество пользовавтелей.
- Вы можите выставить фильтр по последней акутивности пользователя, фильтр может быть ограничивающим с одной стороны или может отсутствовать,
- в случае ввода невалидных данных ошибки не происходит вас просто перенапровляет на начальную страницу.
- Вы можите скачать отчёт в формате csv метка $-$yellow говорит о том что в данной теме есть экзамен,
- в таблице темы содержашие экзамен подсвечены жёлтым светом -{% endblock %} \ No newline at end of file diff --git a/templates/articles.html b/templates/articles.html deleted file mode 100755 index 45075dd..0000000 --- a/templates/articles.html +++ /dev/null @@ -1,120 +0,0 @@ -{% extends 'base_index.html' %} -{% load static %} - - -{% block head_title %}{{ article.social.title }}{% endblock %} -{% block title %}{{ article.title }}{% endblock %} - - {% block head %} - {{ article.css|safe }} - - {% endblock %} - -{% block head_description1 %}{{ article.social.description }}{% endblock %} -{% block head_description2 %}{{ article.social.description }}{% endblock %} - -{% block head_image %}{{ article.social.image }}{% endblock %} - -{% block app-content-body %}style="background:#fff;"{% endblock %} - -{% block content %} - {{ article.page|safe }} - - - -
-
- - {% for tag in article.tags.content %} - #{{ tag.name }} - {% endfor %} -
- - - - - - -
-

Понравилась статья?
- Поделись с друзьями:

-

-


-

* Спасибо,
что оценили нашу работу

-
- -
- -
- {% include 'comments_block.html' %} -
- - - -{% endblock %} - - {% block js %} - - {% if not request.user.is_authenticated %} - - {% endif %} - - - {{ article.js|safe }} - {% endblock %} \ No newline at end of file diff --git a/templates/articles_index.html b/templates/articles_index.html deleted file mode 100755 index 058bd1a..0000000 --- a/templates/articles_index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - {% block title %}{{ article.title }}{% endblock %} - - - - - - - - -
- - - Курсы - Статьи - Профиль - Контакты - Помощь - -
-
- {% block content %} - {{ article.page|safe }} - {% endblock %} - - - - - - - \ No newline at end of file diff --git a/templates/auth_error.html b/templates/auth_error.html deleted file mode 100755 index c29d2e2..0000000 --- a/templates/auth_error.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends 'base_index.html' %} -{% load static %} -{% load course_filter %} -{% block title %}Доступ на страницу закрыт{% endblock %} -{% block page_title %}Доступ на страницу закрыт{% endblock %} -{% block head %} -{% endblock %} -{% block content %} -
-
-
-
-

- Доступ на страницу закрыт -

-
-
-
-
- {% if request.user.is_authenticated %} -

-

Вам не открыт доступ к этому материалу, поскольку вы еще не дошли до этого материала

- {% else %} -

-

Авторизуйтесь для получения доступа на эту страницу

- {% endif %} - -
-
-{% endblock %} diff --git a/templates/auth_modals.html b/templates/auth_modals.html deleted file mode 100755 index 92693d9..0000000 --- a/templates/auth_modals.html +++ /dev/null @@ -1,652 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -{% if waiting_materials %} - {% if waiting_materials.0.type not in request.path or waiting_materials.0.obj.id not in request.path %} - - {% endif %} -{% endif %} - - - - - - - - - - -{% if request.user.is_admin and request.user.is_staff %} - - - -{% endif %} - -{% if request.user.is_authenticated and request.user.email == '!!wies@1312s.ru' %} - -{% endif %} - - - - - - - - - - - - - - diff --git a/templates/base_index.html b/templates/base_index.html deleted file mode 100755 index 51535d6..0000000 --- a/templates/base_index.html +++ /dev/null @@ -1,1303 +0,0 @@ -{% load static %} - - - -{% spaceless %} - - - - - {% block title %}{% endblock %} {{ NAME }} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {% if request.GET.admitad_uid %} - - - -{% endif %} - {% block head %} - {% endblock %} - - -{% if request.user.is_authenticated %} - {% include 'auth_modals.html' %} -{% else %} - {% include 'no_auth_modals.html' %} -{% endif %} - -{% include 'everyone_modals.html' %} - -{% block modals %} -{% endblock %} -
- - - - - - {% block asside %} - - -{% endblock %} - - -
-
-
-{% block content %} -{% endblock %} -
-
Наверх
-
- {% for i in bills %} - - {% endfor %} - -
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{% if request.GET.auth %} - -{% endif %} -{% block js %} - -{% endblock %} - -{% if request.user.is_authenticated %} - {% if not request.session.new_year %} - - {% endif %} -{% endif %} - {% if DIALOG %} - {% if DIALOG == 'auth_error' %} - - {% endif %} - {% if DIALOG == 'by_error' %} - - {% endif %} - {% if DIALOG == 'accept_forgot' %} - - {% endif %} - {% if DIALOG == 'activate_email' %} - - {% endif %} - {% endif %} - -
- -
- - - - - - -{% if request.user.is_authenticated %} - -{% endif %} -{% if csh_new_year %} - - -{% endif %} -{% if web_html %} - - -{% endif %} -{% if web_gerasimenko %} - - -{% endif %} -{% if JavaScript_geras %} - - -{% endif %} -{% if JavaScript_yegor %} - - -{% endif %} -{% if Java_geras %} - - -{% endif %} -{% if Java_it %} - - -{% endif %} -{% if IOS %} - - -{% endif %} -{% if web_start %} - - -{% endif %} -{% if excel %} - - -{% endif %} -{% if pr %} - - -{% endif %} -{% if show_fb %} - - -{% endif %} - - -{% if kaspi %} - - -{% endif %} - - -{% if yota %} - - -{% endif %} - - -{% if gazprom %} - - -{% endif %} - - -{% if mosru %} - - -{% endif %} - - -{% if diplom_nameless %} - - -{% endif %} -{% if dz_anons %} - - -{% endif %} -
- {{ diplom_nameles }} -
- -{% endspaceless %} - diff --git a/templates/bill_out.html b/templates/bill_out.html deleted file mode 100644 index a3a1cb0..0000000 --- a/templates/bill_out.html +++ /dev/null @@ -1,159 +0,0 @@ -{% load static %} - - - - - {% block title %}{% endblock %} {{ NAME }} - - - - - - - - - - - - - - - - - {% block head %} - {% endblock %} - - - -
- - - - - - - -
-
-
- -
-
-
- {% for key, value in data.data.items %} - - {% endfor %} - -
-
-

{% if price != '0' %}Переход на страницу оплаты{% else %}Курс выдан вам в подарок{% endif %}

-

{% if price != '0' %}Редирект будет осуществлен через {% else %} {% endif %}

-

- {% if price != '0' %} - Если ваш браузер не поддерживает переадрессацию - перейдите по ссылке ниже: - - Перейти к оплате - - {% else %} - Приятного обучения - {% endif %} -

-
-

- {% now "Y" %} - {{ NAME }} -

- - -
-
-
-
- - - - - - - -{% block js %} - {% if price != '0' %} - - {% endif %} -{% endblock %} - - diff --git a/templates/by_error.html b/templates/by_error.html deleted file mode 100755 index 5906187..0000000 --- a/templates/by_error.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends 'base_index.html' %} -{% load static %} -{% load course_filter %} -{% block title %}Доступ на страницу закрыт{% endblock %} -{% block page_title %}Доступ на страницу закрыт{% endblock %} -{% block head %} -{% endblock %} -{% block content %} -
-
-
-
-

- Доступ на страницу закрыт -

-
-
-
-
- {% if request.user.is_authenticated %} -

-

Купите курс для получения доступа на эту страницу

- {% else %} -

-

Авторизуйтесь для получения доступа на эту страницу

- {% endif %} - -
-
-{% endblock %} diff --git a/templates/cabinet.html b/templates/cabinet.html deleted file mode 100644 index 8b3ff1b..0000000 --- a/templates/cabinet.html +++ /dev/null @@ -1,236 +0,0 @@ -{% extends 'base_index.html' %} -{% block title %}Рабочий кабинет{% endblock %} -{% block content %} - - -
-
-
Открыть уроки
-
-
- Введите id пользователя - -
-
-
- Введите id курса - -
-
-
- Открыть домашки - -
-
- Отдельные темы - -
-
- -
-
-
-
Открыть домашки
-
-
- Введите id пользователя - -
-
-
- Введите id курса - -
-
-
- Отдельные темы - -
-
- -
-
-
-
Поменять пароль
-
-
- Введите id пользователя - -
-
-
- Введите новый пароль - -
-
- -
-
-
-
- {% for c in courses %} -
{{ c.id }}: {{ c.title }}
- {% endfor %} -
- - - -{% endblock %} diff --git a/templates/clean_articles.html b/templates/clean_articles.html deleted file mode 100755 index 9f10ae7..0000000 --- a/templates/clean_articles.html +++ /dev/null @@ -1,25 +0,0 @@ -{% extends 'articles_index.html' %} -{% load static %} -{% load course_filter %} -{% block title %}{{ article.title }}{% endblock %} - -{% block head_title %}{% if article.head_title %}{{ article.head_title }}{% else %}Точка Кода{% endif %}{% endblock %} - - -{% block head_description1 %}{% if article.haed_description %}{{ article.haed_description }}{% else %}Школа программирования{% endif %}{% endblock %} -{% block head_description2 %}{% if article.haed_description %}{{ article.haed_description }}{% else %}Школа программирования{% endif %}{% endblock %} - -{% block head_image %}{% if article.head_image %}{{ DOMAIN }}{{ article.head_image.url|safe }}{% else %}{{ DOMAIN }}static/img/3818cc0ec1.png{% endif %}{% endblock %} - -{% block app-content-body %}style="background:#fff;"{% endblock %} -{% block head %} - {{ article.css|safe }} -{% endblock %} - -{% block content %} - {{ article.page|safe }} -{% endblock %} - -{% block js %} - {{ article.js|safe }} -{% endblock %} \ No newline at end of file diff --git a/templates/comment_one.html b/templates/comment_one.html deleted file mode 100644 index d1a2d0e..0000000 --- a/templates/comment_one.html +++ /dev/null @@ -1,67 +0,0 @@ -{% extends 'base_index.html' %} -{% block title %}Комментарий #{{ comment.id }}{% endblock %} -{% block content %} -
- -
-
-
-
-
- Комментарий #{{ comment.id }}
-

- {{ comment.date }} - Автор: {{ comment.owner_model.get_username }} -

-
-
-
-
-
-
-
- {{ comment.text|safe }} - -
-
- - -
- - -
- - {% if request.user.is_authenticated %} -
- -
Последняя активность
-
-
-
-
минуту назад
Курс «Профессия веб-разработчик», занятие 6
-

Ваше домашнее задание одобрено преподавателем.

-
-
-
-
-
23:30
Курс «Профессия веб-разработчик», занятие 6.
-

Ваше домашнее задание проверено преподавателем. Вам необходимо провести работу над ошибками

-
-
-
-
-
понедельник, 03.02.2015
Курс «Профессия веб-разработчик», занятие 6.
-

Преподаватель оставил комментарий

-
-
-
- -
- {% endif %} -
- - -{% endblock %} \ No newline at end of file diff --git a/templates/comments.html b/templates/comments.html deleted file mode 100755 index 9325721..0000000 --- a/templates/comments.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - - - - \ No newline at end of file diff --git a/templates/comments_block.html b/templates/comments_block.html deleted file mode 100644 index 5c4eac9..0000000 --- a/templates/comments_block.html +++ /dev/null @@ -1,22 +0,0 @@ -
- \ No newline at end of file diff --git a/templates/contacts.html b/templates/contacts.html deleted file mode 100755 index 141fbd8..0000000 --- a/templates/contacts.html +++ /dev/null @@ -1,48 +0,0 @@ -{% extends 'base_index.html' %} -{% block title %}Контакты компании{% endblock %} -{% block page_title %}Контакты компании{% endblock %} -{% block content %} -
-
-
-
-

- Контакты компании -

- -
-
-
- - -
- Наш офис
-

Россия, Москва
Бауманская улица, 11с8

-
-
- Юридическая информация
-

ИП Коропов Игорь Валентинович
ИНН 504793474705
ОГРНИП 314504727900026

-
-
- Контакты
-
-

Общие вопросы:

- hello@skillbox.ru
- Тел.: (495) 120-40-96 доб. 27
-
-
-

Тех вопросы:

- hello@skillbox.ru
- Тел.: (495) 120-40-96 доб. 25
-
-
-
- -
-
- -
-
-{% endblock %} \ No newline at end of file diff --git a/templates/course.html b/templates/course.html deleted file mode 100755 index 76e9b1e..0000000 --- a/templates/course.html +++ /dev/null @@ -1,375 +0,0 @@ -{% extends 'base_index.html' %} -{% load course_filter %} -{% block title %}Курс {{ course.head.title }}{% endblock %} -{% block content %} - -
-
- -
-
-
-
-
-
-
- {{ course.head.level.title }} уровень -
-
- - {{ course.head.title }} - -
- {% if course.head.skills %} -
- Приобретаемые навыки: - {% for skill in course.head.skills %} - {% if skill.mini_icon %}{% endif %}{{ skill }} - {% endfor %} -
- {% endif %} -
- {{ course.head.lessons }} урока(-ов) -
-
-
-
- {% if course.head.progress != 0 %} -
- {{ course.head.progress }}% -
- {% endif %} -
-
-
-
- -
-
-
- -
    -

    -  Просмотрено   -  Доступно   -  Не доступно   -

    -
  • -
    Старт
    -
  • - - {% for i in course.themes %} - - {% if i.head.status.flag == 'A' %} - - {% endif %} - - - -
  • -
    - {% if i.head.lessons_length > 0 %} - {% if i.head.button %} - - {% else %} - - {% endif %} - {% else %} - {% for h in i.homework %} - - {% endfor %} - {% endif %} - - - Тема {{ i.head.sort }}
    - -
    -
    - -
    - - - -
    - - {% if i.head.lessons_length > 0 %} - {% if i.head.button %} - {% if flow or flow == None %} - - {% else %} - - {% endif %} - {% else %} - - {% endif %} - {% else %} - - {% for h in i.homework %} - - {% endfor %} - {% endif %} - {{ i.head.title|safe }} - - - {% if i.head.status.flag != 'N' and flow or flow == None %} - - {{ i.head.status.title }} - - {% endif %} - - - - {% if i.head.lessons_length > 1 %} -
    Уроков: {{ i.head.lessons_length }}
    - {% endif %} -
    - -
    - {% if i.head.skills %} -
    - Приобретаемые навыки: - {% for n in i.head.skills %} - {% if n.mini_icon %}{% endif %}{{ n }} - {% endfor %} -
    - {% endif %} - - {% if i.head.lessons_length > 1 %} -
      - {% for lesson in i.lessons %} -
    • - {% if flow or flow == None %} - - {{ lesson.title|safe }} - - - {% else %} - {{ lesson.title|safe }} - - {% endif %} -
    • - {% endfor %} -
    - {% else %} - {% if i.head.lessons_length == 1 %} - {% for les in i.lessons %} - {% if les.status.flag != 'N' %} -
    -

    - Статус урока: - - {{ les.status.title|safe }} - -

    -
    - {% endif %} - {% endfor %} - - {% if i.head.description %} -

    Описание:

    - - {% endif %} - {% else %} - {% if i.head.description %} -

    Описание:

    - - {% endif %} - {% endif %} - - {% endif %} - - {% if i.homeworks_length != 0 %} - - {% for h in i.homework %} - {% if i.head.lessons_length == 0 %} -
    -

    - {{ h.description|safe }} - - - {{ h.status.title|safe }} - {% if h.status.flag == 'T' or h.status.flag == 'A' %} - {% if h.delay.status %} -
    Могут быть незначительные задержки с проверкой{% if h.delay.description %}: "{{ h.delay.description|safe }}"{% endif %} - {% endif %} - {% endif %} -
    -

    -
    - {% else %} -
    -

    -   Домашнее задание: - - - {{ h.status.title|safe }} - {% if h.status.flag == 'T' or h.status.flag == 'A' %} - {% if h.delay.status %} -
    Могут быть незначительные задержки с проверкой{% if h.delay.description %}: "{{ h.delay.description|safe }}"{% endif %} - {% endif %} - {% endif %} -
    -

    -
    - {% endif %} - {% endfor %} - {% endif %} - - {% if i.head.status.flag != 'N' %} - {% if i.head.button %} -
    - {% if flow or flow == None %} - - - - {% else %} - - - - {% endif %} -
    - {% endif %} - {% endif %} - -
    -
    -
    -
  • - {% endfor %} -
  • -
    Финиш
    -
  • -
-
-
- - -
- - -{% include 'right_site.html' %} - -{% endblock %} -{% block js %} - - -{% endblock %} diff --git a/templates/diplomscab.html b/templates/diplomscab.html deleted file mode 100644 index 6ac3d33..0000000 --- a/templates/diplomscab.html +++ /dev/null @@ -1,14 +0,0 @@ -{% extends 'base_index.html' %} -{% block title %}Рабочий кабинет{% endblock %} -{% block content %} -
Массовое открытие дипломов
-
- {% csrf_token %} - - {{form.as_table}} -
-
{{ ERROR }}
- -
- -{% endblock %} \ No newline at end of file diff --git a/templates/everyone_modals.html b/templates/everyone_modals.html deleted file mode 100755 index 787405a..0000000 --- a/templates/everyone_modals.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - -{% if request.GET.success_pay %} - - - - - -{% endif %} - -{% if request.GET.fail_pay %} - - - - -{% endif %} diff --git a/templates/exam.html b/templates/exam.html deleted file mode 100755 index 0c384be..0000000 --- a/templates/exam.html +++ /dev/null @@ -1,333 +0,0 @@ -{% extends 'base_index.html' %} -{% block head %} - - -{% endblock %} -{% block title %}{{ course.head.title }} / Домашнее задание{% endblock %} - - -{% block content %} - - {% if exam.heaad.status == 'T' %} - - {% endif %} - -
- -
-
-
-
-
-
-
- {{ course.level.title }} уровень -
-
- - {{ course.head.title }} - -
-
- Приобретаемые навыки: - {% for skill in course.head.skills %} - {% if skill.mini_icon %}{% endif %}{{ skill }} - {% endfor %} -
-
- {{ course.head.lessons }} урока(-ов) -
-
-
-
- {% if course.head.progress != 0 %} -
- {{ course.head.progress }}% -
- {% endif %} -
-
-
-
- -
-
- -
-
-
-
-
-

Описание задания

-
- {{ exam.head.description|safe }} -
-
-
-
-
- {% if exam.materials %} -
-
-
- Материалы к заданию -
- {% for i in exam.materials %} - - {% endfor %} -
-
- {% endif %} -
-
-
- -
- - - {% if exam.tries %} -

 Попыток: ({{ exam.tries|length }}) :

- {% endif %} -
- {% if exam.tries %} - {% for try in exam.tries %} -
-
- - -
-
- - LMS: ~# - - Попытка №{{ forloop.counter }} - - - - - - - - - - - - - - - -
-
- -
- {% for comment in try.comments %} - -
- - -
-
- - {{ comment.owner }} - - - {{ comment.date }} -
-
-
{{ comment.text|safe }}
- {% for file in comment.files %} - - {% endfor %} -
-
- -
- - {% endfor %} -
- {% endfor %} - {% endif %} - {% if request.user.is_authenticated %} - {% if exam.head.status.flag != 'N' and exam.head.status.flag != 'F' %} - - -
-

 ОСТАВИТЬ СООБЩЕНИЕ :

-
- {% if request.user.is_authenticated and resuqest.user.in_role == 'Ts' or request.user.in_role == 'A' %} - - Просто отправить - Заставить одобрить - Заставить отказать - {% endif %} -
-
-
-
- - -
-
-
-
-
- -
-
- -
- -
-
-
- - - -
- - - -
- -
- {% endif %} - {% else %} -

Для работы с домашним заданием, авторизуйтесь.

- {% endif %} -
-
-
-
- - - -{% include 'right_site.html' %} - - - -{% endblock %} - -{% block js %} - - - -{% endblock %} \ No newline at end of file diff --git a/templates/fail_pay.html b/templates/fail_pay.html deleted file mode 100755 index 3eab4a7..0000000 --- a/templates/fail_pay.html +++ /dev/null @@ -1,185 +0,0 @@ -{% extends 'base_index.html' %} -{% load static %} -{% load course_filter %} -{% block page_title %}Доступные курсы{% endblock %} -{% block head %} -{% endblock %} -{% block content %} -
-
-
-
-

- Доступные курсы -

-
-
-
-
- - {% for i in courses %} -
- -
- {% if i.level == 'B' %} -
- {{ i.get_level_display }} уровень -
- {% else %} - {% if i.level == 'A' %} -
- {{ i.get_level_display }} уровень -
- {% else %} - {% if i.level == 'E' %} -
- {{ i.get_level_display }} уровень -
- {% endif %} - {% endif %} - {% endif %} -
-
- {% if i.id|get_progress_persent:request.user.id != 0 %} -
- {{ i.id|get_progress_persent:request.user.id }}% -
- {% endif %} -
{{ i.title }}
- {{ i.lessons_length }} урока(-ов) -
- {% for skill in i.get_skills %} - {{ skill.skill }} - {% endfor %} -
-
-
- {% for n in i.skills %} - {{ i.skill }} - {% endfor %} -
-
- - - -
- -
- {% endfor %} - -
-
-
- -{% if request.user.is_authenticated %} - {% if actions %} -
- -
Последняя активность

ВСЯ ИСТОРИЯ

-
- {% for i in actions %} -
-
-
{{ i.date }}
{{ i.place }}
-

{{ i.text|safe }}

-
-
- {% endfor %} -
- -
- {% endif %} - {% endif %} - - -
-
-
- - Chat -
-
-
-
- -
- ... -
-
- -

Hi John, What's up...

-
- 2 minutes ago -
-
-
- ... -
-
- -

Lorem ipsum dolor :)

-
- 1 minutes ago -
-
-
- ... -
-
- -

Great!

-
- Just Now -
-
- -
-
-
-
-
-
- - - - -
-
-
-
-
- - -
-{% endblock %} - -{% block js %} - - -{% endblock %} \ No newline at end of file diff --git a/templates/faq.html b/templates/faq.html deleted file mode 100755 index a9a02ed..0000000 --- a/templates/faq.html +++ /dev/null @@ -1,111 +0,0 @@ -{% extends 'base_index.html' %} -{% block title %}Часто задаваемые вопросы{% endblock %} -{% block content %} -
-
-
-
-

- {% if admin %}Внутренняя Ф@ка{% else %}Помощь в системе{% endif %} -

-
-
-
-
- {% if a_faqs %} -
- {% for i in a_faqs %} -
- -
-
- -
-
-
- {% endfor %} -
-
-
-
-

- {% if admin %}Пользовательская Ф@ка{% endif %} -

-
-
-
- {% endif %} - -
-
- - - {% for i in faqs %} - - {% endfor %} -
-
- {% include 'right_site.html' %} -{% endblock %} -{% block js %} - -{% endblock %} \ No newline at end of file diff --git a/templates/faq_one.html b/templates/faq_one.html deleted file mode 100755 index d775651..0000000 --- a/templates/faq_one.html +++ /dev/null @@ -1,25 +0,0 @@ -{% extends 'base_index.html' %} -{% block title %}Часто задаваемые вопросы{% endblock %} -{% block content %} -
-
-
-
-

- Назад - {{ faq.question }} - {% if request.user.is_authenticated and request.user.is_admin %} - - {% endif %} -

-
-
-
-
{{ faq.answer|safe }}
-
- {% include 'right_site.html' %} -{% endblock %} \ No newline at end of file diff --git a/templates/freeweek_more.html b/templates/freeweek_more.html deleted file mode 100755 index 4a3d68b..0000000 --- a/templates/freeweek_more.html +++ /dev/null @@ -1,55 +0,0 @@ -{% extends 'reports/base_index.html' %} -{% load course_filter %} -{% block title %}Бесплатная неделя{% endblock %} -{% block page_title %}Бесплатная неделя{% endblock %} -{% block head %} -{% endblock %} -{% block content %} -

- {{ title }} -

- - - - - - - - - - - - - - - - - - - - - - - - - -
Всего пользователейПрошли активациюJava [ {{ java.all }} ]Web [ {{ web.all }} ]Android [ {{ android.all }} ]C# [ {{ csh.all }} ]
{{ all }}{{ active.count }} [{{ active.persent }}%] - Проходят обучение: {{ java.in.count }}
- Получили домашку: {{ java.in_hw }}
- Сдали домашку: {{ java.out_hw }}
-
- Проходят обучение: {{ web.in.count }}
- Получили домашку: {{ web.in_hw }}
- Сдали домашку: {{ web.out_hw }}
-
- Проходят обучение: {{ android.in.count }}
- Получили домашку: {{ android.in_hw }}
- Сдали домашку: {{ android.out_hw }}
-
- Проходят обучение: {{ csh.in.count }}
- Получили домашку: {{ csh.in_hw }}
- Сдали домашку: {{ csh.out_hw }}
-
Открыть конкретикуОткрыть конкретикуОткрыть конкретикуОткрыть конкретику
-{% endblock %} -{% block js %} -{% endblock %} diff --git a/templates/good_pay.html b/templates/good_pay.html deleted file mode 100755 index 3eab4a7..0000000 --- a/templates/good_pay.html +++ /dev/null @@ -1,185 +0,0 @@ -{% extends 'base_index.html' %} -{% load static %} -{% load course_filter %} -{% block page_title %}Доступные курсы{% endblock %} -{% block head %} -{% endblock %} -{% block content %} -
-
-
-
-

- Доступные курсы -

-
-
-
-
- - {% for i in courses %} -
- -
- {% if i.level == 'B' %} -
- {{ i.get_level_display }} уровень -
- {% else %} - {% if i.level == 'A' %} -
- {{ i.get_level_display }} уровень -
- {% else %} - {% if i.level == 'E' %} -
- {{ i.get_level_display }} уровень -
- {% endif %} - {% endif %} - {% endif %} -
-
- {% if i.id|get_progress_persent:request.user.id != 0 %} -
- {{ i.id|get_progress_persent:request.user.id }}% -
- {% endif %} -
{{ i.title }}
- {{ i.lessons_length }} урока(-ов) -
- {% for skill in i.get_skills %} - {{ skill.skill }} - {% endfor %} -
-
-
- {% for n in i.skills %} - {{ i.skill }} - {% endfor %} -
-
- - - -
- -
- {% endfor %} - -
-
-
- -{% if request.user.is_authenticated %} - {% if actions %} -
- -
Последняя активность

ВСЯ ИСТОРИЯ

-
- {% for i in actions %} -
-
-
{{ i.date }}
{{ i.place }}
-

{{ i.text|safe }}

-
-
- {% endfor %} -
- -
- {% endif %} - {% endif %} - - -
-
-
- - Chat -
-
-
-
- -
- ... -
-
- -

Hi John, What's up...

-
- 2 minutes ago -
-
-
- ... -
-
- -

Lorem ipsum dolor :)

-
- 1 minutes ago -
-
-
- ... -
-
- -

Great!

-
- Just Now -
-
- -
-
-
-
-
-
- - - - -
-
-
-
-
- - -
-{% endblock %} - -{% block js %} - - -{% endblock %} \ No newline at end of file diff --git a/templates/homework.html b/templates/homework.html deleted file mode 100755 index 915f2aa..0000000 --- a/templates/homework.html +++ /dev/null @@ -1,336 +0,0 @@ -{% extends 'base_index.html' %} -{% block head %} - - -{% endblock %} -{% block title %}{{ course.head.title }} / Домашнее задание{% endblock %} - -{% block content %} - - {% if homework.heaad.status == 'T' %} - - {% endif %} - -
- -
-
-
-
-
-
-
- {{ course.level.title }} уровень -
-
- - {{ course.head.title }} - -
-
- Приобретаемые навыки: - {% for skill in course.head.skills %} - {% if skill.mini_icon %}{% endif %}{{ skill }} - {% endfor %} -
-
- {{ course.head.lessons }} урока(-ов) -
-
-
-
- {% if course.head.progress != 0 %} -
- {{ course.head.progress }}% -
- {% endif %} -
-
-
-
- -
-
- -
-
-
-
-
-

Описание задания

-
- {{ homework.head.description|safe }} -
-
-
-
-
- {% if homework.materials %} -
-
-
- Материалы к заданию -
- {% for i in homework.materials %} - - {% endfor %} -
-
- {% endif %} -
-
-
-
- - - {% if homework.tries %} -

 Попыток: ({{ homework.tries|length }}) - {% if homework.head.status.flag == 'T' or homework.head.status.flag == 'A' %} - {% if homework.head.delay.status %} - Могут быть незначительные задержки с проверкой{% if homework.head.delay.description %}: "{{ homework.head.delay.description|safe }}"{% endif %} - {% endif %} - {% endif %} -

- {% endif %} -
- {% if homework.tries %} - {% for try in homework.tries %} -
-
- - -
-
- - LMS: ~# - - Попытка №{{ forloop.counter }} - - - - - - - - - - - - - - - -
-
- -
- {% for comment in try.comments %} - -
- - -
-
- - {{ comment.owner }} - - - {{ comment.date }} -
-
-
{{ comment.text|safe }}
- {% for file in comment.files %} - - {% endfor %} -
-
- -
- - {% endfor %} -
- {% endfor %} - {% endif %} - {% if request.user.is_authenticated %} - {% if homework.head.status.flag != 'N' and homework.head.status.flag != 'F' %} - - -
-

Оставить сообщение  :

-
- {% if request.user.is_authenticated and resuqest.user.in_role == 'Ts' or request.user.in_role == 'A' %} - - Просто отправить - Заставить одобрить - Заставить отказать - {% endif %} -
-
-
-
- - -
-
-
-
-
- -
-
- -
- -
-
-
- - - -
- - - -
- -
- {% endif %} - {% else %} -

Для работы с домашним заданием, авторизуйтесь.

- {% endif %} -
-
-
-
- - - -{% include 'right_site.html' %} - -{% endblock %} - -{% block js %} - - - -{% endblock %} \ No newline at end of file diff --git a/templates/index.html b/templates/index.html deleted file mode 100755 index 2f2fe73..0000000 --- a/templates/index.html +++ /dev/null @@ -1,140 +0,0 @@ -{% extends 'base_index.html' %} -{% load static %} -{% block page_title %}Доступные курсы «{{ NAME }}»{% endblock %} -{% block title %}Доступные курсы «{{ NAME }}»{% endblock %} -{% block head %} - - {% if bought %} - - {% endif %} -{% endblock %} -{% block content %} -
- -
- {% include 'right_site.html' %} - - - - - - - - - - -{% endblock %} - -{% block js %} - -{% endblock %} diff --git a/templates/index_menu.html b/templates/index_menu.html deleted file mode 100755 index b326dfd..0000000 --- a/templates/index_menu.html +++ /dev/null @@ -1,143 +0,0 @@ - \ No newline at end of file diff --git a/templates/lesson.html b/templates/lesson.html deleted file mode 100755 index 75f6ec3..0000000 --- a/templates/lesson.html +++ /dev/null @@ -1,248 +0,0 @@ -{% extends 'base_index.html' %} -{% block title %}{{ course.head.title }} / {{ lesson.head.title }}{% endblock %} - -{% block content %} - -
- -
-
-
-
-
-
-
- - {{ course.head.title }} - -
-
- Приобретаемые навыки: - {% for skill in course.head.skills %} - {% if skill.mini_icon %}{% endif %}{{ skill }} - {% endfor %} -
-
- {{ course.head.lessons }} урока(-ов) -
-
-
-
- {% if course.head.progress != 0 %} -
- {{ course.head.progress }}% -
- {% endif %} -
-
-
-
- -
- -
- -
-
-
- -
-
-
- Видео к занятию: {{ lesson.head.title }} -
- -
-
- - -
- -
- {{ lesson.video|safe }} -
-
- -
- -
-
- - {% if lesson.description %} -
-
-
-

Описание урока

-
-
-
- {{ lesson.description|safe }} -
-
-
-
- {% endif %} - {% if lesson.materials %} -
-
-
- Материалы к уроку -
- {% for i in lesson.materials %} - - {% endfor %} -
-
- {% endif %} - -
- {% if lesson.head.on_comment %} - Показать старые комментарии - - - - {% include 'comments_block.html' %} - - {% endif %} -
-
- - -
- -{% include 'right_site.html' %} - -{% endblock %} - -{% block js %} - - - {% if 'to_comment' in request.GET %} - - {% endif %} - -{% endblock %} \ No newline at end of file diff --git a/templates/mail.html b/templates/mail.html deleted file mode 100755 index 70befa9..0000000 --- a/templates/mail.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - -{% block content %}{% endblock %} - - -
С уважением,
Точка кода
- - \ No newline at end of file diff --git a/templates/mails/new_users.html b/templates/mails/new_users.html deleted file mode 100644 index c720e63..0000000 --- a/templates/mails/new_users.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - -
-Здравствуйте!

-Рады сообщить, что сегодня начинается ваше обучение на курсе «Профессия PR-менеджер» и перевели курс на новую платформу обучения — http://go.skillbox.ru/

- -Важно!Для корректной регистрации вам необходимо в поле e-mail указать тот адрес, на который вы сейчас получили это письмо. В противном случае доступ вам не откроется.

- -Для входа на обучающую платформу - вам необходимо пройти процесс активации в системе. Для этого перейдите по ссылке ниже:
-{{ LINK }}

- -Как работать в системе. Краткая инструкция.

- -Просмотр уроков

- -• С главной страницы (http://go.skillbox.ru/) перейдите в раздел с вашим курсом, кликнув по иконке курса «Профессия PR-менеджер».
-• Вы попадёте на страницу с перечнем тем (модулей) и уроков которые вам сейчас доступны
-• Первая тема курса уже доступна для просмотра. Нажимайте на кнопку «Перейти к уроку», и приступайте к просмотру видеоурока.

- -Отправка домашних заданий
-• Просматриваете уроки, отмечаете их «просмотренными» (большая зеленая кнопка над и под видео)
-• После того как отметите последний урок в теме, — появиться активная ссылка на переход в раздел с домашним заданием
-• В разделе с ДЗ описано задание и прикреплены файлы для выполнения работы
-• Ниже на странице с заданием есть форма обратной связи, через неё необходимо направлять задание на проверку. Также через неё можно общаться с преподавателем, задавать вопросы, связанными с выполнением работы или вопросы по просмотренному материалу.

- -Дополнительно
-• После того как преподаватель даст комментарий по работе, вам на почту придет об этом письмо, а так же отобразиться в новостной ленте справа.
-• Если задание отправлено на доработку, то вам необходимо исправленный проект направить через эту же форму повторно.
-• перейти в раздел с работой, что бы посмотреть комментарий вы можете из системы, просто нажав на «домашнее задание» под темой которую изучаете или из письма по ссылке.

- -Общаться со студентами вы теперь можете в комментариях под каждым видео.
-Делитесь мнениями и идеями :slightly_smiling_face:

- -По всем вопросам, связанным с курсом смело обращайтесь на почту info@ucandesign.ru
-Для вашего удобства в системе есть раздел «Помощь» с часто задаваемыми вопросами http://go.skillbox.ru/management/faq - -
С уважением,
SkillBox
Пожалуйста, по любым вопросам смело пишите на support@skillbox.ru
- - \ No newline at end of file diff --git a/templates/mails/sent_order.html b/templates/mails/sent_order.html deleted file mode 100644 index 6772823..0000000 --- a/templates/mails/sent_order.html +++ /dev/null @@ -1,279 +0,0 @@ - - - - - - - - - - - -asd - - - - - - - - - - - - - - - - - - -
-
- -
- - -
- - - -
- - - -
- - - -
- - - -
- - - -
-
- -
-
- - - \ No newline at end of file diff --git a/templates/mails/sent_out_order.html b/templates/mails/sent_out_order.html deleted file mode 100644 index 504ad3c..0000000 --- a/templates/mails/sent_out_order.html +++ /dev/null @@ -1,275 +0,0 @@ - - - - - - - - - - - -{{ TITLE }} - - - - - - - - - - - - - - - - - - -
-
- -
- - -
- - - -
- - - -
- - - -
- - - -
- - - -
-
- -
-
- - - \ No newline at end of file diff --git a/templates/mails/webinar.html b/templates/mails/webinar.html deleted file mode 100644 index fa96626..0000000 --- a/templates/mails/webinar.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - -
-Здравствуйте!

- -По многочисленным просьбам слушателей, мы добавили к первому модулю курса "Профессия PR-менеджер" домашнее задание.

- -Второй модуль будет доступен после выполнения домашнего задания.

- -Как отвечать на домашние задания в системе?
-• После того как отметите последний урок в теме «просмотренным», — появиться активная ссылка на переход в раздел с домашним заданием
-• Ниже на странице с заданием есть форма обратной связи, через неё необходимо направлять задание на проверку.
-Также через неё можно общаться с преподавателем, задавать вопросы, связанными с выполнением работы или вопросы по просмотренному материалу.
-• Как только преподаватель проверит и одобрит Вашу работу, Вам откроется доступ ко второму модулю.

- -По всем вопросам, обращайтесь на почту: info@bedev.ru -
С уважением,
SkillBox
Пожалуйста, по любым вопросам смело пишите на support@skillbox.ru
- - \ No newline at end of file diff --git a/templates/manager_account.html b/templates/manager_account.html deleted file mode 100755 index d45655b..0000000 --- a/templates/manager_account.html +++ /dev/null @@ -1,101 +0,0 @@ -{% extends 'base_index.html' %} -{% block title %}Кабинет продаж{% endblock %} -{% block modals %} -{% endblock %} -{% block asside %} - -{% endblock %} - - - -{% block content %} -
- -
-
-
-

Кабинет продаж

-
-
-
-
-
- -
-
-

- Проверка -

-
-

Пользователь

- - - -

Услуга

- -

Стоимость

-
- -
-
- -
-

Свободные счета

-
-
- - -
-
...
-
- - -
- - - -{% endblock %} diff --git a/templates/manager_history.html b/templates/manager_history.html deleted file mode 100755 index 8fc4585..0000000 --- a/templates/manager_history.html +++ /dev/null @@ -1,178 +0,0 @@ -{% extends 'base_index.html' %} - {% block asside %} - -{% endblock %} - - - -{% block content %} - -
- - -
-
- - - - - - - - - - - - - - - - - - {% for i in yourbills %} - - - - - - - - - - - - - - {% endfor %} - - -
ПлательщикТелефонEmailКурсУслугаСуммаДата выставленияДата смены статусаСтатус счетаОтправленные письма
{{ i.user.get_full_name }}{{ i.user.get_phone }}{{ i.user.email }}{{ i.service.course }}{{ i.service.title }}{{ i.price }}{{ i.date }}{{ i.status_changed }}{{ i.get_status_display }} - {% for letter in i.create_letters.all %}{{ letter }}
{% empty %}-{% endfor %}
- {% for letter in i.finish_letters.all %}{{ letter }}
{% empty %}-{% endfor %} -
-
-
- - -
- - - -{% endblock %} -{% block js %} - -{% endblock %} diff --git a/templates/manager_profile.html b/templates/manager_profile.html deleted file mode 100755 index 7dc0398..0000000 --- a/templates/manager_profile.html +++ /dev/null @@ -1,135 +0,0 @@ -{% extends 'base_index.html' %} -{% block modals %} - - - -{% endblock %} -{% block asside %} - -{% endblock %} - - - -{% block content %} -
- -
-
-
-

Пользователи системы

- -
-
-
-
-
-
-

Поиск пользователей

- - -
-

-

-

Результатов нет

- - - - - - - - - - - - -
ПользовательemailТелефонДействие
-
-
- - -
- - - -{% endblock %} diff --git a/templates/manager_servicerequest.html b/templates/manager_servicerequest.html deleted file mode 100755 index c6615df..0000000 --- a/templates/manager_servicerequest.html +++ /dev/null @@ -1,295 +0,0 @@ -{% extends 'base_index.html' %} -{% block asside %} - -{% endblock %} -{% block modals %} - - - - {% for i in servicerequests %} - - {% endfor %} -{% endblock %} - - - -{% block content %} -
- -
-
-
-

Запросы на услуги

-
-
-
-
-
- - - - - - - - - - - - {% for i in servicerequests %} - - - - - - - - {% empty %} - - - - {% endfor %} - -
ПлательщикТелефонКурсСтатус запроса
{{ i.student }}{{ i.student.get_phone }}{{ i.get_name }} - {% if i.manager == request.user and i.status == 'W' %} - Вы не закончили обработку - {% else %} - {{ i.get_status_display }} - {% endif %} - - {% if i.manager == request.user and i.status == 'W' %} - - {% else %} - - {% endif %} -
-

- Запросов нет -

-
-
-
- - -
- - - -{% endblock %} diff --git a/templates/menu.html b/templates/menu.html deleted file mode 100644 index de704f6..0000000 --- a/templates/menu.html +++ /dev/null @@ -1,47 +0,0 @@ - \ No newline at end of file diff --git a/templates/new_reports.html b/templates/new_reports.html deleted file mode 100755 index 682da4f..0000000 --- a/templates/new_reports.html +++ /dev/null @@ -1,70 +0,0 @@ -{% extends 'reports/base_index.html' %} -{% block title %}Отчеты{% endblock %} -{% block head %} - -{% endblock %} -{% block content %} -
-

Д/З

- - -
-
-
-

Уроки

- - -
-
-
-

- Активность пользователей -

- - - - - - - - - - - - - - - - - - - -
Всего пользователейНе активныхОплатившиеБез активности ДеньБез активности 3 ДняБез активности НеделюБез активности Месяц
{{ users.all }}{{ users.no_active.int }} [{{ users.no_active.proc }}%]{{ users.bought.all.int }} [{{ users.bought.all.proc }}%]{{ users.bought.day.int }} [{{ users.bought.day.proc }}%]{{ users.bought.three.int }} [{{ users.bought.three.proc }}%]{{ users.bought.week.int }} [{{ users.bought.week.proc }}%]{{ users.bought.month.int }} [{{ users.bought.month.proc }}%]
-
- -
-

Отчет прохождения

- - -
-
-{% endblock %} -{% block js %} - - -{% endblock %} \ No newline at end of file diff --git a/templates/news_one.html b/templates/news_one.html deleted file mode 100755 index 03febe1..0000000 --- a/templates/news_one.html +++ /dev/null @@ -1,67 +0,0 @@ -{% extends 'base_index.html' %} -{% block content %} -
- -
-
-
-
-
- {{ news.title }}
-

{{ news.get_date }}

-
-
-
-
-
-
-
- {{ news.content|safe }} -
-
- - -
- - -
- - {% if request.user.is_authenticated %} -
- -
Последняя активность
-
-
-
-
минуту назад
Курс «Профессия веб-разработчик», занятие 6
-

Ваше домашнее задание одобрено преподавателем.

-
-
-
-
-
23:30
Курс «Профессия веб-разработчик», занятие 6.
-

Ваше домашнее задание проверено преподавателем. Вам необходимо провести работу над ошибками

-
-
-
-
-
понедельник, 03.02.2015
Курс «Профессия веб-разработчик», занятие 6.
-

Преподаватель оставил комментарий

-
-
-
- -
- {% endif %} -
-
Новости Школы
-
-
- -
- - -{% endblock %} \ No newline at end of file diff --git a/templates/no_auth_modals.html b/templates/no_auth_modals.html deleted file mode 100755 index d6375b1..0000000 --- a/templates/no_auth_modals.html +++ /dev/null @@ -1,283 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{% if request.GET.userblocked %} - -{% endif %} \ No newline at end of file diff --git a/templates/one_comment.html b/templates/one_comment.html deleted file mode 100644 index f73816b..0000000 --- a/templates/one_comment.html +++ /dev/null @@ -1,63 +0,0 @@ -{% extends 'base_index.html' %} -{% block title %}Комментарий #{{ comment.id }}{% endblock %} -{% block content %} -
- -
-
-
-
-
- Комментарий #{{ comment.id }}
-

{{ comment.date }}

-
-
-
-
-
-
-
- {{ comment.text|safe }} -
-
- - -
- - -
- - {% if request.user.is_authenticated %} -
- -
Последняя активность
-
-
-
-
минуту назад
Курс «Профессия веб-разработчик», занятие 6
-

Ваше домашнее задание одобрено преподавателем.

-
-
-
-
-
23:30
Курс «Профессия веб-разработчик», занятие 6.
-

Ваше домашнее задание проверено преподавателем. Вам необходимо провести работу над ошибками

-
-
-
-
-
понедельник, 03.02.2015
Курс «Профессия веб-разработчик», занятие 6.
-

Преподаватель оставил комментарий

-
-
-
- -
- {% endif %} -
- - -{% endblock %} \ No newline at end of file diff --git a/templates/practice_workshop.html b/templates/practice_workshop.html deleted file mode 100644 index d16a453..0000000 --- a/templates/practice_workshop.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - - - - - - - - - - {{ face.title }} - {{ NAME }} - - - - - - - {% block content.head %} - {{ content.head|safe }} - {% endblock %} - - - - - - - -

- Мастерская "{{ face.title }}" -
- Ключ мастерской: {{ face.key }}
- подробнее -
-

- -
-

- Подробная информация - закрыть -

- Доступ: {{ face.access }}
- Открытие комнаты: {{ face.date }}
- Просмотров: {{ face.views }}
- Студентов* посетило: {{ face.students }}
- Студенты* on-line: - {{ face.online }} - -
-

* - Пользователи, прошедшие процесс регистрации

- -
-
-

- События мастерской: - 0 -

- -
-
- {% if content.body %} -
-

- Интерактивные элементы: -

-
- {{ content.body|safe }} -
-
- {% endif %} - {% if content.description %} -
-

- Описание задачи: -

-
- {{ content.description|safe }} -
-
- {% endif %} - {% if content.resolve %} -
-

- Пример решения: - - закрыть - -

-
- {{ content.resolve|safe }} -
-
-

- Посмотреть решение -

- {% endif %} - {% if content.content %} -
-

- Описание методов: -

-
- {{ content.content|safe }} -
-
- {% endif %} - {% if content.variables %} -
-

- Описание переменных: -

-
- {{ content.variables|safe }} -
-
- {% endif %} - {% if content.tools %} -
-

- Используемые инструменты: -

-
- -
-
- {% endif %} -
-

- -

- - diff --git a/templates/profile.html b/templates/profile.html deleted file mode 100755 index e3f4c73..0000000 --- a/templates/profile.html +++ /dev/null @@ -1,446 +0,0 @@ -{% extends 'base_index.html' %} -{% load static %} -{% block page_title %}Профиль{% endblock %} -{% block title %}{% if in_user %}{{ in_user.get_short_name }}{% else %}{{ request.user.get_short_name }}{% endif %}{% endblock %} - - - - -{% block head %} - -{% endblock %} -{% block content %} - -
- -
-
- {% for key, values in achievements.items %} - {% for i in values %} - - {{ i.achievement.title }} - - {% endfor %} - - {% endfor %} -
-
- - -
-
-
-
- {% if in_user %}{% if in_user.unique_role %} {{ in_user.unique_role }}{% else %} {{ in_user.get_in_role_display }}{% endif %} - {% else %}{% if request.user.unique_role %} {{ request.user.unique_role }}{% else %}{{ request.user.get_in_role_display }}{% endif %}{% endif %} - - {% if in_user %} - - {% if in_user.status == 'ON' %} {% else %}{% endif %} - - {% else %} - - {% if request.user.status == 'ON' %} {% else %}{% endif %} - - {% endif %} -
-
- -
-
-
-
-
-
- Основная информация -
-
- -

{% if in_user %}{{ in_user.fname }}{% else %}{{ request.user.fname }}{% endif %}

-

{% if in_user %}{{ in_user.name }}{% else %}{{ request.user.name }}{% endif %}

-

{% if in_user %}{{ in_user.oname }}{% else %}{{ request.user.oname }}{% endif %}

-

{% if in_user %}{{ in_user.city }}{% else %}{{ request.user.city }}{% endif %}

- {% if not in_user %}

Изменить данные

{% endif %} -
- {% if in_user %} - Регистрации: {{ in_user.date_joined }} - {% else %} - Регистрации: {{ request.user.date_joined }} - {% endif %} -
-
-
- {% if not in_user %} -
-
-
- Настройки приватности -
-
-

- - -

-
- Виден всем
- Только пользователям
- По прямой ссылке
- Только мне
- -
-
-
-
- {% endif %} -
-
-
- Ваши курсы {{ courses|length }} / {{ completed_courses }} -
-
- {% for i in courses %} -
-
-
{{ i.title }}
-
-
-
{{ i.progress }} %
-
-
- -
- {% if i.teacher %} -
-
-
- ... -
-
-
-

Ваш преподаватель

-
- {{ i.teacher.fname }} {{ i.teacher.name }}
- {{ i.teacher.oname }} -
-

Профиль

-
-
- {% endif %} - -
- {% empty %} -

На изучении курсов нет

- {% endfor %} -
- - - -
-
- -
-
Ваши очки навыков {{ skills_size }}
- -
- {% if skills %} -
- {% else %} -

Навыков не получено

- {% endif %} -
-
    - {% for key, value in skills.items %} -
  • - {{ value.size }} очков - {% if value.icon %}{% endif %}{{ key }} - -
  • - {% endfor %} -
  • - {{ skills_size }} очков - - Итого: -
  • -
-
- {% if documents %} -
-
Документы {{ documents|length }}
- -
- {% endif %} - {% if b_bills %} -
-
Счета {{ b_bills|length }}
- -
- {% endif %} -
-
-
-
- Ваши дипломы {{ diploms|length }} -
- -
    - {% for i in diploms %} -
  • - - ... - - - - Успешное прохождение курса: {{ i.material.course.get_title }}

    - Выдан {{ i.date }} -
    -
    Посмотреть диплом
    -
  • - {% empty %} -
  • Дипломов не получено

  • - {% endfor %} - -
-
-
-
- Ваши достижения {{ got_achievements }} -
-
- {% for key, values in achievements.items %} -
-
- {{ key }} -
-
- {% for i in values %} - -
-
- ... - {{ i.achievement.title }} -
-
-
- {% endfor %} -
-
- {% empty %} -

Достижений еще нет

- {% endfor %} -
- -
-
-
- Вопросы на форуме {{ forum_ask|length }} -
-
- {% for key, values in forum_ask.items %} -
-
- {{ key }} -
-
- {% for i in values %} - -
-
- ... - {{ i.achievement.title }} -
-
-
- {% endfor %} -
-
- {% empty %} -

Вопросов еще не было

- {% endfor %} -
- - -
- -
-
- Ответы на форуме {{ forum_ans.all|length }} {{ forum_ans.best }} -
-
- {% for key, values in forum_ans.all.items %} -
-
- {{ key }} -
-
- {% for i in values %} - -
-
- ... - {{ i.achievement.title }} -
-
-
- {% endfor %} -
-
- {% empty %} -

Ответов еще не было

- {% endfor %} -
- - -
- -
-
- Прочитанные статьи {{ articles|length }} -
-
- {% for article in articles %} -
-
- {{ article.title }} -
-
- {% empty %} -

Нет прочитанного

- {% endfor %} -
- -
- -
-
- - -{% include 'right_site.html' %} -{% endblock %} -{% block js %} - - - - - - - - -{% endblock %} \ No newline at end of file diff --git a/templates/progress_report.html b/templates/progress_report.html deleted file mode 100755 index 6786282..0000000 --- a/templates/progress_report.html +++ /dev/null @@ -1,85 +0,0 @@ -{% extends 'base_index.html' %} -{% load course_filter %} -{% block title %}Отчет по прохождению{% endblock %} -{% block content %} -
- - - - -
- {% for m in map %} -
- - - {% for theme in m.themes %} - - {% endfor %} - - - - -
- -
-
- {% endfor %} - -
-
-
- -
- -
-
-
-

Получение информации.
Осталось:

-

-
-
-
-
-
-
-
-
-
-
-{% endblock %} -{% block js %} - -{% endblock %} diff --git a/templates/reports.html b/templates/reports.html deleted file mode 100755 index 2f2da70..0000000 --- a/templates/reports.html +++ /dev/null @@ -1,55 +0,0 @@ -{% extends 'reports/base_index.html' %} -{% block title %}Отчеты{% endblock %} -{% block page_title %}Отчеты{% endblock %} -{% block content %} -

- ДЗ -

- - - - - - - - - - {% for key, course in courses.items %} - - - - - - - - - {% endfor %} -
КурсРаботВ процессеБез задержекПросроченоОт
{{ course.title }}{{ course.students }}{{ course.process }}{{ course.success }}{{ course.expired }}{{ course.date }}
-

- Активность пользователей -

- - - - - - - - - - - - - - - - - - - -
Всего пользователейНе активныхОплатившиеБез активности ДеньБез активности 3 ДняБез активности НеделюБез активности Месяц
{{ users.all }}{{ users.no_active.int }} [{{ users.no_active.proc }}%]{{ users.bought.all.int }} [{{ users.bought.all.proc }}%]{{ users.bought.day.int }} [{{ users.bought.day.proc }}%]{{ users.bought.three.int }} [{{ users.bought.three.proc }}%]{{ users.bought.week.int }} [{{ users.bought.week.proc }}%]{{ users.bought.month.int }} [{{ users.bought.month.proc }}%]
-

Другие отчеты

- -{% endblock %} \ No newline at end of file diff --git a/templates/reports/base_index.html b/templates/reports/base_index.html deleted file mode 100755 index af6929d..0000000 --- a/templates/reports/base_index.html +++ /dev/null @@ -1,222 +0,0 @@ -{% load static %} - - - - - {% block title %}{% endblock %} - Точка кода - - - - - - - - - - - - - - - - - - - - - - - - - - - {% block head %} - {% endblock %} - - -
- - - - - {% block asside %} - -{% endblock %} -
- -
- -
-
-
-{% block content %} -{% endblock %} -
-
- {% block js %} - {% endblock %} -
-
- - - - - - - - - - - diff --git a/templates/reports/bills.html b/templates/reports/bills.html deleted file mode 100755 index a66d318..0000000 --- a/templates/reports/bills.html +++ /dev/null @@ -1,81 +0,0 @@ -{% extends 'reports/base_index.html' %} -{% load course_filter %} -{% block title %}Отчет по прохождению{% endblock %} -{% block head %} -{% endblock %} -{% block content %} - -
-
- -
-
- -
-
- - -
- - -
-
- - - - -
- {% for course, values in courses.items %} -
- - {% for token in values.map %}{% endfor %} - - {% for user in values.users %} - {% for token in values.map %}{% endfor %}{% endfor %} -
-
- {% endfor %} -
-
- - -{% endblock %} -{% block js %} - - - -{% endblock %} diff --git a/templates/reports/freeweek.html b/templates/reports/freeweek.html deleted file mode 100755 index 9248e11..0000000 --- a/templates/reports/freeweek.html +++ /dev/null @@ -1,149 +0,0 @@ -{% extends 'reports/base_index.html' %} -{% load course_filter %} -{% block title %}Бесплатная неделя{% endblock %} -{% block page_title %}Бесплатная неделя{% endblock %} -{% block head %} -{% endblock %} -{% block content %} - {% if title %} -

Назад

- {% endif %} -

- {% if title %}{{ title }}{% else %}Активность пользователей{% endif %} -

- {% if not title %} - - - - - - - - - - - - - - - - - - - - - - - - - -
Всего пользователейПрошли активациюJava [ {{ java.all }} ]Web [ {{ web.all }} ]Android [ {{ android.all }} ]C# [ {{ csh.all }} ]
{{ all }}{{ active.count }} [{{ active.persent }}%] - Проходят обучение: {{ java.in.count }}
- Получили домашку: {{ java.in_hw }}
- Сдали домашку: {{ java.out_hw }}
-
- Проходят обучение: {{ web.in.count }}
- Получили домашку: {{ web.in_hw }}
- Сдали домашку: {{ web.out_hw }}
-
- Проходят обучение: {{ android.in.count }}
- Получили домашку: {{ android.in_hw }}
- Сдали домашку: {{ android.out_hw }}
-
- Проходят обучение: {{ csh.in.count }}
- Получили домашку: {{ csh.in_hw }}
- Сдали домашку: {{ csh.out_hw }}
-
Открыть конкретикуОткрыть конкретикуОткрыть конкретикуОткрыть конкретику
- {% else %} - - - - - - - - - - - - - - - - {% for bill in b_in %} - - - - - - - - - - - - {% endfor %} - - - - - - - - - - - - - - - {% for h in in_hw %} - - - - - - - - - - - - {% endfor %} - - - - - - - - - - - - - - - {% for h in out_hw %} - - - - - - - - - - - - {% endfor %} -
ФИОТелефонEmail --- Дата открытия доступа --- --- Дата завершения доступа ---
Весь список [{{ b_in|length }}]
{{ bill.user.id }}:{{ bill.user.get_full_name }}{{ bill.user.get_phone }}{{ bill.user.email }} --- {{ bill.finish_date }} --- --- {{ bill.fire_date }} ---
Получили ДЗ [{{ in_hw|length }}]
ФИОТелефонEmailТочка нахожденияДата открытия доступаДата получения задания --- Дата завершения доступаПопыток сдачи
{{ h.student.id }}:{{ h.student.get_full_name }}{{ h.student.get_phone }}{{ h.student.email }}{{ h.material.theme.sort }}:{{ h.material.get_title }}{{ h.date }} --- {{ h.get_trues_length }}
Сдали ДЗ [{{ out_hw|length }}]
ФИОТелефонEmailТочка нахожденияДата открытия доступаДата получения заданияДата сдачи заданияДата завершения доступаПопыток сдачи
{{ h.student.id }}:{{ h.student.get_full_name }}{{ h.student.get_phone }}{{ h.student.email }}{{ h.material.theme.sort }}:{{ h.material.get_title }} {{ h.date }}{{ h.f_date }}{{ h.get_trues_length }}
- {% endif %} -{% endblock %} -{% block js %} -{% endblock %} diff --git a/templates/reports/hw_process_pp.html b/templates/reports/hw_process_pp.html deleted file mode 100755 index f4d16fe..0000000 --- a/templates/reports/hw_process_pp.html +++ /dev/null @@ -1,117 +0,0 @@ -{% extends 'reports/base_index.html' %} -{% load course_filter %} -{% block title %}Проверки{% endblock %} -{% block page_title %}Проверки{% endblock %} -{% block head %} - - -{% endblock %} -{% block content %} -

- Проверки по пользователю -

-
- -
- ФамилияИмя
- - {% if request.user.status == 'ON' %} {% else %}{% endif %} - {{ request.user.get_status_display }}
- Регистрация: -
-
-
-
-
Введите Email искомого пользователя:
- - - -
- -
- - -

-
- -{% endblock %} -{% block js %} -{% endblock %} diff --git a/templates/reports/hw_process_pt.html b/templates/reports/hw_process_pt.html deleted file mode 100755 index 5786aaf..0000000 --- a/templates/reports/hw_process_pt.html +++ /dev/null @@ -1,139 +0,0 @@ -{% extends 'reports/base_index.html' %} -{% load course_filter %} -{% block title %}Проверки по учителю{% endblock %} -{% block page_title %}Проверки по учителю{% endblock %} -{% block head %} -{% endblock %} -{% block content %} -
-

- Проверки по учителю -

-
-
-
-
-
- Курс -
-
-
    - {% for course in courses %} -
  • {{ course.title }}
  • - {% endfor %} -
-
-
-
-
- Преподаватель -
-
-


Загрузка

-
    - -
-
-
-
-
- Временной разрез -
-
- * Включая эту дату -
- -
- * Не включая эту дату -
- -
- -
-
-
-
- Ключевая информация -
-
- Ведет студентов: -
- Взято: -
- Принято работ: -
- В работе: -
- Просрочено работ: -
-
-
- - - -
-

Ошибка

-
-

- Результат - Загрузка -

-
- - - - - - - - - - - - - - - -
IDМатериалСтудентДата началаДата завершенияСтатусПопыткиПросроченоДетализация
-

Всего строк в таблице:

-
- - -{% endblock %} -{% block js %} - -{% endblock %} diff --git a/templates/reports/mails.html b/templates/reports/mails.html deleted file mode 100755 index 9dd6616..0000000 --- a/templates/reports/mails.html +++ /dev/null @@ -1,113 +0,0 @@ -{% extends 'reports/base_index.html' %} -{% block title %}Рассылки{% endblock %} -{% block content %} -
-

Ручные рассылки

-
-
-

Оболочка

- -

Сегмент

- -

Временая точка. ОТ бесконечного прошлого - ДО сейчас, минус N дней

- -

- - -

-
-
- -
- -
-

- - - - -
-
-

- Статистика отправок -

- - - - - - - - - - - {% for point, numbers in stat.items %} - - - - - - - - - - {% endfor %} - - - - - - - - - -
За деньЗа 3 дняЗа неделюЗа месяцЗа 3 месяцаЗа все время
{{ point }}{{ numbers.d1 }}{{ numbers.d3 }}{{ numbers.w1 }}{{ numbers.m1 }}{{ numbers.m3 }}{{ numbers.all }}
Всего
-
-
-

- История ручных рассылок - -
- -
- -

- - - - - - - - - - {% for hist in self_reports %} - {% empty %} - - - - {% endfor %} -
ОтправительТекст рассылкиДата отправкиПолучателиОтправлено
История еще не написана
-
-{% endblock %} \ No newline at end of file diff --git a/templates/reports/menu.html b/templates/reports/menu.html deleted file mode 100755 index 27ca46a..0000000 --- a/templates/reports/menu.html +++ /dev/null @@ -1,47 +0,0 @@ - \ No newline at end of file diff --git a/templates/reports/progress.html b/templates/reports/progress.html deleted file mode 100755 index aba986e..0000000 --- a/templates/reports/progress.html +++ /dev/null @@ -1,104 +0,0 @@ -{% extends 'reports/base_index.html' %} -{% load course_filter %} -{% block title %}Отчет по прохождению{% endblock %} -{% block head %} -{% endblock %} -{% block content %} - -
-
-
- -
-
- - -
- -
- -
-
- - -
- - - -
-
-
- - - - -
- {% for course, values in courses.items %} -
- - {% for token in values.map %}{% endfor %} - - {% for user in values.users %} - {% for token in values.map %}{% endfor %}{% endfor %} -
-
- {% endfor %} -
-
- - -{% endblock %} -{% block js %} - - - -{% endblock %} diff --git a/templates/right_site.html b/templates/right_site.html deleted file mode 100644 index 642741c..0000000 --- a/templates/right_site.html +++ /dev/null @@ -1,23 +0,0 @@ -{% if request.user.is_authenticated %} - {% if actions %} -
-
- -
Последняя активность

ВСЯ ИСТОРИЯ

-
- {% for i in actions %} -
-
-
{{ i.date }}
{{ i.place }}
-

{{ i.text|safe }}

-
-
- {% endfor %} -
- -
-
- {% endif %} -{% endif %} \ No newline at end of file diff --git a/templates/self_bill_result.html b/templates/self_bill_result.html deleted file mode 100755 index a31d919..0000000 --- a/templates/self_bill_result.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - {{ design.name }}. Оплата счета. - - - - - - - - {% block head %} - {% endblock %} - - - -
- - - -
-
-
-

Оплата счета{{ sum }} руб

- {% if result %} -

Ваш платеж оплачен

- {% else %} -

Во время проведеня платежа произошла ошибка.

- - {% endif %} -
-

2016 {{ design.name }}

-
- - -{% block content %} -{% endblock %} -{% block footer %} -{% endblock %} - - - - - \ No newline at end of file diff --git a/templates/selfbill.html b/templates/selfbill.html deleted file mode 100755 index 8c34482..0000000 --- a/templates/selfbill.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - {{ NAME }}. Оплата счета. - - - - - - - - {% block head %} - {% endblock %} - - - -
- - - -
-
-
-

Оплата счета{{ sum }} руб

-

-

{{ name }}

- -

-

-

-

-

-

-
-

2016 «{{ NAME }}»

-
- - -{% block content %} -{% endblock %} -{% block footer %} -{% endblock %} - - - - - \ No newline at end of file diff --git a/templates/simplepayresult.xml b/templates/simplepayresult.xml deleted file mode 100755 index dc8a890..0000000 --- a/templates/simplepayresult.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - {{ salt }} - {{ status }} - {% if description %} - {{ description }} - {% endif %} - {{ sig }} - \ No newline at end of file diff --git a/templates/student_matrix.html b/templates/student_matrix.html deleted file mode 100755 index 847929b..0000000 --- a/templates/student_matrix.html +++ /dev/null @@ -1,35 +0,0 @@ -{% extends 'base_index.html' %} -{% block title %}Матрица прохождения{% endblock %} -{% block content %} -
- - - - -
- {% for key, value in students.items %} -
- {{ value }} -
- {% endfor %} -
-
-{% endblock %} \ No newline at end of file diff --git a/templates/super_bill.html b/templates/super_bill.html deleted file mode 100644 index 053ca0f..0000000 --- a/templates/super_bill.html +++ /dev/null @@ -1,177 +0,0 @@ -{% extends 'base_index.html' %} -{% block head %} - -{% endblock %} -{% block modals %} - - - - - -{% endblock %} -{% block asside %} - -{% endblock %} - - - -{% block content %} -
- -
-
-
-

Счета системы

- -
-
-
-
-
-
-

Поиск счета

- - -
-

-

Счет не найден

-
- -
-
-
- - -
- - - -{% endblock %} -{% block js %} -{% endblock %} \ No newline at end of file diff --git a/templates/super_history.html b/templates/super_history.html deleted file mode 100755 index 55fd0a0..0000000 --- a/templates/super_history.html +++ /dev/null @@ -1,151 +0,0 @@ -{% extends 'base_index.html' %} -{% block modals %} - {% for i in failed %} - - {% endfor %} -{% endblock %} - {% block asside %} - -{% endblock %} - - - -{% block content %} -
- -
-
-
-

История счетов

-
-
-
-
-
- - - - - - - - - - - - - - - {% for i in yourbills %} - - - - - - - - - - - {% endfor %} - {% for i in failed %} - - - - - - - - - - - {% endfor %} - -
МенеджерПлательщикТелефонКурсУслугаСуммаСтатус счетаДата
{{ i.manager.get_full_name }}{{ i.user.get_full_name }}{{ i.user.get_phone }}{{ i.service.course }}{{ i.service.title }}{{ i.price }}{{ i.get_status_display }}{{ i.date }}
{{ i.manager.get_full_name }}{{ i.student.get_full_name }}{{ i.student.get_phone }}{{ i.course }} - {% if i.cancel_description %} - {{ i.get_status_display }} - {% else %} - {{ i.get_status_display }} - {% endif %} - {{ i.f_date }}
-
-
- - -
- - - -{% endblock %} diff --git a/templates/super_profile.html b/templates/super_profile.html deleted file mode 100755 index 3a2e0c0..0000000 --- a/templates/super_profile.html +++ /dev/null @@ -1,180 +0,0 @@ -{% extends 'base_index.html' %} -{% block modals %} - - - - - -{% endblock %} -{% block asside %} - -{% endblock %} - - - -{% block content %} -
- -
-
-
-

Пользователи системы

- -
-
-
-
-
-
-

Поиск пользователей

- - -
-

-

-

Результатов нет

- - - - - - - - - - - - -
ПользовательEmailТелефонДействие
-
-
- - -
- - - -{% endblock %} diff --git a/templates/super_servicerequest.html b/templates/super_servicerequest.html deleted file mode 100755 index 9a12928..0000000 --- a/templates/super_servicerequest.html +++ /dev/null @@ -1,344 +0,0 @@ -{% extends 'base_index.html' %} - {% block asside %} - -{% endblock %} -{% block modals %} - - - - {% for i in servicerequests %} - - {% endfor %} -{% endblock %} - - - -{% block content %} -
- -
-
-
-

Запросы на услуги

-
-
-
-
-
- - - - - - - - - - - - - - - {% for i in servicerequests %} - - - - - - - - - - - {% empty %} - - - - {% endfor %} - -
ПлательщикТелефонПочтаКурсСтатус запросаДата запросаУправление
{{ i.student.fname }} {{ i.student.name }} {{ i.student.oname }}{{ i.student.get_phone }}{{ i.student.email }}{{ i.get_name }} - {% if i.manager == request.user and i.status == 'W' %} - Вы не закончили обработку - {% else %} - {{ i.get_status_display }} - {% endif %} - - {{ i.date }} - - {% if not i.manager %} - - {% else %} - {% if i.manager == request.user %} - - {% endif %} - {% endif %} - - -
-

- Запросов нет -

-
-
-
- - -
- - - -{% endblock %} diff --git a/templates/teach_profile.html b/templates/teach_profile.html deleted file mode 100755 index 15ea184..0000000 --- a/templates/teach_profile.html +++ /dev/null @@ -1,253 +0,0 @@ -{% extends 'base_index.html' %} -{% block title %}Кабинет преподавателя{% endblock %} -{% block head %} - -{% endblock %} - {% block asside %} - -{% endblock %} - - - -{% block content %} -
- -
-
-
-
-
- Материалы на проверку - Группировка: - По теме - Общий список - -
- -
-
-
-
-
- Не проверенные экзамены -
-
- {% for key, value in active_exams.items %} - - {% for i in value %} - - - ... - - -
- {{ i.student.get_full_name }} - {{ key.0 }}
{{ i.material.theme.get_title }}
-
-
- Дата сдачи:
{{ i.date }}


- {{ i.expired_for|safe }} -
-
-
- {% endfor %} - - {% endfor %} -
-
-
-
-
- - -
- - -{% include 'right_site.html' %} - -{% endblock %} -{% block js %} - -{% endblock %} \ No newline at end of file diff --git a/templates/teacher_comments.html b/templates/teacher_comments.html deleted file mode 100755 index dabfba6..0000000 --- a/templates/teacher_comments.html +++ /dev/null @@ -1,237 +0,0 @@ -{% extends 'base_index.html' %} -{% block head %} - -{% endblock %} - {% block asside %} - -{% endblock %} - - {% block content %} -
- -
- - - {% for i in course.get_themes %} - - {% endfor %} - - {% for i in course.get_addition_themes %} - - {% endfor %} - - {% for i in course.get_premium_themes %} - - {% endfor %} - - - - - - -{% endblock %} -{% block js %} - - -{% endblock %} diff --git a/templates/teacher_exams.html b/templates/teacher_exams.html deleted file mode 100755 index cf254ff..0000000 --- a/templates/teacher_exams.html +++ /dev/null @@ -1,116 +0,0 @@ -{% extends 'base_index.html' %} -{% load course_filter %} -{% block title %}Сдача экзаменов{% endblock %} -{% block head %} - -{% endblock %} - {% block asside %} - -{% endblock %} - -{% block content %} -
- - {% for i in exams %} - - - - ... - - -
- {{ i.student.get_full_name }} - Тема №{{ i.material.theme.sort }}
{{ i.material.theme.get_title }}
-
-
- Дата сдачи: {{ i.date }}
- Просрочено через: {{ i.expired_for|safe }} -
-
-
- {% endfor %} -
-{% endblock %} -{% block js %} - -{% endblock %} \ No newline at end of file diff --git a/templates/teacher_history.html b/templates/teacher_history.html deleted file mode 100644 index 94c70c4..0000000 --- a/templates/teacher_history.html +++ /dev/null @@ -1,144 +0,0 @@ -{% extends 'base_index.html' %} -{% block title %}Кабинет преподавателя{% endblock %} -{% block head %} - -{% endblock %} - {% block asside %} - -{% endblock %} - - - -{% block content %} -
- -
-
- - - - - - - - - {% for h in hw %} - - - - - - - {% endfor %} - -
ТемаСтудентДата открытияДата сдачи
- - {{ h.material.get_title }} - - - - {{ h.student }} - - {{ h.date }}{{ h.f_date }}
-
-
- - -
- - -{% include 'right_site.html' %} - -{% endblock %} \ No newline at end of file diff --git a/templates/teacher_homeworks.html b/templates/teacher_homeworks.html deleted file mode 100755 index 5090464..0000000 --- a/templates/teacher_homeworks.html +++ /dev/null @@ -1,116 +0,0 @@ -{% extends 'base_index.html' %} -{% load course_filter %} -{% block title %}Сдача экзаменов{% endblock %} -{% block head %} - -{% endblock %} - {% block asside %} - -{% endblock %} - -{% block content %} -
- - {% for i in homeworks %} - - - - ... - - -
- {{ i.student.get_full_name }} - Тема №{{ i.material.theme.sort }}
{{ i.material.theme.get_title }}
-
-
- Дата сдачи: {{ i.date }}
- Просрочено через: {{ i.expired_for|safe }} -
-
-
- {% endfor %} -
-{% endblock %} -{% block js %} - -{% endblock %} \ No newline at end of file diff --git a/templates/teacher_materials.html b/templates/teacher_materials.html deleted file mode 100755 index 0bf427d..0000000 --- a/templates/teacher_materials.html +++ /dev/null @@ -1,182 +0,0 @@ -{% extends 'base_index.html' %} -{% block head %} - -{% endblock %} - {% block asside %} - -{% endblock %} - - {% block content %} -
- -
- - - {% for i in course.get_themes %} - - {% endfor %} - {% for i in course.get_pred_exam_themes %} - - {% endfor %} - {% for i in course.get_addition_themes %} - - {% endfor %} - - {% for i in course.get_premium_themes %} - - {% endfor %} - - - -
-{% endblock %} -{% block js %} - -{% endblock %} \ No newline at end of file diff --git a/templates/test.html b/templates/test.html deleted file mode 100755 index 5294a10..0000000 --- a/templates/test.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Skillbox — Трансляция Behance Portfolio Reviews Moscow - - -
- - - - - - -
- - \ No newline at end of file diff --git a/templates/traffic_map.html b/templates/traffic_map.html deleted file mode 100755 index a79908f..0000000 --- a/templates/traffic_map.html +++ /dev/null @@ -1,61 +0,0 @@ -{% extends 'base_index.html' %} -{% load static %} -{% load course_filter %} -{% block page_title %}Подписки курса {{ course }}{% endblock %} -{% block head %} -{% endblock %} -{% block content %} -
-
-
-
-

- Тарифы курса: {{ course }} -

-
-
-
-
- - - - {% for i in traffic %} - - {% endfor %} - - - - {% for i in traffic %} - - {% endfor %} - - - - {% for i in traffic %} - - {% endfor %} - - - - {% for i in traffic %} - - {% endfor %} - - -
ID Услуги{{ i.id }}
Тип подписки{{ i.get_m_type_display }}
Цена{{ i.cost }}
Описание{{ i.description }}
- -
-
-
- -
-{% endblock %} diff --git a/templates/wallet.html b/templates/wallet.html deleted file mode 100755 index 37ab52e..0000000 --- a/templates/wallet.html +++ /dev/null @@ -1,110 +0,0 @@ -{% extends 'base_index.html' %} -{% block head %} - -{% endblock %} - - - - -{% block content %} -
- -
-
-
-

Ваш кошелек

- -
-
-
- - - -
- - -
- -
-

Доступно: -

100000 руб.

-

-

- -

- -
-
- - -
- -{% endblock %} diff --git a/templates/workshop_exam.html b/templates/workshop_exam.html deleted file mode 100755 index 6f65a4c..0000000 --- a/templates/workshop_exam.html +++ /dev/null @@ -1,202 +0,0 @@ -{% extends 'base_index.html' %} -{% block title %}Сдача Экзамена{% endblock %} -{% block head %} - - -{% endblock %} -{% block content %} -
-

Тема №{{ theme.sort }}: {{ theme.title }}

-
-
-
-

Описание задания

-
- {{ exam.head.description|safe }} -
-
- {% if exam.materials %} -
-
-
- Материалы к заданию -
- {% for i in exam.materials %} - - {% endfor %} -
-
- {% endif %} -
-
-
-
-
- ID: {{ student.id }} -

{{ student.fname }}

-

{{ student.name }}

-

{{ student.oname }}

-
-
- - - - -
-
-
-
-
-

Перейти к последней попытке -

-
- - - {% if exam.tries %} -

 Попыток: ({{ exam.tries|length }}) :

- {% endif %} -
- {% if exam.tries %} - {% for try in exam.tries %} -
-
- - -
-
- - LMS: ~# - - Попытка №{{ forloop.counter }} - - - - - - - - -
-
- -
- {% for comment in try.comments %} - -
- - -
-
- - {{ comment.owner }} - - - {{ comment.date }} -
-
-
{{ comment.text|safe }}
- {% for file in comment.files %} - - {% endfor %} -
-
-
- {% endfor %} -
- {% endfor %} - {% endif %} - {% if request.user.is_authenticated %} - {% if exam.head.status.flag != 'N' and exam.head.status.flag != 'F' %} - - -
-

 ОСТАВИТЬ СООБЩЕНИЕ :

-
- -
-
-
-
- - -
-
-
-
-
- -
-
- - -
- -
-
-
- - - -
- - - -
- -
- {% endif %} - {% else %} -

Для работы с домашним заданием, авторизуйтесь.

- {% endif %} -
-
-
-{% endblock %} -{% block js %} - -{% endblock %} \ No newline at end of file diff --git a/templates/workshop_homework.html b/templates/workshop_homework.html deleted file mode 100755 index 36e1743..0000000 --- a/templates/workshop_homework.html +++ /dev/null @@ -1,210 +0,0 @@ -{% extends 'base_index.html' %} -{% block title %}Сдача ДЗ{% endblock %} -{% block head %} - - -{% endblock %} -{% block content %} - -
-

Тема №{{ theme.sort }}: {{ theme.title }}

-
-
-
-

Описание задания

-
- {{ homework.head.description|safe }} -
-
- {% if homework.materials %} -
-
-
- Материалы к заданию -
- {% for i in homework.materials %} - - {% endfor %} -
-
- {% endif %} -
-
-
-
-
- ID: {{ student.id }} -

{{ student.fname }}

-

{{ student.name }}

-

{{ student.oname }}

-
-
- - - - -
-
-
-
-
-

Перейти к последней попытке -

-
- - - {% if homework.tries %} -

 Попыток: ({{ homework.tries|length }}) :

- {% endif %} -
- {% if homework.tries %} - {% for try in homework.tries %} -
-
- - -
-
- - LMS: ~# - - Попытка №{{ forloop.counter }} - - - - - - - - -
-
- -
- {% for comment in try.comments %} - -
- - -
-
- - {{ comment.owner }} - - - {{ comment.date }} -
-
-
{{ comment.text|safe }}
- {% for file in comment.files %} - - {% endfor %} -
-
- -
- - {% endfor %} -
- {% endfor %} - {% endif %} - {% if request.user.is_authenticated %} - {% if homework.head.status.flag != 'N' and homework.head.status.flag != 'F' %} - - -
-

 ОСТАВИТЬ СООБЩЕНИЕ :

-
- -
-
-
-
- - -
-
-
-
-
- -
-
- - -
- -
-
-
- - - -
- - - -
- -
- {% endif %} - {% else %} -

Для работы с домашним заданием, авторизуйтесь.

- {% endif %} -
-
-
-{% endblock %} -{% block js %} - -{% endblock %} \ No newline at end of file diff --git a/templates/yandexkassa_result.xml b/templates/yandexkassa_result.xml deleted file mode 100644 index 8f57f97..0000000 --- a/templates/yandexkassa_result.xml +++ /dev/null @@ -1,2 +0,0 @@ - -<{{ check_type }} {% for key, value in data.items %} {% if value %}{{ key }}="{{ value }}"{% endif %}{% endfor %}/> \ No newline at end of file diff --git a/templates/zendesk.html b/templates/zendesk.html deleted file mode 100755 index 483af61..0000000 --- a/templates/zendesk.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - -

-
-
{{delimiter}}
- {{content}} -
-
- {{footer}} {{footer_link}} -
-

2016 «Точка кода»

- - \ No newline at end of file