copy codemy

remotes/origin/pm_task_31703
Baryshnikov Nikolay 9 years ago
parent 33f12bca3e
commit d3f018ace1
  1. 18
      1.txt
  2. 11
      _practice/queue.py
  3. 0
      _tools/__init__.py
  4. 30
      _utils/check_lesson_open_near_homework.py
  5. 2
      _utils/clean_twice_journals.py
  6. 2
      _utils/get_big_fake_module.py
  7. 1
      _utils/get_reports.py
  8. 2
      _utils/open_lesson.py
  9. 4
      _utils/reports/get_success_for_theme.py
  10. 0
      access/__init__.py
  11. 0
      access/admin.py
  12. 0
      access/api.py
  13. 0
      access/forms.py
  14. 0
      access/models.py
  15. 0
      access/out_api.py
  16. 0
      access/tasks.py
  17. 0
      access/teach_urls.py
  18. 0
      access/teach_views.py
  19. 0
      access/urls.py
  20. 0
      access/views.py
  21. 2
      celerybeat.pid
  22. 28
      check_comment_auth
  23. 32
      configs/packs
  24. 50
      configs/prov.sh
  25. 51
      configs/skill-box_ssl/private.key
  26. 100
      configs/skill-box_ssl/public.pem
  27. 28
      configs/skill-box_ssl/request.csr
  28. BIN
      configs/skill-box_ssl/skill-box.pfx
  29. BIN
      configs/skillbox_ssl/skillbox.pfx
  30. 0
      courses/__init__.py
  31. 0
      courses/admin.py
  32. 0
      courses/api.py
  33. 0
      courses/migrations/0001_initial.py
  34. 0
      courses/migrations/0002_achievementsmap.py
  35. 0
      courses/migrations/0003_auto_20160322_1852.py
  36. 0
      courses/migrations/0004_lesson_video_id.py
  37. 0
      courses/migrations/0005_auto_20160331_2030.py
  38. 0
      courses/migrations/0006_auto_20160407_2006.py
  39. 0
      courses/migrations/0007_lesson_video_date.py
  40. 0
      courses/migrations/0008_coursetheme_block.py
  41. 0
      courses/migrations/0009_remove_coursetheme_block.py
  42. 0
      courses/migrations/0010_remove_coursetheme_empty_description.py
  43. 0
      courses/migrations/0011_auto_20160425_1550.py
  44. 0
      courses/migrations/0012_course_diploma_key.py
  45. 0
      courses/migrations/0013_auto_20160425_1720.py
  46. 0
      courses/migrations/0014_diploma.py
  47. 0
      courses/migrations/0015_auto_20160425_1750.py
  48. 0
      courses/migrations/0016_auto_20160425_1752.py
  49. 0
      courses/migrations/0017_auto_20160426_1240.py
  50. 0
      courses/migrations/0018_remove_exam_icon.py
  51. 0
      courses/migrations/0019_remove_exam_title.py
  52. 0
      courses/migrations/0020_auto_20160426_1243.py
  53. 0
      courses/migrations/0021_auto_20160426_1447.py
  54. 0
      courses/migrations/0022_auto_20160426_1526.py
  55. 0
      courses/migrations/0023_auto_20160426_1729.py
  56. 0
      courses/migrations/0024_auto_20160505_1748.py
  57. 0
      courses/migrations/0025_auto_20160506_1303.py
  58. 0
      courses/migrations/0026_auto_20160506_1838.py
  59. 0
      courses/migrations/__init__.py
  60. 0
      courses/models.py
  61. 0
      courses/templates.py
  62. 0
      courses/tools.py
  63. 0
      courses/urls.py
  64. 6
      courses/views.py
  65. 1
      courses_dump.json
  66. 0
      finance/__init__.py
  67. 0
      finance/admin.py
  68. 0
      finance/api.py
  69. 0
      finance/migrations/0001_initial.py
  70. 0
      finance/migrations/0002_bill_description.py
  71. 0
      finance/migrations/0003_selfbillrequest_company.py
  72. 0
      finance/migrations/0004_auto_20160414_1700.py
  73. 0
      finance/migrations/0005_selfbilldesign.py
  74. 0
      finance/migrations/0006_auto_20160414_1930.py
  75. 0
      finance/migrations/0007_auto_20160414_1941.py
  76. 0
      finance/migrations/0008_selfbilldesign_users.py
  77. 0
      finance/migrations/0009_selfbillhistory_new_sent.py
  78. 0
      finance/migrations/0010_selfbilldesign_pay_id.py
  79. 0
      finance/migrations/0011_auto_20160505_1748.py
  80. 0
      finance/migrations/0012_auto_20160505_2009.py
  81. 0
      finance/migrations/0013_auto_20160505_2035.py
  82. 0
      finance/migrations/0014_auto_20160506_1303.py
  83. 0
      finance/migrations/0015_price_key.py
  84. 0
      finance/migrations/0016_auto_20160524_1255.py
  85. 0
      finance/migrations/0017_remove_price_flex.py
  86. 0
      finance/migrations/0018_auto_20160531_1256.py
  87. 0
      finance/migrations/0019_price_url.py
  88. 0
      finance/migrations/0020_auto_20160531_1303.py
  89. 0
      finance/migrations/0021_auto_20160601_1309.py
  90. 0
      finance/migrations/0022_auto_20160601_1320.py
  91. 0
      finance/migrations/0023_bill_source_key.py
  92. 0
      finance/migrations/0024_auto_20160607_2002.py
  93. 0
      finance/migrations/0025_auto_20160607_2034.py
  94. 0
      finance/migrations/0026_servicerequest__type.py
  95. 0
      finance/migrations/0027_price_modals.py
  96. 0
      finance/migrations/0028_auto_20160610_0003.py
  97. 0
      finance/migrations/0029_bill_modals_show.py
  98. 0
      finance/migrations/0030_bill_admitad_uid.py
  99. 0
      finance/migrations/0031_auto_20160727_1453.py
  100. 0
      finance/migrations/__init__.py
  101. Some files were not shown because too many files have changed in this diff Show More

