parent
c10cf257ef
commit
58750c88b5
655 changed files with 79008 additions and 78997 deletions
@ -1,16 +1,8 @@ |
|||||||
## Правила для разработчика |
#**INDIGO** |
||||||
|
RLMS ( Real Learning Management System ) |
||||||
|
|
||||||
- Разрабока ведется в отдельном брэнче |
[http://go.skillbox.ru](http://go.skillbox.ru) |
||||||
- После комита изменений можно проверить свою работу по следующему адресу: <branch_name>.lms.test.spicycms.com |
|
||||||
- После проверки тестового сайта по имени брэнча, брэнч помечается к мерж реквесту |
|
||||||
- Ответсвенный инженер производит код ревью и запускает/отклоняет мерж |
|
||||||
- Если сайт запустился на демо сайте, код в ручом режиме можно обновить на продакшен сервере |
|
||||||
|
|
||||||
### Замечания |
Барышников Н.Р. |
||||||
|
|
||||||
- Мерж реквест лучше производить в ветку develop(чтобы исключить случайного обновления кода на демо сайте) |
**Наша задача** - построить гибкую систему обучения, предоставляющую возможность эффективно подстраиваться под нужны конкретного проекта обучения. Хранить и обрабатывать информацию об аудитории. Давать конструктивную и максимально приближенную к реальности оценку процессов проводимых в системе. Предоставлять возможность проведения экспериментов в обучении без ущерба для самого процесса. Необходимо реализовать в полной мере принцип модульности частей системы. Все процессы, проходимые через систему должны подчиняться общей политике безопасности. Административный интерфейс должен быть максимально упрощен, для быстрого и эффективного доступа к данным. Максимально интегрироваться с готовыми решениями имеющими косвенную выгоду для обучения непосредственно. Четко соблюдать прицип MVC при любых объемах. Контролировать полноценно работу на всех 3х уровнях. Собирать и хранить всю поступающую, уникальную информацию. |
||||||
- Внимание! Разработчик обязан проверить работоспособность тестового сайта по имени созданного брэнча <branch_name>.lms.test.spicycms.com |
|
||||||
- Если необходимы тестовые данные разработчик их подготавливает дополнительно |
|
||||||
- Если нет возможности добавить тестовые данные в авто режиме, разработчик добавляет инструкцию в README файл по запуску необходимых команд |
|
||||||
|
|
||||||
(Под тестовыми данными подразумеваются фикстуры) |
|
||||||
|
|||||||
@ -1,71 +1,71 @@ |
|||||||
einzheev@itl.com.kz |
einzheev@itl.com.kz |
||||||
dmitry.sedov@inbox.ru |
dmitry.sedov@inbox.ru |
||||||
ivanpokalyuk@gmail.com |
ivanpokalyuk@gmail.com |
||||||
baho9208@mail.ru |
baho9208@mail.ru |
||||||
feyorz@gmail.com |
feyorz@gmail.com |
||||||
waximov@gmail.com |
waximov@gmail.com |
||||||
alvo_05@mail.ru |
alvo_05@mail.ru |
||||||
redkuk@gmail.com |
redkuk@gmail.com |
||||||
petrichv@gmail.com |
petrichv@gmail.com |
||||||
tagfelix500@gmail.com |
tagfelix500@gmail.com |
||||||
ikey0172@mail.ru |
ikey0172@mail.ru |
||||||
gb.gayane@gmail.com |
gb.gayane@gmail.com |
||||||
eco.pun@gmail.com |
eco.pun@gmail.com |
||||||
sanzharsurshanov@gmail.com |
sanzharsurshanov@gmail.com |
||||||
dennis.loboda@gmail.com |
dennis.loboda@gmail.com |
||||||
webar4i@gmail.com |
webar4i@gmail.com |
||||||
zvetaan@gmail.com |
zvetaan@gmail.com |
||||||
svelavs@gmail.com |
svelavs@gmail.com |
||||||
art@magicdesign.ru |
art@magicdesign.ru |
||||||
mbf23tb@gmail.com |
mbf23tb@gmail.com |
||||||
andrievskiydmitriy@gmail.com |
andrievskiydmitriy@gmail.com |
||||||
pulya7@gmail.com |
pulya7@gmail.com |
||||||
mikhail.a.gusev@gmail.com |
mikhail.a.gusev@gmail.com |
||||||
elena@citrus-soft.ru |
elena@citrus-soft.ru |
||||||
kropev@rarus.ru |
kropev@rarus.ru |
||||||
nikonorov@labizum.ru |
nikonorov@labizum.ru |
||||||
gulin@labizum.ru |
gulin@labizum.ru |
||||||
vladfedorovich@gmail.com |
vladfedorovich@gmail.com |
||||||
Gfgaliya@gmail.com |
Gfgaliya@gmail.com |
||||||
romqa.guard@gmail.com |
romqa.guard@gmail.com |
||||||
srfedotov@gmail.com |
srfedotov@gmail.com |
||||||
vinjuli4ka2008@rambler.ru |
vinjuli4ka2008@rambler.ru |
||||||
kuzzzal@gmail.com |
kuzzzal@gmail.com |
||||||
zvetaan@gmail.com |
zvetaan@gmail.com |
||||||
lepon@bk.ru |
lepon@bk.ru |
||||||
y.robocopov@gmail.com |
y.robocopov@gmail.com |
||||||
enchervinskaya@gmail.com |
enchervinskaya@gmail.com |
||||||
volokos@gmail.com |
volokos@gmail.com |
||||||
mtsalka@scnsoft.com |
mtsalka@scnsoft.com |
||||||
dubnyak404@gmail.com |
dubnyak404@gmail.com |
||||||
o.tibirkova@yandex.ru |
o.tibirkova@yandex.ru |
||||||
a.nikiforov@uplab.ru |
a.nikiforov@uplab.ru |
||||||
dmytriy.suslov@gmail.com |
dmytriy.suslov@gmail.com |
||||||
s.shtukaturka@gmail.com |
s.shtukaturka@gmail.com |
||||||
alex.dntv@gmail.com |
alex.dntv@gmail.com |
||||||
m.chelyadenkov@gmail.com |
m.chelyadenkov@gmail.com |
||||||
timur.shulgin@infocraft.ru |
timur.shulgin@infocraft.ru |
||||||
sp.rusanov@gmail.com |
sp.rusanov@gmail.com |
||||||
zyabra@gmail.com |
zyabra@gmail.com |
||||||
timakova@fistashki.org |
timakova@fistashki.org |
||||||
aknoraz@deloitte.ru |
aknoraz@deloitte.ru |
||||||
sesyunin@realweb.ru |
sesyunin@realweb.ru |
||||||
bravo.johnny@yandex.ru |
bravo.johnny@yandex.ru |
||||||
didenko@braind.agency |
didenko@braind.agency |
||||||
whysecondjuly@gmail.com |
whysecondjuly@gmail.com |
||||||
yuzik.74@gmail.com |
yuzik.74@gmail.com |
||||||
art@amado-id.ru |
art@amado-id.ru |
||||||
9330733@mail.ru |
9330733@mail.ru |
||||||
ek.design11@gmail.com |
ek.design11@gmail.com |
||||||
danila.zarechnev@gmail.com |
danila.zarechnev@gmail.com |
||||||
kira.yakuhina@gmail.com |
kira.yakuhina@gmail.com |
||||||
geiz@yandex.ru |
geiz@yandex.ru |
||||||
tuning_a@mail.ru |
tuning_a@mail.ru |
||||||
suonarama@gmail.com |
suonarama@gmail.com |
||||||
abrakadavr@gmail.com |
abrakadavr@gmail.com |
||||||
irina_z_z@mail.ru irina.huchak@gmail.com |
irina_z_z@mail.ru irina.huchak@gmail.com |
||||||
ha@brightstudio.ru |
ha@brightstudio.ru |
||||||
smorozov@qsoft.ru |
smorozov@qsoft.ru |
||||||
a.reva@qsoft.ru |
a.reva@qsoft.ru |
||||||
d.pogodin@itech-group.ru |
d.pogodin@itech-group.ru |
||||||
lemma.ka@gmail.com |
lemma.ka@gmail.com |
||||||
@ -1,117 +1,117 @@ |
|||||||
makspirogov@gmail.com |
makspirogov@gmail.com |
||||||
velesart@gmail.com |
velesart@gmail.com |
||||||
dmitrij.pastushenko@gmail.com |
dmitrij.pastushenko@gmail.com |
||||||
pavlov@complexsys.ru |
pavlov@complexsys.ru |
||||||
ceo@pride-m.ru |
ceo@pride-m.ru |
||||||
spinngewebex@gmail.com |
spinngewebex@gmail.com |
||||||
an_b@inbox.ru |
an_b@inbox.ru |
||||||
ilyuha86@gmail.com |
ilyuha86@gmail.com |
||||||
juniperland@gmail.com |
juniperland@gmail.com |
||||||
egor@yugs.ru |
egor@yugs.ru |
||||||
kashlatch@gmail.com |
kashlatch@gmail.com |
||||||
niozuki@mail.ru |
niozuki@mail.ru |
||||||
Gnatovych@gmail.com |
Gnatovych@gmail.com |
||||||
sahem@mail.ru |
sahem@mail.ru |
||||||
zfalevich@gmail.com |
zfalevich@gmail.com |
||||||
lalaviva@yandex.ru |
lalaviva@yandex.ru |
||||||
z.ilnurri@gmail.com |
z.ilnurri@gmail.com |
||||||
mmaslennikov@mail.ru |
mmaslennikov@mail.ru |
||||||
info@wbest.ru |
info@wbest.ru |
||||||
arthur.subbota@gmail.com |
arthur.subbota@gmail.com |
||||||
goha@kiosov.com |
goha@kiosov.com |
||||||
Igorfedorenko@mail.ru |
Igorfedorenko@mail.ru |
||||||
annazayidova@gmail.com |
annazayidova@gmail.com |
||||||
anton.reznichenko@gmail.com |
anton.reznichenko@gmail.com |
||||||
me@flexure.ru |
me@flexure.ru |
||||||
es@vipro.ru |
es@vipro.ru |
||||||
km@colary.ru |
km@colary.ru |
||||||
kiselev_s_l@mail.ru |
kiselev_s_l@mail.ru |
||||||
a.reznichenko@clientlab.ru |
a.reznichenko@clientlab.ru |
||||||
soldakov.p@yandex.ru |
soldakov.p@yandex.ru |
||||||
ap@ds-p.ru |
ap@ds-p.ru |
||||||
702752@gmail.com |
702752@gmail.com |
||||||
shpakova@sebbia.com |
shpakova@sebbia.com |
||||||
skugarov@sebbia.com |
skugarov@sebbia.com |
||||||
taranov@sebbia.com |
taranov@sebbia.com |
||||||
rusakovevgen@gmail.com |
rusakovevgen@gmail.com |
||||||
frostoffman@gmail.com |
frostoffman@gmail.com |
||||||
a.khadeko@gmail.com |
a.khadeko@gmail.com |
||||||
trogatyuk@gmail.com |
trogatyuk@gmail.com |
||||||
hello@aokunev.com |
hello@aokunev.com |
||||||
dengenich@gmail.com |
dengenich@gmail.com |
||||||
Alexpozdnyakof@gmail.com |
Alexpozdnyakof@gmail.com |
||||||
korobajr@ya.ru |
korobajr@ya.ru |
||||||
pavlov@complexsys.ru |
pavlov@complexsys.ru |
||||||
elizaveta.bandalet@gmail.com |
elizaveta.bandalet@gmail.com |
||||||
deniskondrashov@yahoo.com |
deniskondrashov@yahoo.com |
||||||
prokosha10@gmail.com |
prokosha10@gmail.com |
||||||
i.flinn@yandex.ru |
i.flinn@yandex.ru |
||||||
s.darbaidze@inostudio.com |
s.darbaidze@inostudio.com |
||||||
zhurakoff@gmail.com |
zhurakoff@gmail.com |
||||||
krylya@inbox.ru |
krylya@inbox.ru |
||||||
146133@gmail.com |
146133@gmail.com |
||||||
i.flinn@yandex.ru |
i.flinn@yandex.ru |
||||||
sasha.melbourne@gmail.com |
sasha.melbourne@gmail.com |
||||||
tiano_taurus747@mail.ru |
tiano_taurus747@mail.ru |
||||||
hip-hop-org@yandex.ru |
hip-hop-org@yandex.ru |
||||||
j.tolkova@yandex.ru |
j.tolkova@yandex.ru |
||||||
jaglin@itsoft.ru |
jaglin@itsoft.ru |
||||||
den.volchkevich@gmail.com |
den.volchkevich@gmail.com |
||||||
yakimov.dmitriy@gmail.com |
yakimov.dmitriy@gmail.com |
||||||
994677@mail.ru |
994677@mail.ru |
||||||
rumbeshta@userstory.ru |
rumbeshta@userstory.ru |
||||||
ylkin_list@mail.ru |
ylkin_list@mail.ru |
||||||
salofoot@fermastudio.ru |
salofoot@fermastudio.ru |
||||||
smiley1776@gmail.com |
smiley1776@gmail.com |
||||||
info@darneo.ru |
info@darneo.ru |
||||||
egor@studiofact.ru |
egor@studiofact.ru |
||||||
alevtina.i.danilova@gmail.com |
alevtina.i.danilova@gmail.com |
||||||
puponina.irina@gmail.com |
puponina.irina@gmail.com |
||||||
yevseev@mail.ru |
yevseev@mail.ru |
||||||
ekde@wide-web.spb.ru |
ekde@wide-web.spb.ru |
||||||
corpas@gmail.com |
corpas@gmail.com |
||||||
nitrohlorid@gmail.com |
nitrohlorid@gmail.com |
||||||
kayl24brof@gmail.com |
kayl24brof@gmail.com |
||||||
skovalska@mail.ru |
skovalska@mail.ru |
||||||
Dmitry.eremin7@gmail.com |
Dmitry.eremin7@gmail.com |
||||||
Nikolebedev@mail.ru |
Nikolebedev@mail.ru |
||||||
ishulga86@gmail.com |
ishulga86@gmail.com |
||||||
bobafas@gmail.com |
bobafas@gmail.com |
||||||
kalina531345@gmail.com |
kalina531345@gmail.com |
||||||
dsgn.shots@gmail.com |
dsgn.shots@gmail.com |
||||||
dsukhanova@gmail.com |
dsukhanova@gmail.com |
||||||
kizilov.s@gmail.com |
kizilov.s@gmail.com |
||||||
zlk.marjana@gmail.com |
zlk.marjana@gmail.com |
||||||
nava011235@gmail.com |
nava011235@gmail.com |
||||||
i.shymanskyi@gmail.com |
i.shymanskyi@gmail.com |
||||||
anastasy.petrenko87@gmail.com |
anastasy.petrenko87@gmail.com |
||||||
dinozavrix@gmail.com |
dinozavrix@gmail.com |
||||||
yana.berezhnaya999@gmail.com |
yana.berezhnaya999@gmail.com |
||||||
person.ira@gmail.com |
person.ira@gmail.com |
||||||
bershonok@gmail.com |
bershonok@gmail.com |
||||||
vivi_bvo@mail.ru |
vivi_bvo@mail.ru |
||||||
lens2002@gmail.com |
lens2002@gmail.com |
||||||
ohmeinkot@gmail.com |
ohmeinkot@gmail.com |
||||||
d22s@ya.ru |
d22s@ya.ru |
||||||
masha49@yandex.ru |
masha49@yandex.ru |
||||||
biz.trp@gmail.com |
biz.trp@gmail.com |
||||||
leo55506@gmail.com |
leo55506@gmail.com |
||||||
ksenia.vitkova@gmail.com |
ksenia.vitkova@gmail.com |
||||||
e.poberezhnik@artw.ru |
e.poberezhnik@artw.ru |
||||||
alexzarkov@gmail.com |
alexzarkov@gmail.com |
||||||
ekde@wide-web.spb.ru |
ekde@wide-web.spb.ru |
||||||
vemelin@gmail.com |
vemelin@gmail.com |
||||||
gausf2@gmail.com |
gausf2@gmail.com |
||||||
vd@wearewowagency.com |
vd@wearewowagency.com |
||||||
va@wearewowagency.com |
va@wearewowagency.com |
||||||
domrachv@gmail.com |
domrachv@gmail.com |
||||||
ad@wearewowagency.com |
ad@wearewowagency.com |
||||||
jalalovna@yandex.ru |
jalalovna@yandex.ru |
||||||
mohov-g@yandex.ru |
mohov-g@yandex.ru |
||||||
st.wasp@yandex.ru |
st.wasp@yandex.ru |
||||||
Irina.lisofa@gmail.com |
Irina.lisofa@gmail.com |
||||||
Kornblumchen@yandex.ru |
Kornblumchen@yandex.ru |
||||||
albytime@gmail.com |
albytime@gmail.com |
||||||
as.plyaskin@gmail.com |
as.plyaskin@gmail.com |
||||||
trunovaon@gmail.com |
trunovaon@gmail.com |
||||||
yuri.a.k.design@gmail.com |
yuri.a.k.design@gmail.com |
||||||
@ -1,491 +1,497 @@ |
|||||||
# coding=utf-8 |
# coding=utf-8 |
||||||
import datetime |
import datetime |
||||||
from django.contrib import auth |
from django.contrib import auth |
||||||
from django.http import Http404 |
from django.http import Http404 |
||||||
from access.models import User, Subscription, sent_registration |
from access.models import User, Subscription, sent_registration, UserRequest |
||||||
from lms.decors import api_decor |
from lms.decors import api_decor |
||||||
from lms.regex import check_email |
from lms.regex import check_email |
||||||
from lms.tools import condition_factory, check_set_password |
from lms.tools import condition_factory, check_set_password |
||||||
from management.letters import sent_active_new_email, sent_good_activation, sent_accept_forgot |
from management.letters import sent_active_new_email, sent_good_activation, sent_accept_forgot |
||||||
|
|
||||||
|
|
||||||
@api_decor(without_auth=True) |
@api_decor(without_auth=True) |
||||||
def search_user(request, context): |
def search_user(request, context): |
||||||
context['code'] = '0' |
context['code'] = '0' |
||||||
if request.user.is_authenticated(): |
if request.user.is_authenticated(): |
||||||
if request.GET.get('user'): |
if request.GET.get('user'): |
||||||
context['code'] = '1' if User.objects.filter(email=request.GET.get('user')).exists() else '0' |
context['code'] = '1' if User.objects.filter(email=request.GET.get('user')).exists() else '0' |
||||||
|
|
||||||
return context |
return context |
||||||
|
|
||||||
|
|
||||||
@api_decor(without_auth=False) |
@api_decor(without_auth=False) |
||||||
def find_user(request, context): |
def find_user(request, context): |
||||||
if request.user.is_authenticated() and request.user.in_role in ['T', 'S2', 'A']: |
if request.user.is_authenticated() and request.user.in_role in ['T', 'S2', 'A']: |
||||||
if request.GET.get('user'): |
if request.GET.get('user'): |
||||||
context['code'] = '1' |
context['code'] = '1' |
||||||
context['data'] = [{'str': str(user), 'ava': user.get_image_url(), 'email': user.email, 'id': user.id} for user in User.objects.filter(email__icontains=request.GET['user'])] |
context['data'] = [{'str': str(user), 'ava': user.get_image_url(), 'email': user.email, 'id': user.id} for user in User.objects.filter(email__icontains=request.GET['user'])] |
||||||
else: |
else: |
||||||
context['response'] = u'Параметры не переданы' |
context['response'] = u'Параметры не переданы' |
||||||
context['code'] = '0' |
context['code'] = '0' |
||||||
return context |
return context |
||||||
else: |
else: |
||||||
raise Http404 |
raise Http404 |
||||||
|
|
||||||
|
|
||||||
@api_decor(without_auth=False) |
@api_decor(without_auth=False) |
||||||
def change_private(request, context): |
def change_private(request, context): |
||||||
if 'type' in request.POST: |
if 'type' in request.POST: |
||||||
request.user.private = request.POST['type'] |
request.user.private = request.POST['type'] |
||||||
request.user.save() |
request.user.save() |
||||||
return context |
return context |
||||||
|
|
||||||
|
|
||||||
@api_decor(without_auth=False) |
@api_decor(without_auth=False) |
||||||
def resent_active_email(request, context): |
def resent_active_email(request, context): |
||||||
sent_registration(request.user, title=u'Повторное письмо активации') |
sent_registration(request.user, title=u'Повторное письмо активации') |
||||||
context['code'] = '1' |
context['code'] = '1' |
||||||
return context |
return context |
||||||
|
|
||||||
|
|
||||||
@api_decor(without_auth=True) |
@api_decor(without_auth=True) |
||||||
def check_auth(request, context): |
def check_auth(request, context): |
||||||
if request.user.is_authenticated(): |
if request.user.is_authenticated(): |
||||||
context['code'] = '0' |
context['code'] = '0' |
||||||
else: |
else: |
||||||
context['code'] = '1' |
context['code'] = '1' |
||||||
|
|
||||||
return context |
return context |
||||||
|
|
||||||
|
|
||||||
@api_decor(without_auth=True) |
@api_decor(without_auth=True) |
||||||
def logout(request, context): |
def logout(request, context): |
||||||
if request.user.is_authenticated(): |
if request.user.is_authenticated(): |
||||||
context['code'] = '0' |
context['code'] = '0' |
||||||
else: |
else: |
||||||
context['code'] = '1' |
context['code'] = '1' |
||||||
|
|
||||||
return context |
return context |
||||||
|
|
||||||
|
|
||||||
@api_decor(without_auth=False) |
@api_decor(without_auth=False) |
||||||
def send_settings_data(request, context): |
def send_settings_data(request, context): |
||||||
# Изменение данных пользователя |
# Изменение данных пользователя |
||||||
context['code'] = '0' |
context['code'] = '0' |
||||||
request.user.oname = request.POST['user_settings_oname'] |
request.user.oname = request.POST['user_settings_oname'] |
||||||
request.user.avatar = request.POST['avatar_code'] |
request.user.avatar = request.POST['avatar_code'] |
||||||
request.user.city = request.POST['user_settings_city'] |
request.user.city = request.POST['user_settings_city'] |
||||||
if request.POST.get('user_settings_bday'): |
if request.POST.get('user_settings_bday'): |
||||||
try: |
try: |
||||||
request.user.b_day = datetime.datetime.strptime(request.POST['user_settings_bday'], '%d.%m.%Y').date() |
request.user.b_day = datetime.datetime.strptime(request.POST['user_settings_bday'], '%d.%m.%Y').date() |
||||||
except ValueError: |
except ValueError: |
||||||
context['response'] = u'Дата рождения указана в неверном формате. Пример: 18.11.1990' |
context['response'] = u'Дата рождения указана в неверном формате. Пример: 18.11.1990' |
||||||
return context |
return context |
||||||
|
|
||||||
if request.POST.get('user_settings_fname'): |
if request.POST.get('user_settings_fname'): |
||||||
request.user.fname = request.POST['user_settings_fname'] |
request.user.fname = request.POST['user_settings_fname'] |
||||||
else: |
else: |
||||||
context['response'] = u'Укажите вашу фамилию' |
context['response'] = u'Укажите вашу фамилию' |
||||||
return context |
return context |
||||||
|
|
||||||
if request.POST.get('user_settings_name'): |
if request.POST.get('user_settings_name'): |
||||||
request.user.name = request.POST['user_settings_name'] |
request.user.name = request.POST['user_settings_name'] |
||||||
else: |
else: |
||||||
context['response'] = u'Укажите ваше имя' |
context['response'] = u'Укажите ваше имя' |
||||||
return context |
return context |
||||||
|
|
||||||
if request.POST.get('user_settings_phone'): |
if request.POST.get('user_settings_phone'): |
||||||
if request.user.phone != request.POST['user_settings_phone']: |
if request.user.phone != request.POST['user_settings_phone']: |
||||||
request.user.back_phone = request.user.phone |
request.user.back_phone = request.user.phone |
||||||
request.user.phone = request.POST['user_settings_phone'] |
request.user.phone = request.POST['user_settings_phone'] |
||||||
else: |
else: |
||||||
context['response'] = u'Укажите ваш телефон' |
context['response'] = u'Укажите ваш телефон' |
||||||
return context |
return context |
||||||
|
|
||||||
if request.POST.get('user_settings_email') and check_email(request.POST['user_settings_email']): |
if request.POST.get('user_settings_email') and check_email(request.POST['user_settings_email']): |
||||||
if request.POST['user_settings_email'].lower() != request.user.email: |
if request.POST['user_settings_email'].lower() != request.user.email: |
||||||
email = request.POST['user_settings_email'].lower() |
email = request.POST['user_settings_email'].lower() |
||||||
if not User.objects.filter(email=email).exists(): |
if not User.objects.filter(email=email).exists(): |
||||||
request.user.changed_email = request.POST['user_settings_email'].lower() |
request.user.changed_email = request.POST['user_settings_email'].lower() |
||||||
request.user.change_token() |
request.user.change_token() |
||||||
sent_active_new_email(request.user) |
sent_active_new_email(request.user) |
||||||
context['response'] = u'Данные изменены. Для изменения поля email, необходимо подтвердить владение ' \ |
context['response'] = u'Данные изменены. Для изменения поля email, необходимо подтвердить владение ' \ |
||||||
u'им. На указанный почтовый ящик выслано письмо активации.' |
u'им. На указанный почтовый ящик выслано письмо активации.' |
||||||
else: |
else: |
||||||
context['response'] = u'Пользователь с таким email уже существует' |
context['response'] = u'Пользователь с таким email уже существует' |
||||||
return context |
return context |
||||||
|
|
||||||
else: |
else: |
||||||
context['response'] = u'Укажите ваш email' |
context['response'] = u'Укажите ваш email' |
||||||
return context |
return context |
||||||
|
|
||||||
context['code'] = '1' |
context['code'] = '1' |
||||||
request.user.save() |
request.user.save() |
||||||
return context |
return context |
||||||
|
|
||||||
|
|
||||||
@api_decor(without_auth=False) |
@api_decor(without_auth=False) |
||||||
def get_settings_data(request, context): |
def get_settings_data(request, context): |
||||||
# Отправка данных пользователя |
# Отправка данных пользователя |
||||||
context['code'] = '1' |
context['code'] = '1' |
||||||
context['data'] = { |
context['data'] = { |
||||||
'short_name': request.user.get_short_name(), |
'short_name': request.user.get_short_name(), |
||||||
'avatar_code': request.user.avatar, |
'avatar_code': request.user.avatar, |
||||||
'avatar': request.user.get_image_url(type_in='big'), |
'avatar': request.user.get_image_url(type_in='big'), |
||||||
'fname': request.user.fname, |
'fname': request.user.fname, |
||||||
'name': request.user.name, |
'name': request.user.name, |
||||||
'oname': request.user.oname, |
'oname': request.user.oname, |
||||||
'phone': request.user.get_phone(), |
'phone': request.user.get_phone(), |
||||||
'email': request.user.email, |
'email': request.user.email, |
||||||
'city': request.user.city, |
'city': request.user.city, |
||||||
'bday': '' |
'bday': '' |
||||||
} |
} |
||||||
if request.user.b_day: |
if request.user.b_day: |
||||||
context['data']['bday'] = '{0}.{1}.{2}'.format(request.user.b_day.day, request.user.b_day.month, request.user.b_day.year) |
context['data']['bday'] = '{0}.{1}.{2}'.format(request.user.b_day.day, request.user.b_day.month, request.user.b_day.year) |
||||||
|
|
||||||
return context |
return context |
||||||
|
|
||||||
|
|
||||||
@api_decor(without_auth=False) |
@api_decor(without_auth=False) |
||||||
def send_subscription_data(request, context): |
def send_subscription_data(request, context): |
||||||
# Сохранение выбора подписок |
# Сохранение выбора подписок |
||||||
context['code'] = '1' |
context['code'] = '1' |
||||||
subscription = Subscription.objects.get(owner=request.user) |
subscription = Subscription.objects.get(owner=request.user) |
||||||
right_map = subscription.right_map(None) |
right_map = subscription.right_map(None) |
||||||
context['data'] = [] |
context['data'] = [] |
||||||
for i, x in right_map.items(): |
for i, x in right_map.items(): |
||||||
if 'subscription_{0}'.format(i) in request.POST: |
if 'subscription_{0}'.format(i) in request.POST: |
||||||
if not x: |
if not x: |
||||||
subscription.set_right(i, True) |
subscription.set_right(i, True) |
||||||
else: |
else: |
||||||
if x: |
if x: |
||||||
subscription.set_right(i, False) |
subscription.set_right(i, False) |
||||||
|
|
||||||
return context |
return context |
||||||
|
|
||||||
|
|
||||||
@api_decor(without_auth=False) |
@api_decor(without_auth=False) |
||||||
def get_subscription_data(request, context): |
def get_subscription_data(request, context): |
||||||
# Получение подписок пользователя |
# Получение подписок пользователя |
||||||
context['code'] = '1' |
context['code'] = '1' |
||||||
context['data'] = {} |
context['data'] = {} |
||||||
subscription, c = Subscription.objects.get_or_create(owner=request.user) |
subscription, c = Subscription.objects.get_or_create(owner=request.user) |
||||||
for i, n in subscription.right_map(None).items(): |
for i, n in subscription.right_map(None).items(): |
||||||
context['data'][i] = n |
context['data'][i] = n |
||||||
return context |
return context |
||||||
|
|
||||||
|
|
||||||
@api_decor(without_auth=False) |
@api_decor(without_auth=False) |
||||||
def change_password(request, context): |
def change_password(request, context): |
||||||
# Изменение данных о профиле |
# Изменение данных о профиле |
||||||
context['data'] = [] |
context['data'] = [] |
||||||
if request.POST.get('old_password'): |
if request.POST.get('old_password'): |
||||||
old_password = request.POST['old_password'] |
old_password = request.POST['old_password'] |
||||||
if request.user.check_password(old_password): |
if request.user.check_password(old_password): |
||||||
if request.POST.get('password1'): |
if request.POST.get('password1'): |
||||||
password1 = request.POST['password1'] |
password1 = request.POST['password1'] |
||||||
ps, ms = check_set_password(request.POST['password1']) |
ps, ms = check_set_password(request.POST['password1']) |
||||||
if not ps: |
if not ps: |
||||||
context['response'] = ms |
context['response'] = ms |
||||||
context['code'] = '0' |
context['code'] = '0' |
||||||
else: |
else: |
||||||
if request.POST.get('password2'): |
if request.POST.get('password2'): |
||||||
password2 = request.POST['password2'] |
password2 = request.POST['password2'] |
||||||
if password1 == password2: |
if password1 == password2: |
||||||
user = User.objects.get(id=request.user.id) |
user = User.objects.get(id=request.user.id) |
||||||
user.set_password(password1) |
user.set_password(password1) |
||||||
user.save() |
user.save() |
||||||
user._set_to_sync() |
context['response'] = u'Пароль изменен. Авторизуйтесь используя новый пароль.' |
||||||
context['response'] = u'Пароль изменен. Авторизуйтесь используя новый пароль.' |
context['code'] = '1' |
||||||
context['code'] = '1' |
else: |
||||||
else: |
context['response'] = u'Новые пароли не совпадают' |
||||||
context['response'] = u'Новые пароли не совпадают' |
context['code'] = '0' |
||||||
context['code'] = '0' |
else: |
||||||
else: |
context['response'] = u'Повторите введеный пароль' |
||||||
context['response'] = u'Повторите введеный пароль' |
context['code'] = '0' |
||||||
context['code'] = '0' |
else: |
||||||
else: |
context['response'] = u'Поле нового пароля не заполнено' |
||||||
context['response'] = u'Поле нового пароля не заполнено' |
context['code'] = '0' |
||||||
context['code'] = '0' |
else: |
||||||
else: |
context['response'] = u'Старый пароль введен не верно' |
||||||
context['response'] = u'Старый пароль введен не верно' |
context['code'] = '0' |
||||||
context['code'] = '0' |
else: |
||||||
else: |
context['response'] = u'Поле старого пароля не заполнено' |
||||||
context['response'] = u'Поле старого пароля не заполнено' |
context['code'] = '0' |
||||||
context['code'] = '0' |
return context |
||||||
return context |
|
||||||
|
|
||||||
|
@api_decor(without_auth=False, need_keys=['id'], method='GET', check_request=True) |
||||||
@api_decor(without_auth=False, need_keys=['id'], method='GET', check_request=True) |
def get_user_role(request, context): |
||||||
def get_user_role(request, context): |
# Получение роли пользователя для руководителя в его профиле |
||||||
# Получение роли пользователя для руководителя в его профиле |
# TODO: Убрать изменение ролей из профиля пользователя |
||||||
# TODO: Убрать изменение ролей из профиля пользователя |
if request.user.in_role == 'S' or request.user.in_role == 'A': |
||||||
if request.user.in_role == 'S' or request.user.in_role == 'A': |
try: |
||||||
try: |
user = User.objects.get(id=request.GET['id']) |
||||||
user = User.objects.get(id=request.GET['id']) |
except User.DoesNotExist: |
||||||
except User.DoesNotExist: |
context['code'] = '0' |
||||||
context['code'] = '0' |
else: |
||||||
else: |
context['code'] = '1' |
||||||
context['code'] = '1' |
context['data'] = user.in_role |
||||||
context['data'] = user.in_role |
else: |
||||||
else: |
raise Http404 |
||||||
raise Http404 |
return context |
||||||
return context |
|
||||||
|
|
||||||
|
@api_decor(without_auth=False, need_keys=['new_role_user_id', 'new_role_name'], method='GET', check_request=True) |
||||||
@api_decor(without_auth=False, need_keys=['new_role_user_id', 'new_role_name'], method='GET', check_request=True) |
def new_role(request, context): |
||||||
def new_role(request, context): |
# Присвоение роли в профиле руководителя |
||||||
# Присвоение роли в профиле руководителя |
# TODO: Убрать присвоение |
||||||
# TODO: Убрать присвоение |
if request.user.in_role == 'S' or request.user.in_role == 'A': |
||||||
if request.user.in_role == 'S' or request.user.in_role == 'A': |
try: |
||||||
try: |
user = User.objects.get(id=request.GET['new_role_user_id']) |
||||||
user = User.objects.get(id=request.GET['new_role_user_id']) |
except User.DoesNotExist: |
||||||
except User.DoesNotExist: |
raise Http404 |
||||||
raise Http404 |
else: |
||||||
else: |
user.in_role = request.GET['new_role_name'] |
||||||
user.in_role = request.GET['new_role_name'] |
user.save() |
||||||
user.save() |
context['code'] = '1' |
||||||
context['code'] = '1' |
else: |
||||||
else: |
raise Http404 |
||||||
raise Http404 |
return context |
||||||
return context |
|
||||||
|
|
||||||
|
@api_decor(without_auth=True) |
||||||
@api_decor(without_auth=True) |
def check_active(request, context): |
||||||
def check_active(request, context): |
# Проверка статуса активации пользователя |
||||||
# Проверка статуса активации пользователя |
# Используется для доступов |
||||||
# Используется для доступов |
if request.user.is_active and request.user.reg_status == '4': |
||||||
if request.user.is_active and request.user.reg_status == '4': |
context['code'] = '1' |
||||||
context['code'] = '1' |
else: |
||||||
else: |
context['code'] = '0' |
||||||
context['code'] = '0' |
return context |
||||||
return context |
|
||||||
|
|
||||||
|
@api_decor(without_auth=True) |
||||||
@api_decor(without_auth=True) |
def reg_step(request, context): |
||||||
def reg_step(request, context): |
# Процедура активации пользователя |
||||||
# Процедура активации пользователя |
condition = condition_factory([ |
||||||
condition = condition_factory([ |
{'condition': request.POST.get('email'), 'error': u'Не верно передан email'}, |
||||||
{'condition': request.POST.get('email'), 'error': u'Не верно передан email'}, |
{'condition': request.POST.get('token'), 'error': u'Не верно передан токен'}, |
||||||
{'condition': request.POST.get('token'), 'error': u'Не верно передан токен'}, |
{'condition': request.POST.get('step'), 'error': u'Не верно передн этап'}, ]) |
||||||
{'condition': request.POST.get('step'), 'error': u'Не верно передн этап'}, ]) |
context['data'] = {} |
||||||
context['data'] = {} |
if condition['code'] == '1': |
||||||
if condition['code'] == '1': |
try: |
||||||
try: |
email = request.POST['email'].lower() |
||||||
email = request.POST['email'].lower() |
user = User.objects.get(email=email, token=request.POST['token']) |
||||||
user = User.objects.get(email=email, token=request.POST['token']) |
except User.DoesNotExist: |
||||||
except User.DoesNotExist: |
context['code'] = '0' |
||||||
context['code'] = '0' |
context['data']['message'] = u'Запрашиваемый пользователь не найден' |
||||||
context['data']['message'] = u'Запрашиваемый пользователь не найден' |
else: |
||||||
else: |
context['code'] = '0' |
||||||
context['code'] = '0' |
if request.POST['step'] == '1': |
||||||
if request.POST['step'] == '1': |
# Проверка пароля |
||||||
# Проверка пароля |
if request.POST.get('password1'): |
||||||
if request.POST.get('password1'): |
if request.POST.get('password2'): |
||||||
if request.POST.get('password2'): |
if request.POST['password1'] == request.POST['password2']: |
||||||
if request.POST['password1'] == request.POST['password2']: |
ps, ms = check_set_password(request.POST['password1']) |
||||||
ps, ms = check_set_password(request.POST['password1']) |
if not ps: |
||||||
if not ps: |
context['data']['message'] = ms |
||||||
context['data']['message'] = ms |
context['data']['inputs'] = ['password1', 'password2'] |
||||||
context['data']['inputs'] = ['password1', 'password2'] |
context['code'] = '0' |
||||||
context['code'] = '0' |
else: |
||||||
else: |
user.set_password(request.POST['password1']) |
||||||
user.set_password(request.POST['password1']) |
user.reg_status = '2' |
||||||
user.reg_status = '2' |
user.save() |
||||||
user.save() |
context['code'] = '1' |
||||||
context['code'] = '1' |
else: |
||||||
else: |
context['data']['message'] = u'Введеные пароли не совпадают' |
||||||
context['data']['message'] = u'Введеные пароли не совпадают' |
context['data']['inputs'] = ['password1', 'password2'] |
||||||
context['data']['inputs'] = ['password1', 'password2'] |
else: |
||||||
else: |
context['data']['message'] = u'Повторите введеный пароль' |
||||||
context['data']['message'] = u'Повторите введеный пароль' |
context['data']['inputs'] = ['password2'] |
||||||
context['data']['inputs'] = ['password2'] |
else: |
||||||
else: |
context['data']['message'] = u'Введите пароль' |
||||||
context['data']['message'] = u'Введите пароль' |
context['data']['inputs'] = ['password1'] |
||||||
context['data']['inputs'] = ['password1'] |
|
||||||
|
return context |
||||||
return context |
|
||||||
|
elif request.POST['step'] == '2': |
||||||
elif request.POST['step'] == '2': |
# Проверка Телефона |
||||||
# Проверка Телефона |
if request.POST.get('fname'): |
||||||
if request.POST.get('fname'): |
if request.POST.get('name'): |
||||||
if request.POST.get('name'): |
if request.POST.get('phone'): |
||||||
if request.POST.get('phone'): |
user.phone = request.POST['phone'] |
||||||
user.phone = request.POST['phone'] |
user.name = request.POST['name'] |
||||||
user.name = request.POST['name'] |
user.fname = request.POST['fname'] |
||||||
user.fname = request.POST['fname'] |
user.city = request.POST['city'] |
||||||
user.city = request.POST['city'] |
if request.POST.get('bday'): |
||||||
if request.POST.get('bday'): |
try: |
||||||
try: |
user.b_day = datetime.datetime.strptime(request.POST['bday'], '%d.%m.%Y').date() |
||||||
user.b_day = datetime.datetime.strptime(request.POST['bday'], '%d.%m.%Y').date() |
except ValueError: |
||||||
except ValueError: |
user.b_day = datetime.datetime.strptime(request.POST['bday'], '%d.%m.%y').date() |
||||||
user.b_day = datetime.datetime.strptime(request.POST['bday'], '%d.%m.%y').date() |
user.reg_status = '3' |
||||||
user.reg_status = '3' |
user.save() |
||||||
user.save() |
context['code'] = '1' |
||||||
context['code'] = '1' |
else: |
||||||
else: |
context['data']['message'] = u'Введите Телефон' |
||||||
context['data']['message'] = u'Введите Телефон' |
context['data']['inputs'] = ['phone'] |
||||||
context['data']['inputs'] = ['phone'] |
else: |
||||||
else: |
context['data']['message'] = u'Введите Имя' |
||||||
context['data']['message'] = u'Введите Имя' |
context['data']['inputs'] = ['name'] |
||||||
context['data']['inputs'] = ['name'] |
else: |
||||||
else: |
context['data']['message'] = u'Введите Фамилию' |
||||||
context['data']['message'] = u'Введите Фамилию' |
context['data']['inputs'] = ['fname'] |
||||||
context['data']['inputs'] = ['fname'] |
|
||||||
|
elif request.POST['step'] == '3': |
||||||
elif request.POST['step'] == '3': |
# Проверка фотографии |
||||||
# Проверка фотографии |
if request.POST.get('avatar_code'): |
||||||
if request.POST.get('avatar_code'): |
user.avatar = request.POST['avatar_code'] |
||||||
user.avatar = request.POST['avatar_code'] |
user.reg_status = '4' |
||||||
user.reg_status = '4' |
user.is_active = True |
||||||
user.is_active = True |
user.save() |
||||||
user.save() |
user._set_to_sync() |
||||||
user._set_to_sync() |
sent_good_activation(user) |
||||||
sent_good_activation(user) |
context['code'] = '1' |
||||||
context['code'] = '1' |
|
||||||
|
else: |
||||||
else: |
context['code'] = '0' |
||||||
context['code'] = '0' |
context['data']['message'] = u'Этап активации указан не верно' |
||||||
context['data']['message'] = u'Этап активации указан не верно' |
else: |
||||||
else: |
context['data']['message'] = condition['response'] |
||||||
context['data']['message'] = condition['response'] |
context['code'] = '0' |
||||||
context['code'] = '0' |
return context |
||||||
return context |
|
||||||
|
|
||||||
|
@api_decor(without_auth=True) |
||||||
@api_decor(without_auth=True) |
def registration(request, context): |
||||||
def registration(request, context): |
# Форма стандартногоз аведения пользователя |
||||||
# Форма стандартногоз аведения пользователя |
condition = condition_factory([ |
||||||
condition = condition_factory([ |
{'condition': request.POST.get('email'), 'error': u'Вы не ввели email'}]) |
||||||
{'condition': request.POST.get('email'), 'error': u'Вы не ввели email'}]) |
|
||||||
|
if condition['code'] == '1': |
||||||
if condition['code'] == '1': |
try: |
||||||
try: |
email = request.POST['email'].lower() |
||||||
email = request.POST['email'].lower() |
user = User.objects.get(email=email) |
||||||
user = User.objects.get(email=email) |
except User.DoesNotExist: |
||||||
except User.DoesNotExist: |
if request.POST.get('password1'): |
||||||
if request.POST.get('password1'): |
if request.POST.get('password2'): |
||||||
if request.POST.get('password2'): |
if request.POST['password1'] == request.POST['password2']: |
||||||
if request.POST['password1'] == request.POST['password2']: |
ps, ms = check_set_password(request.POST['password1']) |
||||||
ps, ms = check_set_password(request.POST['password1']) |
if not ps: |
||||||
if not ps: |
context['response'] = ms |
||||||
context['response'] = ms |
context['code'] = '0' |
||||||
context['code'] = '0' |
else: |
||||||
else: |
email = request.POST['email'].lower() |
||||||
email = request.POST['email'].lower() |
user = User.objects.create_user(email=email) |
||||||
user = User.objects.create_user(email=email) |
user.set_password(request.POST['password1']) |
||||||
user.set_password(request.POST['password1']) |
user.reg_status = '2' |
||||||
user.reg_status = '2' |
user.save() |
||||||
user.save() |
context['code'] = '1' |
||||||
context['code'] = '1' |
else: |
||||||
else: |
context['response'] = u'Введеные пароли не совпадают' |
||||||
context['response'] = u'Введеные пароли не совпадают' |
context['code'] = '0' |
||||||
context['code'] = '0' |
else: |
||||||
else: |
context['response'] = u'Повторите введеный пароль' |
||||||
context['response'] = u'Повторите введеный пароль' |
context['code'] = '0' |
||||||
context['code'] = '0' |
else: |
||||||
else: |
context['response'] = u'Введите пароль' |
||||||
context['response'] = u'Введите пароль' |
context['code'] = '0' |
||||||
context['code'] = '0' |
else: |
||||||
else: |
if user.is_active and user.reg_status == '4': |
||||||
if user.is_active and user.reg_status == '4': |
context['code'] = '0' |
||||||
context['code'] = '0' |
context[ |
||||||
context[ |
'response'] = u'Пользователь с таким email уже существует и активен. ' \ |
||||||
'response'] = u'Пользователь с таким email уже существует и активен. ' \ |
u'Авторизуйтесь или попробуйте восстановить пароль.' |
||||||
u'Авторизуйтесь или попробуйте восстановить пароль.' |
else: |
||||||
else: |
context['code'] = '0' |
||||||
context['code'] = '0' |
sent_registration(user, title=u'Повторное письмо активации') |
||||||
sent_registration(user, title=u'Повторное письмо активации') |
context[ |
||||||
context[ |
'response'] = u'Пользователь с таким email уже существует, но не был активирован. ' \ |
||||||
'response'] = u'Пользователь с таким email уже существует, но не был активирован. ' \ |
u'Вам было выслано повторное письмо активации.' |
||||||
u'Вам было выслано повторное письмо активации.' |
else: |
||||||
else: |
context['response'] = condition['response'] |
||||||
context['response'] = condition['response'] |
context['code'] = '0' |
||||||
context['code'] = '0' |
return context |
||||||
return context |
|
||||||
|
|
||||||
|
@api_decor(without_auth=True) |
||||||
@api_decor(without_auth=True) |
def auth_in(request, context): |
||||||
def auth_in(request, context): |
# Авторизация |
||||||
# Авторизация |
condition = condition_factory([ |
||||||
condition = condition_factory([ |
{'condition': request.POST.get('email'), 'error': u'Вы не ввели email'}, |
||||||
{'condition': request.POST.get('email'), 'error': u'Вы не ввели email'}, |
{'condition': request.POST.get('password'), 'error': u'Вы не ввели пароль'} |
||||||
{'condition': request.POST.get('password'), 'error': u'Вы не ввели пароль'} |
]) |
||||||
]) |
if condition['code'] == '1': |
||||||
if condition['code'] == '1': |
email = request.POST['email'].lower() |
||||||
email = request.POST['email'].lower() |
user = auth.authenticate(email=email, password=request.POST.get('password')) |
||||||
user = auth.authenticate(email=email, password=request.POST.get('password')) |
|
||||||
|
if user is not None: |
||||||
if user is not None: |
if user.block: |
||||||
context['code'] = '1' |
context['code'] = '0' |
||||||
auth.login(request, user) |
context['data'] = [] |
||||||
user.set_request_data(request) |
context['data']['ERROR'] = 'BLOCK' |
||||||
|
context['data']['data'] = UserRequest.objects.filter(user__email=email).count() |
||||||
elif user is None: |
|
||||||
context['response'] = u'По введенным данным пользователь не найден' |
else: |
||||||
context['code'] = '0' |
context['code'] = '1' |
||||||
|
auth.login(request, user) |
||||||
else: |
user.set_request_data(request) |
||||||
context['response'] = u"Не верные данные. Повторите попытку" |
|
||||||
context['code'] = '0' |
elif user is None: |
||||||
else: |
context['response'] = u'По введенным данным пользователь не найден' |
||||||
context['response'] = condition['response'] |
context['code'] = '0' |
||||||
context['code'] = '0' |
|
||||||
return context |
else: |
||||||
|
context['response'] = u"Не верные данные. Повторите попытку" |
||||||
|
context['code'] = '0' |
||||||
@api_decor(without_auth=True) |
else: |
||||||
def auth_from_admin(request, context): |
context['response'] = condition['response'] |
||||||
# Авторизация |
context['code'] = '0' |
||||||
condition = condition_factory([ |
return context |
||||||
{'condition': request.POST.get('email'), 'error': u'Вы не ввели email'}, |
|
||||||
{'condition': request.POST.get('password'), 'error': u'Вы не ввели пароль'}, |
|
||||||
{'condition': request.POST.get('token'), 'error': u'Вы не ввели свой токен'}, |
@api_decor(without_auth=True) |
||||||
{'condition': request.user.is_staff and request.user.is_admin, 'error': u'У вас нет прав'} |
def auth_from_admin(request, context): |
||||||
]) |
# Авторизация |
||||||
if condition['code'] == '1': |
condition = condition_factory([ |
||||||
email = request.POST['email'].lower() |
{'condition': request.POST.get('email'), 'error': u'Вы не ввели email'}, |
||||||
user = auth.authenticate(email=email, |
{'condition': request.POST.get('password'), 'error': u'Вы не ввели пароль'}, |
||||||
password=request.POST.get('password'), |
{'condition': request.POST.get('token'), 'error': u'Вы не ввели свой токен'}, |
||||||
token=request.POST.get('token')) |
{'condition': request.user.is_staff and request.user.is_admin, 'error': u'У вас нет прав'} |
||||||
|
]) |
||||||
if user is not None: |
if condition['code'] == '1': |
||||||
context['code'] = '1' |
email = request.POST['email'].lower() |
||||||
auth.login(request, user) |
user = auth.authenticate(email=email, |
||||||
request.user.change_token() |
password=request.POST.get('password'), |
||||||
|
token=request.POST.get('token')) |
||||||
elif user is None: |
|
||||||
context['response'] = u'По введенным данным пользователь не найден' |
if user is not None: |
||||||
context['code'] = '0' |
context['code'] = '1' |
||||||
|
auth.login(request, user) |
||||||
else: |
request.user.change_token() |
||||||
context['response'] = u"Не верные данные. Повторите попытку" |
|
||||||
context['code'] = '0' |
elif user is None: |
||||||
else: |
context['response'] = u'По введенным данным пользователь не найден' |
||||||
context['response'] = condition['response'] |
context['code'] = '0' |
||||||
context['code'] = '0' |
|
||||||
return context |
else: |
||||||
|
context['response'] = u"Не верные данные. Повторите попытку" |
||||||
|
context['code'] = '0' |
||||||
@api_decor(without_auth=True) |
else: |
||||||
def forgot(request, context): |
context['response'] = condition['response'] |
||||||
# Форма восстановления пароля |
context['code'] = '0' |
||||||
condition = condition_factory([ |
return context |
||||||
{'condition': request.GET.get('email'), 'error': u'Email не указан'}, |
|
||||||
{'condition': check_email(request.GET['email']), 'error': u'Email введен не верно'} |
|
||||||
]) |
@api_decor(without_auth=True) |
||||||
if condition['code'] == '1': |
def forgot(request, context): |
||||||
try: |
# Форма восстановления пароля |
||||||
email = request.GET['email'].lower() |
condition = condition_factory([ |
||||||
user = User.objects.get(email=email) |
{'condition': request.GET.get('email'), 'error': u'Email не указан'}, |
||||||
except User.DoesNotExist: |
{'condition': check_email(request.GET['email']), 'error': u'Email введен не верно'} |
||||||
context['response'] = u'Пользователя с таким email не существует.' |
]) |
||||||
context['code'] = '0' |
if condition['code'] == '1': |
||||||
else: |
try: |
||||||
user.change_token() |
email = request.GET['email'].lower() |
||||||
sent_accept_forgot(user) |
user = User.objects.get(email=email) |
||||||
context['code'] = '1' |
except User.DoesNotExist: |
||||||
else: |
context['response'] = u'Пользователя с таким email не существует.' |
||||||
context['response'] = condition['response'] |
context['code'] = '0' |
||||||
context['code'] = '0' |
else: |
||||||
return context |
user.change_token() |
||||||
|
sent_accept_forgot(user) |
||||||
|
context['code'] = '1' |
||||||
|
else: |
||||||
|
context['response'] = condition['response'] |
||||||
|
context['code'] = '0' |
||||||
|
return context |
||||||
|
|||||||
@ -1,38 +1,38 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
from access.models import User |
from access.models import User |
||||||
from django.contrib.auth.forms import ReadOnlyPasswordHashField |
from django.contrib.auth.forms import ReadOnlyPasswordHashField |
||||||
from django import forms |
from django import forms |
||||||
|
|
||||||
|
|
||||||
class UserCreationForm(forms.ModelForm): |
class UserCreationForm(forms.ModelForm): |
||||||
password1 = forms.CharField(label='Password', widget=forms.PasswordInput) |
password1 = forms.CharField(label='Password', widget=forms.PasswordInput) |
||||||
password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput) |
password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput) |
||||||
|
|
||||||
class Meta: |
class Meta: |
||||||
model = User |
model = User |
||||||
fields = '__all__' |
fields = '__all__' |
||||||
|
|
||||||
def clean_password2(self): |
def clean_password2(self): |
||||||
password1 = self.cleaned_data.get("password1") |
password1 = self.cleaned_data.get("password1") |
||||||
password2 = self.cleaned_data.get("password2") |
password2 = self.cleaned_data.get("password2") |
||||||
if password1 and password2 and password1 != password2: |
if password1 and password2 and password1 != password2: |
||||||
raise forms.ValidationError("Passwords don't match") |
raise forms.ValidationError("Passwords don't match") |
||||||
return password2 |
return password2 |
||||||
|
|
||||||
def save(self, commit=True): |
def save(self, commit=True): |
||||||
user = super(UserCreationForm, self).save(commit=False) |
user = super(UserCreationForm, self).save(commit=False) |
||||||
user.set_password(self.cleaned_data["password1"]) |
user.set_password(self.cleaned_data["password1"]) |
||||||
if commit: |
if commit: |
||||||
user.save() |
user.save() |
||||||
return user |
return user |
||||||
|
|
||||||
|
|
||||||
class UserChangeForm(forms.ModelForm): |
class UserChangeForm(forms.ModelForm): |
||||||
password = ReadOnlyPasswordHashField() |
password = ReadOnlyPasswordHashField() |
||||||
|
|
||||||
class Meta: |
class Meta: |
||||||
model = User |
model = User |
||||||
fields = '__all__' |
fields = '__all__' |
||||||
|
|
||||||
def clean_password(self): |
def clean_password(self): |
||||||
return self.initial["password"] |
return self.initial["password"] |
||||||
@ -1,90 +1,90 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-03-18 16:46 |
# Generated by Django 1.9.2 on 2016-03-18 16:46 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import access.models |
import access.models |
||||||
import datetime |
import datetime |
||||||
from django.conf import settings |
from django.conf import settings |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
import django.db.models.deletion |
import django.db.models.deletion |
||||||
import django.utils.timezone |
import django.utils.timezone |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
initial = True |
initial = True |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='User', |
name='User', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('password', models.CharField(max_length=128, verbose_name='password')), |
('password', models.CharField(max_length=128, verbose_name='password')), |
||||||
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), |
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), |
||||||
('deactivate', models.BooleanField(default=False, verbose_name='\u0423\u0432\u043e\u043b\u0438\u0442\u044c')), |
('deactivate', models.BooleanField(default=False, verbose_name='\u0423\u0432\u043e\u043b\u0438\u0442\u044c')), |
||||||
('email', models.EmailField(blank=True, db_index=True, editable=False, max_length=255, unique=True, verbose_name=b'email')), |
('email', models.EmailField(blank=True, db_index=True, editable=False, max_length=255, unique=True, verbose_name=b'email')), |
||||||
('changed_email', models.EmailField(blank=True, max_length=254, null=True, verbose_name='\u042f\u0449\u0438\u043a \u043d\u0430 \u0437\u0430\u043c\u0435\u043d\u0443')), |
('changed_email', models.EmailField(blank=True, max_length=254, null=True, verbose_name='\u042f\u0449\u0438\u043a \u043d\u0430 \u0437\u0430\u043c\u0435\u043d\u0443')), |
||||||
('phone', models.CharField(default=b'', max_length=255, verbose_name='\u0422\u0435\u043b\u0435\u0444\u043e\u043d')), |
('phone', models.CharField(default=b'', max_length=255, verbose_name='\u0422\u0435\u043b\u0435\u0444\u043e\u043d')), |
||||||
('back_phone', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u041f\u0440\u0435\u0434\u0438\u0434\u0443\u0449\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d')), |
('back_phone', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u041f\u0440\u0435\u0434\u0438\u0434\u0443\u0449\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d')), |
||||||
('status', models.CharField(choices=[(b'ON', b'on-line'), (b'OFF', b'off-line')], default=b'ON', max_length=9)), |
('status', models.CharField(choices=[(b'ON', b'on-line'), (b'OFF', b'off-line')], default=b'ON', max_length=9)), |
||||||
('in_role', models.CharField(choices=[(b'U', '\u0421\u0442\u0443\u0434\u0435\u043d\u0442 \u0448\u043a\u043e\u043b\u044b'), (b'T', '\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c'), (b'M', '\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440'), (b'S', '\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c'), (b'S2', '\u041e\u043a\u043e \u0441\u0430\u0443\u0440\u043e\u043d\u0430'), (b'A', '\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440')], default=b'U', max_length=2, verbose_name='\u0420\u043e\u043b\u044c')), |
('in_role', models.CharField(choices=[(b'U', '\u0421\u0442\u0443\u0434\u0435\u043d\u0442 \u0448\u043a\u043e\u043b\u044b'), (b'T', '\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c'), (b'M', '\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440'), (b'S', '\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c'), (b'S2', '\u041e\u043a\u043e \u0441\u0430\u0443\u0440\u043e\u043d\u0430'), (b'A', '\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440')], default=b'U', max_length=2, verbose_name='\u0420\u043e\u043b\u044c')), |
||||||
('city', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u0413\u043e\u0440\u043e\u0434')), |
('city', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u0413\u043e\u0440\u043e\u0434')), |
||||||
('b_day', models.DateField(blank=True, null=True, verbose_name='\u0414\u0435\u043d\u044c \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f')), |
('b_day', models.DateField(blank=True, null=True, verbose_name='\u0414\u0435\u043d\u044c \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f')), |
||||||
('token', models.CharField(blank=True, default=b'', max_length=255)), |
('token', models.CharField(blank=True, default=b'', max_length=255)), |
||||||
('activate_time', models.DateTimeField(default=access.models.get_activate_time, verbose_name='\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e')), |
('activate_time', models.DateTimeField(default=access.models.get_activate_time, verbose_name='\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e')), |
||||||
('reg_status', models.CharField(choices=[(b'1', b'\xd0\x9f\xd0\xb0\xd1\x80\xd0\xbe\xd0\xbb\xd1\x8c'), (b'2', b'\xd0\x9e \xd1\x81\xd0\xb5\xd0\xb1\xd0\xb5'), (b'3', b'\xd0\xa4\xd0\xbe\xd1\x82\xd0\xbe'), (b'4', b'\xd0\x97\xd0\xb0\xd0\xba\xd0\xbe\xd0\xbd\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb0')], default=b'1', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438')), |
('reg_status', models.CharField(choices=[(b'1', b'\xd0\x9f\xd0\xb0\xd1\x80\xd0\xbe\xd0\xbb\xd1\x8c'), (b'2', b'\xd0\x9e \xd1\x81\xd0\xb5\xd0\xb1\xd0\xb5'), (b'3', b'\xd0\xa4\xd0\xbe\xd1\x82\xd0\xbe'), (b'4', b'\xd0\x97\xd0\xb0\xd0\xba\xd0\xbe\xd0\xbd\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb0')], default=b'1', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438')), |
||||||
('is_active', models.BooleanField(default=False)), |
('is_active', models.BooleanField(default=False)), |
||||||
('is_admin', models.BooleanField(default=False)), |
('is_admin', models.BooleanField(default=False)), |
||||||
('is_staff', models.BooleanField(default=False)), |
('is_staff', models.BooleanField(default=False)), |
||||||
('avatar', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u041a\u043b\u044e\u0447 \u0430\u0432\u0430\u0442\u0430\u0440\u0430')), |
('avatar', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u041a\u043b\u044e\u0447 \u0430\u0432\u0430\u0442\u0430\u0440\u0430')), |
||||||
('in_avatar', models.ImageField(blank=True, editable=False, null=True, upload_to=b'', verbose_name='\u041d\u0430\u0448 \u0430\u0432\u0430\u0442\u0430\u0440')), |
('in_avatar', models.ImageField(blank=True, editable=False, null=True, upload_to=b'', verbose_name='\u041d\u0430\u0448 \u0430\u0432\u0430\u0442\u0430\u0440')), |
||||||
('fname', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u0424\u0430\u043c\u0438\u043b\u0438\u044f')), |
('fname', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u0424\u0430\u043c\u0438\u043b\u0438\u044f')), |
||||||
('name', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u0418\u043c\u044f')), |
('name', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u0418\u043c\u044f')), |
||||||
('oname', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u041e\u0442\u0447\u0435\u0441\u0442\u0432\u043e')), |
('oname', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u041e\u0442\u0447\u0435\u0441\u0442\u0432\u043e')), |
||||||
('skype', models.CharField(blank=True, default=b'', max_length=300)), |
('skype', models.CharField(blank=True, default=b'', max_length=300)), |
||||||
('facebook', models.CharField(blank=True, default=b'', max_length=255)), |
('facebook', models.CharField(blank=True, default=b'', max_length=255)), |
||||||
('vk', models.CharField(blank=True, default=b'', max_length=255)), |
('vk', models.CharField(blank=True, default=b'', max_length=255)), |
||||||
('linkedin', models.CharField(blank=True, default=b'', max_length=255)), |
('linkedin', models.CharField(blank=True, default=b'', max_length=255)), |
||||||
('odnoklassniki', models.CharField(blank=True, default=b'', max_length=255)), |
('odnoklassniki', models.CharField(blank=True, default=b'', max_length=255)), |
||||||
('date_joined', models.DateTimeField(default=datetime.datetime.now)), |
('date_joined', models.DateTimeField(default=datetime.datetime.now)), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'verbose_name': '\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f', |
'verbose_name': '\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f', |
||||||
'verbose_name_plural': '\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438', |
'verbose_name_plural': '\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438', |
||||||
}, |
}, |
||||||
), |
), |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='ActionJ', |
name='ActionJ', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('a_type', models.CharField(choices=[(b'B', b'b-default'), (b'P', b'b-primary'), (b'S', b'b-success'), (b'I', b'b-info'), (b'W', b'b-warning'), (b'D', b'b-danger')], default=b'B', max_length=1, verbose_name='\u0422\u0438\u043f \u0441\u043e\u0431\u044b\u0442\u0438\u044f')), |
('a_type', models.CharField(choices=[(b'B', b'b-default'), (b'P', b'b-primary'), (b'S', b'b-success'), (b'I', b'b-info'), (b'W', b'b-warning'), (b'D', b'b-danger')], default=b'B', max_length=1, verbose_name='\u0422\u0438\u043f \u0441\u043e\u0431\u044b\u0442\u0438\u044f')), |
||||||
('place', models.CharField(max_length=100, verbose_name='\u041c\u0435\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f')), |
('place', models.CharField(max_length=100, verbose_name='\u041c\u0435\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f')), |
||||||
('date', models.DateTimeField(default=django.utils.timezone.now, verbose_name='\u0412\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f')), |
('date', models.DateTimeField(default=django.utils.timezone.now, verbose_name='\u0412\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f')), |
||||||
('text', models.TextField(verbose_name='\u0422\u0435\u043a\u0441\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f')), |
('text', models.TextField(verbose_name='\u0422\u0435\u043a\u0441\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f')), |
||||||
('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), |
('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438', |
'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438', |
||||||
'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0435\u0439', |
'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0435\u0439', |
||||||
}, |
}, |
||||||
), |
), |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='Subscription', |
name='Subscription', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('news', models.BooleanField(default=True, verbose_name='\u041f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 \u043d\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0438')), |
('news', models.BooleanField(default=True, verbose_name='\u041f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 \u043d\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0438')), |
||||||
('teacher', models.BooleanField(default=True, verbose_name='\u041e\u0442\u0432\u0435\u0442\u044b \u043f\u0440\u0435\u043f\u043e\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044f')), |
('teacher', models.BooleanField(default=True, verbose_name='\u041e\u0442\u0432\u0435\u0442\u044b \u043f\u0440\u0435\u043f\u043e\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044f')), |
||||||
('new_comments', models.BooleanField(default=True, verbose_name='\u041e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438')), |
('new_comments', models.BooleanField(default=True, verbose_name='\u041e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438')), |
||||||
('send_sms', models.BooleanField(default=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c sms')), |
('send_sms', models.BooleanField(default=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c sms')), |
||||||
('courses', models.BooleanField(default=True, verbose_name='\u041d\u043e\u0432\u044b\u0435 \u043a\u0443\u0440\u0441\u044b')), |
('courses', models.BooleanField(default=True, verbose_name='\u041d\u043e\u0432\u044b\u0435 \u043a\u0443\u0440\u0441\u044b')), |
||||||
('owner', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='rights_owner', to=settings.AUTH_USER_MODEL, verbose_name='\u0412\u043b\u0430\u0434\u0435\u043b\u0435\u0446')), |
('owner', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='rights_owner', to=settings.AUTH_USER_MODEL, verbose_name='\u0412\u043b\u0430\u0434\u0435\u043b\u0435\u0446')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'verbose_name': '\u041f\u043e\u0434\u043f\u0438\u0441\u043a\u0430', |
'verbose_name': '\u041f\u043e\u0434\u043f\u0438\u0441\u043a\u0430', |
||||||
'verbose_name_plural': '\u041f\u043e\u0434\u043f\u0438\u0441\u043a\u0438', |
'verbose_name_plural': '\u041f\u043e\u0434\u043f\u0438\u0441\u043a\u0438', |
||||||
}, |
}, |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,20 +1,20 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-04-05 20:45 |
# Generated by Django 1.9.2 on 2016-04-05 20:45 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0001_initial'), |
('access', '0001_initial'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='in_role', |
name='in_role', |
||||||
field=models.CharField(choices=[(b'U', '\u0421\u0442\u0443\u0434\u0435\u043d\u0442 \u0448\u043a\u043e\u043b\u044b'), (b'T', '\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c'), (b'M', '\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440'), (b'S', '\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c'), (b'S2', '\u041e\u043a\u043e \u0441\u0430\u0443\u0440\u043e\u043d\u0430'), (b'A', '\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440'), (b'Ts', '\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c')], default=b'U', max_length=2, verbose_name='\u0420\u043e\u043b\u044c'), |
field=models.CharField(choices=[(b'U', '\u0421\u0442\u0443\u0434\u0435\u043d\u0442 \u0448\u043a\u043e\u043b\u044b'), (b'T', '\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c'), (b'M', '\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440'), (b'S', '\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c'), (b'S2', '\u041e\u043a\u043e \u0441\u0430\u0443\u0440\u043e\u043d\u0430'), (b'A', '\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440'), (b'Ts', '\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c')], default=b'U', max_length=2, verbose_name='\u0420\u043e\u043b\u044c'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,20 +1,20 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-12 21:45 |
# Generated by Django 1.9.5 on 2016-04-12 21:45 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0002_auto_20160405_2045'), |
('access', '0002_auto_20160405_2045'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay', |
name='delay', |
||||||
field=models.BooleanField(default=False, verbose_name='\u041c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438'), |
field=models.BooleanField(default=False, verbose_name='\u041c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,26 +1,26 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-12 21:52 |
# Generated by Django 1.9.5 on 2016-04-12 21:52 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
import redactor.fields |
import redactor.fields |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0003_user_delay'), |
('access', '0003_user_delay'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_description', |
name='delay_description', |
||||||
field=redactor.fields.RedactorField(blank=True, verbose_name='\u041f\u043e\u0432\u043e\u0434 \u043f\u0440\u043e\u0441\u0440\u043e\u0447\u043a\u0438'), |
field=redactor.fields.RedactorField(blank=True, verbose_name='\u041f\u043e\u0432\u043e\u0434 \u043f\u0440\u043e\u0441\u0440\u043e\u0447\u043a\u0438'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay', |
name='delay', |
||||||
field=models.BooleanField(default=False, help_text='\u0415\u0441\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u043c\u0438', verbose_name='\u041c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438'), |
field=models.BooleanField(default=False, help_text='\u0415\u0441\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u043c\u0438', verbose_name='\u041c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,20 +1,20 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-14 15:27 |
# Generated by Django 1.9.5 on 2016-04-14 15:27 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0004_auto_20160412_2152'), |
('access', '0004_auto_20160412_2152'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_description', |
name='delay_description', |
||||||
field=models.TextField(blank=True, verbose_name='\u041f\u043e\u0432\u043e\u0434 \u043f\u0440\u043e\u0441\u0440\u043e\u0447\u043a\u0438'), |
field=models.TextField(blank=True, verbose_name='\u041f\u043e\u0432\u043e\u0434 \u043f\u0440\u043e\u0441\u0440\u043e\u0447\u043a\u0438'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-14 15:42 |
# Generated by Django 1.9.5 on 2016-04-14 15:42 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0005_auto_20160414_1527'), |
('access', '0005_auto_20160414_1527'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.TextField(blank=True, default=datetime.datetime(2016, 4, 14, 15, 42, 6, 457603), verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.TextField(blank=True, default=datetime.datetime(2016, 4, 14, 15, 42, 6, 457603), verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-14 15:43 |
# Generated by Django 1.9.5 on 2016-04-14 15:43 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0006_user_delay_date'), |
('access', '0006_user_delay_date'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.TextField(blank=True, default=datetime.datetime(2016, 4, 14, 15, 43, 33, 80232), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.TextField(blank=True, default=datetime.datetime(2016, 4, 14, 15, 43, 33, 80232), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-14 15:47 |
# Generated by Django 1.9.5 on 2016-04-14 15:47 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0007_auto_20160414_1543'), |
('access', '0007_auto_20160414_1543'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 14, 15, 47, 18, 142514), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 14, 15, 47, 18, 142514), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-14 19:41 |
# Generated by Django 1.9.5 on 2016-04-14 19:41 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0008_auto_20160414_1547'), |
('access', '0008_auto_20160414_1547'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 14, 19, 41, 21, 863845), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 14, 19, 41, 21, 863845), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-14 19:44 |
# Generated by Django 1.9.5 on 2016-04-14 19:44 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0009_auto_20160414_1941'), |
('access', '0009_auto_20160414_1941'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 14, 19, 44, 42, 129160), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 14, 19, 44, 42, 129160), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-20 17:49 |
# Generated by Django 1.9.5 on 2016-04-20 17:49 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0010_auto_20160414_1944'), |
('access', '0010_auto_20160414_1944'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 20, 17, 49, 55, 401859), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 20, 17, 49, 55, 401859), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-20 18:19 |
# Generated by Django 1.9.5 on 2016-04-20 18:19 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0011_auto_20160420_1749'), |
('access', '0011_auto_20160420_1749'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 20, 18, 19, 6, 238659), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 20, 18, 19, 6, 238659), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,26 +1,26 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-21 18:08 |
# Generated by Django 1.9.5 on 2016-04-21 18:08 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0012_auto_20160420_1819'), |
('access', '0012_auto_20160420_1819'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='interactive_key', |
name='interactive_key', |
||||||
field=models.CharField(blank=True, max_length=255, verbose_name='\u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u044b\u0439 \u043a\u043b\u044e\u0447'), |
field=models.CharField(blank=True, max_length=255, verbose_name='\u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u044b\u0439 \u043a\u043b\u044e\u0447'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 21, 18, 8, 50, 535390), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 21, 18, 8, 50, 535390), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-21 18:24 |
# Generated by Django 1.9.5 on 2016-04-21 18:24 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0013_auto_20160421_1808'), |
('access', '0013_auto_20160421_1808'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 21, 18, 24, 46, 904871), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 21, 18, 24, 46, 904871), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-21 18:29 |
# Generated by Django 1.9.5 on 2016-04-21 18:29 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0014_auto_20160421_1824'), |
('access', '0014_auto_20160421_1824'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 21, 18, 29, 23, 185173), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 21, 18, 29, 23, 185173), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,26 +1,26 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-21 20:09 |
# Generated by Django 1.9.5 on 2016-04-21 20:09 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0015_auto_20160421_1829'), |
('access', '0015_auto_20160421_1829'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='private', |
name='private', |
||||||
field=models.CharField(choices=[(b'A', b'\xd0\x92\xd1\x81\xd0\xb5\xd0\xbc\xd1\x83 \xd0\xb8\xd0\xbd\xd1\x82\xd0\xb5\xd1\x80\xd0\xbd\xd0\xb5\xd1\x82\xd1\x83'), (b'U', b'\xd0\xa2\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xba\xd0\xbe \xd0\xbf\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xb7\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8f\xd0\xbc lms'), (b'L', b'\xd0\x9f\xd0\xbe \xd0\xbf\xd1\x80\xd1\x8f\xd0\xbc\xd0\xbe\xd0\xb9 \xd1\x81\xd1\x81\xd1\x8b\xd0\xbb\xd0\xba\xd0\xb5'), (b'B', b'\xd0\xa2\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xba\xd0\xbe \xd0\xbc\xd0\xbd\xd0\xb5')], default=b'A', max_length=1, verbose_name='\u041f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044f'), |
field=models.CharField(choices=[(b'A', b'\xd0\x92\xd1\x81\xd0\xb5\xd0\xbc\xd1\x83 \xd0\xb8\xd0\xbd\xd1\x82\xd0\xb5\xd1\x80\xd0\xbd\xd0\xb5\xd1\x82\xd1\x83'), (b'U', b'\xd0\xa2\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xba\xd0\xbe \xd0\xbf\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xb7\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8f\xd0\xbc lms'), (b'L', b'\xd0\x9f\xd0\xbe \xd0\xbf\xd1\x80\xd1\x8f\xd0\xbc\xd0\xbe\xd0\xb9 \xd1\x81\xd1\x81\xd1\x8b\xd0\xbb\xd0\xba\xd0\xb5'), (b'B', b'\xd0\xa2\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xba\xd0\xbe \xd0\xbc\xd0\xbd\xd0\xb5')], default=b'A', max_length=1, verbose_name='\u041f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044f'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 21, 20, 9, 41, 221779), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 21, 20, 9, 41, 221779), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,26 +1,26 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-21 21:35 |
# Generated by Django 1.9.5 on 2016-04-21 21:35 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0016_auto_20160421_2009'), |
('access', '0016_auto_20160421_2009'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='last_time', |
name='last_time', |
||||||
field=models.DateTimeField(default=datetime.datetime.now, verbose_name='\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c'), |
field=models.DateTimeField(default=datetime.datetime.now, verbose_name='\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 21, 21, 35, 2, 761309), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 21, 21, 35, 2, 761309), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,26 +1,26 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-22 15:55 |
# Generated by Django 1.9.5 on 2016-04-22 15:55 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0017_auto_20160421_2135'), |
('access', '0017_auto_20160421_2135'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='unique_role', |
name='unique_role', |
||||||
field=models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u043e\u043b\u044c'), |
field=models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u043e\u043b\u044c'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 22, 15, 55, 55, 944230), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 22, 15, 55, 55, 944230), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,26 +1,26 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-04-24 16:46 |
# Generated by Django 1.9.2 on 2016-04-24 16:46 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0018_auto_20160422_1555'), |
('access', '0018_auto_20160422_1555'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='customer', |
name='customer', |
||||||
field=models.BooleanField(default=False, verbose_name='\u041f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044c'), |
field=models.BooleanField(default=False, verbose_name='\u041f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044c'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 24, 16, 46, 31, 25686), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 4, 24, 16, 46, 31, 25686), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-05-06 13:03 |
# Generated by Django 1.9.5 on 2016-05-06 13:03 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0019_auto_20160424_1646'), |
('access', '0019_auto_20160424_1646'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 6, 13, 3, 19, 582728), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 6, 13, 3, 19, 582728), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,31 +1,31 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-05-09 13:31 |
# Generated by Django 1.9.5 on 2016-05-09 13:31 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0020_auto_20160506_1303'), |
('access', '0020_auto_20160506_1303'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='refer', |
name='refer', |
||||||
field=models.CharField(choices=[(b'S', b'\xd0\xa1\xd0\xb0\xd0\xbc \xd0\xb7\xd0\xb0\xd1\x80\xd0\xb5\xd0\xb3\xd0\xb8\xd1\x81\xd1\x82\xd0\xb8\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbb\xd1\x81\xd1\x8f'), (b'B', b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xbb\xd0\xb5\xd1\x87\xd0\xb5\xd0\xbd')], default=b'S', max_length=1, null=True, verbose_name='\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a'), |
field=models.CharField(choices=[(b'S', b'\xd0\xa1\xd0\xb0\xd0\xbc \xd0\xb7\xd0\xb0\xd1\x80\xd0\xb5\xd0\xb3\xd0\xb8\xd1\x81\xd1\x82\xd0\xb8\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbb\xd1\x81\xd1\x8f'), (b'B', b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xbb\xd0\xb5\xd1\x87\xd0\xb5\xd0\xbd')], default=b'S', max_length=1, null=True, verbose_name='\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a'), |
||||||
), |
), |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='refer_source', |
name='refer_source', |
||||||
field=models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f'), |
field=models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 9, 13, 31, 31, 19346), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 9, 13, 31, 31, 19346), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,41 +1,41 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-05-09 14:01 |
# Generated by Django 1.9.5 on 2016-05-09 14:01 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0021_auto_20160509_1331'), |
('access', '0021_auto_20160509_1331'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='TrafSource', |
name='TrafSource', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('on', models.BooleanField(default=True, verbose_name='\u0410\u0442\u0438\u0432\u0435\u043d')), |
('on', models.BooleanField(default=True, verbose_name='\u0410\u0442\u0438\u0432\u0435\u043d')), |
||||||
('url', models.URLField(verbose_name='\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0442\u0440\u0430\u0444\u0438\u043a\u0430')), |
('url', models.URLField(verbose_name='\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0442\u0440\u0430\u0444\u0438\u043a\u0430')), |
||||||
('token', models.CharField(max_length=255, verbose_name='\u0422\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430')), |
('token', models.CharField(max_length=255, verbose_name='\u0422\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430')), |
||||||
('live_time', models.IntegerField(blank=True, verbose_name='\u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0442\u043e\u043a\u0435\u043d\u0430')), |
('live_time', models.IntegerField(blank=True, verbose_name='\u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0442\u043e\u043a\u0435\u043d\u0430')), |
||||||
('date_start', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430')), |
('date_start', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'verbose_name': '\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0442\u0440\u0430\u0444\u0438\u043a\u0430', |
'verbose_name': '\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0442\u0440\u0430\u0444\u0438\u043a\u0430', |
||||||
'verbose_name_plural': '\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0442\u0440\u0430\u0444\u0438\u043a\u0430', |
'verbose_name_plural': '\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0442\u0440\u0430\u0444\u0438\u043a\u0430', |
||||||
}, |
}, |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 9, 14, 1, 37, 826573), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 9, 14, 1, 37, 826573), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='refer', |
name='refer', |
||||||
field=models.CharField(choices=[(b'S', b'\xd0\x9e\xd1\x80\xd0\xb3\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x87\xd0\xbd\xd0\xbe'), (b'B', b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xbb\xd0\xb5\xd1\x87\xd0\xb5\xd0\xbd')], default=b'S', max_length=1, null=True, verbose_name='\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a'), |
field=models.CharField(choices=[(b'S', b'\xd0\x9e\xd1\x80\xd0\xb3\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x87\xd0\xbd\xd0\xbe'), (b'B', b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xbb\xd0\xb5\xd1\x87\xd0\xb5\xd0\xbd')], default=b'S', max_length=1, null=True, verbose_name='\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,38 +1,38 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-05-09 14:08 |
# Generated by Django 1.9.5 on 2016-05-09 14:08 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
import django.db.models.deletion |
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0022_auto_20160509_1401'), |
('access', '0022_auto_20160509_1401'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='TrafHistory', |
name='TrafHistory', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('action', models.CharField(choices=[(b'G', b'\xd0\x9f\xd0\xbe\xd0\xbb\xd1\x83\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd1\x85'), (b'C', b'\xd0\xa1\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xbf\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xb7\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8f'), (b'O', b'\xd0\xa1\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5 \xd1\x81\xd1\x87\xd0\xb5\xd1\x82\xd0\xb0')], max_length=1, verbose_name='\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435')), |
('action', models.CharField(choices=[(b'G', b'\xd0\x9f\xd0\xbe\xd0\xbb\xd1\x83\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd1\x85'), (b'C', b'\xd0\xa1\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xbf\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xb7\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8f'), (b'O', b'\xd0\xa1\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5 \xd1\x81\xd1\x87\xd0\xb5\xd1\x82\xd0\xb0')], max_length=1, verbose_name='\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435')), |
||||||
('data', models.TextField(verbose_name='\u0414\u0430\u043d\u043d\u044b\u0435 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435')), |
('data', models.TextField(verbose_name='\u0414\u0430\u043d\u043d\u044b\u0435 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435')), |
||||||
('result', models.BooleanField(default=False, verbose_name='\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430')), |
('result', models.BooleanField(default=False, verbose_name='\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430')), |
||||||
('result_description', models.CharField(blank=True, max_length=255, verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430')), |
('result_description', models.CharField(blank=True, max_length=255, verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430')), |
||||||
('date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f')), |
('date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f')), |
||||||
('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='access.TrafSource', verbose_name='\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0437\u0430\u043f\u0440\u043e\u0441\u0430')), |
('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='access.TrafSource', verbose_name='\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0437\u0430\u043f\u0440\u043e\u0441\u0430')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'verbose_name': '\u041e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430', |
'verbose_name': '\u041e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430', |
||||||
'verbose_name_plural': '\u041e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432', |
'verbose_name_plural': '\u041e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432', |
||||||
}, |
}, |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 9, 14, 8, 4, 599702), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 9, 14, 8, 4, 599702), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,61 +1,61 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-05-09 15:37 |
# Generated by Django 1.9.5 on 2016-05-09 15:37 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
import django.db.models.deletion |
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0023_auto_20160509_1408'), |
('access', '0023_auto_20160509_1408'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='TrafTokenHistory', |
name='TrafTokenHistory', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('token', models.CharField(editable=False, max_length=255, verbose_name='\u0422\u043e\u043a\u0435\u043d')), |
('token', models.CharField(editable=False, max_length=255, verbose_name='\u0422\u043e\u043a\u0435\u043d')), |
||||||
('live_time', models.IntegerField(editable=False, help_text='\u0412 \u0447\u0430\u0441\u0430\u0445', verbose_name='\u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438')), |
('live_time', models.IntegerField(editable=False, help_text='\u0412 \u0447\u0430\u0441\u0430\u0445', verbose_name='\u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438')), |
||||||
('date_start', models.DateTimeField(editable=False, verbose_name='\u0414\u0430\u0442\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0442\u043e\u043a\u0435\u043d\u0430')), |
('date_start', models.DateTimeField(editable=False, verbose_name='\u0414\u0430\u0442\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0442\u043e\u043a\u0435\u043d\u0430')), |
||||||
('date_end', models.DateTimeField(editable=False, verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f')), |
('date_end', models.DateTimeField(editable=False, verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'verbose_name': '\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0441\u043c\u0435\u043d\u044b \u0442\u043e\u043a\u0435\u043d\u0430', |
'verbose_name': '\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0441\u043c\u0435\u043d\u044b \u0442\u043e\u043a\u0435\u043d\u0430', |
||||||
'verbose_name_plural': '\u0418\u0441\u0442\u043e\u0440\u0438\u0438 \u0441\u043c\u0435\u043d\u044b \u0442\u043e\u043a\u0435\u043d\u043e\u0432', |
'verbose_name_plural': '\u0418\u0441\u0442\u043e\u0440\u0438\u0438 \u0441\u043c\u0435\u043d\u044b \u0442\u043e\u043a\u0435\u043d\u043e\u0432', |
||||||
}, |
}, |
||||||
), |
), |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='trafhistory', |
model_name='trafhistory', |
||||||
name='token', |
name='token', |
||||||
field=models.CharField(max_length=255, null=True, verbose_name='\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0442\u043e\u043a\u0435\u043d'), |
field=models.CharField(max_length=255, null=True, verbose_name='\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0442\u043e\u043a\u0435\u043d'), |
||||||
), |
), |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='trafsource', |
model_name='trafsource', |
||||||
name='token_start', |
name='token_start', |
||||||
field=models.DateTimeField(editable=False, null=True, verbose_name='\u0422\u043e\u0447\u043a\u0430 \u043e\u0442\u0441\u0447\u0435\u0442\u0430 \u0436\u0438\u0437\u043d\u0438 \u0442\u043e\u043a\u0435\u043d\u0430'), |
field=models.DateTimeField(editable=False, null=True, verbose_name='\u0422\u043e\u0447\u043a\u0430 \u043e\u0442\u0441\u0447\u0435\u0442\u0430 \u0436\u0438\u0437\u043d\u0438 \u0442\u043e\u043a\u0435\u043d\u0430'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='trafsource', |
model_name='trafsource', |
||||||
name='live_time', |
name='live_time', |
||||||
field=models.IntegerField(blank=True, help_text='\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0447\u0430\u0441\u0430\u0445. \u043f\u0443\u0441\u0442\u043e\u0435 \u043f\u043e\u043b\u0435 - \u043f\u043e\u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e', verbose_name='\u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0442\u043e\u043a\u0435\u043d\u0430'), |
field=models.IntegerField(blank=True, help_text='\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0447\u0430\u0441\u0430\u0445. \u043f\u0443\u0441\u0442\u043e\u0435 \u043f\u043e\u043b\u0435 - \u043f\u043e\u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e', verbose_name='\u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0442\u043e\u043a\u0435\u043d\u0430'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='trafsource', |
model_name='trafsource', |
||||||
name='token', |
name='token', |
||||||
field=models.CharField(editable=False, max_length=255, verbose_name='\u0422\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430'), |
field=models.CharField(editable=False, max_length=255, verbose_name='\u0422\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 9, 15, 37, 34, 495507), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 9, 15, 37, 34, 495507), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='traftokenhistory', |
model_name='traftokenhistory', |
||||||
name='sources', |
name='sources', |
||||||
field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='access.TrafSource', verbose_name='\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a'), |
field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='access.TrafSource', verbose_name='\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,26 +1,26 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-05-09 15:39 |
# Generated by Django 1.9.5 on 2016-05-09 15:39 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0024_auto_20160509_1537'), |
('access', '0024_auto_20160509_1537'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.RenameField( |
migrations.RenameField( |
||||||
model_name='traftokenhistory', |
model_name='traftokenhistory', |
||||||
old_name='sources', |
old_name='sources', |
||||||
new_name='source', |
new_name='source', |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 9, 15, 39, 30, 69095), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 9, 15, 39, 30, 69095), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,26 +1,26 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-05-09 18:03 |
# Generated by Django 1.9.5 on 2016-05-09 18:03 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0025_auto_20160509_1539'), |
('access', '0025_auto_20160509_1539'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='trafsource', |
model_name='trafsource', |
||||||
name='live_time', |
name='live_time', |
||||||
field=models.IntegerField(blank=True, help_text='\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0447\u0430\u0441\u0430\u0445. \u043f\u0443\u0441\u0442\u043e\u0435 \u043f\u043e\u043b\u0435 - \u043f\u043e\u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e', null=True, verbose_name='\u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0442\u043e\u043a\u0435\u043d\u0430'), |
field=models.IntegerField(blank=True, help_text='\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0447\u0430\u0441\u0430\u0445. \u043f\u0443\u0441\u0442\u043e\u0435 \u043f\u043e\u043b\u0435 - \u043f\u043e\u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e', null=True, verbose_name='\u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0442\u043e\u043a\u0435\u043d\u0430'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 9, 18, 3, 57, 586863), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 9, 18, 3, 57, 586863), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,46 +1,46 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-05-10 18:23 |
# Generated by Django 1.9.5 on 2016-05-10 18:23 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.conf import settings |
from django.conf import settings |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
import django.db.models.deletion |
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0026_auto_20160509_1803'), |
('access', '0026_auto_20160509_1803'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='Questionnaire', |
name='Questionnaire', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('fully', models.CharField(choices=[(b'1', b'\xd0\xa4\xd0\xbb\xd0\xb0\xd0\xb3\xd0\xb8'), (b'2', b'\xd0\xa1\xd0\xb2\xd0\xbe\xd0\xb1\xd0\xbe\xd0\xb4\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbe\xd1\x82\xd0\xb2\xd0\xb5\xd1\x82'), (b'3', b'\xd0\x97\xd0\xb0\xd0\xb2\xd0\xb5\xd1\x80\xd1\x88\xd0\xb5\xd0\xbd\xd0\xbe')], default=1, max_length=1, verbose_name='\u0421\u0442\u0430\u0434\u0438\u044f')), |
('fully', models.CharField(choices=[(b'1', b'\xd0\xa4\xd0\xbb\xd0\xb0\xd0\xb3\xd0\xb8'), (b'2', b'\xd0\xa1\xd0\xb2\xd0\xbe\xd0\xb1\xd0\xbe\xd0\xb4\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbe\xd1\x82\xd0\xb2\xd0\xb5\xd1\x82'), (b'3', b'\xd0\x97\xd0\xb0\xd0\xb2\xd0\xb5\xd1\x80\xd1\x88\xd0\xb5\xd0\xbd\xd0\xbe')], default=1, max_length=1, verbose_name='\u0421\u0442\u0430\u0434\u0438\u044f')), |
||||||
('steps', models.IntegerField(default=0, help_text='\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043a\u0430\u0437\u043e\u0432 \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f', verbose_name='\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043a\u0430\u0437\u043e\u0432')), |
('steps', models.IntegerField(default=0, help_text='\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043a\u0430\u0437\u043e\u0432 \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f', verbose_name='\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043a\u0430\u0437\u043e\u0432')), |
||||||
('male', models.CharField(blank=True, choices=[(b'M', b'\xd0\x9c\xd1\x83\xd0\xb6\xd1\x87\xd0\xb8\xd0\xbd\xd0\xb0'), (b'W', b'\xd0\x96\xd0\xb5\xd0\xbd\xd1\x89\xd0\xb8\xd0\xbd\xd0\xb0')], max_length=1, null=True, verbose_name='\u041f\u043e\u043b')), |
('male', models.CharField(blank=True, choices=[(b'M', b'\xd0\x9c\xd1\x83\xd0\xb6\xd1\x87\xd0\xb8\xd0\xbd\xd0\xb0'), (b'W', b'\xd0\x96\xd0\xb5\xd0\xbd\xd1\x89\xd0\xb8\xd0\xbd\xd0\xb0')], max_length=1, null=True, verbose_name='\u041f\u043e\u043b')), |
||||||
('city', models.CharField(blank=True, max_length=255, null=True, verbose_name='\u0413\u043e\u0440\u043e\u0434')), |
('city', models.CharField(blank=True, max_length=255, null=True, verbose_name='\u0413\u043e\u0440\u043e\u0434')), |
||||||
('experience', models.CharField(blank=True, choices=[(b'1', b'\xd0\xa2\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xba\xd0\xbe \xd0\xbd\xd0\xb0\xd1\x87\xd0\xb8\xd0\xbd\xd0\xb0\xd1\x8e'), (b'2', b'\xd0\x94\xd0\xb0, \xd0\xbc\xd0\xb5\xd0\xbd\xd0\xb5\xd0\xb5 \xd0\xb3\xd0\xbe\xd0\xb4\xd0\xb0'), (b'3', b'\xd0\x94\xd0\xb0, 1-2 \xd0\xb3\xd0\xbe\xd0\xb4\xd0\xb0'), (b'4', b'\xd0\x94\xd0\xb0, \xd0\xb1\xd0\xbe\xd0\xbb\xd0\xb5\xd0\xb5 2 \xd0\xbb\xd0\xb5\xd1\x82')], max_length=1, null=True, verbose_name='\u041e\u043f\u044b\u0442')), |
('experience', models.CharField(blank=True, choices=[(b'1', b'\xd0\xa2\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xba\xd0\xbe \xd0\xbd\xd0\xb0\xd1\x87\xd0\xb8\xd0\xbd\xd0\xb0\xd1\x8e'), (b'2', b'\xd0\x94\xd0\xb0, \xd0\xbc\xd0\xb5\xd0\xbd\xd0\xb5\xd0\xb5 \xd0\xb3\xd0\xbe\xd0\xb4\xd0\xb0'), (b'3', b'\xd0\x94\xd0\xb0, 1-2 \xd0\xb3\xd0\xbe\xd0\xb4\xd0\xb0'), (b'4', b'\xd0\x94\xd0\xb0, \xd0\xb1\xd0\xbe\xd0\xbb\xd0\xb5\xd0\xb5 2 \xd0\xbb\xd0\xb5\xd1\x82')], max_length=1, null=True, verbose_name='\u041e\u043f\u044b\u0442')), |
||||||
('aim', models.CharField(blank=True, choices=[(b'1', b'\xd0\x94\xd0\xb0, \xd0\xb2 \xd0\xbe\xd1\x84\xd0\xb8\xd1\x81\xd0\xb5'), (b'2', b'\xd0\x94\xd0\xb0, \xd1\x81\xd0\xb2\xd0\xbe\xd0\xb9 \xd0\xbf\xd1\x80\xd0\xbe\xd0\xb5\xd0\xba\xd1\x82'), (b'3', b'\xd0\x94\xd0\xb0, \xd0\xbd\xd0\xb0 \xd1\x84\xd1\x80\xd0\xb8\xd0\xbb\xd0\xb0\xd0\xbd\xd1\x81\xd0\xb5'), (b'4', b'\xd0\x9d\xd0\xb5\xd1\x82, \xd0\xb8\xd0\xb7\xd1\x83\xd1\x87\xd0\xb0\xd1\x8e \xd0\xb4\xd0\xbb\xd1\x8f \xd1\x81\xd0\xb5\xd0\xb1\xd1\x8f')], max_length=1, null=True, verbose_name='\u0426\u0435\u043b\u044c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f')), |
('aim', models.CharField(blank=True, choices=[(b'1', b'\xd0\x94\xd0\xb0, \xd0\xb2 \xd0\xbe\xd1\x84\xd0\xb8\xd1\x81\xd0\xb5'), (b'2', b'\xd0\x94\xd0\xb0, \xd1\x81\xd0\xb2\xd0\xbe\xd0\xb9 \xd0\xbf\xd1\x80\xd0\xbe\xd0\xb5\xd0\xba\xd1\x82'), (b'3', b'\xd0\x94\xd0\xb0, \xd0\xbd\xd0\xb0 \xd1\x84\xd1\x80\xd0\xb8\xd0\xbb\xd0\xb0\xd0\xbd\xd1\x81\xd0\xb5'), (b'4', b'\xd0\x9d\xd0\xb5\xd1\x82, \xd0\xb8\xd0\xb7\xd1\x83\xd1\x87\xd0\xb0\xd1\x8e \xd0\xb4\xd0\xbb\xd1\x8f \xd1\x81\xd0\xb5\xd0\xb1\xd1\x8f')], max_length=1, null=True, verbose_name='\u0426\u0435\u043b\u044c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f')), |
||||||
('age', models.CharField(blank=True, choices=[(b'1', b'\xd0\xb4\xd0\xbe 18'), (b'2', b'18-25'), (b'3', b'25-30'), (b'4', b'30-40'), (b'5', b'\xd0\xb1\xd0\xbe\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 40')], max_length=1, null=True, verbose_name='\u0412\u043e\u0437\u0440\u0430\u0441\u0442')), |
('age', models.CharField(blank=True, choices=[(b'1', b'\xd0\xb4\xd0\xbe 18'), (b'2', b'18-25'), (b'3', b'25-30'), (b'4', b'30-40'), (b'5', b'\xd0\xb1\xd0\xbe\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 40')], max_length=1, null=True, verbose_name='\u0412\u043e\u0437\u0440\u0430\u0441\u0442')), |
||||||
('description', models.TextField(blank=True, verbose_name='\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u044b \u043e\u0442\u0432\u0435\u0442')), |
('description', models.TextField(blank=True, verbose_name='\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u044b \u043e\u0442\u0432\u0435\u0442')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'verbose_name': '\u0410\u043a\u0435\u0442\u0430', |
'verbose_name': '\u0410\u043a\u0435\u0442\u0430', |
||||||
'verbose_name_plural': '\u0410\u043d\u043a\u0435\u0442\u044b', |
'verbose_name_plural': '\u0410\u043d\u043a\u0435\u0442\u044b', |
||||||
}, |
}, |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 10, 18, 23, 39, 577802), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 10, 18, 23, 39, 577802), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='questionnaire', |
model_name='questionnaire', |
||||||
name='user', |
name='user', |
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c'), |
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,61 +1,61 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-05-26 14:27 |
# Generated by Django 1.9.2 on 2016-05-26 14:27 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.conf import settings |
from django.conf import settings |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
import django.db.models.deletion |
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0027_auto_20160510_1823'), |
('access', '0027_auto_20160510_1823'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='Document', |
name='Document', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('title', models.CharField(max_length=255, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a')), |
('title', models.CharField(max_length=255, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a')), |
||||||
('status', models.CharField(choices=[(b'W', '\u041d\u0430 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0438'), (b'F', '\u041e\u0444\u043e\u0440\u043c\u043b\u0435\u043d')], default=b'W', editable=False, max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441')), |
('status', models.CharField(choices=[(b'W', '\u041d\u0430 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0438'), (b'F', '\u041e\u0444\u043e\u0440\u043c\u043b\u0435\u043d')], default=b'W', editable=False, max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441')), |
||||||
('date', models.DateField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f')), |
('date', models.DateField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f')), |
||||||
('in_date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f')), |
('in_date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'verbose_name': '\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442', |
'verbose_name': '\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442', |
||||||
'verbose_name_plural': '\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b', |
'verbose_name_plural': '\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b', |
||||||
}, |
}, |
||||||
), |
), |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='DocumentScan', |
name='DocumentScan', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('page', models.CharField(max_length=255, verbose_name='\u2116 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b')), |
('page', models.CharField(max_length=255, verbose_name='\u2116 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b')), |
||||||
('file', models.ImageField(upload_to=b'documents', verbose_name='\u0421\u043a\u0430\u043d')), |
('file', models.ImageField(upload_to=b'documents', verbose_name='\u0421\u043a\u0430\u043d')), |
||||||
('date', models.DateTimeField(default=datetime.datetime.now, editable=False, verbose_name='\u0412\u0440\u0435\u043c\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f')), |
('date', models.DateTimeField(default=datetime.datetime.now, editable=False, verbose_name='\u0412\u0440\u0435\u043c\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'ordering': ['page'], |
'ordering': ['page'], |
||||||
'verbose_name': '\u0421\u043a\u0430\u043d \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430', |
'verbose_name': '\u0421\u043a\u0430\u043d \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430', |
||||||
'verbose_name_plural': '\u0421\u043a\u0430\u043d\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432', |
'verbose_name_plural': '\u0421\u043a\u0430\u043d\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432', |
||||||
}, |
}, |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 26, 14, 27, 8, 278824), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 26, 14, 27, 8, 278824), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='document', |
model_name='document', |
||||||
name='scans', |
name='scans', |
||||||
field=models.ManyToManyField(blank=True, to='access.DocumentScan', verbose_name='\u0421\u043a\u0430\u043d\u044b'), |
field=models.ManyToManyField(blank=True, to='access.DocumentScan', verbose_name='\u0421\u043a\u0430\u043d\u044b'), |
||||||
), |
), |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='document', |
model_name='document', |
||||||
name='user', |
name='user', |
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c'), |
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,38 +1,38 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-05-26 14:35 |
# Generated by Django 1.9.2 on 2016-05-26 14:35 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0028_auto_20160526_1427'), |
('access', '0028_auto_20160526_1427'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.RemoveField( |
migrations.RemoveField( |
||||||
model_name='document', |
model_name='document', |
||||||
name='scans', |
name='scans', |
||||||
), |
), |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='document', |
model_name='document', |
||||||
name='file', |
name='file', |
||||||
field=models.ImageField(null=True, upload_to=b'documents', verbose_name='\u0421\u043a\u0430\u043d'), |
field=models.ImageField(null=True, upload_to=b'documents', verbose_name='\u0421\u043a\u0430\u043d'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='document', |
model_name='document', |
||||||
name='in_date', |
name='in_date', |
||||||
field=models.DateTimeField(default=datetime.datetime.now, editable=False, verbose_name='\u0414\u0430\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f'), |
field=models.DateTimeField(default=datetime.datetime.now, editable=False, verbose_name='\u0414\u0430\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 26, 14, 35, 38, 532166), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 26, 14, 35, 38, 532166), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
migrations.DeleteModel( |
migrations.DeleteModel( |
||||||
name='DocumentScan', |
name='DocumentScan', |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,26 +1,26 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-05-26 17:27 |
# Generated by Django 1.9.2 on 2016-05-26 17:27 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0029_auto_20160526_1435'), |
('access', '0029_auto_20160526_1435'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='document', |
model_name='document', |
||||||
name='file', |
name='file', |
||||||
field=models.FileField(blank=True, null=True, upload_to=b'documents', verbose_name='\u0421\u043a\u0430\u043d'), |
field=models.FileField(blank=True, null=True, upload_to=b'documents', verbose_name='\u0421\u043a\u0430\u043d'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 26, 17, 27, 27, 217966), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 26, 17, 27, 27, 217966), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,26 +1,26 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-05-31 12:40 |
# Generated by Django 1.9.2 on 2016-05-31 12:40 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0030_auto_20160526_1727'), |
('access', '0030_auto_20160526_1727'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 31, 12, 40, 17, 702246), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 5, 31, 12, 40, 17, 702246), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='in_role', |
name='in_role', |
||||||
field=models.CharField(choices=[(b'U', '\u0421\u0442\u0443\u0434\u0435\u043d\u0442 \u0448\u043a\u043e\u043b\u044b'), (b'T', '\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c'), (b'M', '\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440'), (b'S', '\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c'), (b'S2', '\u041e\u043a\u043e \u0441\u0430\u0443\u0440\u043e\u043d\u0430'), (b'A', '\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440'), (b'Ts', '\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c'), (b'F', '\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430')], default=b'U', max_length=2, verbose_name='\u0420\u043e\u043b\u044c'), |
field=models.CharField(choices=[(b'U', '\u0421\u0442\u0443\u0434\u0435\u043d\u0442 \u0448\u043a\u043e\u043b\u044b'), (b'T', '\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c'), (b'M', '\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440'), (b'S', '\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c'), (b'S2', '\u041e\u043a\u043e \u0441\u0430\u0443\u0440\u043e\u043d\u0430'), (b'A', '\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440'), (b'Ts', '\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c'), (b'F', '\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430')], default=b'U', max_length=2, verbose_name='\u0420\u043e\u043b\u044c'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-06-01 12:56 |
# Generated by Django 1.9.2 on 2016-06-01 12:56 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0031_auto_20160531_1240'), |
('access', '0031_auto_20160531_1240'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 1, 12, 56, 55, 630156), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 1, 12, 56, 55, 630156), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-06-07 16:14 |
# Generated by Django 1.9.2 on 2016-06-07 16:14 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0032_auto_20160601_1256'), |
('access', '0032_auto_20160601_1256'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 7, 16, 14, 9, 853317), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 7, 16, 14, 9, 853317), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-06-07 20:02 |
# Generated by Django 1.9.2 on 2016-06-07 20:02 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0033_auto_20160607_1614'), |
('access', '0033_auto_20160607_1614'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 7, 20, 2, 41, 564255), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 7, 20, 2, 41, 564255), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-06-07 20:34 |
# Generated by Django 1.9.2 on 2016-06-07 20:34 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0034_auto_20160607_2002'), |
('access', '0034_auto_20160607_2002'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 7, 20, 34, 43, 673956), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 7, 20, 34, 43, 673956), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-06-07 20:51 |
# Generated by Django 1.9.2 on 2016-06-07 20:51 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0035_auto_20160607_2034'), |
('access', '0035_auto_20160607_2034'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 7, 20, 51, 37, 90991), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 7, 20, 51, 37, 90991), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-06-08 17:00 |
# Generated by Django 1.9.2 on 2016-06-08 17:00 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0036_auto_20160607_2051'), |
('access', '0036_auto_20160607_2051'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 8, 16, 59, 59, 621057), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 8, 16, 59, 59, 621057), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-06-08 17:05 |
# Generated by Django 1.9.2 on 2016-06-08 17:05 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0037_auto_20160608_1700'), |
('access', '0037_auto_20160608_1700'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 8, 17, 5, 4, 809207), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 8, 17, 5, 4, 809207), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-06-08 18:04 |
# Generated by Django 1.9.2 on 2016-06-08 18:04 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0038_auto_20160608_1705'), |
('access', '0038_auto_20160608_1705'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 8, 18, 4, 57, 435515), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 8, 18, 4, 57, 435515), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-06-08 18:41 |
# Generated by Django 1.9.2 on 2016-06-08 18:41 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0039_auto_20160608_1804'), |
('access', '0039_auto_20160608_1804'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 8, 18, 41, 17, 775100), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 8, 18, 41, 17, 775100), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-06-09 14:29 |
# Generated by Django 1.9.2 on 2016-06-09 14:29 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0040_auto_20160608_1841'), |
('access', '0040_auto_20160608_1841'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 9, 14, 29, 17, 471762), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 9, 14, 29, 17, 471762), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-06-09 14:42 |
# Generated by Django 1.9.2 on 2016-06-09 14:42 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0041_auto_20160609_1429'), |
('access', '0041_auto_20160609_1429'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 9, 14, 42, 25, 538404), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 9, 14, 42, 25, 538404), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-06-09 15:34 |
# Generated by Django 1.9.2 on 2016-06-09 15:34 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0042_auto_20160609_1442'), |
('access', '0042_auto_20160609_1442'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 9, 15, 34, 28, 437751), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 9, 15, 34, 28, 437751), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-06-09 15:36 |
# Generated by Django 1.9.2 on 2016-06-09 15:36 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0043_auto_20160609_1534'), |
('access', '0043_auto_20160609_1534'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 9, 15, 36, 24, 57777), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 9, 15, 36, 24, 57777), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-06-09 15:36 |
# Generated by Django 1.9.2 on 2016-06-09 15:36 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0044_auto_20160609_1536'), |
('access', '0044_auto_20160609_1536'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 9, 15, 36, 29, 820351), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 9, 15, 36, 29, 820351), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-06-09 15:46 |
# Generated by Django 1.9.2 on 2016-06-09 15:46 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0045_auto_20160609_1536'), |
('access', '0045_auto_20160609_1536'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 9, 15, 46, 17, 181201), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 9, 15, 46, 17, 181201), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-06-09 16:27 |
# Generated by Django 1.9.2 on 2016-06-09 16:27 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0046_auto_20160609_1546'), |
('access', '0046_auto_20160609_1546'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 9, 16, 27, 14, 187304), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 9, 16, 27, 14, 187304), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-06-09 22:24 |
# Generated by Django 1.9.2 on 2016-06-09 22:24 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0047_auto_20160609_1627'), |
('access', '0047_auto_20160609_1627'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 9, 22, 24, 43, 724608), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 9, 22, 24, 43, 724608), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-06-28 17:31 |
# Generated by Django 1.9.2 on 2016-06-28 17:31 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0048_auto_20160609_2224'), |
('access', '0048_auto_20160609_2224'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 28, 17, 31, 12, 186349), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 6, 28, 17, 31, 12, 186349), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-07-11 15:18 |
# Generated by Django 1.9.2 on 2016-07-11 15:18 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0049_auto_20160628_1731'), |
('access', '0049_auto_20160628_1731'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 7, 11, 15, 18, 42, 159532), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 7, 11, 15, 18, 42, 159532), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-07-13 20:38 |
# Generated by Django 1.9.2 on 2016-07-13 20:38 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0050_auto_20160711_1518'), |
('access', '0050_auto_20160711_1518'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 7, 13, 20, 38, 33, 272929), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 7, 13, 20, 38, 33, 272929), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-07-18 17:14 |
# Generated by Django 1.9.2 on 2016-07-18 17:14 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0051_auto_20160713_2038'), |
('access', '0051_auto_20160713_2038'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 7, 18, 17, 14, 45, 907017), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 7, 18, 17, 14, 45, 907017), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-07-18 17:14 |
# Generated by Django 1.9.2 on 2016-07-18 17:14 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0052_auto_20160718_1714'), |
('access', '0052_auto_20160718_1714'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 7, 18, 17, 14, 57, 300386), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 7, 18, 17, 14, 57, 300386), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,31 +1,31 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-07-25 15:51 |
# Generated by Django 1.9.2 on 2016-07-25 15:51 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0053_auto_20160718_1714'), |
('access', '0053_auto_20160718_1714'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 7, 25, 15, 51, 36, 404906), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 7, 25, 15, 51, 36, 404906), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='is_admin', |
name='is_admin', |
||||||
field=models.BooleanField(default=False, editable=False), |
field=models.BooleanField(default=False, editable=False), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='is_staff', |
name='is_staff', |
||||||
field=models.BooleanField(default=False, editable=False), |
field=models.BooleanField(default=False, editable=False), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,36 +1,36 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-08-09 16:53 |
# Generated by Django 1.9.2 on 2016-08-09 16:53 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0054_auto_20160725_1551'), |
('access', '0054_auto_20160725_1551'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='sync', |
name='sync', |
||||||
field=models.BooleanField(default=False, verbose_name='\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d'), |
field=models.BooleanField(default=False, verbose_name='\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='trafhistory', |
model_name='trafhistory', |
||||||
name='action', |
name='action', |
||||||
field=models.CharField(choices=[(b'G', b'\xd0\x9f\xd0\xbe\xd0\xbb\xd1\x83\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd1\x85'), (b'D', b'\xd0\x97\xd0\xb0\xd0\xbf\xd0\xb8\xd1\x81\xd1\x8c \xd0\xb4\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd1\x85'), (b'C', b'\xd0\xa1\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xbf\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xb7\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8f'), (b'O', b'\xd0\xa1\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5 \xd1\x81\xd1\x87\xd0\xb5\xd1\x82\xd0\xb0')], max_length=1, verbose_name='\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435'), |
field=models.CharField(choices=[(b'G', b'\xd0\x9f\xd0\xbe\xd0\xbb\xd1\x83\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd1\x85'), (b'D', b'\xd0\x97\xd0\xb0\xd0\xbf\xd0\xb8\xd1\x81\xd1\x8c \xd0\xb4\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd1\x85'), (b'C', b'\xd0\xa1\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xbf\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xb7\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8f'), (b'O', b'\xd0\xa1\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5 \xd1\x81\xd1\x87\xd0\xb5\xd1\x82\xd0\xb0')], max_length=1, verbose_name='\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 8, 9, 16, 53, 12, 35311), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 8, 9, 16, 53, 12, 35311), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='private', |
name='private', |
||||||
field=models.CharField(choices=[(b'A', b'\xd0\x92\xd1\x81\xd0\xb5\xd0\xbc\xd1\x83 \xd0\xb8\xd0\xbd\xd1\x82\xd0\xb5\xd1\x80\xd0\xbd\xd0\xb5\xd1\x82\xd1\x83'), (b'U', b'\xd0\xa2\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xba\xd0\xbe \xd0\xbf\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xb7\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8f\xd0\xbc \xd1\x81\xd0\xb8\xd1\x81\xd1\x82\xd0\xb5\xd0\xbc\xd1\x8b'), (b'L', b'\xd0\x9f\xd0\xbe \xd0\xbf\xd1\x80\xd1\x8f\xd0\xbc\xd0\xbe\xd0\xb9 \xd1\x81\xd1\x81\xd1\x8b\xd0\xbb\xd0\xba\xd0\xb5'), (b'B', b'\xd0\xa2\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xba\xd0\xbe \xd0\xbc\xd0\xbd\xd0\xb5')], default=b'A', max_length=1, verbose_name='\u041f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044f'), |
field=models.CharField(choices=[(b'A', b'\xd0\x92\xd1\x81\xd0\xb5\xd0\xbc\xd1\x83 \xd0\xb8\xd0\xbd\xd1\x82\xd0\xb5\xd1\x80\xd0\xbd\xd0\xb5\xd1\x82\xd1\x83'), (b'U', b'\xd0\xa2\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xba\xd0\xbe \xd0\xbf\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xb7\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8f\xd0\xbc \xd1\x81\xd0\xb8\xd1\x81\xd1\x82\xd0\xb5\xd0\xbc\xd1\x8b'), (b'L', b'\xd0\x9f\xd0\xbe \xd0\xbf\xd1\x80\xd1\x8f\xd0\xbc\xd0\xbe\xd0\xb9 \xd1\x81\xd1\x81\xd1\x8b\xd0\xbb\xd0\xba\xd0\xb5'), (b'B', b'\xd0\xa2\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xba\xd0\xbe \xd0\xbc\xd0\xbd\xd0\xb5')], default=b'A', max_length=1, verbose_name='\u041f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044f'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,26 +1,26 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-08-09 16:59 |
# Generated by Django 1.9.2 on 2016-08-09 16:59 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0055_auto_20160809_1653'), |
('access', '0055_auto_20160809_1653'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='sync_date', |
name='sync_date', |
||||||
field=models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e'), |
field=models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 8, 9, 16, 59, 0, 490315), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 8, 9, 16, 59, 0, 490315), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-08-10 12:34 |
# Generated by Django 1.9.2 on 2016-08-10 12:34 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0056_auto_20160809_1659'), |
('access', '0056_auto_20160809_1659'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 8, 10, 12, 34, 1, 608983), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 8, 10, 12, 34, 1, 608983), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,21 +1,21 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-08-14 17:36 |
# Generated by Django 1.9.2 on 2016-08-14 17:36 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0057_auto_20160810_1234'), |
('access', '0057_auto_20160810_1234'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 8, 14, 17, 36, 41, 669896), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 8, 14, 17, 36, 41, 669896), null=True, verbose_name='\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,198 +1,198 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.3 on 2016-08-15 18:53 |
# Generated by Django 1.9.3 on 2016-08-15 18:53 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.conf import settings |
from django.conf import settings |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
import django.db.models.deletion |
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0058_auto_20160814_1736'), |
('access', '0058_auto_20160814_1736'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='UserSync', |
name='UserSync', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('date', models.DateTimeField(default=datetime.datetime.now, verbose_name='Дата начала')), |
('date', models.DateTimeField(default=datetime.datetime.now, verbose_name='Дата начала')), |
||||||
('f_date', models.DateTimeField(blank=True, null=True, verbose_name='Дата завершения процеса')), |
('f_date', models.DateTimeField(blank=True, null=True, verbose_name='Дата завершения процеса')), |
||||||
('source', models.CharField(max_length=255, verbose_name='Источник синхронизации')), |
('source', models.CharField(max_length=255, verbose_name='Источник синхронизации')), |
||||||
('dist', models.CharField(max_length=255, verbose_name='Получатель синхронизации')), |
('dist', models.CharField(max_length=255, verbose_name='Получатель синхронизации')), |
||||||
('result', models.BooleanField(default=False, verbose_name='Результат синхронизации')), |
('result', models.BooleanField(default=False, verbose_name='Результат синхронизации')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'verbose_name': 'Задача синхронизации', |
'verbose_name': 'Задача синхронизации', |
||||||
'verbose_name_plural': 'Задачи синхронизации', |
'verbose_name_plural': 'Задачи синхронизации', |
||||||
}, |
}, |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='actionj', |
model_name='actionj', |
||||||
name='a_type', |
name='a_type', |
||||||
field=models.CharField(choices=[('B', 'b-default'), ('P', 'b-primary'), ('S', 'b-success'), ('I', 'b-info'), ('W', 'b-warning'), ('D', 'b-danger')], default='B', max_length=1, verbose_name='Тип события'), |
field=models.CharField(choices=[('B', 'b-default'), ('P', 'b-primary'), ('S', 'b-success'), ('I', 'b-info'), ('W', 'b-warning'), ('D', 'b-danger')], default='B', max_length=1, verbose_name='Тип события'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='document', |
model_name='document', |
||||||
name='file', |
name='file', |
||||||
field=models.FileField(blank=True, null=True, upload_to='documents', verbose_name='Скан'), |
field=models.FileField(blank=True, null=True, upload_to='documents', verbose_name='Скан'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='document', |
model_name='document', |
||||||
name='status', |
name='status', |
||||||
field=models.CharField(choices=[('W', 'На оформлении'), ('F', 'Оформлен')], default='W', editable=False, max_length=1, verbose_name='Статус'), |
field=models.CharField(choices=[('W', 'На оформлении'), ('F', 'Оформлен')], default='W', editable=False, max_length=1, verbose_name='Статус'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='questionnaire', |
model_name='questionnaire', |
||||||
name='age', |
name='age', |
||||||
field=models.CharField(blank=True, choices=[('1', 'до 18'), ('2', '18-25'), ('3', '25-30'), ('4', '30-40'), ('5', 'больше 40')], max_length=1, null=True, verbose_name='Возраст'), |
field=models.CharField(blank=True, choices=[('1', 'до 18'), ('2', '18-25'), ('3', '25-30'), ('4', '30-40'), ('5', 'больше 40')], max_length=1, null=True, verbose_name='Возраст'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='questionnaire', |
model_name='questionnaire', |
||||||
name='aim', |
name='aim', |
||||||
field=models.CharField(blank=True, choices=[('1', 'Да, в офисе'), ('2', 'Да, свой проект'), ('3', 'Да, на фрилансе'), ('4', 'Нет, изучаю для себя')], max_length=1, null=True, verbose_name='Цель обучения'), |
field=models.CharField(blank=True, choices=[('1', 'Да, в офисе'), ('2', 'Да, свой проект'), ('3', 'Да, на фрилансе'), ('4', 'Нет, изучаю для себя')], max_length=1, null=True, verbose_name='Цель обучения'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='questionnaire', |
model_name='questionnaire', |
||||||
name='experience', |
name='experience', |
||||||
field=models.CharField(blank=True, choices=[('1', 'Только начинаю'), ('2', 'Да, менее года'), ('3', 'Да, 1-2 года'), ('4', 'Да, более 2 лет')], max_length=1, null=True, verbose_name='Опыт'), |
field=models.CharField(blank=True, choices=[('1', 'Только начинаю'), ('2', 'Да, менее года'), ('3', 'Да, 1-2 года'), ('4', 'Да, более 2 лет')], max_length=1, null=True, verbose_name='Опыт'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='questionnaire', |
model_name='questionnaire', |
||||||
name='fully', |
name='fully', |
||||||
field=models.CharField(choices=[('1', 'Флаги'), ('2', 'Свободный ответ'), ('3', 'Завершено')], default=1, max_length=1, verbose_name='Стадия'), |
field=models.CharField(choices=[('1', 'Флаги'), ('2', 'Свободный ответ'), ('3', 'Завершено')], default=1, max_length=1, verbose_name='Стадия'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='questionnaire', |
model_name='questionnaire', |
||||||
name='male', |
name='male', |
||||||
field=models.CharField(blank=True, choices=[('M', 'Мужчина'), ('W', 'Женщина')], max_length=1, null=True, verbose_name='Пол'), |
field=models.CharField(blank=True, choices=[('M', 'Мужчина'), ('W', 'Женщина')], max_length=1, null=True, verbose_name='Пол'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='trafhistory', |
model_name='trafhistory', |
||||||
name='action', |
name='action', |
||||||
field=models.CharField(choices=[('G', 'Получение данных'), ('D', 'Запись данных'), ('C', 'Создание пользователя'), ('O', 'Создание счета')], max_length=1, verbose_name='Действие'), |
field=models.CharField(choices=[('G', 'Получение данных'), ('D', 'Запись данных'), ('C', 'Создание пользователя'), ('O', 'Создание счета')], max_length=1, verbose_name='Действие'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='avatar', |
name='avatar', |
||||||
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Ключ аватара'), |
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Ключ аватара'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='back_phone', |
name='back_phone', |
||||||
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Предидущий телефон'), |
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Предидущий телефон'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='city', |
name='city', |
||||||
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Город'), |
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Город'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 8, 15, 18, 53, 53, 111817), null=True, verbose_name='Задержка до. Не включая этот день.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 8, 15, 18, 53, 53, 111817), null=True, verbose_name='Задержка до. Не включая этот день.'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='email', |
name='email', |
||||||
field=models.EmailField(blank=True, db_index=True, editable=False, max_length=255, unique=True, verbose_name='email'), |
field=models.EmailField(blank=True, db_index=True, editable=False, max_length=255, unique=True, verbose_name='email'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='facebook', |
name='facebook', |
||||||
field=models.CharField(blank=True, default='', max_length=255), |
field=models.CharField(blank=True, default='', max_length=255), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='fname', |
name='fname', |
||||||
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Фамилия'), |
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Фамилия'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='in_avatar', |
name='in_avatar', |
||||||
field=models.ImageField(blank=True, editable=False, null=True, upload_to='', verbose_name='Наш аватар'), |
field=models.ImageField(blank=True, editable=False, null=True, upload_to='', verbose_name='Наш аватар'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='in_role', |
name='in_role', |
||||||
field=models.CharField(choices=[('U', 'Студент школы'), ('T', 'Преподаватель'), ('M', 'Менеджер'), ('S', 'Руководитель'), ('S2', 'Око саурона'), ('A', 'Администратор'), ('Ts', 'Тестовый пользователь'), ('F', 'Пользователь свободного счета')], default='U', max_length=2, verbose_name='Роль'), |
field=models.CharField(choices=[('U', 'Студент школы'), ('T', 'Преподаватель'), ('M', 'Менеджер'), ('S', 'Руководитель'), ('S2', 'Око саурона'), ('A', 'Администратор'), ('Ts', 'Тестовый пользователь'), ('F', 'Пользователь свободного счета')], default='U', max_length=2, verbose_name='Роль'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='linkedin', |
name='linkedin', |
||||||
field=models.CharField(blank=True, default='', max_length=255), |
field=models.CharField(blank=True, default='', max_length=255), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='name', |
name='name', |
||||||
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Имя'), |
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Имя'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='odnoklassniki', |
name='odnoklassniki', |
||||||
field=models.CharField(blank=True, default='', max_length=255), |
field=models.CharField(blank=True, default='', max_length=255), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='oname', |
name='oname', |
||||||
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Отчество'), |
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Отчество'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='phone', |
name='phone', |
||||||
field=models.CharField(default='', max_length=255, verbose_name='Телефон'), |
field=models.CharField(default='', max_length=255, verbose_name='Телефон'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='private', |
name='private', |
||||||
field=models.CharField(choices=[('A', 'Всему интернету'), ('U', 'Только пользователям системы'), ('L', 'По прямой ссылке'), ('B', 'Только мне')], default='A', max_length=1, verbose_name='Приватность профиля'), |
field=models.CharField(choices=[('A', 'Всему интернету'), ('U', 'Только пользователям системы'), ('L', 'По прямой ссылке'), ('B', 'Только мне')], default='A', max_length=1, verbose_name='Приватность профиля'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='refer', |
name='refer', |
||||||
field=models.CharField(choices=[('S', 'Органично'), ('B', 'Привлечен')], default='S', max_length=1, null=True, verbose_name='Источник'), |
field=models.CharField(choices=[('S', 'Органично'), ('B', 'Привлечен')], default='S', max_length=1, null=True, verbose_name='Источник'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='refer_source', |
name='refer_source', |
||||||
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Источник пользователя'), |
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Источник пользователя'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='reg_status', |
name='reg_status', |
||||||
field=models.CharField(choices=[('1', 'Пароль'), ('2', 'О себе'), ('3', 'Фото'), ('4', 'Закончена')], default='1', max_length=1, verbose_name='Статус регистрации'), |
field=models.CharField(choices=[('1', 'Пароль'), ('2', 'О себе'), ('3', 'Фото'), ('4', 'Закончена')], default='1', max_length=1, verbose_name='Статус регистрации'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='skype', |
name='skype', |
||||||
field=models.CharField(blank=True, default='', max_length=300), |
field=models.CharField(blank=True, default='', max_length=300), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='status', |
name='status', |
||||||
field=models.CharField(choices=[('ON', 'on-line'), ('OFF', 'off-line')], default='ON', max_length=9), |
field=models.CharField(choices=[('ON', 'on-line'), ('OFF', 'off-line')], default='ON', max_length=9), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='token', |
name='token', |
||||||
field=models.CharField(blank=True, default='', max_length=255), |
field=models.CharField(blank=True, default='', max_length=255), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='unique_role', |
name='unique_role', |
||||||
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Уникальная роль'), |
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Уникальная роль'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='vk', |
name='vk', |
||||||
field=models.CharField(blank=True, default='', max_length=255), |
field=models.CharField(blank=True, default='', max_length=255), |
||||||
), |
), |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='usersync', |
model_name='usersync', |
||||||
name='user', |
name='user', |
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Синхронизируемый'), |
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Синхронизируемый'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,26 +1,26 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.3 on 2016-08-15 18:55 |
# Generated by Django 1.9.3 on 2016-08-15 18:55 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
import datetime |
import datetime |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('access', '0059_auto_20160815_1853'), |
('access', '0059_auto_20160815_1853'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='usersync', |
model_name='usersync', |
||||||
name='data', |
name='data', |
||||||
field=models.TextField(blank=True, default='', verbose_name='Сырые данные'), |
field=models.TextField(blank=True, default='', verbose_name='Сырые данные'), |
||||||
), |
), |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='user', |
model_name='user', |
||||||
name='delay_date', |
name='delay_date', |
||||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 8, 15, 18, 55, 46, 279309), null=True, verbose_name='Задержка до. Не включая этот день.'), |
field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 8, 15, 18, 55, 46, 279309), null=True, verbose_name='Задержка до. Не включая этот день.'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,448 +1,448 @@ |
|||||||
# coding=utf-8 |
# coding=utf-8 |
||||||
import datetime |
import datetime |
||||||
|
|
||||||
from lms.decors import out_api_decor, api_decor |
from lms.decors import out_api_decor, api_decor |
||||||
from access.models import TrafSource, User, TrafHistory # , UserSync |
from access.models import TrafSource, User, TrafHistory # , UserSync |
||||||
from lms.regex import check_email |
from lms.regex import check_email |
||||||
from management.letters import sent_registration |
from management.letters import sent_registration |
||||||
from finance.models import Price, Bill |
from finance.models import Price, Bill |
||||||
from lms.tools import out_date_format |
from lms.tools import out_date_format |
||||||
import hashlib |
import hashlib |
||||||
from django.contrib import auth |
from django.contrib import auth |
||||||
from lms.settings import SECRET_KEY, SUPERVISOR, MANAGER |
from lms.settings import SECRET_KEY, SUPERVISOR, MANAGER |
||||||
from django.http import Http404 |
from django.http import Http404 |
||||||
|
|
||||||
|
|
||||||
@api_decor(without_auth=False) |
@api_decor(without_auth=False) |
||||||
def set_in_user(request, context): |
def set_in_user(request, context): |
||||||
# Наша установка |
# Наша установка |
||||||
data = None |
data = None |
||||||
context['code'] = '0' |
context['code'] = '0' |
||||||
context['response'] = '' |
context['response'] = '' |
||||||
if request.user and request.user.is_authenticated() and request.user.is_admin: |
if request.user and request.user.is_authenticated() and request.user.is_admin: |
||||||
if request.method: |
if request.method: |
||||||
if request.method == 'POST': |
if request.method == 'POST': |
||||||
data = request.POST |
data = request.POST |
||||||
elif request.method == 'GET': |
elif request.method == 'GET': |
||||||
data = request.GET |
data = request.GET |
||||||
else: |
else: |
||||||
raise Http404 |
raise Http404 |
||||||
|
|
||||||
if not data or not (data.get('SERVICE') or data.get('USER')) or (data.get('SERVICE') and not data.get('USER')): |
if not data or not (data.get('SERVICE') or data.get('USER')) or (data.get('SERVICE') and not data.get('USER')): |
||||||
context['response'] = u'REQUEST IS NOT VALID. ' \ |
context['response'] = u'REQUEST IS NOT VALID. ' \ |
||||||
u'USER - user email (required) / ' \ |
u'USER - user email (required) / ' \ |
||||||
u'SERVICE - service token / ' \ |
u'SERVICE - service token / ' \ |
||||||
u'GIFT - will set bill in a payed status / ' \ |
u'GIFT - will set bill in a payed status / ' \ |
||||||
u'PRICE - set self price to the service' |
u'PRICE - set self price to the service' |
||||||
return context |
return context |
||||||
|
|
||||||
service = None |
service = None |
||||||
if data.get('SERVICE'): |
if data.get('SERVICE'): |
||||||
try: |
try: |
||||||
service = Price.objects.get(key=data.get('SERVICE')) |
service = Price.objects.get(key=data.get('SERVICE')) |
||||||
except Price.DoesNotExist: |
except Price.DoesNotExist: |
||||||
context['response'] = u'SERVICE NOT FOUND' |
context['response'] = u'SERVICE NOT FOUND' |
||||||
return context |
return context |
||||||
|
|
||||||
if data.get('USER') and check_email(data.get('USER')): |
if data.get('USER') and check_email(data.get('USER')): |
||||||
result, user = self_create_user(data.get('USER'), sent_letter=True) |
result, user = self_create_user(data.get('USER'), sent_letter=True) |
||||||
context['response'] = 'USER CREATED.' if result else 'USER ALREADY EXISTS.' |
context['response'] = 'USER CREATED.' if result else 'USER ALREADY EXISTS.' |
||||||
|
|
||||||
elif not check_email(data.get('USER')): |
elif not check_email(data.get('USER')): |
||||||
context['response'] = 'USER EMAIL IS NOT VALID' |
context['response'] = 'USER EMAIL IS NOT VALID' |
||||||
|
|
||||||
if service and user: |
if service and user: |
||||||
bill, created = Bill.objects.get_or_create(service=service, |
bill, created = Bill.objects.get_or_create(service=service, |
||||||
gift=bool(data.get('GIFT')), |
gift=bool(data.get('GIFT')), |
||||||
user=user, |
user=user, |
||||||
status='F' if data.get('GIFT') else 'W', |
status='F' if data.get('GIFT') else 'W', |
||||||
manager=User.objects.get(email=MANAGER), |
manager=User.objects.get(email=MANAGER), |
||||||
price=data['PRICE'] if data.get('PRICE') else service.cost) |
price=data['PRICE'] if data.get('PRICE') else service.cost) |
||||||
if created: |
if created: |
||||||
if data.get('GIFT'): |
if data.get('GIFT'): |
||||||
context['response'] += ' ACCESS OPENED. IT IS A GIFT.' |
context['response'] += ' ACCESS OPENED. IT IS A GIFT.' |
||||||
else: |
else: |
||||||
context['response'] += ' THIS OFFER SENT TO THE USER. THE SERVICE PRICE: %s' % str(bill.price) |
context['response'] += ' THIS OFFER SENT TO THE USER. THE SERVICE PRICE: %s' % str(bill.price) |
||||||
|
|
||||||
else: |
else: |
||||||
context['response'] += ' BILL ALREADY EXISTS id:%s' % str(bill.id) |
context['response'] += ' BILL ALREADY EXISTS id:%s' % str(bill.id) |
||||||
|
|
||||||
return context |
return context |
||||||
|
|
||||||
|
|
||||||
def self_check_token(token): |
def self_check_token(token): |
||||||
try: |
try: |
||||||
source = TrafSource.objects.get(on=True, token=token) |
source = TrafSource.objects.get(on=True, token=token) |
||||||
except TrafSource.DoesNotExist: |
except TrafSource.DoesNotExist: |
||||||
return [False, None] |
return [False, None] |
||||||
else: |
else: |
||||||
return [True, source] |
return [True, source] |
||||||
|
|
||||||
|
|
||||||
def self_check_user_exists(email): |
def self_check_user_exists(email): |
||||||
email = email.lower() |
email = email.lower() |
||||||
try: |
try: |
||||||
user = User.objects.get(email=email) |
user = User.objects.get(email=email) |
||||||
except User.DoesNotExist: |
except User.DoesNotExist: |
||||||
return [False, None] |
return [False, None] |
||||||
else: |
else: |
||||||
return [True, user] |
return [True, user] |
||||||
|
|
||||||
|
|
||||||
def self_create_user(email, phone=None, sent_letter=True): |
def self_create_user(email, phone=None, sent_letter=True): |
||||||
email = email.lower() |
email = email.lower() |
||||||
try: |
try: |
||||||
user = User.objects.get(email=email) |
user = User.objects.get(email=email) |
||||||
except User.DoesNotExist: |
except User.DoesNotExist: |
||||||
user = User.objects.create_user(email=email, sent_letter=sent_letter) |
user = User.objects.create_user(email=email, sent_letter=sent_letter) |
||||||
user.reg_status = '1' |
user.reg_status = '1' |
||||||
user.refer = 'B' |
user.refer = 'B' |
||||||
user.is_active = False |
user.is_active = False |
||||||
if phone: |
if phone: |
||||||
user.phone = phone |
user.phone = phone |
||||||
user.save() |
user.save() |
||||||
return [True, user] |
return [True, user] |
||||||
|
|
||||||
else: |
else: |
||||||
return [False, user] |
return [False, user] |
||||||
|
|
||||||
|
|
||||||
def self_create_bill(user, service_key, uid=None): |
def self_create_bill(user, service_key, uid=None): |
||||||
# Создание счета для пользователя по ключу услуги |
# Создание счета для пользователя по ключу услуги |
||||||
description = u'' |
description = u'' |
||||||
bill = None |
bill = None |
||||||
result = False |
result = False |
||||||
try: |
try: |
||||||
price = Price.objects.get(key=service_key) |
price = Price.objects.get(key=service_key) |
||||||
except Price.DoesNotExist: |
except Price.DoesNotExist: |
||||||
description = u'Счет по ключу не найден' |
description = u'Счет по ключу не найден' |
||||||
else: |
else: |
||||||
bill, c = Bill.objects.get_or_create(user=user, manager=User.objects.get(email=SUPERVISOR), service=price) |
bill, c = Bill.objects.get_or_create(user=user, manager=User.objects.get(email=SUPERVISOR), service=price) |
||||||
|
|
||||||
if bill.status == 'F': |
if bill.status == 'F': |
||||||
description = u'Счет для данного пользователя уже был создан {0}'.format( |
description = u'Счет для данного пользователя уже был создан {0}'.format( |
||||||
out_date_format(bill.finish_date, no_time=True)) |
out_date_format(bill.finish_date, no_time=True)) |
||||||
result = False |
result = False |
||||||
else: |
else: |
||||||
result = True |
result = True |
||||||
description = u'Счет успешно создан. Приятного обучения' |
description = u'Счет успешно создан. Приятного обучения' |
||||||
if bill.status in ['C', 'H']: |
if bill.status in ['C', 'H']: |
||||||
bill.status = 'P' |
bill.status = 'P' |
||||||
bill.status_changed = datetime.datetime.now() |
bill.status_changed = datetime.datetime.now() |
||||||
bill.save() |
bill.save() |
||||||
|
|
||||||
if uid: |
if uid: |
||||||
bill.admitad_uid = uid |
bill.admitad_uid = uid |
||||||
bill.save() |
bill.save() |
||||||
|
|
||||||
return [result, description, bill] |
return [result, description, bill] |
||||||
|
|
||||||
|
|
||||||
def code_dict(d): |
def code_dict(d): |
||||||
# Преобразование словаря для передачи по HTTP |
# Преобразование словаря для передачи по HTTP |
||||||
return u'||'.join(list([u'{0}|{1}'.format(key, value) for key, value in d.items()])) |
return u'||'.join(list([u'{0}|{1}'.format(key, value) for key, value in d.items()])) |
||||||
|
|
||||||
|
|
||||||
def decode_dict(s): |
def decode_dict(s): |
||||||
# Расшифровка словаря из строки, переданого по HTTP |
# Расшифровка словаря из строки, переданого по HTTP |
||||||
result = {} |
result = {} |
||||||
for one in s.split(u'||'): |
for one in s.split(u'||'): |
||||||
__tmp = one.split(u'|') |
__tmp = one.split(u'|') |
||||||
result[__tmp[0]] = __tmp[1] |
result[__tmp[0]] = __tmp[1] |
||||||
return result |
return result |
||||||
|
|
||||||
|
|
||||||
def get_sync_data(user): |
def get_sync_data(user): |
||||||
# Синхронизировать пользователя с остальными LMS |
# Синхронизировать пользователя с остальными LMS |
||||||
# Отправить в LMS измнениея по пользователю или нового пользователя |
# Отправить в LMS измнениея по пользователю или нового пользователя |
||||||
# POST['user'] = {} # Поля с полной информацией пользователя |
# POST['user'] = {} # Поля с полной информацией пользователя |
||||||
_data = {} |
_data = {} |
||||||
_keys = [] |
_keys = [] |
||||||
exclude = ['id', 'customer', 'deactivate', 'delay', 'delay_description', 'delay_date', 'changed_email', 'status', |
exclude = ['id', 'customer', 'deactivate', 'delay', 'delay_description', 'delay_date', 'changed_email', 'status', |
||||||
'last_time', 'date_joined', 'avatar', 'last_login', 'activate_time', 'in_avatar'] |
'last_time', 'date_joined', 'avatar', 'last_login', 'activate_time', 'in_avatar'] |
||||||
|
|
||||||
for key in user._meta.local_concrete_fields: |
for key in user._meta.local_concrete_fields: |
||||||
if key.name not in exclude: |
if key.name not in exclude: |
||||||
_tmp = key.value_to_string(user) |
_tmp = key.value_to_string(user) |
||||||
if _tmp: |
if _tmp: |
||||||
_keys.append(key.name) |
_keys.append(key.name) |
||||||
_data[key.name] = _tmp |
_data[key.name] = _tmp |
||||||
|
|
||||||
_tmp = code_dict(_data) |
_tmp = code_dict(_data) |
||||||
return {'data': _tmp, |
return {'data': _tmp, |
||||||
'hash': hashlib.md5(_tmp.encode('utf-8')).hexdigest()} |
'hash': hashlib.md5(_tmp.encode('utf-8')).hexdigest()} |
||||||
|
|
||||||
|
|
||||||
''' |
''' |
||||||
def sent_sync_user(user): |
def sent_sync_user(user): |
||||||
data = get_sync_data(user) |
data = get_sync_data(user) |
||||||
data['secret_key'] = SECRET_KEY |
data['secret_key'] = SECRET_KEY |
||||||
data['source'] = DOMAIN |
data['source'] = DOMAIN |
||||||
## Если провал на одном из этапов - пропустить синхронизацию этого пользователя |
## Если провал на одном из этапов - пропустить синхронизацию этого пользователя |
||||||
# Авторизация на сервисе под системным пользователем |
# Авторизация на сервисе под системным пользователем |
||||||
result = 0 |
result = 0 |
||||||
for HOST in REL_LMS: |
for HOST in REL_LMS: |
||||||
__tmp = HOST['protocol'] + HOST['url'] |
__tmp = HOST['protocol'] + HOST['url'] |
||||||
if __tmp != DOMAIN: |
if __tmp != DOMAIN: |
||||||
log = UserSync.objects.create(user=user, source=DOMAIN, dist=__tmp, data=str(data)) |
log = UserSync.objects.create(user=user, source=DOMAIN, dist=__tmp, data=str(data)) |
||||||
_request = requests.post(__tmp + 'access/sync_user/', data=data) |
_request = requests.post(__tmp + 'access/sync_user/', data=data) |
||||||
if _request.status_code == 200: |
if _request.status_code == 200: |
||||||
_tmp = ast.literal_eval(_request.text) |
_tmp = ast.literal_eval(_request.text) |
||||||
if _tmp['code'] == '1': |
if _tmp['code'] == '1': |
||||||
result += 1 |
result += 1 |
||||||
log.good_sync() |
log.good_sync() |
||||||
else: |
else: |
||||||
log.fail_sync() |
log.fail_sync() |
||||||
else: |
else: |
||||||
log.fail_sync() |
log.fail_sync() |
||||||
|
|
||||||
return result == len(REL_LMS)-1 |
return result == len(REL_LMS)-1 |
||||||
''' |
''' |
||||||
|
|
||||||
|
|
||||||
@out_api_decor(without_auth=True, method='POST', need_keys=['email', 'password', 'secret_key'], check_request=True) |
@out_api_decor(without_auth=True, method='POST', need_keys=['email', 'password', 'secret_key'], check_request=True) |
||||||
def service_auth(request, context): |
def service_auth(request, context): |
||||||
# Удаленная авторизация для внутренних процессов |
# Удаленная авторизация для внутренних процессов |
||||||
# Авторизация |
# Авторизация |
||||||
if request.POST['secret_key'] == SECRET_KEY: |
if request.POST['secret_key'] == SECRET_KEY: |
||||||
email = request.POST['email'].lower() |
email = request.POST['email'].lower() |
||||||
user = auth.authenticate(email=email, password=request.POST.get('password')) |
user = auth.authenticate(email=email, password=request.POST.get('password')) |
||||||
|
|
||||||
if user is not None: |
if user is not None: |
||||||
context['code'] = '1' |
context['code'] = '1' |
||||||
context['response'] = u'AUTH_SUCCESS' |
context['response'] = u'AUTH_SUCCESS' |
||||||
auth.login(request, user) |
auth.login(request, user) |
||||||
|
|
||||||
elif user is None: |
elif user is None: |
||||||
context['response'] = u'По введенным данным пользователь не найден' |
context['response'] = u'По введенным данным пользователь не найден' |
||||||
context['code'] = '0' |
context['code'] = '0' |
||||||
|
|
||||||
else: |
else: |
||||||
context['response'] = u"Не верные данные. Повторите попытку" |
context['response'] = u"Не верные данные. Повторите попытку" |
||||||
context['code'] = '0' |
context['code'] = '0' |
||||||
else: |
else: |
||||||
context['response'] = u'AUTH SUCCESS' |
context['response'] = u'AUTH SUCCESS' |
||||||
context['code'] = '0' |
context['code'] = '0' |
||||||
return context |
return context |
||||||
|
|
||||||
|
|
||||||
''' |
''' |
||||||
@out_api_decor(without_auth=True, method='POST', need_keys=['secret_key', 'data', 'hash', 'source'], check_request=True) |
@out_api_decor(without_auth=True, method='POST', need_keys=['secret_key', 'data', 'hash', 'source'], check_request=True) |
||||||
def sync_user(request, context): |
def sync_user(request, context): |
||||||
if request.POST['secret_key'] == SECRET_KEY: |
if request.POST['secret_key'] == SECRET_KEY: |
||||||
|
|
||||||
if hashlib.md5(request.POST['data'].encode('utf-8')).hexdigest() != request.POST['hash']: |
if hashlib.md5(request.POST['data'].encode('utf-8')).hexdigest() != request.POST['hash']: |
||||||
context['code'] = '0' |
context['code'] = '0' |
||||||
context['data'] = '' |
context['data'] = '' |
||||||
context['response'] = u'Не сходится хеш данных' |
context['response'] = u'Не сходится хеш данных' |
||||||
return context |
return context |
||||||
|
|
||||||
data = decode_dict(request.POST['data']) |
data = decode_dict(request.POST['data']) |
||||||
|
|
||||||
# Получение пользователя для вставки |
# Получение пользователя для вставки |
||||||
try: |
try: |
||||||
user = User.objects.get(email=data['email']) |
user = User.objects.get(email=data['email']) |
||||||
except User.DoesNotExist: |
except User.DoesNotExist: |
||||||
# Создать пользователя |
# Создать пользователя |
||||||
user = User.objects.create(email=data['email']) |
user = User.objects.create(email=data['email']) |
||||||
log = UserSync.objects.create(user=user, source=request.POST['source'], dist=DOMAIN, data=str(request.POST['data'])) |
log = UserSync.objects.create(user=user, source=request.POST['source'], dist=DOMAIN, data=str(request.POST['data'])) |
||||||
save = False |
save = False |
||||||
if 'refer' in data and user.refer != data['refer']: |
if 'refer' in data and user.refer != data['refer']: |
||||||
user.refer = data['refer'] |
user.refer = data['refer'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'refer_source' in data and user.refer_source != data['refer_source']: |
if 'refer_source' in data and user.refer_source != data['refer_source']: |
||||||
user.refer_source = data['refer_source'] |
user.refer_source = data['refer_source'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'private' in data and user.private != data['private']: |
if 'private' in data and user.private != data['private']: |
||||||
user.private = data['private'] |
user.private = data['private'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'interactive_key' in data and user.interactive_key != data['interactive_key']: |
if 'interactive_key' in data and user.interactive_key != data['interactive_key']: |
||||||
user.interactive_key = data['interactive_key'] |
user.interactive_key = data['interactive_key'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'email' in data and user.email != data['email']: |
if 'email' in data and user.email != data['email']: |
||||||
user.email = data['email'] |
user.email = data['email'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'phone' in data and user.phone != data['phone']: |
if 'phone' in data and user.phone != data['phone']: |
||||||
user.phone = data['phone'] |
user.phone = data['phone'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'back_phone' in data and user.back_phone != data['back_phone']: |
if 'back_phone' in data and user.back_phone != data['back_phone']: |
||||||
user.back_phone = data['back_phone'] |
user.back_phone = data['back_phone'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'in_role' in data and user.in_role != data['in_role']: |
if 'in_role' in data and user.in_role != data['in_role']: |
||||||
user.in_role = data['in_role'] |
user.in_role = data['in_role'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'unique_role' in data and user.unique_role != data['unique_role']: |
if 'unique_role' in data and user.unique_role != data['unique_role']: |
||||||
user.unique_role = data['unique_role'] |
user.unique_role = data['unique_role'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'city' in data and user.city != data['city']: |
if 'city' in data and user.city != data['city']: |
||||||
user.city = data['city'] |
user.city = data['city'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'b_day' in data and user.b_day != data['b_day']: |
if 'b_day' in data and user.b_day != data['b_day']: |
||||||
user.b_day = data['b_day'] |
user.b_day = data['b_day'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'token' in data and user.token != data['token']: |
if 'token' in data and user.token != data['token']: |
||||||
user.token = data['token'] |
user.token = data['token'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'reg_status' in data and user.reg_status != data['reg_status']: |
if 'reg_status' in data and user.reg_status != data['reg_status']: |
||||||
user.reg_status = data['reg_status'] |
user.reg_status = data['reg_status'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'is_active' in data and user.is_active != data['is_active']: |
if 'is_active' in data and user.is_active != data['is_active']: |
||||||
user.is_active = data['is_active'] |
user.is_active = data['is_active'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'is_admin' in data and user.is_admin != data['is_admin']: |
if 'is_admin' in data and user.is_admin != data['is_admin']: |
||||||
user.is_admin = data['is_admin'] |
user.is_admin = data['is_admin'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'is_staff' in data and user.is_staff != data['is_staff']: |
if 'is_staff' in data and user.is_staff != data['is_staff']: |
||||||
user.is_staff = data['is_staff'] |
user.is_staff = data['is_staff'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'fname' in data and user.fname != data['fname']: |
if 'fname' in data and user.fname != data['fname']: |
||||||
user.fname = data['fname'] |
user.fname = data['fname'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'name' in data and user.name != data['name']: |
if 'name' in data and user.name != data['name']: |
||||||
user.name = data['name'] |
user.name = data['name'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'oname' in data and user.oname != data['oname']: |
if 'oname' in data and user.oname != data['oname']: |
||||||
user.oname = data['oname'] |
user.oname = data['oname'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'skype' in data and user.skype != data['skype']: |
if 'skype' in data and user.skype != data['skype']: |
||||||
user.skype = data['skype'] |
user.skype = data['skype'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'facebook' in data and user.facebook != data['facebook']: |
if 'facebook' in data and user.facebook != data['facebook']: |
||||||
user.facebook = data['facebook'] |
user.facebook = data['facebook'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'vk' in data and user.vk != data['vk']: |
if 'vk' in data and user.vk != data['vk']: |
||||||
user.vk = data['vk'] |
user.vk = data['vk'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'linkedin' in data and user.linkedin != data['linkedin']: |
if 'linkedin' in data and user.linkedin != data['linkedin']: |
||||||
user.linkedin = data['linkedin'] |
user.linkedin = data['linkedin'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'odnoklassniki' in data and user.odnoklassniki != data['odnoklassniki']: |
if 'odnoklassniki' in data and user.odnoklassniki != data['odnoklassniki']: |
||||||
user.odnoklassniki = data['odnoklassniki'] |
user.odnoklassniki = data['odnoklassniki'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if 'password' in data and user.password != data['password']: |
if 'password' in data and user.password != data['password']: |
||||||
user.password = data['password'] |
user.password = data['password'] |
||||||
save = True |
save = True |
||||||
|
|
||||||
if save: |
if save: |
||||||
user.save() |
user.save() |
||||||
log.good_sync() |
log.good_sync() |
||||||
context['code'] = '1' |
context['code'] = '1' |
||||||
else: |
else: |
||||||
log.fail_sync() |
log.fail_sync() |
||||||
|
|
||||||
else: |
else: |
||||||
raise Http404 |
raise Http404 |
||||||
return context |
return context |
||||||
''' |
''' |
||||||
|
|
||||||
|
|
||||||
@out_api_decor(without_auth=True, need_keys=['token', 'email'], method='POST', check_request=True) |
@out_api_decor(without_auth=True, need_keys=['token', 'email'], method='POST', check_request=True) |
||||||
def create_user(request, context): |
def create_user(request, context): |
||||||
# Создание пользователя |
# Создание пользователя |
||||||
# TODO: Политика использования токена |
# TODO: Политика использования токена |
||||||
res = False |
res = False |
||||||
result, source = self_check_token(request.POST['token']) |
result, source = self_check_token(request.POST['token']) |
||||||
if not result: |
if not result: |
||||||
context['code'] = '0' |
context['code'] = '0' |
||||||
description = u'Не найден активный источник' |
description = u'Не найден активный источник' |
||||||
context['response'] = description |
context['response'] = description |
||||||
return context |
return context |
||||||
|
|
||||||
result, user = self_check_user_exists(request.POST['email']) |
result, user = self_check_user_exists(request.POST['email']) |
||||||
if result: |
if result: |
||||||
if user.is_active and user.reg_status == '4': |
if user.is_active and user.reg_status == '4': |
||||||
context['code'] = '0' |
context['code'] = '0' |
||||||
description = u'Пользователь уже существует и активен' |
description = u'Пользователь уже существует и активен' |
||||||
context['response'] = description |
context['response'] = description |
||||||
else: |
else: |
||||||
context['code'] = '1' |
context['code'] = '1' |
||||||
res = True |
res = True |
||||||
description = u'Пользователь уже существует. Отправлено повторное письмо активации' |
description = u'Пользователь уже существует. Отправлено повторное письмо активации' |
||||||
context['response'] = description |
context['response'] = description |
||||||
sent_registration(user, title=u'Повторное письмо активации') |
sent_registration(user, title=u'Повторное письмо активации') |
||||||
return context |
return context |
||||||
else: |
else: |
||||||
result, user = self_create_user(request.POST['email'], |
result, user = self_create_user(request.POST['email'], |
||||||
phone=request.POST['phone'] if request.POST.get('phone') else None) |
phone=request.POST['phone'] if request.POST.get('phone') else None) |
||||||
context['code'] = '1' |
context['code'] = '1' |
||||||
res = True |
res = True |
||||||
description = u'Пользователь создан. На указанный email отправлено письмо активации' |
description = u'Пользователь создан. На указанный email отправлено письмо активации' |
||||||
context['response'] = description |
context['response'] = description |
||||||
|
|
||||||
ref_history = TrafHistory.objects.create(action='C', source=source, token=request.POST['token'], data=request.POST, |
ref_history = TrafHistory.objects.create(action='C', source=source, token=request.POST['token'], data=request.POST, |
||||||
result_description=description, result=res) |
result_description=description, result=res) |
||||||
user.traf_source = ref_history |
user.traf_source = ref_history |
||||||
user.save() |
user.save() |
||||||
return context |
return context |
||||||
|
|
||||||
|
|
||||||
@out_api_decor(without_auth=True, check_request=True, need_keys=['token', 'service', 'email'], method='POST') |
@out_api_decor(without_auth=True, check_request=True, need_keys=['token', 'service', 'email'], method='POST') |
||||||
def create_bill(request, context): |
def create_bill(request, context): |
||||||
# TODO: Политика использования токена |
# TODO: Политика использования токена |
||||||
result, source = self_check_token(request.POST['token']) |
result, source = self_check_token(request.POST['token']) |
||||||
if not result: |
if not result: |
||||||
context['code'] = '0' |
context['code'] = '0' |
||||||
context['response'] = u'Не найден активный источник' |
context['response'] = u'Не найден активный источник' |
||||||
return context |
return context |
||||||
|
|
||||||
result, user = self_check_user_exists(request.POST['email']) |
result, user = self_check_user_exists(request.POST['email']) |
||||||
if result: |
if result: |
||||||
if not user.is_active or user.reg_status != '4': |
if not user.is_active or user.reg_status != '4': |
||||||
sent_registration(user, title=u'Повторное письмо активации') |
sent_registration(user, title=u'Повторное письмо активации') |
||||||
if request.POST.get('phone') and user.phone != request.POST.get('phone'): |
if request.POST.get('phone') and user.phone != request.POST.get('phone'): |
||||||
user.phone = request.POST['phone'] |
user.phone = request.POST['phone'] |
||||||
user.save() |
user.save() |
||||||
else: |
else: |
||||||
result, user = self_create_user(request.POST['email'], |
result, user = self_create_user(request.POST['email'], |
||||||
phone=request.POST['phone'] if request.POST.get('phone') else None) |
phone=request.POST['phone'] if request.POST.get('phone') else None) |
||||||
|
|
||||||
result, description, bill = self_create_bill(user, request.POST['service'], |
result, description, bill = self_create_bill(user, request.POST['service'], |
||||||
request.POST['uid'] if request.POST.get('uid') else None) |
request.POST['uid'] if request.POST.get('uid') else None) |
||||||
context['code'] = '1' if result else '0' |
context['code'] = '1' if result else '0' |
||||||
context['response'] = description |
context['response'] = description |
||||||
context['data'] = bill.get_face() |
context['data'] = bill.get_face() |
||||||
rel_source = TrafHistory.objects.create(action='O', source=source, token=request.POST['token'], data=request.POST, |
rel_source = TrafHistory.objects.create(action='O', source=source, token=request.POST['token'], data=request.POST, |
||||||
result_description=description, result=True if result else False) |
result_description=description, result=True if result else False) |
||||||
bill.traf_source = rel_source |
bill.traf_source = rel_source |
||||||
bill.save() |
bill.save() |
||||||
return context |
return context |
||||||
|
|
||||||
|
|
||||||
@out_api_decor(without_auth=True, need_keys=['token', 'data'], method='POST', check_request=True) |
@out_api_decor(without_auth=True, need_keys=['token', 'data'], method='POST', check_request=True) |
||||||
def set_lendos_data(request, context): |
def set_lendos_data(request, context): |
||||||
# Создание пользователя |
# Создание пользователя |
||||||
res = False |
res = False |
||||||
result, source = self_check_token(request.POST['token']) |
result, source = self_check_token(request.POST['token']) |
||||||
if not result: |
if not result: |
||||||
context['code'] = '0' |
context['code'] = '0' |
||||||
description = u'Не найден активный источник' |
description = u'Не найден активный источник' |
||||||
context['response'] = description |
context['response'] = description |
||||||
return context |
return context |
||||||
|
|
||||||
TrafHistory.objects.create(action='D', source=source, token=request.POST['token'], data=request.POST['data'], |
TrafHistory.objects.create(action='D', source=source, token=request.POST['token'], data=request.POST['data'], |
||||||
result_description='Данные из форм', result=res) |
result_description='Данные из форм', result=res) |
||||||
return context |
return context |
||||||
|
|||||||
@ -1,40 +1,40 @@ |
|||||||
# coding=utf-8 |
# coding=utf-8 |
||||||
from celery.task import periodic_task |
from celery.task import periodic_task |
||||||
from datetime import timedelta, datetime |
from datetime import timedelta, datetime |
||||||
from access.models import User, TrafSource, TrafTokenHistory |
from access.models import User, TrafSource, TrafTokenHistory |
||||||
|
|
||||||
|
|
||||||
@periodic_task(run_every=timedelta(minutes=20)) |
@periodic_task(run_every=timedelta(minutes=20)) |
||||||
def check_prepo_delay(): |
def check_prepo_delay(): |
||||||
# Проверка просроченых задач преподавателя |
# Проверка просроченых задач преподавателя |
||||||
for res in User.objects.filter(delay_date__lte=datetime.now(), in_role='T'): |
for res in User.objects.filter(delay_date__lte=datetime.now(), in_role='T'): |
||||||
res.delay = False |
res.delay = False |
||||||
res.delay_description = '' |
res.delay_description = '' |
||||||
res.delay_date = None |
res.delay_date = None |
||||||
res.save() |
res.save() |
||||||
|
|
||||||
|
|
||||||
@periodic_task(run_every=timedelta(minutes=1)) |
@periodic_task(run_every=timedelta(minutes=1)) |
||||||
def check_online(): |
def check_online(): |
||||||
for user in User.objects.filter(status='ON', last_time__lte=datetime.now()-timedelta(minutes=10)): |
for user in User.objects.filter(status='ON', last_time__lte=datetime.now()-timedelta(minutes=10)): |
||||||
user.status = 'OFF' |
user.status = 'OFF' |
||||||
user.save() |
user.save() |
||||||
|
|
||||||
|
|
||||||
@periodic_task(run_every=timedelta(hours=1)) |
@periodic_task(run_every=timedelta(hours=1)) |
||||||
def check_traf_source(): |
def check_traf_source(): |
||||||
for source in TrafSource.objects.filter(on=True).exclude(live_time=None): |
for source in TrafSource.objects.filter(on=True).exclude(live_time=None): |
||||||
if source.token and source.token_start + timedelta(hours=source.live_time) < datetime.now(): |
if source.token and source.token_start + timedelta(hours=source.live_time) < datetime.now(): |
||||||
source.on = False |
source.on = False |
||||||
TrafTokenHistory.objects.create(token=source.token, source=source, live_time=source.live_time, date_start=source.token_start, date_end=datetime.now()) |
TrafTokenHistory.objects.create(token=source.token, source=source, live_time=source.live_time, date_start=source.token_start, date_end=datetime.now()) |
||||||
source.token = None |
source.token = None |
||||||
source.token_start = None |
source.token_start = None |
||||||
source.save() |
source.save() |
||||||
|
|
||||||
|
|
||||||
#@periodic_task(run_every=timedelta(minutes=1)) |
#@periodic_task(run_every=timedelta(minutes=1)) |
||||||
#def sync_users(): |
#def sync_users(): |
||||||
# for user in User.objects.filter(sync=False): |
# for user in User.objects.filter(sync=False): |
||||||
# result = sent_sync_user(user) |
# result = sent_sync_user(user) |
||||||
# if result: |
# if result: |
||||||
# user._set_synced() |
# user._set_synced() |
||||||
|
|||||||
@ -1,12 +1,12 @@ |
|||||||
from access import teach_views as views |
from access import teach_views as views |
||||||
from django.conf.urls import url |
from django.conf.urls import url |
||||||
|
|
||||||
urlpatterns = [ |
urlpatterns = [ |
||||||
url(r'profile/$', views.profile), |
url(r'profile/$', views.profile), |
||||||
url(r'homeworks/([0-9]{1,99})$', views.homeworks), |
url(r'homeworks/([0-9]{1,99})$', views.homeworks), |
||||||
url(r'comments/([0-9]{1,99})$', views.comments), |
url(r'comments/([0-9]{1,99})$', views.comments), |
||||||
url(r'exams/([0-9]{1,99})$', views.exams), |
url(r'exams/([0-9]{1,99})$', views.exams), |
||||||
url(r'materials/([0-9]{1,99})$', views.materials), |
url(r'materials/([0-9]{1,99})$', views.materials), |
||||||
url(r'workshop/homework/([0-9]{1,99})$', views.homework_workshop), |
url(r'workshop/homework/([0-9]{1,99})$', views.homework_workshop), |
||||||
url(r'workshop/exam/([0-9]{1,99})$', views.exam_workshop) |
url(r'workshop/exam/([0-9]{1,99})$', views.exam_workshop) |
||||||
] |
] |
||||||
@ -1,140 +1,140 @@ |
|||||||
# coding=utf-8 |
# coding=utf-8 |
||||||
from django.http import Http404 |
from django.http import Http404 |
||||||
from lms.decors import response_decor |
from lms.decors import response_decor |
||||||
from lms.tools import check_role |
from lms.tools import check_role |
||||||
from courses.models import Course |
from courses.models import Course |
||||||
from journals.models import HomeworkJ, ExamJ, HomeworkTry, ExamTry |
from journals.models import HomeworkJ, ExamJ, HomeworkTry, ExamTry |
||||||
|
|
||||||
|
|
||||||
@response_decor(template='teach_profile.html') |
@response_decor(template='teach_profile.html') |
||||||
def profile(request): |
def profile(request): |
||||||
checker = check_role(request.user, 'T') |
checker = check_role(request.user, 'T') |
||||||
if checker['result']: |
if checker['result']: |
||||||
# Быстрый список активных студентов |
# Быстрый список активных студентов |
||||||
all_homeworks = [] |
all_homeworks = [] |
||||||
homeworks = {} |
homeworks = {} |
||||||
exams = {} |
exams = {} |
||||||
|
|
||||||
for journal in HomeworkTry.objects.filter(teacher=request.user, f_date=None).exclude(success=True, date=None |
for journal in HomeworkTry.objects.filter(teacher=request.user, f_date=None).exclude(success=True, date=None |
||||||
).order_by('date'): |
).order_by('date'): |
||||||
if journal.parent.get_status_flag() not in ['N', 'F']: |
if journal.parent.get_status_flag() not in ['N', 'F']: |
||||||
title = (journal.material.course.get_title(), |
title = (journal.material.course.get_title(), |
||||||
journal.material.get_title(), |
journal.material.get_title(), |
||||||
journal.material.id, |
journal.material.id, |
||||||
journal.material.theme.sort, |
journal.material.theme.sort, |
||||||
journal.material.get_icon()) |
journal.material.get_icon()) |
||||||
if not title in homeworks: homeworks[title] = [] |
if not title in homeworks: homeworks[title] = [] |
||||||
homeworks[title].append(journal) |
homeworks[title].append(journal) |
||||||
|
|
||||||
for journal in HomeworkTry.objects.filter(teacher=request.user, f_date=None).exclude(success=True, date=None |
for journal in HomeworkTry.objects.filter(teacher=request.user, f_date=None).exclude(success=True, date=None |
||||||
).order_by('date'): |
).order_by('date'): |
||||||
if journal.parent.get_status_flag() not in ['N', 'F']: |
if journal.parent.get_status_flag() not in ['N', 'F']: |
||||||
all_homeworks.append(journal) |
all_homeworks.append(journal) |
||||||
|
|
||||||
for journal in ExamTry.objects.filter(teacher=request.user, f_date=None).exclude(success=True, date=None |
for journal in ExamTry.objects.filter(teacher=request.user, f_date=None).exclude(success=True, date=None |
||||||
).order_by('date'): |
).order_by('date'): |
||||||
|
|
||||||
if journal.parent.get_status_flag() not in ['N', 'F']: |
if journal.parent.get_status_flag() not in ['N', 'F']: |
||||||
title = (journal.material.course.get_title(), |
title = (journal.material.course.get_title(), |
||||||
journal.material.get_title(), |
journal.material.get_title(), |
||||||
journal.material.id) |
journal.material.id) |
||||||
if not title in exams: exams[title] = [] |
if not title in exams: exams[title] = [] |
||||||
exams[title].append(journal) |
exams[title].append(journal) |
||||||
|
|
||||||
return { |
return { |
||||||
'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id'), |
'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id'), |
||||||
'active_themes': homeworks, |
'active_themes': homeworks, |
||||||
'active_exams': exams, |
'active_exams': exams, |
||||||
'all_homeworks': all_homeworks, |
'all_homeworks': all_homeworks, |
||||||
} |
} |
||||||
else: |
else: |
||||||
return checker |
return checker |
||||||
|
|
||||||
|
|
||||||
@response_decor(template='teacher_homeworks.html') |
@response_decor(template='teacher_homeworks.html') |
||||||
def homeworks(request, course): |
def homeworks(request, course): |
||||||
# Список домашних заданий по курсу на проверку |
# Список домашних заданий по курсу на проверку |
||||||
checker = check_role(request.user, 'T') |
checker = check_role(request.user, 'T') |
||||||
if checker['result']: |
if checker['result']: |
||||||
return {'T': 'H', |
return {'T': 'H', |
||||||
'course': Course.objects.get(id=course), |
'course': Course.objects.get(id=course), |
||||||
'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id'), |
'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id'), |
||||||
'homeworks': HomeworkTry.objects.filter(teacher=request.user).order_by( |
'homeworks': HomeworkTry.objects.filter(teacher=request.user).order_by( |
||||||
'-date') |
'-date') |
||||||
} |
} |
||||||
else: |
else: |
||||||
return checker |
return checker |
||||||
|
|
||||||
|
|
||||||
@response_decor(template='teacher_comments.html') |
@response_decor(template='teacher_comments.html') |
||||||
def comments(request, course): |
def comments(request, course): |
||||||
# Комментари для преподавателя |
# Комментари для преподавателя |
||||||
checker = check_role(request.user, 'T') |
checker = check_role(request.user, 'T') |
||||||
if checker['result']: |
if checker['result']: |
||||||
return {'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id')} |
return {'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id')} |
||||||
else: |
else: |
||||||
return checker |
return checker |
||||||
|
|
||||||
|
|
||||||
@response_decor(template='teacher_materials.html') |
@response_decor(template='teacher_materials.html') |
||||||
def materials(request, course): |
def materials(request, course): |
||||||
# Материалы курсов |
# Материалы курсов |
||||||
checker = check_role(request.user, 'T') |
checker = check_role(request.user, 'T') |
||||||
if checker['result']: |
if checker['result']: |
||||||
return {'T': 'M', |
return {'T': 'M', |
||||||
'courses': Course.objects.filter(teachers__in=[request.user]), |
'courses': Course.objects.filter(teachers__in=[request.user]), |
||||||
'course': Course.objects.get(id=course)} |
'course': Course.objects.get(id=course)} |
||||||
else: |
else: |
||||||
return checker |
return checker |
||||||
|
|
||||||
|
|
||||||
@response_decor(template='teacher_exams.html') |
@response_decor(template='teacher_exams.html') |
||||||
def exams(request, exam): |
def exams(request, exam): |
||||||
checker = check_role(request.user, 'T') |
checker = check_role(request.user, 'T') |
||||||
if checker['result']: |
if checker['result']: |
||||||
return {'T': 'E', |
return {'T': 'E', |
||||||
'course': Course.objects.get(id=exam), |
'course': Course.objects.get(id=exam), |
||||||
'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id'), |
'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id'), |
||||||
'exams': ExamTry.objects.filter(teacher=request.user).order_by('-date')} |
'exams': ExamTry.objects.filter(teacher=request.user).order_by('-date')} |
||||||
else: |
else: |
||||||
return checker |
return checker |
||||||
|
|
||||||
|
|
||||||
@response_decor(template='workshop_homework.html') |
@response_decor(template='workshop_homework.html') |
||||||
def homework_workshop(request, homework): |
def homework_workshop(request, homework): |
||||||
if request.user.in_role in ['T', 'S2', 'A']: |
if request.user.in_role in ['T', 'S2', 'A']: |
||||||
try: |
try: |
||||||
journal = HomeworkJ.objects.get(id=homework) |
journal = HomeworkJ.objects.get(id=homework) |
||||||
except HomeworkJ.DoesNotExist: |
except HomeworkJ.DoesNotExist: |
||||||
raise Http404 |
raise Http404 |
||||||
else: |
else: |
||||||
if not journal.teacher or journal.teacher == request.user or request.user.in_role in ['S2', 'A']: |
if not journal.teacher or journal.teacher == request.user or request.user.in_role in ['S2', 'A']: |
||||||
return { |
return { |
||||||
'homework': journal.get_face(request.user), |
'homework': journal.get_face(request.user), |
||||||
'student': journal.student, |
'student': journal.student, |
||||||
'theme': journal.material.theme |
'theme': journal.material.theme |
||||||
} |
} |
||||||
else: |
else: |
||||||
raise Http404 |
raise Http404 |
||||||
else: |
else: |
||||||
raise Http404 |
raise Http404 |
||||||
|
|
||||||
|
|
||||||
@response_decor(template='workshop_exam.html') |
@response_decor(template='workshop_exam.html') |
||||||
def exam_workshop(request, exam): |
def exam_workshop(request, exam): |
||||||
if request.user.in_role in ['T', 'S2', 'A']: |
if request.user.in_role in ['T', 'S2', 'A']: |
||||||
try: |
try: |
||||||
journal = ExamJ.objects.get(id=exam) |
journal = ExamJ.objects.get(id=exam) |
||||||
except ExamJ.DoesNotExist: |
except ExamJ.DoesNotExist: |
||||||
raise Http404 |
raise Http404 |
||||||
else: |
else: |
||||||
if not journal.teacher or journal.teacher == request.user or request.user.in_role in ['S2', 'A']: |
if not journal.teacher or journal.teacher == request.user or request.user.in_role in ['S2', 'A']: |
||||||
return { |
return { |
||||||
'exam': journal.get_face(request.user), |
'exam': journal.get_face(request.user), |
||||||
'student': journal.student, |
'student': journal.student, |
||||||
'theme': journal.material.theme |
'theme': journal.material.theme |
||||||
} |
} |
||||||
else: |
else: |
||||||
raise Http404 |
raise Http404 |
||||||
else: |
else: |
||||||
raise Http404 |
raise Http404 |
||||||
|
|||||||
@ -1,43 +1,43 @@ |
|||||||
from access import views |
from access import views |
||||||
from access import api |
from access import api |
||||||
from access import out_api |
from access import out_api |
||||||
from django.conf.urls import url |
from django.conf.urls import url |
||||||
|
|
||||||
urlpatterns = [ |
urlpatterns = [ |
||||||
url(r'accept_forgot/$', views.accept_forgot), |
url(r'accept_forgot/$', views.accept_forgot), |
||||||
url(r'activate_email/$', views.activate_email), |
url(r'activate_email/$', views.activate_email), |
||||||
url(r'all_actions/$', views.all_actions), |
url(r'all_actions/$', views.all_actions), |
||||||
url(r'get_subscription_data/$', api.get_subscription_data), |
url(r'get_subscription_data/$', api.get_subscription_data), |
||||||
url(r'send_subscription_data/$', api.send_subscription_data), |
url(r'send_subscription_data/$', api.send_subscription_data), |
||||||
url(r'forgot/$', api.forgot), |
url(r'forgot/$', api.forgot), |
||||||
url(r'fast_auth/$', views.fast_auth), |
url(r'fast_auth/$', views.fast_auth), |
||||||
url(r'auth/', api.auth_in), |
url(r'auth/', api.auth_in), |
||||||
url(r'auth_from_admin/', api.auth_from_admin), |
url(r'auth_from_admin/', api.auth_from_admin), |
||||||
url(r'activate/$', views.activate), |
url(r'activate/$', views.activate), |
||||||
url(r'profile/$', views.profile), |
url(r'profile/$', views.profile), |
||||||
url(r'profile/(?P<view_id>.*)/$', views.profile_view), |
url(r'profile/(?P<view_id>.*)/$', views.profile_view), |
||||||
url(r'registration/$', api.registration), |
url(r'registration/$', api.registration), |
||||||
url(r'reg_step/$', api.reg_step), |
url(r'reg_step/$', api.reg_step), |
||||||
url(r'logout/$', views.logout_in), |
url(r'logout/$', views.logout_in), |
||||||
url(r'come_off/$', views.come_off), |
url(r'come_off/$', views.come_off), |
||||||
url(r'check_auth/$', api.check_auth), |
url(r'check_auth/$', api.check_auth), |
||||||
url(r'get_settings_data/$', api.get_settings_data), |
url(r'get_settings_data/$', api.get_settings_data), |
||||||
url(r'send_settings_data/$', api.send_settings_data), |
url(r'send_settings_data/$', api.send_settings_data), |
||||||
url(r'get_user_role/$', api.get_user_role), |
url(r'get_user_role/$', api.get_user_role), |
||||||
url(r'new_role/$', api.new_role), |
url(r'new_role/$', api.new_role), |
||||||
url(r'change_password/$', api.change_password), |
url(r'change_password/$', api.change_password), |
||||||
url(r'by_error/$', views.by_error), |
url(r'by_error/$', views.by_error), |
||||||
url(r'auth_error/$', views.auth_error), |
url(r'auth_error/$', views.auth_error), |
||||||
url(r'access_error/$', views.access_error), |
url(r'access_error/$', views.access_error), |
||||||
url(r'check_active/$', api.check_active), |
url(r'check_active/$', api.check_active), |
||||||
url(r'resent_active_email$', api.resent_active_email), |
url(r'resent_active_email$', api.resent_active_email), |
||||||
url(r'change_private/$', api.change_private), |
url(r'change_private/$', api.change_private), |
||||||
url(r'create_user/$', out_api.create_user), |
url(r'create_user/$', out_api.create_user), |
||||||
url(r'create_bill/$', out_api.create_bill), |
url(r'create_bill/$', out_api.create_bill), |
||||||
url(r'set_lendos_data/$', out_api.set_lendos_data), |
url(r'set_lendos_data/$', out_api.set_lendos_data), |
||||||
#url(r'sync_user/$', out_api.sync_user), |
#url(r'sync_user/$', out_api.sync_user), |
||||||
url(r'search_user/$', api.search_user), |
url(r'search_user/$', api.search_user), |
||||||
url(r'find_user/$', api.find_user), |
url(r'find_user/$', api.find_user), |
||||||
url(r'service_auth/$', out_api.service_auth), |
url(r'service_auth/$', out_api.service_auth), |
||||||
url(r'set_in_user/$', out_api.set_in_user) |
url(r'set_in_user/$', out_api.set_in_user) |
||||||
] |
] |
||||||
|
|||||||
@ -1,234 +1,234 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
from django.contrib import auth |
from django.contrib import auth |
||||||
from django.contrib.auth import logout |
from django.contrib.auth import logout |
||||||
from django.http import Http404 |
from django.http import Http404 |
||||||
from django.shortcuts import redirect |
from django.shortcuts import redirect |
||||||
from access.models import User, ActionJ, Document |
from access.models import User, ActionJ, Document |
||||||
from lms.tools import random_string, condition_factory, check_role |
from lms.tools import random_string, condition_factory, check_role |
||||||
from lms.decors import response_decor |
from lms.decors import response_decor |
||||||
from courses.tools import get_user_achievements, get_user_diploms, get_user_completed_courses_count, \ |
from courses.tools import get_user_achievements, get_user_diploms, get_user_completed_courses_count, \ |
||||||
get_user_skills_size_count, get_user_achievements_count |
get_user_skills_size_count, get_user_achievements_count |
||||||
from courses.tools import get_user_skills |
from courses.tools import get_user_skills |
||||||
from journals.models import TeacherJ |
from journals.models import TeacherJ |
||||||
from management.letters import sent_forgot_password |
from management.letters import sent_forgot_password |
||||||
from finance.models import Bill |
from finance.models import Bill |
||||||
from management.models import Comment |
from management.models import Comment |
||||||
from library.models import Article |
from library.models import Article |
||||||
|
|
||||||
|
|
||||||
@response_decor(template='index.html', without_auth=True) |
@response_decor(template='index.html', without_auth=True) |
||||||
def activate_email(request): |
def activate_email(request): |
||||||
# Активация пользователя через почту |
# Активация пользователя через почту |
||||||
if request.GET.get('token') and request.GET.get('email'): |
if request.GET.get('token') and request.GET.get('email'): |
||||||
try: |
try: |
||||||
email = request.GET['email'].lower() |
email = request.GET['email'].lower() |
||||||
user = User.objects.get(email=email, token=request.GET['token']) |
user = User.objects.get(email=email, token=request.GET['token']) |
||||||
except User.DoesNotExist: |
except User.DoesNotExist: |
||||||
return {'redirect': '/404/?error=Ссылка устарела. Дождитесь письма с актуальной ссылкой'} |
return {'redirect': '/404/?error=Ссылка устарела. Дождитесь письма с актуальной ссылкой'} |
||||||
else: |
else: |
||||||
user.email = user.changed_email |
user.email = user.changed_email |
||||||
user.save() |
user.save() |
||||||
user.change_token() |
user.change_token() |
||||||
return {'DIALOG': 'activate_email'} |
return {'DIALOG': 'activate_email'} |
||||||
else: |
else: |
||||||
# TODO: Отправлять пользователя в тупиковую страницу, а не на 404 |
# TODO: Отправлять пользователя в тупиковую страницу, а не на 404 |
||||||
raise Http404 |
raise Http404 |
||||||
|
|
||||||
|
|
||||||
@response_decor(template='index.html', without_auth=True) |
@response_decor(template='index.html', without_auth=True) |
||||||
def accept_forgot(request): |
def accept_forgot(request): |
||||||
# Подтверждение почты при восстановлении |
# Подтверждение почты при восстановлении |
||||||
if request.GET.get('token') and request.GET.get('email'): |
if request.GET.get('token') and request.GET.get('email'): |
||||||
try: |
try: |
||||||
email = request.GET['email'].lower() |
email = request.GET['email'].lower() |
||||||
user = User.objects.get(email=email, token=request.GET['token']) |
user = User.objects.get(email=email, token=request.GET['token']) |
||||||
except User.DoesNotExist: |
except User.DoesNotExist: |
||||||
return {'redirect': '/404/?error=Ссылка устарела. Дождитесь письма с актуальной ссылкой'} |
return {'redirect': '/404/?error=Ссылка устарела. Дождитесь письма с актуальной ссылкой'} |
||||||
else: |
else: |
||||||
pas = random_string(length=6).upper() |
pas = random_string(length=6).upper() |
||||||
user.set_password(pas) |
user.set_password(pas) |
||||||
user.change_token() |
user.change_token() |
||||||
sent_forgot_password(user, pas) |
sent_forgot_password(user, pas) |
||||||
return {'DIALOG': 'accept_forgot'} |
return {'DIALOG': 'accept_forgot'} |
||||||
else: |
else: |
||||||
# TODO: Отправлять пользователя в тупиковую страницу, а не на 404 |
# TODO: Отправлять пользователя в тупиковую страницу, а не на 404 |
||||||
raise Http404 |
raise Http404 |
||||||
|
|
||||||
|
|
||||||
@response_decor(template='activation.html', without_auth=True) |
@response_decor(template='activation.html', without_auth=True) |
||||||
def activate(request): |
def activate(request): |
||||||
# Страница активации пользователя |
# Страница активации пользователя |
||||||
condition = condition_factory([ |
condition = condition_factory([ |
||||||
{'condition': request.GET.get('email'), 'error': u'Поле пользователя передано не корректно'}, |
{'condition': request.GET.get('email'), 'error': u'Поле пользователя передано не корректно'}, |
||||||
{'condition': request.GET.get('token'), 'error': u'Поле токена передано не корректно'}, |
{'condition': request.GET.get('token'), 'error': u'Поле токена передано не корректно'}, |
||||||
{'condition': request.GET.get('step'), 'error': u'Не верно передан этап'} |
{'condition': request.GET.get('step'), 'error': u'Не верно передан этап'} |
||||||
]) |
]) |
||||||
if condition['code'] == '1': |
if condition['code'] == '1': |
||||||
try: |
try: |
||||||
email = request.GET['email'].lower() |
email = request.GET['email'].lower() |
||||||
user = User.objects.get(email=email, token=request.GET['token']) |
user = User.objects.get(email=email, token=request.GET['token']) |
||||||
except User.DoesNotExist: |
except User.DoesNotExist: |
||||||
return {'redirect': '/404/?error=Ссылка устарела. Дождитесь письма с актуальной ссылкой'} |
return {'redirect': '/404/?error=Ссылка устарела. Дождитесь письма с актуальной ссылкой'} |
||||||
else: |
else: |
||||||
if not user.is_active or user.reg_status != '4': |
if not user.is_active or user.reg_status != '4': |
||||||
user.save() |
user.save() |
||||||
return {'step': user.reg_status, 'token': request.GET['token'], 'email': email, |
return {'step': user.reg_status, 'token': request.GET['token'], 'email': email, |
||||||
'phone': user.phone if user.phone else None} |
'phone': user.phone if user.phone else None} |
||||||
|
|
||||||
else: |
else: |
||||||
raise Http404 |
raise Http404 |
||||||
else: |
else: |
||||||
raise Http404 |
raise Http404 |
||||||
|
|
||||||
|
|
||||||
@response_decor(template='profile.html', without_auth=True) |
@response_decor(template='profile.html', without_auth=True) |
||||||
def profile(request): |
def profile(request): |
||||||
if request.user.is_authenticated(): |
if request.user.is_authenticated(): |
||||||
checker = check_role(request.user, 'U') |
checker = check_role(request.user, 'U') |
||||||
if checker['result']: |
if checker['result']: |
||||||
courses = [i.get_head_face() for i in |
courses = [i.get_head_face() for i in |
||||||
TeacherJ.objects.filter(student=request.user, course__public=True).exclude(progress=0)] |
TeacherJ.objects.filter(student=request.user, course__public=True).exclude(progress=0)] |
||||||
return {'in_user': None, |
return {'in_user': None, |
||||||
'courses': courses, |
'courses': courses, |
||||||
'achievements': get_user_achievements(request.user), |
'achievements': get_user_achievements(request.user), |
||||||
'skills': get_user_skills(request.user), |
'skills': get_user_skills(request.user), |
||||||
'diploms': get_user_diploms(request.user), |
'diploms': get_user_diploms(request.user), |
||||||
'completed_courses': get_user_completed_courses_count(request.user), |
'completed_courses': get_user_completed_courses_count(request.user), |
||||||
'got_achievements': get_user_achievements_count(request.user), |
'got_achievements': get_user_achievements_count(request.user), |
||||||
'skills_size': get_user_skills_size_count(request.user), |
'skills_size': get_user_skills_size_count(request.user), |
||||||
'documents': Document.objects.filter(user=request.user), |
'documents': Document.objects.filter(user=request.user), |
||||||
'b_bills': Bill.objects.filter(user=request.user), |
'b_bills': Bill.objects.filter(user=request.user), |
||||||
'articles': [i.get_face(request.user) for i in Article.objects.filter(views__id=request.user.id)], |
'articles': [i.get_face(request.user) for i in Article.objects.filter(views__id=request.user.id)], |
||||||
'forum_ask': Comment.objects.filter(owner=request.user, status='Q'), |
'forum_ask': Comment.objects.filter(owner=request.user, status='Q'), |
||||||
'forum_ans': { |
'forum_ans': { |
||||||
'all': |
'all': |
||||||
Comment.objects.filter(owner=request.user, status='Q2'), |
Comment.objects.filter(owner=request.user, status='Q2'), |
||||||
'best': |
'best': |
||||||
Comment.objects.filter(owner=request.user, status='Q2', best=True).count() |
Comment.objects.filter(owner=request.user, status='Q2', best=True).count() |
||||||
} |
} |
||||||
} |
} |
||||||
else: |
else: |
||||||
return checker |
return checker |
||||||
else: |
else: |
||||||
return {'redirect': '/access/auth_error/'} |
return {'redirect': '/access/auth_error/'} |
||||||
|
|
||||||
|
|
||||||
@response_decor(template='profile.html', without_auth=True) |
@response_decor(template='profile.html', without_auth=True) |
||||||
def profile_view(request, view_id): |
def profile_view(request, view_id): |
||||||
if view_id: |
if view_id: |
||||||
try: |
try: |
||||||
user = User.objects.get(interactive_key=view_id) |
user = User.objects.get(interactive_key=view_id) |
||||||
except User.DoesNotExist: |
except User.DoesNotExist: |
||||||
raise Http404 |
raise Http404 |
||||||
else: |
else: |
||||||
if request.user.is_authenticated() and request.user.is_admin: |
if request.user.is_authenticated() and request.user.is_admin: |
||||||
go = True |
go = True |
||||||
else: |
else: |
||||||
go = False |
go = False |
||||||
if user.private == 'A' or user.private == 'L': |
if user.private == 'A' or user.private == 'L': |
||||||
go = True |
go = True |
||||||
elif user.private == 'U': |
elif user.private == 'U': |
||||||
if request.user.is_authenticated() and request.user.is_active: |
if request.user.is_authenticated() and request.user.is_active: |
||||||
go = True |
go = True |
||||||
elif user.private == 'B': |
elif user.private == 'B': |
||||||
if request.user == user: |
if request.user == user: |
||||||
go = True |
go = True |
||||||
|
|
||||||
if go: |
if go: |
||||||
courses = [i.get_head_face() for i in TeacherJ.objects.filter(student=user, course__public=True).exclude(progress=0)] |
courses = [i.get_head_face() for i in TeacherJ.objects.filter(student=user, course__public=True).exclude(progress=0)] |
||||||
return {'in_user': user, |
return {'in_user': user, |
||||||
'courses': courses, |
'courses': courses, |
||||||
'achievements': get_user_achievements(user), |
'achievements': get_user_achievements(user), |
||||||
'skills': get_user_skills(user), |
'skills': get_user_skills(user), |
||||||
'diploms': get_user_diploms(user), |
'diploms': get_user_diploms(user), |
||||||
'articles': [i.get_face(user) for i in Article.objects.filter(views__id=user.id)], |
'articles': [i.get_face(user) for i in Article.objects.filter(views__id=user.id)], |
||||||
'completed_courses': get_user_completed_courses_count(user), |
'completed_courses': get_user_completed_courses_count(user), |
||||||
'got_achievements': get_user_achievements_count(user), |
'got_achievements': get_user_achievements_count(user), |
||||||
'skills_size': get_user_skills_size_count(user), |
'skills_size': get_user_skills_size_count(user), |
||||||
'forum_ask': Comment.objects.filter(owner=user, status='Q'), |
'forum_ask': Comment.objects.filter(owner=user, status='Q'), |
||||||
'forum_ans': { |
'forum_ans': { |
||||||
'all': |
'all': |
||||||
Comment.objects.filter(owner=user, status='Q2'), |
Comment.objects.filter(owner=user, status='Q2'), |
||||||
'best': |
'best': |
||||||
Comment.objects.filter(owner=user, status='Q2', best=True).count() |
Comment.objects.filter(owner=user, status='Q2', best=True).count() |
||||||
}} |
}} |
||||||
else: |
else: |
||||||
raise Http404 |
raise Http404 |
||||||
|
|
||||||
|
|
||||||
def logout_in(request): |
def logout_in(request): |
||||||
logout(request) |
logout(request) |
||||||
return redirect('/') |
return redirect('/') |
||||||
|
|
||||||
|
|
||||||
@response_decor(template='index.html') |
@response_decor(template='index.html') |
||||||
def come_off(request): |
def come_off(request): |
||||||
# Деактивация подписок |
# Деактивация подписок |
||||||
context = {'code': 'error'} |
context = {'code': 'error'} |
||||||
condition = condition_factory([ |
condition = condition_factory([ |
||||||
{'condition': request.GET.get('token'), 'error': u'В запросе не обнаружен токен'}, |
{'condition': request.GET.get('token'), 'error': u'В запросе не обнаружен токен'}, |
||||||
{'condition': request.GET.get('right'), 'error': u'В запросе не обнаружено изменяемое право'} |
{'condition': request.GET.get('right'), 'error': u'В запросе не обнаружено изменяемое право'} |
||||||
]) |
]) |
||||||
|
|
||||||
if condition['code'] == '1': |
if condition['code'] == '1': |
||||||
try: |
try: |
||||||
user = User.objects.get(token=request.GET['token']) |
user = User.objects.get(token=request.GET['token']) |
||||||
except User.DoesNotExist: |
except User.DoesNotExist: |
||||||
context['response'] = u'Запрос не обработан' |
context['response'] = u'Запрос не обработан' |
||||||
else: |
else: |
||||||
if user.rights.check_right(user, request.GET['right']): |
if user.rights.check_right(user, request.GET['right']): |
||||||
if request.GET['right'] == 'feedback_follow': |
if request.GET['right'] == 'feedback_follow': |
||||||
user.rights.set_right('feedback_follow', False) |
user.rights.set_right('feedback_follow', False) |
||||||
context['response'] = u'Подписка деактивирована' |
context['response'] = u'Подписка деактивирована' |
||||||
context['code'] = u'info' |
context['code'] = u'info' |
||||||
elif request.GET['right'] == 'news_follow': |
elif request.GET['right'] == 'news_follow': |
||||||
user.rights.set_right('news_follow', False) |
user.rights.set_right('news_follow', False) |
||||||
context['response'] = u'Подписка деактивирована' |
context['response'] = u'Подписка деактивирована' |
||||||
context['code'] = u'info' |
context['code'] = u'info' |
||||||
else: |
else: |
||||||
context[ |
context[ |
||||||
'response'] = u'Вы указали право, на которое не распространяется функция быстрого отключения' |
'response'] = u'Вы указали право, на которое не распространяется функция быстрого отключения' |
||||||
else: |
else: |
||||||
context['response'] = u'Вы уже описаны от данной рассылки' |
context['response'] = u'Вы уже описаны от данной рассылки' |
||||||
else: |
else: |
||||||
context['response'] = condition['response'] |
context['response'] = condition['response'] |
||||||
context['code'] = '0' |
context['code'] = '0' |
||||||
|
|
||||||
return {'response': context['response'], 'code': context['code']} |
return {'response': context['response'], 'code': context['code']} |
||||||
|
|
||||||
|
|
||||||
@response_decor(template='auth_error.html', without_auth=True) |
@response_decor(template='auth_error.html', without_auth=True) |
||||||
def auth_error(request): |
def auth_error(request): |
||||||
# Запрешен доступ - кабинет менеджера, пепода и.т.д. |
# Запрешен доступ - кабинет менеджера, пепода и.т.д. |
||||||
return {} |
return {} |
||||||
|
|
||||||
|
|
||||||
@response_decor(template='access_error.html', without_auth=True) |
@response_decor(template='access_error.html', without_auth=True) |
||||||
def access_error(request): |
def access_error(request): |
||||||
# Закрытая страница - не открытый урок, дз и.т.д. |
# Закрытая страница - не открытый урок, дз и.т.д. |
||||||
return {} |
return {} |
||||||
|
|
||||||
|
|
||||||
@response_decor(template='by_error.html', without_auth=True) |
@response_decor(template='by_error.html', without_auth=True) |
||||||
def by_error(request): |
def by_error(request): |
||||||
# Запрещен доступ по подпискеs |
# Запрещен доступ по подпискеs |
||||||
return {} |
return {} |
||||||
|
|
||||||
|
|
||||||
@response_decor(template='all_actions.html', without_auth=False) |
@response_decor(template='all_actions.html', without_auth=False) |
||||||
def all_actions(request): |
def all_actions(request): |
||||||
# Страница событий |
# Страница событий |
||||||
return {'b_actions': ActionJ.objects.filter(student=request.user).order_by('-id')} |
return {'b_actions': ActionJ.objects.filter(student=request.user).order_by('-id')} |
||||||
|
|
||||||
|
|
||||||
@response_decor(template='index.html', without_auth=True) |
@response_decor(template='index.html', without_auth=True) |
||||||
def fast_auth(request): |
def fast_auth(request): |
||||||
# Авторизация по кнопке |
# Авторизация по кнопке |
||||||
# FIXME: Усилить проверку |
# FIXME: Усилить проверку |
||||||
if request.POST.get('email') and request.POST.get('password'): |
if request.POST.get('email') and request.POST.get('password'): |
||||||
email = request.POST['email'].lower() |
email = request.POST['email'].lower() |
||||||
user = auth.authenticate(email=email, password=request.POST['password']) |
user = auth.authenticate(email=email, password=request.POST['password']) |
||||||
|
|
||||||
if user is not None: |
if user is not None: |
||||||
auth.login(request, user) |
auth.login(request, user) |
||||||
return {'redirect': '/'} |
return {'redirect': '/'} |
||||||
|
|||||||
@ -1,40 +1,40 @@ |
|||||||
; ================================== |
; ================================== |
||||||
; celery worker supervisor example |
; celery worker supervisor example |
||||||
; ================================== |
; ================================== |
||||||
|
|
||||||
[program:celery_codemy] |
[program:celery_codemy] |
||||||
command=/var/www/.envs/codemy/bin/celery worker -A lms --loglevel=INFO |
command=/var/www/.envs/codemy/bin/celery worker -A lms --loglevel=INFO |
||||||
directory=/var/www/projects/codemy/ |
directory=/var/www/projects/codemy/ |
||||||
user=www-data |
user=www-data |
||||||
numprocs=1 |
numprocs=1 |
||||||
stdout_logfile=/var/www/logs/codemy/celery-worker.log |
stdout_logfile=/var/www/logs/codemy/celery-worker.log |
||||||
stderr_logfile=/var/www/logs/codemy/celery-worker.log |
stderr_logfile=/var/www/logs/codemy/celery-worker.log |
||||||
autostart=true |
autostart=true |
||||||
autorestart=true |
autorestart=true |
||||||
startsecs=10 |
startsecs=10 |
||||||
stopwaitsecs = 600 |
stopwaitsecs = 600 |
||||||
killasgroup=true |
killasgroup=true |
||||||
|
|
||||||
[program:celery_beat_codemy] |
[program:celery_beat_codemy] |
||||||
command=/var/www/.envs/codemy/bin/celery beat -A lms --schedule /var/lib/celery/beat.db --loglevel=INFO |
command=/var/www/.envs/codemy/bin/celery beat -A lms --schedule /var/lib/celery/beat.db --loglevel=INFO |
||||||
directory=/var/www/projects/codemy |
directory=/var/www/projects/codemy |
||||||
user=www-data |
user=www-data |
||||||
numprocs=1 |
numprocs=1 |
||||||
stdout_logfile=/var/www/logs/codemy/celery-beat.log |
stdout_logfile=/var/www/logs/codemy/celery-beat.log |
||||||
stderr_logfile=/var/www/logs/codemy/celery-beat.log |
stderr_logfile=/var/www/logs/codemy/celery-beat.log |
||||||
autostart=true |
autostart=true |
||||||
autorestart=true |
autorestart=true |
||||||
startsecs=10 |
startsecs=10 |
||||||
priority=999 |
priority=999 |
||||||
|
|
||||||
[program:celery_flower_codemy] |
[program:celery_flower_codemy] |
||||||
command=/var/www/.envs/codemy/bin/celery -A lms flower |
command=/var/www/.envs/codemy/bin/celery -A lms flower |
||||||
directory=/var/www/projects/codemy |
directory=/var/www/projects/codemy |
||||||
user=www-data |
user=www-data |
||||||
numprocs=1 |
numprocs=1 |
||||||
stdout_logfile=/var/www/logs/codemy/celery-flower.log |
stdout_logfile=/var/www/logs/codemy/celery-flower.log |
||||||
stderr_logfile=/var/www/logs/codemy/celery-flower.log |
stderr_logfile=/var/www/logs/codemy/celery-flower.log |
||||||
autostart=true |
autostart=true |
||||||
autorestart=true |
autorestart=true |
||||||
startsecs=10 |
startsecs=10 |
||||||
priority=600 |
priority=600 |
||||||
|
|||||||
@ -1,51 +1,51 @@ |
|||||||
-----BEGIN RSA PRIVATE KEY----- |
-----BEGIN RSA PRIVATE KEY----- |
||||||
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 |
||||||
-----END RSA PRIVATE KEY----- |
-----END RSA PRIVATE KEY----- |
||||||
|
|||||||
@ -1,85 +1,85 @@ |
|||||||
-----BEGIN CERTIFICATE----- |
-----BEGIN CERTIFICATE----- |
||||||
MIIF9jCCBN6gAwIBAgIMY/C5dNv6x+tP/WuUMA0GCSqGSIb3DQEBCwUAMGAxCzAJ |
MIIF9jCCBN6gAwIBAgIMY/C5dNv6x+tP/WuUMA0GCSqGSIb3DQEBCwUAMGAxCzAJ |
||||||
BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTYwNAYDVQQDEy1H |
BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTYwNAYDVQQDEy1H |
||||||
bG9iYWxTaWduIERvbWFpbiBWYWxpZGF0aW9uIENBIC0gU0hBMjU2IC0gRzIwHhcN |
bG9iYWxTaWduIERvbWFpbiBWYWxpZGF0aW9uIENBIC0gU0hBMjU2IC0gRzIwHhcN |
||||||
MTYwNzAxMTMyMzM0WhcNMTcwNzAyMTMyMzM0WjA5MSEwHwYDVQQLExhEb21haW4g |
MTYwNzAxMTMyMzM0WhcNMTcwNzAyMTMyMzM0WjA5MSEwHwYDVQQLExhEb21haW4g |
||||||
Q29udHJvbCBWYWxpZGF0ZWQxFDASBgNVBAMMCyouY29kZW15LnJ1MIICIjANBgkq |
Q29udHJvbCBWYWxpZGF0ZWQxFDASBgNVBAMMCyouY29kZW15LnJ1MIICIjANBgkq |
||||||
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArcJkDivloDX2QRQE+s1jPH/pxq+oZGeS |
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArcJkDivloDX2QRQE+s1jPH/pxq+oZGeS |
||||||
Ne8aJVMXRu3IbIML+iJt0H0XGol9N9FkvSHF2G33oOmJ134Imd6BcQ/OQCT8J7Mv |
Ne8aJVMXRu3IbIML+iJt0H0XGol9N9FkvSHF2G33oOmJ134Imd6BcQ/OQCT8J7Mv |
||||||
Pbts5Y7LWBcwUomJ+QZq9qcHFVrcP95Q0wrZTV5f2zU468dz+eUnmWVfFYIR674Z |
Pbts5Y7LWBcwUomJ+QZq9qcHFVrcP95Q0wrZTV5f2zU468dz+eUnmWVfFYIR674Z |
||||||
ImLLtc+bLl3NjzH6t23WrTiIUmPpe4dOH9CktKoUyfzgzFcXFOI967mooMAzhefK |
ImLLtc+bLl3NjzH6t23WrTiIUmPpe4dOH9CktKoUyfzgzFcXFOI967mooMAzhefK |
||||||
zigr+5sU34SMbWLsczspC7cj22LRpIXowFeuRnoygXXVbDvRlgU2criLFqiDCwWq |
zigr+5sU34SMbWLsczspC7cj22LRpIXowFeuRnoygXXVbDvRlgU2criLFqiDCwWq |
||||||
i6OOVZMcNjqePwc41R4qdWeIf7mJ69xuPQtzHrO+rRC8mgGVSU+9nKunNq6tIxvO |
i6OOVZMcNjqePwc41R4qdWeIf7mJ69xuPQtzHrO+rRC8mgGVSU+9nKunNq6tIxvO |
||||||
OnK/TeOzaJoCx/yb7XsNcYCoue3ZV3emM2WeUB6MOxG41m9AFo9TKsHOtpFLx8ty |
OnK/TeOzaJoCx/yb7XsNcYCoue3ZV3emM2WeUB6MOxG41m9AFo9TKsHOtpFLx8ty |
||||||
WTcypBWhr6xTYhNBGTiSUMofGZmM6sjcVyQT6pEFpx50DxZeTDhnO+wSi8NZRoNK |
WTcypBWhr6xTYhNBGTiSUMofGZmM6sjcVyQT6pEFpx50DxZeTDhnO+wSi8NZRoNK |
||||||
jqMo3wvrvJjcM1mzqRzHE5nyzU1/Gf/j5WCNdCC/+2Q8s+LXaKkm0iRUuSqmQVtp |
jqMo3wvrvJjcM1mzqRzHE5nyzU1/Gf/j5WCNdCC/+2Q8s+LXaKkm0iRUuSqmQVtp |
||||||
kzaMCdEf33ELDshGXN4jCvTSG5w8fL+GdeZ8BpBPLob8qKkYU2kW3YqawQ9+bi7p |
kzaMCdEf33ELDshGXN4jCvTSG5w8fL+GdeZ8BpBPLob8qKkYU2kW3YqawQ9+bi7p |
||||||
8MDs1ZCNtjScCzgtaNvoX/3/TFO4tSu/XCz5nGYKVYbjUrr1Mv9NldSIiua/hJOr |
8MDs1ZCNtjScCzgtaNvoX/3/TFO4tSu/XCz5nGYKVYbjUrr1Mv9NldSIiua/hJOr |
||||||
sWFfpoEXjmMCAwEAAaOCAdUwggHRMA4GA1UdDwEB/wQEAwIFoDCBlAYIKwYBBQUH |
sWFfpoEXjmMCAwEAAaOCAdUwggHRMA4GA1UdDwEB/wQEAwIFoDCBlAYIKwYBBQUH |
||||||
AQEEgYcwgYQwRwYIKwYBBQUHMAKGO2h0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5j |
AQEEgYcwgYQwRwYIKwYBBQUHMAKGO2h0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5j |
||||||
b20vY2FjZXJ0L2dzZG9tYWludmFsc2hhMmcycjEuY3J0MDkGCCsGAQUFBzABhi1o |
b20vY2FjZXJ0L2dzZG9tYWludmFsc2hhMmcycjEuY3J0MDkGCCsGAQUFBzABhi1o |
||||||
dHRwOi8vb2NzcDIuZ2xvYmFsc2lnbi5jb20vZ3Nkb21haW52YWxzaGEyZzIwVgYD |
dHRwOi8vb2NzcDIuZ2xvYmFsc2lnbi5jb20vZ3Nkb21haW52YWxzaGEyZzIwVgYD |
||||||
VR0gBE8wTTBBBgkrBgEEAaAyAQowNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cu |
VR0gBE8wTTBBBgkrBgEEAaAyAQowNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cu |
||||||
Z2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCAYGZ4EMAQIBMAkGA1UdEwQCMAAw |
Z2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCAYGZ4EMAQIBMAkGA1UdEwQCMAAw |
||||||
QwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9n |
QwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9n |
||||||
c2RvbWFpbnZhbHNoYTJnMi5jcmwwIQYDVR0RBBowGIILKi5jb2RlbXkucnWCCWNv |
c2RvbWFpbnZhbHNoYTJnMi5jcmwwIQYDVR0RBBowGIILKi5jb2RlbXkucnWCCWNv |
||||||
ZGVteS5ydTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYE |
ZGVteS5ydTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYE |
||||||
FHlv5NiaqItBFuN0vudXy9jt1bLkMB8GA1UdIwQYMBaAFOpOfNSALeUVgYYmjIJt |
FHlv5NiaqItBFuN0vudXy9jt1bLkMB8GA1UdIwQYMBaAFOpOfNSALeUVgYYmjIJt |
||||||
wJikz5cPMA0GCSqGSIb3DQEBCwUAA4IBAQBfIs7hKJlHw5Hly/vVhjAQzX8qcN9H |
wJikz5cPMA0GCSqGSIb3DQEBCwUAA4IBAQBfIs7hKJlHw5Hly/vVhjAQzX8qcN9H |
||||||
ISyHjmU4KeMKtiq0RdvC2Jf1IQFmxvgmycrARH1Xc9cHoMXZ8prYonnXeRX7fqrL |
ISyHjmU4KeMKtiq0RdvC2Jf1IQFmxvgmycrARH1Xc9cHoMXZ8prYonnXeRX7fqrL |
||||||
hsjp6x87DxwDDXqblHqpoakFXhZhY2fJCeH+YQTrY37+hOy3qOreI3CiRK5N+BYF |
hsjp6x87DxwDDXqblHqpoakFXhZhY2fJCeH+YQTrY37+hOy3qOreI3CiRK5N+BYF |
||||||
PO78hVAa5TdawQGM3c1TeYIG3ZzQ3x2wVGAQNCXdwcJOLF9dl6z+syySTOGPABKN |
PO78hVAa5TdawQGM3c1TeYIG3ZzQ3x2wVGAQNCXdwcJOLF9dl6z+syySTOGPABKN |
||||||
rIEKOzc4ScqIHOzuQ1qTG2QcjwyH9tarDjJd79rnZUQzf1O58DwGwaQZwh6gjksz |
rIEKOzc4ScqIHOzuQ1qTG2QcjwyH9tarDjJd79rnZUQzf1O58DwGwaQZwh6gjksz |
||||||
QXZOLz6LR55gpBP8cGpqJIwOiZKjtLTqeE6q/kJ0C9sbxnNw9sCkeAhh |
QXZOLz6LR55gpBP8cGpqJIwOiZKjtLTqeE6q/kJ0C9sbxnNw9sCkeAhh |
||||||
-----END CERTIFICATE----- |
-----END CERTIFICATE----- |
||||||
|
|
||||||
Корневой сертификат |
Корневой сертификат |
||||||
-----BEGIN CERTIFICATE----- |
-----BEGIN CERTIFICATE----- |
||||||
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 |
||||||
HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== |
HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== |
||||||
-----END CERTIFICATE----- |
-----END CERTIFICATE----- |
||||||
|
|
||||||
Промежуточный сертификат |
Промежуточный сертификат |
||||||
-----BEGIN CERTIFICATE----- |
-----BEGIN CERTIFICATE----- |
||||||
MIIEYzCCA0ugAwIBAgILBAAAAAABRE7wPiAwDQYJKoZIhvcNAQELBQAwVzELMAkG |
MIIEYzCCA0ugAwIBAgILBAAAAAABRE7wPiAwDQYJKoZIhvcNAQELBQAwVzELMAkG |
||||||
A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv |
A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv |
||||||
b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw |
b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw |
||||||
MDBaFw0yNDAyMjAxMDAwMDBaMGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i |
MDBaFw0yNDAyMjAxMDAwMDBaMGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i |
||||||
YWxTaWduIG52LXNhMTYwNAYDVQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0 |
YWxTaWduIG52LXNhMTYwNAYDVQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0 |
||||||
aW9uIENBIC0gU0hBMjU2IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK |
aW9uIENBIC0gU0hBMjU2IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK |
||||||
AoIBAQCp3cwOs+IyOd1JIqgTaZOHiOEM7nF9vZCHll1Z8syz0lhXV/lG72wm2DZC |
AoIBAQCp3cwOs+IyOd1JIqgTaZOHiOEM7nF9vZCHll1Z8syz0lhXV/lG72wm2DZC |
||||||
jn4wsy+aPlN7H262okxFHzzTFZMcie089Ffeyr3sBppqKqAZUn9R0XQ5CJ+r69eG |
jn4wsy+aPlN7H262okxFHzzTFZMcie089Ffeyr3sBppqKqAZUn9R0XQ5CJ+r69eG |
||||||
ExWXrjbDVGYOWvKgc4Ux47JkFGr/paKOJLu9hVIVonnu8LXuPbj0fYC82ZA1ZbgX |
ExWXrjbDVGYOWvKgc4Ux47JkFGr/paKOJLu9hVIVonnu8LXuPbj0fYC82ZA1ZbgX |
||||||
qa2zmJ+gfn1u+z+tfMIbWTaW2jcyS0tdNQJjjtunz2LuzC7Ujcm9PGqRcqIip3It |
qa2zmJ+gfn1u+z+tfMIbWTaW2jcyS0tdNQJjjtunz2LuzC7Ujcm9PGqRcqIip3It |
||||||
INH6yjfaGJjmFiRxJUvE5XuJUgkC/VkrBG7KB4HUs9ra2+PMgKhWBwZ8lgg3nds4 |
INH6yjfaGJjmFiRxJUvE5XuJUgkC/VkrBG7KB4HUs9ra2+PMgKhWBwZ8lgg3nds4 |
||||||
tmI0kWIHdAE42HIw4uuQcSZiwFfzAgMBAAGjggElMIIBITAOBgNVHQ8BAf8EBAMC |
tmI0kWIHdAE42HIw4uuQcSZiwFfzAgMBAAGjggElMIIBITAOBgNVHQ8BAf8EBAMC |
||||||
AQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU6k581IAt5RWBhiaMgm3A |
AQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU6k581IAt5RWBhiaMgm3A |
||||||
mKTPlw8wRwYDVR0gBEAwPjA8BgRVHSAAMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8v |
mKTPlw8wRwYDVR0gBEAwPjA8BgRVHSAAMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8v |
||||||
d3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMDMGA1UdHwQsMCowKKAmoCSG |
d3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMDMGA1UdHwQsMCowKKAmoCSG |
||||||
Imh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvcm9vdC5jcmwwPQYIKwYBBQUHAQEE |
Imh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvcm9vdC5jcmwwPQYIKwYBBQUHAQEE |
||||||
MTAvMC0GCCsGAQUFBzABhiFodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9yb290 |
MTAvMC0GCCsGAQUFBzABhiFodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9yb290 |
||||||
cjEwHwYDVR0jBBgwFoAUYHtmGkUNl8qJUC99BM00qP/8/UswDQYJKoZIhvcNAQEL |
cjEwHwYDVR0jBBgwFoAUYHtmGkUNl8qJUC99BM00qP/8/UswDQYJKoZIhvcNAQEL |
||||||
BQADggEBANdFnqDc4ONhWgt9d4QXLWVagpqNoycqhffJ7+mG/dRHzQFSlsVDvTex |
BQADggEBANdFnqDc4ONhWgt9d4QXLWVagpqNoycqhffJ7+mG/dRHzQFSlsVDvTex |
||||||
4bjyqdKKEYRxkRWJ3AKdC8tsM4U0KJ4gsrGX3G0LEME8zV/qXdeYMcU0mVwAYVXE |
4bjyqdKKEYRxkRWJ3AKdC8tsM4U0KJ4gsrGX3G0LEME8zV/qXdeYMcU0mVwAYVXE |
||||||
GwJbxeOJyLS4bx448lYm6UHvPc2smU9ZSlctS32ux4j71pg79eXw6ImJuYsDy1oj |
GwJbxeOJyLS4bx448lYm6UHvPc2smU9ZSlctS32ux4j71pg79eXw6ImJuYsDy1oj |
||||||
H6T9uOr7Lp2uanMJvPzVoLVEgqtEkS5QLlfBQ9iRBIvpES5ftD953x77PzAAi1Pj |
H6T9uOr7Lp2uanMJvPzVoLVEgqtEkS5QLlfBQ9iRBIvpES5ftD953x77PzAAi1Pj |
||||||
tywdO02L3ORkHQRYM68bVeerDL8wBHTk8w4vMDmNSwSMHnVmZkngvkA0x1xaUZK6 |
tywdO02L3ORkHQRYM68bVeerDL8wBHTk8w4vMDmNSwSMHnVmZkngvkA0x1xaUZK6 |
||||||
EjxS1QSCVS1npd+3lXzuP8MIugS+wEY= |
EjxS1QSCVS1npd+3lXzuP8MIugS+wEY= |
||||||
-----END CERTIFICATE----- |
-----END CERTIFICATE----- |
||||||
@ -1,17 +1,17 @@ |
|||||||
django==1.9.3 |
django==1.9.3 |
||||||
Pillow |
Pillow==3.3.0 |
||||||
psycopg2 |
psycopg2==2.6.2 |
||||||
simplejson |
simplejson==3.8.2 |
||||||
celery |
celery==3.1.23 |
||||||
django-celery |
django-celery==3.1.17 |
||||||
django-wysiwyg-redactor |
django-wysiwyg-redactor==0.4.9 |
||||||
raven |
raven==5.24.3 |
||||||
uwsgi |
uwsgi==2.0.13.1 |
||||||
flower |
flower==0.9.1 |
||||||
django-import-export |
django-import-export==0.4.5 |
||||||
python-dateutil |
python-dateutil==2.5.3 |
||||||
requests |
requests==2.11.0 |
||||||
ipython |
ipython==5.1.0 |
||||||
django-precise-bbcode |
django-precise-bbcode==1.2.6 |
||||||
html2bbcode |
html2bbcode==2.3.2 |
||||||
markdown |
markdown==2.6.7 |
||||||
@ -1,51 +1,51 @@ |
|||||||
-----BEGIN RSA PRIVATE KEY----- |
-----BEGIN RSA PRIVATE KEY----- |
||||||
MIIJKQIBAAKCAgEAxPkRkFPI6cpWutUxb27Zwf1uEc9wSwkB8SWL16n0SEOxcJPV |
MIIJKQIBAAKCAgEAxPkRkFPI6cpWutUxb27Zwf1uEc9wSwkB8SWL16n0SEOxcJPV |
||||||
OfV3Jl//2GP8TLSxeY1S4+MORhsqDm7/outDrJQSJnkZ/pwYZbJEj+1oCItpyamo |
OfV3Jl//2GP8TLSxeY1S4+MORhsqDm7/outDrJQSJnkZ/pwYZbJEj+1oCItpyamo |
||||||
+lHJ48ggnQD6HzYWmDZMrUNYiOTmLxsKcVcXM4kLcDVG6RJOgIMbiwaAwIH7DBPW |
+lHJ48ggnQD6HzYWmDZMrUNYiOTmLxsKcVcXM4kLcDVG6RJOgIMbiwaAwIH7DBPW |
||||||
yVbaCBBY9XMUz7esODov/9OMdZuhcjuk6NXntNsASAbDC0BuVCAJLsVR6ir7r8xO |
yVbaCBBY9XMUz7esODov/9OMdZuhcjuk6NXntNsASAbDC0BuVCAJLsVR6ir7r8xO |
||||||
F7DtrnhhEjcE7R1Wkf4A7i/DyUy/7oJRy2o7psAPJJIS+Hz+bHN+zN+/w9YpCm07 |
F7DtrnhhEjcE7R1Wkf4A7i/DyUy/7oJRy2o7psAPJJIS+Hz+bHN+zN+/w9YpCm07 |
||||||
8ZmCy/fJmhIRoymCrdHEbHy9GfNuDfTow1H6+nPzTdA7z33uhOxLJMhYtZjzDOkZ |
8ZmCy/fJmhIRoymCrdHEbHy9GfNuDfTow1H6+nPzTdA7z33uhOxLJMhYtZjzDOkZ |
||||||
QT4cwj3aHGF7bFrWvEzauJeTtGyEh5fSpgJvH3kA+Z2cVJRYkW3JZR5B2aTbhPdO |
QT4cwj3aHGF7bFrWvEzauJeTtGyEh5fSpgJvH3kA+Z2cVJRYkW3JZR5B2aTbhPdO |
||||||
ac4dhp3qUR9DVTjih2I1eP8FBavr5Rb56NIe4HGyL2QIyvKjpqkfH5TRJ1vRbQB3 |
ac4dhp3qUR9DVTjih2I1eP8FBavr5Rb56NIe4HGyL2QIyvKjpqkfH5TRJ1vRbQB3 |
||||||
OjT8nWRkTmHvUxJXg5TmhZVvBt48/xjk5DO1W/GC516r96q1S5YieQzOJ4RUNFIz |
OjT8nWRkTmHvUxJXg5TmhZVvBt48/xjk5DO1W/GC516r96q1S5YieQzOJ4RUNFIz |
||||||
SInUke0OLzmha8P9vDv+2owT59IRTl7uO6fQXGSR7bshA5MlquBvzdQ0g837r3Nh |
SInUke0OLzmha8P9vDv+2owT59IRTl7uO6fQXGSR7bshA5MlquBvzdQ0g837r3Nh |
||||||
ys1AXI+jrfelR0umHY8bMcrCcXeWbXyGAKIzkTz8x1I2xDzIPZVW4vB/cS8CAwEA |
ys1AXI+jrfelR0umHY8bMcrCcXeWbXyGAKIzkTz8x1I2xDzIPZVW4vB/cS8CAwEA |
||||||
AQKCAgEAwiOC7i/GbLejeA485UnqkssIu8ErOqmsIlQRWwUF4lvl/cGXfcK0Jzyj |
AQKCAgEAwiOC7i/GbLejeA485UnqkssIu8ErOqmsIlQRWwUF4lvl/cGXfcK0Jzyj |
||||||
XFJgD/Jgoh9qvXXDUdHgR82bZKZhUy22HflqZ4rOeR2Veg5SZWmTYNI53E7UoA9W |
XFJgD/Jgoh9qvXXDUdHgR82bZKZhUy22HflqZ4rOeR2Veg5SZWmTYNI53E7UoA9W |
||||||
Jaka3bxf1LJgLL2d+38waOlMB54BHihK/9NjCsGiYgPXF9XW/Oaf262KG3Pg/eWu |
Jaka3bxf1LJgLL2d+38waOlMB54BHihK/9NjCsGiYgPXF9XW/Oaf262KG3Pg/eWu |
||||||
6Gz+7CRqOBkRyiJl5Fz6aS7kQSDjeVwJEPSpNOPSWlQg+No+/IBVBVZm+e7GtRmt |
6Gz+7CRqOBkRyiJl5Fz6aS7kQSDjeVwJEPSpNOPSWlQg+No+/IBVBVZm+e7GtRmt |
||||||
A1j7IAG0m7wwipLFdBiTa69Cky0nkhjmU/Mtg4Ee+yFyrtcxmQHx/XbgiCX3xrV5 |
A1j7IAG0m7wwipLFdBiTa69Cky0nkhjmU/Mtg4Ee+yFyrtcxmQHx/XbgiCX3xrV5 |
||||||
HMQGYjy9sjh4Uz023OcTZ+olqK2aoZjY/avsPKOtx9ybbO/YFER7f4PBts+IvCVS |
HMQGYjy9sjh4Uz023OcTZ+olqK2aoZjY/avsPKOtx9ybbO/YFER7f4PBts+IvCVS |
||||||
SgAdli6tdoAO/GCHnXKjjLT2WaL8ZXOQcpNFFpLsaRxmq21AKMFCT74fl4euX5cA |
SgAdli6tdoAO/GCHnXKjjLT2WaL8ZXOQcpNFFpLsaRxmq21AKMFCT74fl4euX5cA |
||||||
qCflO6LxxtclXJdiaJJSuop0xp5KSJ4svRVScq9pHqJCjFoLEkvhYEpfI0nqeodP |
qCflO6LxxtclXJdiaJJSuop0xp5KSJ4svRVScq9pHqJCjFoLEkvhYEpfI0nqeodP |
||||||
jWqlNPiARFK0nnGk5+Uxfjo1WfsnRUvj7bPUbMp/xyG9dFQ0fg40XCIIHV1fTk38 |
jWqlNPiARFK0nnGk5+Uxfjo1WfsnRUvj7bPUbMp/xyG9dFQ0fg40XCIIHV1fTk38 |
||||||
iL+Da0ijtORrIG8kwzL0q4tBU8/89ePvbsk1gOVDr+3nwoB84UmA+zmniHzFGjf4 |
iL+Da0ijtORrIG8kwzL0q4tBU8/89ePvbsk1gOVDr+3nwoB84UmA+zmniHzFGjf4 |
||||||
btF8v840epHaPjMSjWOnTMmsqycZ7imjBGhuqY5vwf1hmMZ3bhECggEBAOfgq1y7 |
btF8v840epHaPjMSjWOnTMmsqycZ7imjBGhuqY5vwf1hmMZ3bhECggEBAOfgq1y7 |
||||||
3uvAPzk9gUsDNSPSfmcszw4haHGIaOSmwUwm0klYxqa73T/6AnmjqjRfGErkqqpl |
3uvAPzk9gUsDNSPSfmcszw4haHGIaOSmwUwm0klYxqa73T/6AnmjqjRfGErkqqpl |
||||||
+O0L6oA1+KCS/pCSgN6/uWbtlcS8drniD9rHh9C5twBOOU2e77aDLdQx4SnHkHQZ |
+O0L6oA1+KCS/pCSgN6/uWbtlcS8drniD9rHh9C5twBOOU2e77aDLdQx4SnHkHQZ |
||||||
GnNpIi4m0PWUaa7qsBBGKpZMDqZCLXZw/6olCGoymrAxW+Tq79/lOf8Ngbz2jzpV |
GnNpIi4m0PWUaa7qsBBGKpZMDqZCLXZw/6olCGoymrAxW+Tq79/lOf8Ngbz2jzpV |
||||||
Ou+TAEb06Vy9fBniGb02+8cOPgECPo1a5cdij/1eU11CU66G5Re5il+34jZbVBo9 |
Ou+TAEb06Vy9fBniGb02+8cOPgECPo1a5cdij/1eU11CU66G5Re5il+34jZbVBo9 |
||||||
Zmzanlc/hBSrZ4f9IMJVJLD8/ccc9exCXm+FHBWNpEE/gzxQWPb2ye7CoBep+glD |
Zmzanlc/hBSrZ4f9IMJVJLD8/ccc9exCXm+FHBWNpEE/gzxQWPb2ye7CoBep+glD |
||||||
vfNg+lmUJLfxcuUCggEBANl20pe7WqKME1NOBt/EsX8DKlwoP6zdVasQ57ywDgif |
vfNg+lmUJLfxcuUCggEBANl20pe7WqKME1NOBt/EsX8DKlwoP6zdVasQ57ywDgif |
||||||
9iKW1Fp0d4hbYEwvMfwXXb6uYlLIXRB6slKxuiuZOXo5DFZzGTmgY1kgachyau4l |
9iKW1Fp0d4hbYEwvMfwXXb6uYlLIXRB6slKxuiuZOXo5DFZzGTmgY1kgachyau4l |
||||||
nNdGXctCdlT7XklQOj0WgyKkGjFrHKVS5B+Go7/jdtM+JmqR8nhfzSPysaXZbwor |
nNdGXctCdlT7XklQOj0WgyKkGjFrHKVS5B+Go7/jdtM+JmqR8nhfzSPysaXZbwor |
||||||
P7sGB+Wx/XbCPpupIZl7nPgOh5ctLS38WAh60++JZ2uLvJCkELA9dJj9ero5r/T8 |
P7sGB+Wx/XbCPpupIZl7nPgOh5ctLS38WAh60++JZ2uLvJCkELA9dJj9ero5r/T8 |
||||||
I4RjNK759mVgzay1UYRlmBFK23JwZxqnpA0gFbfVYyyAfA3VTlLu8ydpNq93Gd1/ |
I4RjNK759mVgzay1UYRlmBFK23JwZxqnpA0gFbfVYyyAfA3VTlLu8ydpNq93Gd1/ |
||||||
w2C5YL9iah7xI4XIlPiOLXWxWyuX7x0IrshejWTSroMCggEBAK8Bg3Q3GzWFYHJc |
w2C5YL9iah7xI4XIlPiOLXWxWyuX7x0IrshejWTSroMCggEBAK8Bg3Q3GzWFYHJc |
||||||
OFQcNKQ3v00xpYh9sG1XzgsczHEkL7xJ84xt57vcfre9zb0/NH95/FElK24Fe1SO |
OFQcNKQ3v00xpYh9sG1XzgsczHEkL7xJ84xt57vcfre9zb0/NH95/FElK24Fe1SO |
||||||
53qR1u3YlMkJnO3RTSMyNs1ukBbIV3oyYKsrXtZ1qWhvs0we5Vj6FM17ENqgM7rv |
53qR1u3YlMkJnO3RTSMyNs1ukBbIV3oyYKsrXtZ1qWhvs0we5Vj6FM17ENqgM7rv |
||||||
cvCWtfjdikqOGqBbAQd8lQF6oYuR7brxPIzUhA3PP4IVaONWF2A+GrWlFBkzMpdb |
cvCWtfjdikqOGqBbAQd8lQF6oYuR7brxPIzUhA3PP4IVaONWF2A+GrWlFBkzMpdb |
||||||
SzHClYKXgmOrtvVyi1uJjRp0y03j1tcctQCDCdOEXi28zHIXv/TUkzJGuyJXEgC5 |
SzHClYKXgmOrtvVyi1uJjRp0y03j1tcctQCDCdOEXi28zHIXv/TUkzJGuyJXEgC5 |
||||||
oH9VKouZgXsKdena19LKydUp9kpnBV5DDABu5ibEYZDrjFbWr6uMj3kklp20yN6J |
oH9VKouZgXsKdena19LKydUp9kpnBV5DDABu5ibEYZDrjFbWr6uMj3kklp20yN6J |
||||||
D/mAkv0CggEAcWLGHT0f3d8BeI8XgHczQRFqddC6mqxxLZfL7JMzTgXxtUlFgcB2 |
D/mAkv0CggEAcWLGHT0f3d8BeI8XgHczQRFqddC6mqxxLZfL7JMzTgXxtUlFgcB2 |
||||||
Ts+uHysAefvI8lJEi/tSovQGpJ1sf60Nzg+OwkiTH3vkMSV4Yn5eCLvt0kUrRH7r |
Ts+uHysAefvI8lJEi/tSovQGpJ1sf60Nzg+OwkiTH3vkMSV4Yn5eCLvt0kUrRH7r |
||||||
6hWCrOE67H0fdOFxktDRh9X3ggSWvsegPjaKm0hrz53L/XFedSYxAnFYcnCLj5VF |
6hWCrOE67H0fdOFxktDRh9X3ggSWvsegPjaKm0hrz53L/XFedSYxAnFYcnCLj5VF |
||||||
njVbpZgDH97XEnOo+QciJncLg6hfducC2I1sjVIuLWZttBN+eTj46NjKwA1l+9Hz |
njVbpZgDH97XEnOo+QciJncLg6hfducC2I1sjVIuLWZttBN+eTj46NjKwA1l+9Hz |
||||||
Shq2QtXrogfCyUlpsHqxF7HPFNTk3gxSAHMhu6i7hPx4JdVzIPwNrXMfcQBXVJLA |
Shq2QtXrogfCyUlpsHqxF7HPFNTk3gxSAHMhu6i7hPx4JdVzIPwNrXMfcQBXVJLA |
||||||
2E9NAUV7fznKtDH8Ynd+wnmzgF/kg2xidwKCAQAg4h/BV1tPoJBuX2utlvvw+TjS |
2E9NAUV7fznKtDH8Ynd+wnmzgF/kg2xidwKCAQAg4h/BV1tPoJBuX2utlvvw+TjS |
||||||
yuN6GcR7aZu4tvkctktvxcRihyyiZ1Rycftzqij1haA4xxcCzGFDbpAdjUwfO43+ |
yuN6GcR7aZu4tvkctktvxcRihyyiZ1Rycftzqij1haA4xxcCzGFDbpAdjUwfO43+ |
||||||
0RIV3oLnpvxATxOHGNhvUa7GGYgdJLs9hrX9cTqZRR2Bqt5isTWytaI+b8ViEP7w |
0RIV3oLnpvxATxOHGNhvUa7GGYgdJLs9hrX9cTqZRR2Bqt5isTWytaI+b8ViEP7w |
||||||
rvZQVBkmeg9FUXC4rcTSkbaPrzi3RRMkdtu+EdszLJAEEgt6umqNPd3AIDcwAgK/ |
rvZQVBkmeg9FUXC4rcTSkbaPrzi3RRMkdtu+EdszLJAEEgt6umqNPd3AIDcwAgK/ |
||||||
2rclPBpncTWYWRRoaay+BMHyJPNmgFZdTkem36WiM1xQ3b1I0fzjcqdX+aDn6Cm9 |
2rclPBpncTWYWRRoaay+BMHyJPNmgFZdTkem36WiM1xQ3b1I0fzjcqdX+aDn6Cm9 |
||||||
PUxB/vFK9xffL0geEAKptfZJ/kbcZlzecO9GosMvYTEty1ikLTxdYx39/kSm |
PUxB/vFK9xffL0geEAKptfZJ/kbcZlzecO9GosMvYTEty1ikLTxdYx39/kSm |
||||||
-----END RSA PRIVATE KEY----- |
-----END RSA PRIVATE KEY----- |
||||||
|
|||||||
@ -1,28 +1,28 @@ |
|||||||
-----BEGIN CERTIFICATE REQUEST----- |
-----BEGIN CERTIFICATE REQUEST----- |
||||||
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 |
||||||
72c= |
72c= |
||||||
-----END CERTIFICATE REQUEST----- |
-----END CERTIFICATE REQUEST----- |
||||||
|
|||||||
@ -1,8 +1,8 @@ |
|||||||
[program:codemy] |
[program:codemy] |
||||||
command=/usr/bin/uwsgi --ini /var/www/configs/codemy/uwsgi.ini |
command=/usr/bin/uwsgi --ini /var/www/configs/codemy/uwsgi.ini |
||||||
directory=/var/www/projects/codemy |
directory=/var/www/projects/codemy |
||||||
user=www-data |
user=www-data |
||||||
group=www-data |
group=www-data |
||||||
autostart=true |
autostart=true |
||||||
autorestart=true |
autorestart=true |
||||||
stderr_logfile=/var/www/logs/codemy/supervisor-errors.log |
stderr_logfile=/var/www/logs/codemy/supervisor-errors.log |
||||||
@ -1,15 +1,15 @@ |
|||||||
[uwsgi] |
[uwsgi] |
||||||
chdir = /var/www/projects/codemy/ |
chdir = /var/www/projects/codemy/ |
||||||
env = DJANGO_SETTINGS_MODULE=lms.settings |
env = DJANGO_SETTINGS_MODULE=lms.settings |
||||||
module = lms.wsgi:application |
module = lms.wsgi:application |
||||||
home = /var/www/.envs/codemy/ |
home = /var/www/.envs/codemy/ |
||||||
master = true |
master = true |
||||||
threads = 3 |
threads = 3 |
||||||
processes = 2 |
processes = 2 |
||||||
socket = /var/www/run/codemy.sock |
socket = /var/www/run/codemy.sock |
||||||
chmod-socket = 777 |
chmod-socket = 777 |
||||||
vacuum = true |
vacuum = true |
||||||
harakiri = 20 |
harakiri = 20 |
||||||
plugins=python34 |
plugins=python34 |
||||||
uid = www-data |
uid = www-data |
||||||
gid = www-data |
gid = www-data |
||||||
|
|||||||
@ -1,120 +1,120 @@ |
|||||||
from django.contrib import admin |
from django.contrib import admin |
||||||
|
|
||||||
from access.models import User |
from access.models import User |
||||||
from courses.models import Lesson, Course, CourseTheme, Homework, Exam, Skills, Achievements, SkillJ, CourseMap, \ |
from courses.models import Lesson, Course, CourseTheme, Homework, Exam, Skills, Achievements, SkillJ, CourseMap, \ |
||||||
AchievementsMap, Diploma, MaterialDirection |
AchievementsMap, Diploma, MaterialDirection |
||||||
|
|
||||||
|
|
||||||
class LessonAdmin(admin.ModelAdmin): |
class LessonAdmin(admin.ModelAdmin): |
||||||
list_display = ('id', 'get_title', 'sort', 'theme', 'token', 'on_comment') |
list_display = ('id', 'get_title', 'sort', 'theme', 'token', 'on_comment') |
||||||
raw_id_fields = ['materials'] |
raw_id_fields = ['materials'] |
||||||
search_fields = ['title', 'sort', 'id', 'token'] |
search_fields = ['title', 'sort', 'id', 'token'] |
||||||
list_filter = ['course', 'on_comment', 'theme'] |
list_filter = ['course', 'on_comment', 'theme'] |
||||||
|
|
||||||
def get_title(self, obj): |
def get_title(self, obj): |
||||||
return obj.title[:100] |
return obj.title[:100] |
||||||
|
|
||||||
admin.site.register(Lesson, LessonAdmin) |
admin.site.register(Lesson, LessonAdmin) |
||||||
|
|
||||||
|
|
||||||
class MaterialDirectionAdmin(admin.ModelAdmin): |
class MaterialDirectionAdmin(admin.ModelAdmin): |
||||||
list_display = ('title', 'color',) |
list_display = ('title', 'color',) |
||||||
raw_id_fields = ['mentors'] |
raw_id_fields = ['mentors'] |
||||||
|
|
||||||
def formfield_for_manytomany(self, db_field, request, **kwargs): |
def formfield_for_manytomany(self, db_field, request, **kwargs): |
||||||
if db_field.name == "mentors": |
if db_field.name == "mentors": |
||||||
kwargs["queryset"] = User.objects.filter(in_role='S2') |
kwargs["queryset"] = User.objects.filter(in_role='S2') |
||||||
return super(MaterialDirectionAdmin, self).formfield_for_manytomany(db_field, request, **kwargs) |
return super(MaterialDirectionAdmin, self).formfield_for_manytomany(db_field, request, **kwargs) |
||||||
|
|
||||||
admin.site.register(MaterialDirection, MaterialDirectionAdmin) |
admin.site.register(MaterialDirection, MaterialDirectionAdmin) |
||||||
|
|
||||||
|
|
||||||
class CourseAdmin(admin.ModelAdmin): |
class CourseAdmin(admin.ModelAdmin): |
||||||
list_display = ('title', 'id', 'direction', 'must_build', 'public', ) |
list_display = ('title', 'id', 'direction', 'must_build', 'public', ) |
||||||
list_filter = ('direction', ) |
list_filter = ('direction', ) |
||||||
raw_id_fields = ['teachers'] |
raw_id_fields = ['teachers'] |
||||||
search_fields = ['title', 'id'] |
search_fields = ['title', 'id'] |
||||||
filter_horizontal = ['recommend', 'keywords'] |
filter_horizontal = ['recommend', 'keywords'] |
||||||
|
|
||||||
def formfield_for_manytomany(self, db_field, request, **kwargs): |
def formfield_for_manytomany(self, db_field, request, **kwargs): |
||||||
if db_field.name == "teachers": |
if db_field.name == "teachers": |
||||||
kwargs["queryset"] = User.objects.filter(in_role='T') |
kwargs["queryset"] = User.objects.filter(in_role='T') |
||||||
|
|
||||||
if db_field.name == "mentors": |
if db_field.name == "mentors": |
||||||
kwargs["queryset"] = User.objects.filter(in_role='S2') |
kwargs["queryset"] = User.objects.filter(in_role='S2') |
||||||
|
|
||||||
return super(CourseAdmin, self).formfield_for_manytomany(db_field, request, **kwargs) |
return super(CourseAdmin, self).formfield_for_manytomany(db_field, request, **kwargs) |
||||||
|
|
||||||
admin.site.register(Course, CourseAdmin) |
admin.site.register(Course, CourseAdmin) |
||||||
|
|
||||||
|
|
||||||
class CourseThemeAdmin(admin.ModelAdmin): |
class CourseThemeAdmin(admin.ModelAdmin): |
||||||
list_display = ('id', 'sort', 'title', 'course', '_type', 'price_type', 'on_comment', ) |
list_display = ('id', 'sort', 'title', 'course', '_type', 'price_type', 'on_comment', ) |
||||||
list_filter = ['course', '_type', 'on_comment'] |
list_filter = ['course', '_type', 'on_comment'] |
||||||
search_fields = ['title', 'sort'] |
search_fields = ['title', 'sort'] |
||||||
|
|
||||||
admin.site.register(CourseTheme, CourseThemeAdmin) |
admin.site.register(CourseTheme, CourseThemeAdmin) |
||||||
|
|
||||||
|
|
||||||
class HomeworkAdmin(admin.ModelAdmin): |
class HomeworkAdmin(admin.ModelAdmin): |
||||||
list_display = ('id', 'course', 'theme', 'token') |
list_display = ('id', 'course', 'theme', 'token') |
||||||
search_fields = ['id', 'theme', 'course', 'token'] |
search_fields = ['id', 'theme', 'course', 'token'] |
||||||
list_filter = ('course',) |
list_filter = ('course',) |
||||||
raw_id_fields = ('theme', 'course', 'materials', ) |
raw_id_fields = ('theme', 'course', 'materials', ) |
||||||
|
|
||||||
admin.site.register(Homework, HomeworkAdmin) |
admin.site.register(Homework, HomeworkAdmin) |
||||||
|
|
||||||
|
|
||||||
class ExamAdmin(admin.ModelAdmin): |
class ExamAdmin(admin.ModelAdmin): |
||||||
list_display = ('course', 'token', ) |
list_display = ('course', 'token', ) |
||||||
raw_id_fields = ['materials'] |
raw_id_fields = ['materials'] |
||||||
search_fields = ['id', 'course__title'] |
search_fields = ['id', 'course__title'] |
||||||
|
|
||||||
admin.site.register(Exam, ExamAdmin) |
admin.site.register(Exam, ExamAdmin) |
||||||
|
|
||||||
|
|
||||||
class SkillsAdmin(admin.ModelAdmin): |
class SkillsAdmin(admin.ModelAdmin): |
||||||
list_display = ('title', 'color', 'mini_icon', 'big_icon') |
list_display = ('title', 'color', 'mini_icon', 'big_icon') |
||||||
search_fields = ['title'] |
search_fields = ['title'] |
||||||
|
|
||||||
admin.site.register(Skills, SkillsAdmin) |
admin.site.register(Skills, SkillsAdmin) |
||||||
|
|
||||||
|
|
||||||
class AchievementsAdmin(admin.ModelAdmin): |
class AchievementsAdmin(admin.ModelAdmin): |
||||||
list_display = ('id', 'title', 'icon', 'image', 'background', 'border',) |
list_display = ('id', 'title', 'icon', 'image', 'background', 'border',) |
||||||
|
|
||||||
|
|
||||||
admin.site.register(Achievements, AchievementsAdmin) |
admin.site.register(Achievements, AchievementsAdmin) |
||||||
|
|
||||||
|
|
||||||
class SkillJAdmin(admin.ModelAdmin): |
class SkillJAdmin(admin.ModelAdmin): |
||||||
list_display = ('skill', 'lesson', 'size',) |
list_display = ('skill', 'lesson', 'size',) |
||||||
raw_id_fields = ['lesson'] |
raw_id_fields = ['lesson'] |
||||||
list_filter = ['lesson__course'] |
list_filter = ['lesson__course'] |
||||||
|
|
||||||
admin.site.register(SkillJ, SkillJAdmin) |
admin.site.register(SkillJ, SkillJAdmin) |
||||||
|
|
||||||
|
|
||||||
class CourseMapAdmin(admin.ModelAdmin): |
class CourseMapAdmin(admin.ModelAdmin): |
||||||
list_display = ('id', 'course', 'lesson', 'homework', 'exam', 'sort', 'token', ) |
list_display = ('id', 'course', 'lesson', 'homework', 'exam', 'sort', 'token', ) |
||||||
raw_id_fields = ['course', 'lesson', 'homework', 'exam'] |
raw_id_fields = ['course', 'lesson', 'homework', 'exam'] |
||||||
list_filter = ('course',) |
list_filter = ('course',) |
||||||
search_fields = ['lesson_id'] |
search_fields = ['lesson_id'] |
||||||
|
|
||||||
admin.site.register(CourseMap, CourseMapAdmin) |
admin.site.register(CourseMap, CourseMapAdmin) |
||||||
|
|
||||||
|
|
||||||
class AchievementsMapAdmin(admin.ModelAdmin): |
class AchievementsMapAdmin(admin.ModelAdmin): |
||||||
list_display = ('id', 'point', 'achiv', 'after', ) |
list_display = ('id', 'point', 'achiv', 'after', ) |
||||||
raw_id_fields = ['point'] |
raw_id_fields = ['point'] |
||||||
|
|
||||||
|
|
||||||
admin.site.register(AchievementsMap, AchievementsMapAdmin) |
admin.site.register(AchievementsMap, AchievementsMapAdmin) |
||||||
|
|
||||||
|
|
||||||
class DiplomaAdmin(admin.ModelAdmin): |
class DiplomaAdmin(admin.ModelAdmin): |
||||||
list_filter = ('course__title', 'key', ) |
list_filter = ('course__title', 'key', ) |
||||||
search_fields = ['course__title'] |
search_fields = ['course__title'] |
||||||
|
|
||||||
|
|
||||||
admin.site.register(Diploma, DiplomaAdmin) |
admin.site.register(Diploma, DiplomaAdmin) |
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -1,199 +1,199 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-03-18 16:46 |
# Generated by Django 1.9.2 on 2016-03-18 16:46 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
from django.conf import settings |
from django.conf import settings |
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
import django.db.models.deletion |
import django.db.models.deletion |
||||||
import redactor.fields |
import redactor.fields |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
initial = True |
initial = True |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('management', '0001_initial'), |
('management', '0001_initial'), |
||||||
('storage', '0001_initial'), |
('storage', '0001_initial'), |
||||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='Achievements', |
name='Achievements', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('tech_name', models.CharField(blank=True, default=b'', editable=False, help_text='\u0414\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f', max_length=20, unique=True, verbose_name='\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435')), |
('tech_name', models.CharField(blank=True, default=b'', editable=False, help_text='\u0414\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f', max_length=20, unique=True, verbose_name='\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435')), |
||||||
('icon', models.ImageField(upload_to=b'achives', verbose_name='\u0418\u043a\u043e\u043d\u043a\u0430')), |
('icon', models.ImageField(upload_to=b'achives', verbose_name='\u0418\u043a\u043e\u043d\u043a\u0430')), |
||||||
('title', models.CharField(help_text='\u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430, \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430\u043c \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f', max_length=50, verbose_name='\u0418\u043c\u044f')), |
('title', models.CharField(help_text='\u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430, \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430\u043c \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f', max_length=50, verbose_name='\u0418\u043c\u044f')), |
||||||
('image', models.ImageField(upload_to=b'achives', verbose_name='\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435')), |
('image', models.ImageField(upload_to=b'achives', verbose_name='\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435')), |
||||||
('background', models.CharField(max_length=10, verbose_name='\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430')), |
('background', models.CharField(max_length=10, verbose_name='\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430')), |
||||||
('border', models.CharField(max_length=10, verbose_name='\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b')), |
('border', models.CharField(max_length=10, verbose_name='\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'verbose_name': '\u0414\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0435', |
'verbose_name': '\u0414\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0435', |
||||||
'verbose_name_plural': '\u0414\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f', |
'verbose_name_plural': '\u0414\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f', |
||||||
}, |
}, |
||||||
), |
), |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='Course', |
name='Course', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('level', models.CharField(choices=[(b'B', '\u0411\u0430\u0437\u043e\u0432\u044b\u0439'), (b'A', '\u041f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439 '), (b'E', '\u042d\u043a\u0441\u043f\u0435\u0440\u0442\u043d\u044b\u0439'), (b'B+A', '\u0411\u0430\u0437\u043e\u0432\u044b\u0439 + \u041f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439')], default=b'B', max_length=3, verbose_name='\u0423\u0440\u043e\u0432\u0435\u043d\u044c')), |
('level', models.CharField(choices=[(b'B', '\u0411\u0430\u0437\u043e\u0432\u044b\u0439'), (b'A', '\u041f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439 '), (b'E', '\u042d\u043a\u0441\u043f\u0435\u0440\u0442\u043d\u044b\u0439'), (b'B+A', '\u0411\u0430\u0437\u043e\u0432\u044b\u0439 + \u041f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439')], default=b'B', max_length=3, verbose_name='\u0423\u0440\u043e\u0432\u0435\u043d\u044c')), |
||||||
('public', models.BooleanField(default=False, verbose_name='\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c')), |
('public', models.BooleanField(default=False, verbose_name='\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c')), |
||||||
('title', models.CharField(max_length=255, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a')), |
('title', models.CharField(max_length=255, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a')), |
||||||
('description', redactor.fields.RedactorField(blank=True, verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435')), |
('description', redactor.fields.RedactorField(blank=True, verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435')), |
||||||
('image', models.ImageField(blank=True, upload_to=b'course', verbose_name='\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435')), |
('image', models.ImageField(blank=True, upload_to=b'course', verbose_name='\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435')), |
||||||
('big_image', models.ImageField(blank=True, upload_to=b'course', verbose_name='\u0411\u043e\u043b\u044c\u0448\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435')), |
('big_image', models.ImageField(blank=True, upload_to=b'course', verbose_name='\u0411\u043e\u043b\u044c\u0448\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435')), |
||||||
('page', models.URLField(blank=True, default=b'', verbose_name='\u0421\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f')), |
('page', models.URLField(blank=True, default=b'', verbose_name='\u0421\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f')), |
||||||
('preview', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u0422\u0440\u044d\u0439\u043b')), |
('preview', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u0422\u0440\u044d\u0439\u043b')), |
||||||
('sort', models.IntegerField(default=0, verbose_name='\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438')), |
('sort', models.IntegerField(default=0, verbose_name='\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438')), |
||||||
('use_fail', models.BooleanField(default=False, verbose_name='\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0435\u0439\u043a\u043e\u0432\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e')), |
('use_fail', models.BooleanField(default=False, verbose_name='\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0435\u0439\u043a\u043e\u0432\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e')), |
||||||
('basic_len', models.IntegerField(default=0, verbose_name='\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439')), |
('basic_len', models.IntegerField(default=0, verbose_name='\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439')), |
||||||
('addition_len', models.IntegerField(default=0, verbose_name='\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439')), |
('addition_len', models.IntegerField(default=0, verbose_name='\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439')), |
||||||
('min_price', models.IntegerField(default=0, verbose_name='\u0426\u0435\u043d\u0430 \u043e\u0442')), |
('min_price', models.IntegerField(default=0, verbose_name='\u0426\u0435\u043d\u0430 \u043e\u0442')), |
||||||
('buy_icon', models.ImageField(blank=True, null=True, upload_to=b'course', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043f\u043e\u043a\u0443\u043f\u043a\u0438')), |
('buy_icon', models.ImageField(blank=True, null=True, upload_to=b'course', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043f\u043e\u043a\u0443\u043f\u043a\u0438')), |
||||||
('teachers', models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0438')), |
('teachers', models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0438')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'ordering': ['sort'], |
'ordering': ['sort'], |
||||||
'verbose_name': '\u041a\u0443\u0440\u0441', |
'verbose_name': '\u041a\u0443\u0440\u0441', |
||||||
'verbose_name_plural': '\u041a\u0443\u0440\u0441\u044b', |
'verbose_name_plural': '\u041a\u0443\u0440\u0441\u044b', |
||||||
}, |
}, |
||||||
), |
), |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='CourseMap', |
name='CourseMap', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('_type', models.CharField(choices=[(b'L', '\u0423\u0440\u043e\u043a'), (b'H', '\u0414\u043e\u043c\u0430\u0448\u043d\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435'), (b'E', '\u042d\u043a\u0437\u0430\u043c\u0435\u043d')], default=b'L', max_length=1, verbose_name='\u0422\u0438\u043f\u044b \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432')), |
('_type', models.CharField(choices=[(b'L', '\u0423\u0440\u043e\u043a'), (b'H', '\u0414\u043e\u043c\u0430\u0448\u043d\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435'), (b'E', '\u042d\u043a\u0437\u0430\u043c\u0435\u043d')], default=b'L', max_length=1, verbose_name='\u0422\u0438\u043f\u044b \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432')), |
||||||
('sort', models.IntegerField(default=0, verbose_name='\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a')), |
('sort', models.IntegerField(default=0, verbose_name='\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a')), |
||||||
('token', models.CharField(editable=False, max_length=20, null=True, unique=True, verbose_name='\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u043a\u043b\u044e\u0447')), |
('token', models.CharField(editable=False, max_length=20, null=True, unique=True, verbose_name='\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u043a\u043b\u044e\u0447')), |
||||||
('course', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), |
('course', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'verbose_name': '\u041a\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430', |
'verbose_name': '\u041a\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430', |
||||||
'verbose_name_plural': '\u041a\u0430\u0440\u0442\u044b \u043a\u0443\u0440\u0441\u043e\u0432', |
'verbose_name_plural': '\u041a\u0430\u0440\u0442\u044b \u043a\u0443\u0440\u0441\u043e\u0432', |
||||||
}, |
}, |
||||||
), |
), |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='CourseTheme', |
name='CourseTheme', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('price_type', models.CharField(choices=[(b'B', '\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b'), (b'E', '\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b'), (b'P', '\u041f\u0440\u0435\u043c\u0438\u0443\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b')], default=b'B', max_length=1, verbose_name='\u0422\u0438\u043f \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438')), |
('price_type', models.CharField(choices=[(b'B', '\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b'), (b'E', '\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b'), (b'P', '\u041f\u0440\u0435\u043c\u0438\u0443\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b')], default=b'B', max_length=1, verbose_name='\u0422\u0438\u043f \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438')), |
||||||
('_type', models.CharField(choices=[(b'B', '\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b'), (b'E', '\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b'), (b'P', '\u041f\u0440\u0435\u043c\u0438\u0443\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b'), (b'M', '\u041f\u0440\u0435\u0434\u044d\u043a\u0437\u0430\u043c\u0435\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b'), (b'Ex', '\u042d\u043a\u0437\u0430\u043c\u0435\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0442\u0435\u043c\u0430')], default=b'B', max_length=2, verbose_name='\u0422\u0438\u043f \u0442\u0435\u043c\u044b')), |
('_type', models.CharField(choices=[(b'B', '\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b'), (b'E', '\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b'), (b'P', '\u041f\u0440\u0435\u043c\u0438\u0443\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b'), (b'M', '\u041f\u0440\u0435\u0434\u044d\u043a\u0437\u0430\u043c\u0435\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b'), (b'Ex', '\u042d\u043a\u0437\u0430\u043c\u0435\u043d\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0442\u0435\u043c\u0430')], default=b'B', max_length=2, verbose_name='\u0422\u0438\u043f \u0442\u0435\u043c\u044b')), |
||||||
('icon', models.ImageField(blank=True, null=True, upload_to=b'CourseTheme', verbose_name='\u0418\u043a\u043e\u043d\u043a\u0430 \u0442\u0435\u043c\u044b')), |
('icon', models.ImageField(blank=True, null=True, upload_to=b'CourseTheme', verbose_name='\u0418\u043a\u043e\u043d\u043a\u0430 \u0442\u0435\u043c\u044b')), |
||||||
('sort', models.IntegerField(default=1, verbose_name='\u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430')), |
('sort', models.IntegerField(default=1, verbose_name='\u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430')), |
||||||
('title', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a')), |
('title', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a')), |
||||||
('description', models.TextField(blank=True, default=b'', max_length=255, verbose_name='\u041a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0435\u043c\u044b')), |
('description', models.TextField(blank=True, default=b'', max_length=255, verbose_name='\u041a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0435\u043c\u044b')), |
||||||
('course', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), |
('course', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'ordering': ['sort'], |
'ordering': ['sort'], |
||||||
'verbose_name': '\u0422\u0435\u043c\u0430', |
'verbose_name': '\u0422\u0435\u043c\u0430', |
||||||
'verbose_name_plural': '\u0422\u0435\u043c\u044b', |
'verbose_name_plural': '\u0422\u0435\u043c\u044b', |
||||||
}, |
}, |
||||||
), |
), |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='Exam', |
name='Exam', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('token', models.CharField(blank=True, default=b'', max_length=100, verbose_name='\u0422\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430')), |
('token', models.CharField(blank=True, default=b'', max_length=100, verbose_name='\u0422\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430')), |
||||||
('sort', models.IntegerField(default=1, verbose_name='\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u044d\u043a\u0437\u0430\u043c\u0435\u043d\u0430')), |
('sort', models.IntegerField(default=1, verbose_name='\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u044d\u043a\u0437\u0430\u043c\u0435\u043d\u0430')), |
||||||
('title', models.CharField(default=b'', help_text='\u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0430', max_length=255, verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u044d\u043a\u0437\u0430\u043c\u0435\u043d\u0430')), |
('title', models.CharField(default=b'', help_text='\u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0430', max_length=255, verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u044d\u043a\u0437\u0430\u043c\u0435\u043d\u0430')), |
||||||
('description', redactor.fields.RedactorField(verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432')), |
('description', redactor.fields.RedactorField(verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432')), |
||||||
('course', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), |
('course', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), |
||||||
('diploma', models.ForeignKey(help_text='\u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435', on_delete=django.db.models.deletion.CASCADE, related_name='exam_diploma', to='storage.Storage', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u0438\u043f\u043b\u043e\u043c\u0430')), |
('diploma', models.ForeignKey(help_text='\u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435', on_delete=django.db.models.deletion.CASCADE, related_name='exam_diploma', to='storage.Storage', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u0438\u043f\u043b\u043e\u043c\u0430')), |
||||||
('icon', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='storage.Storage', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0434\u0438\u043f\u043b\u043e\u043c\u0430')), |
('icon', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='storage.Storage', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0434\u0438\u043f\u043b\u043e\u043c\u0430')), |
||||||
('materials', models.ManyToManyField(blank=True, related_name='exam_materials', to='storage.Storage', verbose_name='\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u044d\u043a\u0437\u0430\u043c\u0435\u043d\u0430')), |
('materials', models.ManyToManyField(blank=True, related_name='exam_materials', to='storage.Storage', verbose_name='\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u044d\u043a\u0437\u0430\u043c\u0435\u043d\u0430')), |
||||||
('theme', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.CourseTheme', verbose_name='\u0422\u0435\u043c\u0430 \u043a\u0443\u0440\u0441\u0430')), |
('theme', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.CourseTheme', verbose_name='\u0422\u0435\u043c\u0430 \u043a\u0443\u0440\u0441\u0430')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'ordering': ['sort'], |
'ordering': ['sort'], |
||||||
'verbose_name': '\u042d\u043a\u0437\u0430\u043c\u0435\u043d', |
'verbose_name': '\u042d\u043a\u0437\u0430\u043c\u0435\u043d', |
||||||
'verbose_name_plural': '\u042d\u043a\u0437\u0430\u043c\u0435\u043d\u044b', |
'verbose_name_plural': '\u042d\u043a\u0437\u0430\u043c\u0435\u043d\u044b', |
||||||
}, |
}, |
||||||
), |
), |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='Homework', |
name='Homework', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('token', models.CharField(blank=True, default=b'', max_length=100, verbose_name='\u0422\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430')), |
('token', models.CharField(blank=True, default=b'', max_length=100, verbose_name='\u0422\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430')), |
||||||
('description', redactor.fields.RedactorField(verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435')), |
('description', redactor.fields.RedactorField(verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435')), |
||||||
('sort', models.IntegerField(default=1, verbose_name='\u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430')), |
('sort', models.IntegerField(default=1, verbose_name='\u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430')), |
||||||
('course', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), |
('course', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), |
||||||
('materials', models.ManyToManyField(blank=True, to='storage.Storage', verbose_name='\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0434\u043b\u044f \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b')), |
('materials', models.ManyToManyField(blank=True, to='storage.Storage', verbose_name='\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0434\u043b\u044f \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b')), |
||||||
('theme', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.CourseTheme', verbose_name='\u0422\u0435\u043c\u0430 \u043a\u0443\u0440\u0441\u0430')), |
('theme', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.CourseTheme', verbose_name='\u0422\u0435\u043c\u0430 \u043a\u0443\u0440\u0441\u0430')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'ordering': ['sort'], |
'ordering': ['sort'], |
||||||
'verbose_name': '\u0414\u043e\u0431\u0430\u0448\u043d\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435', |
'verbose_name': '\u0414\u043e\u0431\u0430\u0448\u043d\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435', |
||||||
'verbose_name_plural': '\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f', |
'verbose_name_plural': '\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f', |
||||||
}, |
}, |
||||||
), |
), |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='Lesson', |
name='Lesson', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('free', models.BooleanField(default=False, verbose_name='\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0435 \u0432\u0438\u0434\u0435\u043e')), |
('free', models.BooleanField(default=False, verbose_name='\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0435 \u0432\u0438\u0434\u0435\u043e')), |
||||||
('token', models.CharField(blank=True, default=b'', editable=False, max_length=100, verbose_name='\u0422\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430')), |
('token', models.CharField(blank=True, default=b'', editable=False, max_length=100, verbose_name='\u0422\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430')), |
||||||
('title', models.TextField(blank=True, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a')), |
('title', models.TextField(blank=True, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a')), |
||||||
('sort', models.IntegerField(default=1, verbose_name='\u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430')), |
('sort', models.IntegerField(default=1, verbose_name='\u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430')), |
||||||
('description', redactor.fields.RedactorField(blank=True, default=b'', verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435')), |
('description', redactor.fields.RedactorField(blank=True, default=b'', verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435')), |
||||||
('video', models.TextField(default=b'', verbose_name='\u041a\u043e\u0434 \u0432\u0438\u0434\u0435\u043e')), |
('video', models.TextField(default=b'', verbose_name='\u041a\u043e\u0434 \u0432\u0438\u0434\u0435\u043e')), |
||||||
('comments', models.ManyToManyField(blank=True, editable=False, to='management.Comment', verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438')), |
('comments', models.ManyToManyField(blank=True, editable=False, to='management.Comment', verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438')), |
||||||
('course', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), |
('course', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), |
||||||
('materials', models.ManyToManyField(blank=True, to='storage.Storage', verbose_name='\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0443\u0440\u043e\u043a\u0430')), |
('materials', models.ManyToManyField(blank=True, to='storage.Storage', verbose_name='\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0443\u0440\u043e\u043a\u0430')), |
||||||
('theme', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.CourseTheme', verbose_name='\u0422\u0435\u043c\u0430 \u043a\u0443\u0440\u0441\u0430')), |
('theme', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.CourseTheme', verbose_name='\u0422\u0435\u043c\u0430 \u043a\u0443\u0440\u0441\u0430')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'ordering': ['sort'], |
'ordering': ['sort'], |
||||||
'verbose_name': '\u0423\u0440\u043e\u043a', |
'verbose_name': '\u0423\u0440\u043e\u043a', |
||||||
'verbose_name_plural': '\u0423\u0440\u043e\u043a\u0438', |
'verbose_name_plural': '\u0423\u0440\u043e\u043a\u0438', |
||||||
}, |
}, |
||||||
), |
), |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='SkillJ', |
name='SkillJ', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('size', models.IntegerField(default=0, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0440')), |
('size', models.IntegerField(default=0, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0440')), |
||||||
('lesson', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Lesson', verbose_name='\u0423\u0440\u043e\u043a')), |
('lesson', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Lesson', verbose_name='\u0423\u0440\u043e\u043a')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'ordering': ['id'], |
'ordering': ['id'], |
||||||
'verbose_name': '\u0420\u0430\u0437\u043c\u0435\u0440 \u043d\u0430\u0432\u044b\u043a\u0430', |
'verbose_name': '\u0420\u0430\u0437\u043c\u0435\u0440 \u043d\u0430\u0432\u044b\u043a\u0430', |
||||||
'verbose_name_plural': '\u0420\u0430\u0437\u043c\u0435\u0440\u044b \u043d\u0430\u0432\u044b\u043a\u043e\u0432', |
'verbose_name_plural': '\u0420\u0430\u0437\u043c\u0435\u0440\u044b \u043d\u0430\u0432\u044b\u043a\u043e\u0432', |
||||||
}, |
}, |
||||||
), |
), |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='Skills', |
name='Skills', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('title', models.CharField(max_length=255, verbose_name='\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435')), |
('title', models.CharField(max_length=255, verbose_name='\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435')), |
||||||
('color', models.CharField(max_length=255, verbose_name='\u0426\u0432\u0435\u0442')), |
('color', models.CharField(max_length=255, verbose_name='\u0426\u0432\u0435\u0442')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'verbose_name': '\u041d\u0430\u0432\u044b\u043a', |
'verbose_name': '\u041d\u0430\u0432\u044b\u043a', |
||||||
'verbose_name_plural': '\u041d\u0430\u0432\u044b\u043a\u0438', |
'verbose_name_plural': '\u041d\u0430\u0432\u044b\u043a\u0438', |
||||||
}, |
}, |
||||||
), |
), |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='skillj', |
model_name='skillj', |
||||||
name='skill', |
name='skill', |
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Skills', verbose_name='\u041d\u0430\u0432\u044b\u043a'), |
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Skills', verbose_name='\u041d\u0430\u0432\u044b\u043a'), |
||||||
), |
), |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='coursemap', |
model_name='coursemap', |
||||||
name='exam', |
name='exam', |
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Exam', verbose_name='\u042d\u043a\u0437\u0430\u043c\u0435\u043d'), |
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Exam', verbose_name='\u042d\u043a\u0437\u0430\u043c\u0435\u043d'), |
||||||
), |
), |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='coursemap', |
model_name='coursemap', |
||||||
name='homework', |
name='homework', |
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Homework', verbose_name='\u0417\u0430\u0434\u0430\u043d\u0438\u0435'), |
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Homework', verbose_name='\u0417\u0430\u0434\u0430\u043d\u0438\u0435'), |
||||||
), |
), |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='coursemap', |
model_name='coursemap', |
||||||
name='lesson', |
name='lesson', |
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Lesson', verbose_name='\u0423\u0440\u043e\u043a'), |
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Lesson', verbose_name='\u0423\u0440\u043e\u043a'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,29 +1,29 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-03-20 20:26 |
# Generated by Django 1.9.2 on 2016-03-20 20:26 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
import django.db.models.deletion |
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('courses', '0001_initial'), |
('courses', '0001_initial'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.CreateModel( |
migrations.CreateModel( |
||||||
name='AchievementsMap', |
name='AchievementsMap', |
||||||
fields=[ |
fields=[ |
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
('after', models.BooleanField(default=True, verbose_name='\u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f')), |
('after', models.BooleanField(default=True, verbose_name='\u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f')), |
||||||
('achiv', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Achievements', verbose_name='\u0414\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0435')), |
('achiv', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Achievements', verbose_name='\u0414\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0435')), |
||||||
('point', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.CourseMap', verbose_name='\u041f\u043e\u0437\u0438\u0446\u0438\u044f')), |
('point', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.CourseMap', verbose_name='\u041f\u043e\u0437\u0438\u0446\u0438\u044f')), |
||||||
], |
], |
||||||
options={ |
options={ |
||||||
'verbose_name': '\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u044f\u044f \u0430\u0447\u0438\u0432\u043a\u0430', |
'verbose_name': '\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u044f\u044f \u0430\u0447\u0438\u0432\u043a\u0430', |
||||||
'verbose_name_plural': '\u0412\u043d\u0435\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0430\u0447\u0438\u0432\u043a\u0438', |
'verbose_name_plural': '\u0412\u043d\u0435\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0430\u0447\u0438\u0432\u043a\u0438', |
||||||
}, |
}, |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,19 +1,19 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-03-22 18:52 |
# Generated by Django 1.9.2 on 2016-03-22 18:52 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
from django.db import migrations |
from django.db import migrations |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('courses', '0002_achievementsmap'), |
('courses', '0002_achievementsmap'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterModelOptions( |
migrations.AlterModelOptions( |
||||||
name='coursemap', |
name='coursemap', |
||||||
options={'ordering': ['sort'], 'verbose_name': '\u041a\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430', 'verbose_name_plural': '\u041a\u0430\u0440\u0442\u044b \u043a\u0443\u0440\u0441\u043e\u0432'}, |
options={'ordering': ['sort'], 'verbose_name': '\u041a\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430', 'verbose_name_plural': '\u041a\u0430\u0440\u0442\u044b \u043a\u0443\u0440\u0441\u043e\u0432'}, |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,20 +1,20 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-03-30 22:39 |
# Generated by Django 1.9.2 on 2016-03-30 22:39 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('courses', '0003_auto_20160322_1852'), |
('courses', '0003_auto_20160322_1852'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='lesson', |
model_name='lesson', |
||||||
name='video_id', |
name='video_id', |
||||||
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='\u0412\u0438\u0434\u0435\u043e ID'), |
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='\u0412\u0438\u0434\u0435\u043e ID'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,20 +1,20 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-03-31 20:30 |
# Generated by Django 1.9.2 on 2016-03-31 20:30 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('courses', '0004_lesson_video_id'), |
('courses', '0004_lesson_video_id'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AlterField( |
migrations.AlterField( |
||||||
model_name='lesson', |
model_name='lesson', |
||||||
name='video', |
name='video', |
||||||
field=models.TextField(blank=True, default=b'', verbose_name='\u041a\u043e\u0434 \u0432\u0438\u0434\u0435\u043e'), |
field=models.TextField(blank=True, default=b'', verbose_name='\u041a\u043e\u0434 \u0432\u0438\u0434\u0435\u043e'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,25 +1,25 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.2 on 2016-04-07 20:06 |
# Generated by Django 1.9.2 on 2016-04-07 20:06 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('courses', '0005_auto_20160331_2030'), |
('courses', '0005_auto_20160331_2030'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='coursetheme', |
model_name='coursetheme', |
||||||
name='empty', |
name='empty', |
||||||
field=models.BooleanField(default=False, help_text='\u0417\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u0430. \u0418\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043a\u0443\u0440\u0441 \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u0442\u043e\u0433\u043e.', verbose_name='\u0422\u044b \u043d\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u0448\u044c!'), |
field=models.BooleanField(default=False, help_text='\u0417\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u0430. \u0418\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043a\u0443\u0440\u0441 \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u0442\u043e\u0433\u043e.', verbose_name='\u0422\u044b \u043d\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u0448\u044c!'), |
||||||
), |
), |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='coursetheme', |
model_name='coursetheme', |
||||||
name='empty_description', |
name='empty_description', |
||||||
field=models.TextField(blank=True, default=b'', verbose_name='\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u043e\u0442\u043a\u0430\u0437\u0430 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f'), |
field=models.TextField(blank=True, default=b'', verbose_name='\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u043e\u0442\u043a\u0430\u0437\u0430 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,20 +1,20 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-13 15:39 |
# Generated by Django 1.9.5 on 2016-04-13 15:39 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('courses', '0006_auto_20160407_2006'), |
('courses', '0006_auto_20160407_2006'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='lesson', |
model_name='lesson', |
||||||
name='video_date', |
name='video_date', |
||||||
field=models.DateTimeField(blank=True, null=True, verbose_name='\u0412\u0440\u0435\u043c\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u0432\u0438\u0434\u0435\u043e'), |
field=models.DateTimeField(blank=True, null=True, verbose_name='\u0412\u0440\u0435\u043c\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u0432\u0438\u0434\u0435\u043e'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,20 +1,20 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-20 18:19 |
# Generated by Django 1.9.5 on 2016-04-20 18:19 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
from django.db import migrations, models |
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('courses', '0007_lesson_video_date'), |
('courses', '0007_lesson_video_date'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.AddField( |
migrations.AddField( |
||||||
model_name='coursetheme', |
model_name='coursetheme', |
||||||
name='block', |
name='block', |
||||||
field=models.BooleanField(default=False, verbose_name='\u0417\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435'), |
field=models.BooleanField(default=False, verbose_name='\u0417\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435'), |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,19 +1,19 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-20 18:21 |
# Generated by Django 1.9.5 on 2016-04-20 18:21 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
from django.db import migrations |
from django.db import migrations |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('courses', '0008_coursetheme_block'), |
('courses', '0008_coursetheme_block'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.RemoveField( |
migrations.RemoveField( |
||||||
model_name='coursetheme', |
model_name='coursetheme', |
||||||
name='block', |
name='block', |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
@ -1,19 +1,19 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
# Generated by Django 1.9.5 on 2016-04-20 19:09 |
# Generated by Django 1.9.5 on 2016-04-20 19:09 |
||||||
from __future__ import unicode_literals |
from __future__ import unicode_literals |
||||||
|
|
||||||
from django.db import migrations |
from django.db import migrations |
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
class Migration(migrations.Migration): |
||||||
|
|
||||||
dependencies = [ |
dependencies = [ |
||||||
('courses', '0009_remove_coursetheme_block'), |
('courses', '0009_remove_coursetheme_block'), |
||||||
] |
] |
||||||
|
|
||||||
operations = [ |
operations = [ |
||||||
migrations.RemoveField( |
migrations.RemoveField( |
||||||
model_name='coursetheme', |
model_name='coursetheme', |
||||||
name='empty_description', |
name='empty_description', |
||||||
), |
), |
||||||
] |
] |
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue