Скинул все версии кода в 1 - в самом низу версия от bramabrama

remotes/origin/pm_task_31703
Baryshnikov Nikolay 9 years ago
parent 58750c88b5
commit e4449ae18c
  1. 11
      _practice/queue.py
  2. 0
      _tools/__init__.py
  3. 73
      _utils/clean_twice_journals.py
  4. 31
      _utils/get_big_fake_module.py
  5. 3
      _utils/get_report.py
  6. 0
      _utils/reports/__init__.py
  7. 26
      access/migrations/0081_auto_20161008_0222.py
  8. 50
      configs/prov.sh
  9. 51
      configs/skill-box_ssl/private.key
  10. 100
      configs/skill-box_ssl/public.pem
  11. 28
      configs/skill-box_ssl/request.csr
  12. BIN
      configs/skill-box_ssl/skill-box.pfx
  13. BIN
      configs/skillbox_ssl/skillbox.pfx
  14. 28
      journals/migrations/0068_auto_20161008_0222.py
  15. 72
      lms/CourseUpgrade.py
  16. 201
      lms/JournalBoulder.py
  17. 32
      management/migrations/0077_auto_20161007_2216.py
  18. 21
      management/migrations/0078_auto_20161007_2217.py
  19. 26
      management/migrations/0079_auto_20161008_0222.py
  20. 72
      req.txt
  21. 6
      service/urls.py
  22. 63
      static/admin/css/ie.css
  23. 20
      static/admin/js/LICENSE-JQUERY.txt
  24. 10346
      static/admin/js/jquery.js
  25. 4
      static/admin/js/jquery.min.js
  26. 23
      static/admin/js/related-widget-wrapper.js
  27. 275
      templates/mails/sent_out_order.html
  28. 256
      templates/mails/standart.html

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

@ -0,0 +1,73 @@
# 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 courses.models import Course, CourseTheme, Exam, Homework, Lesson
from journals.models import TeacherJ, CourseThemeJ, LessonJ, HomeworkJ, ExamJ
from access.models import User
from lms.tools import show_progress
def check_this(obj, collection):
if not collection.get(obj.material.id):
collection[obj.material.id] = True
else:
obj.delete()
def check_TJ(_course, _user):
try:
_tj = TeacherJ.objects.get(course=_course, student=_user)
except TeacherJ.DoesNotExist:
return None
except TeacherJ.MultipleObjectsReturned:
_tmp = TeacherJ.objects.filter(course=_course, student=_user).order_by('start_date')
_tj = _tmp[0]
for i in _tmp:
if i != _tj:
i.delete()
return _tj
_all = User.objects.all().count()
_n = 0
_about_time = []
for _user in User.objects.all():
_st = datetime.datetime.now()
for _course in Course.objects.all():
_l = dict({i.id: False for i in Lesson.objects.filter(course=_course)})
_h = dict({i.id: False for i in Homework.objects.filter(course=_course)})
_e = dict({i.id: False for i in Exam.objects.filter(course=_course)})
_t = dict({i.id: False for i in CourseTheme.objects.filter(course=_course)})
_tj = check_TJ(_course, _user)
if _tj:
for _cj in CourseThemeJ.objects.filter(parent=_tj):
check_this(_cj, _t)
for _lj in LessonJ.objects.filter(parent__parent=_tj):
check_this(_lj, _l)
for _hj in HomeworkJ.objects.filter(parent__parent=_tj):
check_this(_hj, _h)
for _ej in ExamJ.objects.filter(parent__parent=_tj):
check_this(_ej, _e)
_ft = datetime.datetime.now()
_about_time.append((_ft - _st).microseconds)
_average = (((_all - _n) * (sum(_about_time) / len(_about_time)))/1000000)/60
show_progress(_all, _n, post=' // "Удаление дуближей журналов" // Расчетное оставщееся время Этапа: {0:6.4} мин '.format(_average))
_n += 1
finish = datetime.datetime.now()
print('\nTIME: %s seconds' % (finish - start).seconds)

@ -0,0 +1,31 @@
# coding=utf-8
import django
import sys
import datetime
import os
start = datetime.datetime.now()
sys.path.append("/var/www/projects/codemy/")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
django.setup()
from journals.models import CourseThemeJ
from courses.models import CourseTheme
from finance.models import Bill
_themes = {}
for i in CourseTheme.objects.filter(course__id=20):
_themes[i.sort] = 0
for _j in CourseThemeJ.objects.filter(material=i, parent__progress__gt=1, f_date=None,
success=False).exclude(date=None):
if Bill.objects.filter(user=_j.student, status='F', service__course=20).exists():
_themes[i.sort] += 1
_result = 0
for key, value in _themes.items():
_result += value
print('{0}:{1}'.format(key, value))
print(_result)

@ -0,0 +1,3 @@
# coding=utf-8
# Подключение списка библиотек из папки 'reports'
# Предложение - выбрать файл на исполнение

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.3 on 2016-10-08 02:22
from __future__ import unicode_literals
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('access', '0080_auto_20160926_0804'),
]
operations = [
migrations.AlterField(
model_name='user',
name='delay_date',
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 10, 8, 2, 22, 31, 971980), null=True, verbose_name='Задержка до. Не включая этот день.'),
),
migrations.AlterField(
model_name='user',
name='in_role',
field=models.CharField(choices=[('U', 'Студент школы'), ('T', 'Преподаватель'), ('M', 'Менеджер'), ('S', 'Руководитель'), ('S2', 'Куратор'), ('A', 'Администратор'), ('Ts', 'Тестовый пользователь'), ('F', 'Пользователь свободного счета')], default='U', max_length=2, verbose_name='Роль'),
),
]

@ -0,0 +1,50 @@
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

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

@ -0,0 +1,100 @@
Ваш 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-----

@ -0,0 +1,28 @@
-----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.

@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.3 on 2016-10-08 02:22
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('journals', '0067_auto_20160917_0757'),
]
operations = [
migrations.AlterModelOptions(
name='teacherj',
options={'ordering': ['-id'], 'verbose_name': 'Журнал преподавания', 'verbose_name_plural': 'Журналы проподавания'},
),
migrations.RemoveField(
model_name='teacherj',
name='current_tch',
),
migrations.AlterField(
model_name='examj',
name='date',
field=models.DateTimeField(blank=True, null=True, verbose_name='Дата'),
),
]

@ -0,0 +1,72 @@
# Обновление журналов
# Получить все материалы курса
from courses.models import CourseTheme, Lesson, Exam, Homework, Course, CourseMap
from journals.models import TeacherJ, LessonJ, HomeworkJ, ExamJ
def check_material(_journal, _course_element):
# Проверка существования элемента по материалу и его типу
_type = _course_element['type']
_material = _course_element['obj']
if _type == 'lesson':
return LessonJ.objects.fitler(material=_material, parent__parent=_journal).exists()
elif _type == 'homework':
return HomeworkJ.objects.filter(material=_material, parent__parent=_journal).exists()
elif _type == 'exam':
return ExamJ.objects.filter(material=_material, parent__parent=_journal).exists()
return None
class CourseUpgrade:
def __init__(self, course=None, student=None):
self.course = course if type(course) != int else Course.objects.get(id=course)
self.student = student
self.original_map = {} #{'порядок': {'тип': '', 'Объект курса': ''}}
self._map, c = CourseMap.objects.get_or_create(course=self.course)
self._map_exclude = [] #{'материал': {'kw': {}, 'class': '', 'map': False }} К материалу привязаны его расхождения по всем студентам
if self.course and self.student:
self.main()
def init_original_map(self):
# Создается временная карта с актуальными данными
_sort = 0
for theme in CourseTheme.objects.filter(course=self.course).order_by('sort'):
for __lesson in Lesson.objects.filter(parent=theme).order_by('sort'):
self.original_map_insert('lesson', _sort, __lesson)
for __homework in Homework.objects.filter(parent=theme).order_by('sort'):
self.original_map_insert('homework', _sort, __homework)
for __exam in Exam.objects.filter(parent=theme).order_by('sort'):
self.original_map_insert('exam', _sort, __exam)
def original_map_insert(self, type, sort, obj):
self.original_map[sort] = {'type': type, 'obj': obj}
def check_map_element(self, _original_map_element, _sort):
# Сравнение карты курса и оригинальной карты
kw = {_original_map_element['type']: _original_map_element['obj'], 'sort': _sort}
try:
CourseMap.objects.get(**kw)
except CourseMap.DoesNotExist:
return False
else:
return True
def check_journals(self, _course_element):
# Проверка всех журналов на наличие конкретного материала
kw = {'course': self.course}
if self.student: kw['student'] = self.student
for journal in TeacherJ.objects.filter(**kw).order_by('-id'):
check_material(journal, _course_element)
def main(self):
# Запуск глобальной проверки
# Создание временной карты
self.init_original_map()
# Поиск пустых элементов карты - где не существует CourseMap. В результате - заполняется _map_exclude
# Поиск по пустым элементам _map_exclude в журналах

@ -0,0 +1,201 @@
# coding=utf-8
import os
import django
import sys
import datetime
sys.path.append("/var/www/projects/codemy/")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
django.setup()
from journals.models import CourseMap, LessonJ, TeacherJ, HomeworkTry
from lms.tools import show_progress
_NEED_OPEN = None # LessonJ.objects.get(material__id='684', student__email='alexandersvinin@gmail.com')
_TEACHERJ_FILTER = {'progress__gte': 0, 'student__email': 's.donyushko@gmail.com'}
_TEACHERJ_EXCLUDE = {'teacher': None}
_READL_FILTER = {'f_date': None}
_READL_EXCLUDE = {'date': None}
_SUCCESSL_FILTER = {'success': True}
_SUCCESSL_EXCLUDE = {'date': None}
def get_all_journals():
return TeacherJ.objects.filter(**_TEACHERJ_FILTER).exclude(**_TEACHERJ_EXCLUDE).order_by('id')
def get_all_journals_count():
return TeacherJ.objects.filter(**_TEACHERJ_FILTER).exclude(**_TEACHERJ_EXCLUDE).count()
def get_last_lessons(__journal):
# Получить последний читаемый уроки и выполненный
_READL_FILTER['student'] = __journal.student
_READL_FILTER['material__course'] = __journal.course
_SUCCESSL_FILTER['student'] = __journal.student
_SUCCESSL_FILTER['material__course'] = __journal.course
return (LessonJ.objects.filter(**_READL_FILTER).exclude(**_READL_EXCLUDE).order_by('id').last(),
LessonJ.objects.filter(**_SUCCESSL_FILTER).exclude(**_SUCCESSL_EXCLUDE).order_by('id').last())
def open_lesson_befor_this(_lessonJ):
# Погружается объект последнего журнала урока
# Получаем все уроки этого журнала
_map = CourseMap.objects.get(lesson=_lessonJ.material)
for i in CourseMap.objects.filter(course=_map.course).exclude(lesson=None):
if i.sort < _map.sort:
try:
_j = LessonJ.objects.get(
material__token=i.token,
student=_lessonJ.student,
material__course=i.course
)
except LessonJ.DoesNotExist as e:
print(e)
else:
check_to_success(_j)
def check_to_access(_journal):
# Проверка материала на доступ в прохождению
_journal.open_material()
def check_to_success(_journal):
# Проверка материала на завершенность
_journal.saw_this()
def check_lesson_after_hw(__journal, _target):
# Проверить - доступны ли уроки до ДЗ со статусом success
# Проверить - доступны ли видео до ДЗ не блокированного или пройденного
_last = HomeworkTry.objects.filter(
student=__journal.student,
material__course=__journal.course
).order_by('id').last()
# Если стутс - success
_candidate = None
if _last:
try:
_candidate = CourseMap.objects.get(
sort=int(
CourseMap.objects.get(token=_last.material.token).sort
) + 1,
course=__journal.course
)
except CourseMap.DoesNotExist:
print('Ошибка получения карты журнала')
else:
# Проверить - доступен ли журнал для чтения
if _candidate.lesson:
__candidate = LessonJ.objects.get(
material__token=_candidate.token,
student=_target.student,
material__course=__journal.course
)
check_to_access(__candidate)
if _candidate and _candidate.lesson and \
int(CourseMap.objects.get(
token=_target.material.token,
course=__journal.course).sort) \
< int(_candidate.sort):
_target = LessonJ.objects.get(
material__token=_candidate.token,
student=_target.student,
material__course=__journal.course)
print('Цель изменена: %s' % _target.material.title)
return _target
def main():
start = datetime.datetime.now()
_ERRORS = set()
_WARNING = set()
# for i in open('error.log'):
# _ERRORS.add(i.strip())
_GOOD = 0
_now = 0
big = []
if _NEED_OPEN:
open_lesson_befor_this(_NEED_OPEN)
else:
if not _ERRORS:
_journals = get_all_journals()
_jcount = get_all_journals_count()
print('Количество журналов на проверку: %s' % _jcount)
else:
_journals = list([i for i in TeacherJ.objects.filter(student__email__in=_ERRORS)])
_jcount = len(_journals)
print('Журналы с ошибками: %s' % _jcount)
for __journal in _journals:
_start = datetime.datetime.now()
show_progress(_jcount, _now)
print('\nЖурнал: %s' % __journal.student.email)
try:
read, success = get_last_lessons(__journal)
except Exception as e:
print('!!! Ошибка обработки')
print(e)
if __journal.course.id == 20:
_WARNING.add(__journal.student.email)
_ERROR_MAILS = open('error.log', 'a+')
_ERROR_MAILS.write('%s\n' % __journal.student.email)
_ERROR_MAILS.close()
else:
print(
'%s // %s' % (read.material.title if read else ' - ', success.material.title if success else ' - '))
if not success and read:
_target = read
elif read and (int(CourseMap.objects.get(lesson=read.material).sort) > int(
CourseMap.objects.get(lesson=success.material).sort)):
_target = read
elif success:
_target = success
else:
_target = None
if _target:
open_lesson_befor_this(check_lesson_after_hw(__journal, _target))
_GOOD += 1
_now += 1
_finish = datetime.datetime.now()
_time_result = (_finish - _start).seconds
print('\nTIME: %s seconds' % _time_result)
if int(_time_result) > 1:
big.append(__journal.student.email)
print('Добавлено на проверку')
print('===========\n')
finish = datetime.datetime.now()
print('\nTIME: %s seconds' % (finish - start).seconds)
print('Нужно обратить внимание:')
for i in _WARNING:
print(i)
# print('Самые длительные записи:')
# print(big)
if _ERRORS:
if _GOOD == _now:
print('Все ошибки исправлены')
else:
print('Количество ошибок: %s' % int(_now - _GOOD))
if __name__ == '__main__':
main()

@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.3 on 2016-10-07 22:16
from __future__ import unicode_literals
import datetime
from django.db import migrations, models
import precise_bbcode.fields
class Migration(migrations.Migration):
dependencies = [
('management', '0076_auto_20160924_0154'),
]
operations = [
migrations.AddField(
model_name='comment',
name='_bbtext_rendered',
field=models.TextField(blank=True, editable=False, null=True),
),
migrations.AddField(
model_name='comment',
name='bbtext',
field=precise_bbcode.fields.BBCodeTextField(default='', no_rendered_field=True, verbose_name='BB Текст'),
),
migrations.AlterField(
model_name='modalstack',
name='date',
field=models.DateTimeField(default=datetime.datetime(2016, 10, 7, 22, 16, 46, 983240), verbose_name='Дата создания записи'),
),
]

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.3 on 2016-10-07 22:17
from __future__ import unicode_literals
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('management', '0077_auto_20161007_2216'),
]
operations = [
migrations.AlterField(
model_name='modalstack',
name='date',
field=models.DateTimeField(default=datetime.datetime(2016, 10, 7, 22, 17, 40, 849116), verbose_name='Дата создания записи'),
),
]

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.3 on 2016-10-08 02:22
from __future__ import unicode_literals
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('management', '0078_auto_20161007_2217'),
]
operations = [
migrations.AddField(
model_name='comment',
name='status',
field=models.CharField(choices=[('G', 'Одобрено'), ('F', 'Отклонено'), ('A', 'Сообщение от администрации'), ('T', 'Техническое обращение'), ('S', 'Комментарий')], default='S', max_length=1, verbose_name='Статус сообщения'),
),
migrations.AlterField(
model_name='modalstack',
name='date',
field=models.DateTimeField(default=datetime.datetime(2016, 10, 8, 2, 22, 31, 988825), verbose_name='Дата создания записи'),
),
]