18
1.txt

@ -1,18 +0,0 @@
orlova@mokselle.ru
arhipov@mokselle.com
robert@mokselle.ru
nemtsev@mokselle.ru
grebennikova@mokselle.com
a.rybalov@mokselle.ru
isaev@mokselle.ru
kravchenko@mokselle.ru
volosnikov@mokselle.com
korneva@mokselle.com
ivanova@mokselle.ru
shilin@mokselle.com
grishchenko@mokselle.ru
iskusnov@mokselle.ru
dolya@mokselle.com
dolia@mokselle.ru
vorobjova@mokselle.com
plavko@mokselle.ru

@ -1,11 +0,0 @@
queue = tuple(i for i in range(0, 99999))
point = 0
def handler():
print()
def switch():
for count in queue:
handler()

@ -3,33 +3,45 @@ import os
import django import django
import sys import sys
import datetime import datetime
print(1)
start = datetime.datetime.now() start = datetime.datetime.now()
sys.path.append("/var/www/projects/codemy/") sys.path.append("/var/www/projects/codemy/")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
django.setup() django.setup()
print(2)
from courses.models import CourseMap from courses.models import CourseMap
from journals.models import TeacherJ, LessonJ, HomeworkJ, HomeworkTry, CourseThemeJ from journals.models import TeacherJ, LessonJ, HomeworkJ, HomeworkTry, CourseThemeJ
# Получить все журналы, где начато обучение # Получить все журналы, где начато обучение
for journal in TeacherJ.objects.filter(status='W').order_by('-id'): print(3)
if HomeworkTry.objects.filter(parent__parent__parent=journal).exists(): last = TeacherJ.objects.filter(status='W').order_by('-id').last().id
print(4)
for journal in TeacherJ.objects.filter(id=26933).order_by('-id'):
print(journal.id)
if HomeworkTry.objects.filter(material__course__id=journal.course.id, student__id=journal.student.id).exists():
print('4a')
hw = int(CourseMap.objects.get( hw = int(CourseMap.objects.get(
homework=HomeworkTry.objects.filter(parent__parent__parent=journal).order_by('id').last().material).sort) homework=HomeworkTry.objects.filter(parent__parent__parent=journal).order_by('id').last().material).sort)
before = [] print(hw)
for i in LessonJ.objects.filter(parent__parent=journal): for i in LessonJ.objects.filter(parent__parent=journal):
if int(CourseMap.objects.get(lesson=i.material).sort): if int(CourseMap.objects.get(lesson=i.material).sort) > hw:
i.date = None i.date = None
i.f_date = None i.f_date = None
i.success = False i.success = False
i.save() i.save()
else: else:
i.saw_this() try:
i.saw_this()
except Exception as e:
print(e)
print(i)
for ct in CourseThemeJ.objects.filter(parent=journal): for ct in CourseThemeJ.objects.filter(parent=journal):
if LessonJ.objects.filter(parent=ct).count() == LessonJ.objects.filter(parent=ct, date=None).count(): if LessonJ.objects.filter(parent=ct).count() == LessonJ.objects.filter(parent=ct, date=None).count():
ct.date = None ct.date = None
ct.save() ct.save()
for i in HomeworkJ.objects.filter(f_date=None).exclude(date=None): print(5)
i.open_next() #for i in HomeworkJ.objects.filter(f_date=None).exclude(date=None):
# i.open_next()

