parent
58750c88b5
commit
e4449ae18c
28 changed files with 11818 additions and 0 deletions
@ -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.
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;"> </p><p style="padding: 0; margin: 0;"> </p> |
||||
<p style="padding: 0; margin: 0;"> </p> |
||||
<p style="padding: 0; margin: 0;"><span style="color:#808080;">Состав: </span>{{ TITLE }}</p> |
||||
<p style="padding: 0; margin: 0;"> </p> |
||||
{% if USER_NAME %} |
||||
<p style="padding: 0; margin: 0;"><span style="color:#808080;">Имя: </span>{{ USER_NAME }}</p> |
||||
<p style="padding: 0; margin: 0;"> </p> |
||||
{% endif %} |
||||
{% if EMAIL %} |
||||
<p style="padding: 0; margin: 0;"><span style="color:#808080;">Почта: </span>{{ EMAIL }}</p> |
||||
<p style="padding: 0; margin: 0;"> </p> |
||||
{% endif %} |
||||
{% if PHONE %} |
||||
<p style="padding: 0; margin: 0;"><span style="color:#808080;">Телефон: </span>{{ PHONE }}</p> |
||||
<p style="padding: 0; margin: 0;"> </p> |
||||
{% endif %} |
||||
{% if HOST %} |
||||
<p style="padding: 0; margin: 0;"><span style="color:#808080;">Источник: </span>{{ HOST }}</p> |
||||
<p style="padding: 0; margin: 0;"> </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;"> </p><p style="padding: 0; margin: 0;"> </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;"> </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;"> </p><p style="padding: 0; margin: 0;"> </p><p style="padding: 0; margin: 0;"> </p><p style="padding: 0; margin: 0;"><span style="color:#808080;">Состав заказа: </span>{{ SERVICE }}</p><p style="padding: 0; margin: 0;"> </p><p style="padding: 0; margin: 0;"><span style="color:#808080;">Сумма для оплаты: </span>{{ PRICE }} руб.</p><p style="padding: 0; margin: 0;"> </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;"> </p><p style="padding: 0; margin: 0;">или кнопкой ниже</p><p style="padding: 0; margin: 0;"> </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;"> </p><p style="padding: 0; margin: 0;"> </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;"> </p><p style="padding: 0; margin: 0;"> </p><p style="padding: 0; margin: 0;"> </p><p style="padding: 0; margin: 0;"> </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;"> </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…
Reference in new issue