@ -0,0 +1,72 @@
Babel==2.3.4
Django==1.9.3
Jinja2==2.8
Markdown==2.6.7
MarkupSafe==0.23
Pillow==3.3.0
Pygments==2.1.3
amqp==1.4.9
anyjson==0.3.3
billiard==3.3.0.23
celery==3.1.23
contextlib2==0.5.4
cycler==0.10.0
decorator==4.0.10
diff-match-patch==20110725.1
django-admin-tools==0.8.0
django-celery==3.1.17
django-import-export==0.4.5
django-jet==1.0.1
django-precise-bbcode==1.2.6
django-uwsgi==0.1.3
django-wysiwyg-redactor==0.4.9
entrypoints==0.2.2
flower==0.9.1
google-api-python-client==1.5.3
html2bbcode==2.3.2
httplib2==0.9.2
ipykernel==4.5.0
ipython==5.1.0
ipython-genutils==0.1.0
ipywidgets==5.2.2
jsonschema==2.5.1
jupyter==1.0.0
jupyter-client==4.4.0
jupyter-console==5.0.0
jupyter-core==4.2.0
kombu==3.0.35
matplotlib==1.5.3
mistune==0.7.3
nbconvert==4.2.0
nbformat==4.1.0
notebook==4.2.3
numpy==1.11.2
oauth2client==3.0.0
pexpect==4.2.0
pickleshare==0.7.4
prompt-toolkit==1.0.5
psycopg2==2.6.2
ptyprocess==0.5.1
pyasn1==0.1.9
pyasn1-modules==0.0.8
pyparsing==2.1.10
python-dateutil==2.5.3
pytz==2016.6.1
pyzmq==16.0.0
qtconsole==4.2.1
raven==5.24.3
requests==2.11.0
rsa==3.4.2
simplegeneric==0.8.1
simplejson==3.8.2
six==1.10.0
tablib==0.11.2
terminado==0.6
tornado==4.2
traitlets==4.2.2
uWSGI==2.0.13.1
uritemplate==0.6
urllib3==1.17
wcwidth==0.1.7
widgetsnbextension==1.2.6
xlwt==1.1.2

@ -0,0 +1,6 @@
from management import api, views, reports
from django.conf.urls import url
urlpatterns = [
url(r'mail/([0-9]{1,99})$', views.news),
]

@ -0,0 +1,63 @@
/* IE 6 & 7 */
/* Proper fixed width for dashboard in IE6 */
.dashboard #content {
*width: 768px;
}
.dashboard #content-main {
*width: 535px;
}
/* IE 6 ONLY */
/* Keep header from flowing off the page */
#container {
_position: static;
}
/* Put the right sidebars back on the page */
.colMS #content-related {
_margin-right: 0;
_margin-left: 10px;
_position: static;
}
/* Put the left sidebars back on the page */
.colSM #content-related {
_margin-right: 10px;
_margin-left: -115px;
_position: static;
}
.form-row {
_height: 1%;
}
/* Fix right margin for changelist filters in IE6 */
#changelist-filter ul {
_margin-right: -10px;
}
/* IE ignores min-height, but treats height as if it were min-height */
.change-list .filtered {
_height: 400px;
}
/* IE doesn't know alpha transparency in PNGs */
.inline-deletelink {
background: transparent url(../img/inline-delete-8bit.png) no-repeat;
}
/* IE7 doesn't support inline-block */
.change-list ul.toplinks li {
zoom: 1;
*display: inline;
}

@ -0,0 +1,20 @@
Copyright (c) 2010 John Resig, http://jquery.com/
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -0,0 +1,23 @@
django.jQuery(function($){
function updateLinks() {
var $this = $(this);
var siblings = $this.nextAll('.change-related, .delete-related');
if (!siblings.length) return;
var value = $this.val();
if (value) {
siblings.each(function(){
var elm = $(this);
elm.attr('href', elm.attr('data-href-template').replace('__fk__', value));
});
} else siblings.removeAttr('href');
}
var container = $(document);
container.on('change', '.related-widget-wrapper select', updateLinks);
container.find('.related-widget-wrapper select').each(updateLinks);
container.on('click', '.related-widget-wrapper-link', function(event){
if (this.href) {
showRelatedObjectPopup(this);
}
event.preventDefault();
});
});