@ -66,7 +66,7 @@ for _user in User.objects.all():
_ft = datetime.datetime.now() _ft = datetime.datetime.now()
_about_time.append((_ft - _st).microseconds) _about_time.append((_ft - _st).microseconds)
_average = (((_all - _n) * (sum(_about_time) / len(_about_time)))/1000000)/60 _average = (((_all - _n) * (sum(_about_time) / len(_about_time)))/1000000)/60
show_progress(_all, _n, post=' // {0:6.4} мин '.format(_average)) show_progress(_all, _n, post=' // "Удаление дуближей журналов" // Расчетное оставщееся время Этапа: {0:6.4} мин '.format(_average))
_n += 1 _n += 1
finish = datetime.datetime.now() finish = datetime.datetime.now()

@ -18,7 +18,7 @@ _themes = {}
for i in CourseTheme.objects.filter(course__id=20): for i in CourseTheme.objects.filter(course__id=20):
_themes[i.sort] = 0 _themes[i.sort] = 0
for _j in CourseThemeJ.objects.filter(material=i, parent__progress__gt=1, f_date=None, for _j in CourseThemeJ.objects.filter(material=i, parent__progress__gt=1, f_date=None,
success=False).exclude(date=None): success=False).exclude(date=None):
if Bill.objects.filter(user=_j.student, status='F', service__course=20).exists(): if Bill.objects.filter(user=_j.student, status='F', service__course=20).exists():
_themes[i.sort] += 1 _themes[i.sort] += 1

@ -1,4 +1,3 @@
# coding=utf-8
# Получить список файлов папки reports # Получить список файлов папки reports
# Выдать выбор отчета # Выдать выбор отчета
# Запустить файл # Запустить файл

@ -11,7 +11,7 @@ django.setup()
from journals.models import CourseMap, LessonJ, TeacherJ, HomeworkTry from journals.models import CourseMap, LessonJ, TeacherJ, HomeworkTry
from lms.tools import show_progress from lms.tools import show_progress
_NEED_OPEN = LessonJ.objects.get(material__id='1154', student__email='rnet2005@gmail.com') _NEED_OPEN = LessonJ.objects.get(material__id='1154', student__email='parabellum07@gmail.com')
_TEACHERJ_FILTER = {'progress__gte': 0} _TEACHERJ_FILTER = {'progress__gte': 0}
_TEACHERJ_EXCLUDE = {'teacher': None} _TEACHERJ_EXCLUDE = {'teacher': None}

@ -8,9 +8,9 @@ BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append("/var/www/projects/codemy/") sys.path.append("/var/www/projects/codemy/")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
django.setup() django.setup()
from access.models import User
from courses.models import Course, CourseTheme from courses.models import Course, CourseTheme
from journals.models import CourseThemeJ from journals.models import HomeworkTry, HomeworkJ, CourseThemeJ
print('## Почты пользователей в статусе сдано по теме') print('## Почты пользователей в статусе сдано по теме')

@ -1 +1 @@
8311 28159

@ -1,28 +0,0 @@
# coding=utf-8
import os
import django
import sys
import datetime
start = datetime.datetime.now()
sys.path.append("/var/www/projects/codemy/")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
django.setup()
from lms.tools import comment_auth_data
from access.models import User as U
u = U.objects.get(id=2)
result = comment_auth_data(u)
#print(result)
def_json = '''json_encode: {"nick":"\u041d\u0438\u043a\u043e\u043b\u0430\u0439","avatar":"","id":"2","email":"bez.b.unix@gmail.com","profile_url":""}'''
def_sign = '''Sign: 9b185a7fa42ecfe88cebb36cd400a1b4'''
print('====================')
print(def_json)
print(def_sign)
print('-------------------')
for key, value in result.items():
if key == '== sign': print('%s %s' % ('---', bool(def_sign==value)))
print('%s: %s' % (key, value))
print('=====================')

@ -1,17 +1,17 @@
django==1.9.3 django==1.9.3
Pillow==3.3.0 Pillow
psycopg2==2.6.2 psycopg2
simplejson==3.8.2 simplejson
celery==3.1.23 celery
django-celery==3.1.17 django-celery
django-wysiwyg-redactor==0.4.9 django-wysiwyg-redactor
raven==5.24.3 raven
uwsgi==2.0.13.1 uwsgi
flower==0.9.1 flower
django-import-export==0.4.5 django-import-export
python-dateutil==2.5.3 python-dateutil
requests==2.11.0 requests
ipython==5.1.0 ipython
django-precise-bbcode==1.2.6 django-precise-bbcode
html2bbcode==2.3.2 html2bbcode
markdown==2.6.7 markdown

@ -1,50 +0,0 @@
sudo apt-get update
sudo apt-get upgrade
sudo su
# Установка программ
apt-get install -y python-dev python-virtualenv python-pip postgresql postgresql-server-dev-9.3 libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk git
pip install --upgrade pip
# Создание иерархии
cd /var/
mkdir www
cd www
mkdir projects
mkdir .envs
virtualenv .envs/codemy
source .envs/codemy/bin/activate
mkdir logs
mkdir run
cd projects
mkdir codemy
cd codemy/configs
# Установка пакетов
pip install -r packs
# Создание базы и пользователя
echo 'psql -c "create user team with password 'nu5Xefise';"' > start.sh
echo 'psql -c "CREATE DATAbase codemy owner team;"' >> start.sh
echo 'psql -c "alter role team login createdb;"' >> start.sh
sudo -u postgres './start.sh'
rm -rf start.sh
# Подправить postgres
# Изменить метод авторизации в pg_hba
echo 'local all postgres trust' > /etc/postgresql/9.3/main/pg_hba.conf
echo 'local all all md5' >> /etc/postgresql/9.3/main/pg_hba.conf
echo 'host all all 127.0.0.1/32 md5' >> /etc/postgresql/9.3/main/pg_hba.conf
echo 'host all all ::1/128 md5' >> /etc/postgresql/9.3/main/pg_hba.conf
service postgresql restart
# Миграция базы
cd /var/www/projects/codemy/
# Импорь рабочего backup.sql
# echo 'psql -f backup.sql' > make_backup.sh
# sudo -u postgres './make_backup.sh'
rm -rf make_backup.sh
# Пути nginx
#ln -s /var/www/projects/codemy/configs/dev_nginx /etc/nginx/conf.d/codemy.conf
#service nginx restart
# Пути supervisor
#ln -s /var/www/projects/codemy/configs/supervisor.conf /etc/supervisor/conf.d/codemy.conf
#supervisorctl reread
#supervisorctl update
cd /var/
chown www-data:www-data -R www
#supervisorctl restart all

@ -1,51 +0,0 @@
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----