@ -0,0 +1,275 @@
<!DOCTYPE html>
<!-- saved from url=(0039)file:///home/bigboy/Downloads/form.html -->
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width">
<meta name="HandheldFriendly" content="true">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--[if gte IE 7]><html class="ie8plus" xmlns="http://www.w3.org/1999/xhtml"><![endif]-->
<!--[if IEMobile]><html class="ie8plus" xmlns="http://www.w3.org/1999/xhtml"><![endif]-->
<meta name="format-detection" content="telephone=no">
<meta name="generator" content="EDMdesigner, www.edmdesigner.com">
<title>{{ TITLE }}</title>
<style type="text/css" media="screen">
* {line-height: inherit;}
.ExternalClass * { line-height: 100%; }
body, p{padding:0;
margin: 0;
-webkit-text-size-adjust:none; -ms-text-size-adjust:none;} img{line-height:100%; outline:none; text-decoration:none; -ms-interpolation-mode: bicubic;} a img{border: none;} #backgroundTable {margin:0; padding:0; width:100% !important; } a, a:link, .no-detect-local a, .appleLinks a{color:#5555ff !important; text-decoration: underline;} .ExternalClass {display: block !important; width:100%;} .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div { line-height: inherit; } table td {border-collapse:collapse;mso-table-lspace: 0pt; mso-table-rspace: 0pt;} sup{position: relative; top: 4px; line-height:7px !important;font-size:11px !important;} .mobile_link a[href^="tel"], .mobile_link a[href^="sms"] {text-decoration: default; color: #5555ff !important; pointer-events: auto; cursor: default;} .no-detect a{text-decoration: none; color: #5555ff; pointer-events: auto; cursor: default;} {color: #5555ff;} span {color: inherit; border-bottom: none;} span:hover { background-color: transparent; }
.nounderline {text-decoration: none !important;}
h1, h2, h3 { margin:0; padding:0; }
p {Margin: 0px !important; }
table[class="email-root-wrapper"] { width: 600px !important; }
body {
background: #22b1ff url('{{ DOMAIN }}/static/img/mails/536.jpg') no-repeat center bottom;
}
body { min-width: 280px; width: 100%;}
</style>
<style>
@media only screen and (min-width: 600px) {
}
@media only screen and (max-width: 599px),
only screen and (max-device-width: 599px),
only screen and (max-width: 400px),
only screen and (max-device-width: 400px) {
.email-root-wrapper { width: 100% !important; }
table[class="email-root-wrapper"] { width: 100% !important; }
td[class="wrap"] .full-width { width: 100% !important; height: auto !important;}
td[class="wrap"] .fullwidthhalfleft {width:100% !important;}
td[class="wrap"] .fullwidthhalfright {width:100% !important;}
td[class="wrap"] .fullwidthhalfinner {width:100% !important; margin: 0 auto !important; float: none !important;
clear:both !important; }
td[class="wrap"] .hide { display:none !important; width:0;height:0; overflow:hidden; }
}
@media yahoo{
table {float: none !important;height:auto; }
table[align="left"] {float:left !important; }
td[align="left"] {float:left !important;height:auto; }
table[align="center"] {margin:0 auto; }
td[align="center"] {margin:0 auto;height:auto; }
table[align="right"] {float:right !important; }
td[align="right"] {float:right !important;height:auto; }
}
</style>
<!--[if (gte IE 7) & (vml)]>
<style type="text/css">
html, body {margin:0 !important; padding:0px !important;}
img.full-width { position: relative !important; }
.img134x37 { width: 134px !important; height: 37px !important;}
.img287x74 { width: 287px !important; height: 74px !important;}
</style>
<![endif]-->
<!--[if gte mso 9]>
<style type="text/css">
table, td {
border-collapse: collapse !important;
mso-table-lspace: 0px !important;
mso-table-rspace: 0px !important;
}
.email-root-wrapper { width 600px !important;}
.imglink { font-size: 0px; }
.edm_button { font-size: 0px; }
</style>
<![endif]-->
<!--[if gte mso 15]>
<style type="text/css">
table {
font-size:0px;
mso-margin-top-alt:0px;
}
.fullwidthhalfleft {
width: 49% !important;
float:left !important;
}
.fullwidthhalfright {
width: 50% !important;
float:right !important;
}
</style>
<![endif]-->
<style type="text/css" media="(pointer) and (min-color-index:0)">
html, body {background-image: none !important; background-color: transparent !important; margin:0 !important; padding:0 !important;}
</style>
</head>
<body leftmargin="0" marginwidth="0" topmargin="0" marginheight="0" offset="0" background="{{ DOMAIN }}/static/img/mails/536.jpg" bgcolor="#22b1ff" style="font-family:Arial, sans-serif; font-size:0px;margin:0;padding:0; background: #22b1ff url('{{ DOMAIN }}/static/img/mails/body_background.jpg') no-repeat center bottom !important;">
<!--[if t]><![endif]--><!--[if t]><![endif]--><!--[if t]><![endif]--><!--[if t]><![endif]--><!--[if t]><![endif]--><!--[if t]><![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" background="{{ DOMAIN }}/static/img/mails/536.jpg" style="background: transparent url('{{ DOMAIN }}/static/img/mails/body_background.jpg') no-repeat center bottom !important;" height="100%" width="100%" id="backgroundTable">
<tbody><tr>
<td class="wrap" align="center" valign="top" width="100%">
<center>
<!-- content -->
<div style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" width="600" align="center" class="email-root-wrapper" style="max-width: 600px; min-width: 240px; margin: 0 auto;">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" width="100%">
<tbody><tr><td align="center" style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" align="center">
<tbody><tr><td valign="top" align="center" style="padding-top: 10px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="134" height="37" style="border: 0px none; height: auto;">
<tbody><tr><td valign="top" style="padding: 0px;"><a href="http://skillbox.ru/" target="_blank" class="imglink"><img src="{{ DOMAIN }}/static/img/mails/727.png" width="134" height="37" alt="" border="0" class="img134x37" style="display: block;"></a></td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" width="600" align="center" class="email-root-wrapper" style="max-width: 600px; min-width: 240px; margin: 0 auto;">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="100%" bgcolor="#ffffff" style="border: 0px none; background-color: #ffffff;">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" width="100%">
<tbody><tr><td style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding-top: 20px; padding-right: 30px; padding-bottom: 5px; padding-left: 30px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top"><div style="text-align: left; font-family: Helvetica, Helvetica Neue, Arial; font-size: 14px; color: #000000; line-height: 14px; mso-line-height: exactly; vertical-align: middle;"><h1 style="font-family:Helvetica, Helvetica Neue, Arial; font-size: 20px; color: #000000; line-height: 32px; mso-line-height: exactly; vertical-align:middle;padding: 0; margin: 0;">Пришла очередная заявка</h1><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">&nbsp;</p>
<p style="padding: 0; margin: 0;">&nbsp;</p>
<p style="padding: 0; margin: 0;"><span style="color:#808080;">Состав: </span>{{ TITLE }}</p>
<p style="padding: 0; margin: 0;">&nbsp;</p>
{% if USER_NAME %}
<p style="padding: 0; margin: 0;"><span style="color:#808080;">Имя: </span>{{ USER_NAME }}</p>
<p style="padding: 0; margin: 0;">&nbsp;</p>
{% endif %}
{% if EMAIL %}
<p style="padding: 0; margin: 0;"><span style="color:#808080;">Почта: </span>{{ EMAIL }}</p>
<p style="padding: 0; margin: 0;">&nbsp;</p>
{% endif %}
{% if PHONE %}
<p style="padding: 0; margin: 0;"><span style="color:#808080;">Телефон: </span>{{ PHONE }}</p>
<p style="padding: 0; margin: 0;">&nbsp;</p>
{% endif %}
{% if HOST %}
<p style="padding: 0; margin: 0;"><span style="color:#808080;">Источник: </span>{{ HOST }}</p>
<p style="padding: 0; margin: 0;">&nbsp;</p>
{% endif %}
</div></td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding-top: 40px; padding-right: 50px; padding-bottom: 5px; padding-left: 30px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top"><div style="text-align: left; font-family: Helvetica, Helvetica Neue, Arial; font-size: 14px; color: #000000; line-height: 14px; mso-line-height: exactly; vertical-align: middle;"><h1 style="font-family:Helvetica, Helvetica Neue, Arial; font-size: 20px; color: #000000; line-height: 32px; mso-line-height: exactly; vertical-align:middle;padding: 0; margin: 0;"> </h1><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">Пожалуйста, по любым вопросам смело <span style="font-size:14px;"><strong>звоните по номеру 8 495 120-40-96 </strong><span style="color:#808080;">(с 10:00 до 19:00 по Москве)</span><strong> или пишите на <a style="color: #22b1ff !important; text-decoration: underline !important;" target="_blank"><span style=" color:#22b1ff;">support@skill-box.ru</span></a></strong></span></p></div></td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style=""><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding-top: 10px; padding-right: 50px; padding-bottom: 32px; padding-left: 54px;"><table cellpadding="0" cellspacing="0" width="100%">
<tbody><tr><td style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style=""><table cellpadding="0" cellspacing="0" border="0" width="100%" style="border-top: 2px solid #e8e8e8;">
<tbody><tr><td valign="top" style=""><table cellpadding="0" cellspacing="0" width="100%">
<tbody><tr><td style="padding: 0px;"></td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding-top: 5px; padding-right: 5px; padding-bottom: 46px; padding-left: 5px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top"><div style="text-align: left; font-family: arial; font-size: 14px; color: #000000; line-height: 18px; mso-line-height: exactly; vertical-align: middle;"><p style="padding: 0; margin: 0;text-align: center;">&nbsp;</p><p style="padding: 0; margin: 0;text-align: center;"><span style="font-size: 14px; font-family: tahoma; color: rgb(136, 136, 136);">с ♥, команда SkillBox</span></p><p style="padding: 0; margin: 0;text-align: center;"><span style="font-family:tahoma;"><a href="http://skillbox.ru/" target="_blank" style="color: #22a8f2 !important; text-decoration: underline !important;"><span style=" color:#22a8f2;">Перейти на наш сайт</span></a></span></p></div></td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="100%" style="border: 0px none; background: url('{{ DOMAIN }}/static/img/mails/522.png') no-repeat center;">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" width="100%">
<tbody><tr><td style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding-top: 30px; padding-right: 5px; padding-bottom: 26px; padding-left: 30px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top"><div style="text-align: left; font-family: arial; font-size: 14px; color: #a1a1a1; line-height: 18px; mso-line-height: exactly; vertical-align: middle;"><p style="padding: 0; margin: 0;"><span style="font-size:12px;">Офис: Москва, ул. Бауманская, д. 11</span></p><p style="padding: 0; margin: 0;"><span style="font-size:12px;">8 495 120-40-96 (с 10 до 19 по Москве)</span></p></div></td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" width="600" align="center" class="email-root-wrapper" style="max-width: 600px; min-width: 240px; margin: 0 auto;">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding-top: 0px; padding-right: 5px; padding-bottom: 100px; padding-left: 160px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top"><div style="text-align: left; font-family: arial; font-size: 14px; color: #000000; line-height: 14px; mso-line-height: exactly; vertical-align: middle;"> </div></td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</div>
<!-- content end -->
</center>
</td>
</tr>
</tbody></table>
</body></html>

@ -0,0 +1,256 @@
<!DOCTYPE html>
<!-- saved from url=(0039)file:///home/bigboy/Downloads/form.html -->
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width">
<meta name="HandheldFriendly" content="true">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--[if gte IE 7]><html class="ie8plus" xmlns="http://www.w3.org/1999/xhtml"><![endif]-->
<!--[if IEMobile]><html class="ie8plus" xmlns="http://www.w3.org/1999/xhtml"><![endif]-->
<meta name="format-detection" content="telephone=no">
<meta name="generator" content="EDMdesigner, www.edmdesigner.com">
<title>asd</title>
<style type="text/css" media="screen">
* {line-height: inherit;}
.ExternalClass * { line-height: 100%; }
body, p{margin:0; padding:0; margin-bottom:0; -webkit-text-size-adjust:none; -ms-text-size-adjust:none;} img{line-height:100%; outline:none; text-decoration:none; -ms-interpolation-mode: bicubic;} a img{border: none;} #backgroundTable {margin:0; padding:0; width:100% !important; } a, a:link, .no-detect-local a, .appleLinks a{color:#5555ff !important; text-decoration: underline;} .ExternalClass {display: block !important; width:100%;} .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div { line-height: inherit; } table td {border-collapse:collapse;mso-table-lspace: 0pt; mso-table-rspace: 0pt;} sup{position: relative; top: 4px; line-height:7px !important;font-size:11px !important;} .mobile_link a[href^="tel"], .mobile_link a[href^="sms"] {text-decoration: default; color: #5555ff !important; pointer-events: auto; cursor: default;} .no-detect a{text-decoration: none; color: #5555ff; pointer-events: auto; cursor: default;} {color: #5555ff;} span {color: inherit; border-bottom: none;} span:hover { background-color: transparent; }
.nounderline {text-decoration: none !important;}
h1, h2, h3 { margin:0; padding:0; }
p {Margin: 0px !important; }
table[class="email-root-wrapper"] { width: 600px !important; }
body {
background-color: #22b1ff;
background-image: url({{ DOMAIN }}static/img/mails/536.jpg);
background-position: center bottom;
background-repeat: no-repeat;
background: #22b1ff url({{ DOMAIN }}static/img/mails/536.jpg) center bottom no-repeat;
}
body { min-width: 280px; width: 100%;}
</style>
<style>
@media only screen and (min-width: 600px) {
}
@media only screen and (max-width: 599px),
only screen and (max-device-width: 599px),
only screen and (max-width: 400px),
only screen and (max-device-width: 400px) {
.email-root-wrapper { width: 100% !important; }
table[class="email-root-wrapper"] { width: 100% !important; }
td[class="wrap"] .full-width { width: 100% !important; height: auto !important;}
td[class="wrap"] .fullwidthhalfleft {width:100% !important;}
td[class="wrap"] .fullwidthhalfright {width:100% !important;}
td[class="wrap"] .fullwidthhalfinner {width:100% !important; margin: 0 auto !important; float: none !important; margin-left: auto !important; margin-right: auto !important; clear:both !important; }
td[class="wrap"] .hide { display:none !important; width:0px;height:0px; overflow:hidden; }
}
@media yahoo{
table {float: none !important;height:auto; }
table[align="left"] {float:left !important; }
td[align="left"] {float:left !important;height:auto; }
table[align="center"] {margin:0 auto; }
td[align="center"] {margin:0 auto;height:auto; }
table[align="right"] {float:right !important; }
td[align="right"] {float:right !important;height:auto; }
}
</style>
<!--[if (gte IE 7) & (vml)]>
<style type="text/css">
html, body {margin:0 !important; padding:0px !important;}
img.full-width { position: relative !important; }
.img134x37 { width: 134px !important; height: 37px !important;}
.img287x74 { width: 287px !important; height: 74px !important;}
</style>
<![endif]-->
<!--[if gte mso 9]>
<style type="text/css">
table, td {
border-collapse: collapse !important;
mso-table-lspace: 0px !important;
mso-table-rspace: 0px !important;
}
.email-root-wrapper { width 600px !important;}
.imglink { font-size: 0px; }
.edm_button { font-size: 0px; }
</style>
<![endif]-->
<!--[if gte mso 15]>
<style type="text/css">
table {
font-size:0px;
mso-margin-top-alt:0px;
}
.fullwidthhalfleft {
width: 49% !important;
float:left !important;
}
.fullwidthhalfright {
width: 50% !important;
float:right !important;
}
</style>
<![endif]-->
<style type="text/css" media="(pointer) and (min-color-index:0)">
html, body {background-image: none !important; background-color: transparent !important; margin:0 !important; padding:0 !important;}
</style>
</head>
<body leftmargin="0" marginwidth="0" topmargin="0" marginheight="0" offset="0" background="/static/img/mails/536.jpg" bgcolor="#22b1ff" style="font-family:Arial, sans-serif; font-size:0px;margin:0;padding:0; background-image: url({{ DOMAIN }}static/img/mails/body_background.jpg); background-position: center bottom; background-repeat: no-repeat; background: #22b1ff url({{ DOMAIN }}static/img/mails/body_background.jpg) center bottom no-repeat !important;">
<!--[if t]><![endif]--><!--[if t]><![endif]--><!--[if t]><![endif]--><!--[if t]><![endif]--><!--[if t]><![endif]--><!--[if t]><![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" background="/static/img/mails/536.jpg" style="background-image: url({{ DOMAIN }}static/img/mails/body_background.jpg); background-position: center bottom; background-repeat: no-repeat; background: transparent url({{ DOMAIN }}static/img/mails/body_background.jpg) center bottom no-repeat !important;" height="100%" width="100%" id="backgroundTable">
<tbody><tr>
<td class="wrap" align="center" valign="top" width="100%">
<center>
<!-- content -->
<div style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" width="600" align="center" class="email-root-wrapper" style="max-width: 600px; min-width: 240px; margin: 0 auto;">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" width="100%">
<tbody><tr><td align="center" style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" align="center">
<tbody><tr><td valign="top" align="center" style="padding-top: 10px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="134" height="37" style="border: 0px none; height: auto;">
<tbody><tr><td valign="top" style="padding: 0px;"><a href="http://skillbox.ru/" target="_blank" class="imglink"><img src="{{ DOMAIN }}static/img/mails/727.png" width="134" height="37" alt="" border="0" class="img134x37" style="display: block;"></a></td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" width="600" align="center" class="email-root-wrapper" style="max-width: 600px; min-width: 240px; margin: 0 auto;">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="100%" bgcolor="#ffffff" style="border: 0px none; background-color: #ffffff;">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" width="100%">
<tbody><tr><td style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding-top: 20px; padding-right: 30px; padding-bottom: 5px; padding-left: 30px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody>
<tr><td valign="top"><div style="text-align: left; font-family: Helvetica, Helvetica Neue, Arial; font-size: 14px; color: #000000; line-height: 14px; mso-line-height: exactly; vertical-align: middle;"><h1 style="font-family:Helvetica, Helvetica Neue, Arial; font-size: 20px; color: #000000; line-height: 32px; mso-line-height: exactly; vertical-align:middle;padding: 0; margin: 0;">{{ USER }}, вам выставлен счет для оплаты.</h1><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;"><span style="color:#808080;">Состав заказа: </span>{{ SERVICE }}</p><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;"><span style="color:#808080;">Сумма для оплаты: </span>{{ PRICE }} руб.</p><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">Чтобы выбрать способ оплаты и оплатить данный счет, воспользуйтесь ссылкой: <a href="{{ LINK }}" style="color: #22a8f2 !important; text-decoration: underline !important;" target="_blank"><font style=" color:#22a8f2;">{{ LINK }}</font></a></p><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">или кнопкой ниже</p><p style="padding: 0; margin: 0;">&nbsp;</p></div></td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding-top: 40px; padding-right: 50px; padding-bottom: 5px; padding-left: 30px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top"><div style="text-align: left; font-family: Helvetica, Helvetica Neue, Arial; font-size: 14px; color: #000000; line-height: 14px; mso-line-height: exactly; vertical-align: middle;"><h1 style="font-family:Helvetica, Helvetica Neue, Arial; font-size: 20px; color: #000000; line-height: 32px; mso-line-height: exactly; vertical-align:middle;padding: 0; margin: 0;"> </h1><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">Пожалуйста, по любым вопросам смело <span style="font-size:14px;"><strong>звоните по номеру 8 495 120-40-96 </strong><span style="color:#808080;">(с 10:00 до 19:00 по Москве)</span><strong> или пишите на <a href="mailto:support@skill-box.ru" style="color: #22b1ff !important; text-decoration: underline !important;" target="_blank"><font style=" color:#22b1ff;">support@skill-box.ru</font></a></strong></span></p><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">&nbsp;</p></div></td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style=""><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding-top: 10px; padding-right: 50px; padding-bottom: 32px; padding-left: 54px;"><table cellpadding="0" cellspacing="0" width="100%">
<tbody><tr><td style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style=""><table cellpadding="0" cellspacing="0" border="0" width="100%" style="border-top: 2px solid #e8e8e8;">
<tbody><tr><td valign="top" style=""><table cellpadding="0" cellspacing="0" width="100%">
<tbody><tr><td style="padding: 0px;"></td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding-top: 5px; padding-right: 5px; padding-bottom: 46px; padding-left: 5px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top"><div style="text-align: left; font-family: arial; font-size: 14px; color: #000000; line-height: 18px; mso-line-height: exactly; vertical-align: middle;"><p style="padding: 0; margin: 0;text-align: center;">&nbsp;</p><p style="padding: 0; margin: 0;text-align: center;"><span style="font-size: 14px; font-family: tahoma; color: rgb(136, 136, 136);">с ♥, команда SkillBox</span></p><p style="padding: 0; margin: 0;text-align: center;"><span style="font-family:tahoma;"><a href="http://skillbox.ru/" target="_blank" style="color: #22a8f2 !important; text-decoration: underline !important;"><font style=" color:#22a8f2;">Перейти на наш сайт</font></a></span></p></div></td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="100%" style="border: 0px none; background-image: url({{ DOMAIN }}static/img/mails/522.png); background-repeat: no-repeat ; background-position: center;">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" width="100%">
<tbody><tr><td style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding-top: 30px; padding-right: 5px; padding-bottom: 26px; padding-left: 30px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top"><div style="text-align: left; font-family: arial; font-size: 14px; color: #a1a1a1; line-height: 18px; mso-line-height: exactly; vertical-align: middle;"><p style="padding: 0; margin: 0;"><span style="font-size:12px;">Офис: Москва, ул. Бауманская, д. 11</span></p><p style="padding: 0; margin: 0;"><span style="font-size:12px;">8 495 120-40-96 (с 10 до 19 по Москве)</span></p></div></td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" width="600" align="center" class="email-root-wrapper" style="max-width: 600px; min-width: 240px; margin: 0 auto;">
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding-top: 0px; padding-right: 5px; padding-bottom: 100px; padding-left: 160px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top"><div style="text-align: left; font-family: arial; font-size: 14px; color: #000000; line-height: 14px; mso-line-height: exactly; vertical-align: middle;"> </div></td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</div>
<!-- content end -->
</center>
</td>
</tr>
</tbody></table>
</body></html>
Loading…
Cancel
Save