@ -1,100 +0,0 @@
Ваш SSL-сертификат предоставлен ниже
-----BEGIN CERTIFICATE-----
MIIIdDCCB1ygAwIBAgIMPkc95DAdllwTruefMA0GCSqGSIb3DQEBCwUAMGAxCzAJ
BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTYwNAYDVQQDEy1H
bG9iYWxTaWduIERvbWFpbiBWYWxpZGF0aW9uIENBIC0gU0hBMjU2IC0gRzIwHhcN
MTYxMjI2MTMxNzM0WhcNMTcxMjI3MTMxNzM0WjA8MSEwHwYDVQQLExhEb21haW4g
Q29udHJvbCBWYWxpZGF0ZWQxFzAVBgNVBAMMDiouc2tpbGwtYm94LnJ1MIICIjAN
BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzBKLQbxjOT4tn618AMkbUjcuATjA
TJNRJ/vcZWtoNER+y8Xh64WyZlXkB3vaRAedmoe5pxYF7gtoATpTgwxhM7ah2RDb
ui/ZLgK8MHtjhwhcDVu1iCSeXnlYUuqysnbPDHymYZRVtiBVPkRK7sshkIB0CIpA
XpjoYyHiVoEqFk/xSrsLveXXgQtzPipzuweVHwwq7KufRJkHPWbAEZBpwc3QoLga
o5khVHTvZuLUMFB9vFGp34AaGkGNbTWDepIn2QviqnWvGqyIshhNv8uuf++irKZM
BLxuh0MnkSkbXYLf5CCcjw04nzPRDsd5ZZFXQyyIOLL2NIYYiIp22q082idSjbSX
kobwfagH8nc5ljv8Gryqeo22QERI3Fp3bZ/t+gTVzpFjbCYP8c/nusNKk2vyA/yo
/aqou9+EjoIFSrqgdiv/FDYyK0MwWik3VrykqCbgy6MuaSdex4iAKBOlAzjRmrSi
2AF5q3SEaLLhPV1e8HS8z8Z6Xo0EbeEFvLuVeHdukEsPk6167aToNmk0pC5Ic0hq
eeNtgLZfCLUhLzh/AhYW6sTjT620O6mQP/3IiEpEFYk4iGe+TJ81d7P11/W7+7Va
gFL611WBnDafYdxT4OZFKhqpnXW0lWvGK4ROtxNmaaZmsfFwAZVDFvavsy0G4FLx
Miw1CKJNiC4cQjkCAwEAAaOCBFAwggRMMA4GA1UdDwEB/wQEAwIFoDCBlAYIKwYB
BQUHAQEEgYcwgYQwRwYIKwYBBQUHMAKGO2h0dHA6Ly9zZWN1cmUuZ2xvYmFsc2ln
bi5jb20vY2FjZXJ0L2dzZG9tYWludmFsc2hhMmcycjEuY3J0MDkGCCsGAQUFBzAB
hi1odHRwOi8vb2NzcDIuZ2xvYmFsc2lnbi5jb20vZ3Nkb21haW52YWxzaGEyZzIw
VgYDVR0gBE8wTTBBBgkrBgEEAaAyAQowNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93
d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCAYGZ4EMAQIBMAkGA1UdEwQC
MAAwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9n
cy9nc2RvbWFpbnZhbHNoYTJnMi5jcmwwJwYDVR0RBCAwHoIOKi5za2lsbC1ib3gu
cnWCDHNraWxsLWJveC5ydTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
HQYDVR0OBBYEFO9PIphPbOr4Bnhcxb2sF7dgOwEsMB8GA1UdIwQYMBaAFOpOfNSA
LeUVgYYmjIJtwJikz5cPMIICcQYKKwYBBAHWeQIEAgSCAmEEggJdAlsAdgDd6x0r
eg1PpiCLga2BaHB+Lo6dAdVciI09EcTNtuy+zAAAAVk7R3L9AAAEAwBHMEUCIA2s
RoFsKZS5geHSL6Gm6nixJWSRjOIDdHiFJU0CuinHAiEAy+5pWxoLEhADou6GVjCS
j4X3Sq/x2TJhPU4J3IuweBUAdwBWFAaaL9fC7NP14b1Esj7HRna5vJkRXMDvlJhV
1onQ3QAAAVk7R3XgAAAEAwBIMEYCIQDxshxHNK9czqomcjPMfit/R8WpdYXit/Ke
ZALI23oZ9wIhAIvmBuv4BssQ1oV/PxxVdNYF7PCC0ZFnTDRdBTDY6A6zAHcAu9nf
vB+KcbWTlCOXqpJ7RzhXlQqrUugakJZkNo4e0YUAAAFZO0d23QAABAMASDBGAiEA
zcvKaoSjhTHBDkwiDUtdlcrbWtWF7nzVOXu9lr6A39QCIQCvdi7G5Lf2V5Rp6hyy
EsAK+2Mq9x/GQukjtfrM90CUdwB3AKS5CZC0GFgUh7sTosxncAo8NZgE+RvfuON3
zQ7IDdwQAAABWTtHdioAAAQDAEgwRgIhAInPwgCa+2PDWQo+lJFu2UWHxwyCe2lg
w9wFjVM6gXJ3AiEAufHeiiQz/yVC//v5l4SMxvvNyvKYQPDf6/Zao2g3wfYAdgDu
S723dc5guuFCaR+r4Z5mow9+X7By2IMAxHuJeqj9ywAAAVk7R3kcAAAEAwBHMEUC
IQCv1xvEaL4wxup86rGUTdATh8Ui07/vjBvI8uc+Fvbc1wIgRe5kpxDNZQNwBFZC
eR8Wbc2X2yV9zI2uDel2HDGNnvcwDQYJKoZIhvcNAQELBQADggEBAH8d8vr922T5
vuMYKy/l9id0K8W4HWn3OpHVfIJc91Hm21XWrDDV6AJFDrusQswNCGD4TsFl68U7
L+RlnBQZ0piDcrNoveMOeW0nMMP96HLS91G2BbwOxQoJWsWpmbeLryMk0lWhBlAN
C3LmCASXjMqbgt4IpAKghz6HjGlMgDLM9B7+BsXV3te4kVdLW7SanSpOz5PCDSLB
Urb4hIbMtMJiiam5eLRLFDByMZoT29hKdgapUbbxBpCOtu0SvSOdp7ArAOLdMNDQ
RLaI7BJP39stYkp6nS0Ayc2Dsq6NEaFumdFt8gTlmhb4WxmTybRsMfSK2ZxQgB4z
OJV1e2ozq2g=
-----END CERTIFICATE-----
Корневой сертификат
-----BEGIN CERTIFICATE-----
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG
A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw
MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT
aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ
jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp
xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp
1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG
snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ
U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8
9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B
AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz
yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE
38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP
AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad
DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME
HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
-----END CERTIFICATE-----
Промежуточный сертификат
-----BEGIN CERTIFICATE-----
MIIEYzCCA0ugAwIBAgILBAAAAAABRE7wPiAwDQYJKoZIhvcNAQELBQAwVzELMAkG
A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw
MDBaFw0yNDAyMjAxMDAwMDBaMGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
YWxTaWduIG52LXNhMTYwNAYDVQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0
aW9uIENBIC0gU0hBMjU2IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQCp3cwOs+IyOd1JIqgTaZOHiOEM7nF9vZCHll1Z8syz0lhXV/lG72wm2DZC
jn4wsy+aPlN7H262okxFHzzTFZMcie089Ffeyr3sBppqKqAZUn9R0XQ5CJ+r69eG
ExWXrjbDVGYOWvKgc4Ux47JkFGr/paKOJLu9hVIVonnu8LXuPbj0fYC82ZA1ZbgX
qa2zmJ+gfn1u+z+tfMIbWTaW2jcyS0tdNQJjjtunz2LuzC7Ujcm9PGqRcqIip3It
INH6yjfaGJjmFiRxJUvE5XuJUgkC/VkrBG7KB4HUs9ra2+PMgKhWBwZ8lgg3nds4
tmI0kWIHdAE42HIw4uuQcSZiwFfzAgMBAAGjggElMIIBITAOBgNVHQ8BAf8EBAMC
AQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU6k581IAt5RWBhiaMgm3A
mKTPlw8wRwYDVR0gBEAwPjA8BgRVHSAAMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8v
d3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMDMGA1UdHwQsMCowKKAmoCSG
Imh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvcm9vdC5jcmwwPQYIKwYBBQUHAQEE
MTAvMC0GCCsGAQUFBzABhiFodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9yb290
cjEwHwYDVR0jBBgwFoAUYHtmGkUNl8qJUC99BM00qP/8/UswDQYJKoZIhvcNAQEL
BQADggEBANdFnqDc4ONhWgt9d4QXLWVagpqNoycqhffJ7+mG/dRHzQFSlsVDvTex
4bjyqdKKEYRxkRWJ3AKdC8tsM4U0KJ4gsrGX3G0LEME8zV/qXdeYMcU0mVwAYVXE
GwJbxeOJyLS4bx448lYm6UHvPc2smU9ZSlctS32ux4j71pg79eXw6ImJuYsDy1oj
H6T9uOr7Lp2uanMJvPzVoLVEgqtEkS5QLlfBQ9iRBIvpES5ftD953x77PzAAi1Pj
tywdO02L3ORkHQRYM68bVeerDL8wBHTk8w4vMDmNSwSMHnVmZkngvkA0x1xaUZK6
EjxS1QSCVS1npd+3lXzuP8MIugS+wEY=
-----END CERTIFICATE-----

@ -1,28 +0,0 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIEyDCCArACAQAwgYIxCzAJBgNVBAYTAlJVMQ8wDQYDVQQIDAZNb3Njb3cxDzAN
BgNVBAcMBk1vc2NvdzEVMBMGA1UECwwMSVREZXBhcnRtZW50MRcwFQYDVQQDDA4q
LnNraWxsLWJveC5ydTEhMB8GCSqGSIb3DQEJARYSYWRtaW5Ac2tpbGwtYm94LnJ1
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzBKLQbxjOT4tn618AMkb
UjcuATjATJNRJ/vcZWtoNER+y8Xh64WyZlXkB3vaRAedmoe5pxYF7gtoATpTgwxh
M7ah2RDbui/ZLgK8MHtjhwhcDVu1iCSeXnlYUuqysnbPDHymYZRVtiBVPkRK7ssh
kIB0CIpAXpjoYyHiVoEqFk/xSrsLveXXgQtzPipzuweVHwwq7KufRJkHPWbAEZBp
wc3QoLgao5khVHTvZuLUMFB9vFGp34AaGkGNbTWDepIn2QviqnWvGqyIshhNv8uu
f++irKZMBLxuh0MnkSkbXYLf5CCcjw04nzPRDsd5ZZFXQyyIOLL2NIYYiIp22q08
2idSjbSXkobwfagH8nc5ljv8Gryqeo22QERI3Fp3bZ/t+gTVzpFjbCYP8c/nusNK
k2vyA/yo/aqou9+EjoIFSrqgdiv/FDYyK0MwWik3VrykqCbgy6MuaSdex4iAKBOl
AzjRmrSi2AF5q3SEaLLhPV1e8HS8z8Z6Xo0EbeEFvLuVeHdukEsPk6167aToNmk0
pC5Ic0hqeeNtgLZfCLUhLzh/AhYW6sTjT620O6mQP/3IiEpEFYk4iGe+TJ81d7P1
1/W7+7VagFL611WBnDafYdxT4OZFKhqpnXW0lWvGK4ROtxNmaaZmsfFwAZVDFvav
sy0G4FLxMiw1CKJNiC4cQjkCAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4ICAQBVuWBe
QHNuT6998V8kBFlWOAhoBr2+bxR6mdL+qiCQTsbAjPemkZiZXp/2uji6Wmf11qMB
dxmPMGiFvXgPsfCcctbxfLqwtJvAo4s0yjCv3N8DISuO56C3WwnAsfF5xoxSDiAa
SvkpQ0TnuSl2cU4x6HsiKWNgILOLs1f+Lf6NlImC6Yz/bkRwn+1RXyjEDqJJz/wN
3Eekb9fPWXnloyOgqF+ESZzZbgZ653+nBUg0OMkeKhA82pC8r83CduQMy08YCwXu
FuHhGWs4AF2xHjwTwKfGjE1E7Ni+Ak5znriCu7o27Kq9UiGMujhKMxOroWxE1wYZ
Z0x2MuhnI3O1+dSnv7+ffDt75C8i4WiYQcgC2d6QD4Rt9SAxvgedkAbn2Xtadn8i
Qg+lGouPLhPjT9wCCTYNI/17MJaBpmrz/q+oEXXjSnFFDEXgbv534ltaVujvbLbV
gMF0beoI0FA6dlLyzHOgiiiyDEyS0znU8Qxfc92S9yD40v8mf0sJBH/mpZmEBO6c
Wlv9sBBrPWtiLUmbOzsv1eD6g4u992yqpJB317HOECjXXhKJCpw1MXr921tvMnyN
v5SCf6jIQXHm6k/Srau1upgOkm1GfJT9NIAzbomUSCiWs+0Iucw7FuH0S5RDIfD2
3/8LVBh9A/6ddAlsndZ4J0bKysjGW9M1LCU2Gg==
-----END CERTIFICATE REQUEST-----

Binary file not shown.

@ -69,11 +69,7 @@ def course(request, slug):
_type = 'exam' _type = 'exam'
waiting_materials.append({'obj': _obj, 'type': _type}) waiting_materials.append({'obj': _obj, 'type': _type})
return { return {'course': journal.get_face(user_fabric(request.user)), 'user': user_fabric(request.user), 'waiting_materials': waiting_materials}
'course': journal.get_face(user_fabric(request.user)),
'user': user_fabric(request.user),
'waiting_materials': waiting_materials
}
@response_decor(template='lesson.html') @response_decor(template='lesson.html')

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save