diff --git a/.gitignore b/.gitignore index 1e90446..294b673 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ __pycache__ /static/ /media/ +img_creator \ No newline at end of file diff --git a/_utils/1.txt b/_utils/1.txt index 9b9f02c..e044867 100644 --- a/_utils/1.txt +++ b/_utils/1.txt @@ -1,71 +1,71 @@ -einzheev@itl.com.kz -dmitry.sedov@inbox.ru -ivanpokalyuk@gmail.com - baho9208@mail.ru -feyorz@gmail.com -waximov@gmail.com -alvo_05@mail.ru -redkuk@gmail.com -petrichv@gmail.com -tagfelix500@gmail.com - ikey0172@mail.ru -gb.gayane@gmail.com -eco.pun@gmail.com -sanzharsurshanov@gmail.com -dennis.loboda@gmail.com -webar4i@gmail.com -zvetaan@gmail.com -svelavs@gmail.com -art@magicdesign.ru -mbf23tb@gmail.com -andrievskiydmitriy@gmail.com -pulya7@gmail.com -mikhail.a.gusev@gmail.com -elena@citrus-soft.ru -kropev@rarus.ru -nikonorov@labizum.ru -gulin@labizum.ru -vladfedorovich@gmail.com -Gfgaliya@gmail.com -romqa.guard@gmail.com - srfedotov@gmail.com -vinjuli4ka2008@rambler.ru -kuzzzal@gmail.com -zvetaan@gmail.com -lepon@bk.ru -y.robocopov@gmail.com -enchervinskaya@gmail.com -volokos@gmail.com -mtsalka@scnsoft.com -dubnyak404@gmail.com -o.tibirkova@yandex.ru -a.nikiforov@uplab.ru -dmytriy.suslov@gmail.com -s.shtukaturka@gmail.com -alex.dntv@gmail.com -m.chelyadenkov@gmail.com -timur.shulgin@infocraft.ru -sp.rusanov@gmail.com -zyabra@gmail.com -timakova@fistashki.org -aknoraz@deloitte.ru -sesyunin@realweb.ru -bravo.johnny@yandex.ru -didenko@braind.agency -whysecondjuly@gmail.com -yuzik.74@gmail.com -art@amado-id.ru -9330733@mail.ru -ek.design11@gmail.com -danila.zarechnev@gmail.com -kira.yakuhina@gmail.com -geiz@yandex.ru -tuning_a@mail.ru -suonarama@gmail.com -abrakadavr@gmail.com -irina_z_z@mail.ru irina.huchak@gmail.com -ha@brightstudio.ru -smorozov@qsoft.ru -a.reva@qsoft.ru -d.pogodin@itech-group.ru +einzheev@itl.com.kz +dmitry.sedov@inbox.ru +ivanpokalyuk@gmail.com + baho9208@mail.ru +feyorz@gmail.com +waximov@gmail.com +alvo_05@mail.ru +redkuk@gmail.com +petrichv@gmail.com +tagfelix500@gmail.com + ikey0172@mail.ru +gb.gayane@gmail.com +eco.pun@gmail.com +sanzharsurshanov@gmail.com +dennis.loboda@gmail.com +webar4i@gmail.com +zvetaan@gmail.com +svelavs@gmail.com +art@magicdesign.ru +mbf23tb@gmail.com +andrievskiydmitriy@gmail.com +pulya7@gmail.com +mikhail.a.gusev@gmail.com +elena@citrus-soft.ru +kropev@rarus.ru +nikonorov@labizum.ru +gulin@labizum.ru +vladfedorovich@gmail.com +Gfgaliya@gmail.com +romqa.guard@gmail.com + srfedotov@gmail.com +vinjuli4ka2008@rambler.ru +kuzzzal@gmail.com +zvetaan@gmail.com +lepon@bk.ru +y.robocopov@gmail.com +enchervinskaya@gmail.com +volokos@gmail.com +mtsalka@scnsoft.com +dubnyak404@gmail.com +o.tibirkova@yandex.ru +a.nikiforov@uplab.ru +dmytriy.suslov@gmail.com +s.shtukaturka@gmail.com +alex.dntv@gmail.com +m.chelyadenkov@gmail.com +timur.shulgin@infocraft.ru +sp.rusanov@gmail.com +zyabra@gmail.com +timakova@fistashki.org +aknoraz@deloitte.ru +sesyunin@realweb.ru +bravo.johnny@yandex.ru +didenko@braind.agency +whysecondjuly@gmail.com +yuzik.74@gmail.com +art@amado-id.ru +9330733@mail.ru +ek.design11@gmail.com +danila.zarechnev@gmail.com +kira.yakuhina@gmail.com +geiz@yandex.ru +tuning_a@mail.ru +suonarama@gmail.com +abrakadavr@gmail.com +irina_z_z@mail.ru irina.huchak@gmail.com +ha@brightstudio.ru +smorozov@qsoft.ru +a.reva@qsoft.ru +d.pogodin@itech-group.ru lemma.ka@gmail.com \ No newline at end of file diff --git a/_utils/2.txt b/_utils/2.txt index a7a573c..5b27483 100644 --- a/_utils/2.txt +++ b/_utils/2.txt @@ -1,117 +1,117 @@ -makspirogov@gmail.com -velesart@gmail.com -dmitrij.pastushenko@gmail.com -pavlov@complexsys.ru -ceo@pride-m.ru -spinngewebex@gmail.com -an_b@inbox.ru -ilyuha86@gmail.com -juniperland@gmail.com -egor@yugs.ru -kashlatch@gmail.com -niozuki@mail.ru -Gnatovych@gmail.com -sahem@mail.ru -zfalevich@gmail.com -lalaviva@yandex.ru -z.ilnurri@gmail.com -mmaslennikov@mail.ru -info@wbest.ru -arthur.subbota@gmail.com -goha@kiosov.com -Igorfedorenko@mail.ru -annazayidova@gmail.com -anton.reznichenko@gmail.com -me@flexure.ru -es@vipro.ru -km@colary.ru -kiselev_s_l@mail.ru -a.reznichenko@clientlab.ru -soldakov.p@yandex.ru -ap@ds-p.ru -702752@gmail.com -shpakova@sebbia.com -skugarov@sebbia.com -taranov@sebbia.com -rusakovevgen@gmail.com -frostoffman@gmail.com - a.khadeko@gmail.com -trogatyuk@gmail.com -hello@aokunev.com -dengenich@gmail.com -Alexpozdnyakof@gmail.com -korobajr@ya.ru -pavlov@complexsys.ru -elizaveta.bandalet@gmail.com -deniskondrashov@yahoo.com -prokosha10@gmail.com - i.flinn@yandex.ru -s.darbaidze@inostudio.com -zhurakoff@gmail.com -krylya@inbox.ru -146133@gmail.com -i.flinn@yandex.ru -sasha.melbourne@gmail.com -tiano_taurus747@mail.ru -hip-hop-org@yandex.ru -j.tolkova@yandex.ru -jaglin@itsoft.ru -den.volchkevich@gmail.com -yakimov.dmitriy@gmail.com -994677@mail.ru -rumbeshta@userstory.ru -ylkin_list@mail.ru -salofoot@fermastudio.ru -smiley1776@gmail.com -info@darneo.ru -egor@studiofact.ru -alevtina.i.danilova@gmail.com -puponina.irina@gmail.com -yevseev@mail.ru -ekde@wide-web.spb.ru -corpas@gmail.com -nitrohlorid@gmail.com -kayl24brof@gmail.com -skovalska@mail.ru -Dmitry.eremin7@gmail.com -Nikolebedev@mail.ru -ishulga86@gmail.com -bobafas@gmail.com -kalina531345@gmail.com -dsgn.shots@gmail.com -dsukhanova@gmail.com -kizilov.s@gmail.com -zlk.marjana@gmail.com -nava011235@gmail.com -i.shymanskyi@gmail.com -anastasy.petrenko87@gmail.com -dinozavrix@gmail.com -yana.berezhnaya999@gmail.com -person.ira@gmail.com -bershonok@gmail.com -vivi_bvo@mail.ru -lens2002@gmail.com -ohmeinkot@gmail.com -d22s@ya.ru -masha49@yandex.ru -biz.trp@gmail.com -leo55506@gmail.com -ksenia.vitkova@gmail.com -e.poberezhnik@artw.ru -alexzarkov@gmail.com -ekde@wide-web.spb.ru -vemelin@gmail.com -gausf2@gmail.com -vd@wearewowagency.com -va@wearewowagency.com -domrachv@gmail.com -ad@wearewowagency.com -jalalovna@yandex.ru -mohov-g@yandex.ru -st.wasp@yandex.ru -Irina.lisofa@gmail.com -Kornblumchen@yandex.ru -albytime@gmail.com -as.plyaskin@gmail.com -trunovaon@gmail.com +makspirogov@gmail.com +velesart@gmail.com +dmitrij.pastushenko@gmail.com +pavlov@complexsys.ru +ceo@pride-m.ru +spinngewebex@gmail.com +an_b@inbox.ru +ilyuha86@gmail.com +juniperland@gmail.com +egor@yugs.ru +kashlatch@gmail.com +niozuki@mail.ru +Gnatovych@gmail.com +sahem@mail.ru +zfalevich@gmail.com +lalaviva@yandex.ru +z.ilnurri@gmail.com +mmaslennikov@mail.ru +info@wbest.ru +arthur.subbota@gmail.com +goha@kiosov.com +Igorfedorenko@mail.ru +annazayidova@gmail.com +anton.reznichenko@gmail.com +me@flexure.ru +es@vipro.ru +km@colary.ru +kiselev_s_l@mail.ru +a.reznichenko@clientlab.ru +soldakov.p@yandex.ru +ap@ds-p.ru +702752@gmail.com +shpakova@sebbia.com +skugarov@sebbia.com +taranov@sebbia.com +rusakovevgen@gmail.com +frostoffman@gmail.com + a.khadeko@gmail.com +trogatyuk@gmail.com +hello@aokunev.com +dengenich@gmail.com +Alexpozdnyakof@gmail.com +korobajr@ya.ru +pavlov@complexsys.ru +elizaveta.bandalet@gmail.com +deniskondrashov@yahoo.com +prokosha10@gmail.com + i.flinn@yandex.ru +s.darbaidze@inostudio.com +zhurakoff@gmail.com +krylya@inbox.ru +146133@gmail.com +i.flinn@yandex.ru +sasha.melbourne@gmail.com +tiano_taurus747@mail.ru +hip-hop-org@yandex.ru +j.tolkova@yandex.ru +jaglin@itsoft.ru +den.volchkevich@gmail.com +yakimov.dmitriy@gmail.com +994677@mail.ru +rumbeshta@userstory.ru +ylkin_list@mail.ru +salofoot@fermastudio.ru +smiley1776@gmail.com +info@darneo.ru +egor@studiofact.ru +alevtina.i.danilova@gmail.com +puponina.irina@gmail.com +yevseev@mail.ru +ekde@wide-web.spb.ru +corpas@gmail.com +nitrohlorid@gmail.com +kayl24brof@gmail.com +skovalska@mail.ru +Dmitry.eremin7@gmail.com +Nikolebedev@mail.ru +ishulga86@gmail.com +bobafas@gmail.com +kalina531345@gmail.com +dsgn.shots@gmail.com +dsukhanova@gmail.com +kizilov.s@gmail.com +zlk.marjana@gmail.com +nava011235@gmail.com +i.shymanskyi@gmail.com +anastasy.petrenko87@gmail.com +dinozavrix@gmail.com +yana.berezhnaya999@gmail.com +person.ira@gmail.com +bershonok@gmail.com +vivi_bvo@mail.ru +lens2002@gmail.com +ohmeinkot@gmail.com +d22s@ya.ru +masha49@yandex.ru +biz.trp@gmail.com +leo55506@gmail.com +ksenia.vitkova@gmail.com +e.poberezhnik@artw.ru +alexzarkov@gmail.com +ekde@wide-web.spb.ru +vemelin@gmail.com +gausf2@gmail.com +vd@wearewowagency.com +va@wearewowagency.com +domrachv@gmail.com +ad@wearewowagency.com +jalalovna@yandex.ru +mohov-g@yandex.ru +st.wasp@yandex.ru +Irina.lisofa@gmail.com +Kornblumchen@yandex.ru +albytime@gmail.com +as.plyaskin@gmail.com +trunovaon@gmail.com yuri.a.k.design@gmail.com \ No newline at end of file diff --git a/_utils/lessons_comments_hc.xml b/_utils/lessons_comments_hc.xml index 375fc1d..6b5e94e 100644 --- a/_utils/lessons_comments_hc.xml +++ b/_utils/lessons_comments_hc.xml @@ -86,16 +86,16 @@ 3602 0 -

Я уже писал об этом и после четвёртого урока, и после пятого,  но рассинхронизация становится всё хуже и хуже. Что-то понять, когда ты видишь одно, а слышишь совсем другое - это просто взрыв мозга.

- -

Кроме того, не было ни слова сказано о

- - - -

хотя это было анонсировано в описании урока. Или только я этого не услышал?

+

Я уже писал об этом и после четвёртого урока, и после пятого,  но рассинхронизация становится всё хуже и хуже. Что-то понять, когда ты видишь одно, а слышишь совсем другое - это просто взрыв мозга.

+ +

Кроме того, не было ни слова сказано о

+ + + +

хотя это было анонсировано в описании урока. Или только я этого не услышал?

Михаил @@ -109,7 +109,7 @@ 3841 0 -

К сожалению, на 30 минуте просто взял и закрыл. и стал смотреть подобные видео уроки на ютубе. Просто невозможно смотреть из-за этого рассинхрона. Очень жаль. Писали выше "Да логики как-то нет!!!! Получается что тупо читают лекцию... ((((( Ожидал большего. В начале была в лекциях жизнь, интерес... желание... А сейчас как-то это напоминает вебинар, на котором рассказывают обо всем, но не о чем. Хотя где-то и затрагиваться моменты и логика работы скрипта. Я понимаю что нельзя все рассказать за 1,5 часа, но можно было бы тогда хоть материал дать, шпаргалку в которой бы написано было все что надо знать." - полностью с этим согласен :(

+

К сожалению, на 30 минуте просто взял и закрыл. и стал смотреть подобные видео уроки на ютубе. Просто невозможно смотреть из-за этого рассинхрона. Очень жаль. Писали выше "Да логики как-то нет!!!! Получается что тупо читают лекцию... ((((( Ожидал большего. В начале была в лекциях жизнь, интерес... желание... А сейчас как-то это напоминает вебинар, на котором рассказывают обо всем, но не о чем. Хотя где-то и затрагиваться моменты и логика работы скрипта. Я понимаю что нельзя все рассказать за 1,5 часа, но можно было бы тогда хоть материал дать, шпаргалку в которой бы написано было все что надо знать." - полностью с этим согласен :(

Кирилл @@ -123,7 +123,7 @@ 3948 0 -

- полностью с этим согласен :( s vami siwu В начале была в лекциях жизнь, интерес... желание... А сейчас как-то это напоминает вебинар, на котором рассказывают обо всем, но не о чем.

+

- полностью с этим согласен :( s vami siwu В начале была в лекциях жизнь, интерес... желание... А сейчас как-то это напоминает вебинар, на котором рассказывают обо всем, но не о чем.

Без имени @@ -137,7 +137,7 @@ 4439 0 -

На многих бесплатных курсах на ютубе и то доходчивее обьясняют и видео от звука не отстаёт:(( 

+

На многих бесплатных курсах на ютубе и то доходчивее обьясняют и видео от звука не отстаёт:(( 

Роман @@ -151,13 +151,13 @@ 4593 0 -

Всем привет!

- -

Мне то-же не понравилась рассинхронизация звука и видео, просто монтаж видео делался не программистом :)

- -

Преподаватель дает материал компактно и доходчиво. Мне нравится.

- -

Предлагаю перередактировать видео всего курса с нормальной синхронизацией, убрать косяки и добавить оптимизацию пространства картинки как на рисунке (ссылка). Готов выполнить.

+

Всем привет!

+ +

Мне то-же не понравилась рассинхронизация звука и видео, просто монтаж видео делался не программистом :)

+ +

Преподаватель дает материал компактно и доходчиво. Мне нравится.

+ +

Предлагаю перередактировать видео всего курса с нормальной синхронизацией, убрать косяки и добавить оптимизацию пространства картинки как на рисунке (ссылка). Готов выполнить.

Сергей @@ -171,7 +171,7 @@ 5494 0 -

Я просто возмущена тем, что в таком режиме (рассинхронизации) невозможно учиться и что-то вообще понять... А главное, рассказывает преподаватель доходчиво... и очень обидно, что просто кто-то слепил все тяп-ляп, испортив хорошую вещь... А еще - переделать всё это элементарно, имея исходники... Почему ничего не меняется как минимум месяц, судя по первым комментариям?  Кто-нибудь кроме недовольных учеников вообще их читает?

+

Я просто возмущена тем, что в таком режиме (рассинхронизации) невозможно учиться и что-то вообще понять... А главное, рассказывает преподаватель доходчиво... и очень обидно, что просто кто-то слепил все тяп-ляп, испортив хорошую вещь... А еще - переделать всё это элементарно, имея исходники... Почему ничего не меняется как минимум месяц, судя по первым комментариям?  Кто-нибудь кроме недовольных учеников вообще их читает?

Анастасия @@ -185,7 +185,7 @@ 5495 0 -

Интересно, а у всех получается повторить, что демонстрируется на лекции, у меня уже на предыдущей и этой лекции некоторые элементы не работают как у лектора. Делал все как и лектор, на прошлом занятии даже сравнивал с "рыбой" присланной к заданию - визуально всё правильно, но у меня, в отличие от "рыбы" не все работает!

+

Интересно, а у всех получается повторить, что демонстрируется на лекции, у меня уже на предыдущей и этой лекции некоторые элементы не работают как у лектора. Делал все как и лектор, на прошлом занятии даже сравнивал с "рыбой" присланной к заданию - визуально всё правильно, но у меня, в отличие от "рыбы" не все работает!

Сергей @@ -199,7 +199,7 @@ 5653 8096 -

Пару раз за прошлую лекцию он делал опечатки и у него тоже не работало. Потом их поправлял "незаметно", по ходу рассказа о других вещах. А еще попробуйте пропустить Ваш код через HTML-валидатор, вот этот: https://validator.w3.org/#validate_by_upload . Возможно выдаваемые им ошибки подскажут, где Вы ошиблись. А так обычное для программирования дело: опечатки в одной букве, пропущенная точка с запятой и т.п.

+

Пару раз за прошлую лекцию он делал опечатки и у него тоже не работало. Потом их поправлял "незаметно", по ходу рассказа о других вещах. А еще попробуйте пропустить Ваш код через HTML-валидатор, вот этот: https://validator.w3.org/#validate_by_upload . Возможно выдаваемые им ошибки подскажут, где Вы ошиблись. А так обычное для программирования дело: опечатки в одной букве, пропущенная точка с запятой и т.п.

Вячеслав @@ -213,7 +213,7 @@ 5654 0 -

P.S. Если Вы так и не сможете найти почему не работает, попробуйте еще открыть текст в "умном" текстовом редакторе, например Notepad++. Он подсвечивает синтаксис, возможно заметите опечатку или незакрытый тег. Еще есть средства разработчика во  всех популярных браузерах, тоже полезны для поиска ошибок.

+

P.S. Если Вы так и не сможете найти почему не работает, попробуйте еще открыть текст в "умном" текстовом редакторе, например Notepad++. Он подсвечивает синтаксис, возможно заметите опечатку или незакрытый тег. Еще есть средства разработчика во  всех популярных браузерах, тоже полезны для поиска ошибок.

Вячеслав @@ -227,7 +227,7 @@ 5940 8256 -

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

+

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

Константин @@ -241,7 +241,7 @@ 6181 0 -

Запись уже невозможно открыть. Может быть на ремонте?

+

Запись уже невозможно открыть. Может быть на ремонте?

ANATOLY @@ -255,12 +255,12 @@ 7719 0 -

Вторая часть лекции - очень сумбурная и непонятная. Похоже, что чем сложнее тема - тем хуже объяснение!

- -

Кто-нибудь, кроме студентов, видит, что изображение и речь рассинхронизированы!

- -

С уважением,
-D

+

Вторая часть лекции - очень сумбурная и непонятная. Похоже, что чем сложнее тема - тем хуже объяснение!

+ +

Кто-нибудь, кроме студентов, видит, что изображение и речь рассинхронизированы!

+ +

С уважением,
+D

Без имени @@ -274,7 +274,7 @@ D

8843 0 -

Когда с рассинхроном разберётесь?? Вообще теряется нить повествования. Невозможно так обучаться.

+

Когда с рассинхроном разберётесь?? Вообще теряется нить повествования. Невозможно так обучаться.

Вячеслав @@ -288,7 +288,7 @@ D

9236 0 -

Сильно раздражает не соответствие лекции и "рыбы", а так же отставание экрана. Куда теперь отправлять ДЗ тоже не понятно.Подскажите!

+

Сильно раздражает не соответствие лекции и "рыбы", а так же отставание экрана. Куда теперь отправлять ДЗ тоже не понятно.Подскажите!

Ольга @@ -302,7 +302,7 @@ D

9345 0 -

Мое предложение - подать совместную жалобу и запросить возврат средств. Никакой обратной связи, обучаться невозможно изза недостатка информации, услуга оказывается не должным образом. Кто за - пишите whatsapp 79251879198 будем придумывать что делать)

+

Мое предложение - подать совместную жалобу и запросить возврат средств. Никакой обратной связи, обучаться невозможно изза недостатка информации, услуга оказывается не должным образом. Кто за - пишите whatsapp 79251879198 будем придумывать что делать)

Леонид @@ -316,6 +316,6 @@ D

9483 0 -

Вот люди пишут:"Я понимаю что нельзя все рассказать за 1,5 часа", а за 50 минут? Лекции становятся все короче и сумбурнее, полностью согласна, что качество услуги никак не соответствует цене.

+

Вот люди пишут:"Я понимаю что нельзя все рассказать за 1,5 часа", а за 50 минут? Лекции становятся все короче и сумбурнее, полностью согласна, что качество услуги никак не соответствует цене.

Елизавета diff --git a/access/__init__.py b/access/__init__.py old mode 100755 new mode 100644 diff --git a/access/admin.py b/access/admin.py old mode 100755 new mode 100644 diff --git a/access/api.py b/access/api.py old mode 100755 new mode 100644 diff --git a/access/forms.py b/access/forms.py old mode 100755 new mode 100644 index 4d28d1a..d0108e2 --- a/access/forms.py +++ b/access/forms.py @@ -1,38 +1,38 @@ -# -*- coding: utf-8 -*- -from access.models import User -from django.contrib.auth.forms import ReadOnlyPasswordHashField -from django import forms - - -class UserCreationForm(forms.ModelForm): - password1 = forms.CharField(label='Password', widget=forms.PasswordInput) - password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput) - - class Meta: - model = User - fields = '__all__' - - def clean_password2(self): - password1 = self.cleaned_data.get("password1") - password2 = self.cleaned_data.get("password2") - if password1 and password2 and password1 != password2: - raise forms.ValidationError("Passwords don't match") - return password2 - - def save(self, commit=True): - user = super(UserCreationForm, self).save(commit=False) - user.set_password(self.cleaned_data["password1"]) - if commit: - user.save() - return user - - -class UserChangeForm(forms.ModelForm): - password = ReadOnlyPasswordHashField() - - class Meta: - model = User - fields = '__all__' - - def clean_password(self): +# -*- coding: utf-8 -*- +from access.models import User +from django.contrib.auth.forms import ReadOnlyPasswordHashField +from django import forms + + +class UserCreationForm(forms.ModelForm): + password1 = forms.CharField(label='Password', widget=forms.PasswordInput) + password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput) + + class Meta: + model = User + fields = '__all__' + + def clean_password2(self): + password1 = self.cleaned_data.get("password1") + password2 = self.cleaned_data.get("password2") + if password1 and password2 and password1 != password2: + raise forms.ValidationError("Passwords don't match") + return password2 + + def save(self, commit=True): + user = super(UserCreationForm, self).save(commit=False) + user.set_password(self.cleaned_data["password1"]) + if commit: + user.save() + return user + + +class UserChangeForm(forms.ModelForm): + password = ReadOnlyPasswordHashField() + + class Meta: + model = User + fields = '__all__' + + def clean_password(self): return self.initial["password"] \ No newline at end of file diff --git a/access/migrations/0001_initial.py b/access/migrations/0001_initial.py old mode 100755 new mode 100644 index d8faae9..7016df0 --- a/access/migrations/0001_initial.py +++ b/access/migrations/0001_initial.py @@ -1,90 +1,90 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-18 16:46 -from __future__ import unicode_literals - -import access.models -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='User', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('password', models.CharField(max_length=128, verbose_name='password')), - ('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')), - ('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')), - ('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')), - ('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')), - ('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')), - ('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')), - ('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_admin', 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')), - ('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')), - ('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')), - ('skype', models.CharField(blank=True, default=b'', max_length=300)), - ('facebook', 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)), - ('odnoklassniki', models.CharField(blank=True, default=b'', max_length=255)), - ('date_joined', models.DateTimeField(default=datetime.datetime.now)), - ], - options={ - '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', - }, - ), - migrations.CreateModel( - name='ActionJ', - fields=[ - ('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')), - ('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')), - ('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')), - ], - options={ - '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', - }, - ), - migrations.CreateModel( - name='Subscription', - fields=[ - ('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')), - ('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')), - ('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')), - ('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={ - 'verbose_name': '\u041f\u043e\u0434\u043f\u0438\u0441\u043a\u0430', - 'verbose_name_plural': '\u041f\u043e\u0434\u043f\u0438\u0441\u043a\u0438', - }, - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-18 16:46 +from __future__ import unicode_literals + +import access.models +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('password', models.CharField(max_length=128, verbose_name='password')), + ('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')), + ('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')), + ('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')), + ('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')), + ('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')), + ('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')), + ('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_admin', 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')), + ('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')), + ('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')), + ('skype', models.CharField(blank=True, default=b'', max_length=300)), + ('facebook', 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)), + ('odnoklassniki', models.CharField(blank=True, default=b'', max_length=255)), + ('date_joined', models.DateTimeField(default=datetime.datetime.now)), + ], + options={ + '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', + }, + ), + migrations.CreateModel( + name='ActionJ', + fields=[ + ('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')), + ('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')), + ('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')), + ], + options={ + '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', + }, + ), + migrations.CreateModel( + name='Subscription', + fields=[ + ('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')), + ('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')), + ('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')), + ('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={ + 'verbose_name': '\u041f\u043e\u0434\u043f\u0438\u0441\u043a\u0430', + 'verbose_name_plural': '\u041f\u043e\u0434\u043f\u0438\u0441\u043a\u0438', + }, + ), + ] diff --git a/access/migrations/0002_auto_20160405_2045.py b/access/migrations/0002_auto_20160405_2045.py old mode 100755 new mode 100644 index c7c1f13..30cfe57 --- a/access/migrations/0002_auto_20160405_2045.py +++ b/access/migrations/0002_auto_20160405_2045.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-05 20:45 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-04-05 20:45 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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'), + ), + ] diff --git a/access/migrations/0003_user_delay.py b/access/migrations/0003_user_delay.py old mode 100755 new mode 100644 index 8d7e759..2f6acc2 --- a/access/migrations/0003_user_delay.py +++ b/access/migrations/0003_user_delay.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-12 21:45 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0002_auto_20160405_2045'), - ] - - operations = [ - migrations.AddField( - model_name='user', - 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'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-12 21:45 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0002_auto_20160405_2045'), + ] + + operations = [ + migrations.AddField( + model_name='user', + 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'), + ), + ] diff --git a/access/migrations/0004_auto_20160412_2152.py b/access/migrations/0004_auto_20160412_2152.py old mode 100755 new mode 100644 index bb0ce33..f0dd1a5 --- a/access/migrations/0004_auto_20160412_2152.py +++ b/access/migrations/0004_auto_20160412_2152.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-12 21:52 -from __future__ import unicode_literals - -from django.db import migrations, models -import redactor.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0003_user_delay'), - ] - - operations = [ - migrations.AddField( - model_name='user', - 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'), - ), - migrations.AlterField( - model_name='user', - 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'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-12 21:52 +from __future__ import unicode_literals + +from django.db import migrations, models +import redactor.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0003_user_delay'), + ] + + operations = [ + migrations.AddField( + model_name='user', + 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'), + ), + migrations.AlterField( + model_name='user', + 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'), + ), + ] diff --git a/access/migrations/0005_auto_20160414_1527.py b/access/migrations/0005_auto_20160414_1527.py old mode 100755 new mode 100644 index 84149ec..22e260c --- a/access/migrations/0005_auto_20160414_1527.py +++ b/access/migrations/0005_auto_20160414_1527.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-14 15:27 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0004_auto_20160412_2152'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - name='delay_description', - field=models.TextField(blank=True, verbose_name='\u041f\u043e\u0432\u043e\u0434 \u043f\u0440\u043e\u0441\u0440\u043e\u0447\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-14 15:27 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0004_auto_20160412_2152'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='delay_description', + field=models.TextField(blank=True, verbose_name='\u041f\u043e\u0432\u043e\u0434 \u043f\u0440\u043e\u0441\u0440\u043e\u0447\u043a\u0438'), + ), + ] diff --git a/access/migrations/0006_user_delay_date.py b/access/migrations/0006_user_delay_date.py old mode 100755 new mode 100644 index a5f18be..7443446 --- a/access/migrations/0006_user_delay_date.py +++ b/access/migrations/0006_user_delay_date.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-14 15:42 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0005_auto_20160414_1527'), - ] - - operations = [ - migrations.AddField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-14 15:42 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0005_auto_20160414_1527'), + ] + + operations = [ + migrations.AddField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0007_auto_20160414_1543.py b/access/migrations/0007_auto_20160414_1543.py old mode 100755 new mode 100644 index f828383..9957784 --- a/access/migrations/0007_auto_20160414_1543.py +++ b/access/migrations/0007_auto_20160414_1543.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-14 15:43 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0006_user_delay_date'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-14 15:43 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0006_user_delay_date'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0008_auto_20160414_1547.py b/access/migrations/0008_auto_20160414_1547.py old mode 100755 new mode 100644 index dc1ad3b..eea46b9 --- a/access/migrations/0008_auto_20160414_1547.py +++ b/access/migrations/0008_auto_20160414_1547.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-14 15:47 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0007_auto_20160414_1543'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-14 15:47 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0007_auto_20160414_1543'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0009_auto_20160414_1941.py b/access/migrations/0009_auto_20160414_1941.py old mode 100755 new mode 100644 index caaba9d..d0ae92c --- a/access/migrations/0009_auto_20160414_1941.py +++ b/access/migrations/0009_auto_20160414_1941.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-14 19:41 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0008_auto_20160414_1547'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-14 19:41 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0008_auto_20160414_1547'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0010_auto_20160414_1944.py b/access/migrations/0010_auto_20160414_1944.py old mode 100755 new mode 100644 index 0f1fab0..8885049 --- a/access/migrations/0010_auto_20160414_1944.py +++ b/access/migrations/0010_auto_20160414_1944.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-14 19:44 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0009_auto_20160414_1941'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-14 19:44 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0009_auto_20160414_1941'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0011_auto_20160420_1749.py b/access/migrations/0011_auto_20160420_1749.py old mode 100755 new mode 100644 index 873ea53..ccdbef3 --- a/access/migrations/0011_auto_20160420_1749.py +++ b/access/migrations/0011_auto_20160420_1749.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-20 17:49 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0010_auto_20160414_1944'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-20 17:49 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0010_auto_20160414_1944'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0012_auto_20160420_1819.py b/access/migrations/0012_auto_20160420_1819.py old mode 100755 new mode 100644 index 3d9bdec..352d048 --- a/access/migrations/0012_auto_20160420_1819.py +++ b/access/migrations/0012_auto_20160420_1819.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-20 18:19 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0011_auto_20160420_1749'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-20 18:19 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0011_auto_20160420_1749'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0013_auto_20160421_1808.py b/access/migrations/0013_auto_20160421_1808.py old mode 100755 new mode 100644 index 720be78..c760952 --- a/access/migrations/0013_auto_20160421_1808.py +++ b/access/migrations/0013_auto_20160421_1808.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-21 18:08 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0012_auto_20160420_1819'), - ] - - operations = [ - migrations.AddField( - model_name='user', - 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'), - ), - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-21 18:08 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0012_auto_20160420_1819'), + ] + + operations = [ + migrations.AddField( + model_name='user', + 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'), + ), + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0014_auto_20160421_1824.py b/access/migrations/0014_auto_20160421_1824.py old mode 100755 new mode 100644 index 72cd100..7593097 --- a/access/migrations/0014_auto_20160421_1824.py +++ b/access/migrations/0014_auto_20160421_1824.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-21 18:24 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0013_auto_20160421_1808'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-21 18:24 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0013_auto_20160421_1808'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0015_auto_20160421_1829.py b/access/migrations/0015_auto_20160421_1829.py old mode 100755 new mode 100644 index cbf25b4..f180b4c --- a/access/migrations/0015_auto_20160421_1829.py +++ b/access/migrations/0015_auto_20160421_1829.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-21 18:29 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0014_auto_20160421_1824'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-21 18:29 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0014_auto_20160421_1824'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0016_auto_20160421_2009.py b/access/migrations/0016_auto_20160421_2009.py old mode 100755 new mode 100644 index eb13ff7..bdf8150 --- a/access/migrations/0016_auto_20160421_2009.py +++ b/access/migrations/0016_auto_20160421_2009.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-21 20:09 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0015_auto_20160421_1829'), - ] - - operations = [ - migrations.AddField( - model_name='user', - 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'), - ), - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-21 20:09 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0015_auto_20160421_1829'), + ] + + operations = [ + migrations.AddField( + model_name='user', + 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'), + ), + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0017_auto_20160421_2135.py b/access/migrations/0017_auto_20160421_2135.py old mode 100755 new mode 100644 index 9c57c09..f540a46 --- a/access/migrations/0017_auto_20160421_2135.py +++ b/access/migrations/0017_auto_20160421_2135.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-21 21:35 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0016_auto_20160421_2009'), - ] - - operations = [ - migrations.AddField( - model_name='user', - 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'), - ), - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-21 21:35 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0016_auto_20160421_2009'), + ] + + operations = [ + migrations.AddField( + model_name='user', + 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'), + ), + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0018_auto_20160422_1555.py b/access/migrations/0018_auto_20160422_1555.py old mode 100755 new mode 100644 index 9269c37..49093e5 --- a/access/migrations/0018_auto_20160422_1555.py +++ b/access/migrations/0018_auto_20160422_1555.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-22 15:55 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0017_auto_20160421_2135'), - ] - - operations = [ - migrations.AddField( - model_name='user', - 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'), - ), - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-22 15:55 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0017_auto_20160421_2135'), + ] + + operations = [ + migrations.AddField( + model_name='user', + 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'), + ), + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0019_auto_20160424_1646.py b/access/migrations/0019_auto_20160424_1646.py old mode 100755 new mode 100644 index dada5e7..1f4a417 --- a/access/migrations/0019_auto_20160424_1646.py +++ b/access/migrations/0019_auto_20160424_1646.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-24 16:46 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0018_auto_20160422_1555'), - ] - - operations = [ - migrations.AddField( - model_name='user', - name='customer', - field=models.BooleanField(default=False, verbose_name='\u041f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044c'), - ), - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-04-24 16:46 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0018_auto_20160422_1555'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='customer', + field=models.BooleanField(default=False, verbose_name='\u041f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044c'), + ), + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0020_auto_20160506_1303.py b/access/migrations/0020_auto_20160506_1303.py old mode 100755 new mode 100644 index 188b3f3..d712a74 --- a/access/migrations/0020_auto_20160506_1303.py +++ b/access/migrations/0020_auto_20160506_1303.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-06 13:03 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0019_auto_20160424_1646'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-06 13:03 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0019_auto_20160424_1646'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0021_auto_20160509_1331.py b/access/migrations/0021_auto_20160509_1331.py old mode 100755 new mode 100644 index a86c891..1fdc5b9 --- a/access/migrations/0021_auto_20160509_1331.py +++ b/access/migrations/0021_auto_20160509_1331.py @@ -1,31 +1,31 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-09 13:31 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0020_auto_20160506_1303'), - ] - - operations = [ - migrations.AddField( - model_name='user', - 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'), - ), - migrations.AddField( - model_name='user', - 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'), - ), - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-09 13:31 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0020_auto_20160506_1303'), + ] + + operations = [ + migrations.AddField( + model_name='user', + 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'), + ), + migrations.AddField( + model_name='user', + 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'), + ), + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0022_auto_20160509_1401.py b/access/migrations/0022_auto_20160509_1401.py old mode 100755 new mode 100644 index 549c467..c86280b --- a/access/migrations/0022_auto_20160509_1401.py +++ b/access/migrations/0022_auto_20160509_1401.py @@ -1,41 +1,41 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-09 14:01 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0021_auto_20160509_1331'), - ] - - operations = [ - migrations.CreateModel( - name='TrafSource', - fields=[ - ('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')), - ('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')), - ('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')), - ], - options={ - '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', - }, - ), - migrations.AlterField( - model_name='user', - 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.'), - ), - migrations.AlterField( - model_name='user', - 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'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-09 14:01 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0021_auto_20160509_1331'), + ] + + operations = [ + migrations.CreateModel( + name='TrafSource', + fields=[ + ('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')), + ('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')), + ('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')), + ], + options={ + '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', + }, + ), + migrations.AlterField( + model_name='user', + 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.'), + ), + migrations.AlterField( + model_name='user', + 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'), + ), + ] diff --git a/access/migrations/0023_auto_20160509_1408.py b/access/migrations/0023_auto_20160509_1408.py old mode 100755 new mode 100644 index 551c3cb..3a0064a --- a/access/migrations/0023_auto_20160509_1408.py +++ b/access/migrations/0023_auto_20160509_1408.py @@ -1,38 +1,38 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-09 14:08 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0022_auto_20160509_1401'), - ] - - operations = [ - migrations.CreateModel( - name='TrafHistory', - fields=[ - ('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')), - ('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_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')), - ('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={ - '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', - }, - ), - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-09 14:08 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0022_auto_20160509_1401'), + ] + + operations = [ + migrations.CreateModel( + name='TrafHistory', + fields=[ + ('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')), + ('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_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')), + ('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={ + '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', + }, + ), + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0024_auto_20160509_1537.py b/access/migrations/0024_auto_20160509_1537.py old mode 100755 new mode 100644 index b3b76fa..093d7ce --- a/access/migrations/0024_auto_20160509_1537.py +++ b/access/migrations/0024_auto_20160509_1537.py @@ -1,61 +1,61 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-09 15:37 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0023_auto_20160509_1408'), - ] - - operations = [ - migrations.CreateModel( - name='TrafTokenHistory', - fields=[ - ('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')), - ('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_end', models.DateTimeField(editable=False, verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f')), - ], - options={ - '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', - }, - ), - migrations.AddField( - model_name='trafhistory', - 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'), - ), - migrations.AddField( - model_name='trafsource', - 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'), - ), - migrations.AlterField( - model_name='trafsource', - 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'), - ), - migrations.AlterField( - model_name='trafsource', - name='token', - field=models.CharField(editable=False, max_length=255, verbose_name='\u0422\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430'), - ), - migrations.AlterField( - model_name='user', - 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.'), - ), - migrations.AddField( - model_name='traftokenhistory', - 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'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-09 15:37 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0023_auto_20160509_1408'), + ] + + operations = [ + migrations.CreateModel( + name='TrafTokenHistory', + fields=[ + ('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')), + ('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_end', models.DateTimeField(editable=False, verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f')), + ], + options={ + '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', + }, + ), + migrations.AddField( + model_name='trafhistory', + 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'), + ), + migrations.AddField( + model_name='trafsource', + 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'), + ), + migrations.AlterField( + model_name='trafsource', + 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'), + ), + migrations.AlterField( + model_name='trafsource', + name='token', + field=models.CharField(editable=False, max_length=255, verbose_name='\u0422\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430'), + ), + migrations.AlterField( + model_name='user', + 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.'), + ), + migrations.AddField( + model_name='traftokenhistory', + 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'), + ), + ] diff --git a/access/migrations/0025_auto_20160509_1539.py b/access/migrations/0025_auto_20160509_1539.py old mode 100755 new mode 100644 index 51cd29a..4acd5c5 --- a/access/migrations/0025_auto_20160509_1539.py +++ b/access/migrations/0025_auto_20160509_1539.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-09 15:39 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0024_auto_20160509_1537'), - ] - - operations = [ - migrations.RenameField( - model_name='traftokenhistory', - old_name='sources', - new_name='source', - ), - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-09 15:39 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0024_auto_20160509_1537'), + ] + + operations = [ + migrations.RenameField( + model_name='traftokenhistory', + old_name='sources', + new_name='source', + ), + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0026_auto_20160509_1803.py b/access/migrations/0026_auto_20160509_1803.py old mode 100755 new mode 100644 index 2e0848a..f08ea38 --- a/access/migrations/0026_auto_20160509_1803.py +++ b/access/migrations/0026_auto_20160509_1803.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-09 18:03 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0025_auto_20160509_1539'), - ] - - operations = [ - migrations.AlterField( - model_name='trafsource', - 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'), - ), - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-09 18:03 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0025_auto_20160509_1539'), + ] + + operations = [ + migrations.AlterField( + model_name='trafsource', + 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'), + ), + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0027_auto_20160510_1823.py b/access/migrations/0027_auto_20160510_1823.py old mode 100755 new mode 100644 index 4b10ad4..5c48624 --- a/access/migrations/0027_auto_20160510_1823.py +++ b/access/migrations/0027_auto_20160510_1823.py @@ -1,46 +1,46 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-10 18:23 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0026_auto_20160509_1803'), - ] - - operations = [ - migrations.CreateModel( - name='Questionnaire', - fields=[ - ('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')), - ('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')), - ('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')), - ('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')), - ('description', models.TextField(blank=True, verbose_name='\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u044b \u043e\u0442\u0432\u0435\u0442')), - ], - options={ - 'verbose_name': '\u0410\u043a\u0435\u0442\u0430', - 'verbose_name_plural': '\u0410\u043d\u043a\u0435\u0442\u044b', - }, - ), - migrations.AlterField( - model_name='user', - 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.'), - ), - migrations.AddField( - model_name='questionnaire', - 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'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-10 18:23 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0026_auto_20160509_1803'), + ] + + operations = [ + migrations.CreateModel( + name='Questionnaire', + fields=[ + ('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')), + ('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')), + ('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')), + ('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')), + ('description', models.TextField(blank=True, verbose_name='\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u044b \u043e\u0442\u0432\u0435\u0442')), + ], + options={ + 'verbose_name': '\u0410\u043a\u0435\u0442\u0430', + 'verbose_name_plural': '\u0410\u043d\u043a\u0435\u0442\u044b', + }, + ), + migrations.AlterField( + model_name='user', + 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.'), + ), + migrations.AddField( + model_name='questionnaire', + 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'), + ), + ] diff --git a/access/migrations/0028_auto_20160526_1427.py b/access/migrations/0028_auto_20160526_1427.py old mode 100755 new mode 100644 index c29a72f..d2555d9 --- a/access/migrations/0028_auto_20160526_1427.py +++ b/access/migrations/0028_auto_20160526_1427.py @@ -1,61 +1,61 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-26 14:27 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0027_auto_20160510_1823'), - ] - - operations = [ - migrations.CreateModel( - name='Document', - fields=[ - ('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')), - ('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')), - ('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={ - 'verbose_name': '\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442', - 'verbose_name_plural': '\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b', - }, - ), - migrations.CreateModel( - name='DocumentScan', - fields=[ - ('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')), - ('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')), - ], - options={ - 'ordering': ['page'], - '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', - }, - ), - migrations.AlterField( - model_name='user', - 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.'), - ), - migrations.AddField( - model_name='document', - name='scans', - field=models.ManyToManyField(blank=True, to='access.DocumentScan', verbose_name='\u0421\u043a\u0430\u043d\u044b'), - ), - migrations.AddField( - model_name='document', - 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'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-26 14:27 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0027_auto_20160510_1823'), + ] + + operations = [ + migrations.CreateModel( + name='Document', + fields=[ + ('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')), + ('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')), + ('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={ + 'verbose_name': '\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442', + 'verbose_name_plural': '\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b', + }, + ), + migrations.CreateModel( + name='DocumentScan', + fields=[ + ('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')), + ('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')), + ], + options={ + 'ordering': ['page'], + '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', + }, + ), + migrations.AlterField( + model_name='user', + 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.'), + ), + migrations.AddField( + model_name='document', + name='scans', + field=models.ManyToManyField(blank=True, to='access.DocumentScan', verbose_name='\u0421\u043a\u0430\u043d\u044b'), + ), + migrations.AddField( + model_name='document', + 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'), + ), + ] diff --git a/access/migrations/0029_auto_20160526_1435.py b/access/migrations/0029_auto_20160526_1435.py old mode 100755 new mode 100644 index 72a2bb7..7d9db55 --- a/access/migrations/0029_auto_20160526_1435.py +++ b/access/migrations/0029_auto_20160526_1435.py @@ -1,38 +1,38 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-26 14:35 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0028_auto_20160526_1427'), - ] - - operations = [ - migrations.RemoveField( - model_name='document', - name='scans', - ), - migrations.AddField( - model_name='document', - name='file', - field=models.ImageField(null=True, upload_to=b'documents', verbose_name='\u0421\u043a\u0430\u043d'), - ), - migrations.AlterField( - model_name='document', - 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'), - ), - migrations.AlterField( - model_name='user', - 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.'), - ), - migrations.DeleteModel( - name='DocumentScan', - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-26 14:35 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0028_auto_20160526_1427'), + ] + + operations = [ + migrations.RemoveField( + model_name='document', + name='scans', + ), + migrations.AddField( + model_name='document', + name='file', + field=models.ImageField(null=True, upload_to=b'documents', verbose_name='\u0421\u043a\u0430\u043d'), + ), + migrations.AlterField( + model_name='document', + 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'), + ), + migrations.AlterField( + model_name='user', + 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.'), + ), + migrations.DeleteModel( + name='DocumentScan', + ), + ] diff --git a/access/migrations/0030_auto_20160526_1727.py b/access/migrations/0030_auto_20160526_1727.py old mode 100755 new mode 100644 index a311d2b..0dba96b --- a/access/migrations/0030_auto_20160526_1727.py +++ b/access/migrations/0030_auto_20160526_1727.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-26 17:27 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0029_auto_20160526_1435'), - ] - - operations = [ - migrations.AlterField( - model_name='document', - name='file', - field=models.FileField(blank=True, null=True, upload_to=b'documents', verbose_name='\u0421\u043a\u0430\u043d'), - ), - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-26 17:27 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0029_auto_20160526_1435'), + ] + + operations = [ + migrations.AlterField( + model_name='document', + name='file', + field=models.FileField(blank=True, null=True, upload_to=b'documents', verbose_name='\u0421\u043a\u0430\u043d'), + ), + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0031_auto_20160531_1240.py b/access/migrations/0031_auto_20160531_1240.py old mode 100755 new mode 100644 index 7587774..3dcb790 --- a/access/migrations/0031_auto_20160531_1240.py +++ b/access/migrations/0031_auto_20160531_1240.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-31 12:40 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0030_auto_20160526_1727'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - migrations.AlterField( - model_name='user', - 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'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-31 12:40 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0030_auto_20160526_1727'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + migrations.AlterField( + model_name='user', + 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'), + ), + ] diff --git a/access/migrations/0032_auto_20160601_1256.py b/access/migrations/0032_auto_20160601_1256.py old mode 100755 new mode 100644 index 5bc7eb2..57af364 --- a/access/migrations/0032_auto_20160601_1256.py +++ b/access/migrations/0032_auto_20160601_1256.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-01 12:56 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0031_auto_20160531_1240'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-01 12:56 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0031_auto_20160531_1240'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0033_auto_20160607_1614.py b/access/migrations/0033_auto_20160607_1614.py old mode 100755 new mode 100644 index b86a02f..05dad00 --- a/access/migrations/0033_auto_20160607_1614.py +++ b/access/migrations/0033_auto_20160607_1614.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-07 16:14 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0032_auto_20160601_1256'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-07 16:14 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0032_auto_20160601_1256'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0034_auto_20160607_2002.py b/access/migrations/0034_auto_20160607_2002.py old mode 100755 new mode 100644 index eeac88f..b314e6a --- a/access/migrations/0034_auto_20160607_2002.py +++ b/access/migrations/0034_auto_20160607_2002.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-07 20:02 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0033_auto_20160607_1614'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-07 20:02 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0033_auto_20160607_1614'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0035_auto_20160607_2034.py b/access/migrations/0035_auto_20160607_2034.py old mode 100755 new mode 100644 index 66e9075..213c41c --- a/access/migrations/0035_auto_20160607_2034.py +++ b/access/migrations/0035_auto_20160607_2034.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-07 20:34 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0034_auto_20160607_2002'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-07 20:34 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0034_auto_20160607_2002'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0036_auto_20160607_2051.py b/access/migrations/0036_auto_20160607_2051.py old mode 100755 new mode 100644 index 7c7e96d..927754a --- a/access/migrations/0036_auto_20160607_2051.py +++ b/access/migrations/0036_auto_20160607_2051.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-07 20:51 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0035_auto_20160607_2034'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-07 20:51 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0035_auto_20160607_2034'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0037_auto_20160608_1700.py b/access/migrations/0037_auto_20160608_1700.py old mode 100755 new mode 100644 index 96c64d7..a0f0492 --- a/access/migrations/0037_auto_20160608_1700.py +++ b/access/migrations/0037_auto_20160608_1700.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-08 17:00 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0036_auto_20160607_2051'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-08 17:00 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0036_auto_20160607_2051'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0038_auto_20160608_1705.py b/access/migrations/0038_auto_20160608_1705.py old mode 100755 new mode 100644 index 75e6ae2..180a1bb --- a/access/migrations/0038_auto_20160608_1705.py +++ b/access/migrations/0038_auto_20160608_1705.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-08 17:05 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0037_auto_20160608_1700'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-08 17:05 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0037_auto_20160608_1700'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0039_auto_20160608_1804.py b/access/migrations/0039_auto_20160608_1804.py old mode 100755 new mode 100644 index 0ced3c1..d2418c9 --- a/access/migrations/0039_auto_20160608_1804.py +++ b/access/migrations/0039_auto_20160608_1804.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-08 18:04 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0038_auto_20160608_1705'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-08 18:04 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0038_auto_20160608_1705'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0040_auto_20160608_1841.py b/access/migrations/0040_auto_20160608_1841.py old mode 100755 new mode 100644 index 3a71be2..52e5591 --- a/access/migrations/0040_auto_20160608_1841.py +++ b/access/migrations/0040_auto_20160608_1841.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-08 18:41 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0039_auto_20160608_1804'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-08 18:41 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0039_auto_20160608_1804'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0041_auto_20160609_1429.py b/access/migrations/0041_auto_20160609_1429.py old mode 100755 new mode 100644 index 843bac2..de74cd0 --- a/access/migrations/0041_auto_20160609_1429.py +++ b/access/migrations/0041_auto_20160609_1429.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 14:29 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0040_auto_20160608_1841'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 14:29 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0040_auto_20160608_1841'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0042_auto_20160609_1442.py b/access/migrations/0042_auto_20160609_1442.py old mode 100755 new mode 100644 index ef23d38..9b470e9 --- a/access/migrations/0042_auto_20160609_1442.py +++ b/access/migrations/0042_auto_20160609_1442.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 14:42 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0041_auto_20160609_1429'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 14:42 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0041_auto_20160609_1429'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0043_auto_20160609_1534.py b/access/migrations/0043_auto_20160609_1534.py old mode 100755 new mode 100644 index 49b94a5..c3a5212 --- a/access/migrations/0043_auto_20160609_1534.py +++ b/access/migrations/0043_auto_20160609_1534.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 15:34 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0042_auto_20160609_1442'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 15:34 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0042_auto_20160609_1442'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0044_auto_20160609_1536.py b/access/migrations/0044_auto_20160609_1536.py old mode 100755 new mode 100644 index 5346e16..50e9f5c --- a/access/migrations/0044_auto_20160609_1536.py +++ b/access/migrations/0044_auto_20160609_1536.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 15:36 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0043_auto_20160609_1534'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 15:36 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0043_auto_20160609_1534'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0045_auto_20160609_1536.py b/access/migrations/0045_auto_20160609_1536.py old mode 100755 new mode 100644 index 788dd3b..2871926 --- a/access/migrations/0045_auto_20160609_1536.py +++ b/access/migrations/0045_auto_20160609_1536.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 15:36 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0044_auto_20160609_1536'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 15:36 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0044_auto_20160609_1536'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0046_auto_20160609_1546.py b/access/migrations/0046_auto_20160609_1546.py old mode 100755 new mode 100644 index e4700f1..e207ece --- a/access/migrations/0046_auto_20160609_1546.py +++ b/access/migrations/0046_auto_20160609_1546.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 15:46 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0045_auto_20160609_1536'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 15:46 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0045_auto_20160609_1536'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0047_auto_20160609_1627.py b/access/migrations/0047_auto_20160609_1627.py old mode 100755 new mode 100644 index 50e944a..3d7b092 --- a/access/migrations/0047_auto_20160609_1627.py +++ b/access/migrations/0047_auto_20160609_1627.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 16:27 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0046_auto_20160609_1546'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 16:27 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0046_auto_20160609_1546'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0048_auto_20160609_2224.py b/access/migrations/0048_auto_20160609_2224.py old mode 100755 new mode 100644 index 5909b2d..80cfbb3 --- a/access/migrations/0048_auto_20160609_2224.py +++ b/access/migrations/0048_auto_20160609_2224.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 22:24 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0047_auto_20160609_1627'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 22:24 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0047_auto_20160609_1627'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0049_auto_20160628_1731.py b/access/migrations/0049_auto_20160628_1731.py old mode 100755 new mode 100644 index 4040d21..6a3bf2b --- a/access/migrations/0049_auto_20160628_1731.py +++ b/access/migrations/0049_auto_20160628_1731.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-28 17:31 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0048_auto_20160609_2224'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-28 17:31 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0048_auto_20160609_2224'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0050_auto_20160711_1518.py b/access/migrations/0050_auto_20160711_1518.py old mode 100755 new mode 100644 index c756561..e3fdf6c --- a/access/migrations/0050_auto_20160711_1518.py +++ b/access/migrations/0050_auto_20160711_1518.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-11 15:18 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0049_auto_20160628_1731'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-11 15:18 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0049_auto_20160628_1731'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0051_auto_20160713_2038.py b/access/migrations/0051_auto_20160713_2038.py old mode 100755 new mode 100644 index e411c9e..bdda95b --- a/access/migrations/0051_auto_20160713_2038.py +++ b/access/migrations/0051_auto_20160713_2038.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-13 20:38 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0050_auto_20160711_1518'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-13 20:38 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0050_auto_20160711_1518'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0052_auto_20160718_1714.py b/access/migrations/0052_auto_20160718_1714.py old mode 100755 new mode 100644 index 9c0ae5b..3bffe82 --- a/access/migrations/0052_auto_20160718_1714.py +++ b/access/migrations/0052_auto_20160718_1714.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-18 17:14 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0051_auto_20160713_2038'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-18 17:14 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0051_auto_20160713_2038'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0053_auto_20160718_1714.py b/access/migrations/0053_auto_20160718_1714.py old mode 100755 new mode 100644 index 81e91dc..dced6d0 --- a/access/migrations/0053_auto_20160718_1714.py +++ b/access/migrations/0053_auto_20160718_1714.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-18 17:14 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0052_auto_20160718_1714'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-18 17:14 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0052_auto_20160718_1714'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0054_auto_20160725_1551.py b/access/migrations/0054_auto_20160725_1551.py old mode 100755 new mode 100644 index 6085f62..8275ae2 --- a/access/migrations/0054_auto_20160725_1551.py +++ b/access/migrations/0054_auto_20160725_1551.py @@ -1,31 +1,31 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-25 15:51 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0053_auto_20160718_1714'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - migrations.AlterField( - model_name='user', - name='is_admin', - field=models.BooleanField(default=False, editable=False), - ), - migrations.AlterField( - model_name='user', - name='is_staff', - field=models.BooleanField(default=False, editable=False), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-25 15:51 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0053_auto_20160718_1714'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + migrations.AlterField( + model_name='user', + name='is_admin', + field=models.BooleanField(default=False, editable=False), + ), + migrations.AlterField( + model_name='user', + name='is_staff', + field=models.BooleanField(default=False, editable=False), + ), + ] diff --git a/access/migrations/0055_auto_20160809_1653.py b/access/migrations/0055_auto_20160809_1653.py old mode 100755 new mode 100644 index 8f10fb3..6e33c71 --- a/access/migrations/0055_auto_20160809_1653.py +++ b/access/migrations/0055_auto_20160809_1653.py @@ -1,36 +1,36 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-08-09 16:53 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0054_auto_20160725_1551'), - ] - - operations = [ - migrations.AddField( - model_name='user', - name='sync', - field=models.BooleanField(default=False, verbose_name='\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d'), - ), - migrations.AlterField( - model_name='trafhistory', - 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'), - ), - migrations.AlterField( - model_name='user', - 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.'), - ), - migrations.AlterField( - model_name='user', - 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'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-08-09 16:53 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0054_auto_20160725_1551'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='sync', + field=models.BooleanField(default=False, verbose_name='\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d'), + ), + migrations.AlterField( + model_name='trafhistory', + 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'), + ), + migrations.AlterField( + model_name='user', + 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.'), + ), + migrations.AlterField( + model_name='user', + 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'), + ), + ] diff --git a/access/migrations/0056_auto_20160809_1659.py b/access/migrations/0056_auto_20160809_1659.py old mode 100755 new mode 100644 index 20db0e8..ca74ece --- a/access/migrations/0056_auto_20160809_1659.py +++ b/access/migrations/0056_auto_20160809_1659.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-08-09 16:59 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0055_auto_20160809_1653'), - ] - - operations = [ - migrations.AddField( - model_name='user', - 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'), - ), - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-08-09 16:59 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0055_auto_20160809_1653'), + ] + + operations = [ + migrations.AddField( + model_name='user', + 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'), + ), + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0057_auto_20160810_1234.py b/access/migrations/0057_auto_20160810_1234.py old mode 100755 new mode 100644 index 4bfca78..8b2b25a --- a/access/migrations/0057_auto_20160810_1234.py +++ b/access/migrations/0057_auto_20160810_1234.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-08-10 12:34 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0056_auto_20160809_1659'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-08-10 12:34 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0056_auto_20160809_1659'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0058_auto_20160814_1736.py b/access/migrations/0058_auto_20160814_1736.py old mode 100755 new mode 100644 index 79374b6..c14f5ab --- a/access/migrations/0058_auto_20160814_1736.py +++ b/access/migrations/0058_auto_20160814_1736.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-08-14 17:36 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0057_auto_20160810_1234'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - 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.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-08-14 17:36 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0057_auto_20160810_1234'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + 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.'), + ), + ] diff --git a/access/migrations/0059_auto_20160815_1853.py b/access/migrations/0059_auto_20160815_1853.py old mode 100755 new mode 100644 index 3d7e4a2..e24c3b0 --- a/access/migrations/0059_auto_20160815_1853.py +++ b/access/migrations/0059_auto_20160815_1853.py @@ -1,198 +1,198 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.3 on 2016-08-15 18:53 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0058_auto_20160814_1736'), - ] - - operations = [ - migrations.CreateModel( - name='UserSync', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date', models.DateTimeField(default=datetime.datetime.now, verbose_name='Дата начала')), - ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='Дата завершения процеса')), - ('source', models.CharField(max_length=255, verbose_name='Источник синхронизации')), - ('dist', models.CharField(max_length=255, verbose_name='Получатель синхронизации')), - ('result', models.BooleanField(default=False, verbose_name='Результат синхронизации')), - ], - options={ - 'verbose_name': 'Задача синхронизации', - 'verbose_name_plural': 'Задачи синхронизации', - }, - ), - migrations.AlterField( - model_name='actionj', - 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='Тип события'), - ), - migrations.AlterField( - model_name='document', - name='file', - field=models.FileField(blank=True, null=True, upload_to='documents', verbose_name='Скан'), - ), - migrations.AlterField( - model_name='document', - name='status', - field=models.CharField(choices=[('W', 'На оформлении'), ('F', 'Оформлен')], default='W', editable=False, max_length=1, verbose_name='Статус'), - ), - migrations.AlterField( - model_name='questionnaire', - 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='Возраст'), - ), - migrations.AlterField( - model_name='questionnaire', - name='aim', - field=models.CharField(blank=True, choices=[('1', 'Да, в офисе'), ('2', 'Да, свой проект'), ('3', 'Да, на фрилансе'), ('4', 'Нет, изучаю для себя')], max_length=1, null=True, verbose_name='Цель обучения'), - ), - migrations.AlterField( - model_name='questionnaire', - name='experience', - field=models.CharField(blank=True, choices=[('1', 'Только начинаю'), ('2', 'Да, менее года'), ('3', 'Да, 1-2 года'), ('4', 'Да, более 2 лет')], max_length=1, null=True, verbose_name='Опыт'), - ), - migrations.AlterField( - model_name='questionnaire', - name='fully', - field=models.CharField(choices=[('1', 'Флаги'), ('2', 'Свободный ответ'), ('3', 'Завершено')], default=1, max_length=1, verbose_name='Стадия'), - ), - migrations.AlterField( - model_name='questionnaire', - name='male', - field=models.CharField(blank=True, choices=[('M', 'Мужчина'), ('W', 'Женщина')], max_length=1, null=True, verbose_name='Пол'), - ), - migrations.AlterField( - model_name='trafhistory', - name='action', - field=models.CharField(choices=[('G', 'Получение данных'), ('D', 'Запись данных'), ('C', 'Создание пользователя'), ('O', 'Создание счета')], max_length=1, verbose_name='Действие'), - ), - migrations.AlterField( - model_name='user', - name='avatar', - field=models.CharField(blank=True, default='', max_length=255, verbose_name='Ключ аватара'), - ), - migrations.AlterField( - model_name='user', - name='back_phone', - field=models.CharField(blank=True, default='', max_length=255, verbose_name='Предидущий телефон'), - ), - migrations.AlterField( - model_name='user', - name='city', - field=models.CharField(blank=True, default='', max_length=255, verbose_name='Город'), - ), - migrations.AlterField( - model_name='user', - name='delay_date', - field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 8, 15, 18, 53, 53, 111817), null=True, verbose_name='Задержка до. Не включая этот день.'), - ), - migrations.AlterField( - model_name='user', - name='email', - field=models.EmailField(blank=True, db_index=True, editable=False, max_length=255, unique=True, verbose_name='email'), - ), - migrations.AlterField( - model_name='user', - name='facebook', - field=models.CharField(blank=True, default='', max_length=255), - ), - migrations.AlterField( - model_name='user', - name='fname', - field=models.CharField(blank=True, default='', max_length=255, verbose_name='Фамилия'), - ), - migrations.AlterField( - model_name='user', - name='in_avatar', - field=models.ImageField(blank=True, editable=False, null=True, upload_to='', verbose_name='Наш аватар'), - ), - migrations.AlterField( - model_name='user', - name='in_role', - field=models.CharField(choices=[('U', 'Студент школы'), ('T', 'Преподаватель'), ('M', 'Менеджер'), ('S', 'Руководитель'), ('S2', 'Око саурона'), ('A', 'Администратор'), ('Ts', 'Тестовый пользователь'), ('F', 'Пользователь свободного счета')], default='U', max_length=2, verbose_name='Роль'), - ), - migrations.AlterField( - model_name='user', - name='linkedin', - field=models.CharField(blank=True, default='', max_length=255), - ), - migrations.AlterField( - model_name='user', - name='name', - field=models.CharField(blank=True, default='', max_length=255, verbose_name='Имя'), - ), - migrations.AlterField( - model_name='user', - name='odnoklassniki', - field=models.CharField(blank=True, default='', max_length=255), - ), - migrations.AlterField( - model_name='user', - name='oname', - field=models.CharField(blank=True, default='', max_length=255, verbose_name='Отчество'), - ), - migrations.AlterField( - model_name='user', - name='phone', - field=models.CharField(default='', max_length=255, verbose_name='Телефон'), - ), - migrations.AlterField( - model_name='user', - name='private', - field=models.CharField(choices=[('A', 'Всему интернету'), ('U', 'Только пользователям системы'), ('L', 'По прямой ссылке'), ('B', 'Только мне')], default='A', max_length=1, verbose_name='Приватность профиля'), - ), - migrations.AlterField( - model_name='user', - name='refer', - field=models.CharField(choices=[('S', 'Органично'), ('B', 'Привлечен')], default='S', max_length=1, null=True, verbose_name='Источник'), - ), - migrations.AlterField( - model_name='user', - name='refer_source', - field=models.CharField(blank=True, default='', max_length=255, verbose_name='Источник пользователя'), - ), - migrations.AlterField( - model_name='user', - name='reg_status', - field=models.CharField(choices=[('1', 'Пароль'), ('2', 'О себе'), ('3', 'Фото'), ('4', 'Закончена')], default='1', max_length=1, verbose_name='Статус регистрации'), - ), - migrations.AlterField( - model_name='user', - name='skype', - field=models.CharField(blank=True, default='', max_length=300), - ), - migrations.AlterField( - model_name='user', - name='status', - field=models.CharField(choices=[('ON', 'on-line'), ('OFF', 'off-line')], default='ON', max_length=9), - ), - migrations.AlterField( - model_name='user', - name='token', - field=models.CharField(blank=True, default='', max_length=255), - ), - migrations.AlterField( - model_name='user', - name='unique_role', - field=models.CharField(blank=True, default='', max_length=255, verbose_name='Уникальная роль'), - ), - migrations.AlterField( - model_name='user', - name='vk', - field=models.CharField(blank=True, default='', max_length=255), - ), - migrations.AddField( - model_name='usersync', - name='user', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Синхронизируемый'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.3 on 2016-08-15 18:53 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0058_auto_20160814_1736'), + ] + + operations = [ + migrations.CreateModel( + name='UserSync', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date', models.DateTimeField(default=datetime.datetime.now, verbose_name='Дата начала')), + ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='Дата завершения процеса')), + ('source', models.CharField(max_length=255, verbose_name='Источник синхронизации')), + ('dist', models.CharField(max_length=255, verbose_name='Получатель синхронизации')), + ('result', models.BooleanField(default=False, verbose_name='Результат синхронизации')), + ], + options={ + 'verbose_name': 'Задача синхронизации', + 'verbose_name_plural': 'Задачи синхронизации', + }, + ), + migrations.AlterField( + model_name='actionj', + 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='Тип события'), + ), + migrations.AlterField( + model_name='document', + name='file', + field=models.FileField(blank=True, null=True, upload_to='documents', verbose_name='Скан'), + ), + migrations.AlterField( + model_name='document', + name='status', + field=models.CharField(choices=[('W', 'На оформлении'), ('F', 'Оформлен')], default='W', editable=False, max_length=1, verbose_name='Статус'), + ), + migrations.AlterField( + model_name='questionnaire', + 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='Возраст'), + ), + migrations.AlterField( + model_name='questionnaire', + name='aim', + field=models.CharField(blank=True, choices=[('1', 'Да, в офисе'), ('2', 'Да, свой проект'), ('3', 'Да, на фрилансе'), ('4', 'Нет, изучаю для себя')], max_length=1, null=True, verbose_name='Цель обучения'), + ), + migrations.AlterField( + model_name='questionnaire', + name='experience', + field=models.CharField(blank=True, choices=[('1', 'Только начинаю'), ('2', 'Да, менее года'), ('3', 'Да, 1-2 года'), ('4', 'Да, более 2 лет')], max_length=1, null=True, verbose_name='Опыт'), + ), + migrations.AlterField( + model_name='questionnaire', + name='fully', + field=models.CharField(choices=[('1', 'Флаги'), ('2', 'Свободный ответ'), ('3', 'Завершено')], default=1, max_length=1, verbose_name='Стадия'), + ), + migrations.AlterField( + model_name='questionnaire', + name='male', + field=models.CharField(blank=True, choices=[('M', 'Мужчина'), ('W', 'Женщина')], max_length=1, null=True, verbose_name='Пол'), + ), + migrations.AlterField( + model_name='trafhistory', + name='action', + field=models.CharField(choices=[('G', 'Получение данных'), ('D', 'Запись данных'), ('C', 'Создание пользователя'), ('O', 'Создание счета')], max_length=1, verbose_name='Действие'), + ), + migrations.AlterField( + model_name='user', + name='avatar', + field=models.CharField(blank=True, default='', max_length=255, verbose_name='Ключ аватара'), + ), + migrations.AlterField( + model_name='user', + name='back_phone', + field=models.CharField(blank=True, default='', max_length=255, verbose_name='Предидущий телефон'), + ), + migrations.AlterField( + model_name='user', + name='city', + field=models.CharField(blank=True, default='', max_length=255, verbose_name='Город'), + ), + migrations.AlterField( + model_name='user', + name='delay_date', + field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 8, 15, 18, 53, 53, 111817), null=True, verbose_name='Задержка до. Не включая этот день.'), + ), + migrations.AlterField( + model_name='user', + name='email', + field=models.EmailField(blank=True, db_index=True, editable=False, max_length=255, unique=True, verbose_name='email'), + ), + migrations.AlterField( + model_name='user', + name='facebook', + field=models.CharField(blank=True, default='', max_length=255), + ), + migrations.AlterField( + model_name='user', + name='fname', + field=models.CharField(blank=True, default='', max_length=255, verbose_name='Фамилия'), + ), + migrations.AlterField( + model_name='user', + name='in_avatar', + field=models.ImageField(blank=True, editable=False, null=True, upload_to='', verbose_name='Наш аватар'), + ), + migrations.AlterField( + model_name='user', + name='in_role', + field=models.CharField(choices=[('U', 'Студент школы'), ('T', 'Преподаватель'), ('M', 'Менеджер'), ('S', 'Руководитель'), ('S2', 'Око саурона'), ('A', 'Администратор'), ('Ts', 'Тестовый пользователь'), ('F', 'Пользователь свободного счета')], default='U', max_length=2, verbose_name='Роль'), + ), + migrations.AlterField( + model_name='user', + name='linkedin', + field=models.CharField(blank=True, default='', max_length=255), + ), + migrations.AlterField( + model_name='user', + name='name', + field=models.CharField(blank=True, default='', max_length=255, verbose_name='Имя'), + ), + migrations.AlterField( + model_name='user', + name='odnoklassniki', + field=models.CharField(blank=True, default='', max_length=255), + ), + migrations.AlterField( + model_name='user', + name='oname', + field=models.CharField(blank=True, default='', max_length=255, verbose_name='Отчество'), + ), + migrations.AlterField( + model_name='user', + name='phone', + field=models.CharField(default='', max_length=255, verbose_name='Телефон'), + ), + migrations.AlterField( + model_name='user', + name='private', + field=models.CharField(choices=[('A', 'Всему интернету'), ('U', 'Только пользователям системы'), ('L', 'По прямой ссылке'), ('B', 'Только мне')], default='A', max_length=1, verbose_name='Приватность профиля'), + ), + migrations.AlterField( + model_name='user', + name='refer', + field=models.CharField(choices=[('S', 'Органично'), ('B', 'Привлечен')], default='S', max_length=1, null=True, verbose_name='Источник'), + ), + migrations.AlterField( + model_name='user', + name='refer_source', + field=models.CharField(blank=True, default='', max_length=255, verbose_name='Источник пользователя'), + ), + migrations.AlterField( + model_name='user', + name='reg_status', + field=models.CharField(choices=[('1', 'Пароль'), ('2', 'О себе'), ('3', 'Фото'), ('4', 'Закончена')], default='1', max_length=1, verbose_name='Статус регистрации'), + ), + migrations.AlterField( + model_name='user', + name='skype', + field=models.CharField(blank=True, default='', max_length=300), + ), + migrations.AlterField( + model_name='user', + name='status', + field=models.CharField(choices=[('ON', 'on-line'), ('OFF', 'off-line')], default='ON', max_length=9), + ), + migrations.AlterField( + model_name='user', + name='token', + field=models.CharField(blank=True, default='', max_length=255), + ), + migrations.AlterField( + model_name='user', + name='unique_role', + field=models.CharField(blank=True, default='', max_length=255, verbose_name='Уникальная роль'), + ), + migrations.AlterField( + model_name='user', + name='vk', + field=models.CharField(blank=True, default='', max_length=255), + ), + migrations.AddField( + model_name='usersync', + name='user', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Синхронизируемый'), + ), + ] diff --git a/access/migrations/0060_auto_20160815_1855.py b/access/migrations/0060_auto_20160815_1855.py old mode 100755 new mode 100644 index c0d42b7..d48d603 --- a/access/migrations/0060_auto_20160815_1855.py +++ b/access/migrations/0060_auto_20160815_1855.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.3 on 2016-08-15 18:55 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0059_auto_20160815_1853'), - ] - - operations = [ - migrations.AddField( - model_name='usersync', - name='data', - field=models.TextField(blank=True, default='', verbose_name='Сырые данные'), - ), - migrations.AlterField( - model_name='user', - name='delay_date', - field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 8, 15, 18, 55, 46, 279309), null=True, verbose_name='Задержка до. Не включая этот день.'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.3 on 2016-08-15 18:55 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0059_auto_20160815_1853'), + ] + + operations = [ + migrations.AddField( + model_name='usersync', + name='data', + field=models.TextField(blank=True, default='', verbose_name='Сырые данные'), + ), + migrations.AlterField( + model_name='user', + name='delay_date', + field=models.DateTimeField(blank=True, default=datetime.datetime(2016, 8, 15, 18, 55, 46, 279309), null=True, verbose_name='Задержка до. Не включая этот день.'), + ), + ] diff --git a/access/migrations/__init__.py b/access/migrations/__init__.py old mode 100755 new mode 100644 diff --git a/access/models.py b/access/models.py old mode 100755 new mode 100644 diff --git a/access/out_api.py b/access/out_api.py old mode 100755 new mode 100644 index e434316..1aef786 --- a/access/out_api.py +++ b/access/out_api.py @@ -1,448 +1,448 @@ -# coding=utf-8 -import datetime - -from lms.decors import out_api_decor, api_decor -from access.models import TrafSource, User, TrafHistory # , UserSync -from lms.regex import check_email -from management.letters import sent_registration -from finance.models import Price, Bill -from lms.tools import out_date_format -import hashlib -from django.contrib import auth -from lms.settings import SECRET_KEY, SUPERVISOR, MANAGER -from django.http import Http404 - - -@api_decor(without_auth=False) -def set_in_user(request, context): - # Наша установка - data = None - context['code'] = '0' - context['response'] = '' - if request.user and request.user.is_authenticated() and request.user.is_admin: - if request.method: - if request.method == 'POST': - data = request.POST - elif request.method == 'GET': - data = request.GET - else: - raise Http404 - - 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. ' \ - u'USER - user email (required) / ' \ - u'SERVICE - service token / ' \ - u'GIFT - will set bill in a payed status / ' \ - u'PRICE - set self price to the service' - return context - - service = None - if data.get('SERVICE'): - try: - service = Price.objects.get(key=data.get('SERVICE')) - except Price.DoesNotExist: - context['response'] = u'SERVICE NOT FOUND' - return context - - if data.get('USER') and check_email(data.get('USER')): - result, user = self_create_user(data.get('USER'), sent_letter=True) - context['response'] = 'USER CREATED.' if result else 'USER ALREADY EXISTS.' - - elif not check_email(data.get('USER')): - context['response'] = 'USER EMAIL IS NOT VALID' - - if service and user: - bill, created = Bill.objects.get_or_create(service=service, - gift=bool(data.get('GIFT')), - user=user, - status='F' if data.get('GIFT') else 'W', - manager=User.objects.get(email=MANAGER), - price=data['PRICE'] if data.get('PRICE') else service.cost) - if created: - if data.get('GIFT'): - context['response'] += ' ACCESS OPENED. IT IS A GIFT.' - else: - context['response'] += ' THIS OFFER SENT TO THE USER. THE SERVICE PRICE: %s' % str(bill.price) - - else: - context['response'] += ' BILL ALREADY EXISTS id:%s' % str(bill.id) - - return context - - -def self_check_token(token): - try: - source = TrafSource.objects.get(on=True, token=token) - except TrafSource.DoesNotExist: - return [False, None] - else: - return [True, source] - - -def self_check_user_exists(email): - email = email.lower() - try: - user = User.objects.get(email=email) - except User.DoesNotExist: - return [False, None] - else: - return [True, user] - - -def self_create_user(email, phone=None, sent_letter=True): - email = email.lower() - try: - user = User.objects.get(email=email) - except User.DoesNotExist: - user = User.objects.create_user(email=email, sent_letter=sent_letter) - user.reg_status = '1' - user.refer = 'B' - user.is_active = False - if phone: - user.phone = phone - user.save() - return [True, user] - - else: - return [False, user] - - -def self_create_bill(user, service_key, uid=None): - # Создание счета для пользователя по ключу услуги - description = u'' - bill = None - result = False - try: - price = Price.objects.get(key=service_key) - except Price.DoesNotExist: - description = u'Счет по ключу не найден' - else: - bill, c = Bill.objects.get_or_create(user=user, manager=User.objects.get(email=SUPERVISOR), service=price) - - if bill.status == 'F': - description = u'Счет для данного пользователя уже был создан {0}'.format( - out_date_format(bill.finish_date, no_time=True)) - result = False - else: - result = True - description = u'Счет успешно создан. Приятного обучения' - if bill.status in ['C', 'H']: - bill.status = 'P' - bill.status_changed = datetime.datetime.now() - bill.save() - - if uid: - bill.admitad_uid = uid - bill.save() - - return [result, description, bill] - - -def code_dict(d): - # Преобразование словаря для передачи по HTTP - return u'||'.join(list([u'{0}|{1}'.format(key, value) for key, value in d.items()])) - - -def decode_dict(s): - # Расшифровка словаря из строки, переданого по HTTP - result = {} - for one in s.split(u'||'): - __tmp = one.split(u'|') - result[__tmp[0]] = __tmp[1] - return result - - -def get_sync_data(user): - # Синхронизировать пользователя с остальными LMS - # Отправить в LMS измнениея по пользователю или нового пользователя - # POST['user'] = {} # Поля с полной информацией пользователя - _data = {} - _keys = [] - exclude = ['id', 'customer', 'deactivate', 'delay', 'delay_description', 'delay_date', 'changed_email', 'status', - 'last_time', 'date_joined', 'avatar', 'last_login', 'activate_time', 'in_avatar'] - - for key in user._meta.local_concrete_fields: - if key.name not in exclude: - _tmp = key.value_to_string(user) - if _tmp: - _keys.append(key.name) - _data[key.name] = _tmp - - _tmp = code_dict(_data) - return {'data': _tmp, - 'hash': hashlib.md5(_tmp.encode('utf-8')).hexdigest()} - - -''' -def sent_sync_user(user): - data = get_sync_data(user) - data['secret_key'] = SECRET_KEY - data['source'] = DOMAIN - ## Если провал на одном из этапов - пропустить синхронизацию этого пользователя - # Авторизация на сервисе под системным пользователем - result = 0 - for HOST in REL_LMS: - __tmp = HOST['protocol'] + HOST['url'] - if __tmp != DOMAIN: - log = UserSync.objects.create(user=user, source=DOMAIN, dist=__tmp, data=str(data)) - _request = requests.post(__tmp + 'access/sync_user/', data=data) - if _request.status_code == 200: - _tmp = ast.literal_eval(_request.text) - if _tmp['code'] == '1': - result += 1 - log.good_sync() - else: - log.fail_sync() - else: - log.fail_sync() - - return result == len(REL_LMS)-1 -''' - - -@out_api_decor(without_auth=True, method='POST', need_keys=['email', 'password', 'secret_key'], check_request=True) -def service_auth(request, context): - # Удаленная авторизация для внутренних процессов - # Авторизация - if request.POST['secret_key'] == SECRET_KEY: - email = request.POST['email'].lower() - user = auth.authenticate(email=email, password=request.POST.get('password')) - - if user is not None: - context['code'] = '1' - context['response'] = u'AUTH_SUCCESS' - auth.login(request, user) - - elif user is None: - context['response'] = u'По введенным данным пользователь не найден' - context['code'] = '0' - - else: - context['response'] = u"Не верные данные. Повторите попытку" - context['code'] = '0' - else: - context['response'] = u'AUTH SUCCESS' - context['code'] = '0' - return context - - -''' -@out_api_decor(without_auth=True, method='POST', need_keys=['secret_key', 'data', 'hash', 'source'], check_request=True) -def sync_user(request, context): - if request.POST['secret_key'] == SECRET_KEY: - - if hashlib.md5(request.POST['data'].encode('utf-8')).hexdigest() != request.POST['hash']: - context['code'] = '0' - context['data'] = '' - context['response'] = u'Не сходится хеш данных' - return context - - data = decode_dict(request.POST['data']) - - # Получение пользователя для вставки - try: - user = User.objects.get(email=data['email']) - except User.DoesNotExist: - # Создать пользователя - user = User.objects.create(email=data['email']) - log = UserSync.objects.create(user=user, source=request.POST['source'], dist=DOMAIN, data=str(request.POST['data'])) - save = False - if 'refer' in data and user.refer != data['refer']: - user.refer = data['refer'] - save = True - - if 'refer_source' in data and user.refer_source != data['refer_source']: - user.refer_source = data['refer_source'] - save = True - - if 'private' in data and user.private != data['private']: - user.private = data['private'] - save = True - - if 'interactive_key' in data and user.interactive_key != data['interactive_key']: - user.interactive_key = data['interactive_key'] - save = True - - if 'email' in data and user.email != data['email']: - user.email = data['email'] - save = True - - if 'phone' in data and user.phone != data['phone']: - user.phone = data['phone'] - save = True - - if 'back_phone' in data and user.back_phone != data['back_phone']: - user.back_phone = data['back_phone'] - save = True - - if 'in_role' in data and user.in_role != data['in_role']: - user.in_role = data['in_role'] - save = True - - if 'unique_role' in data and user.unique_role != data['unique_role']: - user.unique_role = data['unique_role'] - save = True - - if 'city' in data and user.city != data['city']: - user.city = data['city'] - save = True - - if 'b_day' in data and user.b_day != data['b_day']: - user.b_day = data['b_day'] - save = True - - if 'token' in data and user.token != data['token']: - user.token = data['token'] - save = True - - if 'reg_status' in data and user.reg_status != data['reg_status']: - user.reg_status = data['reg_status'] - save = True - - if 'is_active' in data and user.is_active != data['is_active']: - user.is_active = data['is_active'] - save = True - - if 'is_admin' in data and user.is_admin != data['is_admin']: - user.is_admin = data['is_admin'] - save = True - - if 'is_staff' in data and user.is_staff != data['is_staff']: - user.is_staff = data['is_staff'] - save = True - - if 'fname' in data and user.fname != data['fname']: - user.fname = data['fname'] - save = True - - if 'name' in data and user.name != data['name']: - user.name = data['name'] - save = True - - if 'oname' in data and user.oname != data['oname']: - user.oname = data['oname'] - save = True - - if 'skype' in data and user.skype != data['skype']: - user.skype = data['skype'] - save = True - - if 'facebook' in data and user.facebook != data['facebook']: - user.facebook = data['facebook'] - save = True - - if 'vk' in data and user.vk != data['vk']: - user.vk = data['vk'] - save = True - - if 'linkedin' in data and user.linkedin != data['linkedin']: - user.linkedin = data['linkedin'] - save = True - - if 'odnoklassniki' in data and user.odnoklassniki != data['odnoklassniki']: - user.odnoklassniki = data['odnoklassniki'] - save = True - - if 'password' in data and user.password != data['password']: - user.password = data['password'] - save = True - - if save: - user.save() - log.good_sync() - context['code'] = '1' - else: - log.fail_sync() - - else: - raise Http404 - return context -''' - - -@out_api_decor(without_auth=True, need_keys=['token', 'email'], method='POST', check_request=True) -def create_user(request, context): - # Создание пользователя - # TODO: Политика использования токена - res = False - result, source = self_check_token(request.POST['token']) - if not result: - context['code'] = '0' - description = u'Не найден активный источник' - context['response'] = description - return context - - result, user = self_check_user_exists(request.POST['email']) - if result: - if user.is_active and user.reg_status == '4': - context['code'] = '0' - description = u'Пользователь уже существует и активен' - context['response'] = description - else: - context['code'] = '1' - res = True - description = u'Пользователь уже существует. Отправлено повторное письмо активации' - context['response'] = description - sent_registration(user, title=u'Повторное письмо активации') - return context - else: - result, user = self_create_user(request.POST['email'], - phone=request.POST['phone'] if request.POST.get('phone') else None) - context['code'] = '1' - res = True - description = u'Пользователь создан. На указанный email отправлено письмо активации' - context['response'] = description - - ref_history = TrafHistory.objects.create(action='C', source=source, token=request.POST['token'], data=request.POST, - result_description=description, result=res) - user.traf_source = ref_history - user.save() - return context - - -@out_api_decor(without_auth=True, check_request=True, need_keys=['token', 'service', 'email'], method='POST') -def create_bill(request, context): - # TODO: Политика использования токена - result, source = self_check_token(request.POST['token']) - if not result: - context['code'] = '0' - context['response'] = u'Не найден активный источник' - return context - - result, user = self_check_user_exists(request.POST['email']) - if result: - if not user.is_active or user.reg_status != '4': - sent_registration(user, title=u'Повторное письмо активации') - if request.POST.get('phone') and user.phone != request.POST.get('phone'): - user.phone = request.POST['phone'] - user.save() - else: - result, user = self_create_user(request.POST['email'], - phone=request.POST['phone'] if request.POST.get('phone') else None) - - result, description, bill = self_create_bill(user, request.POST['service'], - request.POST['uid'] if request.POST.get('uid') else None) - context['code'] = '1' if result else '0' - context['response'] = description - context['data'] = bill.get_face() - 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) - bill.traf_source = rel_source - bill.save() - return context - - -@out_api_decor(without_auth=True, need_keys=['token', 'data'], method='POST', check_request=True) -def set_lendos_data(request, context): - # Создание пользователя - res = False - result, source = self_check_token(request.POST['token']) - if not result: - context['code'] = '0' - description = u'Не найден активный источник' - context['response'] = description - return context - - TrafHistory.objects.create(action='D', source=source, token=request.POST['token'], data=request.POST['data'], - result_description='Данные из форм', result=res) - return context +# coding=utf-8 +import datetime + +from lms.decors import out_api_decor, api_decor +from access.models import TrafSource, User, TrafHistory # , UserSync +from lms.regex import check_email +from management.letters import sent_registration +from finance.models import Price, Bill +from lms.tools import out_date_format +import hashlib +from django.contrib import auth +from lms.settings import SECRET_KEY, SUPERVISOR, MANAGER +from django.http import Http404 + + +@api_decor(without_auth=False) +def set_in_user(request, context): + # Наша установка + data = None + context['code'] = '0' + context['response'] = '' + if request.user and request.user.is_authenticated() and request.user.is_admin: + if request.method: + if request.method == 'POST': + data = request.POST + elif request.method == 'GET': + data = request.GET + else: + raise Http404 + + 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. ' \ + u'USER - user email (required) / ' \ + u'SERVICE - service token / ' \ + u'GIFT - will set bill in a payed status / ' \ + u'PRICE - set self price to the service' + return context + + service = None + if data.get('SERVICE'): + try: + service = Price.objects.get(key=data.get('SERVICE')) + except Price.DoesNotExist: + context['response'] = u'SERVICE NOT FOUND' + return context + + if data.get('USER') and check_email(data.get('USER')): + result, user = self_create_user(data.get('USER'), sent_letter=True) + context['response'] = 'USER CREATED.' if result else 'USER ALREADY EXISTS.' + + elif not check_email(data.get('USER')): + context['response'] = 'USER EMAIL IS NOT VALID' + + if service and user: + bill, created = Bill.objects.get_or_create(service=service, + gift=bool(data.get('GIFT')), + user=user, + status='F' if data.get('GIFT') else 'W', + manager=User.objects.get(email=MANAGER), + price=data['PRICE'] if data.get('PRICE') else service.cost) + if created: + if data.get('GIFT'): + context['response'] += ' ACCESS OPENED. IT IS A GIFT.' + else: + context['response'] += ' THIS OFFER SENT TO THE USER. THE SERVICE PRICE: %s' % str(bill.price) + + else: + context['response'] += ' BILL ALREADY EXISTS id:%s' % str(bill.id) + + return context + + +def self_check_token(token): + try: + source = TrafSource.objects.get(on=True, token=token) + except TrafSource.DoesNotExist: + return [False, None] + else: + return [True, source] + + +def self_check_user_exists(email): + email = email.lower() + try: + user = User.objects.get(email=email) + except User.DoesNotExist: + return [False, None] + else: + return [True, user] + + +def self_create_user(email, phone=None, sent_letter=True): + email = email.lower() + try: + user = User.objects.get(email=email) + except User.DoesNotExist: + user = User.objects.create_user(email=email, sent_letter=sent_letter) + user.reg_status = '1' + user.refer = 'B' + user.is_active = False + if phone: + user.phone = phone + user.save() + return [True, user] + + else: + return [False, user] + + +def self_create_bill(user, service_key, uid=None): + # Создание счета для пользователя по ключу услуги + description = u'' + bill = None + result = False + try: + price = Price.objects.get(key=service_key) + except Price.DoesNotExist: + description = u'Счет по ключу не найден' + else: + bill, c = Bill.objects.get_or_create(user=user, manager=User.objects.get(email=SUPERVISOR), service=price) + + if bill.status == 'F': + description = u'Счет для данного пользователя уже был создан {0}'.format( + out_date_format(bill.finish_date, no_time=True)) + result = False + else: + result = True + description = u'Счет успешно создан. Приятного обучения' + if bill.status in ['C', 'H']: + bill.status = 'P' + bill.status_changed = datetime.datetime.now() + bill.save() + + if uid: + bill.admitad_uid = uid + bill.save() + + return [result, description, bill] + + +def code_dict(d): + # Преобразование словаря для передачи по HTTP + return u'||'.join(list([u'{0}|{1}'.format(key, value) for key, value in d.items()])) + + +def decode_dict(s): + # Расшифровка словаря из строки, переданого по HTTP + result = {} + for one in s.split(u'||'): + __tmp = one.split(u'|') + result[__tmp[0]] = __tmp[1] + return result + + +def get_sync_data(user): + # Синхронизировать пользователя с остальными LMS + # Отправить в LMS измнениея по пользователю или нового пользователя + # POST['user'] = {} # Поля с полной информацией пользователя + _data = {} + _keys = [] + exclude = ['id', 'customer', 'deactivate', 'delay', 'delay_description', 'delay_date', 'changed_email', 'status', + 'last_time', 'date_joined', 'avatar', 'last_login', 'activate_time', 'in_avatar'] + + for key in user._meta.local_concrete_fields: + if key.name not in exclude: + _tmp = key.value_to_string(user) + if _tmp: + _keys.append(key.name) + _data[key.name] = _tmp + + _tmp = code_dict(_data) + return {'data': _tmp, + 'hash': hashlib.md5(_tmp.encode('utf-8')).hexdigest()} + + +''' +def sent_sync_user(user): + data = get_sync_data(user) + data['secret_key'] = SECRET_KEY + data['source'] = DOMAIN + ## Если провал на одном из этапов - пропустить синхронизацию этого пользователя + # Авторизация на сервисе под системным пользователем + result = 0 + for HOST in REL_LMS: + __tmp = HOST['protocol'] + HOST['url'] + if __tmp != DOMAIN: + log = UserSync.objects.create(user=user, source=DOMAIN, dist=__tmp, data=str(data)) + _request = requests.post(__tmp + 'access/sync_user/', data=data) + if _request.status_code == 200: + _tmp = ast.literal_eval(_request.text) + if _tmp['code'] == '1': + result += 1 + log.good_sync() + else: + log.fail_sync() + else: + log.fail_sync() + + return result == len(REL_LMS)-1 +''' + + +@out_api_decor(without_auth=True, method='POST', need_keys=['email', 'password', 'secret_key'], check_request=True) +def service_auth(request, context): + # Удаленная авторизация для внутренних процессов + # Авторизация + if request.POST['secret_key'] == SECRET_KEY: + email = request.POST['email'].lower() + user = auth.authenticate(email=email, password=request.POST.get('password')) + + if user is not None: + context['code'] = '1' + context['response'] = u'AUTH_SUCCESS' + auth.login(request, user) + + elif user is None: + context['response'] = u'По введенным данным пользователь не найден' + context['code'] = '0' + + else: + context['response'] = u"Не верные данные. Повторите попытку" + context['code'] = '0' + else: + context['response'] = u'AUTH SUCCESS' + context['code'] = '0' + return context + + +''' +@out_api_decor(without_auth=True, method='POST', need_keys=['secret_key', 'data', 'hash', 'source'], check_request=True) +def sync_user(request, context): + if request.POST['secret_key'] == SECRET_KEY: + + if hashlib.md5(request.POST['data'].encode('utf-8')).hexdigest() != request.POST['hash']: + context['code'] = '0' + context['data'] = '' + context['response'] = u'Не сходится хеш данных' + return context + + data = decode_dict(request.POST['data']) + + # Получение пользователя для вставки + try: + user = User.objects.get(email=data['email']) + except User.DoesNotExist: + # Создать пользователя + user = User.objects.create(email=data['email']) + log = UserSync.objects.create(user=user, source=request.POST['source'], dist=DOMAIN, data=str(request.POST['data'])) + save = False + if 'refer' in data and user.refer != data['refer']: + user.refer = data['refer'] + save = True + + if 'refer_source' in data and user.refer_source != data['refer_source']: + user.refer_source = data['refer_source'] + save = True + + if 'private' in data and user.private != data['private']: + user.private = data['private'] + save = True + + if 'interactive_key' in data and user.interactive_key != data['interactive_key']: + user.interactive_key = data['interactive_key'] + save = True + + if 'email' in data and user.email != data['email']: + user.email = data['email'] + save = True + + if 'phone' in data and user.phone != data['phone']: + user.phone = data['phone'] + save = True + + if 'back_phone' in data and user.back_phone != data['back_phone']: + user.back_phone = data['back_phone'] + save = True + + if 'in_role' in data and user.in_role != data['in_role']: + user.in_role = data['in_role'] + save = True + + if 'unique_role' in data and user.unique_role != data['unique_role']: + user.unique_role = data['unique_role'] + save = True + + if 'city' in data and user.city != data['city']: + user.city = data['city'] + save = True + + if 'b_day' in data and user.b_day != data['b_day']: + user.b_day = data['b_day'] + save = True + + if 'token' in data and user.token != data['token']: + user.token = data['token'] + save = True + + if 'reg_status' in data and user.reg_status != data['reg_status']: + user.reg_status = data['reg_status'] + save = True + + if 'is_active' in data and user.is_active != data['is_active']: + user.is_active = data['is_active'] + save = True + + if 'is_admin' in data and user.is_admin != data['is_admin']: + user.is_admin = data['is_admin'] + save = True + + if 'is_staff' in data and user.is_staff != data['is_staff']: + user.is_staff = data['is_staff'] + save = True + + if 'fname' in data and user.fname != data['fname']: + user.fname = data['fname'] + save = True + + if 'name' in data and user.name != data['name']: + user.name = data['name'] + save = True + + if 'oname' in data and user.oname != data['oname']: + user.oname = data['oname'] + save = True + + if 'skype' in data and user.skype != data['skype']: + user.skype = data['skype'] + save = True + + if 'facebook' in data and user.facebook != data['facebook']: + user.facebook = data['facebook'] + save = True + + if 'vk' in data and user.vk != data['vk']: + user.vk = data['vk'] + save = True + + if 'linkedin' in data and user.linkedin != data['linkedin']: + user.linkedin = data['linkedin'] + save = True + + if 'odnoklassniki' in data and user.odnoklassniki != data['odnoklassniki']: + user.odnoklassniki = data['odnoklassniki'] + save = True + + if 'password' in data and user.password != data['password']: + user.password = data['password'] + save = True + + if save: + user.save() + log.good_sync() + context['code'] = '1' + else: + log.fail_sync() + + else: + raise Http404 + return context +''' + + +@out_api_decor(without_auth=True, need_keys=['token', 'email'], method='POST', check_request=True) +def create_user(request, context): + # Создание пользователя + # TODO: Политика использования токена + res = False + result, source = self_check_token(request.POST['token']) + if not result: + context['code'] = '0' + description = u'Не найден активный источник' + context['response'] = description + return context + + result, user = self_check_user_exists(request.POST['email']) + if result: + if user.is_active and user.reg_status == '4': + context['code'] = '0' + description = u'Пользователь уже существует и активен' + context['response'] = description + else: + context['code'] = '1' + res = True + description = u'Пользователь уже существует. Отправлено повторное письмо активации' + context['response'] = description + sent_registration(user, title=u'Повторное письмо активации') + return context + else: + result, user = self_create_user(request.POST['email'], + phone=request.POST['phone'] if request.POST.get('phone') else None) + context['code'] = '1' + res = True + description = u'Пользователь создан. На указанный email отправлено письмо активации' + context['response'] = description + + ref_history = TrafHistory.objects.create(action='C', source=source, token=request.POST['token'], data=request.POST, + result_description=description, result=res) + user.traf_source = ref_history + user.save() + return context + + +@out_api_decor(without_auth=True, check_request=True, need_keys=['token', 'service', 'email'], method='POST') +def create_bill(request, context): + # TODO: Политика использования токена + result, source = self_check_token(request.POST['token']) + if not result: + context['code'] = '0' + context['response'] = u'Не найден активный источник' + return context + + result, user = self_check_user_exists(request.POST['email']) + if result: + if not user.is_active or user.reg_status != '4': + sent_registration(user, title=u'Повторное письмо активации') + if request.POST.get('phone') and user.phone != request.POST.get('phone'): + user.phone = request.POST['phone'] + user.save() + else: + result, user = self_create_user(request.POST['email'], + phone=request.POST['phone'] if request.POST.get('phone') else None) + + result, description, bill = self_create_bill(user, request.POST['service'], + request.POST['uid'] if request.POST.get('uid') else None) + context['code'] = '1' if result else '0' + context['response'] = description + context['data'] = bill.get_face() + 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) + bill.traf_source = rel_source + bill.save() + return context + + +@out_api_decor(without_auth=True, need_keys=['token', 'data'], method='POST', check_request=True) +def set_lendos_data(request, context): + # Создание пользователя + res = False + result, source = self_check_token(request.POST['token']) + if not result: + context['code'] = '0' + description = u'Не найден активный источник' + context['response'] = description + return context + + TrafHistory.objects.create(action='D', source=source, token=request.POST['token'], data=request.POST['data'], + result_description='Данные из форм', result=res) + return context diff --git a/access/tasks.py b/access/tasks.py old mode 100755 new mode 100644 index 117a22b..ed5638d --- a/access/tasks.py +++ b/access/tasks.py @@ -1,40 +1,40 @@ -# coding=utf-8 -from celery.task import periodic_task -from datetime import timedelta, datetime -from access.models import User, TrafSource, TrafTokenHistory - - -@periodic_task(run_every=timedelta(minutes=20)) -def check_prepo_delay(): - # Проверка просроченых задач преподавателя - for res in User.objects.filter(delay_date__lte=datetime.now(), in_role='T'): - res.delay = False - res.delay_description = '' - res.delay_date = None - res.save() - - -@periodic_task(run_every=timedelta(minutes=1)) -def check_online(): - for user in User.objects.filter(status='ON', last_time__lte=datetime.now()-timedelta(minutes=10)): - user.status = 'OFF' - user.save() - - -@periodic_task(run_every=timedelta(hours=1)) -def check_traf_source(): - for source in TrafSource.objects.filter(on=True).exclude(live_time=None): - if source.token and source.token_start + timedelta(hours=source.live_time) < datetime.now(): - source.on = False - TrafTokenHistory.objects.create(token=source.token, source=source, live_time=source.live_time, date_start=source.token_start, date_end=datetime.now()) - source.token = None - source.token_start = None - source.save() - - -#@periodic_task(run_every=timedelta(minutes=1)) -#def sync_users(): -# for user in User.objects.filter(sync=False): -# result = sent_sync_user(user) -# if result: -# user._set_synced() +# coding=utf-8 +from celery.task import periodic_task +from datetime import timedelta, datetime +from access.models import User, TrafSource, TrafTokenHistory + + +@periodic_task(run_every=timedelta(minutes=20)) +def check_prepo_delay(): + # Проверка просроченых задач преподавателя + for res in User.objects.filter(delay_date__lte=datetime.now(), in_role='T'): + res.delay = False + res.delay_description = '' + res.delay_date = None + res.save() + + +@periodic_task(run_every=timedelta(minutes=1)) +def check_online(): + for user in User.objects.filter(status='ON', last_time__lte=datetime.now()-timedelta(minutes=10)): + user.status = 'OFF' + user.save() + + +@periodic_task(run_every=timedelta(hours=1)) +def check_traf_source(): + for source in TrafSource.objects.filter(on=True).exclude(live_time=None): + if source.token and source.token_start + timedelta(hours=source.live_time) < datetime.now(): + source.on = False + TrafTokenHistory.objects.create(token=source.token, source=source, live_time=source.live_time, date_start=source.token_start, date_end=datetime.now()) + source.token = None + source.token_start = None + source.save() + + +#@periodic_task(run_every=timedelta(minutes=1)) +#def sync_users(): +# for user in User.objects.filter(sync=False): +# result = sent_sync_user(user) +# if result: +# user._set_synced() diff --git a/access/teach_urls.py b/access/teach_urls.py old mode 100755 new mode 100644 index d8f83b8..39d23d3 --- a/access/teach_urls.py +++ b/access/teach_urls.py @@ -1,13 +1,13 @@ -from access import teach_views as views -from django.conf.urls import url - -urlpatterns = [ - url(r'profile/$', views.profile), - url(r'homeworks/([0-9]{1,99})$', views.homeworks), - url(r'comments/([0-9]{1,99})$', views.comments), - url(r'exams/([0-9]{1,99})$', views.exams), - url(r'materials/([0-9]{1,99})$', views.materials), - url(r'workshop/homework/([0-9]{1,99})$', views.homework_workshop), - url(r'workshop/exam/([0-9]{1,99})$', views.exam_workshop), - url(r'history/', views.history) +from access import teach_views as views +from django.conf.urls import url + +urlpatterns = [ + url(r'profile/$', views.profile), + url(r'homeworks/([0-9]{1,99})$', views.homeworks), + url(r'comments/([0-9]{1,99})$', views.comments), + url(r'exams/([0-9]{1,99})$', views.exams), + url(r'materials/([0-9]{1,99})$', views.materials), + url(r'workshop/homework/([0-9]{1,99})$', views.homework_workshop), + url(r'workshop/exam/([0-9]{1,99})$', views.exam_workshop), + url(r'history/', views.history) ] \ No newline at end of file diff --git a/access/teach_views.py b/access/teach_views.py old mode 100755 new mode 100644 index e454c24..059e8ee --- a/access/teach_views.py +++ b/access/teach_views.py @@ -1,150 +1,150 @@ -# coding=utf-8 -from django.http import Http404 -from lms.decors import response_decor -from lms.tools import check_role -from courses.models import Course -from journals.models import HomeworkJ, ExamJ, HomeworkTry, ExamTry - - -@response_decor(template='teach_profile.html') -def profile(request): - checker = check_role(request.user, 'T') - if checker['result']: - # Быстрый список активных студентов - all_homeworks = [] - homeworks = {} - exams = {} - - for journal in HomeworkTry.objects.filter(teacher=request.user, f_date=None).exclude(success=True, date=None - ).order_by('date'): - if journal.parent.get_status_flag() not in ['N', 'F']: - title = (journal.material.course.get_title(), - journal.material.get_title(), - journal.material.id, - journal.material.theme.sort, - journal.material.get_icon()) - if not title in homeworks: homeworks[title] = [] - homeworks[title].append(journal) - - for journal in HomeworkTry.objects.filter(teacher=request.user, f_date=None).exclude(success=True, date=None - ).order_by('date'): - if journal.parent.get_status_flag() not in ['N', 'F']: - all_homeworks.append(journal) - - for journal in ExamTry.objects.filter(teacher=request.user, f_date=None).exclude(success=True, date=None - ).order_by('date'): - - if journal.parent.get_status_flag() not in ['N', 'F']: - title = (journal.material.course.get_title(), - journal.material.get_title(), - journal.material.id) - if not title in exams: exams[title] = [] - exams[title].append(journal) - - return { - 'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id'), - 'active_themes': homeworks, - 'active_exams': exams, - 'all_homeworks': all_homeworks, - } - else: - return checker - - -@response_decor(template='teacher_homeworks.html') -def homeworks(request, course): - # Список домашних заданий по курсу на проверку - checker = check_role(request.user, 'T') - if checker['result']: - return {'T': 'H', - 'course': Course.objects.get(id=course), - 'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id'), - 'homeworks': HomeworkTry.objects.filter(teacher=request.user).order_by( - '-date') - } - else: - return checker - - -@response_decor(template='teacher_comments.html') -def comments(request, course): - # Комментари для преподавателя - checker = check_role(request.user, 'T') - if checker['result']: - return {'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id')} - else: - return checker - - -@response_decor(template='teacher_materials.html') -def materials(request, course): - # Материалы курсов - checker = check_role(request.user, 'T') - if checker['result']: - return {'T': 'M', - 'courses': Course.objects.filter(teachers__in=[request.user]), - 'course': Course.objects.get(id=course)} - else: - return checker - - -@response_decor(template='teacher_exams.html') -def exams(request, exam): - checker = check_role(request.user, 'T') - if checker['result']: - return {'T': 'E', - 'course': Course.objects.get(id=exam), - 'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id'), - 'exams': ExamTry.objects.filter(teacher=request.user).order_by('-date')} - else: - return checker - - -@response_decor(template='workshop_homework.html') -def homework_workshop(request, homework): - if request.user.in_role in ['T', 'S2', 'A']: - try: - journal = HomeworkJ.objects.get(id=homework) - except HomeworkJ.DoesNotExist: - raise Http404 - else: - if not journal.teacher or journal.teacher == request.user or request.user.in_role in ['S2', 'A']: - return { - 'homework': journal.get_face(request.user), - 'student': journal.student, - 'theme': journal.material.theme - } - else: - raise Http404 - else: - raise Http404 - - -@response_decor(template='workshop_exam.html') -def exam_workshop(request, exam): - if request.user.in_role in ['T', 'S2', 'A']: - try: - journal = ExamJ.objects.get(id=exam) - except ExamJ.DoesNotExist: - raise Http404 - else: - if not journal.teacher or journal.teacher == request.user or request.user.in_role in ['S2', 'A']: - return { - 'exam': journal.get_face(request.user), - 'student': journal.student, - 'theme': journal.material.theme - } - else: - raise Http404 - else: - raise Http404 - - -@response_decor(template='teacher_history.html') -def history(request): - if request.user.in_role in ['T', 'S2', 'A']: - return {'hw': HomeworkJ.objects.filter(teacher=request.user, success=True).exclude(f_date=None), - 'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id') - } - else: - raise Http404 +# coding=utf-8 +from django.http import Http404 +from lms.decors import response_decor +from lms.tools import check_role +from courses.models import Course +from journals.models import HomeworkJ, ExamJ, HomeworkTry, ExamTry + + +@response_decor(template='teach_profile.html') +def profile(request): + checker = check_role(request.user, 'T') + if checker['result']: + # Быстрый список активных студентов + all_homeworks = [] + homeworks = {} + exams = {} + + for journal in HomeworkTry.objects.filter(teacher=request.user, f_date=None).exclude(success=True, date=None + ).order_by('date'): + if journal.parent.get_status_flag() not in ['N', 'F']: + title = (journal.material.course.get_title(), + journal.material.get_title(), + journal.material.id, + journal.material.theme.sort, + journal.material.get_icon()) + if not title in homeworks: homeworks[title] = [] + homeworks[title].append(journal) + + for journal in HomeworkTry.objects.filter(teacher=request.user, f_date=None).exclude(success=True, date=None + ).order_by('date'): + if journal.parent.get_status_flag() not in ['N', 'F']: + all_homeworks.append(journal) + + for journal in ExamTry.objects.filter(teacher=request.user, f_date=None).exclude(success=True, date=None + ).order_by('date'): + + if journal.parent.get_status_flag() not in ['N', 'F']: + title = (journal.material.course.get_title(), + journal.material.get_title(), + journal.material.id) + if not title in exams: exams[title] = [] + exams[title].append(journal) + + return { + 'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id'), + 'active_themes': homeworks, + 'active_exams': exams, + 'all_homeworks': all_homeworks, + } + else: + return checker + + +@response_decor(template='teacher_homeworks.html') +def homeworks(request, course): + # Список домашних заданий по курсу на проверку + checker = check_role(request.user, 'T') + if checker['result']: + return {'T': 'H', + 'course': Course.objects.get(id=course), + 'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id'), + 'homeworks': HomeworkTry.objects.filter(teacher=request.user).order_by( + '-date') + } + else: + return checker + + +@response_decor(template='teacher_comments.html') +def comments(request, course): + # Комментари для преподавателя + checker = check_role(request.user, 'T') + if checker['result']: + return {'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id')} + else: + return checker + + +@response_decor(template='teacher_materials.html') +def materials(request, course): + # Материалы курсов + checker = check_role(request.user, 'T') + if checker['result']: + return {'T': 'M', + 'courses': Course.objects.filter(teachers__in=[request.user]), + 'course': Course.objects.get(id=course)} + else: + return checker + + +@response_decor(template='teacher_exams.html') +def exams(request, exam): + checker = check_role(request.user, 'T') + if checker['result']: + return {'T': 'E', + 'course': Course.objects.get(id=exam), + 'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id'), + 'exams': ExamTry.objects.filter(teacher=request.user).order_by('-date')} + else: + return checker + + +@response_decor(template='workshop_homework.html') +def homework_workshop(request, homework): + if request.user.in_role in ['T', 'S2', 'A']: + try: + journal = HomeworkJ.objects.get(id=homework) + except HomeworkJ.DoesNotExist: + raise Http404 + else: + if not journal.teacher or journal.teacher == request.user or request.user.in_role in ['S2', 'A']: + return { + 'homework': journal.get_face(request.user), + 'student': journal.student, + 'theme': journal.material.theme + } + else: + raise Http404 + else: + raise Http404 + + +@response_decor(template='workshop_exam.html') +def exam_workshop(request, exam): + if request.user.in_role in ['T', 'S2', 'A']: + try: + journal = ExamJ.objects.get(id=exam) + except ExamJ.DoesNotExist: + raise Http404 + else: + if not journal.teacher or journal.teacher == request.user or request.user.in_role in ['S2', 'A']: + return { + 'exam': journal.get_face(request.user), + 'student': journal.student, + 'theme': journal.material.theme + } + else: + raise Http404 + else: + raise Http404 + + +@response_decor(template='teacher_history.html') +def history(request): + if request.user.in_role in ['T', 'S2', 'A']: + return {'hw': HomeworkJ.objects.filter(teacher=request.user, success=True).exclude(f_date=None), + 'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id') + } + else: + raise Http404 diff --git a/access/templatetags/__init__.py b/access/templatetags/__init__.py old mode 100755 new mode 100644 index a1208ca..7914b31 --- a/access/templatetags/__init__.py +++ b/access/templatetags/__init__.py @@ -1 +1 @@ -__author__ = 'baryshnikov' +__author__ = 'baryshnikov' diff --git a/access/templatetags/course_filter.py b/access/templatetags/course_filter.py old mode 100755 new mode 100644 index c4ab09e..42267a1 --- a/access/templatetags/course_filter.py +++ b/access/templatetags/course_filter.py @@ -1,116 +1,116 @@ -from django import template -from access.models import User -from courses.models import CourseTheme, Lesson, Exam, Course, Homework -from journals.models import ExamJ, HomeworkJ -from finance.tools import system_check_bill - -register = template.Library() - - -def getUserfactory(user): - if user: - try: - user = User.objects.get(id=user) - except User.DoesNotExist: - user = None - return user - - -@register.filter -def get_theme_color(theme, student): - __theme = CourseTheme.objects.get(id=theme) - return __theme.get_color(getUserfactory(student)) - - -@register.filter -def get_next_lesson_button(lesson, student): - return Lesson.objects.get(id=lesson).get_next_button(getUserfactory(student)) - - -@register.filter -def get_homework_status_html(theme, student): - __theme = CourseTheme.objects.get(id=theme) - return __theme.homework_status_html(getUserfactory(student)) - - -@register.filter -def get_homework_status(theme, student): - __course = CourseTheme.objects.get(id=theme) - return __course.homework_status(getUserfactory(student)) - - -@register.filter -def get_theme_description(theme, student): - __theme = CourseTheme.objects.get(id=theme) - return __theme.get_description(getUserfactory(student)) - - -@register.filter -def get_lesson_status_name(lesson, student): - __lesson = Lesson.objects.get(id=lesson) - return __lesson.get_status_name(getUserfactory(student)) - - -@register.filter -def get_lesson_status(lesson, student): - __lesson = Lesson.objects.get(id=lesson) - return __lesson.get_status(getUserfactory(student)) - - -@register.filter -def get_theme_status(lesson, student): - __theme = CourseTheme.objects.get(id=lesson) - return __theme.get_status(getUserfactory(student)) - - -@register.filter -def get_exam_color(exam, student): - __exam = Exam.objects.get(id=exam) - return __exam.get_color(getUserfactory(student)) - - -@register.filter -def get_progress_persent(course, student): - __course = Course.objects.get(id=course) - return __course.progress_persent(getUserfactory(student)) - - -@register.filter -def get_exam_status(course, student): - __course = Course.objects.get(id=course) - return __course.get_exam_status(getUserfactory(student)) - - -@register.filter -def check_bill(course, user): - return system_check_bill(Course.objects.get(id=course), getUserfactory(user)) - - -@register.filter -def get_actual_lesson_id(theme, user): - return CourseTheme.objects.get(id=theme).get_actual_lesson_id(user) - - -@register.filter -def get_button(theme, user): - return CourseTheme.objects.get(id=theme).get_button(getUserfactory(user)) - - -@register.filter -def get_exam_status_html(course, user): - return Course.objects.get(id=course).exam_status_html(user) - - -@register.filter -def get_exam_button(course, user): - return Exam.objects.get(course=Course.objects.get(id=course)).get_button(getUserfactory(user)) - - -@register.filter -def get_actual_lesson_id(theme, user): - return CourseTheme.objects.get(id=theme).get_actual_lesson_id(user) - - -@register.filter -def get_student_homework_comments(theme, user): - return HomeworkJ.objects.filter(student=getUserfactory(user), homework=Homework.objects.get(id=CourseTheme.objects.get(id=theme))).exclude(status='F') +from django import template +from access.models import User +from courses.models import CourseTheme, Lesson, Exam, Course, Homework +from journals.models import ExamJ, HomeworkJ +from finance.tools import system_check_bill + +register = template.Library() + + +def getUserfactory(user): + if user: + try: + user = User.objects.get(id=user) + except User.DoesNotExist: + user = None + return user + + +@register.filter +def get_theme_color(theme, student): + __theme = CourseTheme.objects.get(id=theme) + return __theme.get_color(getUserfactory(student)) + + +@register.filter +def get_next_lesson_button(lesson, student): + return Lesson.objects.get(id=lesson).get_next_button(getUserfactory(student)) + + +@register.filter +def get_homework_status_html(theme, student): + __theme = CourseTheme.objects.get(id=theme) + return __theme.homework_status_html(getUserfactory(student)) + + +@register.filter +def get_homework_status(theme, student): + __course = CourseTheme.objects.get(id=theme) + return __course.homework_status(getUserfactory(student)) + + +@register.filter +def get_theme_description(theme, student): + __theme = CourseTheme.objects.get(id=theme) + return __theme.get_description(getUserfactory(student)) + + +@register.filter +def get_lesson_status_name(lesson, student): + __lesson = Lesson.objects.get(id=lesson) + return __lesson.get_status_name(getUserfactory(student)) + + +@register.filter +def get_lesson_status(lesson, student): + __lesson = Lesson.objects.get(id=lesson) + return __lesson.get_status(getUserfactory(student)) + + +@register.filter +def get_theme_status(lesson, student): + __theme = CourseTheme.objects.get(id=lesson) + return __theme.get_status(getUserfactory(student)) + + +@register.filter +def get_exam_color(exam, student): + __exam = Exam.objects.get(id=exam) + return __exam.get_color(getUserfactory(student)) + + +@register.filter +def get_progress_persent(course, student): + __course = Course.objects.get(id=course) + return __course.progress_persent(getUserfactory(student)) + + +@register.filter +def get_exam_status(course, student): + __course = Course.objects.get(id=course) + return __course.get_exam_status(getUserfactory(student)) + + +@register.filter +def check_bill(course, user): + return system_check_bill(Course.objects.get(id=course), getUserfactory(user)) + + +@register.filter +def get_actual_lesson_id(theme, user): + return CourseTheme.objects.get(id=theme).get_actual_lesson_id(user) + + +@register.filter +def get_button(theme, user): + return CourseTheme.objects.get(id=theme).get_button(getUserfactory(user)) + + +@register.filter +def get_exam_status_html(course, user): + return Course.objects.get(id=course).exam_status_html(user) + + +@register.filter +def get_exam_button(course, user): + return Exam.objects.get(course=Course.objects.get(id=course)).get_button(getUserfactory(user)) + + +@register.filter +def get_actual_lesson_id(theme, user): + return CourseTheme.objects.get(id=theme).get_actual_lesson_id(user) + + +@register.filter +def get_student_homework_comments(theme, user): + return HomeworkJ.objects.filter(student=getUserfactory(user), homework=Homework.objects.get(id=CourseTheme.objects.get(id=theme))).exclude(status='F') diff --git a/access/urls.py b/access/urls.py old mode 100755 new mode 100644 index 3f72a60..7569312 --- a/access/urls.py +++ b/access/urls.py @@ -1,43 +1,43 @@ -from access import views -from access import api -from access import out_api -from django.conf.urls import url - -urlpatterns = [ - url(r'accept_forgot/$', views.accept_forgot), - url(r'activate_email/$', views.activate_email), - url(r'all_actions/$', views.all_actions), - url(r'get_subscription_data/$', api.get_subscription_data), - url(r'send_subscription_data/$', api.send_subscription_data), - url(r'forgot/$', api.forgot), - url(r'fast_auth/$', views.fast_auth), - url(r'auth/', api.auth_in), - url(r'auth_from_admin/', api.auth_from_admin), - url(r'activate/$', views.activate), - url(r'profile/$', views.profile), - url(r'profile/(?P.*)/$', views.profile_view), - url(r'registration/$', api.registration), - url(r'reg_step/$', api.reg_step), - url(r'logout/$', views.logout_in), - url(r'come_off/$', views.come_off), - url(r'check_auth/$', api.check_auth), - url(r'get_settings_data/$', api.get_settings_data), - url(r'send_settings_data/$', api.send_settings_data), - url(r'get_user_role/$', api.get_user_role), - url(r'new_role/$', api.new_role), - url(r'change_password/$', api.change_password), - url(r'by_error/$', views.by_error), - url(r'auth_error/$', views.auth_error), - url(r'access_error/$', views.access_error), - url(r'check_active/$', api.check_active), - url(r'resent_active_email$', api.resent_active_email), - url(r'change_private/$', api.change_private), - url(r'create_user/$', out_api.create_user), - url(r'create_bill/$', out_api.create_bill), - url(r'set_lendos_data/$', out_api.set_lendos_data), - #url(r'sync_user/$', out_api.sync_user), - url(r'search_user/$', api.search_user), - url(r'find_user/$', api.find_user), - url(r'service_auth/$', out_api.service_auth), - url(r'set_in_user/$', out_api.set_in_user) -] +from access import views +from access import api +from access import out_api +from django.conf.urls import url + +urlpatterns = [ + url(r'accept_forgot/$', views.accept_forgot), + url(r'activate_email/$', views.activate_email), + url(r'all_actions/$', views.all_actions), + url(r'get_subscription_data/$', api.get_subscription_data), + url(r'send_subscription_data/$', api.send_subscription_data), + url(r'forgot/$', api.forgot), + url(r'fast_auth/$', views.fast_auth), + url(r'auth/', api.auth_in), + url(r'auth_from_admin/', api.auth_from_admin), + url(r'activate/$', views.activate), + url(r'profile/$', views.profile), + url(r'profile/(?P.*)/$', views.profile_view), + url(r'registration/$', api.registration), + url(r'reg_step/$', api.reg_step), + url(r'logout/$', views.logout_in), + url(r'come_off/$', views.come_off), + url(r'check_auth/$', api.check_auth), + url(r'get_settings_data/$', api.get_settings_data), + url(r'send_settings_data/$', api.send_settings_data), + url(r'get_user_role/$', api.get_user_role), + url(r'new_role/$', api.new_role), + url(r'change_password/$', api.change_password), + url(r'by_error/$', views.by_error), + url(r'auth_error/$', views.auth_error), + url(r'access_error/$', views.access_error), + url(r'check_active/$', api.check_active), + url(r'resent_active_email$', api.resent_active_email), + url(r'change_private/$', api.change_private), + url(r'create_user/$', out_api.create_user), + url(r'create_bill/$', out_api.create_bill), + url(r'set_lendos_data/$', out_api.set_lendos_data), + #url(r'sync_user/$', out_api.sync_user), + url(r'search_user/$', api.search_user), + url(r'find_user/$', api.find_user), + url(r'service_auth/$', out_api.service_auth), + url(r'set_in_user/$', out_api.set_in_user) +] diff --git a/access/views.py b/access/views.py old mode 100755 new mode 100644 index 012a1ee..a4c48c0 --- a/access/views.py +++ b/access/views.py @@ -1,234 +1,234 @@ -# -*- coding: utf-8 -*- -from django.contrib import auth -from django.contrib.auth import logout -from django.http import Http404 -from django.shortcuts import redirect -from access.models import User, ActionJ, Document -from lms.tools import random_string, condition_factory, check_role -from lms.decors import response_decor -from courses.tools import get_user_achievements, get_user_diploms, get_user_completed_courses_count, \ - get_user_skills_size_count, get_user_achievements_count -from courses.tools import get_user_skills -from journals.models import TeacherJ -from management.letters import sent_forgot_password -from finance.models import Bill -from management.models import Comment -from library.models import Article - - -@response_decor(template='index.html', without_auth=True) -def activate_email(request): - # Активация пользователя через почту - if request.GET.get('token') and request.GET.get('email'): - try: - email = request.GET['email'].lower() - user = User.objects.get(email=email, token=request.GET['token']) - except User.DoesNotExist: - return {'redirect': '/404/?error=Ссылка устарела. Дождитесь письма с актуальной ссылкой'} - else: - user.email = user.changed_email - user.save() - user.change_token() - return {'DIALOG': 'activate_email'} - else: - # TODO: Отправлять пользователя в тупиковую страницу, а не на 404 - raise Http404 - - -@response_decor(template='index.html', without_auth=True) -def accept_forgot(request): - # Подтверждение почты при восстановлении - if request.GET.get('token') and request.GET.get('email'): - try: - email = request.GET['email'].lower() - user = User.objects.get(email=email, token=request.GET['token']) - except User.DoesNotExist: - return {'redirect': '/404/?error=Ссылка устарела. Дождитесь письма с актуальной ссылкой'} - else: - pas = random_string(length=6).upper() - user.set_password(pas) - user.change_token() - sent_forgot_password(user, pas) - return {'DIALOG': 'accept_forgot'} - else: - # TODO: Отправлять пользователя в тупиковую страницу, а не на 404 - raise Http404 - - -@response_decor(template='activation.html', without_auth=True) -def activate(request): - # Страница активации пользователя - condition = condition_factory([ - {'condition': request.GET.get('email'), 'error': u'Поле пользователя передано не корректно'}, - {'condition': request.GET.get('token'), 'error': u'Поле токена передано не корректно'}, - {'condition': request.GET.get('step'), 'error': u'Не верно передан этап'} - ]) - if condition['code'] == '1': - try: - email = request.GET['email'].lower() - user = User.objects.get(email=email, token=request.GET['token']) - except User.DoesNotExist: - return {'redirect': '/404/?error=Ссылка устарела. Дождитесь письма с актуальной ссылкой'} - else: - if not user.is_active or user.reg_status != '4': - user.save() - return {'step': user.reg_status, 'token': request.GET['token'], 'email': email, - 'phone': user.phone if user.phone else None} - - else: - raise Http404 - else: - raise Http404 - - -@response_decor(template='profile.html', without_auth=True) -def profile(request): - if request.user.is_authenticated(): - checker = check_role(request.user, 'U') - if checker['result']: - courses = [i.get_head_face() for i in - TeacherJ.objects.filter(student=request.user, course__public=True).exclude(progress=0)] - return {'in_user': None, - 'courses': courses, - 'achievements': get_user_achievements(request.user), - 'skills': get_user_skills(request.user), - 'diploms': get_user_diploms(request.user), - 'completed_courses': get_user_completed_courses_count(request.user), - 'got_achievements': get_user_achievements_count(request.user), - 'skills_size': get_user_skills_size_count(request.user), - 'documents': Document.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)], - 'forum_ask': Comment.objects.filter(owner=request.user, status='Q'), - 'forum_ans': { - 'all': - Comment.objects.filter(owner=request.user, status='Q2'), - 'best': - Comment.objects.filter(owner=request.user, status='Q2', best=True).count() - } - } - else: - return checker - else: - return {'redirect': '/access/auth_error/'} - - -@response_decor(template='profile.html', without_auth=True) -def profile_view(request, view_id): - if view_id: - try: - user = User.objects.get(interactive_key=view_id) - except User.DoesNotExist: - raise Http404 - else: - if request.user.is_authenticated() and request.user.is_admin: - go = True - else: - go = False - if user.private == 'A' or user.private == 'L': - go = True - elif user.private == 'U': - if request.user.is_authenticated() and request.user.is_active: - go = True - elif user.private == 'B': - if request.user == user: - go = True - - if go: - courses = [i.get_head_face() for i in TeacherJ.objects.filter(student=user, course__public=True).exclude(progress=0)] - return {'in_user': user, - 'courses': courses, - 'achievements': get_user_achievements(user), - 'skills': get_user_skills(user), - 'diploms': get_user_diploms(user), - 'articles': [i.get_face(user) for i in Article.objects.filter(views__id=user.id)], - 'completed_courses': get_user_completed_courses_count(user), - 'got_achievements': get_user_achievements_count(user), - 'skills_size': get_user_skills_size_count(user), - 'forum_ask': Comment.objects.filter(owner=user, status='Q'), - 'forum_ans': { - 'all': - Comment.objects.filter(owner=user, status='Q2'), - 'best': - Comment.objects.filter(owner=user, status='Q2', best=True).count() - }} - else: - raise Http404 - - -def logout_in(request): - logout(request) - return redirect('/') - - -@response_decor(template='index.html') -def come_off(request): - # Деактивация подписок - context = {'code': 'error'} - condition = condition_factory([ - {'condition': request.GET.get('token'), 'error': u'В запросе не обнаружен токен'}, - {'condition': request.GET.get('right'), 'error': u'В запросе не обнаружено изменяемое право'} - ]) - - if condition['code'] == '1': - try: - user = User.objects.get(token=request.GET['token']) - except User.DoesNotExist: - context['response'] = u'Запрос не обработан' - else: - if user.rights.check_right(user, request.GET['right']): - if request.GET['right'] == 'feedback_follow': - user.rights.set_right('feedback_follow', False) - context['response'] = u'Подписка деактивирована' - context['code'] = u'info' - elif request.GET['right'] == 'news_follow': - user.rights.set_right('news_follow', False) - context['response'] = u'Подписка деактивирована' - context['code'] = u'info' - else: - context[ - 'response'] = u'Вы указали право, на которое не распространяется функция быстрого отключения' - else: - context['response'] = u'Вы уже описаны от данной рассылки' - else: - context['response'] = condition['response'] - context['code'] = '0' - - return {'response': context['response'], 'code': context['code']} - - -@response_decor(template='auth_error.html', without_auth=True) -def auth_error(request): - # Запрешен доступ - кабинет менеджера, пепода и.т.д. - return {} - - -@response_decor(template='access_error.html', without_auth=True) -def access_error(request): - # Закрытая страница - не открытый урок, дз и.т.д. - return {} - - -@response_decor(template='by_error.html', without_auth=True) -def by_error(request): - # Запрещен доступ по подпискеs - return {} - - -@response_decor(template='all_actions.html', without_auth=False) -def all_actions(request): - # Страница событий - return {'b_actions': ActionJ.objects.filter(student=request.user).order_by('-id')} - - -@response_decor(template='index.html', without_auth=True) -def fast_auth(request): - # Авторизация по кнопке - # FIXME: Усилить проверку - if request.POST.get('email') and request.POST.get('password'): - email = request.POST['email'].lower() - user = auth.authenticate(email=email, password=request.POST['password']) - - if user is not None: - auth.login(request, user) - return {'redirect': '/'} +# -*- coding: utf-8 -*- +from django.contrib import auth +from django.contrib.auth import logout +from django.http import Http404 +from django.shortcuts import redirect +from access.models import User, ActionJ, Document +from lms.tools import random_string, condition_factory, check_role +from lms.decors import response_decor +from courses.tools import get_user_achievements, get_user_diploms, get_user_completed_courses_count, \ + get_user_skills_size_count, get_user_achievements_count +from courses.tools import get_user_skills +from journals.models import TeacherJ +from management.letters import sent_forgot_password +from finance.models import Bill +from management.models import Comment +from library.models import Article + + +@response_decor(template='index.html', without_auth=True) +def activate_email(request): + # Активация пользователя через почту + if request.GET.get('token') and request.GET.get('email'): + try: + email = request.GET['email'].lower() + user = User.objects.get(email=email, token=request.GET['token']) + except User.DoesNotExist: + return {'redirect': '/404/?error=Ссылка устарела. Дождитесь письма с актуальной ссылкой'} + else: + user.email = user.changed_email + user.save() + user.change_token() + return {'DIALOG': 'activate_email'} + else: + # TODO: Отправлять пользователя в тупиковую страницу, а не на 404 + raise Http404 + + +@response_decor(template='index.html', without_auth=True) +def accept_forgot(request): + # Подтверждение почты при восстановлении + if request.GET.get('token') and request.GET.get('email'): + try: + email = request.GET['email'].lower() + user = User.objects.get(email=email, token=request.GET['token']) + except User.DoesNotExist: + return {'redirect': '/404/?error=Ссылка устарела. Дождитесь письма с актуальной ссылкой'} + else: + pas = random_string(length=6).upper() + user.set_password(pas) + user.change_token() + sent_forgot_password(user, pas) + return {'DIALOG': 'accept_forgot'} + else: + # TODO: Отправлять пользователя в тупиковую страницу, а не на 404 + raise Http404 + + +@response_decor(template='activation.html', without_auth=True) +def activate(request): + # Страница активации пользователя + condition = condition_factory([ + {'condition': request.GET.get('email'), 'error': u'Поле пользователя передано не корректно'}, + {'condition': request.GET.get('token'), 'error': u'Поле токена передано не корректно'}, + {'condition': request.GET.get('step'), 'error': u'Не верно передан этап'} + ]) + if condition['code'] == '1': + try: + email = request.GET['email'].lower() + user = User.objects.get(email=email, token=request.GET['token']) + except User.DoesNotExist: + return {'redirect': '/404/?error=Ссылка устарела. Дождитесь письма с актуальной ссылкой'} + else: + if not user.is_active or user.reg_status != '4': + user.save() + return {'step': user.reg_status, 'token': request.GET['token'], 'email': email, + 'phone': user.phone if user.phone else None} + + else: + raise Http404 + else: + raise Http404 + + +@response_decor(template='profile.html', without_auth=True) +def profile(request): + if request.user.is_authenticated(): + checker = check_role(request.user, 'U') + if checker['result']: + courses = [i.get_head_face() for i in + TeacherJ.objects.filter(student=request.user, course__public=True).exclude(progress=0)] + return {'in_user': None, + 'courses': courses, + 'achievements': get_user_achievements(request.user), + 'skills': get_user_skills(request.user), + 'diploms': get_user_diploms(request.user), + 'completed_courses': get_user_completed_courses_count(request.user), + 'got_achievements': get_user_achievements_count(request.user), + 'skills_size': get_user_skills_size_count(request.user), + 'documents': Document.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)], + 'forum_ask': Comment.objects.filter(owner=request.user, status='Q'), + 'forum_ans': { + 'all': + Comment.objects.filter(owner=request.user, status='Q2'), + 'best': + Comment.objects.filter(owner=request.user, status='Q2', best=True).count() + } + } + else: + return checker + else: + return {'redirect': '/access/auth_error/'} + + +@response_decor(template='profile.html', without_auth=True) +def profile_view(request, view_id): + if view_id: + try: + user = User.objects.get(interactive_key=view_id) + except User.DoesNotExist: + raise Http404 + else: + if request.user.is_authenticated() and request.user.is_admin: + go = True + else: + go = False + if user.private == 'A' or user.private == 'L': + go = True + elif user.private == 'U': + if request.user.is_authenticated() and request.user.is_active: + go = True + elif user.private == 'B': + if request.user == user: + go = True + + if go: + courses = [i.get_head_face() for i in TeacherJ.objects.filter(student=user, course__public=True).exclude(progress=0)] + return {'in_user': user, + 'courses': courses, + 'achievements': get_user_achievements(user), + 'skills': get_user_skills(user), + 'diploms': get_user_diploms(user), + 'articles': [i.get_face(user) for i in Article.objects.filter(views__id=user.id)], + 'completed_courses': get_user_completed_courses_count(user), + 'got_achievements': get_user_achievements_count(user), + 'skills_size': get_user_skills_size_count(user), + 'forum_ask': Comment.objects.filter(owner=user, status='Q'), + 'forum_ans': { + 'all': + Comment.objects.filter(owner=user, status='Q2'), + 'best': + Comment.objects.filter(owner=user, status='Q2', best=True).count() + }} + else: + raise Http404 + + +def logout_in(request): + logout(request) + return redirect('/') + + +@response_decor(template='index.html') +def come_off(request): + # Деактивация подписок + context = {'code': 'error'} + condition = condition_factory([ + {'condition': request.GET.get('token'), 'error': u'В запросе не обнаружен токен'}, + {'condition': request.GET.get('right'), 'error': u'В запросе не обнаружено изменяемое право'} + ]) + + if condition['code'] == '1': + try: + user = User.objects.get(token=request.GET['token']) + except User.DoesNotExist: + context['response'] = u'Запрос не обработан' + else: + if user.rights.check_right(user, request.GET['right']): + if request.GET['right'] == 'feedback_follow': + user.rights.set_right('feedback_follow', False) + context['response'] = u'Подписка деактивирована' + context['code'] = u'info' + elif request.GET['right'] == 'news_follow': + user.rights.set_right('news_follow', False) + context['response'] = u'Подписка деактивирована' + context['code'] = u'info' + else: + context[ + 'response'] = u'Вы указали право, на которое не распространяется функция быстрого отключения' + else: + context['response'] = u'Вы уже описаны от данной рассылки' + else: + context['response'] = condition['response'] + context['code'] = '0' + + return {'response': context['response'], 'code': context['code']} + + +@response_decor(template='auth_error.html', without_auth=True) +def auth_error(request): + # Запрешен доступ - кабинет менеджера, пепода и.т.д. + return {} + + +@response_decor(template='access_error.html', without_auth=True) +def access_error(request): + # Закрытая страница - не открытый урок, дз и.т.д. + return {} + + +@response_decor(template='by_error.html', without_auth=True) +def by_error(request): + # Запрещен доступ по подпискеs + return {} + + +@response_decor(template='all_actions.html', without_auth=False) +def all_actions(request): + # Страница событий + return {'b_actions': ActionJ.objects.filter(student=request.user).order_by('-id')} + + +@response_decor(template='index.html', without_auth=True) +def fast_auth(request): + # Авторизация по кнопке + # FIXME: Усилить проверку + if request.POST.get('email') and request.POST.get('password'): + email = request.POST['email'].lower() + user = auth.authenticate(email=email, password=request.POST['password']) + + if user is not None: + auth.login(request, user) + return {'redirect': '/'} diff --git a/configs/celery.conf b/configs/celery.conf index 06fac65..46e3cd4 100644 --- a/configs/celery.conf +++ b/configs/celery.conf @@ -1,40 +1,40 @@ -; ================================== -; celery worker supervisor example -; ================================== - -[program:celery_codemy] -command=/var/www/.envs/codemy/bin/celery worker -A lms --loglevel=INFO -directory=/var/www/projects/codemy/ -user=www-data -numprocs=1 -stdout_logfile=/var/www/logs/codemy/celery-worker.log -stderr_logfile=/var/www/logs/codemy/celery-worker.log -autostart=true -autorestart=true -startsecs=10 -stopwaitsecs = 600 -killasgroup=true - -[program:celery_beat_codemy] -command=/var/www/.envs/codemy/bin/celery beat -A lms --schedule /var/lib/celery/beat.db --loglevel=INFO -directory=/var/www/projects/codemy -user=www-data -numprocs=1 -stdout_logfile=/var/www/logs/codemy/celery-beat.log -stderr_logfile=/var/www/logs/codemy/celery-beat.log -autostart=true -autorestart=true -startsecs=10 -priority=999 - -[program:celery_flower_codemy] -command=/var/www/.envs/codemy/bin/celery -A lms flower -directory=/var/www/projects/codemy -user=www-data -numprocs=1 -stdout_logfile=/var/www/logs/codemy/celery-flower.log -stderr_logfile=/var/www/logs/codemy/celery-flower.log -autostart=true -autorestart=true -startsecs=10 -priority=600 +; ================================== +; celery worker supervisor example +; ================================== + +[program:celery_codemy] +command=/var/www/.envs/codemy/bin/celery worker -A lms --loglevel=INFO +directory=/var/www/projects/codemy/ +user=www-data +numprocs=1 +stdout_logfile=/var/www/logs/codemy/celery-worker.log +stderr_logfile=/var/www/logs/codemy/celery-worker.log +autostart=true +autorestart=true +startsecs=10 +stopwaitsecs = 600 +killasgroup=true + +[program:celery_beat_codemy] +command=/var/www/.envs/codemy/bin/celery beat -A lms --schedule /var/lib/celery/beat.db --loglevel=INFO +directory=/var/www/projects/codemy +user=www-data +numprocs=1 +stdout_logfile=/var/www/logs/codemy/celery-beat.log +stderr_logfile=/var/www/logs/codemy/celery-beat.log +autostart=true +autorestart=true +startsecs=10 +priority=999 + +[program:celery_flower_codemy] +command=/var/www/.envs/codemy/bin/celery -A lms flower +directory=/var/www/projects/codemy +user=www-data +numprocs=1 +stdout_logfile=/var/www/logs/codemy/celery-flower.log +stderr_logfile=/var/www/logs/codemy/celery-flower.log +autostart=true +autorestart=true +startsecs=10 +priority=600 diff --git a/configs/codemy_ssl/privat.key b/configs/codemy_ssl/privat.key index c21abb7..3c17a30 100644 --- a/configs/codemy_ssl/privat.key +++ b/configs/codemy_ssl/privat.key @@ -1,51 +1,51 @@ ------BEGIN RSA PRIVATE KEY----- -MIIJKQIBAAKCAgEArcJkDivloDX2QRQE+s1jPH/pxq+oZGeSNe8aJVMXRu3IbIML -+iJt0H0XGol9N9FkvSHF2G33oOmJ134Imd6BcQ/OQCT8J7MvPbts5Y7LWBcwUomJ -+QZq9qcHFVrcP95Q0wrZTV5f2zU468dz+eUnmWVfFYIR674ZImLLtc+bLl3NjzH6 -t23WrTiIUmPpe4dOH9CktKoUyfzgzFcXFOI967mooMAzhefKzigr+5sU34SMbWLs -czspC7cj22LRpIXowFeuRnoygXXVbDvRlgU2criLFqiDCwWqi6OOVZMcNjqePwc4 -1R4qdWeIf7mJ69xuPQtzHrO+rRC8mgGVSU+9nKunNq6tIxvOOnK/TeOzaJoCx/yb -7XsNcYCoue3ZV3emM2WeUB6MOxG41m9AFo9TKsHOtpFLx8tyWTcypBWhr6xTYhNB -GTiSUMofGZmM6sjcVyQT6pEFpx50DxZeTDhnO+wSi8NZRoNKjqMo3wvrvJjcM1mz -qRzHE5nyzU1/Gf/j5WCNdCC/+2Q8s+LXaKkm0iRUuSqmQVtpkzaMCdEf33ELDshG -XN4jCvTSG5w8fL+GdeZ8BpBPLob8qKkYU2kW3YqawQ9+bi7p8MDs1ZCNtjScCzgt -aNvoX/3/TFO4tSu/XCz5nGYKVYbjUrr1Mv9NldSIiua/hJOrsWFfpoEXjmMCAwEA -AQKCAgAKVxMVNM+JZSyuWr6hHi/VndcPl8xxjShKRVxM9FDiS6wtqO7Bh+L5ETia -v6vP8ooIJ0ZaxtCBpuQpCrsATRlu3P3tG0ZWJnedONYWIxU+vMKHZt/rDdK3suDd -CHcq5dPxeyfLTt5tcRFeFpR0PorIuhuacA8Y9EsSnMZ6n0wgyjw9VUASQlsQG9kg -7gkq7LZddlEW3zg1fPLztgsNlxkQOhAq4MUwJscO1Z0ob+YiFwU0TTq88LxUkiV0 -HMFVBRMAvzcDwqnWwmhc9IJYZx8CXLEKPCTwNvobLTR/Ky32nC5mmctsA0uLiQm6 -cBQhEREOWOwU26VxLxnKIGX94tzpqL+k3sWzbfyW2PwCwm7tH18RQSQuwvzWavt0 -CKkQmPIvbJGGDxoNs4FC/NX+N0MXiDvPmN4FQeyPCsXsDW4NUsZy2iYmZO0DISsO -oDQGSVM2/dwP9ktKo781XliY91lPEQHTvbqPr89iiVIwPbV4RN+HFOblLn2vrR/2 -WloMyMKZEZgrEXLLHiwPveK6n8N1v8YxZwFMhJeBMZ2SNXrqcqrycp+/joKf0Lgg -MvrHu8DYMtlQyfVhAiFJvyL6YS3bVjfi1FEYX6FJn1vvSDQOQxPOLhkAnEoItwCY -R/D1QlyGA4GeDYQTEmz70J007V0koKZZFWUpv4InoUjumygaQQKCAQEA2hhXY3Xz -Wo4QtEBZkkG8NVXGY/k1IpCeER2MysgMAAFdO//bXQbaU7DeOi0AeSrkWz/rlfHR -nxtwgtfjt+0uyDLJlvKXscTDh2qZI9t9Z5ZnimAsawH6hrvfzJX1op/RqgG+edXi -2WrefpoAh8swMWljVO/wwai0b2ahFxsIZUU5XFu+ic4Cb/WTORftwY2yh61Qvsxk -jGNym8VywYJuT9a1HTFljNbEKgqlxBmZczMxgFs2zd+2hu3cITuHnM0YKwQN+sth -yDgemHIoFuI8mO3hKRYrOv+/iQslxt1Km0kFsiFetEr3oT5UizaTZ1Elu6mhKITm -U+fcrnQXWnDcGQKCAQEAy/VttR9pRuT/oW0d58hZRa5HKXoHbpG9IS0+MjlicOWq -ZWvfDag/CCRs6SEQfYWQfOs6AH8bMsjMZDWLXuE4obas7SS4/P7pA88Ix3BpFyGu -afpAwDA/sREe6D4DF9yGM02q66Bw5g/YiAW1TOBaXPWSjOfRNWI7zE+N/znaR/Pi -nfm9XEVuQcnCRlYojvosQ+k7+CU/7w4mTraVz3m86CLyo9k4jDtR3OZh8rjlfrMb -Mk272i+7xiSZkL35/7w3DwhSLm+GLuwHJ1OlEGzSrJx9be4aXDS0V/xWTTw5PzaC -lrNhMobgfWckrbVVHouqyzgSMd9NVdOkKUy3Dg4N2wKCAQEAojv/LbZ9Czyowl0o -BDsv9QDUbmPgGdE4NAUmSWYcPxjEsTA3jvDdEep8tQvq0TeN3S8kYUscIt43iK1t -8NDXvwbAnK/jFdMHnEE4n8rTc24XoYC/Ke6z3Ov+o+JdcdavEWbwuRLZB+COl+CZ -SmpkdC0wPeuqzXRgnInchSKP0T14WPLKPxpnB7/G/26EZzmvt2u+p9/FYAVOKP/s -yHPs+Sj/WzL2lpjgHWIEQ2bDlkVbql6v2t9ymNZxrKrqy0Jpmv4OJCSMnXLZl487 -sSIj76LsnjKmf+HlKd2IAXF14SOlwAdAup8Vq/WA0HoNlopvpjSd9FVAPOQ6be9f -u+A+aQKCAQEAtIJIUC62q+nsXGAIQaTNbaAqlwjLHw6ZBo3WJ/klqKl6vzxTMvEe -qAQk58c9ovncwNImiV31ImMYke/Zo2VNC8JzFYaUukSY0aggKvLP74r9pAm52N5a -4Ek4w25uqmWf2DP6+4MJqHOJvgjfRmShVPh6dX6NZ+PC7LXUBHidOWUdwZbQAqPo -Sw1XhYynZLMBDjGTw7Cj/tzVBoEN4YvqpsCXYm/TXjj54Ll9IqaFZjb58PFfOmFY -nKqzxqh8Y9ueFw3UPgiyB0EZq7KZugm2AtKVJ/+9ELIMknpfnweX2txRgzLK6T75 -28K3cY21Ac22oRjE8aKh/T3MYkjlEelaVQKCAQAQGuFJcOu0+E5A91+k+GbgFXmK -cmCEO8iNhEByvfZAMv23+ba8WeEcYJnTFUbyaoESXPPAkPSVeFvOy39Zbq1WAZ7c -BdZUEUONWE0n54ZnvArEKIsvF4YRz//KQ8SaXbhj1OMvhS5fRo3hBxCS3xWyF9sq -qM/AWdz3iGvP/ELpCOQrii//U3WaQvaY17QpqiJ7B9DvsWhDabRVlp6eKTKgAMLq -BlJpLz1tRfpVU+sLI+yvZAbwj6Izex80TXEhD9EMPLBgyIzM67+zdf6awB3mXGRA -zSvlO+eVQYQODNR52sD1+4ythePMC4SJiZyLzy7VnCfmoOPNyPldTxQGJLjE ------END RSA PRIVATE KEY----- +-----BEGIN RSA PRIVATE KEY----- +MIIJKQIBAAKCAgEArcJkDivloDX2QRQE+s1jPH/pxq+oZGeSNe8aJVMXRu3IbIML ++iJt0H0XGol9N9FkvSHF2G33oOmJ134Imd6BcQ/OQCT8J7MvPbts5Y7LWBcwUomJ ++QZq9qcHFVrcP95Q0wrZTV5f2zU468dz+eUnmWVfFYIR674ZImLLtc+bLl3NjzH6 +t23WrTiIUmPpe4dOH9CktKoUyfzgzFcXFOI967mooMAzhefKzigr+5sU34SMbWLs +czspC7cj22LRpIXowFeuRnoygXXVbDvRlgU2criLFqiDCwWqi6OOVZMcNjqePwc4 +1R4qdWeIf7mJ69xuPQtzHrO+rRC8mgGVSU+9nKunNq6tIxvOOnK/TeOzaJoCx/yb +7XsNcYCoue3ZV3emM2WeUB6MOxG41m9AFo9TKsHOtpFLx8tyWTcypBWhr6xTYhNB +GTiSUMofGZmM6sjcVyQT6pEFpx50DxZeTDhnO+wSi8NZRoNKjqMo3wvrvJjcM1mz +qRzHE5nyzU1/Gf/j5WCNdCC/+2Q8s+LXaKkm0iRUuSqmQVtpkzaMCdEf33ELDshG +XN4jCvTSG5w8fL+GdeZ8BpBPLob8qKkYU2kW3YqawQ9+bi7p8MDs1ZCNtjScCzgt +aNvoX/3/TFO4tSu/XCz5nGYKVYbjUrr1Mv9NldSIiua/hJOrsWFfpoEXjmMCAwEA +AQKCAgAKVxMVNM+JZSyuWr6hHi/VndcPl8xxjShKRVxM9FDiS6wtqO7Bh+L5ETia +v6vP8ooIJ0ZaxtCBpuQpCrsATRlu3P3tG0ZWJnedONYWIxU+vMKHZt/rDdK3suDd +CHcq5dPxeyfLTt5tcRFeFpR0PorIuhuacA8Y9EsSnMZ6n0wgyjw9VUASQlsQG9kg +7gkq7LZddlEW3zg1fPLztgsNlxkQOhAq4MUwJscO1Z0ob+YiFwU0TTq88LxUkiV0 +HMFVBRMAvzcDwqnWwmhc9IJYZx8CXLEKPCTwNvobLTR/Ky32nC5mmctsA0uLiQm6 +cBQhEREOWOwU26VxLxnKIGX94tzpqL+k3sWzbfyW2PwCwm7tH18RQSQuwvzWavt0 +CKkQmPIvbJGGDxoNs4FC/NX+N0MXiDvPmN4FQeyPCsXsDW4NUsZy2iYmZO0DISsO +oDQGSVM2/dwP9ktKo781XliY91lPEQHTvbqPr89iiVIwPbV4RN+HFOblLn2vrR/2 +WloMyMKZEZgrEXLLHiwPveK6n8N1v8YxZwFMhJeBMZ2SNXrqcqrycp+/joKf0Lgg +MvrHu8DYMtlQyfVhAiFJvyL6YS3bVjfi1FEYX6FJn1vvSDQOQxPOLhkAnEoItwCY +R/D1QlyGA4GeDYQTEmz70J007V0koKZZFWUpv4InoUjumygaQQKCAQEA2hhXY3Xz +Wo4QtEBZkkG8NVXGY/k1IpCeER2MysgMAAFdO//bXQbaU7DeOi0AeSrkWz/rlfHR +nxtwgtfjt+0uyDLJlvKXscTDh2qZI9t9Z5ZnimAsawH6hrvfzJX1op/RqgG+edXi +2WrefpoAh8swMWljVO/wwai0b2ahFxsIZUU5XFu+ic4Cb/WTORftwY2yh61Qvsxk +jGNym8VywYJuT9a1HTFljNbEKgqlxBmZczMxgFs2zd+2hu3cITuHnM0YKwQN+sth +yDgemHIoFuI8mO3hKRYrOv+/iQslxt1Km0kFsiFetEr3oT5UizaTZ1Elu6mhKITm +U+fcrnQXWnDcGQKCAQEAy/VttR9pRuT/oW0d58hZRa5HKXoHbpG9IS0+MjlicOWq +ZWvfDag/CCRs6SEQfYWQfOs6AH8bMsjMZDWLXuE4obas7SS4/P7pA88Ix3BpFyGu +afpAwDA/sREe6D4DF9yGM02q66Bw5g/YiAW1TOBaXPWSjOfRNWI7zE+N/znaR/Pi +nfm9XEVuQcnCRlYojvosQ+k7+CU/7w4mTraVz3m86CLyo9k4jDtR3OZh8rjlfrMb +Mk272i+7xiSZkL35/7w3DwhSLm+GLuwHJ1OlEGzSrJx9be4aXDS0V/xWTTw5PzaC +lrNhMobgfWckrbVVHouqyzgSMd9NVdOkKUy3Dg4N2wKCAQEAojv/LbZ9Czyowl0o +BDsv9QDUbmPgGdE4NAUmSWYcPxjEsTA3jvDdEep8tQvq0TeN3S8kYUscIt43iK1t +8NDXvwbAnK/jFdMHnEE4n8rTc24XoYC/Ke6z3Ov+o+JdcdavEWbwuRLZB+COl+CZ +SmpkdC0wPeuqzXRgnInchSKP0T14WPLKPxpnB7/G/26EZzmvt2u+p9/FYAVOKP/s +yHPs+Sj/WzL2lpjgHWIEQ2bDlkVbql6v2t9ymNZxrKrqy0Jpmv4OJCSMnXLZl487 +sSIj76LsnjKmf+HlKd2IAXF14SOlwAdAup8Vq/WA0HoNlopvpjSd9FVAPOQ6be9f +u+A+aQKCAQEAtIJIUC62q+nsXGAIQaTNbaAqlwjLHw6ZBo3WJ/klqKl6vzxTMvEe +qAQk58c9ovncwNImiV31ImMYke/Zo2VNC8JzFYaUukSY0aggKvLP74r9pAm52N5a +4Ek4w25uqmWf2DP6+4MJqHOJvgjfRmShVPh6dX6NZ+PC7LXUBHidOWUdwZbQAqPo +Sw1XhYynZLMBDjGTw7Cj/tzVBoEN4YvqpsCXYm/TXjj54Ll9IqaFZjb58PFfOmFY +nKqzxqh8Y9ueFw3UPgiyB0EZq7KZugm2AtKVJ/+9ELIMknpfnweX2txRgzLK6T75 +28K3cY21Ac22oRjE8aKh/T3MYkjlEelaVQKCAQAQGuFJcOu0+E5A91+k+GbgFXmK +cmCEO8iNhEByvfZAMv23+ba8WeEcYJnTFUbyaoESXPPAkPSVeFvOy39Zbq1WAZ7c +BdZUEUONWE0n54ZnvArEKIsvF4YRz//KQ8SaXbhj1OMvhS5fRo3hBxCS3xWyF9sq +qM/AWdz3iGvP/ELpCOQrii//U3WaQvaY17QpqiJ7B9DvsWhDabRVlp6eKTKgAMLq +BlJpLz1tRfpVU+sLI+yvZAbwj6Izex80TXEhD9EMPLBgyIzM67+zdf6awB3mXGRA +zSvlO+eVQYQODNR52sD1+4ythePMC4SJiZyLzy7VnCfmoOPNyPldTxQGJLjE +-----END RSA PRIVATE KEY----- diff --git a/configs/codemy_ssl/public.pem b/configs/codemy_ssl/public.pem index 1e11f45..27a2e22 100644 --- a/configs/codemy_ssl/public.pem +++ b/configs/codemy_ssl/public.pem @@ -1,85 +1,85 @@ ------BEGIN CERTIFICATE----- -MIIF9jCCBN6gAwIBAgIMY/C5dNv6x+tP/WuUMA0GCSqGSIb3DQEBCwUAMGAxCzAJ -BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTYwNAYDVQQDEy1H -bG9iYWxTaWduIERvbWFpbiBWYWxpZGF0aW9uIENBIC0gU0hBMjU2IC0gRzIwHhcN -MTYwNzAxMTMyMzM0WhcNMTcwNzAyMTMyMzM0WjA5MSEwHwYDVQQLExhEb21haW4g -Q29udHJvbCBWYWxpZGF0ZWQxFDASBgNVBAMMCyouY29kZW15LnJ1MIICIjANBgkq -hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArcJkDivloDX2QRQE+s1jPH/pxq+oZGeS -Ne8aJVMXRu3IbIML+iJt0H0XGol9N9FkvSHF2G33oOmJ134Imd6BcQ/OQCT8J7Mv -Pbts5Y7LWBcwUomJ+QZq9qcHFVrcP95Q0wrZTV5f2zU468dz+eUnmWVfFYIR674Z -ImLLtc+bLl3NjzH6t23WrTiIUmPpe4dOH9CktKoUyfzgzFcXFOI967mooMAzhefK -zigr+5sU34SMbWLsczspC7cj22LRpIXowFeuRnoygXXVbDvRlgU2criLFqiDCwWq -i6OOVZMcNjqePwc41R4qdWeIf7mJ69xuPQtzHrO+rRC8mgGVSU+9nKunNq6tIxvO -OnK/TeOzaJoCx/yb7XsNcYCoue3ZV3emM2WeUB6MOxG41m9AFo9TKsHOtpFLx8ty -WTcypBWhr6xTYhNBGTiSUMofGZmM6sjcVyQT6pEFpx50DxZeTDhnO+wSi8NZRoNK -jqMo3wvrvJjcM1mzqRzHE5nyzU1/Gf/j5WCNdCC/+2Q8s+LXaKkm0iRUuSqmQVtp -kzaMCdEf33ELDshGXN4jCvTSG5w8fL+GdeZ8BpBPLob8qKkYU2kW3YqawQ9+bi7p -8MDs1ZCNtjScCzgtaNvoX/3/TFO4tSu/XCz5nGYKVYbjUrr1Mv9NldSIiua/hJOr -sWFfpoEXjmMCAwEAAaOCAdUwggHRMA4GA1UdDwEB/wQEAwIFoDCBlAYIKwYBBQUH -AQEEgYcwgYQwRwYIKwYBBQUHMAKGO2h0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5j -b20vY2FjZXJ0L2dzZG9tYWludmFsc2hhMmcycjEuY3J0MDkGCCsGAQUFBzABhi1o -dHRwOi8vb2NzcDIuZ2xvYmFsc2lnbi5jb20vZ3Nkb21haW52YWxzaGEyZzIwVgYD -VR0gBE8wTTBBBgkrBgEEAaAyAQowNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cu -Z2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCAYGZ4EMAQIBMAkGA1UdEwQCMAAw -QwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9n -c2RvbWFpbnZhbHNoYTJnMi5jcmwwIQYDVR0RBBowGIILKi5jb2RlbXkucnWCCWNv -ZGVteS5ydTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYE -FHlv5NiaqItBFuN0vudXy9jt1bLkMB8GA1UdIwQYMBaAFOpOfNSALeUVgYYmjIJt -wJikz5cPMA0GCSqGSIb3DQEBCwUAA4IBAQBfIs7hKJlHw5Hly/vVhjAQzX8qcN9H -ISyHjmU4KeMKtiq0RdvC2Jf1IQFmxvgmycrARH1Xc9cHoMXZ8prYonnXeRX7fqrL -hsjp6x87DxwDDXqblHqpoakFXhZhY2fJCeH+YQTrY37+hOy3qOreI3CiRK5N+BYF -PO78hVAa5TdawQGM3c1TeYIG3ZzQ3x2wVGAQNCXdwcJOLF9dl6z+syySTOGPABKN -rIEKOzc4ScqIHOzuQ1qTG2QcjwyH9tarDjJd79rnZUQzf1O58DwGwaQZwh6gjksz -QXZOLz6LR55gpBP8cGpqJIwOiZKjtLTqeE6q/kJ0C9sbxnNw9sCkeAhh ------END CERTIFICATE----- - -Корневой сертификат ------BEGIN CERTIFICATE----- -MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw -MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT -aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ -jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp -xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp -1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG -snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ -U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 -9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B -AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz -yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE -38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP -AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad -DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME -HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== ------END CERTIFICATE----- - -Промежуточный сертификат ------BEGIN CERTIFICATE----- -MIIEYzCCA0ugAwIBAgILBAAAAAABRE7wPiAwDQYJKoZIhvcNAQELBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw -MDBaFw0yNDAyMjAxMDAwMDBaMGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMTYwNAYDVQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0 -aW9uIENBIC0gU0hBMjU2IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK -AoIBAQCp3cwOs+IyOd1JIqgTaZOHiOEM7nF9vZCHll1Z8syz0lhXV/lG72wm2DZC -jn4wsy+aPlN7H262okxFHzzTFZMcie089Ffeyr3sBppqKqAZUn9R0XQ5CJ+r69eG -ExWXrjbDVGYOWvKgc4Ux47JkFGr/paKOJLu9hVIVonnu8LXuPbj0fYC82ZA1ZbgX -qa2zmJ+gfn1u+z+tfMIbWTaW2jcyS0tdNQJjjtunz2LuzC7Ujcm9PGqRcqIip3It -INH6yjfaGJjmFiRxJUvE5XuJUgkC/VkrBG7KB4HUs9ra2+PMgKhWBwZ8lgg3nds4 -tmI0kWIHdAE42HIw4uuQcSZiwFfzAgMBAAGjggElMIIBITAOBgNVHQ8BAf8EBAMC -AQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU6k581IAt5RWBhiaMgm3A -mKTPlw8wRwYDVR0gBEAwPjA8BgRVHSAAMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8v -d3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMDMGA1UdHwQsMCowKKAmoCSG -Imh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvcm9vdC5jcmwwPQYIKwYBBQUHAQEE -MTAvMC0GCCsGAQUFBzABhiFodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9yb290 -cjEwHwYDVR0jBBgwFoAUYHtmGkUNl8qJUC99BM00qP/8/UswDQYJKoZIhvcNAQEL -BQADggEBANdFnqDc4ONhWgt9d4QXLWVagpqNoycqhffJ7+mG/dRHzQFSlsVDvTex -4bjyqdKKEYRxkRWJ3AKdC8tsM4U0KJ4gsrGX3G0LEME8zV/qXdeYMcU0mVwAYVXE -GwJbxeOJyLS4bx448lYm6UHvPc2smU9ZSlctS32ux4j71pg79eXw6ImJuYsDy1oj -H6T9uOr7Lp2uanMJvPzVoLVEgqtEkS5QLlfBQ9iRBIvpES5ftD953x77PzAAi1Pj -tywdO02L3ORkHQRYM68bVeerDL8wBHTk8w4vMDmNSwSMHnVmZkngvkA0x1xaUZK6 -EjxS1QSCVS1npd+3lXzuP8MIugS+wEY= +-----BEGIN CERTIFICATE----- +MIIF9jCCBN6gAwIBAgIMY/C5dNv6x+tP/WuUMA0GCSqGSIb3DQEBCwUAMGAxCzAJ +BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTYwNAYDVQQDEy1H +bG9iYWxTaWduIERvbWFpbiBWYWxpZGF0aW9uIENBIC0gU0hBMjU2IC0gRzIwHhcN +MTYwNzAxMTMyMzM0WhcNMTcwNzAyMTMyMzM0WjA5MSEwHwYDVQQLExhEb21haW4g +Q29udHJvbCBWYWxpZGF0ZWQxFDASBgNVBAMMCyouY29kZW15LnJ1MIICIjANBgkq +hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArcJkDivloDX2QRQE+s1jPH/pxq+oZGeS +Ne8aJVMXRu3IbIML+iJt0H0XGol9N9FkvSHF2G33oOmJ134Imd6BcQ/OQCT8J7Mv +Pbts5Y7LWBcwUomJ+QZq9qcHFVrcP95Q0wrZTV5f2zU468dz+eUnmWVfFYIR674Z +ImLLtc+bLl3NjzH6t23WrTiIUmPpe4dOH9CktKoUyfzgzFcXFOI967mooMAzhefK +zigr+5sU34SMbWLsczspC7cj22LRpIXowFeuRnoygXXVbDvRlgU2criLFqiDCwWq +i6OOVZMcNjqePwc41R4qdWeIf7mJ69xuPQtzHrO+rRC8mgGVSU+9nKunNq6tIxvO +OnK/TeOzaJoCx/yb7XsNcYCoue3ZV3emM2WeUB6MOxG41m9AFo9TKsHOtpFLx8ty +WTcypBWhr6xTYhNBGTiSUMofGZmM6sjcVyQT6pEFpx50DxZeTDhnO+wSi8NZRoNK +jqMo3wvrvJjcM1mzqRzHE5nyzU1/Gf/j5WCNdCC/+2Q8s+LXaKkm0iRUuSqmQVtp +kzaMCdEf33ELDshGXN4jCvTSG5w8fL+GdeZ8BpBPLob8qKkYU2kW3YqawQ9+bi7p +8MDs1ZCNtjScCzgtaNvoX/3/TFO4tSu/XCz5nGYKVYbjUrr1Mv9NldSIiua/hJOr +sWFfpoEXjmMCAwEAAaOCAdUwggHRMA4GA1UdDwEB/wQEAwIFoDCBlAYIKwYBBQUH +AQEEgYcwgYQwRwYIKwYBBQUHMAKGO2h0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5j +b20vY2FjZXJ0L2dzZG9tYWludmFsc2hhMmcycjEuY3J0MDkGCCsGAQUFBzABhi1o +dHRwOi8vb2NzcDIuZ2xvYmFsc2lnbi5jb20vZ3Nkb21haW52YWxzaGEyZzIwVgYD +VR0gBE8wTTBBBgkrBgEEAaAyAQowNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cu +Z2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCAYGZ4EMAQIBMAkGA1UdEwQCMAAw +QwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9n +c2RvbWFpbnZhbHNoYTJnMi5jcmwwIQYDVR0RBBowGIILKi5jb2RlbXkucnWCCWNv +ZGVteS5ydTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYE +FHlv5NiaqItBFuN0vudXy9jt1bLkMB8GA1UdIwQYMBaAFOpOfNSALeUVgYYmjIJt +wJikz5cPMA0GCSqGSIb3DQEBCwUAA4IBAQBfIs7hKJlHw5Hly/vVhjAQzX8qcN9H +ISyHjmU4KeMKtiq0RdvC2Jf1IQFmxvgmycrARH1Xc9cHoMXZ8prYonnXeRX7fqrL +hsjp6x87DxwDDXqblHqpoakFXhZhY2fJCeH+YQTrY37+hOy3qOreI3CiRK5N+BYF +PO78hVAa5TdawQGM3c1TeYIG3ZzQ3x2wVGAQNCXdwcJOLF9dl6z+syySTOGPABKN +rIEKOzc4ScqIHOzuQ1qTG2QcjwyH9tarDjJd79rnZUQzf1O58DwGwaQZwh6gjksz +QXZOLz6LR55gpBP8cGpqJIwOiZKjtLTqeE6q/kJ0C9sbxnNw9sCkeAhh +-----END CERTIFICATE----- + +Корневой сертификат +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw +MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT +aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ +jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp +xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp +1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG +snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ +U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 +9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B +AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz +yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE +38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP +AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad +DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME +HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +Промежуточный сертификат +-----BEGIN CERTIFICATE----- +MIIEYzCCA0ugAwIBAgILBAAAAAABRE7wPiAwDQYJKoZIhvcNAQELBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw +MDBaFw0yNDAyMjAxMDAwMDBaMGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMTYwNAYDVQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0 +aW9uIENBIC0gU0hBMjU2IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCp3cwOs+IyOd1JIqgTaZOHiOEM7nF9vZCHll1Z8syz0lhXV/lG72wm2DZC +jn4wsy+aPlN7H262okxFHzzTFZMcie089Ffeyr3sBppqKqAZUn9R0XQ5CJ+r69eG +ExWXrjbDVGYOWvKgc4Ux47JkFGr/paKOJLu9hVIVonnu8LXuPbj0fYC82ZA1ZbgX +qa2zmJ+gfn1u+z+tfMIbWTaW2jcyS0tdNQJjjtunz2LuzC7Ujcm9PGqRcqIip3It +INH6yjfaGJjmFiRxJUvE5XuJUgkC/VkrBG7KB4HUs9ra2+PMgKhWBwZ8lgg3nds4 +tmI0kWIHdAE42HIw4uuQcSZiwFfzAgMBAAGjggElMIIBITAOBgNVHQ8BAf8EBAMC +AQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU6k581IAt5RWBhiaMgm3A +mKTPlw8wRwYDVR0gBEAwPjA8BgRVHSAAMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8v +d3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMDMGA1UdHwQsMCowKKAmoCSG +Imh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvcm9vdC5jcmwwPQYIKwYBBQUHAQEE +MTAvMC0GCCsGAQUFBzABhiFodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9yb290 +cjEwHwYDVR0jBBgwFoAUYHtmGkUNl8qJUC99BM00qP/8/UswDQYJKoZIhvcNAQEL +BQADggEBANdFnqDc4ONhWgt9d4QXLWVagpqNoycqhffJ7+mG/dRHzQFSlsVDvTex +4bjyqdKKEYRxkRWJ3AKdC8tsM4U0KJ4gsrGX3G0LEME8zV/qXdeYMcU0mVwAYVXE +GwJbxeOJyLS4bx448lYm6UHvPc2smU9ZSlctS32ux4j71pg79eXw6ImJuYsDy1oj +H6T9uOr7Lp2uanMJvPzVoLVEgqtEkS5QLlfBQ9iRBIvpES5ftD953x77PzAAi1Pj +tywdO02L3ORkHQRYM68bVeerDL8wBHTk8w4vMDmNSwSMHnVmZkngvkA0x1xaUZK6 +EjxS1QSCVS1npd+3lXzuP8MIugS+wEY= -----END CERTIFICATE----- \ No newline at end of file diff --git a/configs/manage.py b/configs/manage.py index 5f40f10..db4c8a4 100644 --- a/configs/manage.py +++ b/configs/manage.py @@ -1,10 +1,10 @@ -#! /var/www/.envs/codemy/bin/python3 -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") - - from django.core.management import execute_from_command_line - - execute_from_command_line(sys.argv) +#! /var/www/.envs/codemy/bin/python3 +import os +import sys + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") + + from django.core.management import execute_from_command_line + + execute_from_command_line(sys.argv) diff --git a/configs/skillbox_ssl/private.key b/configs/skillbox_ssl/private.key index 5b2ba02..7bd785f 100644 --- a/configs/skillbox_ssl/private.key +++ b/configs/skillbox_ssl/private.key @@ -1,51 +1,51 @@ ------BEGIN RSA PRIVATE KEY----- -MIIJKQIBAAKCAgEAxPkRkFPI6cpWutUxb27Zwf1uEc9wSwkB8SWL16n0SEOxcJPV -OfV3Jl//2GP8TLSxeY1S4+MORhsqDm7/outDrJQSJnkZ/pwYZbJEj+1oCItpyamo -+lHJ48ggnQD6HzYWmDZMrUNYiOTmLxsKcVcXM4kLcDVG6RJOgIMbiwaAwIH7DBPW -yVbaCBBY9XMUz7esODov/9OMdZuhcjuk6NXntNsASAbDC0BuVCAJLsVR6ir7r8xO -F7DtrnhhEjcE7R1Wkf4A7i/DyUy/7oJRy2o7psAPJJIS+Hz+bHN+zN+/w9YpCm07 -8ZmCy/fJmhIRoymCrdHEbHy9GfNuDfTow1H6+nPzTdA7z33uhOxLJMhYtZjzDOkZ -QT4cwj3aHGF7bFrWvEzauJeTtGyEh5fSpgJvH3kA+Z2cVJRYkW3JZR5B2aTbhPdO -ac4dhp3qUR9DVTjih2I1eP8FBavr5Rb56NIe4HGyL2QIyvKjpqkfH5TRJ1vRbQB3 -OjT8nWRkTmHvUxJXg5TmhZVvBt48/xjk5DO1W/GC516r96q1S5YieQzOJ4RUNFIz -SInUke0OLzmha8P9vDv+2owT59IRTl7uO6fQXGSR7bshA5MlquBvzdQ0g837r3Nh -ys1AXI+jrfelR0umHY8bMcrCcXeWbXyGAKIzkTz8x1I2xDzIPZVW4vB/cS8CAwEA -AQKCAgEAwiOC7i/GbLejeA485UnqkssIu8ErOqmsIlQRWwUF4lvl/cGXfcK0Jzyj -XFJgD/Jgoh9qvXXDUdHgR82bZKZhUy22HflqZ4rOeR2Veg5SZWmTYNI53E7UoA9W -Jaka3bxf1LJgLL2d+38waOlMB54BHihK/9NjCsGiYgPXF9XW/Oaf262KG3Pg/eWu -6Gz+7CRqOBkRyiJl5Fz6aS7kQSDjeVwJEPSpNOPSWlQg+No+/IBVBVZm+e7GtRmt -A1j7IAG0m7wwipLFdBiTa69Cky0nkhjmU/Mtg4Ee+yFyrtcxmQHx/XbgiCX3xrV5 -HMQGYjy9sjh4Uz023OcTZ+olqK2aoZjY/avsPKOtx9ybbO/YFER7f4PBts+IvCVS -SgAdli6tdoAO/GCHnXKjjLT2WaL8ZXOQcpNFFpLsaRxmq21AKMFCT74fl4euX5cA -qCflO6LxxtclXJdiaJJSuop0xp5KSJ4svRVScq9pHqJCjFoLEkvhYEpfI0nqeodP -jWqlNPiARFK0nnGk5+Uxfjo1WfsnRUvj7bPUbMp/xyG9dFQ0fg40XCIIHV1fTk38 -iL+Da0ijtORrIG8kwzL0q4tBU8/89ePvbsk1gOVDr+3nwoB84UmA+zmniHzFGjf4 -btF8v840epHaPjMSjWOnTMmsqycZ7imjBGhuqY5vwf1hmMZ3bhECggEBAOfgq1y7 -3uvAPzk9gUsDNSPSfmcszw4haHGIaOSmwUwm0klYxqa73T/6AnmjqjRfGErkqqpl -+O0L6oA1+KCS/pCSgN6/uWbtlcS8drniD9rHh9C5twBOOU2e77aDLdQx4SnHkHQZ -GnNpIi4m0PWUaa7qsBBGKpZMDqZCLXZw/6olCGoymrAxW+Tq79/lOf8Ngbz2jzpV -Ou+TAEb06Vy9fBniGb02+8cOPgECPo1a5cdij/1eU11CU66G5Re5il+34jZbVBo9 -Zmzanlc/hBSrZ4f9IMJVJLD8/ccc9exCXm+FHBWNpEE/gzxQWPb2ye7CoBep+glD -vfNg+lmUJLfxcuUCggEBANl20pe7WqKME1NOBt/EsX8DKlwoP6zdVasQ57ywDgif -9iKW1Fp0d4hbYEwvMfwXXb6uYlLIXRB6slKxuiuZOXo5DFZzGTmgY1kgachyau4l -nNdGXctCdlT7XklQOj0WgyKkGjFrHKVS5B+Go7/jdtM+JmqR8nhfzSPysaXZbwor -P7sGB+Wx/XbCPpupIZl7nPgOh5ctLS38WAh60++JZ2uLvJCkELA9dJj9ero5r/T8 -I4RjNK759mVgzay1UYRlmBFK23JwZxqnpA0gFbfVYyyAfA3VTlLu8ydpNq93Gd1/ -w2C5YL9iah7xI4XIlPiOLXWxWyuX7x0IrshejWTSroMCggEBAK8Bg3Q3GzWFYHJc -OFQcNKQ3v00xpYh9sG1XzgsczHEkL7xJ84xt57vcfre9zb0/NH95/FElK24Fe1SO -53qR1u3YlMkJnO3RTSMyNs1ukBbIV3oyYKsrXtZ1qWhvs0we5Vj6FM17ENqgM7rv -cvCWtfjdikqOGqBbAQd8lQF6oYuR7brxPIzUhA3PP4IVaONWF2A+GrWlFBkzMpdb -SzHClYKXgmOrtvVyi1uJjRp0y03j1tcctQCDCdOEXi28zHIXv/TUkzJGuyJXEgC5 -oH9VKouZgXsKdena19LKydUp9kpnBV5DDABu5ibEYZDrjFbWr6uMj3kklp20yN6J -D/mAkv0CggEAcWLGHT0f3d8BeI8XgHczQRFqddC6mqxxLZfL7JMzTgXxtUlFgcB2 -Ts+uHysAefvI8lJEi/tSovQGpJ1sf60Nzg+OwkiTH3vkMSV4Yn5eCLvt0kUrRH7r -6hWCrOE67H0fdOFxktDRh9X3ggSWvsegPjaKm0hrz53L/XFedSYxAnFYcnCLj5VF -njVbpZgDH97XEnOo+QciJncLg6hfducC2I1sjVIuLWZttBN+eTj46NjKwA1l+9Hz -Shq2QtXrogfCyUlpsHqxF7HPFNTk3gxSAHMhu6i7hPx4JdVzIPwNrXMfcQBXVJLA -2E9NAUV7fznKtDH8Ynd+wnmzgF/kg2xidwKCAQAg4h/BV1tPoJBuX2utlvvw+TjS -yuN6GcR7aZu4tvkctktvxcRihyyiZ1Rycftzqij1haA4xxcCzGFDbpAdjUwfO43+ -0RIV3oLnpvxATxOHGNhvUa7GGYgdJLs9hrX9cTqZRR2Bqt5isTWytaI+b8ViEP7w -rvZQVBkmeg9FUXC4rcTSkbaPrzi3RRMkdtu+EdszLJAEEgt6umqNPd3AIDcwAgK/ -2rclPBpncTWYWRRoaay+BMHyJPNmgFZdTkem36WiM1xQ3b1I0fzjcqdX+aDn6Cm9 -PUxB/vFK9xffL0geEAKptfZJ/kbcZlzecO9GosMvYTEty1ikLTxdYx39/kSm ------END RSA PRIVATE KEY----- +-----BEGIN RSA PRIVATE KEY----- +MIIJKQIBAAKCAgEAxPkRkFPI6cpWutUxb27Zwf1uEc9wSwkB8SWL16n0SEOxcJPV +OfV3Jl//2GP8TLSxeY1S4+MORhsqDm7/outDrJQSJnkZ/pwYZbJEj+1oCItpyamo ++lHJ48ggnQD6HzYWmDZMrUNYiOTmLxsKcVcXM4kLcDVG6RJOgIMbiwaAwIH7DBPW +yVbaCBBY9XMUz7esODov/9OMdZuhcjuk6NXntNsASAbDC0BuVCAJLsVR6ir7r8xO +F7DtrnhhEjcE7R1Wkf4A7i/DyUy/7oJRy2o7psAPJJIS+Hz+bHN+zN+/w9YpCm07 +8ZmCy/fJmhIRoymCrdHEbHy9GfNuDfTow1H6+nPzTdA7z33uhOxLJMhYtZjzDOkZ +QT4cwj3aHGF7bFrWvEzauJeTtGyEh5fSpgJvH3kA+Z2cVJRYkW3JZR5B2aTbhPdO +ac4dhp3qUR9DVTjih2I1eP8FBavr5Rb56NIe4HGyL2QIyvKjpqkfH5TRJ1vRbQB3 +OjT8nWRkTmHvUxJXg5TmhZVvBt48/xjk5DO1W/GC516r96q1S5YieQzOJ4RUNFIz +SInUke0OLzmha8P9vDv+2owT59IRTl7uO6fQXGSR7bshA5MlquBvzdQ0g837r3Nh +ys1AXI+jrfelR0umHY8bMcrCcXeWbXyGAKIzkTz8x1I2xDzIPZVW4vB/cS8CAwEA +AQKCAgEAwiOC7i/GbLejeA485UnqkssIu8ErOqmsIlQRWwUF4lvl/cGXfcK0Jzyj +XFJgD/Jgoh9qvXXDUdHgR82bZKZhUy22HflqZ4rOeR2Veg5SZWmTYNI53E7UoA9W +Jaka3bxf1LJgLL2d+38waOlMB54BHihK/9NjCsGiYgPXF9XW/Oaf262KG3Pg/eWu +6Gz+7CRqOBkRyiJl5Fz6aS7kQSDjeVwJEPSpNOPSWlQg+No+/IBVBVZm+e7GtRmt +A1j7IAG0m7wwipLFdBiTa69Cky0nkhjmU/Mtg4Ee+yFyrtcxmQHx/XbgiCX3xrV5 +HMQGYjy9sjh4Uz023OcTZ+olqK2aoZjY/avsPKOtx9ybbO/YFER7f4PBts+IvCVS +SgAdli6tdoAO/GCHnXKjjLT2WaL8ZXOQcpNFFpLsaRxmq21AKMFCT74fl4euX5cA +qCflO6LxxtclXJdiaJJSuop0xp5KSJ4svRVScq9pHqJCjFoLEkvhYEpfI0nqeodP +jWqlNPiARFK0nnGk5+Uxfjo1WfsnRUvj7bPUbMp/xyG9dFQ0fg40XCIIHV1fTk38 +iL+Da0ijtORrIG8kwzL0q4tBU8/89ePvbsk1gOVDr+3nwoB84UmA+zmniHzFGjf4 +btF8v840epHaPjMSjWOnTMmsqycZ7imjBGhuqY5vwf1hmMZ3bhECggEBAOfgq1y7 +3uvAPzk9gUsDNSPSfmcszw4haHGIaOSmwUwm0klYxqa73T/6AnmjqjRfGErkqqpl ++O0L6oA1+KCS/pCSgN6/uWbtlcS8drniD9rHh9C5twBOOU2e77aDLdQx4SnHkHQZ +GnNpIi4m0PWUaa7qsBBGKpZMDqZCLXZw/6olCGoymrAxW+Tq79/lOf8Ngbz2jzpV +Ou+TAEb06Vy9fBniGb02+8cOPgECPo1a5cdij/1eU11CU66G5Re5il+34jZbVBo9 +Zmzanlc/hBSrZ4f9IMJVJLD8/ccc9exCXm+FHBWNpEE/gzxQWPb2ye7CoBep+glD +vfNg+lmUJLfxcuUCggEBANl20pe7WqKME1NOBt/EsX8DKlwoP6zdVasQ57ywDgif +9iKW1Fp0d4hbYEwvMfwXXb6uYlLIXRB6slKxuiuZOXo5DFZzGTmgY1kgachyau4l +nNdGXctCdlT7XklQOj0WgyKkGjFrHKVS5B+Go7/jdtM+JmqR8nhfzSPysaXZbwor +P7sGB+Wx/XbCPpupIZl7nPgOh5ctLS38WAh60++JZ2uLvJCkELA9dJj9ero5r/T8 +I4RjNK759mVgzay1UYRlmBFK23JwZxqnpA0gFbfVYyyAfA3VTlLu8ydpNq93Gd1/ +w2C5YL9iah7xI4XIlPiOLXWxWyuX7x0IrshejWTSroMCggEBAK8Bg3Q3GzWFYHJc +OFQcNKQ3v00xpYh9sG1XzgsczHEkL7xJ84xt57vcfre9zb0/NH95/FElK24Fe1SO +53qR1u3YlMkJnO3RTSMyNs1ukBbIV3oyYKsrXtZ1qWhvs0we5Vj6FM17ENqgM7rv +cvCWtfjdikqOGqBbAQd8lQF6oYuR7brxPIzUhA3PP4IVaONWF2A+GrWlFBkzMpdb +SzHClYKXgmOrtvVyi1uJjRp0y03j1tcctQCDCdOEXi28zHIXv/TUkzJGuyJXEgC5 +oH9VKouZgXsKdena19LKydUp9kpnBV5DDABu5ibEYZDrjFbWr6uMj3kklp20yN6J +D/mAkv0CggEAcWLGHT0f3d8BeI8XgHczQRFqddC6mqxxLZfL7JMzTgXxtUlFgcB2 +Ts+uHysAefvI8lJEi/tSovQGpJ1sf60Nzg+OwkiTH3vkMSV4Yn5eCLvt0kUrRH7r +6hWCrOE67H0fdOFxktDRh9X3ggSWvsegPjaKm0hrz53L/XFedSYxAnFYcnCLj5VF +njVbpZgDH97XEnOo+QciJncLg6hfducC2I1sjVIuLWZttBN+eTj46NjKwA1l+9Hz +Shq2QtXrogfCyUlpsHqxF7HPFNTk3gxSAHMhu6i7hPx4JdVzIPwNrXMfcQBXVJLA +2E9NAUV7fznKtDH8Ynd+wnmzgF/kg2xidwKCAQAg4h/BV1tPoJBuX2utlvvw+TjS +yuN6GcR7aZu4tvkctktvxcRihyyiZ1Rycftzqij1haA4xxcCzGFDbpAdjUwfO43+ +0RIV3oLnpvxATxOHGNhvUa7GGYgdJLs9hrX9cTqZRR2Bqt5isTWytaI+b8ViEP7w +rvZQVBkmeg9FUXC4rcTSkbaPrzi3RRMkdtu+EdszLJAEEgt6umqNPd3AIDcwAgK/ +2rclPBpncTWYWRRoaay+BMHyJPNmgFZdTkem36WiM1xQ3b1I0fzjcqdX+aDn6Cm9 +PUxB/vFK9xffL0geEAKptfZJ/kbcZlzecO9GosMvYTEty1ikLTxdYx39/kSm +-----END RSA PRIVATE KEY----- diff --git a/configs/skillbox_ssl/request.csr b/configs/skillbox_ssl/request.csr index f1dc384..c5a9cdc 100644 --- a/configs/skillbox_ssl/request.csr +++ b/configs/skillbox_ssl/request.csr @@ -1,28 +1,28 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIErjCCApYCAQAwaTELMAkGA1UEBhMCUlUxDzANBgNVBAgMBk1vc2NvdzEPMA0G -A1UEBwwGTW9zY293MRYwFAYDVQQDDA0qLnNraWxsYm94LnJ1MSAwHgYJKoZIhvcN -AQkBFhFhZG1pbkBza2lsbGJveC5ydTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC -AgoCggIBAMT5EZBTyOnKVrrVMW9u2cH9bhHPcEsJAfEli9ep9EhDsXCT1Tn1dyZf -/9hj/Ey0sXmNUuPjDkYbKg5u/6LrQ6yUEiZ5Gf6cGGWyRI/taAiLacmpqPpRyePI -IJ0A+h82Fpg2TK1DWIjk5i8bCnFXFzOJC3A1RukSToCDG4sGgMCB+wwT1slW2ggQ -WPVzFM+3rDg6L//TjHWboXI7pOjV57TbAEgGwwtAblQgCS7FUeoq+6/MThew7a54 -YRI3BO0dVpH+AO4vw8lMv+6CUctqO6bADySSEvh8/mxzfszfv8PWKQptO/GZgsv3 -yZoSEaMpgq3RxGx8vRnzbg306MNR+vpz803QO8997oTsSyTIWLWY8wzpGUE+HMI9 -2hxhe2xa1rxM2riXk7RshIeX0qYCbx95APmdnFSUWJFtyWUeQdmk24T3TmnOHYad -6lEfQ1U44odiNXj/BQWr6+UW+ejSHuBxsi9kCMryo6apHx+U0Sdb0W0Adzo0/J1k -ZE5h71MSV4OU5oWVbwbePP8Y5OQztVvxgudeq/eqtUuWInkMzieEVDRSM0iJ1JHt -Di85oWvD/bw7/tqME+fSEU5e7jun0Fxkke27IQOTJargb83UNIPN+69zYcrNQFyP -o633pUdLph2PGzHKwnF3lm18hgCiM5E8/MdSNsQ8yD2VVuLwf3EvAgMBAAGgADAN -BgkqhkiG9w0BAQsFAAOCAgEAWdky38LZxVusUZ93/myKw1gb59NQEz5LwSCOH6hB -hZcQfu7gdwJeufLTQgn3xjjviP12OdU2hyCIfTgZL1K4ohcMvKQaHW1NUS78H6LB -I6DAQuD20hrJAtKA7ujxzHWba/83z/jMSPCNx8vsFWEMaIBc7lfAMYDU9pr9p7jd -pUTuGSJdnXHIpze2uBY+YCfvgP1HINHj/LNoT5XiPmLA7QNgxW3IrQ3PYHSKFS8b -4HtC1vgKZa4VUe4eL6sEL0MxnB6LSyuGL77JeFHQqfU48V0EKlDO0UztEWzyZqE4 -pWfdAWowo1YubWup8bR+5A+5VZQ3UJwUmgYWc4TFUATH/vvfnr88tU6ilbSb/gNE -0tZSLoRDi48s1egaKi+WhHbfm+XhhGlhaFVG+o5uEn3AueVGExdK6bA68SH9AbDM -+tkggBWy2JzzERqmHNoiMUC4mfbaAaOn6hz1YnBEOmt/cn48AFskxqjZ3IJVjjLM -aZBO88g8P9XrQKPYpuoN1FowE+R0rccoTxr8bjsSywV/O+P25Lc0HM0wUZzB5jbI -z75jLij6uM+Qomn9Wij7q6NTuiClTqTRPi94PPi+cz30E15mun1S51RV01uVP0Ma -FY1NLoxWlmLIl1U/PI7jvIO8vqxag0FKevZ8YszxMUy1y3doNPGUcoY7Ta/6bH6S -72c= ------END CERTIFICATE REQUEST----- +-----BEGIN CERTIFICATE REQUEST----- +MIIErjCCApYCAQAwaTELMAkGA1UEBhMCUlUxDzANBgNVBAgMBk1vc2NvdzEPMA0G +A1UEBwwGTW9zY293MRYwFAYDVQQDDA0qLnNraWxsYm94LnJ1MSAwHgYJKoZIhvcN +AQkBFhFhZG1pbkBza2lsbGJveC5ydTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC +AgoCggIBAMT5EZBTyOnKVrrVMW9u2cH9bhHPcEsJAfEli9ep9EhDsXCT1Tn1dyZf +/9hj/Ey0sXmNUuPjDkYbKg5u/6LrQ6yUEiZ5Gf6cGGWyRI/taAiLacmpqPpRyePI +IJ0A+h82Fpg2TK1DWIjk5i8bCnFXFzOJC3A1RukSToCDG4sGgMCB+wwT1slW2ggQ +WPVzFM+3rDg6L//TjHWboXI7pOjV57TbAEgGwwtAblQgCS7FUeoq+6/MThew7a54 +YRI3BO0dVpH+AO4vw8lMv+6CUctqO6bADySSEvh8/mxzfszfv8PWKQptO/GZgsv3 +yZoSEaMpgq3RxGx8vRnzbg306MNR+vpz803QO8997oTsSyTIWLWY8wzpGUE+HMI9 +2hxhe2xa1rxM2riXk7RshIeX0qYCbx95APmdnFSUWJFtyWUeQdmk24T3TmnOHYad +6lEfQ1U44odiNXj/BQWr6+UW+ejSHuBxsi9kCMryo6apHx+U0Sdb0W0Adzo0/J1k +ZE5h71MSV4OU5oWVbwbePP8Y5OQztVvxgudeq/eqtUuWInkMzieEVDRSM0iJ1JHt +Di85oWvD/bw7/tqME+fSEU5e7jun0Fxkke27IQOTJargb83UNIPN+69zYcrNQFyP +o633pUdLph2PGzHKwnF3lm18hgCiM5E8/MdSNsQ8yD2VVuLwf3EvAgMBAAGgADAN +BgkqhkiG9w0BAQsFAAOCAgEAWdky38LZxVusUZ93/myKw1gb59NQEz5LwSCOH6hB +hZcQfu7gdwJeufLTQgn3xjjviP12OdU2hyCIfTgZL1K4ohcMvKQaHW1NUS78H6LB +I6DAQuD20hrJAtKA7ujxzHWba/83z/jMSPCNx8vsFWEMaIBc7lfAMYDU9pr9p7jd +pUTuGSJdnXHIpze2uBY+YCfvgP1HINHj/LNoT5XiPmLA7QNgxW3IrQ3PYHSKFS8b +4HtC1vgKZa4VUe4eL6sEL0MxnB6LSyuGL77JeFHQqfU48V0EKlDO0UztEWzyZqE4 +pWfdAWowo1YubWup8bR+5A+5VZQ3UJwUmgYWc4TFUATH/vvfnr88tU6ilbSb/gNE +0tZSLoRDi48s1egaKi+WhHbfm+XhhGlhaFVG+o5uEn3AueVGExdK6bA68SH9AbDM ++tkggBWy2JzzERqmHNoiMUC4mfbaAaOn6hz1YnBEOmt/cn48AFskxqjZ3IJVjjLM +aZBO88g8P9XrQKPYpuoN1FowE+R0rccoTxr8bjsSywV/O+P25Lc0HM0wUZzB5jbI +z75jLij6uM+Qomn9Wij7q6NTuiClTqTRPi94PPi+cz30E15mun1S51RV01uVP0Ma +FY1NLoxWlmLIl1U/PI7jvIO8vqxag0FKevZ8YszxMUy1y3doNPGUcoY7Ta/6bH6S +72c= +-----END CERTIFICATE REQUEST----- diff --git a/configs/ssl/privat.key b/configs/ssl/privat.key index c21abb7..3c17a30 100644 --- a/configs/ssl/privat.key +++ b/configs/ssl/privat.key @@ -1,51 +1,51 @@ ------BEGIN RSA PRIVATE KEY----- -MIIJKQIBAAKCAgEArcJkDivloDX2QRQE+s1jPH/pxq+oZGeSNe8aJVMXRu3IbIML -+iJt0H0XGol9N9FkvSHF2G33oOmJ134Imd6BcQ/OQCT8J7MvPbts5Y7LWBcwUomJ -+QZq9qcHFVrcP95Q0wrZTV5f2zU468dz+eUnmWVfFYIR674ZImLLtc+bLl3NjzH6 -t23WrTiIUmPpe4dOH9CktKoUyfzgzFcXFOI967mooMAzhefKzigr+5sU34SMbWLs -czspC7cj22LRpIXowFeuRnoygXXVbDvRlgU2criLFqiDCwWqi6OOVZMcNjqePwc4 -1R4qdWeIf7mJ69xuPQtzHrO+rRC8mgGVSU+9nKunNq6tIxvOOnK/TeOzaJoCx/yb -7XsNcYCoue3ZV3emM2WeUB6MOxG41m9AFo9TKsHOtpFLx8tyWTcypBWhr6xTYhNB -GTiSUMofGZmM6sjcVyQT6pEFpx50DxZeTDhnO+wSi8NZRoNKjqMo3wvrvJjcM1mz -qRzHE5nyzU1/Gf/j5WCNdCC/+2Q8s+LXaKkm0iRUuSqmQVtpkzaMCdEf33ELDshG -XN4jCvTSG5w8fL+GdeZ8BpBPLob8qKkYU2kW3YqawQ9+bi7p8MDs1ZCNtjScCzgt -aNvoX/3/TFO4tSu/XCz5nGYKVYbjUrr1Mv9NldSIiua/hJOrsWFfpoEXjmMCAwEA -AQKCAgAKVxMVNM+JZSyuWr6hHi/VndcPl8xxjShKRVxM9FDiS6wtqO7Bh+L5ETia -v6vP8ooIJ0ZaxtCBpuQpCrsATRlu3P3tG0ZWJnedONYWIxU+vMKHZt/rDdK3suDd -CHcq5dPxeyfLTt5tcRFeFpR0PorIuhuacA8Y9EsSnMZ6n0wgyjw9VUASQlsQG9kg -7gkq7LZddlEW3zg1fPLztgsNlxkQOhAq4MUwJscO1Z0ob+YiFwU0TTq88LxUkiV0 -HMFVBRMAvzcDwqnWwmhc9IJYZx8CXLEKPCTwNvobLTR/Ky32nC5mmctsA0uLiQm6 -cBQhEREOWOwU26VxLxnKIGX94tzpqL+k3sWzbfyW2PwCwm7tH18RQSQuwvzWavt0 -CKkQmPIvbJGGDxoNs4FC/NX+N0MXiDvPmN4FQeyPCsXsDW4NUsZy2iYmZO0DISsO -oDQGSVM2/dwP9ktKo781XliY91lPEQHTvbqPr89iiVIwPbV4RN+HFOblLn2vrR/2 -WloMyMKZEZgrEXLLHiwPveK6n8N1v8YxZwFMhJeBMZ2SNXrqcqrycp+/joKf0Lgg -MvrHu8DYMtlQyfVhAiFJvyL6YS3bVjfi1FEYX6FJn1vvSDQOQxPOLhkAnEoItwCY -R/D1QlyGA4GeDYQTEmz70J007V0koKZZFWUpv4InoUjumygaQQKCAQEA2hhXY3Xz -Wo4QtEBZkkG8NVXGY/k1IpCeER2MysgMAAFdO//bXQbaU7DeOi0AeSrkWz/rlfHR -nxtwgtfjt+0uyDLJlvKXscTDh2qZI9t9Z5ZnimAsawH6hrvfzJX1op/RqgG+edXi -2WrefpoAh8swMWljVO/wwai0b2ahFxsIZUU5XFu+ic4Cb/WTORftwY2yh61Qvsxk -jGNym8VywYJuT9a1HTFljNbEKgqlxBmZczMxgFs2zd+2hu3cITuHnM0YKwQN+sth -yDgemHIoFuI8mO3hKRYrOv+/iQslxt1Km0kFsiFetEr3oT5UizaTZ1Elu6mhKITm -U+fcrnQXWnDcGQKCAQEAy/VttR9pRuT/oW0d58hZRa5HKXoHbpG9IS0+MjlicOWq -ZWvfDag/CCRs6SEQfYWQfOs6AH8bMsjMZDWLXuE4obas7SS4/P7pA88Ix3BpFyGu -afpAwDA/sREe6D4DF9yGM02q66Bw5g/YiAW1TOBaXPWSjOfRNWI7zE+N/znaR/Pi -nfm9XEVuQcnCRlYojvosQ+k7+CU/7w4mTraVz3m86CLyo9k4jDtR3OZh8rjlfrMb -Mk272i+7xiSZkL35/7w3DwhSLm+GLuwHJ1OlEGzSrJx9be4aXDS0V/xWTTw5PzaC -lrNhMobgfWckrbVVHouqyzgSMd9NVdOkKUy3Dg4N2wKCAQEAojv/LbZ9Czyowl0o -BDsv9QDUbmPgGdE4NAUmSWYcPxjEsTA3jvDdEep8tQvq0TeN3S8kYUscIt43iK1t -8NDXvwbAnK/jFdMHnEE4n8rTc24XoYC/Ke6z3Ov+o+JdcdavEWbwuRLZB+COl+CZ -SmpkdC0wPeuqzXRgnInchSKP0T14WPLKPxpnB7/G/26EZzmvt2u+p9/FYAVOKP/s -yHPs+Sj/WzL2lpjgHWIEQ2bDlkVbql6v2t9ymNZxrKrqy0Jpmv4OJCSMnXLZl487 -sSIj76LsnjKmf+HlKd2IAXF14SOlwAdAup8Vq/WA0HoNlopvpjSd9FVAPOQ6be9f -u+A+aQKCAQEAtIJIUC62q+nsXGAIQaTNbaAqlwjLHw6ZBo3WJ/klqKl6vzxTMvEe -qAQk58c9ovncwNImiV31ImMYke/Zo2VNC8JzFYaUukSY0aggKvLP74r9pAm52N5a -4Ek4w25uqmWf2DP6+4MJqHOJvgjfRmShVPh6dX6NZ+PC7LXUBHidOWUdwZbQAqPo -Sw1XhYynZLMBDjGTw7Cj/tzVBoEN4YvqpsCXYm/TXjj54Ll9IqaFZjb58PFfOmFY -nKqzxqh8Y9ueFw3UPgiyB0EZq7KZugm2AtKVJ/+9ELIMknpfnweX2txRgzLK6T75 -28K3cY21Ac22oRjE8aKh/T3MYkjlEelaVQKCAQAQGuFJcOu0+E5A91+k+GbgFXmK -cmCEO8iNhEByvfZAMv23+ba8WeEcYJnTFUbyaoESXPPAkPSVeFvOy39Zbq1WAZ7c -BdZUEUONWE0n54ZnvArEKIsvF4YRz//KQ8SaXbhj1OMvhS5fRo3hBxCS3xWyF9sq -qM/AWdz3iGvP/ELpCOQrii//U3WaQvaY17QpqiJ7B9DvsWhDabRVlp6eKTKgAMLq -BlJpLz1tRfpVU+sLI+yvZAbwj6Izex80TXEhD9EMPLBgyIzM67+zdf6awB3mXGRA -zSvlO+eVQYQODNR52sD1+4ythePMC4SJiZyLzy7VnCfmoOPNyPldTxQGJLjE ------END RSA PRIVATE KEY----- +-----BEGIN RSA PRIVATE KEY----- +MIIJKQIBAAKCAgEArcJkDivloDX2QRQE+s1jPH/pxq+oZGeSNe8aJVMXRu3IbIML ++iJt0H0XGol9N9FkvSHF2G33oOmJ134Imd6BcQ/OQCT8J7MvPbts5Y7LWBcwUomJ ++QZq9qcHFVrcP95Q0wrZTV5f2zU468dz+eUnmWVfFYIR674ZImLLtc+bLl3NjzH6 +t23WrTiIUmPpe4dOH9CktKoUyfzgzFcXFOI967mooMAzhefKzigr+5sU34SMbWLs +czspC7cj22LRpIXowFeuRnoygXXVbDvRlgU2criLFqiDCwWqi6OOVZMcNjqePwc4 +1R4qdWeIf7mJ69xuPQtzHrO+rRC8mgGVSU+9nKunNq6tIxvOOnK/TeOzaJoCx/yb +7XsNcYCoue3ZV3emM2WeUB6MOxG41m9AFo9TKsHOtpFLx8tyWTcypBWhr6xTYhNB +GTiSUMofGZmM6sjcVyQT6pEFpx50DxZeTDhnO+wSi8NZRoNKjqMo3wvrvJjcM1mz +qRzHE5nyzU1/Gf/j5WCNdCC/+2Q8s+LXaKkm0iRUuSqmQVtpkzaMCdEf33ELDshG +XN4jCvTSG5w8fL+GdeZ8BpBPLob8qKkYU2kW3YqawQ9+bi7p8MDs1ZCNtjScCzgt +aNvoX/3/TFO4tSu/XCz5nGYKVYbjUrr1Mv9NldSIiua/hJOrsWFfpoEXjmMCAwEA +AQKCAgAKVxMVNM+JZSyuWr6hHi/VndcPl8xxjShKRVxM9FDiS6wtqO7Bh+L5ETia +v6vP8ooIJ0ZaxtCBpuQpCrsATRlu3P3tG0ZWJnedONYWIxU+vMKHZt/rDdK3suDd +CHcq5dPxeyfLTt5tcRFeFpR0PorIuhuacA8Y9EsSnMZ6n0wgyjw9VUASQlsQG9kg +7gkq7LZddlEW3zg1fPLztgsNlxkQOhAq4MUwJscO1Z0ob+YiFwU0TTq88LxUkiV0 +HMFVBRMAvzcDwqnWwmhc9IJYZx8CXLEKPCTwNvobLTR/Ky32nC5mmctsA0uLiQm6 +cBQhEREOWOwU26VxLxnKIGX94tzpqL+k3sWzbfyW2PwCwm7tH18RQSQuwvzWavt0 +CKkQmPIvbJGGDxoNs4FC/NX+N0MXiDvPmN4FQeyPCsXsDW4NUsZy2iYmZO0DISsO +oDQGSVM2/dwP9ktKo781XliY91lPEQHTvbqPr89iiVIwPbV4RN+HFOblLn2vrR/2 +WloMyMKZEZgrEXLLHiwPveK6n8N1v8YxZwFMhJeBMZ2SNXrqcqrycp+/joKf0Lgg +MvrHu8DYMtlQyfVhAiFJvyL6YS3bVjfi1FEYX6FJn1vvSDQOQxPOLhkAnEoItwCY +R/D1QlyGA4GeDYQTEmz70J007V0koKZZFWUpv4InoUjumygaQQKCAQEA2hhXY3Xz +Wo4QtEBZkkG8NVXGY/k1IpCeER2MysgMAAFdO//bXQbaU7DeOi0AeSrkWz/rlfHR +nxtwgtfjt+0uyDLJlvKXscTDh2qZI9t9Z5ZnimAsawH6hrvfzJX1op/RqgG+edXi +2WrefpoAh8swMWljVO/wwai0b2ahFxsIZUU5XFu+ic4Cb/WTORftwY2yh61Qvsxk +jGNym8VywYJuT9a1HTFljNbEKgqlxBmZczMxgFs2zd+2hu3cITuHnM0YKwQN+sth +yDgemHIoFuI8mO3hKRYrOv+/iQslxt1Km0kFsiFetEr3oT5UizaTZ1Elu6mhKITm +U+fcrnQXWnDcGQKCAQEAy/VttR9pRuT/oW0d58hZRa5HKXoHbpG9IS0+MjlicOWq +ZWvfDag/CCRs6SEQfYWQfOs6AH8bMsjMZDWLXuE4obas7SS4/P7pA88Ix3BpFyGu +afpAwDA/sREe6D4DF9yGM02q66Bw5g/YiAW1TOBaXPWSjOfRNWI7zE+N/znaR/Pi +nfm9XEVuQcnCRlYojvosQ+k7+CU/7w4mTraVz3m86CLyo9k4jDtR3OZh8rjlfrMb +Mk272i+7xiSZkL35/7w3DwhSLm+GLuwHJ1OlEGzSrJx9be4aXDS0V/xWTTw5PzaC +lrNhMobgfWckrbVVHouqyzgSMd9NVdOkKUy3Dg4N2wKCAQEAojv/LbZ9Czyowl0o +BDsv9QDUbmPgGdE4NAUmSWYcPxjEsTA3jvDdEep8tQvq0TeN3S8kYUscIt43iK1t +8NDXvwbAnK/jFdMHnEE4n8rTc24XoYC/Ke6z3Ov+o+JdcdavEWbwuRLZB+COl+CZ +SmpkdC0wPeuqzXRgnInchSKP0T14WPLKPxpnB7/G/26EZzmvt2u+p9/FYAVOKP/s +yHPs+Sj/WzL2lpjgHWIEQ2bDlkVbql6v2t9ymNZxrKrqy0Jpmv4OJCSMnXLZl487 +sSIj76LsnjKmf+HlKd2IAXF14SOlwAdAup8Vq/WA0HoNlopvpjSd9FVAPOQ6be9f +u+A+aQKCAQEAtIJIUC62q+nsXGAIQaTNbaAqlwjLHw6ZBo3WJ/klqKl6vzxTMvEe +qAQk58c9ovncwNImiV31ImMYke/Zo2VNC8JzFYaUukSY0aggKvLP74r9pAm52N5a +4Ek4w25uqmWf2DP6+4MJqHOJvgjfRmShVPh6dX6NZ+PC7LXUBHidOWUdwZbQAqPo +Sw1XhYynZLMBDjGTw7Cj/tzVBoEN4YvqpsCXYm/TXjj54Ll9IqaFZjb58PFfOmFY +nKqzxqh8Y9ueFw3UPgiyB0EZq7KZugm2AtKVJ/+9ELIMknpfnweX2txRgzLK6T75 +28K3cY21Ac22oRjE8aKh/T3MYkjlEelaVQKCAQAQGuFJcOu0+E5A91+k+GbgFXmK +cmCEO8iNhEByvfZAMv23+ba8WeEcYJnTFUbyaoESXPPAkPSVeFvOy39Zbq1WAZ7c +BdZUEUONWE0n54ZnvArEKIsvF4YRz//KQ8SaXbhj1OMvhS5fRo3hBxCS3xWyF9sq +qM/AWdz3iGvP/ELpCOQrii//U3WaQvaY17QpqiJ7B9DvsWhDabRVlp6eKTKgAMLq +BlJpLz1tRfpVU+sLI+yvZAbwj6Izex80TXEhD9EMPLBgyIzM67+zdf6awB3mXGRA +zSvlO+eVQYQODNR52sD1+4ythePMC4SJiZyLzy7VnCfmoOPNyPldTxQGJLjE +-----END RSA PRIVATE KEY----- diff --git a/configs/ssl/public.pem b/configs/ssl/public.pem index 1e11f45..27a2e22 100644 --- a/configs/ssl/public.pem +++ b/configs/ssl/public.pem @@ -1,85 +1,85 @@ ------BEGIN CERTIFICATE----- -MIIF9jCCBN6gAwIBAgIMY/C5dNv6x+tP/WuUMA0GCSqGSIb3DQEBCwUAMGAxCzAJ -BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTYwNAYDVQQDEy1H -bG9iYWxTaWduIERvbWFpbiBWYWxpZGF0aW9uIENBIC0gU0hBMjU2IC0gRzIwHhcN -MTYwNzAxMTMyMzM0WhcNMTcwNzAyMTMyMzM0WjA5MSEwHwYDVQQLExhEb21haW4g -Q29udHJvbCBWYWxpZGF0ZWQxFDASBgNVBAMMCyouY29kZW15LnJ1MIICIjANBgkq -hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArcJkDivloDX2QRQE+s1jPH/pxq+oZGeS -Ne8aJVMXRu3IbIML+iJt0H0XGol9N9FkvSHF2G33oOmJ134Imd6BcQ/OQCT8J7Mv -Pbts5Y7LWBcwUomJ+QZq9qcHFVrcP95Q0wrZTV5f2zU468dz+eUnmWVfFYIR674Z -ImLLtc+bLl3NjzH6t23WrTiIUmPpe4dOH9CktKoUyfzgzFcXFOI967mooMAzhefK -zigr+5sU34SMbWLsczspC7cj22LRpIXowFeuRnoygXXVbDvRlgU2criLFqiDCwWq -i6OOVZMcNjqePwc41R4qdWeIf7mJ69xuPQtzHrO+rRC8mgGVSU+9nKunNq6tIxvO -OnK/TeOzaJoCx/yb7XsNcYCoue3ZV3emM2WeUB6MOxG41m9AFo9TKsHOtpFLx8ty -WTcypBWhr6xTYhNBGTiSUMofGZmM6sjcVyQT6pEFpx50DxZeTDhnO+wSi8NZRoNK -jqMo3wvrvJjcM1mzqRzHE5nyzU1/Gf/j5WCNdCC/+2Q8s+LXaKkm0iRUuSqmQVtp -kzaMCdEf33ELDshGXN4jCvTSG5w8fL+GdeZ8BpBPLob8qKkYU2kW3YqawQ9+bi7p -8MDs1ZCNtjScCzgtaNvoX/3/TFO4tSu/XCz5nGYKVYbjUrr1Mv9NldSIiua/hJOr -sWFfpoEXjmMCAwEAAaOCAdUwggHRMA4GA1UdDwEB/wQEAwIFoDCBlAYIKwYBBQUH -AQEEgYcwgYQwRwYIKwYBBQUHMAKGO2h0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5j -b20vY2FjZXJ0L2dzZG9tYWludmFsc2hhMmcycjEuY3J0MDkGCCsGAQUFBzABhi1o -dHRwOi8vb2NzcDIuZ2xvYmFsc2lnbi5jb20vZ3Nkb21haW52YWxzaGEyZzIwVgYD -VR0gBE8wTTBBBgkrBgEEAaAyAQowNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cu -Z2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCAYGZ4EMAQIBMAkGA1UdEwQCMAAw -QwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9n -c2RvbWFpbnZhbHNoYTJnMi5jcmwwIQYDVR0RBBowGIILKi5jb2RlbXkucnWCCWNv -ZGVteS5ydTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYE -FHlv5NiaqItBFuN0vudXy9jt1bLkMB8GA1UdIwQYMBaAFOpOfNSALeUVgYYmjIJt -wJikz5cPMA0GCSqGSIb3DQEBCwUAA4IBAQBfIs7hKJlHw5Hly/vVhjAQzX8qcN9H -ISyHjmU4KeMKtiq0RdvC2Jf1IQFmxvgmycrARH1Xc9cHoMXZ8prYonnXeRX7fqrL -hsjp6x87DxwDDXqblHqpoakFXhZhY2fJCeH+YQTrY37+hOy3qOreI3CiRK5N+BYF -PO78hVAa5TdawQGM3c1TeYIG3ZzQ3x2wVGAQNCXdwcJOLF9dl6z+syySTOGPABKN -rIEKOzc4ScqIHOzuQ1qTG2QcjwyH9tarDjJd79rnZUQzf1O58DwGwaQZwh6gjksz -QXZOLz6LR55gpBP8cGpqJIwOiZKjtLTqeE6q/kJ0C9sbxnNw9sCkeAhh ------END CERTIFICATE----- - -Корневой сертификат ------BEGIN CERTIFICATE----- -MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw -MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT -aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ -jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp -xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp -1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG -snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ -U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 -9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B -AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz -yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE -38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP -AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad -DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME -HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== ------END CERTIFICATE----- - -Промежуточный сертификат ------BEGIN CERTIFICATE----- -MIIEYzCCA0ugAwIBAgILBAAAAAABRE7wPiAwDQYJKoZIhvcNAQELBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw -MDBaFw0yNDAyMjAxMDAwMDBaMGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMTYwNAYDVQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0 -aW9uIENBIC0gU0hBMjU2IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK -AoIBAQCp3cwOs+IyOd1JIqgTaZOHiOEM7nF9vZCHll1Z8syz0lhXV/lG72wm2DZC -jn4wsy+aPlN7H262okxFHzzTFZMcie089Ffeyr3sBppqKqAZUn9R0XQ5CJ+r69eG -ExWXrjbDVGYOWvKgc4Ux47JkFGr/paKOJLu9hVIVonnu8LXuPbj0fYC82ZA1ZbgX -qa2zmJ+gfn1u+z+tfMIbWTaW2jcyS0tdNQJjjtunz2LuzC7Ujcm9PGqRcqIip3It -INH6yjfaGJjmFiRxJUvE5XuJUgkC/VkrBG7KB4HUs9ra2+PMgKhWBwZ8lgg3nds4 -tmI0kWIHdAE42HIw4uuQcSZiwFfzAgMBAAGjggElMIIBITAOBgNVHQ8BAf8EBAMC -AQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU6k581IAt5RWBhiaMgm3A -mKTPlw8wRwYDVR0gBEAwPjA8BgRVHSAAMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8v -d3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMDMGA1UdHwQsMCowKKAmoCSG -Imh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvcm9vdC5jcmwwPQYIKwYBBQUHAQEE -MTAvMC0GCCsGAQUFBzABhiFodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9yb290 -cjEwHwYDVR0jBBgwFoAUYHtmGkUNl8qJUC99BM00qP/8/UswDQYJKoZIhvcNAQEL -BQADggEBANdFnqDc4ONhWgt9d4QXLWVagpqNoycqhffJ7+mG/dRHzQFSlsVDvTex -4bjyqdKKEYRxkRWJ3AKdC8tsM4U0KJ4gsrGX3G0LEME8zV/qXdeYMcU0mVwAYVXE -GwJbxeOJyLS4bx448lYm6UHvPc2smU9ZSlctS32ux4j71pg79eXw6ImJuYsDy1oj -H6T9uOr7Lp2uanMJvPzVoLVEgqtEkS5QLlfBQ9iRBIvpES5ftD953x77PzAAi1Pj -tywdO02L3ORkHQRYM68bVeerDL8wBHTk8w4vMDmNSwSMHnVmZkngvkA0x1xaUZK6 -EjxS1QSCVS1npd+3lXzuP8MIugS+wEY= +-----BEGIN CERTIFICATE----- +MIIF9jCCBN6gAwIBAgIMY/C5dNv6x+tP/WuUMA0GCSqGSIb3DQEBCwUAMGAxCzAJ +BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTYwNAYDVQQDEy1H +bG9iYWxTaWduIERvbWFpbiBWYWxpZGF0aW9uIENBIC0gU0hBMjU2IC0gRzIwHhcN +MTYwNzAxMTMyMzM0WhcNMTcwNzAyMTMyMzM0WjA5MSEwHwYDVQQLExhEb21haW4g +Q29udHJvbCBWYWxpZGF0ZWQxFDASBgNVBAMMCyouY29kZW15LnJ1MIICIjANBgkq +hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArcJkDivloDX2QRQE+s1jPH/pxq+oZGeS +Ne8aJVMXRu3IbIML+iJt0H0XGol9N9FkvSHF2G33oOmJ134Imd6BcQ/OQCT8J7Mv +Pbts5Y7LWBcwUomJ+QZq9qcHFVrcP95Q0wrZTV5f2zU468dz+eUnmWVfFYIR674Z +ImLLtc+bLl3NjzH6t23WrTiIUmPpe4dOH9CktKoUyfzgzFcXFOI967mooMAzhefK +zigr+5sU34SMbWLsczspC7cj22LRpIXowFeuRnoygXXVbDvRlgU2criLFqiDCwWq +i6OOVZMcNjqePwc41R4qdWeIf7mJ69xuPQtzHrO+rRC8mgGVSU+9nKunNq6tIxvO +OnK/TeOzaJoCx/yb7XsNcYCoue3ZV3emM2WeUB6MOxG41m9AFo9TKsHOtpFLx8ty +WTcypBWhr6xTYhNBGTiSUMofGZmM6sjcVyQT6pEFpx50DxZeTDhnO+wSi8NZRoNK +jqMo3wvrvJjcM1mzqRzHE5nyzU1/Gf/j5WCNdCC/+2Q8s+LXaKkm0iRUuSqmQVtp +kzaMCdEf33ELDshGXN4jCvTSG5w8fL+GdeZ8BpBPLob8qKkYU2kW3YqawQ9+bi7p +8MDs1ZCNtjScCzgtaNvoX/3/TFO4tSu/XCz5nGYKVYbjUrr1Mv9NldSIiua/hJOr +sWFfpoEXjmMCAwEAAaOCAdUwggHRMA4GA1UdDwEB/wQEAwIFoDCBlAYIKwYBBQUH +AQEEgYcwgYQwRwYIKwYBBQUHMAKGO2h0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5j +b20vY2FjZXJ0L2dzZG9tYWludmFsc2hhMmcycjEuY3J0MDkGCCsGAQUFBzABhi1o +dHRwOi8vb2NzcDIuZ2xvYmFsc2lnbi5jb20vZ3Nkb21haW52YWxzaGEyZzIwVgYD +VR0gBE8wTTBBBgkrBgEEAaAyAQowNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cu +Z2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCAYGZ4EMAQIBMAkGA1UdEwQCMAAw +QwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9n +c2RvbWFpbnZhbHNoYTJnMi5jcmwwIQYDVR0RBBowGIILKi5jb2RlbXkucnWCCWNv +ZGVteS5ydTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYE +FHlv5NiaqItBFuN0vudXy9jt1bLkMB8GA1UdIwQYMBaAFOpOfNSALeUVgYYmjIJt +wJikz5cPMA0GCSqGSIb3DQEBCwUAA4IBAQBfIs7hKJlHw5Hly/vVhjAQzX8qcN9H +ISyHjmU4KeMKtiq0RdvC2Jf1IQFmxvgmycrARH1Xc9cHoMXZ8prYonnXeRX7fqrL +hsjp6x87DxwDDXqblHqpoakFXhZhY2fJCeH+YQTrY37+hOy3qOreI3CiRK5N+BYF +PO78hVAa5TdawQGM3c1TeYIG3ZzQ3x2wVGAQNCXdwcJOLF9dl6z+syySTOGPABKN +rIEKOzc4ScqIHOzuQ1qTG2QcjwyH9tarDjJd79rnZUQzf1O58DwGwaQZwh6gjksz +QXZOLz6LR55gpBP8cGpqJIwOiZKjtLTqeE6q/kJ0C9sbxnNw9sCkeAhh +-----END CERTIFICATE----- + +Корневой сертификат +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw +MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT +aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ +jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp +xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp +1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG +snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ +U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 +9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B +AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz +yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE +38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP +AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad +DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME +HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +Промежуточный сертификат +-----BEGIN CERTIFICATE----- +MIIEYzCCA0ugAwIBAgILBAAAAAABRE7wPiAwDQYJKoZIhvcNAQELBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw +MDBaFw0yNDAyMjAxMDAwMDBaMGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMTYwNAYDVQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0 +aW9uIENBIC0gU0hBMjU2IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCp3cwOs+IyOd1JIqgTaZOHiOEM7nF9vZCHll1Z8syz0lhXV/lG72wm2DZC +jn4wsy+aPlN7H262okxFHzzTFZMcie089Ffeyr3sBppqKqAZUn9R0XQ5CJ+r69eG +ExWXrjbDVGYOWvKgc4Ux47JkFGr/paKOJLu9hVIVonnu8LXuPbj0fYC82ZA1ZbgX +qa2zmJ+gfn1u+z+tfMIbWTaW2jcyS0tdNQJjjtunz2LuzC7Ujcm9PGqRcqIip3It +INH6yjfaGJjmFiRxJUvE5XuJUgkC/VkrBG7KB4HUs9ra2+PMgKhWBwZ8lgg3nds4 +tmI0kWIHdAE42HIw4uuQcSZiwFfzAgMBAAGjggElMIIBITAOBgNVHQ8BAf8EBAMC +AQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU6k581IAt5RWBhiaMgm3A +mKTPlw8wRwYDVR0gBEAwPjA8BgRVHSAAMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8v +d3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMDMGA1UdHwQsMCowKKAmoCSG +Imh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvcm9vdC5jcmwwPQYIKwYBBQUHAQEE +MTAvMC0GCCsGAQUFBzABhiFodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9yb290 +cjEwHwYDVR0jBBgwFoAUYHtmGkUNl8qJUC99BM00qP/8/UswDQYJKoZIhvcNAQEL +BQADggEBANdFnqDc4ONhWgt9d4QXLWVagpqNoycqhffJ7+mG/dRHzQFSlsVDvTex +4bjyqdKKEYRxkRWJ3AKdC8tsM4U0KJ4gsrGX3G0LEME8zV/qXdeYMcU0mVwAYVXE +GwJbxeOJyLS4bx448lYm6UHvPc2smU9ZSlctS32ux4j71pg79eXw6ImJuYsDy1oj +H6T9uOr7Lp2uanMJvPzVoLVEgqtEkS5QLlfBQ9iRBIvpES5ftD953x77PzAAi1Pj +tywdO02L3ORkHQRYM68bVeerDL8wBHTk8w4vMDmNSwSMHnVmZkngvkA0x1xaUZK6 +EjxS1QSCVS1npd+3lXzuP8MIugS+wEY= -----END CERTIFICATE----- \ No newline at end of file diff --git a/configs/supervisor.conf b/configs/supervisor.conf index 945e339..665d554 100644 --- a/configs/supervisor.conf +++ b/configs/supervisor.conf @@ -1,8 +1,8 @@ -[program:codemy] -command=/usr/bin/uwsgi --ini /var/www/configs/codemy/uwsgi.ini -directory=/var/www/projects/codemy -user=www-data -group=www-data -autostart=true -autorestart=true +[program:codemy] +command=/usr/bin/uwsgi --ini /var/www/configs/codemy/uwsgi.ini +directory=/var/www/projects/codemy +user=www-data +group=www-data +autostart=true +autorestart=true stderr_logfile=/var/www/logs/codemy/supervisor-errors.log \ No newline at end of file diff --git a/configs/uwsgi.ini b/configs/uwsgi.ini index fe093b1..76248a7 100644 --- a/configs/uwsgi.ini +++ b/configs/uwsgi.ini @@ -1,15 +1,15 @@ -[uwsgi] -chdir = /var/www/projects/codemy/ -env = DJANGO_SETTINGS_MODULE=lms.settings -module = lms.wsgi:application -home = /var/www/.envs/codemy/ -master = true -threads = 3 -processes = 2 -socket = /var/www/run/codemy.sock -chmod-socket = 777 -vacuum = true -harakiri = 20 -plugins=python34 -uid = www-data -gid = www-data +[uwsgi] +chdir = /var/www/projects/codemy/ +env = DJANGO_SETTINGS_MODULE=lms.settings +module = lms.wsgi:application +home = /var/www/.envs/codemy/ +master = true +threads = 3 +processes = 2 +socket = /var/www/run/codemy.sock +chmod-socket = 777 +vacuum = true +harakiri = 20 +plugins=python34 +uid = www-data +gid = www-data diff --git a/courses/__init__.py b/courses/__init__.py old mode 100755 new mode 100644 diff --git a/courses/admin.py b/courses/admin.py old mode 100755 new mode 100644 index 619c731..b98cd43 --- a/courses/admin.py +++ b/courses/admin.py @@ -1,133 +1,133 @@ -from django.contrib import admin - -from access.models import User -from courses.models import Lesson, Course, CourseTheme, Homework, Exam, \ - Skills, Achievements, SkillJ, CourseMap, \ - AchievementsMap, Diploma, MaterialDirection, Flow - - -class LessonAdmin(admin.ModelAdmin): - list_display = ('id', 'get_title', 'sort', 'theme', 'token', 'on_comment') - raw_id_fields = ['materials'] - search_fields = ['title', 'sort', 'id', 'token'] - list_filter = ['course', 'on_comment', 'theme'] - - def get_title(self, obj): - return obj.title[:100] - -admin.site.register(Lesson, LessonAdmin) - - -class MaterialDirectionAdmin(admin.ModelAdmin): - list_display = ('title', 'color',) - raw_id_fields = ['mentors'] - - def formfield_for_manytomany(self, db_field, request, **kwargs): - if db_field.name == "mentors": - kwargs["queryset"] = User.objects.filter(in_role='S2') - return super( - MaterialDirectionAdmin, self).formfield_for_manytomany( - db_field, request, **kwargs) - -admin.site.register(MaterialDirection, MaterialDirectionAdmin) - - -class CourseAdmin(admin.ModelAdmin): - list_display = ('title', 'id', 'direction', 'must_build', 'public', ) - list_filter = ('direction', ) - raw_id_fields = ['teachers'] - search_fields = ['title', 'id'] - filter_horizontal = ['recommend', 'keywords'] - - def formfield_for_manytomany(self, db_field, request, **kwargs): - if db_field.name == "teachers": - kwargs["queryset"] = User.objects.filter(in_role='T') - - if db_field.name == "mentors": - kwargs["queryset"] = User.objects.filter(in_role='S2') - - return super(CourseAdmin, self).formfield_for_manytomany(db_field, request, **kwargs) - -admin.site.register(Course, CourseAdmin) - - -class CourseThemeAdmin(admin.ModelAdmin): - list_display = ('id', 'sort', 'title', 'course', '_type', 'price_type', 'on_comment', ) - list_filter = ['course', '_type', 'on_comment'] - search_fields = ['title', 'sort'] - -admin.site.register(CourseTheme, CourseThemeAdmin) - - -class HomeworkAdmin(admin.ModelAdmin): - list_display = ('id', 'course', 'theme', 'token') - search_fields = ['id', 'theme', 'course', 'token'] - list_filter = ('course',) - raw_id_fields = ('theme', 'course', 'materials', ) - -admin.site.register(Homework, HomeworkAdmin) - - -class ExamAdmin(admin.ModelAdmin): - list_display = ('course', 'token', ) - raw_id_fields = ['materials'] - search_fields = ['id', 'course__title'] - -admin.site.register(Exam, ExamAdmin) - - -class SkillsAdmin(admin.ModelAdmin): - list_display = ('title', 'color', 'mini_icon', 'big_icon') - search_fields = ['title'] - -admin.site.register(Skills, SkillsAdmin) - - -class AchievementsAdmin(admin.ModelAdmin): - list_display = ('id', 'title', 'icon', 'image', 'background', 'border',) - - -admin.site.register(Achievements, AchievementsAdmin) - - -class SkillJAdmin(admin.ModelAdmin): - list_display = ('skill', 'lesson', 'size',) - raw_id_fields = ['lesson'] - list_filter = ['lesson__course'] - -admin.site.register(SkillJ, SkillJAdmin) - - -class CourseMapAdmin(admin.ModelAdmin): - list_display = ('id', 'course', 'lesson', 'homework', 'exam', 'sort', 'token', ) - raw_id_fields = ['course', 'lesson', 'homework', 'exam'] - list_filter = ('course',) - search_fields = ['lesson_id'] - -admin.site.register(CourseMap, CourseMapAdmin) - - -class AchievementsMapAdmin(admin.ModelAdmin): - list_display = ('id', 'point', 'achiv', 'after', ) - raw_id_fields = ['point'] - - -admin.site.register(AchievementsMap, AchievementsMapAdmin) - - -class DiplomaAdmin(admin.ModelAdmin): - list_filter = ('course__title', 'key', ) - search_fields = ['course__title'] - - -admin.site.register(Diploma, DiplomaAdmin) - -class FlowAdmin(admin.ModelAdmin): - save_on_top = True - list_display = ('title', 'course', 'start_flow') - raw_id_fields = ['course'] - list_filter = ('start_flow','course') - search_fields = ['title', 'description'] - -admin.site.register(Flow, FlowAdmin) - +from django.contrib import admin + +from access.models import User +from courses.models import Lesson, Course, CourseTheme, Homework, Exam, \ + Skills, Achievements, SkillJ, CourseMap, \ + AchievementsMap, Diploma, MaterialDirection, Flow + + +class LessonAdmin(admin.ModelAdmin): + list_display = ('id', 'get_title', 'sort', 'theme', 'token', 'on_comment') + raw_id_fields = ['materials'] + search_fields = ['title', 'sort', 'id', 'token'] + list_filter = ['course', 'on_comment', 'theme'] + + def get_title(self, obj): + return obj.title[:100] + +admin.site.register(Lesson, LessonAdmin) + + +class MaterialDirectionAdmin(admin.ModelAdmin): + list_display = ('title', 'color',) + raw_id_fields = ['mentors'] + + def formfield_for_manytomany(self, db_field, request, **kwargs): + if db_field.name == "mentors": + kwargs["queryset"] = User.objects.filter(in_role='S2') + return super( + MaterialDirectionAdmin, self).formfield_for_manytomany( + db_field, request, **kwargs) + +admin.site.register(MaterialDirection, MaterialDirectionAdmin) + + +class CourseAdmin(admin.ModelAdmin): + list_display = ('title', 'id', 'direction', 'must_build', 'public', ) + list_filter = ('direction', ) + raw_id_fields = ['teachers'] + search_fields = ['title', 'id'] + filter_horizontal = ['recommend', 'keywords'] + + def formfield_for_manytomany(self, db_field, request, **kwargs): + if db_field.name == "teachers": + kwargs["queryset"] = User.objects.filter(in_role='T') + + if db_field.name == "mentors": + kwargs["queryset"] = User.objects.filter(in_role='S2') + + return super(CourseAdmin, self).formfield_for_manytomany(db_field, request, **kwargs) + +admin.site.register(Course, CourseAdmin) + + +class CourseThemeAdmin(admin.ModelAdmin): + list_display = ('id', 'sort', 'title', 'course', '_type', 'price_type', 'on_comment', ) + list_filter = ['course', '_type', 'on_comment'] + search_fields = ['title', 'sort'] + +admin.site.register(CourseTheme, CourseThemeAdmin) + + +class HomeworkAdmin(admin.ModelAdmin): + list_display = ('id', 'course', 'theme', 'token') + search_fields = ['id', 'theme', 'course', 'token'] + list_filter = ('course',) + raw_id_fields = ('theme', 'course', 'materials', ) + +admin.site.register(Homework, HomeworkAdmin) + + +class ExamAdmin(admin.ModelAdmin): + list_display = ('course', 'token', ) + raw_id_fields = ['materials'] + search_fields = ['id', 'course__title'] + +admin.site.register(Exam, ExamAdmin) + + +class SkillsAdmin(admin.ModelAdmin): + list_display = ('title', 'color', 'mini_icon', 'big_icon') + search_fields = ['title'] + +admin.site.register(Skills, SkillsAdmin) + + +class AchievementsAdmin(admin.ModelAdmin): + list_display = ('id', 'title', 'icon', 'image', 'background', 'border',) + + +admin.site.register(Achievements, AchievementsAdmin) + + +class SkillJAdmin(admin.ModelAdmin): + list_display = ('skill', 'lesson', 'size',) + raw_id_fields = ['lesson'] + list_filter = ['lesson__course'] + +admin.site.register(SkillJ, SkillJAdmin) + + +class CourseMapAdmin(admin.ModelAdmin): + list_display = ('id', 'course', 'lesson', 'homework', 'exam', 'sort', 'token', ) + raw_id_fields = ['course', 'lesson', 'homework', 'exam'] + list_filter = ('course',) + search_fields = ['lesson_id'] + +admin.site.register(CourseMap, CourseMapAdmin) + + +class AchievementsMapAdmin(admin.ModelAdmin): + list_display = ('id', 'point', 'achiv', 'after', ) + raw_id_fields = ['point'] + + +admin.site.register(AchievementsMap, AchievementsMapAdmin) + + +class DiplomaAdmin(admin.ModelAdmin): + list_filter = ('course__title', 'key', ) + search_fields = ['course__title'] + + +admin.site.register(Diploma, DiplomaAdmin) + +class FlowAdmin(admin.ModelAdmin): + save_on_top = True + list_display = ('title', 'course', 'start_flow') + raw_id_fields = ['course'] + list_filter = ('start_flow','course') + search_fields = ['title', 'description'] + +admin.site.register(Flow, FlowAdmin) + diff --git a/courses/api.py b/courses/api.py old mode 100755 new mode 100644 index 86c16b7..b1c74eb --- a/courses/api.py +++ b/courses/api.py @@ -1,912 +1,912 @@ -# coding=utf-8 -import datetime -import re -from django.db.models import Q -from access.models import User, ActionJ -from lms.decors import api_decor -from courses.models import Course, Lesson, Homework, CourseTheme -from courses.templates import comment_fabric -from journals.models import AchievementJ, LessonJ, HomeworkJ, ExamJ, check_journal, HomeworkTry, ExamTry -from finance.models import Bill -from courses.tools import set_read_flag, get_next_button -from management.letters import sent_comment_news, sent_teacher_answer, sent_to_teacher_answer, letter_delete_comment, \ - sent_new_comment -from management.models import Comment -from lms.settings import DOMAIN -from storage.models import Storage -from library.models import Article -import django.utils.timezone - - -@api_decor(without_auth=False, method='POST', need_keys=['id', 'material_id', 'text', 'type'], check_request=True) -def sent_comment_response(request, context): - try: - response = Comment.objects.get(id=request.POST['id']) - except Comment: - context['code'] = '0' - context['response'] = u'Исходный комментарий не найден' - return context - comment = Comment.objects.create(owner=request.user, text=request.POST['text'], parent_id=response.id) - - if request.POST['type'] == 'L': - try: - material = Article.objects.get(id=request.POST['material_id']) - except Article.DoesNotExists: - context['code'] = '0' - context['response'] = u'Статья не найдена' - return context - - elif request.POST['type'] == 'A': - try: - material = Lesson.objects.get(id=request.POST['material_id']) - except Lesson.DoesNotExists: - context['code'] = '0' - context['response'] = u'Урок не найден' - return context - - response.replies.add(comment) - response.response_comment = comment - response.response = True - response.saw.add(request.user) - if response.owner.check_subscription('new_comment'): - sent_comment_news(response, comment, material, _type=request.POST['type']) - response.save() - material.comments.add(comment) - material.save() - context['code'] = '1' - return context - - -@api_decor(without_auth=False, method='POST', need_keys=['id'], check_request=True) -def close_achievement(request, context): - # Пометка ачивки, как прочитанной - a = AchievementJ.objects.get(id=request.POST['id']) - a.got = True - a.save() - context['code'] = '1' - return context - - -@api_decor(without_auth=False) -def get_achievement(request, context): - # Получение ачивки пользователя, первой в очереди, не прочитанной - context['code'] = '0' - a = AchievementJ.objects.filter(student=request.user, got=False).first() - if a: - context['code'] = '1' - context['data'] = { - 'id': a.id, - 'title': a.title, - 'text': a.text, - 'image': a.achievement.image.url, - 'border': a.achievement.border, - 'background': a.achievement.background - } - return context - - -@api_decor(without_auth=False) -def get_process_vector(request, context): - return context - - -@api_decor(without_auth=False, need_keys=['id', 'user'], method='GET', check_request=True) -def check_bill(request, context): - # Проверка оплаты - # TODO: Применить новую модель доступов - course = Course.objects.get(id=request.GET['id']) - user = User.objects.get(id=request.GET['user']) - context['code'] = '0' - if Bill.objects.filter(service__course=course, user=user, status='F').exists(): - context['code'] = '1' - return context - - -@api_decor(without_auth=False, need_keys=['lesson'], method='POST', check_request=True) -def read_lesson(request, context): - # Пометка урока как прочитанного - context['code'] = '1' - try: - lesson = Lesson.objects.get(id=request.POST['lesson']) - journal = LessonJ.objects.get(student=request.user, material=Lesson.objects.get(id=request.POST['lesson'])) - except Lesson.DoesNotExist: - context['code'] = '0' - except LessonJ.DoesNotExist: - context['code'] = '0' - else: - context['data'] = [journal.id, lesson.id] - journal.saw_this() - return context - - -@api_decor(without_auth=False) -def sent_lesson_comment(request, context): - # Отправка комментария урока - if request.POST['comment_sent_text']: - lesson = Lesson.objects.get(id=request.POST['comment_for_lesson_id']) - parent_id = request.POST['reply_for_comment_id'] - comment = Comment.objects.create(parent_id=parent_id, owner=request.user, - text=request.POST['comment_sent_text'], date=django.utils.timezone.now()) - - lesson.comments.add(comment) - lesson.save() - # Получение о добавление файлов комментария - r = re.compile('^file_') - files_keys = [] - for i in request.POST.keys(): - if r.match(i): files_keys.append(i) - - if files_keys: - for i in files_keys: - comment.files.add(Storage.objects.get(key=request.POST[i])) - comment.save() - - if parent_id != '0': - comment2 = Comment.objects.get(id=parent_id) - if comment2.owner.check_subscription('new_comment'): - sent_comment_news(comment2, comment, lesson) - context['code'] = '1' - context['data'] = comment.id - - if not comment.send: - for eye in User.objects.filter(in_role='S2'): - sent_new_comment(comment, lesson, eye.email) - - context['code'] = '1' - return context - - -@api_decor(without_auth=True, need_keys=['lesson'], method='POST', check_request=True) -def load_lesson_comments(request, context): - # Загрузка списка комментариев - lesson = Lesson.objects.get(id=request.POST['lesson']) - context['data'] = lesson.get_comments(_user=request.user) - - if len(context['data']) == 0: - context['code'] = '0' - else: - context['code'] = '1' - return context - - -@api_decor(without_auth=True, need_keys=['id'], method='POST', check_request=True) -def load_comment(request, context): - try: - comment = Comment.objects.get(id=request.POST['id']) - except Comment.DoesNotExist: - context['code'] = '0' - else: - context['data'] = comment.get_face(__user=request.user) - return context - - -@api_decor(without_auth=False) -def sent_homework_comment(request, context): - # Отправка ДЗ попытки - context['data'] = {} - context['code'] = '0' - if request.POST['homework_text']: - homework = HomeworkJ.objects.get(id=request.POST['homework_id'], student=request.user) - h_status = homework.get_status_flag() - if h_status not in ['N', 'F']: - ht, c = HomeworkTry.objects.get_or_create(parent=homework, success=False, f_date=None, student=request.user, - material=homework.material) - comment = Comment.objects.create(owner=request.user, text=request.POST['homework_text'], - date=django.utils.timezone.now()) - ht.comments.add(comment) - ht.save() - if c: - action = ActionJ.objects.create(student=homework.student, - a_type='I', - place=u'Курс '+u'\xab'+u'{0}'.format(homework.material.course.get_title())+u'\xbb'+u', домашнее задание # {0}'.format(homework.material.theme.sort), - text=u'Ваше домашнее задание отправлено на проверку.' - u''.format(homework.material.id, comment.id, DOMAIN)) - homework.date = datetime.datetime.now() - if homework.student.check_subscription('teacher'): - sent_teacher_answer(action) - - # Отправка письма и активности преподавателю - sent_to_teacher_answer(ActionJ.objects.create( - student=ht.teacher, - place=u'Студент: {0}, домашнее задание # {1}'.format( - homework.student, - homework.material.theme.sort), - text=u'Текст: {0}
Перейти к проверке'.format(comment.text, - homework.id, DOMAIN), - a_type='I' - )) - - # Проверка и загрузка файлов - r = re.compile('^file_') - files_keys = [] - for i in request.POST.keys(): - if r.match(i): files_keys.append(i) - - if files_keys: - for i in files_keys: - comment.files.add(Storage.objects.get(key=request.POST[i])) - comment.save() - - context['code'] = '1' - context['data'] = {'try': ht.get_head_face(), 'comment': comment.get_face()} - - return context - - -@api_decor(without_auth=False) -def send_cancel_teach_comment(request, context): - # Отправка на доработку для преподавателя - # TODO: Перейти на модель попыток - if request.POST['comment_sent_text']: - lesson = HomeworkJ.objects.get(student__id=request.POST['comment_for_user_id'], - material__theme=request.POST['comment_for_theme_id'], teacher=request.user) - parent_id = request.POST['reply_for_comment_id'] - comment = Comment.objects.create(parent_id=parent_id, owner=request.user, status='F', - text=request.POST['comment_sent_text'], date=django.utils.timezone.now()) - lesson.comments.add(comment) - if lesson.status != 'F': - lesson.status = 'E' - action = ActionJ.objects.create(student=lesson.student, - a_type='D', - place=u'Курс '+u'\xab'+u'{0}'.format(lesson.homework.course.get_title())+u'\xbb'+u', домашнее задание # {0}'.format(lesson.homework.theme.sort), - text=u'Ваше домашнее задание проверено преподавателем. ' - u'Вам необходимо провести работу над ошибками' - u''.format( - lesson.material.id, comment.id, DOMAIN)) - if lesson.student.check_subscription('teacher'): - sent_teacher_answer(action) - - lesson.save() - - r = re.compile('^file_') - files_keys = [] - for i in request.POST.keys(): - if r.match(i): files_keys.append(i) - - if files_keys: - for i in files_keys: - comment.files.add(Storage.objects.get(key=request.POST[i])) - comment.save() - - if parent_id != '0': - comment2 = Comment.objects.get(id=parent_id) - if comment2.owner.check_subscription('new_comment'): - sent_comment_news(comment2, comment, lesson) - context['code'] = '1' - context['data'] = comment.id - context['code'] = '1' - return context - - -@api_decor(without_auth=False) -def send_accept_teach_comment(request, context): - # Одобрение попытки ДЗ для преподавателя - # TODO: Перейти на модель попыток - lesson = HomeworkJ.objects.get(student__id=request.POST['comment_for_user_id'], - material__theme=request.POST['comment_for_theme_id'], teacher=request.user) - parent_id = request.POST['reply_for_comment_id'] - comment = Comment.objects.create(parent_id=parent_id, owner=request.user, status='G', - text=request.POST['comment_sent_text'] + get_next_button(lesson.student, "H", - lesson.homework.theme.id), - date=django.utils.timezone.now()) - lesson.comments.add(comment) - if lesson.status != 'F': - lesson.status = 'F' - action = ActionJ.objects.create(student=lesson.student, - a_type='S', - place=u'Курс '+u'\xab'+u'{0}'.format(lesson.homework.course.get_title())+u'\xbb'+u', домашнее задание # {0}'.format( - lesson.homework.theme.sort), - text=u'Ваше домашнее задание одобрено преподавателем.'.format( - lesson.material.id, comment.id, DOMAIN)) - if lesson.student.check_subscription('teacher'): - sent_teacher_answer(action) - - set_read_flag(lesson.student, lesson.homework.course) - lesson.save() - - r = re.compile('^file_') - files_keys = [] - for i in request.POST.keys(): - if r.match(i): files_keys.append(i) - - if files_keys: - for i in files_keys: - comment.files.add(Storage.objects.get(key=request.POST[i])) - comment.save() - - if parent_id != '0': - comment2 = Comment.objects.get(id=parent_id) - if comment2.owner.check_subscription('new_comment'): - sent_comment_news(comment2, comment, lesson) - context['code'] = '1' - context['data'] = comment.id - return context - - -@api_decor(without_auth=False) -def send_exam_cancel_teach_comment(request, context): - # Отправка попытки на доработку для преподавателя - # TODO: Перейти на модель попыток - if request.POST['comment_sent_text']: - lesson = ExamJ.objects.get(student__id=request.POST['comment_for_user_id'], - material__course__id=request.POST['comment_for_theme_id'], teacher=request.user) - parent_id = request.POST['reply_for_comment_id'] - comment = Comment.objects.create(parent_id=parent_id, owner=request.user, status='F', - text=request.POST['comment_sent_text'], date=django.utils.timezone.now()) - lesson.comments.add(comment) - if lesson.status != 'F': - lesson.status = 'E' - action = ActionJ.objects.create(student=lesson.student, - a_type='D', - place=u'Экзаменационная работа '+u'\xab'+u'{0}'.format(lesson.exam.course.get_title())+u'\xbb', - text=u'Ваша работа отправлена на доработку. ' - u'' - u'Вам необходимо провести работу над ошибками'.format( - lesson.material.id, DOMAIN)) - if lesson.student.check_subscription('teacher'): - sent_teacher_answer(action) - - lesson.save() - - r = re.compile('^file_') - files_keys = [] - for i in request.POST.keys(): - if r.match(i): files_keys.append(i) - - if files_keys: - for i in files_keys: - comment.files.add(Storage.objects.get(key=request.POST[i])) - comment.save() - - if parent_id != '0': - comment2 = Comment.objects.get(id=parent_id) - if comment2.owner.check_subscription('new_comment'): - sent_comment_news(comment2, comment, lesson) - context['code'] = '1' - context['data'] = comment.id - context['code'] = '1' - return context - - -@api_decor(without_auth=False) -def send_exam_accept_teach_comment(request, context): - # Принятие экзамена для преподавателя - # TODO: Перейти на модель попыток - lesson = ExamJ.objects.get(student__id=request.POST['comment_for_user_id'], - material__course__id=request.POST['comment_for_theme_id'], teacher=request.user) - parent_id = request.POST['reply_for_comment_id'] - comment = Comment.objects.create(parent_id=parent_id, owner=request.user, status='G', - text=request.POST['comment_sent_text'] + - request.POST['comment_sent_text'] + get_next_button(lesson.student, "E", - lesson.exam.course.id), - date=django.utils.timezone.now()) - lesson.comments.add(comment) - if lesson.status != 'F': - lesson.status = 'F' - action = ActionJ.objects.create(student=lesson.student, - a_type='W', - place=u'Экзаменационная работа '+u'\xab'+u'{0}'.format(lesson.exam.course.get_title())+u'\xbb', - text=u'Ваша экзаменационная работа принята преподователем. ' - u'Поздравляем вас!'.format( - lesson.material.id, DOMAIN)) - if lesson.student.check_subscription('teacher'): - sent_teacher_answer(action) - - lesson.save() - # TODO: Много повторений в других методах, переделать на отдельный метод - r = re.compile('^file_') - files_keys = [] - for i in request.POST.keys(): - if r.match(i): files_keys.append(i) - - if files_keys: - for i in files_keys: - comment.files.add(Storage.objects.get(key=request.POST[i])) - comment.save() - - if parent_id != '0': - comment2 = Comment.objects.get(id=parent_id) - if comment2.owner.check_subscription('new_comment'): - sent_comment_news(comment2, comment, lesson) - context['code'] = '1' - context['data'] = comment.id - return context - - -@api_decor(without_auth=False, need_keys=['theme', 'student'], method='POST', check_request=True) -def load_homework_comments_for_teacher(request, context): - # Получение комментариев для преподавателя - # TODO: Перейти на модель попыток - homework = HomeworkJ.objects.get(material__theme__id=request.POST['theme'], student__id=request.POST['student'], - teacher=request.user) - context['data'] = [] - for i in homework.comments.filter(parent_id='0').order_by('date'): - context['data'].append(comment_fabric(i, __user=request.user)) - - if len(context['data']) == 0: - context['code'] = '0' - else: - context['code'] = '1' - return context - - -@api_decor(without_auth=False, need_keys=['theme', 'student'], method='POST', check_request=True) -def load_exam_comments_for_teacher(request, context): - # Полечение попыток экзамена - # TODO: Перейти на модель попыток - homework = ExamJ.objects.get(material__course__id=request.POST['theme'], student__id=request.POST['student'], - teacher=request.user) - context['data'] = [] - for i in homework.comments.filter(parent_id='0').order_by('date'): - context['data'].append(comment_fabric(i, __user=request.user)) - - if len(context['data']) == 0: - context['code'] = '0' - else: - context['code'] = '1' - return context - - -@api_decor(without_auth=False, need_keys=['homework'], method='POST', check_request=True) -def load_homework_comments(request, context): - # Загрузка комментариев по ДЗ - # TODO: Перейти на модель попыток - homework = HomeworkJ.objects.get(material__id=request.POST['homework'], student=request.user) - context['data'] = [] - for i in homework.comments.filter(parent_id='0').order_by('date'): - context['data'].append(comment_fabric(i, __user=request.user)) - - if len(context['data']) == 0: - context['code'] = '0' - else: - context['code'] = '1' - return context - - -@api_decor(without_auth=False) -def sent_exam_comment(request, context): - # Отправка попытки сутедентом - context['data'] = {} - context['code'] = '0' - if request.POST['exam_text']: - exam = ExamJ.objects.get(id=request.POST['exam_id'], student=request.user) - h_status = exam.get_status_flag() - if h_status not in ['N', 'F']: - ht, c = ExamTry.objects.get_or_create(parent=exam, success=False, f_date=None, student=request.user, - material=exam.material) - comment = Comment.objects.create(owner=request.user, text=request.POST['exam_text'], - date=django.utils.timezone.now()) - ht.comments.add(comment) - ht.save() - if c: - action = ActionJ.objects.create(student=exam.student, - a_type='I', - place=u'Курс '+u'\xab'+u'{0}'.format( - exam.material.course.get_title())+u'\xbb'+u', Экзаменационная работа', - text=u'Ваша экзаменационная работа отправлена на проверку.' - u''.format(exam.material.id, comment.id, DOMAIN)) - exam.date = datetime.datetime.now() - if exam.student.check_subscription('teacher'): - sent_teacher_answer(action) - - # Отправка письма и активности преподавателю - sent_to_teacher_answer(ActionJ.objects.create( - student=ht.teacher, - place=u'Студент: {0}, Экзамен'.format(exam.student), - text=u'Текст: {0}
Перейти к проверке'.format(comment.text, exam.id, DOMAIN), - a_type='P' - )) - # Проверка и загрузка файлов - r = re.compile('^file_') - files_keys = [] - for i in request.POST.keys(): - if r.match(i): files_keys.append(i) - - if files_keys: - for i in files_keys: - comment.files.add(Storage.objects.get(key=request.POST[i])) - comment.save() - - context['code'] = '1' - context['data'] = {'try': ht.get_head_face(), 'comment': comment.get_face()} - - return context - - -@api_decor(without_auth=True, need_keys=['exam'], method='POST', check_request=True) -def load_exam_comments(request, context): - # Загрузка попыток по экзаменам - # TODO: Перейти на модель попыток - exam = ExamJ.objects.get(material__id=request.POST['exam']) - context['data'] = [] - for i in exam.comments.filter(parent_id='0').order_by('date'): - context['data'].append(comment_fabric(i, __user=request.user)) - - if len(context['data']) == 0: - context['code'] = '0' - else: - context['code'] = '1' - return context - - -@api_decor(without_auth=False) -def delete_comment(request, context): - comment = Comment.objects.get(id=request.POST.get('comment')) - if comment.owner == request.user or request.user.is_admin: - if request.POST.get('text'): - letter_delete_comment(comment, request.POST.get('text')) - - if Comment.objects.filter(parent_id=comment.id, closed=False).exists(): - comment.closed = True - comment.save() - else: - comment.delete() - if comment.parent_id != '0' and Comment.objects.filter(id=comment.parent_id, - closed=True).exists() and not Comment.objects.filter( - parent_id=comment.parent_id).exists(): - Comment.objects.get(id=comment.parent_id).delete() - - context['code'] = '1' - else: - context['code'] = '0' - context['response'] = u'Вы не можете удалить коммментарий, автором которого вы не являетесь' - return context - - -@api_decor(without_auth=False) -def get_lesson_comments_length(request, context): - context['code'] = '1' - context['data'] = Lesson.objects.get(id=request.GET['id']).comments.filter(closed=False).count() - return context - - -@api_decor(without_auth=False) -def get_homework_comments_length(request, context): - context['code'] = '1' - - try: - result = HomeworkJ.objects.get(material=Homework.objects.get(id=request.GET['id']), - student=request.user).get_comments_length() - except HomeworkJ.DoesNotExist: - result = 0 - - context['data'] = result - return context - - -@api_decor(without_auth=False) -def get_homework_comments_length_for_teacher(request, context): - context['code'] = '1' - context['data'] = HomeworkJ.objects.get(material__theme__id=request.GET['id'], teacher=request.user, - student__id=request.GET['student']).get_comments_length() - return context - - -@api_decor(without_auth=False) -def get_exam_comments_length_for_teacher(request, context): - context['code'] = '1' - context['data'] = ExamJ.objects.get(material__course__id=request.GET['id'], teacher=request.user, - student__id=request.GET['student']).get_comments_length() - return context - - -@api_decor(without_auth=False) -def get_exam_comments_length(request, context): - context['code'] = '1' - context['data'] = ExamJ.objects.get(material__id=request.GET['id'], student=request.user).get_comments_length() - return context - - -@api_decor(without_auth=False) -def get_comment_text(request, context): - try: - comment = Comment.objects.get(id=request.GET['comment']) - except Comment.DoesNotExist: - context['code'] = '0' - else: - context['code'] = '1' - context['data'] = comment.get_text() - return context - - -@api_decor(without_auth=False, need_keys=['ID'], check_request=True, method='GET') -def get_lesson_context(request, context): - if request.user.in_role != 'U': - lesson = Lesson.objects.get(id=request.GET['ID']) - materials = [] if lesson.materials.all() else '' - for i in lesson.materials.all(): - materials.append({ - 'url': i.original.url, - 'id': 'single_image' if i.f_format.f_type == 'I' else '', - 'file_name': i.get_file_name(), - 'name_for_user': i.get_name_for_user(), - 'icon_class': i.f_format.icon_class - }) - context['data'] = { - 'video': lesson.video, - 'description': lesson.description, - 'title': lesson.title, - 'materials': materials - } - context['code'] = '1' - return context - - -@api_decor(without_auth=False, need_keys=['start_place_type', 'start_place_id'], method='GET', check_request=True) -def get_next_button_ajax(request, context): - # Получение следующей кнопки - context['data'] = get_next_button(request.user, - request.GET['start_place_type'], - request.GET['start_place_id']) - context['code'] = '1' - return context - - -@api_decor(without_auth=True, need_keys=['id'], method='GET', check_request=True) -def by_course_data(request, context): - # Получить информацию окна покупки для курса - try: - course = Course.objects.get(id=request.GET['id']) - except Course.DoesNotExist: - context['code'] = '1' - else: - context['code'] = '1' - context['data'] = { - 'image': course.buy_icon.url if course.buy_icon else '/static/img/1442791218_certificate.png', - 'name': course.title, - 'basic': CourseTheme.objects.filter(course=course, - _type='B').count() if not course.use_fail or course.basic_len == 0 else course.basic_len, - 'addition': CourseTheme.objects.filter( - Q(course=course, _type='A') | Q(course=course, _type='P') | Q(course=course, - _type='M')).count() if not course.use_fail or course.addition_len == 0 else course.addition_len, - 'min_price': 6777 if course.min_price == 0 else course.min_price - } - return context - - -@api_decor(without_auth=False, need_keys=['ID'], method='GET', check_request=True) -def get_homework_context(request, context): - # Получение информации из ДЗ - if request.user.in_role != 'U': - homework = CourseTheme.objects.get(id=request.GET['ID']).get_homework() - materials = [] if homework.materials.all() else '' - for i in homework.materials.all(): - materials.append({ - 'url': i.original.url, - 'id': 'single_image' if i.f_format.f_type == 'I' else '', - 'file_name': i.get_file_name(), - 'name_for_user': i.get_name_for_user(), - 'icon_class': i.f_format.icon_class - }) - context['data'] = { - 'description': homework.description, - 'materials': materials - } - context['code'] = '1' - return context - - -@api_decor(without_auth=False) -def sent_homework_up_teacher(request, context): - context['data'] = {} - context['code'] = '0' - if request.POST['homework_text']: - homework = HomeworkJ.objects.get(id=request.POST['homework_id']) - h_status = homework.get_status_flag() - if h_status not in ['N', 'F']: - ht, c = HomeworkTry.objects.get_or_create(parent=homework, success=False, f_date=None, teacher=request.user, - material=homework.material, student=homework.student) - comment = Comment.objects.create(owner=request.user, status='G', - text=request.POST['homework_text'], - date=django.utils.timezone.now()) - ht.comments.add(comment) - - action = ActionJ.objects.create(student=ht.student, - a_type='I', - place=u'Курс '+u'\xab'+u'{0}'.format(homework.material.course.get_title())+u'\xbb'+u', домашнее задание # {0}'.format(homework.material.theme.sort), - text=u'Ваше домашнее задание одобрено преподавателем.'.format( - homework.material.id, comment.id, DOMAIN)) - - if homework.student.check_subscription('teacher'): - sent_teacher_answer(action) - - # Отправка письма и активности преподавателю - sent_to_teacher_answer(ActionJ.objects.create( - student=ht.get_teacher(), - place=u'Студент: {0}, домашнее задание # {1}'.format( - homework.student, - homework.material.theme.sort), - text=u'Задание одобрено', - a_type='S' - )) - - # Проверка и загрузка файлов - r = re.compile('^file_') - files_keys = [] - for i in request.POST.keys(): - if r.match(i): files_keys.append(i) - - if files_keys: - for i in files_keys: - comment.files.add(Storage.objects.get(key=request.POST[i])) - comment.save() - - context['code'] = '1' - context['data'] = {'try': ht.get_head_face(), 'comment': comment.get_face()} - ht.saw_this() - - homework.success = True - homework.save() - return context - - -@api_decor(without_auth=False) -def sent_homework_down_teacher(request, context): - context['data'] = {} - context['code'] = '0' - if request.POST['homework_text'] and request.user.in_role == 'T': - homework = HomeworkJ.objects.get(id=request.POST['homework_id']) - h_status = homework.get_status_flag() - if h_status not in ['N', 'F']: - ht, c = HomeworkTry.objects.get_or_create(parent=homework, success=False, f_date=None, teacher=request.user, - material=homework.material, student=homework.student) - comment = Comment.objects.create(owner=request.user, date=django.utils.timezone.now(), status='F', - text=request.POST['homework_text']) - ht.comments.add(comment) - ht.success = False - ht.f_date = datetime.datetime.now() - ht.save() - action = ActionJ.objects.create(student=ht.student, - a_type='S', - place=u'Курс '+u'\xab'+u'{0}'.format(homework.material.course.get_title())+u'\xbb'+u', домашнее задание # {0}'.format(homework.material.theme.sort), - text=u'Ваше домашнее задание проверено преподавателем. ' - u'Вам необходимо провести работу над ошибками' - u''.format( - homework.material.id, comment.id, DOMAIN)) - - if ht.student.check_subscription('teacher'): - sent_teacher_answer(action) - - - # Отправка письма и активности преподавателю - ActionJ.objects.create( - student=ht.get_teacher(), - place=u'Студент: {0}, домашнее задание # {1}'.format( - homework.student, - homework.material.theme.sort), - text=u'Задание отправлено на доработку', - a_type='D' - ) - - # Проверка и загрузка файлов - r = re.compile('^file_') - files_keys = [] - for i in request.POST.keys(): - if r.match(i): files_keys.append(i) - - if files_keys: - for i in files_keys: - comment.files.add(Storage.objects.get(key=request.POST[i])) - comment.save() - - context['code'] = '1' - context['data'] = {'try': ht.get_head_face(), 'comment': comment.get_face()} - return context - - -@api_decor(without_auth=False) -def sent_exam_up_teacher(request, context): - context['data'] = {} - context['code'] = '0' - if request.POST['exam_text']: - homework = ExamJ.objects.get(id=request.POST['exam_id']) - h_status = homework.get_status_flag() - if h_status not in ['N', 'F']: - ht, c = ExamTry.objects.get_or_create(parent=homework, success=False, f_date=None, teacher=request.user, - material=homework.material, student=homework.student) - comment = Comment.objects.create(owner=request.user, status='G', - text=request.POST['exam_text'], - date=django.utils.timezone.now()) - ht.comments.add(comment) - action = ActionJ.objects.create(student=ht.student, - a_type='W', - place=u'Экзаменационная работа '+u'\xab'+u'{0}'.format( - ht.material.course.get_title())+u'\xbb', - text=u'Ваша экзаменационная работа принята преподователем. ' - u'Поздравляем вас!'.format( - ht.material.id, DOMAIN)) - - if homework.student.check_subscription('teacher'): - sent_teacher_answer(action) - - # Отправка письма и активности преподавателю - ActionJ.objects.create( - student=ht.get_teacher(), - place=u'Студент: {0}, Экзамен'.format(homework.student), - text=u'Экзамен одобрен', - a_type='S' - ) - - if not ExamTry.objects.filter(teacher=homework.teacher, success=True).exists(): - # Отправка письма и активности преподавателю - ActionJ.objects.create( - student=ht.teacher, - place=u'Студент: {0}, Экзамен'.format(homework.student), - text=u'Поздравляем. Ваш первый студент дошедший до конца', - a_type='W' - ) - - # Проверка и загрузка файлов - r = re.compile('^file_') - files_keys = [] - for i in request.POST.keys(): - if r.match(i): files_keys.append(i) - - if files_keys: - for i in files_keys: - comment.files.add(Storage.objects.get(key=request.POST[i])) - comment.save() - - context['code'] = '1' - context['data'] = {'try': ht.get_head_face(), 'comment': comment.get_face()} - ht.saw_this() - return context - - -@api_decor(without_auth=False) -def sent_exam_down_teacher(request, context): - context['data'] = {} - context['code'] = '0' - if request.POST['exam_text'] and request.user.in_role == 'T': - homework = ExamJ.objects.get(id=request.POST['exam_id']) - h_status = homework.get_status_flag() - if h_status not in ['N', 'F']: - ht, c = ExamTry.objects.get_or_create(parent=homework, success=False, f_date=None, teacher=request.user, - material=homework.material, student=homework.student) - comment = Comment.objects.create(owner=request.user, date=django.utils.timezone.now(), status='F', - text=request.POST['exam_text']) - ht.comments.add(comment) - ht.f_date = datetime.datetime.now() - ht.save() - action = ActionJ.objects.create(student=ht.student, - a_type='D', - place=u'Экзаменационная работа '+u'\xab'+u'{0}'.format( - ht.material.course.get_title())+u'\xbb', - text=u'Ваша работа отправлена на доработку. ' - u'' - u'Вам необходимо провести работу над ошибками'.format( - ht.material.id, DOMAIN)) - - if ht.student.check_subscription('teacher'): - sent_teacher_answer(action) - - # Отправка письма и активности преподавателю - ActionJ.objects.create( - student=ht.get_teacher(), - place=u'Студент: {0}, Экзамен'.format(homework.student), - text=u'Задание отправлено на доработку', - a_type='D' - ) - - # Проверка и загрузка файлов - r = re.compile('^file_') - files_keys = [] - for i in request.POST.keys(): - if r.match(i): files_keys.append(i) - - if files_keys: - for i in files_keys: - comment.files.add(Storage.objects.get(key=request.POST[i])) - comment.save() - - context['code'] = '1' - context['data'] = {'try': ht.get_head_face(), 'comment': comment.get_face()} - return context +# coding=utf-8 +import datetime +import re +from django.db.models import Q +from access.models import User, ActionJ +from lms.decors import api_decor +from courses.models import Course, Lesson, Homework, CourseTheme +from courses.templates import comment_fabric +from journals.models import AchievementJ, LessonJ, HomeworkJ, ExamJ, check_journal, HomeworkTry, ExamTry +from finance.models import Bill +from courses.tools import set_read_flag, get_next_button +from management.letters import sent_comment_news, sent_teacher_answer, sent_to_teacher_answer, letter_delete_comment, \ + sent_new_comment +from management.models import Comment +from lms.settings import DOMAIN +from storage.models import Storage +from library.models import Article +import django.utils.timezone + + +@api_decor(without_auth=False, method='POST', need_keys=['id', 'material_id', 'text', 'type'], check_request=True) +def sent_comment_response(request, context): + try: + response = Comment.objects.get(id=request.POST['id']) + except Comment: + context['code'] = '0' + context['response'] = u'Исходный комментарий не найден' + return context + comment = Comment.objects.create(owner=request.user, text=request.POST['text'], parent_id=response.id) + + if request.POST['type'] == 'L': + try: + material = Article.objects.get(id=request.POST['material_id']) + except Article.DoesNotExists: + context['code'] = '0' + context['response'] = u'Статья не найдена' + return context + + elif request.POST['type'] == 'A': + try: + material = Lesson.objects.get(id=request.POST['material_id']) + except Lesson.DoesNotExists: + context['code'] = '0' + context['response'] = u'Урок не найден' + return context + + response.replies.add(comment) + response.response_comment = comment + response.response = True + response.saw.add(request.user) + if response.owner.check_subscription('new_comment'): + sent_comment_news(response, comment, material, _type=request.POST['type']) + response.save() + material.comments.add(comment) + material.save() + context['code'] = '1' + return context + + +@api_decor(without_auth=False, method='POST', need_keys=['id'], check_request=True) +def close_achievement(request, context): + # Пометка ачивки, как прочитанной + a = AchievementJ.objects.get(id=request.POST['id']) + a.got = True + a.save() + context['code'] = '1' + return context + + +@api_decor(without_auth=False) +def get_achievement(request, context): + # Получение ачивки пользователя, первой в очереди, не прочитанной + context['code'] = '0' + a = AchievementJ.objects.filter(student=request.user, got=False).first() + if a: + context['code'] = '1' + context['data'] = { + 'id': a.id, + 'title': a.title, + 'text': a.text, + 'image': a.achievement.image.url, + 'border': a.achievement.border, + 'background': a.achievement.background + } + return context + + +@api_decor(without_auth=False) +def get_process_vector(request, context): + return context + + +@api_decor(without_auth=False, need_keys=['id', 'user'], method='GET', check_request=True) +def check_bill(request, context): + # Проверка оплаты + # TODO: Применить новую модель доступов + course = Course.objects.get(id=request.GET['id']) + user = User.objects.get(id=request.GET['user']) + context['code'] = '0' + if Bill.objects.filter(service__course=course, user=user, status='F').exists(): + context['code'] = '1' + return context + + +@api_decor(without_auth=False, need_keys=['lesson'], method='POST', check_request=True) +def read_lesson(request, context): + # Пометка урока как прочитанного + context['code'] = '1' + try: + lesson = Lesson.objects.get(id=request.POST['lesson']) + journal = LessonJ.objects.get(student=request.user, material=Lesson.objects.get(id=request.POST['lesson'])) + except Lesson.DoesNotExist: + context['code'] = '0' + except LessonJ.DoesNotExist: + context['code'] = '0' + else: + context['data'] = [journal.id, lesson.id] + journal.saw_this() + return context + + +@api_decor(without_auth=False) +def sent_lesson_comment(request, context): + # Отправка комментария урока + if request.POST['comment_sent_text']: + lesson = Lesson.objects.get(id=request.POST['comment_for_lesson_id']) + parent_id = request.POST['reply_for_comment_id'] + comment = Comment.objects.create(parent_id=parent_id, owner=request.user, + text=request.POST['comment_sent_text'], date=django.utils.timezone.now()) + + lesson.comments.add(comment) + lesson.save() + # Получение о добавление файлов комментария + r = re.compile('^file_') + files_keys = [] + for i in request.POST.keys(): + if r.match(i): files_keys.append(i) + + if files_keys: + for i in files_keys: + comment.files.add(Storage.objects.get(key=request.POST[i])) + comment.save() + + if parent_id != '0': + comment2 = Comment.objects.get(id=parent_id) + if comment2.owner.check_subscription('new_comment'): + sent_comment_news(comment2, comment, lesson) + context['code'] = '1' + context['data'] = comment.id + + if not comment.send: + for eye in User.objects.filter(in_role='S2'): + sent_new_comment(comment, lesson, eye.email) + + context['code'] = '1' + return context + + +@api_decor(without_auth=True, need_keys=['lesson'], method='POST', check_request=True) +def load_lesson_comments(request, context): + # Загрузка списка комментариев + lesson = Lesson.objects.get(id=request.POST['lesson']) + context['data'] = lesson.get_comments(_user=request.user) + + if len(context['data']) == 0: + context['code'] = '0' + else: + context['code'] = '1' + return context + + +@api_decor(without_auth=True, need_keys=['id'], method='POST', check_request=True) +def load_comment(request, context): + try: + comment = Comment.objects.get(id=request.POST['id']) + except Comment.DoesNotExist: + context['code'] = '0' + else: + context['data'] = comment.get_face(__user=request.user) + return context + + +@api_decor(without_auth=False) +def sent_homework_comment(request, context): + # Отправка ДЗ попытки + context['data'] = {} + context['code'] = '0' + if request.POST['homework_text']: + homework = HomeworkJ.objects.get(id=request.POST['homework_id'], student=request.user) + h_status = homework.get_status_flag() + if h_status not in ['N', 'F']: + ht, c = HomeworkTry.objects.get_or_create(parent=homework, success=False, f_date=None, student=request.user, + material=homework.material) + comment = Comment.objects.create(owner=request.user, text=request.POST['homework_text'], + date=django.utils.timezone.now()) + ht.comments.add(comment) + ht.save() + if c: + action = ActionJ.objects.create(student=homework.student, + a_type='I', + place=u'Курс '+u'\xab'+u'{0}'.format(homework.material.course.get_title())+u'\xbb'+u', домашнее задание # {0}'.format(homework.material.theme.sort), + text=u'Ваше домашнее задание отправлено на проверку.' + u''.format(homework.material.id, comment.id, DOMAIN)) + homework.date = datetime.datetime.now() + if homework.student.check_subscription('teacher'): + sent_teacher_answer(action) + + # Отправка письма и активности преподавателю + sent_to_teacher_answer(ActionJ.objects.create( + student=ht.teacher, + place=u'Студент: {0}, домашнее задание # {1}'.format( + homework.student, + homework.material.theme.sort), + text=u'Текст: {0}
Перейти к проверке'.format(comment.text, + homework.id, DOMAIN), + a_type='I' + )) + + # Проверка и загрузка файлов + r = re.compile('^file_') + files_keys = [] + for i in request.POST.keys(): + if r.match(i): files_keys.append(i) + + if files_keys: + for i in files_keys: + comment.files.add(Storage.objects.get(key=request.POST[i])) + comment.save() + + context['code'] = '1' + context['data'] = {'try': ht.get_head_face(), 'comment': comment.get_face()} + + return context + + +@api_decor(without_auth=False) +def send_cancel_teach_comment(request, context): + # Отправка на доработку для преподавателя + # TODO: Перейти на модель попыток + if request.POST['comment_sent_text']: + lesson = HomeworkJ.objects.get(student__id=request.POST['comment_for_user_id'], + material__theme=request.POST['comment_for_theme_id'], teacher=request.user) + parent_id = request.POST['reply_for_comment_id'] + comment = Comment.objects.create(parent_id=parent_id, owner=request.user, status='F', + text=request.POST['comment_sent_text'], date=django.utils.timezone.now()) + lesson.comments.add(comment) + if lesson.status != 'F': + lesson.status = 'E' + action = ActionJ.objects.create(student=lesson.student, + a_type='D', + place=u'Курс '+u'\xab'+u'{0}'.format(lesson.homework.course.get_title())+u'\xbb'+u', домашнее задание # {0}'.format(lesson.homework.theme.sort), + text=u'Ваше домашнее задание проверено преподавателем. ' + u'Вам необходимо провести работу над ошибками' + u''.format( + lesson.material.id, comment.id, DOMAIN)) + if lesson.student.check_subscription('teacher'): + sent_teacher_answer(action) + + lesson.save() + + r = re.compile('^file_') + files_keys = [] + for i in request.POST.keys(): + if r.match(i): files_keys.append(i) + + if files_keys: + for i in files_keys: + comment.files.add(Storage.objects.get(key=request.POST[i])) + comment.save() + + if parent_id != '0': + comment2 = Comment.objects.get(id=parent_id) + if comment2.owner.check_subscription('new_comment'): + sent_comment_news(comment2, comment, lesson) + context['code'] = '1' + context['data'] = comment.id + context['code'] = '1' + return context + + +@api_decor(without_auth=False) +def send_accept_teach_comment(request, context): + # Одобрение попытки ДЗ для преподавателя + # TODO: Перейти на модель попыток + lesson = HomeworkJ.objects.get(student__id=request.POST['comment_for_user_id'], + material__theme=request.POST['comment_for_theme_id'], teacher=request.user) + parent_id = request.POST['reply_for_comment_id'] + comment = Comment.objects.create(parent_id=parent_id, owner=request.user, status='G', + text=request.POST['comment_sent_text'] + get_next_button(lesson.student, "H", + lesson.homework.theme.id), + date=django.utils.timezone.now()) + lesson.comments.add(comment) + if lesson.status != 'F': + lesson.status = 'F' + action = ActionJ.objects.create(student=lesson.student, + a_type='S', + place=u'Курс '+u'\xab'+u'{0}'.format(lesson.homework.course.get_title())+u'\xbb'+u', домашнее задание # {0}'.format( + lesson.homework.theme.sort), + text=u'Ваше домашнее задание одобрено преподавателем.'.format( + lesson.material.id, comment.id, DOMAIN)) + if lesson.student.check_subscription('teacher'): + sent_teacher_answer(action) + + set_read_flag(lesson.student, lesson.homework.course) + lesson.save() + + r = re.compile('^file_') + files_keys = [] + for i in request.POST.keys(): + if r.match(i): files_keys.append(i) + + if files_keys: + for i in files_keys: + comment.files.add(Storage.objects.get(key=request.POST[i])) + comment.save() + + if parent_id != '0': + comment2 = Comment.objects.get(id=parent_id) + if comment2.owner.check_subscription('new_comment'): + sent_comment_news(comment2, comment, lesson) + context['code'] = '1' + context['data'] = comment.id + return context + + +@api_decor(without_auth=False) +def send_exam_cancel_teach_comment(request, context): + # Отправка попытки на доработку для преподавателя + # TODO: Перейти на модель попыток + if request.POST['comment_sent_text']: + lesson = ExamJ.objects.get(student__id=request.POST['comment_for_user_id'], + material__course__id=request.POST['comment_for_theme_id'], teacher=request.user) + parent_id = request.POST['reply_for_comment_id'] + comment = Comment.objects.create(parent_id=parent_id, owner=request.user, status='F', + text=request.POST['comment_sent_text'], date=django.utils.timezone.now()) + lesson.comments.add(comment) + if lesson.status != 'F': + lesson.status = 'E' + action = ActionJ.objects.create(student=lesson.student, + a_type='D', + place=u'Экзаменационная работа '+u'\xab'+u'{0}'.format(lesson.exam.course.get_title())+u'\xbb', + text=u'Ваша работа отправлена на доработку. ' + u'' + u'Вам необходимо провести работу над ошибками'.format( + lesson.material.id, DOMAIN)) + if lesson.student.check_subscription('teacher'): + sent_teacher_answer(action) + + lesson.save() + + r = re.compile('^file_') + files_keys = [] + for i in request.POST.keys(): + if r.match(i): files_keys.append(i) + + if files_keys: + for i in files_keys: + comment.files.add(Storage.objects.get(key=request.POST[i])) + comment.save() + + if parent_id != '0': + comment2 = Comment.objects.get(id=parent_id) + if comment2.owner.check_subscription('new_comment'): + sent_comment_news(comment2, comment, lesson) + context['code'] = '1' + context['data'] = comment.id + context['code'] = '1' + return context + + +@api_decor(without_auth=False) +def send_exam_accept_teach_comment(request, context): + # Принятие экзамена для преподавателя + # TODO: Перейти на модель попыток + lesson = ExamJ.objects.get(student__id=request.POST['comment_for_user_id'], + material__course__id=request.POST['comment_for_theme_id'], teacher=request.user) + parent_id = request.POST['reply_for_comment_id'] + comment = Comment.objects.create(parent_id=parent_id, owner=request.user, status='G', + text=request.POST['comment_sent_text'] + + request.POST['comment_sent_text'] + get_next_button(lesson.student, "E", + lesson.exam.course.id), + date=django.utils.timezone.now()) + lesson.comments.add(comment) + if lesson.status != 'F': + lesson.status = 'F' + action = ActionJ.objects.create(student=lesson.student, + a_type='W', + place=u'Экзаменационная работа '+u'\xab'+u'{0}'.format(lesson.exam.course.get_title())+u'\xbb', + text=u'Ваша экзаменационная работа принята преподователем. ' + u'Поздравляем вас!'.format( + lesson.material.id, DOMAIN)) + if lesson.student.check_subscription('teacher'): + sent_teacher_answer(action) + + lesson.save() + # TODO: Много повторений в других методах, переделать на отдельный метод + r = re.compile('^file_') + files_keys = [] + for i in request.POST.keys(): + if r.match(i): files_keys.append(i) + + if files_keys: + for i in files_keys: + comment.files.add(Storage.objects.get(key=request.POST[i])) + comment.save() + + if parent_id != '0': + comment2 = Comment.objects.get(id=parent_id) + if comment2.owner.check_subscription('new_comment'): + sent_comment_news(comment2, comment, lesson) + context['code'] = '1' + context['data'] = comment.id + return context + + +@api_decor(without_auth=False, need_keys=['theme', 'student'], method='POST', check_request=True) +def load_homework_comments_for_teacher(request, context): + # Получение комментариев для преподавателя + # TODO: Перейти на модель попыток + homework = HomeworkJ.objects.get(material__theme__id=request.POST['theme'], student__id=request.POST['student'], + teacher=request.user) + context['data'] = [] + for i in homework.comments.filter(parent_id='0').order_by('date'): + context['data'].append(comment_fabric(i, __user=request.user)) + + if len(context['data']) == 0: + context['code'] = '0' + else: + context['code'] = '1' + return context + + +@api_decor(without_auth=False, need_keys=['theme', 'student'], method='POST', check_request=True) +def load_exam_comments_for_teacher(request, context): + # Полечение попыток экзамена + # TODO: Перейти на модель попыток + homework = ExamJ.objects.get(material__course__id=request.POST['theme'], student__id=request.POST['student'], + teacher=request.user) + context['data'] = [] + for i in homework.comments.filter(parent_id='0').order_by('date'): + context['data'].append(comment_fabric(i, __user=request.user)) + + if len(context['data']) == 0: + context['code'] = '0' + else: + context['code'] = '1' + return context + + +@api_decor(without_auth=False, need_keys=['homework'], method='POST', check_request=True) +def load_homework_comments(request, context): + # Загрузка комментариев по ДЗ + # TODO: Перейти на модель попыток + homework = HomeworkJ.objects.get(material__id=request.POST['homework'], student=request.user) + context['data'] = [] + for i in homework.comments.filter(parent_id='0').order_by('date'): + context['data'].append(comment_fabric(i, __user=request.user)) + + if len(context['data']) == 0: + context['code'] = '0' + else: + context['code'] = '1' + return context + + +@api_decor(without_auth=False) +def sent_exam_comment(request, context): + # Отправка попытки сутедентом + context['data'] = {} + context['code'] = '0' + if request.POST['exam_text']: + exam = ExamJ.objects.get(id=request.POST['exam_id'], student=request.user) + h_status = exam.get_status_flag() + if h_status not in ['N', 'F']: + ht, c = ExamTry.objects.get_or_create(parent=exam, success=False, f_date=None, student=request.user, + material=exam.material) + comment = Comment.objects.create(owner=request.user, text=request.POST['exam_text'], + date=django.utils.timezone.now()) + ht.comments.add(comment) + ht.save() + if c: + action = ActionJ.objects.create(student=exam.student, + a_type='I', + place=u'Курс '+u'\xab'+u'{0}'.format( + exam.material.course.get_title())+u'\xbb'+u', Экзаменационная работа', + text=u'Ваша экзаменационная работа отправлена на проверку.' + u''.format(exam.material.id, comment.id, DOMAIN)) + exam.date = datetime.datetime.now() + if exam.student.check_subscription('teacher'): + sent_teacher_answer(action) + + # Отправка письма и активности преподавателю + sent_to_teacher_answer(ActionJ.objects.create( + student=ht.teacher, + place=u'Студент: {0}, Экзамен'.format(exam.student), + text=u'Текст: {0}
Перейти к проверке'.format(comment.text, exam.id, DOMAIN), + a_type='P' + )) + # Проверка и загрузка файлов + r = re.compile('^file_') + files_keys = [] + for i in request.POST.keys(): + if r.match(i): files_keys.append(i) + + if files_keys: + for i in files_keys: + comment.files.add(Storage.objects.get(key=request.POST[i])) + comment.save() + + context['code'] = '1' + context['data'] = {'try': ht.get_head_face(), 'comment': comment.get_face()} + + return context + + +@api_decor(without_auth=True, need_keys=['exam'], method='POST', check_request=True) +def load_exam_comments(request, context): + # Загрузка попыток по экзаменам + # TODO: Перейти на модель попыток + exam = ExamJ.objects.get(material__id=request.POST['exam']) + context['data'] = [] + for i in exam.comments.filter(parent_id='0').order_by('date'): + context['data'].append(comment_fabric(i, __user=request.user)) + + if len(context['data']) == 0: + context['code'] = '0' + else: + context['code'] = '1' + return context + + +@api_decor(without_auth=False) +def delete_comment(request, context): + comment = Comment.objects.get(id=request.POST.get('comment')) + if comment.owner == request.user or request.user.is_admin: + if request.POST.get('text'): + letter_delete_comment(comment, request.POST.get('text')) + + if Comment.objects.filter(parent_id=comment.id, closed=False).exists(): + comment.closed = True + comment.save() + else: + comment.delete() + if comment.parent_id != '0' and Comment.objects.filter(id=comment.parent_id, + closed=True).exists() and not Comment.objects.filter( + parent_id=comment.parent_id).exists(): + Comment.objects.get(id=comment.parent_id).delete() + + context['code'] = '1' + else: + context['code'] = '0' + context['response'] = u'Вы не можете удалить коммментарий, автором которого вы не являетесь' + return context + + +@api_decor(without_auth=False) +def get_lesson_comments_length(request, context): + context['code'] = '1' + context['data'] = Lesson.objects.get(id=request.GET['id']).comments.filter(closed=False).count() + return context + + +@api_decor(without_auth=False) +def get_homework_comments_length(request, context): + context['code'] = '1' + + try: + result = HomeworkJ.objects.get(material=Homework.objects.get(id=request.GET['id']), + student=request.user).get_comments_length() + except HomeworkJ.DoesNotExist: + result = 0 + + context['data'] = result + return context + + +@api_decor(without_auth=False) +def get_homework_comments_length_for_teacher(request, context): + context['code'] = '1' + context['data'] = HomeworkJ.objects.get(material__theme__id=request.GET['id'], teacher=request.user, + student__id=request.GET['student']).get_comments_length() + return context + + +@api_decor(without_auth=False) +def get_exam_comments_length_for_teacher(request, context): + context['code'] = '1' + context['data'] = ExamJ.objects.get(material__course__id=request.GET['id'], teacher=request.user, + student__id=request.GET['student']).get_comments_length() + return context + + +@api_decor(without_auth=False) +def get_exam_comments_length(request, context): + context['code'] = '1' + context['data'] = ExamJ.objects.get(material__id=request.GET['id'], student=request.user).get_comments_length() + return context + + +@api_decor(without_auth=False) +def get_comment_text(request, context): + try: + comment = Comment.objects.get(id=request.GET['comment']) + except Comment.DoesNotExist: + context['code'] = '0' + else: + context['code'] = '1' + context['data'] = comment.get_text() + return context + + +@api_decor(without_auth=False, need_keys=['ID'], check_request=True, method='GET') +def get_lesson_context(request, context): + if request.user.in_role != 'U': + lesson = Lesson.objects.get(id=request.GET['ID']) + materials = [] if lesson.materials.all() else '' + for i in lesson.materials.all(): + materials.append({ + 'url': i.original.url, + 'id': 'single_image' if i.f_format.f_type == 'I' else '', + 'file_name': i.get_file_name(), + 'name_for_user': i.get_name_for_user(), + 'icon_class': i.f_format.icon_class + }) + context['data'] = { + 'video': lesson.video, + 'description': lesson.description, + 'title': lesson.title, + 'materials': materials + } + context['code'] = '1' + return context + + +@api_decor(without_auth=False, need_keys=['start_place_type', 'start_place_id'], method='GET', check_request=True) +def get_next_button_ajax(request, context): + # Получение следующей кнопки + context['data'] = get_next_button(request.user, + request.GET['start_place_type'], + request.GET['start_place_id']) + context['code'] = '1' + return context + + +@api_decor(without_auth=True, need_keys=['id'], method='GET', check_request=True) +def by_course_data(request, context): + # Получить информацию окна покупки для курса + try: + course = Course.objects.get(id=request.GET['id']) + except Course.DoesNotExist: + context['code'] = '1' + else: + context['code'] = '1' + context['data'] = { + 'image': course.buy_icon.url if course.buy_icon else '/static/img/1442791218_certificate.png', + 'name': course.title, + 'basic': CourseTheme.objects.filter(course=course, + _type='B').count() if not course.use_fail or course.basic_len == 0 else course.basic_len, + 'addition': CourseTheme.objects.filter( + Q(course=course, _type='A') | Q(course=course, _type='P') | Q(course=course, + _type='M')).count() if not course.use_fail or course.addition_len == 0 else course.addition_len, + 'min_price': 6777 if course.min_price == 0 else course.min_price + } + return context + + +@api_decor(without_auth=False, need_keys=['ID'], method='GET', check_request=True) +def get_homework_context(request, context): + # Получение информации из ДЗ + if request.user.in_role != 'U': + homework = CourseTheme.objects.get(id=request.GET['ID']).get_homework() + materials = [] if homework.materials.all() else '' + for i in homework.materials.all(): + materials.append({ + 'url': i.original.url, + 'id': 'single_image' if i.f_format.f_type == 'I' else '', + 'file_name': i.get_file_name(), + 'name_for_user': i.get_name_for_user(), + 'icon_class': i.f_format.icon_class + }) + context['data'] = { + 'description': homework.description, + 'materials': materials + } + context['code'] = '1' + return context + + +@api_decor(without_auth=False) +def sent_homework_up_teacher(request, context): + context['data'] = {} + context['code'] = '0' + if request.POST['homework_text']: + homework = HomeworkJ.objects.get(id=request.POST['homework_id']) + h_status = homework.get_status_flag() + if h_status not in ['N', 'F']: + ht, c = HomeworkTry.objects.get_or_create(parent=homework, success=False, f_date=None, teacher=request.user, + material=homework.material, student=homework.student) + comment = Comment.objects.create(owner=request.user, status='G', + text=request.POST['homework_text'], + date=django.utils.timezone.now()) + ht.comments.add(comment) + + action = ActionJ.objects.create(student=ht.student, + a_type='I', + place=u'Курс '+u'\xab'+u'{0}'.format(homework.material.course.get_title())+u'\xbb'+u', домашнее задание # {0}'.format(homework.material.theme.sort), + text=u'Ваше домашнее задание одобрено преподавателем.'.format( + homework.material.id, comment.id, DOMAIN)) + + if homework.student.check_subscription('teacher'): + sent_teacher_answer(action) + + # Отправка письма и активности преподавателю + sent_to_teacher_answer(ActionJ.objects.create( + student=ht.get_teacher(), + place=u'Студент: {0}, домашнее задание # {1}'.format( + homework.student, + homework.material.theme.sort), + text=u'Задание одобрено', + a_type='S' + )) + + # Проверка и загрузка файлов + r = re.compile('^file_') + files_keys = [] + for i in request.POST.keys(): + if r.match(i): files_keys.append(i) + + if files_keys: + for i in files_keys: + comment.files.add(Storage.objects.get(key=request.POST[i])) + comment.save() + + context['code'] = '1' + context['data'] = {'try': ht.get_head_face(), 'comment': comment.get_face()} + ht.saw_this() + + homework.success = True + homework.save() + return context + + +@api_decor(without_auth=False) +def sent_homework_down_teacher(request, context): + context['data'] = {} + context['code'] = '0' + if request.POST['homework_text'] and request.user.in_role == 'T': + homework = HomeworkJ.objects.get(id=request.POST['homework_id']) + h_status = homework.get_status_flag() + if h_status not in ['N', 'F']: + ht, c = HomeworkTry.objects.get_or_create(parent=homework, success=False, f_date=None, teacher=request.user, + material=homework.material, student=homework.student) + comment = Comment.objects.create(owner=request.user, date=django.utils.timezone.now(), status='F', + text=request.POST['homework_text']) + ht.comments.add(comment) + ht.success = False + ht.f_date = datetime.datetime.now() + ht.save() + action = ActionJ.objects.create(student=ht.student, + a_type='S', + place=u'Курс '+u'\xab'+u'{0}'.format(homework.material.course.get_title())+u'\xbb'+u', домашнее задание # {0}'.format(homework.material.theme.sort), + text=u'Ваше домашнее задание проверено преподавателем. ' + u'Вам необходимо провести работу над ошибками' + u''.format( + homework.material.id, comment.id, DOMAIN)) + + if ht.student.check_subscription('teacher'): + sent_teacher_answer(action) + + + # Отправка письма и активности преподавателю + ActionJ.objects.create( + student=ht.get_teacher(), + place=u'Студент: {0}, домашнее задание # {1}'.format( + homework.student, + homework.material.theme.sort), + text=u'Задание отправлено на доработку', + a_type='D' + ) + + # Проверка и загрузка файлов + r = re.compile('^file_') + files_keys = [] + for i in request.POST.keys(): + if r.match(i): files_keys.append(i) + + if files_keys: + for i in files_keys: + comment.files.add(Storage.objects.get(key=request.POST[i])) + comment.save() + + context['code'] = '1' + context['data'] = {'try': ht.get_head_face(), 'comment': comment.get_face()} + return context + + +@api_decor(without_auth=False) +def sent_exam_up_teacher(request, context): + context['data'] = {} + context['code'] = '0' + if request.POST['exam_text']: + homework = ExamJ.objects.get(id=request.POST['exam_id']) + h_status = homework.get_status_flag() + if h_status not in ['N', 'F']: + ht, c = ExamTry.objects.get_or_create(parent=homework, success=False, f_date=None, teacher=request.user, + material=homework.material, student=homework.student) + comment = Comment.objects.create(owner=request.user, status='G', + text=request.POST['exam_text'], + date=django.utils.timezone.now()) + ht.comments.add(comment) + action = ActionJ.objects.create(student=ht.student, + a_type='W', + place=u'Экзаменационная работа '+u'\xab'+u'{0}'.format( + ht.material.course.get_title())+u'\xbb', + text=u'Ваша экзаменационная работа принята преподователем. ' + u'Поздравляем вас!'.format( + ht.material.id, DOMAIN)) + + if homework.student.check_subscription('teacher'): + sent_teacher_answer(action) + + # Отправка письма и активности преподавателю + ActionJ.objects.create( + student=ht.get_teacher(), + place=u'Студент: {0}, Экзамен'.format(homework.student), + text=u'Экзамен одобрен', + a_type='S' + ) + + if not ExamTry.objects.filter(teacher=homework.teacher, success=True).exists(): + # Отправка письма и активности преподавателю + ActionJ.objects.create( + student=ht.teacher, + place=u'Студент: {0}, Экзамен'.format(homework.student), + text=u'Поздравляем. Ваш первый студент дошедший до конца', + a_type='W' + ) + + # Проверка и загрузка файлов + r = re.compile('^file_') + files_keys = [] + for i in request.POST.keys(): + if r.match(i): files_keys.append(i) + + if files_keys: + for i in files_keys: + comment.files.add(Storage.objects.get(key=request.POST[i])) + comment.save() + + context['code'] = '1' + context['data'] = {'try': ht.get_head_face(), 'comment': comment.get_face()} + ht.saw_this() + return context + + +@api_decor(without_auth=False) +def sent_exam_down_teacher(request, context): + context['data'] = {} + context['code'] = '0' + if request.POST['exam_text'] and request.user.in_role == 'T': + homework = ExamJ.objects.get(id=request.POST['exam_id']) + h_status = homework.get_status_flag() + if h_status not in ['N', 'F']: + ht, c = ExamTry.objects.get_or_create(parent=homework, success=False, f_date=None, teacher=request.user, + material=homework.material, student=homework.student) + comment = Comment.objects.create(owner=request.user, date=django.utils.timezone.now(), status='F', + text=request.POST['exam_text']) + ht.comments.add(comment) + ht.f_date = datetime.datetime.now() + ht.save() + action = ActionJ.objects.create(student=ht.student, + a_type='D', + place=u'Экзаменационная работа '+u'\xab'+u'{0}'.format( + ht.material.course.get_title())+u'\xbb', + text=u'Ваша работа отправлена на доработку. ' + u'' + u'Вам необходимо провести работу над ошибками'.format( + ht.material.id, DOMAIN)) + + if ht.student.check_subscription('teacher'): + sent_teacher_answer(action) + + # Отправка письма и активности преподавателю + ActionJ.objects.create( + student=ht.get_teacher(), + place=u'Студент: {0}, Экзамен'.format(homework.student), + text=u'Задание отправлено на доработку', + a_type='D' + ) + + # Проверка и загрузка файлов + r = re.compile('^file_') + files_keys = [] + for i in request.POST.keys(): + if r.match(i): files_keys.append(i) + + if files_keys: + for i in files_keys: + comment.files.add(Storage.objects.get(key=request.POST[i])) + comment.save() + + context['code'] = '1' + context['data'] = {'try': ht.get_head_face(), 'comment': comment.get_face()} + return context diff --git a/courses/migrations/0001_initial.py b/courses/migrations/0001_initial.py old mode 100755 new mode 100644 index d585cae..6f3caf6 --- a/courses/migrations/0001_initial.py +++ b/courses/migrations/0001_initial.py @@ -1,199 +1,199 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-18 16:46 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import redactor.fields - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('management', '0001_initial'), - ('storage', '0001_initial'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Achievements', - fields=[ - ('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')), - ('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')), - ('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')), - ('border', models.CharField(max_length=10, verbose_name='\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b')), - ], - options={ - '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', - }, - ), - migrations.CreateModel( - name='Course', - fields=[ - ('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')), - ('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')), - ('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')), - ('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')), - ('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')), - ('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')), - ('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')), - ('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')), - ], - options={ - 'ordering': ['sort'], - 'verbose_name': '\u041a\u0443\u0440\u0441', - 'verbose_name_plural': '\u041a\u0443\u0440\u0441\u044b', - }, - ), - migrations.CreateModel( - name='CourseMap', - fields=[ - ('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')), - ('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')), - ('course', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), - ], - options={ - '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', - }, - ), - migrations.CreateModel( - name='CourseTheme', - fields=[ - ('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')), - ('_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')), - ('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')), - ('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')), - ], - options={ - 'ordering': ['sort'], - 'verbose_name': '\u0422\u0435\u043c\u0430', - 'verbose_name_plural': '\u0422\u0435\u043c\u044b', - }, - ), - migrations.CreateModel( - name='Exam', - fields=[ - ('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')), - ('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')), - ('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')), - ('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')), - ('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')), - ], - options={ - 'ordering': ['sort'], - 'verbose_name': '\u042d\u043a\u0437\u0430\u043c\u0435\u043d', - 'verbose_name_plural': '\u042d\u043a\u0437\u0430\u043c\u0435\u043d\u044b', - }, - ), - migrations.CreateModel( - name='Homework', - fields=[ - ('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')), - ('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')), - ('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')), - ('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={ - 'ordering': ['sort'], - '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', - }, - ), - migrations.CreateModel( - name='Lesson', - fields=[ - ('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')), - ('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')), - ('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')), - ('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')), - ('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')), - ('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={ - 'ordering': ['sort'], - 'verbose_name': '\u0423\u0440\u043e\u043a', - 'verbose_name_plural': '\u0423\u0440\u043e\u043a\u0438', - }, - ), - migrations.CreateModel( - name='SkillJ', - fields=[ - ('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')), - ('lesson', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Lesson', verbose_name='\u0423\u0440\u043e\u043a')), - ], - options={ - 'ordering': ['id'], - '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', - }, - ), - migrations.CreateModel( - name='Skills', - fields=[ - ('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')), - ('color', models.CharField(max_length=255, verbose_name='\u0426\u0432\u0435\u0442')), - ], - options={ - 'verbose_name': '\u041d\u0430\u0432\u044b\u043a', - 'verbose_name_plural': '\u041d\u0430\u0432\u044b\u043a\u0438', - }, - ), - migrations.AddField( - model_name='skillj', - name='skill', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Skills', verbose_name='\u041d\u0430\u0432\u044b\u043a'), - ), - migrations.AddField( - model_name='coursemap', - 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'), - ), - migrations.AddField( - model_name='coursemap', - 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'), - ), - migrations.AddField( - model_name='coursemap', - 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'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-18 16:46 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import redactor.fields + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('management', '0001_initial'), + ('storage', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Achievements', + fields=[ + ('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')), + ('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')), + ('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')), + ('border', models.CharField(max_length=10, verbose_name='\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b')), + ], + options={ + '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', + }, + ), + migrations.CreateModel( + name='Course', + fields=[ + ('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')), + ('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')), + ('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')), + ('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')), + ('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')), + ('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')), + ('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')), + ('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')), + ], + options={ + 'ordering': ['sort'], + 'verbose_name': '\u041a\u0443\u0440\u0441', + 'verbose_name_plural': '\u041a\u0443\u0440\u0441\u044b', + }, + ), + migrations.CreateModel( + name='CourseMap', + fields=[ + ('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')), + ('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')), + ('course', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), + ], + options={ + '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', + }, + ), + migrations.CreateModel( + name='CourseTheme', + fields=[ + ('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')), + ('_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')), + ('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')), + ('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')), + ], + options={ + 'ordering': ['sort'], + 'verbose_name': '\u0422\u0435\u043c\u0430', + 'verbose_name_plural': '\u0422\u0435\u043c\u044b', + }, + ), + migrations.CreateModel( + name='Exam', + fields=[ + ('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')), + ('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')), + ('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')), + ('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')), + ('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')), + ], + options={ + 'ordering': ['sort'], + 'verbose_name': '\u042d\u043a\u0437\u0430\u043c\u0435\u043d', + 'verbose_name_plural': '\u042d\u043a\u0437\u0430\u043c\u0435\u043d\u044b', + }, + ), + migrations.CreateModel( + name='Homework', + fields=[ + ('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')), + ('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')), + ('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')), + ('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={ + 'ordering': ['sort'], + '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', + }, + ), + migrations.CreateModel( + name='Lesson', + fields=[ + ('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')), + ('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')), + ('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')), + ('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')), + ('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')), + ('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={ + 'ordering': ['sort'], + 'verbose_name': '\u0423\u0440\u043e\u043a', + 'verbose_name_plural': '\u0423\u0440\u043e\u043a\u0438', + }, + ), + migrations.CreateModel( + name='SkillJ', + fields=[ + ('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')), + ('lesson', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Lesson', verbose_name='\u0423\u0440\u043e\u043a')), + ], + options={ + 'ordering': ['id'], + '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', + }, + ), + migrations.CreateModel( + name='Skills', + fields=[ + ('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')), + ('color', models.CharField(max_length=255, verbose_name='\u0426\u0432\u0435\u0442')), + ], + options={ + 'verbose_name': '\u041d\u0430\u0432\u044b\u043a', + 'verbose_name_plural': '\u041d\u0430\u0432\u044b\u043a\u0438', + }, + ), + migrations.AddField( + model_name='skillj', + name='skill', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Skills', verbose_name='\u041d\u0430\u0432\u044b\u043a'), + ), + migrations.AddField( + model_name='coursemap', + 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'), + ), + migrations.AddField( + model_name='coursemap', + 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'), + ), + migrations.AddField( + model_name='coursemap', + 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'), + ), + ] diff --git a/courses/migrations/0002_achievementsmap.py b/courses/migrations/0002_achievementsmap.py old mode 100755 new mode 100644 index e51e6ac..be25557 --- a/courses/migrations/0002_achievementsmap.py +++ b/courses/migrations/0002_achievementsmap.py @@ -1,29 +1,29 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-20 20:26 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='AchievementsMap', - fields=[ - ('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')), - ('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')), - ], - options={ - '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', - }, - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-20 20:26 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='AchievementsMap', + fields=[ + ('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')), + ('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')), + ], + options={ + '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', + }, + ), + ] diff --git a/courses/migrations/0003_auto_20160322_1852.py b/courses/migrations/0003_auto_20160322_1852.py old mode 100755 new mode 100644 index 4234734..df22392 --- a/courses/migrations/0003_auto_20160322_1852.py +++ b/courses/migrations/0003_auto_20160322_1852.py @@ -1,19 +1,19 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-22 18:52 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0002_achievementsmap'), - ] - - operations = [ - migrations.AlterModelOptions( - 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'}, - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-22 18:52 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0002_achievementsmap'), + ] + + operations = [ + migrations.AlterModelOptions( + 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'}, + ), + ] diff --git a/courses/migrations/0004_lesson_video_id.py b/courses/migrations/0004_lesson_video_id.py old mode 100755 new mode 100644 index 67572a3..8dab584 --- a/courses/migrations/0004_lesson_video_id.py +++ b/courses/migrations/0004_lesson_video_id.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-30 22:39 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0003_auto_20160322_1852'), - ] - - operations = [ - migrations.AddField( - model_name='lesson', - name='video_id', - field=models.CharField(blank=True, max_length=50, null=True, verbose_name='\u0412\u0438\u0434\u0435\u043e ID'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-30 22:39 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0003_auto_20160322_1852'), + ] + + operations = [ + migrations.AddField( + model_name='lesson', + name='video_id', + field=models.CharField(blank=True, max_length=50, null=True, verbose_name='\u0412\u0438\u0434\u0435\u043e ID'), + ), + ] diff --git a/courses/migrations/0005_auto_20160331_2030.py b/courses/migrations/0005_auto_20160331_2030.py old mode 100755 new mode 100644 index d1fbf18..26b4181 --- a/courses/migrations/0005_auto_20160331_2030.py +++ b/courses/migrations/0005_auto_20160331_2030.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-31 20:30 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0004_lesson_video_id'), - ] - - operations = [ - migrations.AlterField( - model_name='lesson', - name='video', - field=models.TextField(blank=True, default=b'', verbose_name='\u041a\u043e\u0434 \u0432\u0438\u0434\u0435\u043e'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-31 20:30 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0004_lesson_video_id'), + ] + + operations = [ + migrations.AlterField( + model_name='lesson', + name='video', + field=models.TextField(blank=True, default=b'', verbose_name='\u041a\u043e\u0434 \u0432\u0438\u0434\u0435\u043e'), + ), + ] diff --git a/courses/migrations/0006_auto_20160407_2006.py b/courses/migrations/0006_auto_20160407_2006.py old mode 100755 new mode 100644 index dfbf7d8..f55e658 --- a/courses/migrations/0006_auto_20160407_2006.py +++ b/courses/migrations/0006_auto_20160407_2006.py @@ -1,25 +1,25 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-07 20:06 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0005_auto_20160331_2030'), - ] - - operations = [ - migrations.AddField( - model_name='coursetheme', - 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!'), - ), - migrations.AddField( - model_name='coursetheme', - 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'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-04-07 20:06 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0005_auto_20160331_2030'), + ] + + operations = [ + migrations.AddField( + model_name='coursetheme', + 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!'), + ), + migrations.AddField( + model_name='coursetheme', + 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'), + ), + ] diff --git a/courses/migrations/0007_lesson_video_date.py b/courses/migrations/0007_lesson_video_date.py old mode 100755 new mode 100644 index e47b543..270829a --- a/courses/migrations/0007_lesson_video_date.py +++ b/courses/migrations/0007_lesson_video_date.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-13 15:39 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0006_auto_20160407_2006'), - ] - - operations = [ - migrations.AddField( - model_name='lesson', - 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'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-13 15:39 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0006_auto_20160407_2006'), + ] + + operations = [ + migrations.AddField( + model_name='lesson', + 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'), + ), + ] diff --git a/courses/migrations/0008_coursetheme_block.py b/courses/migrations/0008_coursetheme_block.py old mode 100755 new mode 100644 index 2aa3c01..4021797 --- a/courses/migrations/0008_coursetheme_block.py +++ b/courses/migrations/0008_coursetheme_block.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-20 18:19 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0007_lesson_video_date'), - ] - - operations = [ - migrations.AddField( - model_name='coursetheme', - 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'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-20 18:19 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0007_lesson_video_date'), + ] + + operations = [ + migrations.AddField( + model_name='coursetheme', + 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'), + ), + ] diff --git a/courses/migrations/0009_remove_coursetheme_block.py b/courses/migrations/0009_remove_coursetheme_block.py old mode 100755 new mode 100644 index a5255ef..9220464 --- a/courses/migrations/0009_remove_coursetheme_block.py +++ b/courses/migrations/0009_remove_coursetheme_block.py @@ -1,19 +1,19 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-20 18:21 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0008_coursetheme_block'), - ] - - operations = [ - migrations.RemoveField( - model_name='coursetheme', - name='block', - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-20 18:21 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0008_coursetheme_block'), + ] + + operations = [ + migrations.RemoveField( + model_name='coursetheme', + name='block', + ), + ] diff --git a/courses/migrations/0010_remove_coursetheme_empty_description.py b/courses/migrations/0010_remove_coursetheme_empty_description.py old mode 100755 new mode 100644 index 524af13..c5bc663 --- a/courses/migrations/0010_remove_coursetheme_empty_description.py +++ b/courses/migrations/0010_remove_coursetheme_empty_description.py @@ -1,19 +1,19 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-20 19:09 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0009_remove_coursetheme_block'), - ] - - operations = [ - migrations.RemoveField( - model_name='coursetheme', - name='empty_description', - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-20 19:09 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0009_remove_coursetheme_block'), + ] + + operations = [ + migrations.RemoveField( + model_name='coursetheme', + name='empty_description', + ), + ] diff --git a/courses/migrations/0011_auto_20160425_1550.py b/courses/migrations/0011_auto_20160425_1550.py old mode 100755 new mode 100644 index d00f697..dd133de --- a/courses/migrations/0011_auto_20160425_1550.py +++ b/courses/migrations/0011_auto_20160425_1550.py @@ -1,25 +1,25 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-25 15:50 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0010_remove_coursetheme_empty_description'), - ] - - operations = [ - migrations.AddField( - model_name='course', - name='in_diploma', - field=models.ImageField(null=True, upload_to=b'diploma', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u0438\u043f\u043b\u043e\u043c\u0430'), - ), - migrations.AddField( - model_name='course', - name='out_diploma', - field=models.ImageField(null=True, upload_to=b'diploma', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u0438\u043f\u043b\u043e\u043c\u0430 c \u043f\u043e\u0434\u043f\u0438\u0441\u044c\u044e'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-25 15:50 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0010_remove_coursetheme_empty_description'), + ] + + operations = [ + migrations.AddField( + model_name='course', + name='in_diploma', + field=models.ImageField(null=True, upload_to=b'diploma', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u0438\u043f\u043b\u043e\u043c\u0430'), + ), + migrations.AddField( + model_name='course', + name='out_diploma', + field=models.ImageField(null=True, upload_to=b'diploma', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u0438\u043f\u043b\u043e\u043c\u0430 c \u043f\u043e\u0434\u043f\u0438\u0441\u044c\u044e'), + ), + ] diff --git a/courses/migrations/0012_course_diploma_key.py b/courses/migrations/0012_course_diploma_key.py old mode 100755 new mode 100644 index 5a4c9fa..103b608 --- a/courses/migrations/0012_course_diploma_key.py +++ b/courses/migrations/0012_course_diploma_key.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-25 15:53 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0011_auto_20160425_1550'), - ] - - operations = [ - migrations.AddField( - model_name='course', - name='diploma_key', - field=models.IntegerField(default=0, help_text='\u0422\u043e\u043b\u044c\u043a\u043e \u0446\u0438\u0444\u0440\u044b, \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432', verbose_name='\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043a\u043b\u044e\u0447'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-25 15:53 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0011_auto_20160425_1550'), + ] + + operations = [ + migrations.AddField( + model_name='course', + name='diploma_key', + field=models.IntegerField(default=0, help_text='\u0422\u043e\u043b\u044c\u043a\u043e \u0446\u0438\u0444\u0440\u044b, \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432', verbose_name='\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043a\u043b\u044e\u0447'), + ), + ] diff --git a/courses/migrations/0013_auto_20160425_1720.py b/courses/migrations/0013_auto_20160425_1720.py old mode 100755 new mode 100644 index 83ad495..46ab6e8 --- a/courses/migrations/0013_auto_20160425_1720.py +++ b/courses/migrations/0013_auto_20160425_1720.py @@ -1,42 +1,42 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-25 17:20 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0012_course_diploma_key'), - ] - - operations = [ - migrations.RemoveField( - model_name='course', - name='diploma_key', - ), - migrations.RemoveField( - model_name='course', - name='in_diploma', - ), - migrations.RemoveField( - model_name='course', - name='out_diploma', - ), - migrations.AddField( - model_name='exam', - name='diploma_key', - field=models.IntegerField(default=0, help_text='\u0422\u043e\u043b\u044c\u043a\u043e \u0446\u0438\u0444\u0440\u044b, \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432', verbose_name='\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043a\u043b\u044e\u0447'), - ), - migrations.AddField( - model_name='exam', - name='in_diploma', - field=models.ImageField(null=True, upload_to=b'diploma', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u0438\u043f\u043b\u043e\u043c\u0430'), - ), - migrations.AddField( - model_name='exam', - name='out_diploma', - field=models.ImageField(null=True, upload_to=b'diploma', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u0438\u043f\u043b\u043e\u043c\u0430 c \u043f\u043e\u0434\u043f\u0438\u0441\u044c\u044e'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-25 17:20 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0012_course_diploma_key'), + ] + + operations = [ + migrations.RemoveField( + model_name='course', + name='diploma_key', + ), + migrations.RemoveField( + model_name='course', + name='in_diploma', + ), + migrations.RemoveField( + model_name='course', + name='out_diploma', + ), + migrations.AddField( + model_name='exam', + name='diploma_key', + field=models.IntegerField(default=0, help_text='\u0422\u043e\u043b\u044c\u043a\u043e \u0446\u0438\u0444\u0440\u044b, \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432', verbose_name='\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043a\u043b\u044e\u0447'), + ), + migrations.AddField( + model_name='exam', + name='in_diploma', + field=models.ImageField(null=True, upload_to=b'diploma', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u0438\u043f\u043b\u043e\u043c\u0430'), + ), + migrations.AddField( + model_name='exam', + name='out_diploma', + field=models.ImageField(null=True, upload_to=b'diploma', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u0438\u043f\u043b\u043e\u043c\u0430 c \u043f\u043e\u0434\u043f\u0438\u0441\u044c\u044e'), + ), + ] diff --git a/courses/migrations/0014_diploma.py b/courses/migrations/0014_diploma.py old mode 100755 new mode 100644 index 2d599e9..c01aef5 --- a/courses/migrations/0014_diploma.py +++ b/courses/migrations/0014_diploma.py @@ -1,35 +1,35 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-25 17:37 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('courses', '0013_auto_20160425_1720'), - ] - - operations = [ - migrations.CreateModel( - name='Diploma', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('key', models.CharField(max_length=255, verbose_name='\u041a\u043b\u044e\u0447')), - ('date', models.DateField(default=datetime.date.today, verbose_name='\u0414\u0430\u0442\u0430 \u0432\u044b\u0434\u0430\u0447\u0438')), - ('out_image', models.ImageField(upload_to=b'', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 c \u043f\u0435\u0447\u0430\u0442\u044c\u044e')), - ('in_image', models.ImageField(upload_to=b'', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 c \u043f\u0435\u0447\u0430\u0442\u044c\u044e')), - ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u043a\u0443\u0440\u0441')), - ('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={ - 'verbose_name': '\u0414\u0438\u043f\u043b\u043e\u043c\u044b', - 'verbose_name_plural': '\u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u0441\u0434\u0430\u0447\u0438 \u042d\u043a\u0437\u0430\u043c\u0435\u043d\u043e\u0432', - }, - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-25 17:37 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('courses', '0013_auto_20160425_1720'), + ] + + operations = [ + migrations.CreateModel( + name='Diploma', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('key', models.CharField(max_length=255, verbose_name='\u041a\u043b\u044e\u0447')), + ('date', models.DateField(default=datetime.date.today, verbose_name='\u0414\u0430\u0442\u0430 \u0432\u044b\u0434\u0430\u0447\u0438')), + ('out_image', models.ImageField(upload_to=b'', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 c \u043f\u0435\u0447\u0430\u0442\u044c\u044e')), + ('in_image', models.ImageField(upload_to=b'', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 c \u043f\u0435\u0447\u0430\u0442\u044c\u044e')), + ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u043a\u0443\u0440\u0441')), + ('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={ + 'verbose_name': '\u0414\u0438\u043f\u043b\u043e\u043c\u044b', + 'verbose_name_plural': '\u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u0441\u0434\u0430\u0447\u0438 \u042d\u043a\u0437\u0430\u043c\u0435\u043d\u043e\u0432', + }, + ), + ] diff --git a/courses/migrations/0015_auto_20160425_1750.py b/courses/migrations/0015_auto_20160425_1750.py old mode 100755 new mode 100644 index 58a2da4..207bfd4 --- a/courses/migrations/0015_auto_20160425_1750.py +++ b/courses/migrations/0015_auto_20160425_1750.py @@ -1,45 +1,45 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-25 17:50 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0014_diploma'), - ] - - operations = [ - migrations.AlterModelOptions( - name='diploma', - options={'verbose_name': '\u0414\u0438\u043f\u043b\u043e\u043c', 'verbose_name_plural': '\u0414\u0438\u043f\u043b\u043e\u043c\u044b'}, - ), - migrations.RemoveField( - model_name='exam', - name='diploma', - ), - migrations.RemoveField( - model_name='exam', - name='diploma_key', - ), - migrations.RemoveField( - model_name='exam', - name='in_diploma', - ), - migrations.RemoveField( - model_name='exam', - name='out_diploma', - ), - migrations.AlterField( - model_name='diploma', - name='in_image', - field=models.ImageField(upload_to=b'diploms', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 c \u043f\u0435\u0447\u0430\u0442\u044c\u044e'), - ), - migrations.AlterField( - model_name='diploma', - name='out_image', - field=models.ImageField(upload_to=b'diploms', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0431\u0435\u0437 \u043f\u0435\u0447\u0430\u0442\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-25 17:50 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0014_diploma'), + ] + + operations = [ + migrations.AlterModelOptions( + name='diploma', + options={'verbose_name': '\u0414\u0438\u043f\u043b\u043e\u043c', 'verbose_name_plural': '\u0414\u0438\u043f\u043b\u043e\u043c\u044b'}, + ), + migrations.RemoveField( + model_name='exam', + name='diploma', + ), + migrations.RemoveField( + model_name='exam', + name='diploma_key', + ), + migrations.RemoveField( + model_name='exam', + name='in_diploma', + ), + migrations.RemoveField( + model_name='exam', + name='out_diploma', + ), + migrations.AlterField( + model_name='diploma', + name='in_image', + field=models.ImageField(upload_to=b'diploms', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 c \u043f\u0435\u0447\u0430\u0442\u044c\u044e'), + ), + migrations.AlterField( + model_name='diploma', + name='out_image', + field=models.ImageField(upload_to=b'diploms', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0431\u0435\u0437 \u043f\u0435\u0447\u0430\u0442\u0438'), + ), + ] diff --git a/courses/migrations/0016_auto_20160425_1752.py b/courses/migrations/0016_auto_20160425_1752.py old mode 100755 new mode 100644 index 702395c..9619ff4 --- a/courses/migrations/0016_auto_20160425_1752.py +++ b/courses/migrations/0016_auto_20160425_1752.py @@ -1,30 +1,30 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-25 17:52 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0015_auto_20160425_1750'), - ] - - operations = [ - migrations.AddField( - model_name='course', - name='diploma_key', - field=models.IntegerField(default=0, help_text='\u0422\u043e\u043b\u044c\u043a\u043e \u0446\u0438\u0444\u0440\u044b, \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432', verbose_name='\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043a\u043b\u044e\u0447'), - ), - migrations.AddField( - model_name='course', - name='in_diploma', - field=models.ImageField(null=True, upload_to=b'diploma', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u0438\u043f\u043b\u043e\u043c\u0430'), - ), - migrations.AddField( - model_name='course', - name='out_diploma', - field=models.ImageField(null=True, upload_to=b'diploma', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u0438\u043f\u043b\u043e\u043c\u0430 c \u043f\u043e\u0434\u043f\u0438\u0441\u044c\u044e'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-25 17:52 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0015_auto_20160425_1750'), + ] + + operations = [ + migrations.AddField( + model_name='course', + name='diploma_key', + field=models.IntegerField(default=0, help_text='\u0422\u043e\u043b\u044c\u043a\u043e \u0446\u0438\u0444\u0440\u044b, \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432', verbose_name='\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043a\u043b\u044e\u0447'), + ), + migrations.AddField( + model_name='course', + name='in_diploma', + field=models.ImageField(null=True, upload_to=b'diploma', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u0438\u043f\u043b\u043e\u043c\u0430'), + ), + migrations.AddField( + model_name='course', + name='out_diploma', + field=models.ImageField(null=True, upload_to=b'diploma', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u0438\u043f\u043b\u043e\u043c\u0430 c \u043f\u043e\u0434\u043f\u0438\u0441\u044c\u044e'), + ), + ] diff --git a/courses/migrations/0017_auto_20160426_1240.py b/courses/migrations/0017_auto_20160426_1240.py old mode 100755 new mode 100644 index 89ed9b0..a7f9c69 --- a/courses/migrations/0017_auto_20160426_1240.py +++ b/courses/migrations/0017_auto_20160426_1240.py @@ -1,39 +1,39 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-26 12:40 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0016_auto_20160425_1752'), - ] - - operations = [ - migrations.RemoveField( - model_name='diploma', - name='date', - ), - migrations.RemoveField( - model_name='diploma', - name='student', - ), - migrations.AddField( - model_name='diploma', - name='icon', - field=models.ImageField(null=True, upload_to=b'diploms', verbose_name='\u041c\u0438\u043d\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430'), - ), - migrations.AlterField( - model_name='diploma', - name='course', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441'), - ), - migrations.AlterField( - model_name='diploma', - name='key', - field=models.CharField(max_length=255, verbose_name='\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043a\u043b\u044e\u0447'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-26 12:40 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0016_auto_20160425_1752'), + ] + + operations = [ + migrations.RemoveField( + model_name='diploma', + name='date', + ), + migrations.RemoveField( + model_name='diploma', + name='student', + ), + migrations.AddField( + model_name='diploma', + name='icon', + field=models.ImageField(null=True, upload_to=b'diploms', verbose_name='\u041c\u0438\u043d\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430'), + ), + migrations.AlterField( + model_name='diploma', + name='course', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441'), + ), + migrations.AlterField( + model_name='diploma', + name='key', + field=models.CharField(max_length=255, verbose_name='\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043a\u043b\u044e\u0447'), + ), + ] diff --git a/courses/migrations/0018_remove_exam_icon.py b/courses/migrations/0018_remove_exam_icon.py old mode 100755 new mode 100644 index be66e01..00c28f4 --- a/courses/migrations/0018_remove_exam_icon.py +++ b/courses/migrations/0018_remove_exam_icon.py @@ -1,19 +1,19 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-26 12:41 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0017_auto_20160426_1240'), - ] - - operations = [ - migrations.RemoveField( - model_name='exam', - name='icon', - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-26 12:41 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0017_auto_20160426_1240'), + ] + + operations = [ + migrations.RemoveField( + model_name='exam', + name='icon', + ), + ] diff --git a/courses/migrations/0019_remove_exam_title.py b/courses/migrations/0019_remove_exam_title.py old mode 100755 new mode 100644 index ffb987a..4a2e9d3 --- a/courses/migrations/0019_remove_exam_title.py +++ b/courses/migrations/0019_remove_exam_title.py @@ -1,19 +1,19 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-26 12:42 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0018_remove_exam_icon'), - ] - - operations = [ - migrations.RemoveField( - model_name='exam', - name='title', - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-26 12:42 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0018_remove_exam_icon'), + ] + + operations = [ + migrations.RemoveField( + model_name='exam', + name='title', + ), + ] diff --git a/courses/migrations/0020_auto_20160426_1243.py b/courses/migrations/0020_auto_20160426_1243.py old mode 100755 new mode 100644 index 1e7aa88..1e29759 --- a/courses/migrations/0020_auto_20160426_1243.py +++ b/courses/migrations/0020_auto_20160426_1243.py @@ -1,27 +1,27 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-26 12:43 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0019_remove_exam_title'), - ] - - operations = [ - migrations.RemoveField( - model_name='course', - name='diploma_key', - ), - migrations.RemoveField( - model_name='course', - name='in_diploma', - ), - migrations.RemoveField( - model_name='course', - name='out_diploma', - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-26 12:43 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0019_remove_exam_title'), + ] + + operations = [ + migrations.RemoveField( + model_name='course', + name='diploma_key', + ), + migrations.RemoveField( + model_name='course', + name='in_diploma', + ), + migrations.RemoveField( + model_name='course', + name='out_diploma', + ), + ] diff --git a/courses/migrations/0021_auto_20160426_1447.py b/courses/migrations/0021_auto_20160426_1447.py old mode 100755 new mode 100644 index abf6d9a..62c2722 --- a/courses/migrations/0021_auto_20160426_1447.py +++ b/courses/migrations/0021_auto_20160426_1447.py @@ -1,75 +1,75 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-26 14:47 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0020_auto_20160426_1243'), - ] - - operations = [ - migrations.AddField( - model_name='diploma', - name='date_color', - field=models.CharField(max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u0434\u0430\u0442\u044b'), - ), - migrations.AddField( - model_name='diploma', - name='date_font', - field=models.FileField(null=True, upload_to=b'diploms', verbose_name='\u0428\u0440\u0438\u0444\u0442 \u0434\u0430\u0442\u044b'), - ), - migrations.AddField( - model_name='diploma', - name='date_place', - field=models.CharField(help_text='\u041f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0441\u0432\u0435\u0440\u0445\u0443:\u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0441\u043b\u0435\u0432\u0430 - 256:256', max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0434\u0430\u0442\u044b'), - ), - migrations.AddField( - model_name='diploma', - name='date_size', - field=models.CharField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0440 \u0434\u0430\u0442\u044b'), - ), - migrations.AddField( - model_name='diploma', - name='key_color', - field=models.CharField(max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u0434\u0430\u0442\u044b'), - ), - migrations.AddField( - model_name='diploma', - name='key_font', - field=models.FileField(null=True, upload_to=b'diploms', verbose_name='\u0428\u0440\u0438\u0444\u0442 \u0434\u0430\u0442\u044b'), - ), - migrations.AddField( - model_name='diploma', - name='key_place', - field=models.CharField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0430'), - ), - migrations.AddField( - model_name='diploma', - name='key_size', - field=models.CharField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0440 \u0434\u0430\u0442\u044b'), - ), - migrations.AddField( - model_name='diploma', - name='name_color', - field=models.CharField(max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u0434\u0430\u0442\u044b'), - ), - migrations.AddField( - model_name='diploma', - name='name_font', - field=models.FileField(null=True, upload_to=b'diploms', verbose_name='\u0428\u0440\u0438\u0444\u0442 \u0434\u0430\u0442\u044b'), - ), - migrations.AddField( - model_name='diploma', - name='name_place', - field=models.CharField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438'), - ), - migrations.AddField( - model_name='diploma', - name='name_size', - field=models.CharField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0440 \u0434\u0430\u0442\u044b'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-26 14:47 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0020_auto_20160426_1243'), + ] + + operations = [ + migrations.AddField( + model_name='diploma', + name='date_color', + field=models.CharField(max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u0434\u0430\u0442\u044b'), + ), + migrations.AddField( + model_name='diploma', + name='date_font', + field=models.FileField(null=True, upload_to=b'diploms', verbose_name='\u0428\u0440\u0438\u0444\u0442 \u0434\u0430\u0442\u044b'), + ), + migrations.AddField( + model_name='diploma', + name='date_place', + field=models.CharField(help_text='\u041f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0441\u0432\u0435\u0440\u0445\u0443:\u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0441\u043b\u0435\u0432\u0430 - 256:256', max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0434\u0430\u0442\u044b'), + ), + migrations.AddField( + model_name='diploma', + name='date_size', + field=models.CharField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0440 \u0434\u0430\u0442\u044b'), + ), + migrations.AddField( + model_name='diploma', + name='key_color', + field=models.CharField(max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u0434\u0430\u0442\u044b'), + ), + migrations.AddField( + model_name='diploma', + name='key_font', + field=models.FileField(null=True, upload_to=b'diploms', verbose_name='\u0428\u0440\u0438\u0444\u0442 \u0434\u0430\u0442\u044b'), + ), + migrations.AddField( + model_name='diploma', + name='key_place', + field=models.CharField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0430'), + ), + migrations.AddField( + model_name='diploma', + name='key_size', + field=models.CharField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0440 \u0434\u0430\u0442\u044b'), + ), + migrations.AddField( + model_name='diploma', + name='name_color', + field=models.CharField(max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u0434\u0430\u0442\u044b'), + ), + migrations.AddField( + model_name='diploma', + name='name_font', + field=models.FileField(null=True, upload_to=b'diploms', verbose_name='\u0428\u0440\u0438\u0444\u0442 \u0434\u0430\u0442\u044b'), + ), + migrations.AddField( + model_name='diploma', + name='name_place', + field=models.CharField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438'), + ), + migrations.AddField( + model_name='diploma', + name='name_size', + field=models.CharField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0440 \u0434\u0430\u0442\u044b'), + ), + ] diff --git a/courses/migrations/0022_auto_20160426_1526.py b/courses/migrations/0022_auto_20160426_1526.py old mode 100755 new mode 100644 index 960aa2f..69d03eb --- a/courses/migrations/0022_auto_20160426_1526.py +++ b/courses/migrations/0022_auto_20160426_1526.py @@ -1,60 +1,60 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-26 15:26 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0021_auto_20160426_1447'), - ] - - operations = [ - migrations.AlterField( - model_name='diploma', - name='in_image', - field=models.ImageField(upload_to=b'diploms', verbose_name='\u0414\u0438\u043f\u043b\u043e\u043c c \u043f\u0435\u0447\u0430\u0442\u044c\u044e'), - ), - migrations.AlterField( - model_name='diploma', - name='key', - field=models.IntegerField(max_length=255, verbose_name='\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043a\u043b\u044e\u0447'), - ), - migrations.AlterField( - model_name='diploma', - name='key_color', - field=models.CharField(max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u043a\u043b\u044e\u0447\u0430'), - ), - migrations.AlterField( - model_name='diploma', - name='key_font', - field=models.FileField(null=True, upload_to=b'diploms', verbose_name='\u0428\u0440\u0438\u0444\u0442 \u043a\u043b\u044e\u0447\u0430'), - ), - migrations.AlterField( - model_name='diploma', - name='key_size', - field=models.CharField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u043b\u044e\u0447\u0430'), - ), - migrations.AlterField( - model_name='diploma', - name='name_color', - field=models.CharField(max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u0438\u043c\u0435\u043d\u0438'), - ), - migrations.AlterField( - model_name='diploma', - name='name_font', - field=models.FileField(null=True, upload_to=b'diploms', verbose_name='\u0428\u0440\u0438\u0444\u0442 \u0438\u043c\u0435\u043d\u0438'), - ), - migrations.AlterField( - model_name='diploma', - name='name_size', - field=models.CharField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0440 \u0438\u043c\u0435\u043d\u0438'), - ), - migrations.AlterField( - model_name='diploma', - name='out_image', - field=models.ImageField(upload_to=b'diploms', verbose_name='\u0414\u0438\u043f\u043b\u043e\u043c \u0431\u0435\u0437 \u043f\u0435\u0447\u0430\u0442\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-26 15:26 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0021_auto_20160426_1447'), + ] + + operations = [ + migrations.AlterField( + model_name='diploma', + name='in_image', + field=models.ImageField(upload_to=b'diploms', verbose_name='\u0414\u0438\u043f\u043b\u043e\u043c c \u043f\u0435\u0447\u0430\u0442\u044c\u044e'), + ), + migrations.AlterField( + model_name='diploma', + name='key', + field=models.IntegerField(max_length=255, verbose_name='\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043a\u043b\u044e\u0447'), + ), + migrations.AlterField( + model_name='diploma', + name='key_color', + field=models.CharField(max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u043a\u043b\u044e\u0447\u0430'), + ), + migrations.AlterField( + model_name='diploma', + name='key_font', + field=models.FileField(null=True, upload_to=b'diploms', verbose_name='\u0428\u0440\u0438\u0444\u0442 \u043a\u043b\u044e\u0447\u0430'), + ), + migrations.AlterField( + model_name='diploma', + name='key_size', + field=models.CharField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u043b\u044e\u0447\u0430'), + ), + migrations.AlterField( + model_name='diploma', + name='name_color', + field=models.CharField(max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u0438\u043c\u0435\u043d\u0438'), + ), + migrations.AlterField( + model_name='diploma', + name='name_font', + field=models.FileField(null=True, upload_to=b'diploms', verbose_name='\u0428\u0440\u0438\u0444\u0442 \u0438\u043c\u0435\u043d\u0438'), + ), + migrations.AlterField( + model_name='diploma', + name='name_size', + field=models.CharField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0440 \u0438\u043c\u0435\u043d\u0438'), + ), + migrations.AlterField( + model_name='diploma', + name='out_image', + field=models.ImageField(upload_to=b'diploms', verbose_name='\u0414\u0438\u043f\u043b\u043e\u043c \u0431\u0435\u0437 \u043f\u0435\u0447\u0430\u0442\u0438'), + ), + ] diff --git a/courses/migrations/0023_auto_20160426_1729.py b/courses/migrations/0023_auto_20160426_1729.py old mode 100755 new mode 100644 index 88b7a3e..01fc3de --- a/courses/migrations/0023_auto_20160426_1729.py +++ b/courses/migrations/0023_auto_20160426_1729.py @@ -1,55 +1,55 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-26 17:29 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0022_auto_20160426_1526'), - ] - - operations = [ - migrations.AlterField( - model_name='diploma', - name='date_color', - field=models.CharField(help_text='RGBA. \u041f\u0440\u0438\u043c\u0435\u0440: 0,0,0,1', max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u0434\u0430\u0442\u044b'), - ), - migrations.AlterField( - model_name='diploma', - name='date_size', - field=models.IntegerField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0440 \u0434\u0430\u0442\u044b'), - ), - migrations.AlterField( - model_name='diploma', - name='key_color', - field=models.CharField(help_text='RGBA. \u041f\u0440\u0438\u043c\u0435\u0440: 0,0,0,1', max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u043a\u043b\u044e\u0447\u0430'), - ), - migrations.AlterField( - model_name='diploma', - name='key_place', - field=models.CharField(help_text='\u041f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0441\u0432\u0435\u0440\u0445\u0443:\u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0441\u043b\u0435\u0432\u0430 - 256:256', max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0430'), - ), - migrations.AlterField( - model_name='diploma', - name='key_size', - field=models.IntegerField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u043b\u044e\u0447\u0430'), - ), - migrations.AlterField( - model_name='diploma', - name='name_color', - field=models.CharField(help_text='RGBA. \u041f\u0440\u0438\u043c\u0435\u0440: 0,0,0,1', max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u0438\u043c\u0435\u043d\u0438'), - ), - migrations.AlterField( - model_name='diploma', - name='name_place', - field=models.CharField(help_text='\u041f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0441\u0432\u0435\u0440\u0445\u0443:\u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0441\u043b\u0435\u0432\u0430 - 256:256', max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438'), - ), - migrations.AlterField( - model_name='diploma', - name='name_size', - field=models.IntegerField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0440 \u0438\u043c\u0435\u043d\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-26 17:29 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0022_auto_20160426_1526'), + ] + + operations = [ + migrations.AlterField( + model_name='diploma', + name='date_color', + field=models.CharField(help_text='RGBA. \u041f\u0440\u0438\u043c\u0435\u0440: 0,0,0,1', max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u0434\u0430\u0442\u044b'), + ), + migrations.AlterField( + model_name='diploma', + name='date_size', + field=models.IntegerField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0440 \u0434\u0430\u0442\u044b'), + ), + migrations.AlterField( + model_name='diploma', + name='key_color', + field=models.CharField(help_text='RGBA. \u041f\u0440\u0438\u043c\u0435\u0440: 0,0,0,1', max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u043a\u043b\u044e\u0447\u0430'), + ), + migrations.AlterField( + model_name='diploma', + name='key_place', + field=models.CharField(help_text='\u041f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0441\u0432\u0435\u0440\u0445\u0443:\u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0441\u043b\u0435\u0432\u0430 - 256:256', max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0430'), + ), + migrations.AlterField( + model_name='diploma', + name='key_size', + field=models.IntegerField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u043b\u044e\u0447\u0430'), + ), + migrations.AlterField( + model_name='diploma', + name='name_color', + field=models.CharField(help_text='RGBA. \u041f\u0440\u0438\u043c\u0435\u0440: 0,0,0,1', max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u0438\u043c\u0435\u043d\u0438'), + ), + migrations.AlterField( + model_name='diploma', + name='name_place', + field=models.CharField(help_text='\u041f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0441\u0432\u0435\u0440\u0445\u0443:\u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0441\u043b\u0435\u0432\u0430 - 256:256', max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438'), + ), + migrations.AlterField( + model_name='diploma', + name='name_size', + field=models.IntegerField(max_length=255, null=True, verbose_name='\u0420\u0430\u0437\u043c\u0435\u0440 \u0438\u043c\u0435\u043d\u0438'), + ), + ] diff --git a/courses/migrations/0024_auto_20160505_1748.py b/courses/migrations/0024_auto_20160505_1748.py old mode 100755 new mode 100644 index 18358c4..be1328c --- a/courses/migrations/0024_auto_20160505_1748.py +++ b/courses/migrations/0024_auto_20160505_1748.py @@ -1,30 +1,30 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-05 17:48 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0023_auto_20160426_1729'), - ] - - operations = [ - migrations.AlterField( - model_name='diploma', - name='date_color', - field=models.CharField(help_text='RGB. \u041f\u0440\u0438\u043c\u0435\u0440: 0,0,0', max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u0434\u0430\u0442\u044b'), - ), - migrations.AlterField( - model_name='diploma', - name='key_color', - field=models.CharField(help_text='RGB. \u041f\u0440\u0438\u043c\u0435\u0440: 0,0,0', max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u043a\u043b\u044e\u0447\u0430'), - ), - migrations.AlterField( - model_name='diploma', - name='name_color', - field=models.CharField(help_text='RGB. \u041f\u0440\u0438\u043c\u0435\u0440: 0,0,0', max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u0438\u043c\u0435\u043d\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-05 17:48 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0023_auto_20160426_1729'), + ] + + operations = [ + migrations.AlterField( + model_name='diploma', + name='date_color', + field=models.CharField(help_text='RGB. \u041f\u0440\u0438\u043c\u0435\u0440: 0,0,0', max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u0434\u0430\u0442\u044b'), + ), + migrations.AlterField( + model_name='diploma', + name='key_color', + field=models.CharField(help_text='RGB. \u041f\u0440\u0438\u043c\u0435\u0440: 0,0,0', max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u043a\u043b\u044e\u0447\u0430'), + ), + migrations.AlterField( + model_name='diploma', + name='name_color', + field=models.CharField(help_text='RGB. \u041f\u0440\u0438\u043c\u0435\u0440: 0,0,0', max_length=255, null=True, verbose_name='\u0426\u0432\u0435\u0442 \u0438\u043c\u0435\u043d\u0438'), + ), + ] diff --git a/courses/migrations/0025_auto_20160506_1303.py b/courses/migrations/0025_auto_20160506_1303.py old mode 100755 new mode 100644 index bbfe33b..5f11b01 --- a/courses/migrations/0025_auto_20160506_1303.py +++ b/courses/migrations/0025_auto_20160506_1303.py @@ -1,31 +1,31 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-06 13:03 -from __future__ import unicode_literals - -from django.db import migrations, models -import redactor.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0024_auto_20160505_1748'), - ] - - operations = [ - migrations.AddField( - model_name='skills', - name='big_icon', - field=models.ImageField(null=True, upload_to=b'skills', verbose_name='\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430'), - ), - migrations.AddField( - model_name='skills', - name='description', - field=redactor.fields.RedactorField(blank=True, verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435'), - ), - migrations.AddField( - model_name='skills', - name='mini_icon', - field=models.ImageField(null=True, upload_to=b'skills', verbose_name='\u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-06 13:03 +from __future__ import unicode_literals + +from django.db import migrations, models +import redactor.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0024_auto_20160505_1748'), + ] + + operations = [ + migrations.AddField( + model_name='skills', + name='big_icon', + field=models.ImageField(null=True, upload_to=b'skills', verbose_name='\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430'), + ), + migrations.AddField( + model_name='skills', + name='description', + field=redactor.fields.RedactorField(blank=True, verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435'), + ), + migrations.AddField( + model_name='skills', + name='mini_icon', + field=models.ImageField(null=True, upload_to=b'skills', verbose_name='\u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430'), + ), + ] diff --git a/courses/migrations/0026_auto_20160506_1838.py b/courses/migrations/0026_auto_20160506_1838.py old mode 100755 new mode 100644 index 1c2ec38..895f9d9 --- a/courses/migrations/0026_auto_20160506_1838.py +++ b/courses/migrations/0026_auto_20160506_1838.py @@ -1,30 +1,30 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-06 18:38 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0025_auto_20160506_1303'), - ] - - operations = [ - migrations.AlterField( - model_name='skills', - name='big_icon', - field=models.ImageField(help_text=b'65x65', null=True, upload_to=b'skills', verbose_name='\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430'), - ), - migrations.AlterField( - model_name='skills', - name='description', - field=models.TextField(blank=True, verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435'), - ), - migrations.AlterField( - model_name='skills', - name='mini_icon', - field=models.ImageField(help_text=b'15x15', null=True, upload_to=b'skills', verbose_name='\u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-06 18:38 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0025_auto_20160506_1303'), + ] + + operations = [ + migrations.AlterField( + model_name='skills', + name='big_icon', + field=models.ImageField(help_text=b'65x65', null=True, upload_to=b'skills', verbose_name='\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430'), + ), + migrations.AlterField( + model_name='skills', + name='description', + field=models.TextField(blank=True, verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435'), + ), + migrations.AlterField( + model_name='skills', + name='mini_icon', + field=models.ImageField(help_text=b'15x15', null=True, upload_to=b'skills', verbose_name='\u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430'), + ), + ] diff --git a/courses/migrations/__init__.py b/courses/migrations/__init__.py old mode 100755 new mode 100644 diff --git a/courses/models.py b/courses/models.py old mode 100755 new mode 100644 diff --git a/courses/templates.py b/courses/templates.py old mode 100755 new mode 100644 index 5c43473..2855134 --- a/courses/templates.py +++ b/courses/templates.py @@ -1,303 +1,303 @@ -# coding=utf-8 -import copy - -from lms.tools import out_date_format - -STATUS_LABEL_CLASS = 'btn btn-{0} pull-right btn-lg m-b-xs m-r-xs m-t-lg' - -# Ключи материалов -# L - Урок -# H - ДЗ -# E - Экзамен - -# ! Если мы ставим словарь в значение, обязательно должен быть ключь 'default' ! -STATUS_COLLECTION = ({ - 'title': {'default': u'Доступно для выполнения', 'L': u'Доступно'}, - 'flag': 'A', - 'color': 'info', - 'styles': 'text-shadow: 0 0 0;', - 'icon': 'glyphicon glyphicon-time' -}, { - 'title': {'default': u'Проверяется преподавателем'}, - 'flag': 'T', - 'color': 'info', - 'styles': 'text-shadow: 0 0 0;', - 'icon': 'glyphicon glyphicon-time' -}, { - 'title': {'default': u'Требуется доработка'}, - 'flag': 'E', - 'color': 'danger', - 'styles': 'text-shadow: 0 0 0;', - 'icon': 'glyphicon glyphicon-time' -}, { - 'title': {'default': u'Сдано', 'L': u'Пройдено'}, - 'flag': 'F', - 'color': 'success', - 'styles': 'text-shadow: 0 0 0;', - 'icon': 'glyphicon glyphicon-ok' -}, { - 'title': {'default': u'Не доступно'}, - 'flag': 'N', - 'color': 'default', - 'styles': 'color: #ccc;text-shadow: 0 0 0;', - 'icon': 'glyphicon glyphicon-remove' -}) - - -COMMENTS_STATUS_COLLECTION = ({ - 'title': 'Одобрено', - 'flag': 'G', - 'label': '', - 'background': '', - 'color': '', - 'style': '', - 'icon': '' - }, { - 'title': 'Отклонено', - 'flag': 'F', - 'label': '', - 'background': '', - 'color': '', - 'style': '', - 'icon': '' - }, { - 'title': 'Сообщение от администрации', - 'flag': 'A', - 'label': '', - 'background': '', - 'color': '', - 'style': '', - 'icon': '' - }, { - 'title': 'Технический вопрос', - 'flag': 'T', - 'label': '', - 'background': '', - 'color': '', - 'style': '', - 'icon': '' - }, { - 'title': '', - 'flag': 'S', - 'label': '', - 'background': '', - 'color': '', - 'style': '', - 'icon': '' - }) - -# ! Если мы ставим словарь в значение, обязательно должен быть ключь 'default' ! -LEVELS_COLLECTION = ({ - 'title': u'Базовый', - 'flag': 'B', - 'color': '#fff', - 'background': '#5cb85c', - 'icon': 'glyphicon glyphicon-signal' -}, { - 'title': u'Продвинутый', - 'flag': 'A', - 'color': '#fff', - 'background': '#5bc0de', - 'icon': 'glyphicon glyphicon-signal' -}, { - 'title': u'Экспертный', - 'flag': 'E', - 'color': '#fff', - 'background': '#d9534f', - 'icon': 'glyphicon glyphicon-signal' -}, { - 'title': u'Базовый + Продвинутый', - 'flag': 'B+A', - 'color': '#fff', - 'background': '#e68917', - 'icon': 'glyphicon glyphicon-signal' -}) - -# ! Если мы ставим словарь в значение, обязательно должен быть ключь 'default' ! -MATERIAL_TYPE_COLLECTION = ({ - 'title': u'Базовый материал', # Выводимое имя типа - 'flag': 'B', # Флаг, по которому идет поиск - 'color': '#dee5e7', # Стандартный цвет отображения типа материала - 'icon': '/static/img/1441672724_new_seo-37.png' # Стандартная иконка темы -}, { - 'title': u'Расширеный материал', - 'flag': 'E', - 'color': '#66cc99', - 'icon': '/static/img/1441673370_8.png' -}, { - 'title': u'Премиум материал', - 'flag': 'P', - 'color': '#ffffcc', - 'icon': '/static/img/1441671767_new_seo-36.png' -}, { - 'title': u'Предэкзаменационные материалы', - 'flag': 'M', - 'color': '#dee5e7', - 'icon': '/static/img/1447237167_BeOS_app_serv.png' -}, { - 'title': u'Экзаменационная тема', - 'flag': 'Ex', - 'color': '#ff1', - 'icon': '/static/img/1441672223_new_seo2-17.png' -}) - -USER_TYPES = ({ - 'flag': 'U', - 'title': u'Студент', - 'background': 'bg-primary', - 'style': '', - 'label': '' -}, { - 'flag': 'T', - 'title': u'Преподаватель', - 'background': 'bg-primary', - 'style': '', - 'label': '' -}, { - 'flag': 'M', - 'title': u'Менеджер', - 'background': 'bg-primary', - 'style': '', - 'label': '' -}, { - 'flag': 'S', - 'title': 'Руководитель', - 'background': 'bg-primary', - 'style': '', - 'label': '' -}, { - 'flag': 'A', - 'title': u'Команда «SkillBox»', - 'background': 'bg-warning', - 'style': 'color: #666;font-weight: normal;text-shadow: 0 0 0;', - 'label': '' -}, { - 'flag': 'S2', - 'title': u'Куратор', - 'background': 'bg-warning', - 'style': 'color: #666;font-weight: normal;text-shadow: 0 0 0;', - 'label': '' -}) - -BUTTON_TYPES = { - 'N': '', - 'B': u'Получить полный доступ к курсу', - 'H': u'Перейти к заданию', - 'L': u'Перейти к изучению', - 'O': u'Открыть лекцию', - 'E': u'Страница экзамена', - 'T': u'Не доступно по подписке', - 'F': u'Перейти к экзамену' -} - -BUTTON_TYPE = ({ - 'flag': 'A', - 'title': {'default': u'Открыть материал', - 'L': u'Перейти к следующему уроку', - 'H': u'Перейти к заданию', - 'E': u'Перейти к экзамену'}, - 'color': {'default': '#fff'}, - 'background': { - 'default': '#23ad44', - 'H': '#23b7e5' - }, - 'link': {'L': '/courses/lesson/', - 'H': '/courses/homework/', - 'E': '/courses/exam/'}, - 'by_type': { - 'L': 'lesson', - 'H': 'homework', - 'E': 'exam' - } -}, { - 'flag': 'F', - 'title': {'default': u'Открыть материал', - 'L': u'Открыть лекцию', - 'H': u'Открыть задание', - 'E': u'Открыть экзамен'}, - 'color': {'default': '#fff'}, - 'background': { - 'default': '#23ad44', - 'H': '#23b7e5' - }, - 'link': {'L': '/courses/lesson/', # ID урока - 'H': '/courses/homework/', # ID ДЗ - 'E': '/courses/exam/'}, # ID экзамена - 'by_type': { - 'L': 'lesson', - 'H': 'homework', - 'E': 'exam' - } -}) - - -def comment_fabric(_comment, __type=None, __user=None): - result = { - 'id': _comment.id, - 'status': search_in_collection(COMMENTS_STATUS_COLLECTION, 'flag', _comment.status), - 'closed': _comment.closed, - 'owner': _comment.owner.name if _comment.owner.name else _comment.owner.get_short_name(), - 'owner_name': _comment.owner.get_full_name(), - 'owner_id': _comment.owner.id, - 'owner_email': _comment.owner.email, - 'owner_type': search_in_collection(USER_TYPES, 'flag', _comment.owner.in_role), - 'owner_avatar': _comment.owner.get_image_url(type_in='small'), - 'owner_status': _comment.owner.get_status_display(), - 'owner_interactive_key': _comment.owner.interactive_key, - 'owner_model': '', - 'text': _comment.get_text(), - 'date': out_date_format(_comment.date, no_time=False), - 'replies': _comment.get_replies(__type, __user), - 'files': material_fabric(_comment.files.all()), - 'response': _comment.response, - 'response_comment': _comment.response_comment.get_face(_type=__type, _user=__user) if _comment.response else None - } - if __user: - result['saw'] = _comment.saw.filter(id=__user.id).exists() - #comment.set_saw(__user) - - return result - - -def material_fabric(stores): - result = [] - for store in stores: - result.append({ - 'id': store.id, - 'format': store.f_format.f_type, - 'icon_type': 'class' if store.f_format.icon_class else 'icon', - 'icon': store.f_format.icon.url if store.f_format.icon else store.f_format.icon_class, - 'url': store.original.url, - 'title': store.get_name_for_user(), - 'name': store.get_file_name() - }) - return result - - -def search_in_collection(collection, field, word, artifact=None, in_type='default'): - # Поиск по полю в коллекции словарей - # == Коллекции статичны. Найдя словарь отображения по флагу к примеру, можно просто вывести результат в веб - # == artifact - получить значение конкретно поля из словаря - # Получает кортеж, берет словари по очереди и сравнивает в них поле field - # Если значение в поле template[field] == work - возвращает полную копию словаря или возвращает пустое значение - render = '' - for template in collection: - if template[field] == word: - if artifact: - render = copy.deepcopy(template[artifact]) - else: - render = copy.deepcopy(template) - break - if render: - # Получить шаблон специально для запрашиваемого объекта по ключу объекта - # У урока к примеру сейчас это 'L' - try: - for key, value in render.items(): - if type(value) == dict: - if in_type in value: - render[key] = value[in_type] - else: - render[key] = value['default'] - except AttributeError: - return render - return render +# coding=utf-8 +import copy + +from lms.tools import out_date_format + +STATUS_LABEL_CLASS = 'btn btn-{0} pull-right btn-lg m-b-xs m-r-xs m-t-lg' + +# Ключи материалов +# L - Урок +# H - ДЗ +# E - Экзамен + +# ! Если мы ставим словарь в значение, обязательно должен быть ключь 'default' ! +STATUS_COLLECTION = ({ + 'title': {'default': u'Доступно для выполнения', 'L': u'Доступно'}, + 'flag': 'A', + 'color': 'info', + 'styles': 'text-shadow: 0 0 0;', + 'icon': 'glyphicon glyphicon-time' +}, { + 'title': {'default': u'Проверяется преподавателем'}, + 'flag': 'T', + 'color': 'info', + 'styles': 'text-shadow: 0 0 0;', + 'icon': 'glyphicon glyphicon-time' +}, { + 'title': {'default': u'Требуется доработка'}, + 'flag': 'E', + 'color': 'danger', + 'styles': 'text-shadow: 0 0 0;', + 'icon': 'glyphicon glyphicon-time' +}, { + 'title': {'default': u'Сдано', 'L': u'Пройдено'}, + 'flag': 'F', + 'color': 'success', + 'styles': 'text-shadow: 0 0 0;', + 'icon': 'glyphicon glyphicon-ok' +}, { + 'title': {'default': u'Не доступно'}, + 'flag': 'N', + 'color': 'default', + 'styles': 'color: #ccc;text-shadow: 0 0 0;', + 'icon': 'glyphicon glyphicon-remove' +}) + + +COMMENTS_STATUS_COLLECTION = ({ + 'title': 'Одобрено', + 'flag': 'G', + 'label': '', + 'background': '', + 'color': '', + 'style': '', + 'icon': '' + }, { + 'title': 'Отклонено', + 'flag': 'F', + 'label': '', + 'background': '', + 'color': '', + 'style': '', + 'icon': '' + }, { + 'title': 'Сообщение от администрации', + 'flag': 'A', + 'label': '', + 'background': '', + 'color': '', + 'style': '', + 'icon': '' + }, { + 'title': 'Технический вопрос', + 'flag': 'T', + 'label': '', + 'background': '', + 'color': '', + 'style': '', + 'icon': '' + }, { + 'title': '', + 'flag': 'S', + 'label': '', + 'background': '', + 'color': '', + 'style': '', + 'icon': '' + }) + +# ! Если мы ставим словарь в значение, обязательно должен быть ключь 'default' ! +LEVELS_COLLECTION = ({ + 'title': u'Базовый', + 'flag': 'B', + 'color': '#fff', + 'background': '#5cb85c', + 'icon': 'glyphicon glyphicon-signal' +}, { + 'title': u'Продвинутый', + 'flag': 'A', + 'color': '#fff', + 'background': '#5bc0de', + 'icon': 'glyphicon glyphicon-signal' +}, { + 'title': u'Экспертный', + 'flag': 'E', + 'color': '#fff', + 'background': '#d9534f', + 'icon': 'glyphicon glyphicon-signal' +}, { + 'title': u'Базовый + Продвинутый', + 'flag': 'B+A', + 'color': '#fff', + 'background': '#e68917', + 'icon': 'glyphicon glyphicon-signal' +}) + +# ! Если мы ставим словарь в значение, обязательно должен быть ключь 'default' ! +MATERIAL_TYPE_COLLECTION = ({ + 'title': u'Базовый материал', # Выводимое имя типа + 'flag': 'B', # Флаг, по которому идет поиск + 'color': '#dee5e7', # Стандартный цвет отображения типа материала + 'icon': '/static/img/1441672724_new_seo-37.png' # Стандартная иконка темы +}, { + 'title': u'Расширеный материал', + 'flag': 'E', + 'color': '#66cc99', + 'icon': '/static/img/1441673370_8.png' +}, { + 'title': u'Премиум материал', + 'flag': 'P', + 'color': '#ffffcc', + 'icon': '/static/img/1441671767_new_seo-36.png' +}, { + 'title': u'Предэкзаменационные материалы', + 'flag': 'M', + 'color': '#dee5e7', + 'icon': '/static/img/1447237167_BeOS_app_serv.png' +}, { + 'title': u'Экзаменационная тема', + 'flag': 'Ex', + 'color': '#ff1', + 'icon': '/static/img/1441672223_new_seo2-17.png' +}) + +USER_TYPES = ({ + 'flag': 'U', + 'title': u'Студент', + 'background': 'bg-primary', + 'style': '', + 'label': '' +}, { + 'flag': 'T', + 'title': u'Преподаватель', + 'background': 'bg-primary', + 'style': '', + 'label': '' +}, { + 'flag': 'M', + 'title': u'Менеджер', + 'background': 'bg-primary', + 'style': '', + 'label': '' +}, { + 'flag': 'S', + 'title': 'Руководитель', + 'background': 'bg-primary', + 'style': '', + 'label': '' +}, { + 'flag': 'A', + 'title': u'Команда «SkillBox»', + 'background': 'bg-warning', + 'style': 'color: #666;font-weight: normal;text-shadow: 0 0 0;', + 'label': '' +}, { + 'flag': 'S2', + 'title': u'Куратор', + 'background': 'bg-warning', + 'style': 'color: #666;font-weight: normal;text-shadow: 0 0 0;', + 'label': '' +}) + +BUTTON_TYPES = { + 'N': '', + 'B': u'Получить полный доступ к курсу', + 'H': u'Перейти к заданию', + 'L': u'Перейти к изучению', + 'O': u'Открыть лекцию', + 'E': u'Страница экзамена', + 'T': u'Не доступно по подписке', + 'F': u'Перейти к экзамену' +} + +BUTTON_TYPE = ({ + 'flag': 'A', + 'title': {'default': u'Открыть материал', + 'L': u'Перейти к следующему уроку', + 'H': u'Перейти к заданию', + 'E': u'Перейти к экзамену'}, + 'color': {'default': '#fff'}, + 'background': { + 'default': '#23ad44', + 'H': '#23b7e5' + }, + 'link': {'L': '/courses/lesson/', + 'H': '/courses/homework/', + 'E': '/courses/exam/'}, + 'by_type': { + 'L': 'lesson', + 'H': 'homework', + 'E': 'exam' + } +}, { + 'flag': 'F', + 'title': {'default': u'Открыть материал', + 'L': u'Открыть лекцию', + 'H': u'Открыть задание', + 'E': u'Открыть экзамен'}, + 'color': {'default': '#fff'}, + 'background': { + 'default': '#23ad44', + 'H': '#23b7e5' + }, + 'link': {'L': '/courses/lesson/', # ID урока + 'H': '/courses/homework/', # ID ДЗ + 'E': '/courses/exam/'}, # ID экзамена + 'by_type': { + 'L': 'lesson', + 'H': 'homework', + 'E': 'exam' + } +}) + + +def comment_fabric(_comment, __type=None, __user=None): + result = { + 'id': _comment.id, + 'status': search_in_collection(COMMENTS_STATUS_COLLECTION, 'flag', _comment.status), + 'closed': _comment.closed, + 'owner': _comment.owner.name if _comment.owner.name else _comment.owner.get_short_name(), + 'owner_name': _comment.owner.get_full_name(), + 'owner_id': _comment.owner.id, + 'owner_email': _comment.owner.email, + 'owner_type': search_in_collection(USER_TYPES, 'flag', _comment.owner.in_role), + 'owner_avatar': _comment.owner.get_image_url(type_in='small'), + 'owner_status': _comment.owner.get_status_display(), + 'owner_interactive_key': _comment.owner.interactive_key, + 'owner_model': '', + 'text': _comment.get_text(), + 'date': out_date_format(_comment.date, no_time=False), + 'replies': _comment.get_replies(__type, __user), + 'files': material_fabric(_comment.files.all()), + 'response': _comment.response, + 'response_comment': _comment.response_comment.get_face(_type=__type, _user=__user) if _comment.response else None + } + if __user: + result['saw'] = _comment.saw.filter(id=__user.id).exists() + #comment.set_saw(__user) + + return result + + +def material_fabric(stores): + result = [] + for store in stores: + result.append({ + 'id': store.id, + 'format': store.f_format.f_type, + 'icon_type': 'class' if store.f_format.icon_class else 'icon', + 'icon': store.f_format.icon.url if store.f_format.icon else store.f_format.icon_class, + 'url': store.original.url, + 'title': store.get_name_for_user(), + 'name': store.get_file_name() + }) + return result + + +def search_in_collection(collection, field, word, artifact=None, in_type='default'): + # Поиск по полю в коллекции словарей + # == Коллекции статичны. Найдя словарь отображения по флагу к примеру, можно просто вывести результат в веб + # == artifact - получить значение конкретно поля из словаря + # Получает кортеж, берет словари по очереди и сравнивает в них поле field + # Если значение в поле template[field] == work - возвращает полную копию словаря или возвращает пустое значение + render = '' + for template in collection: + if template[field] == word: + if artifact: + render = copy.deepcopy(template[artifact]) + else: + render = copy.deepcopy(template) + break + if render: + # Получить шаблон специально для запрашиваемого объекта по ключу объекта + # У урока к примеру сейчас это 'L' + try: + for key, value in render.items(): + if type(value) == dict: + if in_type in value: + render[key] = value[in_type] + else: + render[key] = value['default'] + except AttributeError: + return render + return render diff --git a/courses/templatetags/__init__.py b/courses/templatetags/__init__.py old mode 100755 new mode 100644 index a1208ca..7914b31 --- a/courses/templatetags/__init__.py +++ b/courses/templatetags/__init__.py @@ -1 +1 @@ -__author__ = 'baryshnikov' +__author__ = 'baryshnikov' diff --git a/courses/templatetags/course_filter.py b/courses/templatetags/course_filter.py old mode 100755 new mode 100644 index b1d4d36..ed58b68 --- a/courses/templatetags/course_filter.py +++ b/courses/templatetags/course_filter.py @@ -1,117 +1,117 @@ -from django import template -from access.models import User -from courses.models import CourseTheme, Lesson, Exam, Course, Homework -from journals.models import ExamJ, HomeworkJ, TeacherJ, CourseThemeJ -from finance.tools import system_check_bill -register = template.Library() - - -def getUserfactory(user): - if user: - try: - user = User.objects.get(id=user) - except User.DoesNotExist: - return user - else: - return None - return user - - -@register.filter -def get_theme_color(theme, student): - __theme = CourseTheme.objects.get(id=theme) - return __theme.get_color(getUserfactory(student)) - - -@register.filter -def get_homework_status_html(theme, student): - __theme = CourseTheme.objects.get(id=theme) - return __theme.homework_status_html(getUserfactory(student)) - - -@register.filter -def get_homework_status(course, student): - __course = CourseTheme.objects.get(id=course) - return __course.homework_status(getUserfactory(student)) - - -@register.filter -def get_theme_description(theme, student): - __theme = CourseTheme.objects.get(id=theme) - return __theme.get_description(getUserfactory(student)) - - -@register.filter -def get_lesson_status_name(lesson, student): - __lesson = Lesson.objects.get(id=lesson) - return __lesson.get_status_name(getUserfactory(student)) - - -@register.filter -def get_lesson_status(lesson, student): - __lesson = Lesson.objects.get(id=lesson) - return __lesson.get_status(getUserfactory(student)) - - -@register.filter -def get_theme_status(lesson, student): - __theme = CourseTheme.objects.get(id=lesson) - return __theme.get_status(getUserfactory(student)) - - -@register.filter -def get_exam_color(exam, student): - __exam = Exam.objects.get(id=exam) - return __exam.get_color(getUserfactory(student)) - - -@register.filter -def get_progress_persent(course, student): - try: - result = TeacherJ.objects.get(course__id=course, student=getUserfactory(student)).progress - except TeacherJ.DoesNotExist: - result = 0 - return result - - -@register.filter -def get_exam_status(course, student): - __course = Course.objects.get(id=course) - return __course.get_exam_status(getUserfactory(student)) - - -@register.filter -def check_bill(course, user): - return system_check_bill(Course.objects.get(id=course), getUserfactory(user)) - - -@register.filter -def get_actual_lesson_id(theme, user): - __theme = CourseTheme.objects.get(id=theme) - __user = getUserfactory(user) - try: - cj = CourseThemeJ.objects.get(student=__user, theme=__theme) - except TeacherJ.DoesNotExist: - return Lesson.objects.filter(theme=__theme).order_by('sort').values('id').first()['id'] - else: - return cj.actual_lesson.id - - -@register.filter -def get_button(theme, user): - return CourseTheme.objects.get(id=theme).get_button(getUserfactory(user)) - - -@register.filter -def get_exam_status_html(course, user): - return Course.objects.get(id=course).exam_status_html(user) - - -@register.filter -def get_exam_button(course, user): - return get_exam_button(Exam.objects.get(course=Course.objects.get(id=course)), getUserfactory(user)) - - -@register.filter -def get_student_homework_comments(theme, user): - return HomeworkJ.objects.filter(student=getUserfactory(user), homework=Homework.objects.get(id=CourseTheme.objects.get(id=theme))).exclude(status='F') +from django import template +from access.models import User +from courses.models import CourseTheme, Lesson, Exam, Course, Homework +from journals.models import ExamJ, HomeworkJ, TeacherJ, CourseThemeJ +from finance.tools import system_check_bill +register = template.Library() + + +def getUserfactory(user): + if user: + try: + user = User.objects.get(id=user) + except User.DoesNotExist: + return user + else: + return None + return user + + +@register.filter +def get_theme_color(theme, student): + __theme = CourseTheme.objects.get(id=theme) + return __theme.get_color(getUserfactory(student)) + + +@register.filter +def get_homework_status_html(theme, student): + __theme = CourseTheme.objects.get(id=theme) + return __theme.homework_status_html(getUserfactory(student)) + + +@register.filter +def get_homework_status(course, student): + __course = CourseTheme.objects.get(id=course) + return __course.homework_status(getUserfactory(student)) + + +@register.filter +def get_theme_description(theme, student): + __theme = CourseTheme.objects.get(id=theme) + return __theme.get_description(getUserfactory(student)) + + +@register.filter +def get_lesson_status_name(lesson, student): + __lesson = Lesson.objects.get(id=lesson) + return __lesson.get_status_name(getUserfactory(student)) + + +@register.filter +def get_lesson_status(lesson, student): + __lesson = Lesson.objects.get(id=lesson) + return __lesson.get_status(getUserfactory(student)) + + +@register.filter +def get_theme_status(lesson, student): + __theme = CourseTheme.objects.get(id=lesson) + return __theme.get_status(getUserfactory(student)) + + +@register.filter +def get_exam_color(exam, student): + __exam = Exam.objects.get(id=exam) + return __exam.get_color(getUserfactory(student)) + + +@register.filter +def get_progress_persent(course, student): + try: + result = TeacherJ.objects.get(course__id=course, student=getUserfactory(student)).progress + except TeacherJ.DoesNotExist: + result = 0 + return result + + +@register.filter +def get_exam_status(course, student): + __course = Course.objects.get(id=course) + return __course.get_exam_status(getUserfactory(student)) + + +@register.filter +def check_bill(course, user): + return system_check_bill(Course.objects.get(id=course), getUserfactory(user)) + + +@register.filter +def get_actual_lesson_id(theme, user): + __theme = CourseTheme.objects.get(id=theme) + __user = getUserfactory(user) + try: + cj = CourseThemeJ.objects.get(student=__user, theme=__theme) + except TeacherJ.DoesNotExist: + return Lesson.objects.filter(theme=__theme).order_by('sort').values('id').first()['id'] + else: + return cj.actual_lesson.id + + +@register.filter +def get_button(theme, user): + return CourseTheme.objects.get(id=theme).get_button(getUserfactory(user)) + + +@register.filter +def get_exam_status_html(course, user): + return Course.objects.get(id=course).exam_status_html(user) + + +@register.filter +def get_exam_button(course, user): + return get_exam_button(Exam.objects.get(course=Course.objects.get(id=course)), getUserfactory(user)) + + +@register.filter +def get_student_homework_comments(theme, user): + return HomeworkJ.objects.filter(student=getUserfactory(user), homework=Homework.objects.get(id=CourseTheme.objects.get(id=theme))).exclude(status='F') diff --git a/courses/tools.py b/courses/tools.py old mode 100755 new mode 100644 index c29228c..cee058c --- a/courses/tools.py +++ b/courses/tools.py @@ -1,443 +1,443 @@ -# coding=utf-8 -from django.db.models import Q -from courses.models import CourseTheme, Exam, Achievements, Lesson, Homework, SkillJ -from journals.models import LessonJ, HomeworkJ, ExamJ, AchievementJ, TeacherJ, DiplomaJ - - -def get_empty_face(course): - return TeacherJ.objects.filter(course__id=course).first().get_empty_face() - - -def set_read_flag(student, course): - pass - - -def get_next_button(student, start_place_type, start_place_id): - pass - - -def get_read_flag(student, course): - pass - - -def check_read_flag(student, course): - pass - - -def check_bought(token, user): - # Проверка доступа материала по подписке - pass - - -def make_journal(journal): - course = journal.course - student = journal.student - - -def get_user_courses(user): - # Получить рабочие курсы студента - return TeacherJ.objects.filter(student=user) - - -def get_user_diploms(user): - # Получить дипломы пользователя - return DiplomaJ.objects.filter(student=user).exclude(Q(in_image=None)|Q(key=None)).only('material', 'date') - - -def get_user_achievements(user): - # Получить все ачивки пользователя - themes = {} - for i in AchievementJ.objects.filter(student=user): - themes[i.group] = [] - - for i in AchievementJ.objects.filter(student=user): - themes[i.group].append(i) - - return themes - - -def get_user_achievements_count(user): - # Получение количества ачивок пользователя - return AchievementJ.objects.filter(student=user).count() - - -def get_user_skills(user): - # Получить скилы пользователя - lessons = [i.material for i in LessonJ.objects.filter(student=user, success=True)] - skills = SkillJ.objects.filter(lesson__in=lessons).only('size', 'skill') - result = {} - for i in skills: - if i.skill.title in result: - result[i.skill.title]['size'] += i.size - else: - result[i.skill.title] = { - 'color': i.skill.color, - 'size': i.size, - 'icon': i.skill.mini_icon - } - return result - - -def get_user_completed_courses_count(user): - return ExamJ.objects.filter(student=user, success=True).count() - - -def get_user_skills_size_count(user): - # Посчитать размер навыка - result = 0 - for key, value in get_user_skills(user).items(): - result += value['size'] - return result - - -def set_achievement(user, title, text, group, achievement_name): - # Просвоить ачивку - achievement = Achievements.objects.get(tech_name=achievement_name) - AchievementJ.objects.create(student=user, title=title, text=text, group=group, achievement=achievement) - -### Методы над курсом -def get_students_on_homework_length(course): - l = 0 - for i in CourseTheme.objects.filter(course=course): - l += i.get_active_homework_students_length() - return l - - -def get_active_exam_students(course): - result = [i.student for i in ExamJ.objects.filter(exam__course=course, status='T').exclude(success=True)] - return result - - -def get_active_exam_students_length(course): - result = ExamJ.objects.filter(exam__course=course, status='T').count() - return result - - -def exam_status_html(course, student): - status = course.get_exam_status(student) - data = u'{1}' - if status == 'B': - return data.format(u'primary', u'Пока недоступно') - elif status == 'P': - return data.format(u'warning', u'Достуно для выполнения') - elif status == 'T': - return data.format(u'info', u'Проверяется преподавателем') - elif status == 'E': - return data.format(u'danger', u'Требуется доработка') - elif status == 'F': - return data.format(u'success', u'Сдано') - - -def get_exam_status(course, student): - try: - exam = Exam.objects.get(course=course) - except Exam.DoesNotExist: - return 'B' - else: - return exam.get_status(student) - - -def check_course_finish(course, student): - if LessonJ.objects.filter(lesson__course=course, student=student, status='F').count() == Lesson.objects.filter( - course=course).count() \ - and HomeworkJ.objects.filter(homework__course=course, student=student, - status='F').count() == Homework.objects.filter(course=course).count() \ - and ExamJ.objects.filter(exam__course=course, student=student, status='F').count() == Exam.objects.filter( - course=course).count(): - return True - else: - return False - - -### Методы над темой -def get_theme_no_saw_lessons_length(__theme): - result = 0 - for n in __theme.get_lessons(): - result += n.get_no_saw_lessons_length() - - return result - - -def get_theme_description(theme, student): - result = '' - if theme.description: - result += '

%s

' % theme.description - - if theme.lessons_length() > 1: - result += u'
    ' - for i in Lesson.objects.filter(course=theme.course, theme=theme).order_by('sort'): - result += i.get_description(student) - result += u'
' - return result - - if not theme.description and theme.lessons_length() == 1: - return Lesson.objects.get(theme=theme).description - - -def get_active_homework_students(theme): - result = [] - if theme.homework_exist(): - for i in HomeworkJ.objects.filter(homework=theme.get_homework(), status='T'): - result.append(i.student) - return result - - -def get_active_homework_students_length(theme): - if theme.homework_exist(): - return HomeworkJ.objects.filter(homework=self.get_homework(), status='T').count() - else: - return 0 - - -def get_actual_theme_lesson_id(theme, student): - # Получение читаемого урока - if student: - try: - if student.is_authenticated() and student.is_admin: - return Lesson.objects.get(theme=theme, sort='1').id - except: - pass - - status = theme.get_status(student) - if status == 'R': - if LessonJ.objects.filter(status='R', lesson__theme=theme, student=student).exists(): - return LessonJ.objects.filter(status='R', lesson__theme=theme, student=student).first().lesson.id - else: - if theme.homework_status(student) in ['R', 'E', 'T', 'A']: - return Lesson.objects.filter(theme=theme).order_by('sort').last().id - else: - return Lesson.objects.filter(theme=theme, free=True).order_by('sort').first().id - - elif status == 'F': - return Lesson.objects.filter(theme=theme).order_by('sort').first().id - - else: - if Lesson.objects.filter(theme=theme, free=True).exists(): - return Lesson.objects.filter(theme=theme, free=True).order_by('sort').first().id - else: - return False - - -def get_one_lesson_id(theme): - if theme.lessons_length() == 1: - return Lesson.objects.filter(course=theme.course, theme=theme).first().id - else: - return '0' - - -def homework_status_html(theme, student): - status = theme.homework_status(student) - data = u'{1}' - if status == 'B': - return data.format(u'primary', u'Пока недоступно') - elif status == 'A': - return data.format(u'warning', u'Достуно для выполнения') - elif status == 'T': - return data.format(u'info', u'Проверяется преподавателем') - elif status == 'E': - return data.format(u'danger', u'Требуется доработка') - elif status == 'F': - return data.format(u'success', u'Сдано') - - -def homework_status(theme, student): - if Homework.objects.filter(theme=theme).exists(): - try: - homework = HomeworkJ.objects.get(student=student, homework=Homework.objects.get(theme=theme)) - except HomeworkJ.DoesNotExist: - return 'B' - else: - return homework.status - else: - return 'B' - - -def check_theme_finish(theme, student): - # Проверка, прошел ли пользователь тему по урокам - if LessonJ.objects.filter(student=student, status='F', lesson__theme=theme).count() == theme.lessons_length(): - return True - else: - return False - - -def check_study_access(theme, student): - if LessonJ.objects.filter(Q(student=student, status='R', lesson__theme=theme) | Q(student=student, status='F', - lesson__theme=theme)).exists(): - return True - else: - return False - - -def get_status(theme, student): - # 1) Читаемая тема - # 2) ДЗ на прохождении - # 3) Укомплектовано - if student: - if LessonJ.objects.filter(student=student, lesson__in=Lesson.objects.filter(theme=theme), - status='R').exists(): - return 'R' - - elif Lesson.objects.filter(free=True, theme=theme).exists() \ - and not LessonJ.objects.filter(student=student, lesson__in=Lesson.objects.filter(theme=theme, - free=True)): - return 'R' - - elif theme.homework_status(student) != 'B': - h_status = theme.homework_status(student) - if h_status == 'F': - return 'F' - - else: - return 'R' - - elif LessonJ.objects.filter(student=student, lesson__theme=theme, - status='F').count() == Lesson.objects.filter(theme=theme).count(): - return 'F' - - else: - return 'N' - else: - if theme.sort == 1 and Lesson.objects.filter(free=True, theme=theme).exists(): - return 'R' - else: - return 'N' - - -def get_theme_color(theme, student): - # Получить тип - # Если тип премиум или пополнение - status = theme.get_status(student) - if status == 'F': - return 'b-success' - elif status == 'N': - return 'b-default' - else: - return 'b-info' - - -def get_theme_skills(__theme): - result = [] - for i in SkillJ.objects.filter(lesson__in=__theme.get_lessons()): - if i.skill not in result: - result.append(i.skill) - return result - - -def have_skills(self): - return SkillJ.objects.filter(lesson__in=self.get_lessons()).exists() - - -### Методы над уроком -def get_lesson_description(lesson, student): - # 1 - id - # 2 - course_id - # 3 - title - # 4 - status - # 5 - free - button = u'
  • ' \ - u'{2} ' \ - u'{3} ' \ - u'{4}' \ - u'
  • ' - # 0 - title - # 1 - status - # 2 - free - button2 = u'
  • ' \ - u'{0} ' \ - u'{1} ' \ - u'{2}' \ - u'
  • ' - - if student and student.is_authenticated() and student.is_admin: - return button.format(lesson.id, lesson.course.id, - u'ID: %s %s' % (lesson.id, lesson.title) if student.is_admin else lesson.title, - '', '') - - elif lesson.get_status(student) != 'N': - return button.format(lesson.id, lesson.course.id, lesson.title, lesson.get_status_html(student), '') - - else: - if lesson.sort == 1 and lesson.free: - return button.format(lesson.id, lesson.course.id, lesson.title, '', - '') - else: - return button2.format(lesson.title, lesson.get_status_html(student), '') - - # if lesson.get_status(student) != 'N': - # return button.format(lesson.id, lesson.course.id, lesson.title, lesson.get_status_html(student), - # u'Бесплатный урок' if lesson.free else '') - - # else: - # if lesson.sort == 1 and lesson.free: - # return button.format(lesson.id, lesson.course.id, lesson.title, - # '', - # u'Бесплатный урок' if lesson.free else '') - # else: - # return button2.format(lesson.title, lesson.get_status_html(student), - # u'Бесплатный урок' if lesson.free else '') - - -def get_no_saw_lessons_length(lesson): - return lesson.comments.filter(saw=False).count() - - -def get_status_html(lesson, student): - status = lesson.get_status(student) - if status == 'N': - return u'' - elif status == 'F': - return u'' - elif status == 'R': - return u'' - - -def get_lesson_skills(lesson): - return SkillJ.objects.filter(lesson=lesson) - - -def get_comments_length(lesson): - return lesson.comments.filter(public=True).count() - - -def get_lesson_status(lesson, student): - try: - return LessonJ.objects.get(student=student, lesson=lesson).status - except LessonJ.DoesNotExist: - return 'N' - - -def get_status_name(lesson, student): - try: - return LessonJ.objects.get(student=student, lesson=lesson).get_status_display() - except LessonJ.DoesNotExist: - return u'Не доступно' - - -### Методы над ДЗ -def get_homework_status(__homework, student): - try: - homework = HomeworkJ.objects.get(student=student, homework=__homework) - except HomeworkJ.DoesNotExist: - return 'B' - else: - return homework.status - - -### Методы экзамена - -def get_exam_color(exam, student): - # Получить тип - # Если тип премиум или пополнение - status = exam.get_status(student) - if status == 'P': - return 'b-info' - elif status == 'T': - return 'b-primary' - elif status == 'F': - return 'b-success' - elif status == 'E': - return 'b-danger' - else: - return 'b-default' - +# coding=utf-8 +from django.db.models import Q +from courses.models import CourseTheme, Exam, Achievements, Lesson, Homework, SkillJ +from journals.models import LessonJ, HomeworkJ, ExamJ, AchievementJ, TeacherJ, DiplomaJ + + +def get_empty_face(course): + return TeacherJ.objects.filter(course__id=course).first().get_empty_face() + + +def set_read_flag(student, course): + pass + + +def get_next_button(student, start_place_type, start_place_id): + pass + + +def get_read_flag(student, course): + pass + + +def check_read_flag(student, course): + pass + + +def check_bought(token, user): + # Проверка доступа материала по подписке + pass + + +def make_journal(journal): + course = journal.course + student = journal.student + + +def get_user_courses(user): + # Получить рабочие курсы студента + return TeacherJ.objects.filter(student=user) + + +def get_user_diploms(user): + # Получить дипломы пользователя + return DiplomaJ.objects.filter(student=user).exclude(Q(in_image=None)|Q(key=None)).only('material', 'date') + + +def get_user_achievements(user): + # Получить все ачивки пользователя + themes = {} + for i in AchievementJ.objects.filter(student=user): + themes[i.group] = [] + + for i in AchievementJ.objects.filter(student=user): + themes[i.group].append(i) + + return themes + + +def get_user_achievements_count(user): + # Получение количества ачивок пользователя + return AchievementJ.objects.filter(student=user).count() + + +def get_user_skills(user): + # Получить скилы пользователя + lessons = [i.material for i in LessonJ.objects.filter(student=user, success=True)] + skills = SkillJ.objects.filter(lesson__in=lessons).only('size', 'skill') + result = {} + for i in skills: + if i.skill.title in result: + result[i.skill.title]['size'] += i.size + else: + result[i.skill.title] = { + 'color': i.skill.color, + 'size': i.size, + 'icon': i.skill.mini_icon + } + return result + + +def get_user_completed_courses_count(user): + return ExamJ.objects.filter(student=user, success=True).count() + + +def get_user_skills_size_count(user): + # Посчитать размер навыка + result = 0 + for key, value in get_user_skills(user).items(): + result += value['size'] + return result + + +def set_achievement(user, title, text, group, achievement_name): + # Просвоить ачивку + achievement = Achievements.objects.get(tech_name=achievement_name) + AchievementJ.objects.create(student=user, title=title, text=text, group=group, achievement=achievement) + +### Методы над курсом +def get_students_on_homework_length(course): + l = 0 + for i in CourseTheme.objects.filter(course=course): + l += i.get_active_homework_students_length() + return l + + +def get_active_exam_students(course): + result = [i.student for i in ExamJ.objects.filter(exam__course=course, status='T').exclude(success=True)] + return result + + +def get_active_exam_students_length(course): + result = ExamJ.objects.filter(exam__course=course, status='T').count() + return result + + +def exam_status_html(course, student): + status = course.get_exam_status(student) + data = u'{1}' + if status == 'B': + return data.format(u'primary', u'Пока недоступно') + elif status == 'P': + return data.format(u'warning', u'Достуно для выполнения') + elif status == 'T': + return data.format(u'info', u'Проверяется преподавателем') + elif status == 'E': + return data.format(u'danger', u'Требуется доработка') + elif status == 'F': + return data.format(u'success', u'Сдано') + + +def get_exam_status(course, student): + try: + exam = Exam.objects.get(course=course) + except Exam.DoesNotExist: + return 'B' + else: + return exam.get_status(student) + + +def check_course_finish(course, student): + if LessonJ.objects.filter(lesson__course=course, student=student, status='F').count() == Lesson.objects.filter( + course=course).count() \ + and HomeworkJ.objects.filter(homework__course=course, student=student, + status='F').count() == Homework.objects.filter(course=course).count() \ + and ExamJ.objects.filter(exam__course=course, student=student, status='F').count() == Exam.objects.filter( + course=course).count(): + return True + else: + return False + + +### Методы над темой +def get_theme_no_saw_lessons_length(__theme): + result = 0 + for n in __theme.get_lessons(): + result += n.get_no_saw_lessons_length() + + return result + + +def get_theme_description(theme, student): + result = '' + if theme.description: + result += '

    %s

    ' % theme.description + + if theme.lessons_length() > 1: + result += u'
      ' + for i in Lesson.objects.filter(course=theme.course, theme=theme).order_by('sort'): + result += i.get_description(student) + result += u'
    ' + return result + + if not theme.description and theme.lessons_length() == 1: + return Lesson.objects.get(theme=theme).description + + +def get_active_homework_students(theme): + result = [] + if theme.homework_exist(): + for i in HomeworkJ.objects.filter(homework=theme.get_homework(), status='T'): + result.append(i.student) + return result + + +def get_active_homework_students_length(theme): + if theme.homework_exist(): + return HomeworkJ.objects.filter(homework=self.get_homework(), status='T').count() + else: + return 0 + + +def get_actual_theme_lesson_id(theme, student): + # Получение читаемого урока + if student: + try: + if student.is_authenticated() and student.is_admin: + return Lesson.objects.get(theme=theme, sort='1').id + except: + pass + + status = theme.get_status(student) + if status == 'R': + if LessonJ.objects.filter(status='R', lesson__theme=theme, student=student).exists(): + return LessonJ.objects.filter(status='R', lesson__theme=theme, student=student).first().lesson.id + else: + if theme.homework_status(student) in ['R', 'E', 'T', 'A']: + return Lesson.objects.filter(theme=theme).order_by('sort').last().id + else: + return Lesson.objects.filter(theme=theme, free=True).order_by('sort').first().id + + elif status == 'F': + return Lesson.objects.filter(theme=theme).order_by('sort').first().id + + else: + if Lesson.objects.filter(theme=theme, free=True).exists(): + return Lesson.objects.filter(theme=theme, free=True).order_by('sort').first().id + else: + return False + + +def get_one_lesson_id(theme): + if theme.lessons_length() == 1: + return Lesson.objects.filter(course=theme.course, theme=theme).first().id + else: + return '0' + + +def homework_status_html(theme, student): + status = theme.homework_status(student) + data = u'{1}' + if status == 'B': + return data.format(u'primary', u'Пока недоступно') + elif status == 'A': + return data.format(u'warning', u'Достуно для выполнения') + elif status == 'T': + return data.format(u'info', u'Проверяется преподавателем') + elif status == 'E': + return data.format(u'danger', u'Требуется доработка') + elif status == 'F': + return data.format(u'success', u'Сдано') + + +def homework_status(theme, student): + if Homework.objects.filter(theme=theme).exists(): + try: + homework = HomeworkJ.objects.get(student=student, homework=Homework.objects.get(theme=theme)) + except HomeworkJ.DoesNotExist: + return 'B' + else: + return homework.status + else: + return 'B' + + +def check_theme_finish(theme, student): + # Проверка, прошел ли пользователь тему по урокам + if LessonJ.objects.filter(student=student, status='F', lesson__theme=theme).count() == theme.lessons_length(): + return True + else: + return False + + +def check_study_access(theme, student): + if LessonJ.objects.filter(Q(student=student, status='R', lesson__theme=theme) | Q(student=student, status='F', + lesson__theme=theme)).exists(): + return True + else: + return False + + +def get_status(theme, student): + # 1) Читаемая тема + # 2) ДЗ на прохождении + # 3) Укомплектовано + if student: + if LessonJ.objects.filter(student=student, lesson__in=Lesson.objects.filter(theme=theme), + status='R').exists(): + return 'R' + + elif Lesson.objects.filter(free=True, theme=theme).exists() \ + and not LessonJ.objects.filter(student=student, lesson__in=Lesson.objects.filter(theme=theme, + free=True)): + return 'R' + + elif theme.homework_status(student) != 'B': + h_status = theme.homework_status(student) + if h_status == 'F': + return 'F' + + else: + return 'R' + + elif LessonJ.objects.filter(student=student, lesson__theme=theme, + status='F').count() == Lesson.objects.filter(theme=theme).count(): + return 'F' + + else: + return 'N' + else: + if theme.sort == 1 and Lesson.objects.filter(free=True, theme=theme).exists(): + return 'R' + else: + return 'N' + + +def get_theme_color(theme, student): + # Получить тип + # Если тип премиум или пополнение + status = theme.get_status(student) + if status == 'F': + return 'b-success' + elif status == 'N': + return 'b-default' + else: + return 'b-info' + + +def get_theme_skills(__theme): + result = [] + for i in SkillJ.objects.filter(lesson__in=__theme.get_lessons()): + if i.skill not in result: + result.append(i.skill) + return result + + +def have_skills(self): + return SkillJ.objects.filter(lesson__in=self.get_lessons()).exists() + + +### Методы над уроком +def get_lesson_description(lesson, student): + # 1 - id + # 2 - course_id + # 3 - title + # 4 - status + # 5 - free + button = u'
  • ' \ + u'{2} ' \ + u'{3} ' \ + u'{4}' \ + u'
  • ' + # 0 - title + # 1 - status + # 2 - free + button2 = u'
  • ' \ + u'{0} ' \ + u'{1} ' \ + u'{2}' \ + u'
  • ' + + if student and student.is_authenticated() and student.is_admin: + return button.format(lesson.id, lesson.course.id, + u'ID: %s %s' % (lesson.id, lesson.title) if student.is_admin else lesson.title, + '', '') + + elif lesson.get_status(student) != 'N': + return button.format(lesson.id, lesson.course.id, lesson.title, lesson.get_status_html(student), '') + + else: + if lesson.sort == 1 and lesson.free: + return button.format(lesson.id, lesson.course.id, lesson.title, '', + '') + else: + return button2.format(lesson.title, lesson.get_status_html(student), '') + + # if lesson.get_status(student) != 'N': + # return button.format(lesson.id, lesson.course.id, lesson.title, lesson.get_status_html(student), + # u'Бесплатный урок' if lesson.free else '') + + # else: + # if lesson.sort == 1 and lesson.free: + # return button.format(lesson.id, lesson.course.id, lesson.title, + # '', + # u'Бесплатный урок' if lesson.free else '') + # else: + # return button2.format(lesson.title, lesson.get_status_html(student), + # u'Бесплатный урок' if lesson.free else '') + + +def get_no_saw_lessons_length(lesson): + return lesson.comments.filter(saw=False).count() + + +def get_status_html(lesson, student): + status = lesson.get_status(student) + if status == 'N': + return u'' + elif status == 'F': + return u'' + elif status == 'R': + return u'' + + +def get_lesson_skills(lesson): + return SkillJ.objects.filter(lesson=lesson) + + +def get_comments_length(lesson): + return lesson.comments.filter(public=True).count() + + +def get_lesson_status(lesson, student): + try: + return LessonJ.objects.get(student=student, lesson=lesson).status + except LessonJ.DoesNotExist: + return 'N' + + +def get_status_name(lesson, student): + try: + return LessonJ.objects.get(student=student, lesson=lesson).get_status_display() + except LessonJ.DoesNotExist: + return u'Не доступно' + + +### Методы над ДЗ +def get_homework_status(__homework, student): + try: + homework = HomeworkJ.objects.get(student=student, homework=__homework) + except HomeworkJ.DoesNotExist: + return 'B' + else: + return homework.status + + +### Методы экзамена + +def get_exam_color(exam, student): + # Получить тип + # Если тип премиум или пополнение + status = exam.get_status(student) + if status == 'P': + return 'b-info' + elif status == 'T': + return 'b-primary' + elif status == 'F': + return 'b-success' + elif status == 'E': + return 'b-danger' + else: + return 'b-default' + diff --git a/courses/urls.py b/courses/urls.py old mode 100755 new mode 100644 index 3ebcb83..0cdbd53 --- a/courses/urls.py +++ b/courses/urls.py @@ -1,45 +1,45 @@ -from courses import views, api -from django.conf.urls import url - -urlpatterns = [ - url(r'^([0-9]{1,99})$', views.course), - url(r'^([0-9]{1,99})#\s+$', views.course), - url(r'lesson/([0-9]{1,99})$', views.lesson), - url(r'homework/([0-9]{1,99})$', views.homework), - url(r'exam/([0-9]{1,99})$', views.exam), - url(r'read_lesson/$', api.read_lesson), - url(r'load_lesson_comments$', api.load_lesson_comments), - url(r'load_homework_comments_for_teacher$', api.load_homework_comments_for_teacher), - url(r'load_exam_comments_for_teacher$', api.load_exam_comments_for_teacher), - url(r'load_homework_comments$', api.load_homework_comments), - url(r'load_exam_comments$', api.load_exam_comments), - url(r'get_achievement$', api.get_achievement), - url(r'close_achievement$', api.close_achievement), - url(r'delete_comment$', api.delete_comment), - url(r'sent_lesson_comment$', api.sent_lesson_comment), - url(r'get_homework_comments_length_for_teacher$', api.get_homework_comments_length_for_teacher), - url(r'get_exam_comments_length_for_teacher$', api.get_exam_comments_length_for_teacher), - url(r'get_homework_comments_length$', api.get_homework_comments_length), - url(r'get_exam_comments_length$', api.get_exam_comments_length), - url(r'sent_homework_comment$', api.sent_homework_comment), - url(r'sent_exam_comment$', api.sent_exam_comment), - url(r'get_lesson_comments_length$', api.get_lesson_comments_length), - url(r'get_lesson_context/$', api.get_lesson_context), - url(r'send_accept_teach_comment$', api.send_accept_teach_comment), - url(r'send_cancel_teach_comment', api.send_cancel_teach_comment), - url(r'send_exam_accept_teach_comment$', api.send_exam_accept_teach_comment), - url(r'send_exam_cancel_teach_comment', api.send_exam_cancel_teach_comment), - url(r'get_next_button/$', api.get_next_button_ajax), - url(r'by_course_data/$', api.by_course_data), - url(r'get_homework_context/$', api.get_homework_context), - url(r'load_comment/$', api.load_comment), - url(r'sent_homework_up_teacher$', api.sent_homework_up_teacher), - url(r'sent_homework_down_teacher$', api.sent_homework_down_teacher), - url(r'sent_exam_up_teacher$', api.sent_exam_up_teacher), - url(r'sent_exam_down_teacher$', api.sent_exam_down_teacher), - url(r'get_process_vector$', api.get_process_vector), - url(r'get_comment_text/$', api.get_comment_text), - url(r'sent_comment_response/$', api.sent_comment_response), - url(r'achievements/$', views.achievements), - url(r'^(?P.*)$', views.course), -] +from courses import views, api +from django.conf.urls import url + +urlpatterns = [ + url(r'^([0-9]{1,99})$', views.course), + url(r'^([0-9]{1,99})#\s+$', views.course), + url(r'lesson/([0-9]{1,99})$', views.lesson), + url(r'homework/([0-9]{1,99})$', views.homework), + url(r'exam/([0-9]{1,99})$', views.exam), + url(r'read_lesson/$', api.read_lesson), + url(r'load_lesson_comments$', api.load_lesson_comments), + url(r'load_homework_comments_for_teacher$', api.load_homework_comments_for_teacher), + url(r'load_exam_comments_for_teacher$', api.load_exam_comments_for_teacher), + url(r'load_homework_comments$', api.load_homework_comments), + url(r'load_exam_comments$', api.load_exam_comments), + url(r'get_achievement$', api.get_achievement), + url(r'close_achievement$', api.close_achievement), + url(r'delete_comment$', api.delete_comment), + url(r'sent_lesson_comment$', api.sent_lesson_comment), + url(r'get_homework_comments_length_for_teacher$', api.get_homework_comments_length_for_teacher), + url(r'get_exam_comments_length_for_teacher$', api.get_exam_comments_length_for_teacher), + url(r'get_homework_comments_length$', api.get_homework_comments_length), + url(r'get_exam_comments_length$', api.get_exam_comments_length), + url(r'sent_homework_comment$', api.sent_homework_comment), + url(r'sent_exam_comment$', api.sent_exam_comment), + url(r'get_lesson_comments_length$', api.get_lesson_comments_length), + url(r'get_lesson_context/$', api.get_lesson_context), + url(r'send_accept_teach_comment$', api.send_accept_teach_comment), + url(r'send_cancel_teach_comment', api.send_cancel_teach_comment), + url(r'send_exam_accept_teach_comment$', api.send_exam_accept_teach_comment), + url(r'send_exam_cancel_teach_comment', api.send_exam_cancel_teach_comment), + url(r'get_next_button/$', api.get_next_button_ajax), + url(r'by_course_data/$', api.by_course_data), + url(r'get_homework_context/$', api.get_homework_context), + url(r'load_comment/$', api.load_comment), + url(r'sent_homework_up_teacher$', api.sent_homework_up_teacher), + url(r'sent_homework_down_teacher$', api.sent_homework_down_teacher), + url(r'sent_exam_up_teacher$', api.sent_exam_up_teacher), + url(r'sent_exam_down_teacher$', api.sent_exam_down_teacher), + url(r'get_process_vector$', api.get_process_vector), + url(r'get_comment_text/$', api.get_comment_text), + url(r'sent_comment_response/$', api.sent_comment_response), + url(r'achievements/$', views.achievements), + url(r'^(?P.*)$', views.course), +] diff --git a/courses/views.py b/courses/views.py old mode 100755 new mode 100644 index c43500d..cf672e6 --- a/courses/views.py +++ b/courses/views.py @@ -1,211 +1,211 @@ -# coding=utf-8 -import datetime -from django.http import Http404 - -from finance.models import Bill -from lms.decors import response_decor -from lms.tools import user_fabric -from courses.models import Course, Lesson, Homework, Exam, MaterialDirection, Achievements, Skills, SkillJ, CourseMap -from journals.models import LessonJ, TeacherJ, HomeworkJ, check_journal, ExamJ, AchievementJ -from finance.tools import system_check_bill - - -@response_decor(template='course.html', without_auth=True) -def course(request, slug): - # Страница курса - user = user_fabric(request.user) - if not slug: return {'redirect': '/'} - try: - course = Course.objects.get(slug=slug) - except Course.DoesNotExist: - try: - course = Course.objects.get(id=slug) - except ValueError: - raise Http404 - except Course.DoesNotExist: - raise Http404 - else: - return {'redirect': course.get_absolute_url()} - except Course.DoesNotExist: - raise Http404 - - if not course.public and not (request.user.is_authenticated() and request.user.is_admin): - raise Http404 - - if course.hidden: - if not request.user.is_authenticated(): - raise Http404 - else: - if not request.user.is_admin: - try: - Bill.objects.get(service__course=course, user=request.user, status='F') - except Bill.DoesNotExist: - raise Http404 - journal, created = TeacherJ.objects.get_or_create(course=course, student=user_fabric(request.user)) - if created: - check_journal(journal) - _map = CourseMap.objects.filter(course=course).order_by('sort').first() - _j = _map.get_obj() - if _map._type == 'H': - j, _created = HomeworkJ.objects.get_or_create(material=_j, student=request.user) - if _map._type == 'L': - j, _created = LessonJ.objects.get_or_create(material=_j, student=request.user) - j.open_material() - else: - journal, created = TeacherJ.objects.get_or_create(course=course, student=user_fabric(request.user)) - - if user and not journal.start_date: - journal.start_date = datetime.datetime.now() - journal.save() - - flow = None - start_flow = None - if request.user.is_authenticated() and not request.user.is_admin: - try: - bills = Bill.objects.filter( - service__course=course, user=request.user, status='F') - for bill in bills: - if bill.flow: - flow = bill.flow.get_status() - start_flow = bill.flow.start_flow - except Bill.DoesNotExist: - pass - - return { - 'course': journal.get_face(user_fabric(request.user)), - 'user': user_fabric(request.user), - 'flow': flow, - 'start_flow': start_flow, - } - - -@response_decor(template='lesson.html') -def lesson(request, lesson): - # Открытие окна урока - # TODO: Проверить все ссылки на ID Lesson - try: - lesson = Lesson.objects.get(id=lesson) - lj = LessonJ.objects.get(material=lesson, student=request.user) - except Lesson.DoesNotExist: - raise Http404 - except LessonJ.DoesNotExist: - j, c = TeacherJ.objects.get_or_create(student=request.user, course=lesson.course) - check_journal(j) - lj = LessonJ.objects.get(material=lesson, student=request.user) - - if request.user.is_authenticated() and request.user.is_admin or request.user in lesson.course.teachers.all(): - return {'lesson': lj.get_face(user_fabric(request.user)), - 'course': {'head': lj.parent.parent.get_head_face(), - 'level': lj.parent.parent.course.get_level(), - 'journal': lj.parent.parent.get_face(user_fabric(request.user))}, - 'bought': True, 'accept': True} - - if not lesson.free and not system_check_bill(lesson.token, request.user, theme_type=lesson.theme._type): - return {'redirect': '/access/by_error/'} - else: - if lj.get_status_flag() == 'N' and not lj.parent.parent.waiting.filter(token=lj.material.token).exists(): - return {'redirect': '/access/auth_error/'} - else: - result = False - if lj.get_status_flag() != 'N': - result = True - elif lj.parent.parent.waiting.filter(token=lj.material.token).exists(): - result = True - lj.date = datetime.datetime.now() - lj.save() - if result: - return {'lesson': lj.get_face(user_fabric(request.user)), 'course': {'head': lj.parent.parent.get_head_face(), 'level': lj.parent.parent.course.get_level(), 'journal': lj.parent.parent.get_face(user_fabric(request.user))}, 'bought': True, 'accept': True} - - -@response_decor(template='homework.html') -def homework(request, homework): - # Страница ДЗ - # TODO: Проверить везде ссылки с ID ДЗ - try: - hj = HomeworkJ.objects.get(material=Homework.objects.get(id=homework), student=request.user) - except Homework.DoesNotExist: - raise Http404 - except HomeworkJ.DoesNotExist: - j, c = TeacherJ.objects.get_or_create(student=request.user, course=Homework.objects.get(id=homework).course) - check_journal(j) - hj = HomeworkJ.objects.get(material=Homework.objects.get(id=homework), student=request.user) - - if request.user.is_authenticated() and request.user.is_admin: - return {'homework': hj.get_face(user_fabric(request.user)), - 'course': {'head': hj.parent.parent.get_head_face(), - 'level': hj.parent.parent.course.get_level(), - 'journal': hj.parent.parent.get_face(user_fabric(request.user))} - } - - if not system_check_bill(hj.material.token, request.user, theme_type=hj.material.theme._type): - return {'redirect': '/access/by_error/'} - else: - if hj.get_status_flag() == 'N' and not hj.parent.parent.waiting.filter(token=hj.material.token).exists(): - return {'redirect': '/access/auth_error/'} - else: - result = False - if hj.get_status_flag() != 'N': - result = True - elif hj.parent.parent.waiting.filter(token=hj.material.token).exists(): - hj.date = datetime.datetime.now() - hj.save() - result = True - - if result: - return {'homework': hj.get_face(user_fabric(request.user)), - 'course': {'head': hj.parent.parent.get_head_face(), - 'level': hj.parent.parent.course.get_level(), 'journal': hj.parent.parent.get_face(user_fabric(request.user))},} - - -@response_decor(template='exam.html') -def exam(request, exam): - # Страница экзамена - # TODO: проверить, чтобы это было ID экзамена - try: - exam = ExamJ.objects.get(material=Exam.objects.get(id=exam), student=request.user) - except Exam.DoesNotExist: - raise Http404 - except ExamJ.DoesNotExist: - j, c = TeacherJ.objects.get_or_create(student=request.user, course=Exam.objects.get(id=exam).course) - check_journal(j) - exam = ExamJ.objects.get(material=Exam.objects.get(id=exam), student=request.user) - - if request.user.is_authenticated() and request.user.is_admin: - return {'exam': exam.get_face(user_fabric(request.user)), - 'course': {'head': exam.parent.parent.get_head_face(), 'level': exam.parent.parent.course.get_level()} - } - - if not system_check_bill(exam.material.token, request.user): - return {'redirect': '/access/by_error/'} - else: - if exam.get_status_flag() == 'N' and not exam.parent.parent.waiting.filter(token=exam.material.token).exists(): - return {'redirect': '/access/auth_error/'} - else: - result = False - if exam.get_status_flag() != 'N': - result = True - elif exam.parent.parent.waiting.filter(token=exam.material.token).exists(): - result = True - exam.date = datetime.datetime.now() - exam.save() - - if result: - return {'exam': exam.get_face(user_fabric(request.user)), 'course': {'head': exam.parent.parent.get_head_face(), 'level': exam.parent.parent.course.get_level()}} - - -@response_decor(template='all_achievements.html', without_auth=True) -def achievements(request): - # Список ачивок и статус получения - skills = {} - for course in Course.objects.all().order_by('sort'): - skills[(course.id, course.title)] = {} - for skillj in SkillJ.objects.filter(lesson__course=course): - if not skills[(course.id, course.title)].get(skillj.skill.title): - skills[(course.id, course.title)][skillj.skill.title] = { - 'size': 0, - 'icon': skillj.skill.mini_icon, - 'color': skillj.skill.color - } - skills[(course.id, course.title)][skillj.skill.title]['size'] += skillj.size - - return {'achievements': Achievements.objects.all(), 'skills': skills} +# coding=utf-8 +import datetime +from django.http import Http404 + +from finance.models import Bill +from lms.decors import response_decor +from lms.tools import user_fabric +from courses.models import Course, Lesson, Homework, Exam, MaterialDirection, Achievements, Skills, SkillJ, CourseMap +from journals.models import LessonJ, TeacherJ, HomeworkJ, check_journal, ExamJ, AchievementJ +from finance.tools import system_check_bill + + +@response_decor(template='course.html', without_auth=True) +def course(request, slug): + # Страница курса + user = user_fabric(request.user) + if not slug: return {'redirect': '/'} + try: + course = Course.objects.get(slug=slug) + except Course.DoesNotExist: + try: + course = Course.objects.get(id=slug) + except ValueError: + raise Http404 + except Course.DoesNotExist: + raise Http404 + else: + return {'redirect': course.get_absolute_url()} + except Course.DoesNotExist: + raise Http404 + + if not course.public and not (request.user.is_authenticated() and request.user.is_admin): + raise Http404 + + if course.hidden: + if not request.user.is_authenticated(): + raise Http404 + else: + if not request.user.is_admin: + try: + Bill.objects.get(service__course=course, user=request.user, status='F') + except Bill.DoesNotExist: + raise Http404 + journal, created = TeacherJ.objects.get_or_create(course=course, student=user_fabric(request.user)) + if created: + check_journal(journal) + _map = CourseMap.objects.filter(course=course).order_by('sort').first() + _j = _map.get_obj() + if _map._type == 'H': + j, _created = HomeworkJ.objects.get_or_create(material=_j, student=request.user) + if _map._type == 'L': + j, _created = LessonJ.objects.get_or_create(material=_j, student=request.user) + j.open_material() + else: + journal, created = TeacherJ.objects.get_or_create(course=course, student=user_fabric(request.user)) + + if user and not journal.start_date: + journal.start_date = datetime.datetime.now() + journal.save() + + flow = None + start_flow = None + if request.user.is_authenticated() and not request.user.is_admin: + try: + bills = Bill.objects.filter( + service__course=course, user=request.user, status='F') + for bill in bills: + if bill.flow: + flow = bill.flow.get_status() + start_flow = bill.flow.start_flow + except Bill.DoesNotExist: + pass + + return { + 'course': journal.get_face(user_fabric(request.user)), + 'user': user_fabric(request.user), + 'flow': flow, + 'start_flow': start_flow, + } + + +@response_decor(template='lesson.html') +def lesson(request, lesson): + # Открытие окна урока + # TODO: Проверить все ссылки на ID Lesson + try: + lesson = Lesson.objects.get(id=lesson) + lj = LessonJ.objects.get(material=lesson, student=request.user) + except Lesson.DoesNotExist: + raise Http404 + except LessonJ.DoesNotExist: + j, c = TeacherJ.objects.get_or_create(student=request.user, course=lesson.course) + check_journal(j) + lj = LessonJ.objects.get(material=lesson, student=request.user) + + if request.user.is_authenticated() and request.user.is_admin or request.user in lesson.course.teachers.all(): + return {'lesson': lj.get_face(user_fabric(request.user)), + 'course': {'head': lj.parent.parent.get_head_face(), + 'level': lj.parent.parent.course.get_level(), + 'journal': lj.parent.parent.get_face(user_fabric(request.user))}, + 'bought': True, 'accept': True} + + if not lesson.free and not system_check_bill(lesson.token, request.user, theme_type=lesson.theme._type): + return {'redirect': '/access/by_error/'} + else: + if lj.get_status_flag() == 'N' and not lj.parent.parent.waiting.filter(token=lj.material.token).exists(): + return {'redirect': '/access/auth_error/'} + else: + result = False + if lj.get_status_flag() != 'N': + result = True + elif lj.parent.parent.waiting.filter(token=lj.material.token).exists(): + result = True + lj.date = datetime.datetime.now() + lj.save() + if result: + return {'lesson': lj.get_face(user_fabric(request.user)), 'course': {'head': lj.parent.parent.get_head_face(), 'level': lj.parent.parent.course.get_level(), 'journal': lj.parent.parent.get_face(user_fabric(request.user))}, 'bought': True, 'accept': True} + + +@response_decor(template='homework.html') +def homework(request, homework): + # Страница ДЗ + # TODO: Проверить везде ссылки с ID ДЗ + try: + hj = HomeworkJ.objects.get(material=Homework.objects.get(id=homework), student=request.user) + except Homework.DoesNotExist: + raise Http404 + except HomeworkJ.DoesNotExist: + j, c = TeacherJ.objects.get_or_create(student=request.user, course=Homework.objects.get(id=homework).course) + check_journal(j) + hj = HomeworkJ.objects.get(material=Homework.objects.get(id=homework), student=request.user) + + if request.user.is_authenticated() and request.user.is_admin: + return {'homework': hj.get_face(user_fabric(request.user)), + 'course': {'head': hj.parent.parent.get_head_face(), + 'level': hj.parent.parent.course.get_level(), + 'journal': hj.parent.parent.get_face(user_fabric(request.user))} + } + + if not system_check_bill(hj.material.token, request.user, theme_type=hj.material.theme._type): + return {'redirect': '/access/by_error/'} + else: + if hj.get_status_flag() == 'N' and not hj.parent.parent.waiting.filter(token=hj.material.token).exists(): + return {'redirect': '/access/auth_error/'} + else: + result = False + if hj.get_status_flag() != 'N': + result = True + elif hj.parent.parent.waiting.filter(token=hj.material.token).exists(): + hj.date = datetime.datetime.now() + hj.save() + result = True + + if result: + return {'homework': hj.get_face(user_fabric(request.user)), + 'course': {'head': hj.parent.parent.get_head_face(), + 'level': hj.parent.parent.course.get_level(), 'journal': hj.parent.parent.get_face(user_fabric(request.user))},} + + +@response_decor(template='exam.html') +def exam(request, exam): + # Страница экзамена + # TODO: проверить, чтобы это было ID экзамена + try: + exam = ExamJ.objects.get(material=Exam.objects.get(id=exam), student=request.user) + except Exam.DoesNotExist: + raise Http404 + except ExamJ.DoesNotExist: + j, c = TeacherJ.objects.get_or_create(student=request.user, course=Exam.objects.get(id=exam).course) + check_journal(j) + exam = ExamJ.objects.get(material=Exam.objects.get(id=exam), student=request.user) + + if request.user.is_authenticated() and request.user.is_admin: + return {'exam': exam.get_face(user_fabric(request.user)), + 'course': {'head': exam.parent.parent.get_head_face(), 'level': exam.parent.parent.course.get_level()} + } + + if not system_check_bill(exam.material.token, request.user): + return {'redirect': '/access/by_error/'} + else: + if exam.get_status_flag() == 'N' and not exam.parent.parent.waiting.filter(token=exam.material.token).exists(): + return {'redirect': '/access/auth_error/'} + else: + result = False + if exam.get_status_flag() != 'N': + result = True + elif exam.parent.parent.waiting.filter(token=exam.material.token).exists(): + result = True + exam.date = datetime.datetime.now() + exam.save() + + if result: + return {'exam': exam.get_face(user_fabric(request.user)), 'course': {'head': exam.parent.parent.get_head_face(), 'level': exam.parent.parent.course.get_level()}} + + +@response_decor(template='all_achievements.html', without_auth=True) +def achievements(request): + # Список ачивок и статус получения + skills = {} + for course in Course.objects.all().order_by('sort'): + skills[(course.id, course.title)] = {} + for skillj in SkillJ.objects.filter(lesson__course=course): + if not skills[(course.id, course.title)].get(skillj.skill.title): + skills[(course.id, course.title)][skillj.skill.title] = { + 'size': 0, + 'icon': skillj.skill.mini_icon, + 'color': skillj.skill.color + } + skills[(course.id, course.title)][skillj.skill.title]['size'] += skillj.size + + return {'achievements': Achievements.objects.all(), 'skills': skills} diff --git a/finance/.idea/encodings.xml b/finance/.idea/encodings.xml deleted file mode 100755 index ab2dc53..0000000 --- a/finance/.idea/encodings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/finance/.idea/finance.iml b/finance/.idea/finance.iml deleted file mode 100755 index 9c88284..0000000 --- a/finance/.idea/finance.iml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/finance/.idea/misc.xml b/finance/.idea/misc.xml deleted file mode 100755 index fe91cd6..0000000 --- a/finance/.idea/misc.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/finance/.idea/modules.xml b/finance/.idea/modules.xml deleted file mode 100755 index 7c9f5d2..0000000 --- a/finance/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/finance/.idea/workspace.xml b/finance/.idea/workspace.xml deleted file mode 100755 index 2cf9b92..0000000 --- a/finance/.idea/workspace.xml +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - DEFINITION_ORDER - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1467006819610 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/finance/__init__.py b/finance/__init__.py old mode 100755 new mode 100644 diff --git a/finance/admin.py b/finance/admin.py old mode 100755 new mode 100644 diff --git a/finance/api.py b/finance/api.py old mode 100755 new mode 100644 diff --git a/finance/migrations/0001_initial.py b/finance/migrations/0001_initial.py old mode 100755 new mode 100644 index 0ac3b5e..52eed99 --- a/finance/migrations/0001_initial.py +++ b/finance/migrations/0001_initial.py @@ -1,125 +1,125 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-18 16:46 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('courses', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='Bill', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('status', models.CharField(choices=[(b'W', '\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u044f'), (b'P', '\u041d\u0430 \u043e\u043f\u043b\u0430\u0442\u0435'), (b'F', '\u041e\u043f\u043b\u0430\u0447\u0435\u043d'), (b'C', '\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d')], default=b'W', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441')), - ('key', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u041a\u043b\u044e\u0447')), - ('out_id', models.CharField(blank=True, default=b'', max_length=100, verbose_name='ID \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0437\u0430\u043a\u0430\u0437\u0430')), - ('date', models.DateTimeField(default=django.utils.timezone.now, verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0447\u0435\u0442\u0430')), - ('status_changed', models.DateTimeField(default=django.utils.timezone.now, verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043c\u0435\u043d\u044b \u0441\u0442\u0430\u0442\u0443\u0441\u0430')), - ('comment', models.TextField(blank=True, help_text='\u0411\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e', verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u0430')), - ('finish_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f')), - ('salt', models.CharField(blank=True, default=b'', max_length=100, verbose_name='\u0421\u043e\u043b\u044c')), - ('manager', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bill_manager', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u043e\u0434\u0430\u0432\u0435\u0446')), - ], - options={ - 'verbose_name': '\u0421\u0447\u0435\u0442', - 'verbose_name_plural': '\u0421\u0447\u0435\u0442\u0430', - }, - ), - migrations.CreateModel( - name='Price', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('m_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')), - ('public', models.BooleanField(default=False, verbose_name='\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c')), - ('title', models.CharField(default=b'', help_text='\u0411\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c', max_length=255, verbose_name='\u0423\u0441\u043b\u0443\u0433\u0430')), - ('cost', models.IntegerField(verbose_name='\u0426\u0435\u043d\u0430')), - ('description', models.TextField(help_text='\u0411\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430\u043c', verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435')), - ('course', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), - ], - options={ - 'verbose_name': '\u0423\u0441\u043b\u0443\u0433\u0430', - 'verbose_name_plural': '\u0423\u0441\u043b\u0443\u0433\u0438', - }, - ), - migrations.CreateModel( - name='SelfBillHistory', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('status', models.CharField(choices=[(b'O', '\u041e\u0436\u0438\u0434\u0430\u0435\u0442 \u043e\u043f\u043b\u0430\u0442\u044b'), (b'F', '\u041e\u043f\u043b\u0430\u0447\u0435\u043d'), (b'C', '\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d')], default=b'O', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441')), - ('fio', models.CharField(max_length=255, verbose_name='\u0424\u0418\u041e')), - ('phone', models.CharField(blank=True, max_length=255, verbose_name='\u0422\u0435\u043b\u0435\u0444\u043e\u043d')), - ('email', models.CharField(blank=True, max_length=255, verbose_name='Email')), - ('s_date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f')), - ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043e\u043f\u043b\u0430\u0442\u044b')), - ('salt', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u0421\u043e\u043b\u044c')), - ('out_id', models.CharField(blank=True, default=b'', max_length=100, verbose_name='ID \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0437\u0430\u043a\u0430\u0437\u0430')), - ('key', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u041a\u043b\u044e\u0447')), - ('sent', models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e')), - ], - options={ - 'verbose_name': '\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043e\u043f\u043b\u0430\u0442\u044b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430', - 'verbose_name_plural': '\u0418\u0441\u0442\u043e\u0440\u0438\u0438 \u043e\u043f\u043b\u0430\u0442\u044b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0441\u0447\u0435\u0442\u043e\u0432', - }, - ), - migrations.CreateModel( - name='SelfBillRequest', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255, verbose_name='\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u0441\u043b\u0443\u0433\u0438')), - ('sum', models.IntegerField(verbose_name='\u0421\u0443\u043c\u043c\u0430')), - ('key', models.CharField(blank=True, max_length=255, null=True, unique=True, verbose_name='\u041a\u043b\u044e\u0447')), - ('url', models.URLField(blank=True, verbose_name='URL')), - ], - options={ - 'verbose_name': '\u0428\u0430\u0431\u043b\u043e\u043d \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430', - 'verbose_name_plural': '\u0428\u0430\u0431\u043b\u043e\u043d\u044b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430', - }, - ), - migrations.CreateModel( - name='ServiceRequest', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('status', models.CharField(choices=[(b'S', '\u041d\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d'), (b'W', '\u0412 \u0440\u0430\u0431\u043e\u0442\u0435'), (b'F', '\u041f\u0440\u043e\u0434\u0430\u043d'), (b'B', '\u041d\u0435 \u043f\u0440\u043e\u0434\u0430\u043b')], default=b'S', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441')), - ('cancel_description', models.TextField(blank=True, default=b'', verbose_name='\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u043e\u0442\u043a\u0430\u0437\u0430')), - ('charge', models.TextField(blank=True, default=b'', verbose_name='\u041f\u043e\u0440\u0443\u0447\u0435\u043d\u0438\u0435')), - ('date', models.DateTimeField(default=django.utils.timezone.now, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u043a\u0430\u0437\u0430')), - ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0431\u0430\u0431\u043e\u0442\u043a\u0438')), - ('send', models.BooleanField(default=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e')), - ('course', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), - ('manager', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='manager_user', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u043e\u0434\u0430\u0432\u0435\u0446')), - ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student_user', to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), - ], - options={ - 'verbose_name': '\u0417\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u043e\u043a\u0443\u043f\u043a\u0443', - 'verbose_name_plural': '\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043f\u0440\u043e\u043a\u0443\u043f\u043a\u0438', - }, - ), - migrations.AddField( - model_name='selfbillhistory', - name='request', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='finance.SelfBillRequest', verbose_name='\u0424\u043e\u0440\u043c\u0430 \u0441\u0447\u0435\u0442\u0430'), - ), - migrations.AddField( - model_name='bill', - name='service', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='finance.Price', verbose_name='\u041e\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u0443\u0441\u043b\u0443\u0433\u0430'), - ), - migrations.AddField( - model_name='bill', - name='user', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bill_user', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u043b\u0430\u0442\u0435\u043b\u044c\u0449\u0438\u043a'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-18 16:46 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('courses', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Bill', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('status', models.CharField(choices=[(b'W', '\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u044f'), (b'P', '\u041d\u0430 \u043e\u043f\u043b\u0430\u0442\u0435'), (b'F', '\u041e\u043f\u043b\u0430\u0447\u0435\u043d'), (b'C', '\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d')], default=b'W', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441')), + ('key', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u041a\u043b\u044e\u0447')), + ('out_id', models.CharField(blank=True, default=b'', max_length=100, verbose_name='ID \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0437\u0430\u043a\u0430\u0437\u0430')), + ('date', models.DateTimeField(default=django.utils.timezone.now, verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0447\u0435\u0442\u0430')), + ('status_changed', models.DateTimeField(default=django.utils.timezone.now, verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043c\u0435\u043d\u044b \u0441\u0442\u0430\u0442\u0443\u0441\u0430')), + ('comment', models.TextField(blank=True, help_text='\u0411\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e', verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u0430')), + ('finish_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f')), + ('salt', models.CharField(blank=True, default=b'', max_length=100, verbose_name='\u0421\u043e\u043b\u044c')), + ('manager', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bill_manager', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u043e\u0434\u0430\u0432\u0435\u0446')), + ], + options={ + 'verbose_name': '\u0421\u0447\u0435\u0442', + 'verbose_name_plural': '\u0421\u0447\u0435\u0442\u0430', + }, + ), + migrations.CreateModel( + name='Price', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('m_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')), + ('public', models.BooleanField(default=False, verbose_name='\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c')), + ('title', models.CharField(default=b'', help_text='\u0411\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c', max_length=255, verbose_name='\u0423\u0441\u043b\u0443\u0433\u0430')), + ('cost', models.IntegerField(verbose_name='\u0426\u0435\u043d\u0430')), + ('description', models.TextField(help_text='\u0411\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430\u043c', verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435')), + ('course', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), + ], + options={ + 'verbose_name': '\u0423\u0441\u043b\u0443\u0433\u0430', + 'verbose_name_plural': '\u0423\u0441\u043b\u0443\u0433\u0438', + }, + ), + migrations.CreateModel( + name='SelfBillHistory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('status', models.CharField(choices=[(b'O', '\u041e\u0436\u0438\u0434\u0430\u0435\u0442 \u043e\u043f\u043b\u0430\u0442\u044b'), (b'F', '\u041e\u043f\u043b\u0430\u0447\u0435\u043d'), (b'C', '\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d')], default=b'O', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441')), + ('fio', models.CharField(max_length=255, verbose_name='\u0424\u0418\u041e')), + ('phone', models.CharField(blank=True, max_length=255, verbose_name='\u0422\u0435\u043b\u0435\u0444\u043e\u043d')), + ('email', models.CharField(blank=True, max_length=255, verbose_name='Email')), + ('s_date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f')), + ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043e\u043f\u043b\u0430\u0442\u044b')), + ('salt', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u0421\u043e\u043b\u044c')), + ('out_id', models.CharField(blank=True, default=b'', max_length=100, verbose_name='ID \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0437\u0430\u043a\u0430\u0437\u0430')), + ('key', models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u041a\u043b\u044e\u0447')), + ('sent', models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e')), + ], + options={ + 'verbose_name': '\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043e\u043f\u043b\u0430\u0442\u044b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430', + 'verbose_name_plural': '\u0418\u0441\u0442\u043e\u0440\u0438\u0438 \u043e\u043f\u043b\u0430\u0442\u044b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0441\u0447\u0435\u0442\u043e\u0432', + }, + ), + migrations.CreateModel( + name='SelfBillRequest', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u0441\u043b\u0443\u0433\u0438')), + ('sum', models.IntegerField(verbose_name='\u0421\u0443\u043c\u043c\u0430')), + ('key', models.CharField(blank=True, max_length=255, null=True, unique=True, verbose_name='\u041a\u043b\u044e\u0447')), + ('url', models.URLField(blank=True, verbose_name='URL')), + ], + options={ + 'verbose_name': '\u0428\u0430\u0431\u043b\u043e\u043d \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430', + 'verbose_name_plural': '\u0428\u0430\u0431\u043b\u043e\u043d\u044b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430', + }, + ), + migrations.CreateModel( + name='ServiceRequest', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('status', models.CharField(choices=[(b'S', '\u041d\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d'), (b'W', '\u0412 \u0440\u0430\u0431\u043e\u0442\u0435'), (b'F', '\u041f\u0440\u043e\u0434\u0430\u043d'), (b'B', '\u041d\u0435 \u043f\u0440\u043e\u0434\u0430\u043b')], default=b'S', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441')), + ('cancel_description', models.TextField(blank=True, default=b'', verbose_name='\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u043e\u0442\u043a\u0430\u0437\u0430')), + ('charge', models.TextField(blank=True, default=b'', verbose_name='\u041f\u043e\u0440\u0443\u0447\u0435\u043d\u0438\u0435')), + ('date', models.DateTimeField(default=django.utils.timezone.now, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u043a\u0430\u0437\u0430')), + ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0431\u0430\u0431\u043e\u0442\u043a\u0438')), + ('send', models.BooleanField(default=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e')), + ('course', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), + ('manager', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='manager_user', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u043e\u0434\u0430\u0432\u0435\u0446')), + ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student_user', to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), + ], + options={ + 'verbose_name': '\u0417\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u043e\u043a\u0443\u043f\u043a\u0443', + 'verbose_name_plural': '\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043f\u0440\u043e\u043a\u0443\u043f\u043a\u0438', + }, + ), + migrations.AddField( + model_name='selfbillhistory', + name='request', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='finance.SelfBillRequest', verbose_name='\u0424\u043e\u0440\u043c\u0430 \u0441\u0447\u0435\u0442\u0430'), + ), + migrations.AddField( + model_name='bill', + name='service', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='finance.Price', verbose_name='\u041e\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u0443\u0441\u043b\u0443\u0433\u0430'), + ), + migrations.AddField( + model_name='bill', + name='user', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bill_user', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u043b\u0430\u0442\u0435\u043b\u044c\u0449\u0438\u043a'), + ), + ] diff --git a/finance/migrations/0002_bill_description.py b/finance/migrations/0002_bill_description.py old mode 100755 new mode 100644 index e5870f7..e392bfd --- a/finance/migrations/0002_bill_description.py +++ b/finance/migrations/0002_bill_description.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-07 17:41 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='bill', - name='description', - field=models.TextField(blank=True, default=b'', help_text='\u041f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0438', verbose_name='\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0437\u0430\u043c\u0435\u0442\u043a\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-04-07 17:41 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='bill', + name='description', + field=models.TextField(blank=True, default=b'', help_text='\u041f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0438', verbose_name='\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0437\u0430\u043c\u0435\u0442\u043a\u0430'), + ), + ] diff --git a/finance/migrations/0003_selfbillrequest_company.py b/finance/migrations/0003_selfbillrequest_company.py old mode 100755 new mode 100644 index 6247eb0..81743a5 --- a/finance/migrations/0003_selfbillrequest_company.py +++ b/finance/migrations/0003_selfbillrequest_company.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-14 16:52 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0002_bill_description'), - ] - - operations = [ - migrations.AddField( - model_name='selfbillrequest', - name='company', - field=models.CharField(choices=[(b'lms', b'http://lms.ru/'), (b'skillbox', b'http://skill-box.ru/')], default=b'lms', max_length=255, verbose_name='\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-14 16:52 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0002_bill_description'), + ] + + operations = [ + migrations.AddField( + model_name='selfbillrequest', + name='company', + field=models.CharField(choices=[(b'lms', b'http://lms.ru/'), (b'skillbox', b'http://skill-box.ru/')], default=b'lms', max_length=255, verbose_name='\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f'), + ), + ] diff --git a/finance/migrations/0004_auto_20160414_1700.py b/finance/migrations/0004_auto_20160414_1700.py old mode 100755 new mode 100644 index ff3d1b7..dcf9c08 --- a/finance/migrations/0004_auto_20160414_1700.py +++ b/finance/migrations/0004_auto_20160414_1700.py @@ -1,30 +1,30 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-14 17:00 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0003_selfbillrequest_company'), - ] - - operations = [ - migrations.AddField( - model_name='selfbillhistory', - name='day_sent', - field=models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0434\u043d\u0435\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u044f'), - ), - migrations.AddField( - model_name='selfbillhistory', - name='month_sent', - field=models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043c\u0435\u0441\u044f\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u044f'), - ), - migrations.AddField( - model_name='selfbillhistory', - name='week_sent', - field=models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u044f'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-14 17:00 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0003_selfbillrequest_company'), + ] + + operations = [ + migrations.AddField( + model_name='selfbillhistory', + name='day_sent', + field=models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0434\u043d\u0435\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u044f'), + ), + migrations.AddField( + model_name='selfbillhistory', + name='month_sent', + field=models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043c\u0435\u0441\u044f\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u044f'), + ), + migrations.AddField( + model_name='selfbillhistory', + name='week_sent', + field=models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u044f'), + ), + ] diff --git a/finance/migrations/0005_selfbilldesign.py b/finance/migrations/0005_selfbilldesign.py old mode 100755 new mode 100644 index 1ff0eea..83c77c1 --- a/finance/migrations/0005_selfbilldesign.py +++ b/finance/migrations/0005_selfbilldesign.py @@ -1,28 +1,28 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-14 19:27 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0004_auto_20160414_1700'), - ] - - operations = [ - migrations.CreateModel( - name='SelfBillDesign', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255, verbose_name='\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438')), - ('logo', models.ImageField(upload_to=b'self', verbose_name='\u041b\u043e\u0433\u043e\u0442\u0438\u043f')), - ('background', models.CharField(max_length=255, verbose_name='\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430')), - ], - options={ - 'verbose_name': '\u0414\u0438\u0437\u0430\u0439\u043d \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430', - 'verbose_name_plural': '\u0414\u0438\u0437\u0430\u0439\u043d \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430', - }, - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-14 19:27 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0004_auto_20160414_1700'), + ] + + operations = [ + migrations.CreateModel( + name='SelfBillDesign', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438')), + ('logo', models.ImageField(upload_to=b'self', verbose_name='\u041b\u043e\u0433\u043e\u0442\u0438\u043f')), + ('background', models.CharField(max_length=255, verbose_name='\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430')), + ], + options={ + 'verbose_name': '\u0414\u0438\u0437\u0430\u0439\u043d \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430', + 'verbose_name_plural': '\u0414\u0438\u0437\u0430\u0439\u043d \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430', + }, + ), + ] diff --git a/finance/migrations/0006_auto_20160414_1930.py b/finance/migrations/0006_auto_20160414_1930.py old mode 100755 new mode 100644 index e14c2d1..3c37e26 --- a/finance/migrations/0006_auto_20160414_1930.py +++ b/finance/migrations/0006_auto_20160414_1930.py @@ -1,25 +1,25 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-14 19:30 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0005_selfbilldesign'), - ] - - operations = [ - migrations.RemoveField( - model_name='selfbillrequest', - name='company', - ), - migrations.AddField( - model_name='selfbillrequest', - name='design', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='finance.SelfBillDesign', verbose_name='\u041e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0435'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-14 19:30 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0005_selfbilldesign'), + ] + + operations = [ + migrations.RemoveField( + model_name='selfbillrequest', + name='company', + ), + migrations.AddField( + model_name='selfbillrequest', + name='design', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='finance.SelfBillDesign', verbose_name='\u041e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0435'), + ), + ] diff --git a/finance/migrations/0007_auto_20160414_1941.py b/finance/migrations/0007_auto_20160414_1941.py old mode 100755 new mode 100644 index 454bdf7..1319d39 --- a/finance/migrations/0007_auto_20160414_1941.py +++ b/finance/migrations/0007_auto_20160414_1941.py @@ -1,25 +1,25 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-14 19:41 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0006_auto_20160414_1930'), - ] - - operations = [ - migrations.AlterModelOptions( - name='selfbilldesign', - options={'verbose_name': '\u0411\u0435\u043d\u0435\u0444\u0438\u0446\u0438\u0430\u0440 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430', 'verbose_name_plural': '\u0411\u0435\u043d\u0435\u0444\u0438\u0446\u0438\u0430\u0440\u044b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430'}, - ), - migrations.AlterField( - model_name='selfbillrequest', - name='design', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='finance.SelfBillDesign', verbose_name='\u0411\u0435\u043d\u0435\u0444\u0438\u0446\u0438\u0430\u0440'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-14 19:41 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0006_auto_20160414_1930'), + ] + + operations = [ + migrations.AlterModelOptions( + name='selfbilldesign', + options={'verbose_name': '\u0411\u0435\u043d\u0435\u0444\u0438\u0446\u0438\u0430\u0440 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430', 'verbose_name_plural': '\u0411\u0435\u043d\u0435\u0444\u0438\u0446\u0438\u0430\u0440\u044b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0430'}, + ), + migrations.AlterField( + model_name='selfbillrequest', + name='design', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='finance.SelfBillDesign', verbose_name='\u0411\u0435\u043d\u0435\u0444\u0438\u0446\u0438\u0430\u0440'), + ), + ] diff --git a/finance/migrations/0008_selfbilldesign_users.py b/finance/migrations/0008_selfbilldesign_users.py old mode 100755 new mode 100644 index 0057eab..776eb5c --- a/finance/migrations/0008_selfbilldesign_users.py +++ b/finance/migrations/0008_selfbilldesign_users.py @@ -1,22 +1,22 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-14 19:44 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('finance', '0007_auto_20160414_1941'), - ] - - operations = [ - migrations.AddField( - model_name='selfbilldesign', - name='users', - field=models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e \u043f\u043b\u0430\u0442\u0435\u0436\u0430\u0445'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-14 19:44 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('finance', '0007_auto_20160414_1941'), + ] + + operations = [ + migrations.AddField( + model_name='selfbilldesign', + name='users', + field=models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e \u043f\u043b\u0430\u0442\u0435\u0436\u0430\u0445'), + ), + ] diff --git a/finance/migrations/0009_selfbillhistory_new_sent.py b/finance/migrations/0009_selfbillhistory_new_sent.py old mode 100755 new mode 100644 index 703b884..b089756 --- a/finance/migrations/0009_selfbillhistory_new_sent.py +++ b/finance/migrations/0009_selfbillhistory_new_sent.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-14 20:30 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0008_selfbilldesign_users'), - ] - - operations = [ - migrations.AddField( - model_name='selfbillhistory', - name='new_sent', - field=models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-14 20:30 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0008_selfbilldesign_users'), + ] + + operations = [ + migrations.AddField( + model_name='selfbillhistory', + name='new_sent', + field=models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/finance/migrations/0010_selfbilldesign_pay_id.py b/finance/migrations/0010_selfbilldesign_pay_id.py old mode 100755 new mode 100644 index 53c0837..98c1bed --- a/finance/migrations/0010_selfbilldesign_pay_id.py +++ b/finance/migrations/0010_selfbilldesign_pay_id.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-28 14:15 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0009_selfbillhistory_new_sent'), - ] - - operations = [ - migrations.AddField( - model_name='selfbilldesign', - name='pay_id', - field=models.IntegerField(default=0, max_length=255, verbose_name='\u041a\u043b\u044e\u0447\u044c \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-28 14:15 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0009_selfbillhistory_new_sent'), + ] + + operations = [ + migrations.AddField( + model_name='selfbilldesign', + name='pay_id', + field=models.IntegerField(default=0, max_length=255, verbose_name='\u041a\u043b\u044e\u0447\u044c \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438'), + ), + ] diff --git a/finance/migrations/0011_auto_20160505_1748.py b/finance/migrations/0011_auto_20160505_1748.py old mode 100755 new mode 100644 index 653909e..bdc2e00 --- a/finance/migrations/0011_auto_20160505_1748.py +++ b/finance/migrations/0011_auto_20160505_1748.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-05 17:48 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0024_auto_20160505_1748'), - ('finance', '0010_selfbilldesign_pay_id'), - ] - - operations = [ - migrations.AddField( - model_name='price', - name='included', - field=models.ManyToManyField(null=True, to='courses.CourseMap', verbose_name='\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u044b'), - ), - migrations.AlterField( - model_name='selfbilldesign', - name='pay_id', - field=models.IntegerField(blank=True, default=0, help_text='ID \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 - \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f "1501".\u0415\u0441\u043b\u0438 \u0442\u0430\u043a \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043e, \u0442\u043e \u044d\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443', max_length=255, verbose_name='\u041a\u043b\u044e\u0447 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-05 17:48 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0024_auto_20160505_1748'), + ('finance', '0010_selfbilldesign_pay_id'), + ] + + operations = [ + migrations.AddField( + model_name='price', + name='included', + field=models.ManyToManyField(null=True, to='courses.CourseMap', verbose_name='\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u044b'), + ), + migrations.AlterField( + model_name='selfbilldesign', + name='pay_id', + field=models.IntegerField(blank=True, default=0, help_text='ID \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 - \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f "1501".\u0415\u0441\u043b\u0438 \u0442\u0430\u043a \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043e, \u0442\u043e \u044d\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443', max_length=255, verbose_name='\u041a\u043b\u044e\u0447 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438'), + ), + ] diff --git a/finance/migrations/0012_auto_20160505_2009.py b/finance/migrations/0012_auto_20160505_2009.py old mode 100755 new mode 100644 index a0ced2c..529a241 --- a/finance/migrations/0012_auto_20160505_2009.py +++ b/finance/migrations/0012_auto_20160505_2009.py @@ -1,25 +1,25 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-05 20:09 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0011_auto_20160505_1748'), - ] - - operations = [ - migrations.AddField( - model_name='price', - name='by_time', - field=models.IntegerField(blank=True, default=0, help_text='\u041f\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0434\u043e\u0441\u0442\u0443\u043f \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u0440\u044b\u0442', verbose_name='\u0414\u043d\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0430'), - ), - migrations.AlterField( - model_name='price', - name='included', - field=models.ManyToManyField(blank=True, help_text='\u0415\u0441\u043b\u0438 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u043e\u043a \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u0430', null=True, to='courses.CourseMap', verbose_name='\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u044b'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-05 20:09 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0011_auto_20160505_1748'), + ] + + operations = [ + migrations.AddField( + model_name='price', + name='by_time', + field=models.IntegerField(blank=True, default=0, help_text='\u041f\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0434\u043e\u0441\u0442\u0443\u043f \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u0440\u044b\u0442', verbose_name='\u0414\u043d\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0430'), + ), + migrations.AlterField( + model_name='price', + name='included', + field=models.ManyToManyField(blank=True, help_text='\u0415\u0441\u043b\u0438 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u043e\u043a \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u0430', null=True, to='courses.CourseMap', verbose_name='\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u044b'), + ), + ] diff --git a/finance/migrations/0013_auto_20160505_2035.py b/finance/migrations/0013_auto_20160505_2035.py old mode 100755 new mode 100644 index 2bd2aac..a526aa8 --- a/finance/migrations/0013_auto_20160505_2035.py +++ b/finance/migrations/0013_auto_20160505_2035.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-05 20:35 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0012_auto_20160505_2009'), - ] - - operations = [ - migrations.AlterField( - model_name='price', - name='by_time', - field=models.IntegerField(blank=True, default=0, help_text='\u041f\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0434\u043e\u0441\u0442\u0443\u043f \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u0440\u044b\u0442', null=True, verbose_name='\u0414\u043d\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-05 20:35 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0012_auto_20160505_2009'), + ] + + operations = [ + migrations.AlterField( + model_name='price', + name='by_time', + field=models.IntegerField(blank=True, default=0, help_text='\u041f\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0434\u043e\u0441\u0442\u0443\u043f \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u0440\u044b\u0442', null=True, verbose_name='\u0414\u043d\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0430'), + ), + ] diff --git a/finance/migrations/0014_auto_20160506_1303.py b/finance/migrations/0014_auto_20160506_1303.py old mode 100755 new mode 100644 index a9a30e9..46203a8 --- a/finance/migrations/0014_auto_20160506_1303.py +++ b/finance/migrations/0014_auto_20160506_1303.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-06 13:03 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0013_auto_20160505_2035'), - ] - - operations = [ - migrations.AlterField( - model_name='price', - name='by_time', - field=models.IntegerField(blank=True, default=0, help_text='\u041f\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0434\u043e\u0441\u0442\u0443\u043f \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u0440\u044b\u0442 \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439.', null=True, verbose_name='\u0414\u043d\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-06 13:03 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0013_auto_20160505_2035'), + ] + + operations = [ + migrations.AlterField( + model_name='price', + name='by_time', + field=models.IntegerField(blank=True, default=0, help_text='\u041f\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0434\u043e\u0441\u0442\u0443\u043f \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u0440\u044b\u0442 \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439.', null=True, verbose_name='\u0414\u043d\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0430'), + ), + ] diff --git a/finance/migrations/0015_price_key.py b/finance/migrations/0015_price_key.py old mode 100755 new mode 100644 index fd49fdb..a5150bc --- a/finance/migrations/0015_price_key.py +++ b/finance/migrations/0015_price_key.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-09 17:10 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0014_auto_20160506_1303'), - ] - - operations = [ - migrations.AddField( - model_name='price', - name='key', - field=models.CharField(blank=True, editable=False, max_length=255, null=True, verbose_name='\u041a\u043b\u044e\u0447\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-09 17:10 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0014_auto_20160506_1303'), + ] + + operations = [ + migrations.AddField( + model_name='price', + name='key', + field=models.CharField(blank=True, editable=False, max_length=255, null=True, verbose_name='\u041a\u043b\u044e\u0447\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430'), + ), + ] diff --git a/finance/migrations/0016_auto_20160524_1255.py b/finance/migrations/0016_auto_20160524_1255.py old mode 100755 new mode 100644 index f216a07..b4d6064 --- a/finance/migrations/0016_auto_20160524_1255.py +++ b/finance/migrations/0016_auto_20160524_1255.py @@ -1,25 +1,25 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-24 12:55 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0015_price_key'), - ] - - operations = [ - migrations.AddField( - model_name='price', - name='flex', - field=models.BooleanField(default=False, verbose_name='\u041e\u043f\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f'), - ), - migrations.AlterField( - model_name='price', - name='key', - field=models.CharField(blank=True, editable=False, max_length=255, null=True, verbose_name='\u041a\u043b\u044e\u0447 \u0434\u043e\u0441\u0442\u0443\u043f\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-24 12:55 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0015_price_key'), + ] + + operations = [ + migrations.AddField( + model_name='price', + name='flex', + field=models.BooleanField(default=False, verbose_name='\u041e\u043f\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f'), + ), + migrations.AlterField( + model_name='price', + name='key', + field=models.CharField(blank=True, editable=False, max_length=255, null=True, verbose_name='\u041a\u043b\u044e\u0447 \u0434\u043e\u0441\u0442\u0443\u043f\u0430'), + ), + ] diff --git a/finance/migrations/0017_remove_price_flex.py b/finance/migrations/0017_remove_price_flex.py old mode 100755 new mode 100644 index a4b15e8..cb1fd7b --- a/finance/migrations/0017_remove_price_flex.py +++ b/finance/migrations/0017_remove_price_flex.py @@ -1,19 +1,19 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-24 12:58 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0016_auto_20160524_1255'), - ] - - operations = [ - migrations.RemoveField( - model_name='price', - name='flex', - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-24 12:58 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0016_auto_20160524_1255'), + ] + + operations = [ + migrations.RemoveField( + model_name='price', + name='flex', + ), + ] diff --git a/finance/migrations/0018_auto_20160531_1256.py b/finance/migrations/0018_auto_20160531_1256.py old mode 100755 new mode 100644 index 1be62ac..0f3d540 --- a/finance/migrations/0018_auto_20160531_1256.py +++ b/finance/migrations/0018_auto_20160531_1256.py @@ -1,117 +1,117 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-31 12:56 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('finance', '0017_remove_price_flex'), - ] - - operations = [ - migrations.CreateModel( - name='Installment', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('price', models.IntegerField(verbose_name='\u041e\u0431\u0449\u0430\u044f \u0446\u0435\u043d\u0430')), - ('first_price', models.IntegerField(default=0, verbose_name='\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436')), - ('period', models.IntegerField(default=5, verbose_name='\u041c\u0435\u0441\u044f\u0446\u0435\u0432 \u043d\u0430 \u043e\u043f\u043b\u0430\u0442\u0443')), - ('date', models.DateTimeField(default=datetime.datetime.now, editable=False, verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f')), - ('f_date', models.DateField(blank=True, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f')), - ('rest', models.IntegerField(default=0, verbose_name='\u041e\u0441\u0442\u0430\u0442\u043e\u043a \u043f\u043e \u0437\u0430\u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u0438')), - ('wait', models.IntegerField(default=0, help_text='\u0427\u0435\u0440\u0435\u0437 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0441\u0440\u043e\u0447\u043a\u0438', verbose_name='\u0414\u043d\u0435\u0439 \u0432 \u0437\u0430\u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u0438')), - ('expired', models.BooleanField(default=False, verbose_name='\u041f\u0440\u043e\u0441\u0440\u043e\u0447\u0435\u043d\u043e')), - ], - options={ - 'verbose_name': '\u0420\u0430\u0441\u0441\u0440\u043e\u0447\u043a\u0430', - 'verbose_name_plural': '\u0420\u0430\u0441\u0441\u0440\u043e\u0447\u043a\u0438', - }, - ), - migrations.RemoveField( - model_name='selfbilldesign', - name='users', - ), - migrations.RemoveField( - model_name='selfbillhistory', - name='request', - ), - migrations.RemoveField( - model_name='selfbillrequest', - name='design', - ), - migrations.AlterModelOptions( - name='price', - options={'ordering': ['-id'], 'verbose_name': '\u0423\u0441\u043b\u0443\u0433\u0430', 'verbose_name_plural': '\u0423\u0441\u043b\u0443\u0433\u0438'}, - ), - migrations.AddField( - model_name='bill', - name='_method', - field=models.CharField(choices=[(b'H', '\u0412 \u0420\u0443\u0447\u043d\u0443\u044e'), (b'S', 'SimplePay'), (b'A1', '\u0410\u043b\u044c\u0444\u0430\u0411\u0430\u043d\u043a'), (b'A2', '\u0410\u043b\u044c\u0431\u0430\u0411\u0430\u043d\u043a c \u043f\u0440\u0435\u0434\u043e\u043f\u043b\u0430\u0442\u043e\u0439')], default=b'H', max_length=2, verbose_name='\u0421\u043f\u043e\u0441\u043e\u0431 \u043e\u043f\u043b\u0430\u0442\u044b'), - ), - migrations.AddField( - model_name='bill', - name='_type', - field=models.CharField(choices=[(b'I', '\u0420\u0430\u0441\u0441\u0440\u043e\u0447\u043a\u0430'), (b'F', '\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436'), (b'S', '\u0423\u0441\u043b\u0443\u0433\u0430')], default=b'S', max_length=1, verbose_name='\u0422\u0438\u043f \u043f\u043b\u0430\u0442\u0435\u0436\u0430'), - ), - migrations.AddField( - model_name='bill', - name='gift', - field=models.BooleanField(default=False, verbose_name='\u041f\u043e\u0434\u0430\u0440\u043e\u043a'), - ), - migrations.AddField( - model_name='bill', - name='price', - field=models.CharField(default=0, max_length=255, verbose_name='\u0421\u0443\u043c\u043c\u0430'), - ), - migrations.AddField( - model_name='price', - name='freepay', - field=models.BooleanField(default=False, editable=False, verbose_name='\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u0441\u0447\u0435\u0442'), - ), - migrations.AlterField( - model_name='price', - name='course', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441'), - ), - migrations.AlterField( - model_name='price', - name='title', - field=models.CharField(help_text='\u0411\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c', max_length=255, verbose_name='\u0423\u0441\u043b\u0443\u0433\u0430'), - ), - migrations.DeleteModel( - name='SelfBillDesign', - ), - migrations.DeleteModel( - name='SelfBillHistory', - ), - migrations.DeleteModel( - name='SelfBillRequest', - ), - migrations.AddField( - model_name='installment', - name='initiative', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='finance.Price', verbose_name='\u0418\u043d\u0438\u0430\u0446\u0438\u0430\u0442\u0438\u0432\u0430'), - ), - migrations.AddField( - model_name='installment', - name='payments', - field=models.ManyToManyField(blank=True, null=True, related_name='bill_point', to='finance.Bill', verbose_name='\u041f\u043b\u0430\u0442\u0435\u0436\u0438'), - ), - migrations.AddField( - model_name='installment', - 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'), - ), - migrations.AddField( - model_name='bill', - name='installment', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='installment_point', to='finance.Installment', verbose_name='\u0420\u0430\u0441\u0441\u0440\u043e\u0447\u043a\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-31 12:56 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('finance', '0017_remove_price_flex'), + ] + + operations = [ + migrations.CreateModel( + name='Installment', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('price', models.IntegerField(verbose_name='\u041e\u0431\u0449\u0430\u044f \u0446\u0435\u043d\u0430')), + ('first_price', models.IntegerField(default=0, verbose_name='\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436')), + ('period', models.IntegerField(default=5, verbose_name='\u041c\u0435\u0441\u044f\u0446\u0435\u0432 \u043d\u0430 \u043e\u043f\u043b\u0430\u0442\u0443')), + ('date', models.DateTimeField(default=datetime.datetime.now, editable=False, verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f')), + ('f_date', models.DateField(blank=True, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f')), + ('rest', models.IntegerField(default=0, verbose_name='\u041e\u0441\u0442\u0430\u0442\u043e\u043a \u043f\u043e \u0437\u0430\u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u0438')), + ('wait', models.IntegerField(default=0, help_text='\u0427\u0435\u0440\u0435\u0437 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0441\u0440\u043e\u0447\u043a\u0438', verbose_name='\u0414\u043d\u0435\u0439 \u0432 \u0437\u0430\u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u0438')), + ('expired', models.BooleanField(default=False, verbose_name='\u041f\u0440\u043e\u0441\u0440\u043e\u0447\u0435\u043d\u043e')), + ], + options={ + 'verbose_name': '\u0420\u0430\u0441\u0441\u0440\u043e\u0447\u043a\u0430', + 'verbose_name_plural': '\u0420\u0430\u0441\u0441\u0440\u043e\u0447\u043a\u0438', + }, + ), + migrations.RemoveField( + model_name='selfbilldesign', + name='users', + ), + migrations.RemoveField( + model_name='selfbillhistory', + name='request', + ), + migrations.RemoveField( + model_name='selfbillrequest', + name='design', + ), + migrations.AlterModelOptions( + name='price', + options={'ordering': ['-id'], 'verbose_name': '\u0423\u0441\u043b\u0443\u0433\u0430', 'verbose_name_plural': '\u0423\u0441\u043b\u0443\u0433\u0438'}, + ), + migrations.AddField( + model_name='bill', + name='_method', + field=models.CharField(choices=[(b'H', '\u0412 \u0420\u0443\u0447\u043d\u0443\u044e'), (b'S', 'SimplePay'), (b'A1', '\u0410\u043b\u044c\u0444\u0430\u0411\u0430\u043d\u043a'), (b'A2', '\u0410\u043b\u044c\u0431\u0430\u0411\u0430\u043d\u043a c \u043f\u0440\u0435\u0434\u043e\u043f\u043b\u0430\u0442\u043e\u0439')], default=b'H', max_length=2, verbose_name='\u0421\u043f\u043e\u0441\u043e\u0431 \u043e\u043f\u043b\u0430\u0442\u044b'), + ), + migrations.AddField( + model_name='bill', + name='_type', + field=models.CharField(choices=[(b'I', '\u0420\u0430\u0441\u0441\u0440\u043e\u0447\u043a\u0430'), (b'F', '\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436'), (b'S', '\u0423\u0441\u043b\u0443\u0433\u0430')], default=b'S', max_length=1, verbose_name='\u0422\u0438\u043f \u043f\u043b\u0430\u0442\u0435\u0436\u0430'), + ), + migrations.AddField( + model_name='bill', + name='gift', + field=models.BooleanField(default=False, verbose_name='\u041f\u043e\u0434\u0430\u0440\u043e\u043a'), + ), + migrations.AddField( + model_name='bill', + name='price', + field=models.CharField(default=0, max_length=255, verbose_name='\u0421\u0443\u043c\u043c\u0430'), + ), + migrations.AddField( + model_name='price', + name='freepay', + field=models.BooleanField(default=False, editable=False, verbose_name='\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u0441\u0447\u0435\u0442'), + ), + migrations.AlterField( + model_name='price', + name='course', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441'), + ), + migrations.AlterField( + model_name='price', + name='title', + field=models.CharField(help_text='\u0411\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c', max_length=255, verbose_name='\u0423\u0441\u043b\u0443\u0433\u0430'), + ), + migrations.DeleteModel( + name='SelfBillDesign', + ), + migrations.DeleteModel( + name='SelfBillHistory', + ), + migrations.DeleteModel( + name='SelfBillRequest', + ), + migrations.AddField( + model_name='installment', + name='initiative', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='finance.Price', verbose_name='\u0418\u043d\u0438\u0430\u0446\u0438\u0430\u0442\u0438\u0432\u0430'), + ), + migrations.AddField( + model_name='installment', + name='payments', + field=models.ManyToManyField(blank=True, null=True, related_name='bill_point', to='finance.Bill', verbose_name='\u041f\u043b\u0430\u0442\u0435\u0436\u0438'), + ), + migrations.AddField( + model_name='installment', + 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'), + ), + migrations.AddField( + model_name='bill', + name='installment', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='installment_point', to='finance.Installment', verbose_name='\u0420\u0430\u0441\u0441\u0440\u043e\u0447\u043a\u0430'), + ), + ] diff --git a/finance/migrations/0019_price_url.py b/finance/migrations/0019_price_url.py old mode 100755 new mode 100644 index 0ba5e2f..6d1790b --- a/finance/migrations/0019_price_url.py +++ b/finance/migrations/0019_price_url.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-31 13:00 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0018_auto_20160531_1256'), - ] - - operations = [ - migrations.AddField( - model_name='price', - name='url', - field=models.URLField(blank=True, null=True, verbose_name='\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u043f\u043b\u0430\u0442\u0443'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-31 13:00 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0018_auto_20160531_1256'), + ] + + operations = [ + migrations.AddField( + model_name='price', + name='url', + field=models.URLField(blank=True, null=True, verbose_name='\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u043f\u043b\u0430\u0442\u0443'), + ), + ] diff --git a/finance/migrations/0020_auto_20160531_1303.py b/finance/migrations/0020_auto_20160531_1303.py old mode 100755 new mode 100644 index 9d0843c..18199f4 --- a/finance/migrations/0020_auto_20160531_1303.py +++ b/finance/migrations/0020_auto_20160531_1303.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-31 13:03 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0019_price_url'), - ] - - operations = [ - migrations.AlterField( - model_name='price', - name='url', - field=models.URLField(blank=True, editable=False, null=True, verbose_name='\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u043f\u043b\u0430\u0442\u0443'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-31 13:03 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0019_price_url'), + ] + + operations = [ + migrations.AlterField( + model_name='price', + name='url', + field=models.URLField(blank=True, editable=False, null=True, verbose_name='\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u043f\u043b\u0430\u0442\u0443'), + ), + ] diff --git a/finance/migrations/0021_auto_20160601_1309.py b/finance/migrations/0021_auto_20160601_1309.py old mode 100755 new mode 100644 index 980cd27..3d13ecd --- a/finance/migrations/0021_auto_20160601_1309.py +++ b/finance/migrations/0021_auto_20160601_1309.py @@ -1,34 +1,34 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-01 13:09 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0020_auto_20160531_1303'), - ] - - operations = [ - migrations.RemoveField( - model_name='bill', - name='key', - ), - migrations.AddField( - model_name='bill', - name='pay_key', - field=models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u041a\u043b\u044e\u0447 \u043f\u043b\u0430\u0442\u0435\u0436\u0430'), - ), - migrations.AddField( - model_name='bill', - name='result_key', - field=models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u041a\u043b\u044e\u0447 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430'), - ), - migrations.AddField( - model_name='bill', - name='success_key', - field=models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u041a\u043b\u044e\u0447 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-01 13:09 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0020_auto_20160531_1303'), + ] + + operations = [ + migrations.RemoveField( + model_name='bill', + name='key', + ), + migrations.AddField( + model_name='bill', + name='pay_key', + field=models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u041a\u043b\u044e\u0447 \u043f\u043b\u0430\u0442\u0435\u0436\u0430'), + ), + migrations.AddField( + model_name='bill', + name='result_key', + field=models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u041a\u043b\u044e\u0447 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430'), + ), + migrations.AddField( + model_name='bill', + name='success_key', + field=models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u041a\u043b\u044e\u0447 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f'), + ), + ] diff --git a/finance/migrations/0022_auto_20160601_1320.py b/finance/migrations/0022_auto_20160601_1320.py old mode 100755 new mode 100644 index 287e110..f7ad42e --- a/finance/migrations/0022_auto_20160601_1320.py +++ b/finance/migrations/0022_auto_20160601_1320.py @@ -1,28 +1,28 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-01 13:20 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0021_auto_20160601_1309'), - ] - - operations = [ - migrations.RenameField( - model_name='bill', - old_name='pay_key', - new_name='key', - ), - migrations.RemoveField( - model_name='bill', - name='result_key', - ), - migrations.RemoveField( - model_name='bill', - name='success_key', - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-01 13:20 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0021_auto_20160601_1309'), + ] + + operations = [ + migrations.RenameField( + model_name='bill', + old_name='pay_key', + new_name='key', + ), + migrations.RemoveField( + model_name='bill', + name='result_key', + ), + migrations.RemoveField( + model_name='bill', + name='success_key', + ), + ] diff --git a/finance/migrations/0023_bill_source_key.py b/finance/migrations/0023_bill_source_key.py old mode 100755 new mode 100644 index dc1d5c4..7f9675c --- a/finance/migrations/0023_bill_source_key.py +++ b/finance/migrations/0023_bill_source_key.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-01 16:30 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0022_auto_20160601_1320'), - ] - - operations = [ - migrations.AddField( - model_name='bill', - name='source_key', - field=models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a \u043a\u043b\u044e\u0447\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-01 16:30 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0022_auto_20160601_1320'), + ] + + operations = [ + migrations.AddField( + model_name='bill', + name='source_key', + field=models.CharField(blank=True, default=b'', max_length=255, verbose_name='\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a \u043a\u043b\u044e\u0447\u0430'), + ), + ] diff --git a/finance/migrations/0024_auto_20160607_2002.py b/finance/migrations/0024_auto_20160607_2002.py old mode 100755 new mode 100644 index 7680bee..fbc18f4 --- a/finance/migrations/0024_auto_20160607_2002.py +++ b/finance/migrations/0024_auto_20160607_2002.py @@ -1,35 +1,35 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-07 20:02 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0023_bill_source_key'), - ] - - operations = [ - migrations.AddField( - model_name='bill', - name='fire_date', - field=models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0441\u0433\u043e\u0440\u0430\u043d\u0438\u044f'), - ), - migrations.AddField( - model_name='bill', - name='views', - field=models.IntegerField(default=0, help_text='\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043a\u0430\u0437\u0430 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0439', verbose_name='\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435'), - ), - migrations.AlterField( - model_name='bill', - name='_type', - field=models.CharField(choices=[(b'I', '\u0420\u0430\u0441\u0441\u0440\u043e\u0447\u043a\u0430'), (b'F', '\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436'), (b'S', '\u0423\u0441\u043b\u0443\u0433\u0430'), (b'P', '\u0421\u0447\u0435\u0442 \u043d\u0430 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0438')], default=b'S', max_length=1, verbose_name='\u0422\u0438\u043f \u043f\u043b\u0430\u0442\u0435\u0436\u0430'), - ), - migrations.AlterField( - model_name='bill', - name='status', - field=models.CharField(choices=[(b'W', '\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u044f'), (b'P', '\u041d\u0430 \u043e\u043f\u043b\u0430\u0442\u0435'), (b'F', '\u041e\u043f\u043b\u0430\u0447\u0435\u043d'), (b'C', '\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d'), (b'H', '\u0421\u0442\u0443\u0445')], default=b'W', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-07 20:02 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0023_bill_source_key'), + ] + + operations = [ + migrations.AddField( + model_name='bill', + name='fire_date', + field=models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0441\u0433\u043e\u0440\u0430\u043d\u0438\u044f'), + ), + migrations.AddField( + model_name='bill', + name='views', + field=models.IntegerField(default=0, help_text='\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043a\u0430\u0437\u0430 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0439', verbose_name='\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435'), + ), + migrations.AlterField( + model_name='bill', + name='_type', + field=models.CharField(choices=[(b'I', '\u0420\u0430\u0441\u0441\u0440\u043e\u0447\u043a\u0430'), (b'F', '\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u043f\u043b\u0430\u0442\u0435\u0436'), (b'S', '\u0423\u0441\u043b\u0443\u0433\u0430'), (b'P', '\u0421\u0447\u0435\u0442 \u043d\u0430 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0438')], default=b'S', max_length=1, verbose_name='\u0422\u0438\u043f \u043f\u043b\u0430\u0442\u0435\u0436\u0430'), + ), + migrations.AlterField( + model_name='bill', + name='status', + field=models.CharField(choices=[(b'W', '\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u044f'), (b'P', '\u041d\u0430 \u043e\u043f\u043b\u0430\u0442\u0435'), (b'F', '\u041e\u043f\u043b\u0430\u0447\u0435\u043d'), (b'C', '\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d'), (b'H', '\u0421\u0442\u0443\u0445')], default=b'W', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441'), + ), + ] diff --git a/finance/migrations/0025_auto_20160607_2034.py b/finance/migrations/0025_auto_20160607_2034.py old mode 100755 new mode 100644 index f55c9a0..5d20f6c --- a/finance/migrations/0025_auto_20160607_2034.py +++ b/finance/migrations/0025_auto_20160607_2034.py @@ -1,30 +1,30 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-07 20:34 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0024_auto_20160607_2002'), - ] - - operations = [ - migrations.AddField( - model_name='price', - name='post_fire', - field=models.IntegerField(default=0, help_text='\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 50% \u0441\u043a\u0438\u043d\u0434\u043a\u0438 \u043d\u0430 X \u0434\u043d\u0435\u0439. \u0421\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 "\u0434\u043d\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0430"', verbose_name='\u0414\u043d\u0435\u0439 \u0441\u0433\u043e\u0440\u0430\u043d\u0438\u044f'), - ), - migrations.AlterField( - model_name='bill', - name='status', - field=models.CharField(choices=[(b'W', '\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u044f'), (b'P', '\u041d\u0430 \u043e\u043f\u043b\u0430\u0442\u0435'), (b'F', '\u041e\u043f\u043b\u0430\u0447\u0435\u043d'), (b'C', '\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d'), (b'H', '\u0421\u0433\u043e\u0440\u0435\u043b')], default=b'W', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441'), - ), - migrations.AlterField( - model_name='bill', - name='views', - field=models.IntegerField(blank=True, default=0, help_text='\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043a\u0430\u0437\u043e\u0432 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f', verbose_name='\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-07 20:34 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0024_auto_20160607_2002'), + ] + + operations = [ + migrations.AddField( + model_name='price', + name='post_fire', + field=models.IntegerField(default=0, help_text='\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 50% \u0441\u043a\u0438\u043d\u0434\u043a\u0438 \u043d\u0430 X \u0434\u043d\u0435\u0439. \u0421\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 "\u0434\u043d\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0430"', verbose_name='\u0414\u043d\u0435\u0439 \u0441\u0433\u043e\u0440\u0430\u043d\u0438\u044f'), + ), + migrations.AlterField( + model_name='bill', + name='status', + field=models.CharField(choices=[(b'W', '\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u044f'), (b'P', '\u041d\u0430 \u043e\u043f\u043b\u0430\u0442\u0435'), (b'F', '\u041e\u043f\u043b\u0430\u0447\u0435\u043d'), (b'C', '\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d'), (b'H', '\u0421\u0433\u043e\u0440\u0435\u043b')], default=b'W', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441'), + ), + migrations.AlterField( + model_name='bill', + name='views', + field=models.IntegerField(blank=True, default=0, help_text='\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043a\u0430\u0437\u043e\u0432 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f', verbose_name='\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435'), + ), + ] diff --git a/finance/migrations/0026_servicerequest__type.py b/finance/migrations/0026_servicerequest__type.py old mode 100755 new mode 100644 index 7623968..e534326 --- a/finance/migrations/0026_servicerequest__type.py +++ b/finance/migrations/0026_servicerequest__type.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-07 20:51 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0025_auto_20160607_2034'), - ] - - operations = [ - migrations.AddField( - model_name='servicerequest', - name='_type', - 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, verbose_name='\u0422\u0438\u043f \u0437\u0430\u043f\u0440\u043e\u0441\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-07 20:51 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0025_auto_20160607_2034'), + ] + + operations = [ + migrations.AddField( + model_name='servicerequest', + name='_type', + 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, verbose_name='\u0422\u0438\u043f \u0437\u0430\u043f\u0440\u043e\u0441\u0430'), + ), + ] diff --git a/finance/migrations/0027_price_modals.py b/finance/migrations/0027_price_modals.py old mode 100755 new mode 100644 index 831047a..d661b31 --- a/finance/migrations/0027_price_modals.py +++ b/finance/migrations/0027_price_modals.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 23:51 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0039_auto_20160609_2351'), - ('finance', '0026_servicerequest__type'), - ] - - operations = [ - migrations.AddField( - model_name='price', - name='modals', - field=models.ManyToManyField(blank=True, null=True, to='management.Modals', verbose_name='\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043a\u043d\u0430 \u043f\u0440\u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 23:51 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0039_auto_20160609_2351'), + ('finance', '0026_servicerequest__type'), + ] + + operations = [ + migrations.AddField( + model_name='price', + name='modals', + field=models.ManyToManyField(blank=True, null=True, to='management.Modals', verbose_name='\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043a\u043d\u0430 \u043f\u0440\u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0438'), + ), + ] diff --git a/finance/migrations/0028_auto_20160610_0003.py b/finance/migrations/0028_auto_20160610_0003.py old mode 100755 new mode 100644 index 5dcc8a5..e4de24e --- a/finance/migrations/0028_auto_20160610_0003.py +++ b/finance/migrations/0028_auto_20160610_0003.py @@ -1,30 +1,30 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-10 00:03 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0027_price_modals'), - ] - - operations = [ - migrations.AddField( - model_name='bill', - name='fire_date_sent', - field=models.BooleanField(default=False, verbose_name='\u041f\u0438\u0441\u044c\u043c\u043e \u0441\u0433\u043e\u0440\u0430\u043d\u0438\u044f'), - ), - migrations.AddField( - model_name='bill', - name='start_fire', - field=models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0433\u043e\u0440\u0430\u043d\u0438\u044f'), - ), - migrations.AddField( - model_name='bill', - name='start_fire_sent', - field=models.BooleanField(default=False, verbose_name='\u041f\u0438\u0441\u044c\u043c\u043e \u0441\u0433\u043e\u0440\u0430\u043d\u0438\u044f'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-10 00:03 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0027_price_modals'), + ] + + operations = [ + migrations.AddField( + model_name='bill', + name='fire_date_sent', + field=models.BooleanField(default=False, verbose_name='\u041f\u0438\u0441\u044c\u043c\u043e \u0441\u0433\u043e\u0440\u0430\u043d\u0438\u044f'), + ), + migrations.AddField( + model_name='bill', + name='start_fire', + field=models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0433\u043e\u0440\u0430\u043d\u0438\u044f'), + ), + migrations.AddField( + model_name='bill', + name='start_fire_sent', + field=models.BooleanField(default=False, verbose_name='\u041f\u0438\u0441\u044c\u043c\u043e \u0441\u0433\u043e\u0440\u0430\u043d\u0438\u044f'), + ), + ] diff --git a/finance/migrations/0029_bill_modals_show.py b/finance/migrations/0029_bill_modals_show.py old mode 100755 new mode 100644 index 79a8383..8e6f4dd --- a/finance/migrations/0029_bill_modals_show.py +++ b/finance/migrations/0029_bill_modals_show.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-10 12:51 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0028_auto_20160610_0003'), - ] - - operations = [ - migrations.AddField( - model_name='bill', - name='modals_show', - field=models.BooleanField(default=False, verbose_name='\u041c\u043e\u0434\u0430\u043b\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-10 12:51 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0028_auto_20160610_0003'), + ] + + operations = [ + migrations.AddField( + model_name='bill', + name='modals_show', + field=models.BooleanField(default=False, verbose_name='\u041c\u043e\u0434\u0430\u043b\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b'), + ), + ] diff --git a/finance/migrations/0030_bill_admitad_uid.py b/finance/migrations/0030_bill_admitad_uid.py old mode 100755 new mode 100644 index 4cf5366..4914efa --- a/finance/migrations/0030_bill_admitad_uid.py +++ b/finance/migrations/0030_bill_admitad_uid.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-26 19:01 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0029_bill_modals_show'), - ] - - operations = [ - migrations.AddField( - model_name='bill', - name='admitad_uid', - field=models.CharField(blank=True, default=b'', max_length=100, verbose_name='\u041a\u043b\u044e\u0447\u044c admitad'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-26 19:01 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0029_bill_modals_show'), + ] + + operations = [ + migrations.AddField( + model_name='bill', + name='admitad_uid', + field=models.CharField(blank=True, default=b'', max_length=100, verbose_name='\u041a\u043b\u044e\u0447\u044c admitad'), + ), + ] diff --git a/finance/migrations/0031_auto_20160727_1453.py b/finance/migrations/0031_auto_20160727_1453.py old mode 100755 new mode 100644 index 90c588a..4a73678 --- a/finance/migrations/0031_auto_20160727_1453.py +++ b/finance/migrations/0031_auto_20160727_1453.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-27 14:53 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('finance', '0030_bill_admitad_uid'), - ] - - operations = [ - migrations.AlterField( - model_name='bill', - name='price', - field=models.CharField(max_length=255, verbose_name='\u0421\u0443\u043c\u043c\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-27 14:53 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0030_bill_admitad_uid'), + ] + + operations = [ + migrations.AlterField( + model_name='bill', + name='price', + field=models.CharField(max_length=255, verbose_name='\u0421\u0443\u043c\u043c\u0430'), + ), + ] diff --git a/finance/migrations/__init__.py b/finance/migrations/__init__.py old mode 100755 new mode 100644 diff --git a/finance/models.py b/finance/models.py old mode 100755 new mode 100644 diff --git a/finance/pay.py b/finance/pay.py old mode 100755 new mode 100644 diff --git a/finance/tasks.py b/finance/tasks.py old mode 100755 new mode 100644 index bc1ace7..aa74ddc --- a/finance/tasks.py +++ b/finance/tasks.py @@ -1,40 +1,40 @@ -# coding=utf-8 -from celery.task import periodic_task -from datetime import timedelta, datetime - -from django.db.models import Q - -from finance.models import Price, Bill, ServiceRequest -from courses.models import CourseMap - - -@periodic_task(run_every=timedelta(minutes=1)) -def price_map_migrator(): - for price in Price.objects.filter(included=None).exclude(course=None): - if not price.included.exists(): - inc_type = [] - - if price.m_type == 'B': - inc_type = ['B'] - elif price.m_type == 'E': - inc_type = ['B', 'E'] - elif price.m_type == 'P': - inc_type = ['B', 'E', 'P'] - for m in CourseMap.objects.filter(course=price.course): - if m.get_obj().theme.price_type in inc_type: - price.included.add(m) - - -@periodic_task(run_every=timedelta(hours=1)) -def price_map_migrator(): - for price in Price.objects.exclude(by_time=None): - for bill in Bill.objects.filter(service=price, fire_date__lt=datetime.now()): - bill.status = 'H' - bill.save() - - -@periodic_task(run_every=timedelta(minutes=1)) -def sent_service_request_to_amo(): - sr = ServiceRequest.objects.filter(send=False, send_date__lt=datetime.now()).exclude(Q(name='TEST')| Q(status='E')).first() - if sr: - sr.sent_to_amo() +# coding=utf-8 +from celery.task import periodic_task +from datetime import timedelta, datetime + +from django.db.models import Q + +from finance.models import Price, Bill, ServiceRequest +from courses.models import CourseMap + + +@periodic_task(run_every=timedelta(minutes=1)) +def price_map_migrator(): + for price in Price.objects.filter(included=None).exclude(course=None): + if not price.included.exists(): + inc_type = [] + + if price.m_type == 'B': + inc_type = ['B'] + elif price.m_type == 'E': + inc_type = ['B', 'E'] + elif price.m_type == 'P': + inc_type = ['B', 'E', 'P'] + for m in CourseMap.objects.filter(course=price.course): + if m.get_obj().theme.price_type in inc_type: + price.included.add(m) + + +@periodic_task(run_every=timedelta(hours=1)) +def price_map_migrator(): + for price in Price.objects.exclude(by_time=None): + for bill in Bill.objects.filter(service=price, fire_date__lt=datetime.now()): + bill.status = 'H' + bill.save() + + +@periodic_task(run_every=timedelta(minutes=1)) +def sent_service_request_to_amo(): + sr = ServiceRequest.objects.filter(send=False, send_date__lt=datetime.now()).exclude(Q(name='TEST')| Q(status='E')).first() + if sr: + sr.sent_to_amo() diff --git a/finance/tools.py b/finance/tools.py old mode 100755 new mode 100644 index ddf2f25..fa8518b --- a/finance/tools.py +++ b/finance/tools.py @@ -1,58 +1,58 @@ -# coding=utf-8 -from django.db.models import Q -import datetime -from finance.models import Bill, Price -from courses.models import CourseMap - - -def system_check_bill(token, user, theme_type='B'): - if user.is_admin: - return True - - # Проверка счета, как подписки - __point = CourseMap.objects.get(token=token) - course = __point.course - if user in course.teachers.all(): - return True - - prices = Price.objects.filter(included=__point).values_list('id', flat=True) - for b in Bill.objects.filter(service__id__in=prices, user=user, status='F'): - if b: - if b.service.by_time: - if b.finish_date + datetime.timedelta(days=b.service.by_time) > datetime.datetime.now(): - return True - else: - return False - else: - return True - - m_type = [] - if theme_type == 'B' or theme_type == 'M': - m_type = ['B', 'E', 'P'] - - elif theme_type == 'E': - m_type = ['E', 'P'] - - elif theme_type == 'P': - m_type = ['P'] - - if m_type: - bill = Bill.objects.filter(service__included=None, service__course=course, user=user, status='F', service__m_type__in=m_type) - if bill.exists(): - check = [] - for b in bill: - if b.service.by_time: - check.append(b) - if not check: - return True - - else: - result = False - for b in check: - if b.finish_date + datetime.timedelta(days=b.service.by_time) > datetime.datetime.now(): - result = True - if result: - return True - else: - return False - return False +# coding=utf-8 +from django.db.models import Q +import datetime +from finance.models import Bill, Price +from courses.models import CourseMap + + +def system_check_bill(token, user, theme_type='B'): + if user.is_admin: + return True + + # Проверка счета, как подписки + __point = CourseMap.objects.get(token=token) + course = __point.course + if user in course.teachers.all(): + return True + + prices = Price.objects.filter(included=__point).values_list('id', flat=True) + for b in Bill.objects.filter(service__id__in=prices, user=user, status='F'): + if b: + if b.service.by_time: + if b.finish_date + datetime.timedelta(days=b.service.by_time) > datetime.datetime.now(): + return True + else: + return False + else: + return True + + m_type = [] + if theme_type == 'B' or theme_type == 'M': + m_type = ['B', 'E', 'P'] + + elif theme_type == 'E': + m_type = ['E', 'P'] + + elif theme_type == 'P': + m_type = ['P'] + + if m_type: + bill = Bill.objects.filter(service__included=None, service__course=course, user=user, status='F', service__m_type__in=m_type) + if bill.exists(): + check = [] + for b in bill: + if b.service.by_time: + check.append(b) + if not check: + return True + + else: + result = False + for b in check: + if b.finish_date + datetime.timedelta(days=b.service.by_time) > datetime.datetime.now(): + result = True + if result: + return True + else: + return False + return False diff --git a/finance/urls.py b/finance/urls.py old mode 100755 new mode 100644 diff --git a/finance/views.py b/finance/views.py old mode 100755 new mode 100644 index 9885df6..d9a3c53 --- a/finance/views.py +++ b/finance/views.py @@ -1,36 +1,36 @@ -# coding=utf-8 -from django.http import Http404 -from lms.decors import response_decor -from courses.models import Course -from finance.models import Price, Bill - - -@response_decor(template='traffic_map.html') -def traffic_map(request, course): - # Страница цен - _course = Course.objects.get(id=course) - return {'course': _course.title, 'traffic': Price.objects.filter(course=_course)} - - -@response_decor(template='selfbill.html', without_auth=True) -def self_bill(request, key): - # Страница формирования собственного счета - try: - req = Price.objects.get(key=key) - except Price.DoesNotExist: - raise Http404 - else: - return {'sum': req.cost, 'name': req.get_name(), 'key': key} - - -@response_decor(template='bill_out.html', without_auth=True) -def bill_out(request, salt): - try: - bill = Bill.objects.get(salt=salt) - except Bill.DoesNotExist: - raise Http404 - else: - if bill.status == 'W': - bill.status = 'P' - bill.save() - return {'data': bill.gen_yandex_data(), 'price': bill.price} +# coding=utf-8 +from django.http import Http404 +from lms.decors import response_decor +from courses.models import Course +from finance.models import Price, Bill + + +@response_decor(template='traffic_map.html') +def traffic_map(request, course): + # Страница цен + _course = Course.objects.get(id=course) + return {'course': _course.title, 'traffic': Price.objects.filter(course=_course)} + + +@response_decor(template='selfbill.html', without_auth=True) +def self_bill(request, key): + # Страница формирования собственного счета + try: + req = Price.objects.get(key=key) + except Price.DoesNotExist: + raise Http404 + else: + return {'sum': req.cost, 'name': req.get_name(), 'key': key} + + +@response_decor(template='bill_out.html', without_auth=True) +def bill_out(request, salt): + try: + bill = Bill.objects.get(salt=salt) + except Bill.DoesNotExist: + raise Http404 + else: + if bill.status == 'W': + bill.status = 'P' + bill.save() + return {'data': bill.gen_yandex_data(), 'price': bill.price} diff --git a/img_creator/#378-005-111-1211313167.png b/img_creator/#378-005-111-1211313167.png deleted file mode 100644 index 50908a3..0000000 Binary files a/img_creator/#378-005-111-1211313167.png and /dev/null differ diff --git a/img_creator/#378-005-111-6839836384.png b/img_creator/#378-005-111-6839836384.png deleted file mode 100644 index 8062fd9..0000000 Binary files a/img_creator/#378-005-111-6839836384.png and /dev/null differ diff --git a/img_creator/#378-005-112-1318768199.png b/img_creator/#378-005-112-1318768199.png deleted file mode 100644 index 855fba8..0000000 Binary files a/img_creator/#378-005-112-1318768199.png and /dev/null differ diff --git a/img_creator/#378-005-112-3864050819.png b/img_creator/#378-005-112-3864050819.png deleted file mode 100644 index c799207..0000000 Binary files a/img_creator/#378-005-112-3864050819.png and /dev/null differ diff --git a/img_creator/#378-005-113-1567688997.png b/img_creator/#378-005-113-1567688997.png deleted file mode 100644 index 787d42a..0000000 Binary files a/img_creator/#378-005-113-1567688997.png and /dev/null differ diff --git a/img_creator/#378-005-113-2446105110.png b/img_creator/#378-005-113-2446105110.png deleted file mode 100644 index 5bcb811..0000000 Binary files a/img_creator/#378-005-113-2446105110.png and /dev/null differ diff --git a/img_creator/#378-005-113-6643879642.png b/img_creator/#378-005-113-6643879642.png deleted file mode 100644 index 5bcb811..0000000 Binary files a/img_creator/#378-005-113-6643879642.png and /dev/null differ diff --git a/img_creator/#378-005-113-6906098345.png b/img_creator/#378-005-113-6906098345.png deleted file mode 100644 index 787d42a..0000000 Binary files a/img_creator/#378-005-113-6906098345.png and /dev/null differ diff --git a/img_creator/#378-005-114-2760720588.png b/img_creator/#378-005-114-2760720588.png deleted file mode 100644 index 16ba4b9..0000000 Binary files a/img_creator/#378-005-114-2760720588.png and /dev/null differ diff --git a/img_creator/#378-005-114-4144003764.png b/img_creator/#378-005-114-4144003764.png deleted file mode 100644 index 16ba4b9..0000000 Binary files a/img_creator/#378-005-114-4144003764.png and /dev/null differ diff --git a/img_creator/#378-005-114-5045779647.png b/img_creator/#378-005-114-5045779647.png deleted file mode 100644 index 36db305..0000000 Binary files a/img_creator/#378-005-114-5045779647.png and /dev/null differ diff --git a/img_creator/#378-005-114-8811601888.png b/img_creator/#378-005-114-8811601888.png deleted file mode 100644 index 36db305..0000000 Binary files a/img_creator/#378-005-114-8811601888.png and /dev/null differ diff --git a/img_creator/#378-005-115-8424668311.png b/img_creator/#378-005-115-8424668311.png deleted file mode 100644 index 4f878a6..0000000 Binary files a/img_creator/#378-005-115-8424668311.png and /dev/null differ diff --git a/img_creator/#378-005-115-8807415204.png b/img_creator/#378-005-115-8807415204.png deleted file mode 100644 index 01286d0..0000000 Binary files a/img_creator/#378-005-115-8807415204.png and /dev/null differ diff --git a/img_creator/#378-005-116-0406189146.png b/img_creator/#378-005-116-0406189146.png deleted file mode 100644 index c7d631b..0000000 Binary files a/img_creator/#378-005-116-0406189146.png and /dev/null differ diff --git a/img_creator/#378-005-116-9488283735.png b/img_creator/#378-005-116-9488283735.png deleted file mode 100644 index d9b4524..0000000 Binary files a/img_creator/#378-005-116-9488283735.png and /dev/null differ diff --git a/img_creator/August-21,-2016-3044848893.png b/img_creator/August-21,-2016-3044848893.png deleted file mode 100644 index 1bde310..0000000 Binary files a/img_creator/August-21,-2016-3044848893.png and /dev/null differ diff --git a/img_creator/August-21,-2016-4246492329.png b/img_creator/August-21,-2016-4246492329.png deleted file mode 100644 index a31a47d..0000000 Binary files a/img_creator/August-21,-2016-4246492329.png and /dev/null differ diff --git a/img_creator/August-21,-2016-5575980530.png b/img_creator/August-21,-2016-5575980530.png deleted file mode 100644 index a31a47d..0000000 Binary files a/img_creator/August-21,-2016-5575980530.png and /dev/null differ diff --git a/img_creator/August-21,-2016-7389762735.png b/img_creator/August-21,-2016-7389762735.png deleted file mode 100644 index 1bde310..0000000 Binary files a/img_creator/August-21,-2016-7389762735.png and /dev/null differ diff --git a/img_creator/August-28,-2016-1433582149.png b/img_creator/August-28,-2016-1433582149.png deleted file mode 100644 index 287ea49..0000000 Binary files a/img_creator/August-28,-2016-1433582149.png and /dev/null differ diff --git a/img_creator/August-28,-2016-1631268863.png b/img_creator/August-28,-2016-1631268863.png deleted file mode 100644 index 287ea49..0000000 Binary files a/img_creator/August-28,-2016-1631268863.png and /dev/null differ diff --git a/img_creator/August-28,-2016-3296039426.png b/img_creator/August-28,-2016-3296039426.png deleted file mode 100644 index 1241ec4..0000000 Binary files a/img_creator/August-28,-2016-3296039426.png and /dev/null differ diff --git a/img_creator/August-28,-2016-3608188751.png b/img_creator/August-28,-2016-3608188751.png deleted file mode 100644 index 1241ec4..0000000 Binary files a/img_creator/August-28,-2016-3608188751.png and /dev/null differ diff --git a/img_creator/August-28,-2016-4727225138.png b/img_creator/August-28,-2016-4727225138.png deleted file mode 100644 index 1241ec4..0000000 Binary files a/img_creator/August-28,-2016-4727225138.png and /dev/null differ diff --git a/img_creator/August-28,-2016-6612888819.png b/img_creator/August-28,-2016-6612888819.png deleted file mode 100644 index 287ea49..0000000 Binary files a/img_creator/August-28,-2016-6612888819.png and /dev/null differ diff --git a/img_creator/August-28,-2016-7363942234.png b/img_creator/August-28,-2016-7363942234.png deleted file mode 100644 index 287ea49..0000000 Binary files a/img_creator/August-28,-2016-7363942234.png and /dev/null differ diff --git a/img_creator/August-28,-2016-8914361018.png b/img_creator/August-28,-2016-8914361018.png deleted file mode 100644 index 1241ec4..0000000 Binary files a/img_creator/August-28,-2016-8914361018.png and /dev/null differ diff --git a/img_creator/August-30,-2016-2039943489.png b/img_creator/August-30,-2016-2039943489.png deleted file mode 100644 index 5a0394b..0000000 Binary files a/img_creator/August-30,-2016-2039943489.png and /dev/null differ diff --git a/img_creator/August-30,-2016-5477185521.png b/img_creator/August-30,-2016-5477185521.png deleted file mode 100644 index bc08407..0000000 Binary files a/img_creator/August-30,-2016-5477185521.png and /dev/null differ diff --git a/img_creator/September-1,-2016-0625090677.png b/img_creator/September-1,-2016-0625090677.png deleted file mode 100644 index 1eb057e..0000000 Binary files a/img_creator/September-1,-2016-0625090677.png and /dev/null differ diff --git a/img_creator/September-1,-2016-5166098172.png b/img_creator/September-1,-2016-5166098172.png deleted file mode 100644 index 54368ad..0000000 Binary files a/img_creator/September-1,-2016-5166098172.png and /dev/null differ diff --git "a/img_creator/arsen\narustamyan-2987814416.png" "b/img_creator/arsen\narustamyan-2987814416.png" deleted file mode 100644 index d09f15a..0000000 Binary files "a/img_creator/arsen\narustamyan-2987814416.png" and /dev/null differ diff --git "a/img_creator/arsen\narustamyan-7063418714.png" "b/img_creator/arsen\narustamyan-7063418714.png" deleted file mode 100644 index 7c2229c..0000000 Binary files "a/img_creator/arsen\narustamyan-7063418714.png" and /dev/null differ diff --git "a/img_creator/mihail\ngostischev-5524646284.png" "b/img_creator/mihail\ngostischev-5524646284.png" deleted file mode 100644 index f8a4c76..0000000 Binary files "a/img_creator/mihail\ngostischev-5524646284.png" and /dev/null differ diff --git "a/img_creator/mihail\ngostischev-7702568953.png" "b/img_creator/mihail\ngostischev-7702568953.png" deleted file mode 100644 index db54e04..0000000 Binary files "a/img_creator/mihail\ngostischev-7702568953.png" and /dev/null differ diff --git "a/img_creator/nikita\nizyumov-0398549358.png" "b/img_creator/nikita\nizyumov-0398549358.png" deleted file mode 100644 index f4e94d5..0000000 Binary files "a/img_creator/nikita\nizyumov-0398549358.png" and /dev/null differ diff --git "a/img_creator/nikita\nizyumov-0400541932.png" "b/img_creator/nikita\nizyumov-0400541932.png" deleted file mode 100644 index f4e94d5..0000000 Binary files "a/img_creator/nikita\nizyumov-0400541932.png" and /dev/null differ diff --git "a/img_creator/nikita\nizyumov-7930433899.png" "b/img_creator/nikita\nizyumov-7930433899.png" deleted file mode 100644 index 54cfe2b..0000000 Binary files "a/img_creator/nikita\nizyumov-7930433899.png" and /dev/null differ diff --git "a/img_creator/nikita\nizyumov-9463151998.png" "b/img_creator/nikita\nizyumov-9463151998.png" deleted file mode 100644 index 54cfe2b..0000000 Binary files "a/img_creator/nikita\nizyumov-9463151998.png" and /dev/null differ diff --git "a/img_creator/tat'yana\navdeeva-0838390264.png" "b/img_creator/tat'yana\navdeeva-0838390264.png" deleted file mode 100644 index 7ca7097..0000000 Binary files "a/img_creator/tat'yana\navdeeva-0838390264.png" and /dev/null differ diff --git "a/img_creator/tat'yana\navdeeva-1481885440.png" "b/img_creator/tat'yana\navdeeva-1481885440.png" deleted file mode 100644 index 7ca7097..0000000 Binary files "a/img_creator/tat'yana\navdeeva-1481885440.png" and /dev/null differ diff --git "a/img_creator/tat'yana\navdeeva-6095886706.png" "b/img_creator/tat'yana\navdeeva-6095886706.png" deleted file mode 100644 index 8d9fbaa..0000000 Binary files "a/img_creator/tat'yana\navdeeva-6095886706.png" and /dev/null differ diff --git "a/img_creator/tat'yana\navdeeva-8198233781.png" "b/img_creator/tat'yana\navdeeva-8198233781.png" deleted file mode 100644 index 8d9fbaa..0000000 Binary files "a/img_creator/tat'yana\navdeeva-8198233781.png" and /dev/null differ diff --git "a/img_creator/vitaliy\nbogdanov-2981373144.png" "b/img_creator/vitaliy\nbogdanov-2981373144.png" deleted file mode 100644 index fdd498e..0000000 Binary files "a/img_creator/vitaliy\nbogdanov-2981373144.png" and /dev/null differ diff --git "a/img_creator/vitaliy\nbogdanov-7355431101.png" "b/img_creator/vitaliy\nbogdanov-7355431101.png" deleted file mode 100644 index bae11df..0000000 Binary files "a/img_creator/vitaliy\nbogdanov-7355431101.png" and /dev/null differ diff --git "a/img_creator/vitaliy\nbogdanov-8711548688.png" "b/img_creator/vitaliy\nbogdanov-8711548688.png" deleted file mode 100644 index fdd498e..0000000 Binary files "a/img_creator/vitaliy\nbogdanov-8711548688.png" and /dev/null differ diff --git "a/img_creator/vitaliy\nbogdanov-9743594303.png" "b/img_creator/vitaliy\nbogdanov-9743594303.png" deleted file mode 100644 index bae11df..0000000 Binary files "a/img_creator/vitaliy\nbogdanov-9743594303.png" and /dev/null differ diff --git a/journals/__init__.py b/journals/__init__.py old mode 100755 new mode 100644 diff --git a/journals/admin.py b/journals/admin.py old mode 100755 new mode 100644 index f18027a..f627cf1 --- a/journals/admin.py +++ b/journals/admin.py @@ -1,252 +1,252 @@ -#! coding: utf-8 - -from django.contrib import admin -from django.db.models import Q -from django.http import HttpResponse - -from access.models import User -from journals.models import TeacherJ, LessonJ, HomeworkJ, \ - ExamJ, AchievementJ, HomeworkTry, \ - ExamTry, CourseThemeJ, DiplomaJ, ReportDepth -from import_export.admin import ImportExportModelAdmin - - -def export_xls(modeladmin, request, queryset): - import xlwt - response = HttpResponse(content_type='application/ms-excel') - response['Content-Disposition'] = 'attachment; filename=report.xls' - wb = xlwt.Workbook(encoding='utf-8') - ws = wb.add_sheet("MyModel") - - row_num = 0 - - columns = [ - (u"ID Студента", 3000), - (u"ФИО", 6000), - (u"Email", 8000), - (u'Порядок темы урока', 1000), - (u'Тема урока', 16000), - (u'Порядок урока', 1000), - (u"Урок", 16000), - (u"ДЗ", 16000), - (u'Тема ДЗ', 16000), - (u'Порядок темы ДЗ', 1000), - (u"Преподаватель", 6000), - (u"Курс", 6000), - ] - - font_style = xlwt.XFStyle() - font_style.font.bold = True - - for col_num in range(len(columns)): - ws.write(row_num, col_num, columns[col_num][0], font_style) - # set column width - ws.col(col_num).width = columns[col_num][1] - - font_style = xlwt.XFStyle() - font_style.alignment.wrap = 1 - - for obj in queryset: - row_num += 1 - row = [ - obj.student.id if obj.student else '-', - obj.student.get_full_name() if obj.student else '-', - obj.student.email if obj.student else '-', - obj.lesson.theme.sort if obj.lesson else '-', - obj.lesson.theme.get_title() if obj.lesson else '-', - obj.lesson.sort if obj.lesson else '-', - obj.lesson.get_title() if obj.lesson else '-', - obj.homework.get_title() if obj.homework else '-', - obj.homework.theme.get_title() if obj.homework else '-', - obj.homework.theme.sort if obj.homework else '-', - obj.teacher.get_short_name() if obj.teacher else '-', - obj.course.get_title() if obj.course else '-', - ] - for col_num in range(len(row)): - ws.write(row_num, col_num, row[col_num], font_style) - - wb.save(response) - return response - - -export_xls.short_description = u"Export XLS" - - -def export_hw_journals(modeladmin, request, queryset): - import xlwt - response = HttpResponse(content_type='application/ms-excel') - response['Content-Disposition'] = 'attachment; filename=report.xls' - wb = xlwt.Workbook(encoding='utf-8') - ws = wb.add_sheet("MyModel") - - row_num = 0 - - columns = [ - (u"ID Студента", 3000), - (u"ФИО", 6000), - (u"Email", 8000), - (u'Порядок темы', 1000), - (u'Тема', 16000), - (u'Преподаватель', 1000) - ] - - font_style = xlwt.XFStyle() - font_style.font.bold = True - - for col_num in range(len(columns)): - ws.write(row_num, col_num, columns[col_num][0], font_style) - # set column width - ws.col(col_num).width = columns[col_num][1] - - font_style = xlwt.XFStyle() - font_style.alignment.wrap = 1 - - for obj in queryset: - row_num += 1 - row = [ - obj.student.id if obj.student else '-', - obj.student.get_full_name() if obj.student else '-', - obj.student.email if obj.student else '-', - obj.material.theme.sort if obj.material else '-', - obj.material.theme.get_title() if obj.material else '-', - obj.teacher.get_full_name() if obj.teacher else '-' - ] - for col_num in range(len(row)): - ws.write(row_num, col_num, row[col_num], font_style) - - wb.save(response) - return response - - -export_xls.short_description = u"Отчет по сдаче" - - -class TeacherJAdmin(admin.ModelAdmin): - list_display = ('get_student_name', 'get_student_email', 'lesson', 'homework', 'teacher', 'course', 'start_date', 'progress', ) - search_fields = ['current_token', 'student__email', 'student__id'] - list_filter = ['course', 'status'] - filter_horizontal = ('waiting', ) - actions = [export_xls] - - def get_student_email(self, instance): - return instance.student.email if instance.student else '' - - def get_student_name(self, instance): - return instance.student.get_full_name() if instance.student else '' - - def formfield_for_foreignkey(self, db_field, request=None, **kwargs): - if db_field.name == "teacher": - kwargs["queryset"] = User.objects.filter(in_role='T') - return super(TeacherJAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) - -admin.site.register(TeacherJ, TeacherJAdmin) - - -class LessonJAdmin(admin.ModelAdmin): - list_display = ('student', 'material', 'parent', 'success', 'date', 'f_date',) - list_filter = ['success', 'material__course', 'date', 'f_date'] - raw_id_fields = ['parent', 'student'] - search_fields = ['student__id', 'student__email'] - - def formfield_for_foreignkey(self, db_field, request=None, **kwargs): - if db_field.name == "teacher": - kwargs["queryset"] = User.objects.filter(in_role='T') - return super(LessonJAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) - -admin.site.register(LessonJ, LessonJAdmin) - - -class HomeworkJAdmin(admin.ModelAdmin): - list_display = ('student', 'parent', 'get_courese_title', 'success', 'date', 'f_date', 'teacher', 'get_url', ) - raw_id_fields = ['student', 'parent'] - list_filter = ['material__course', 'success', 'date', 'f_date'] - search_fields = ['student__email', 'student__id'] - actions = [export_hw_journals] - - def get_courese_title(self, instance): - return instance.material.course.get_title() - - def formfield_for_foreignkey(self, db_field, request=None, **kwargs): - if db_field.name == "teacher": - kwargs["queryset"] = User.objects.filter(in_role='T') - return super(HomeworkJAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) - -admin.site.register(HomeworkJ, HomeworkJAdmin) - - -class ExamJAdmin(admin.ModelAdmin): - list_display = ('student', 'date', 'f_date', 'success', 'teacher', 'get_url', ) - list_filter = ['material__course', 'success', 'date', 'f_date'] - search_fields = ['student__email'] - - def formfield_for_foreignkey(self, db_field, request=None, **kwargs): - if db_field.name == "teacher": - kwargs["queryset"] = User.objects.filter(in_role__in=['T']) - return super(ExamJAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) - -admin.site.register(ExamJ, ExamJAdmin) - - -class HomeworkTryAdmin(admin.ModelAdmin): - list_display = ('student', 'get_status_flag', 'material', 'date', 'f_date', 'success', 'expired', 'teacher', 'parent', 'get_url',) - search_fields = ['student__email', 'parent__id', 'student__id'] - list_filter = ('material__course', 'expired', 'date', 'f_date', ) - raw_id_fields = ['student', 'parent'] - filter_horizontal = ['comments'] - - def formfield_for_foreignkey(self, db_field, request=None, **kwargs): - if db_field.name == "teacher": - kwargs["queryset"] = User.objects.filter(in_role__in=['T']) - return super(HomeworkTryAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) - - def get_status_flag(self, instance): - return instance.get_status()['title'] - -admin.site.register(HomeworkTry, HomeworkTryAdmin) - - -class ExamTryAdmin(admin.ModelAdmin): - list_display = ('parent', 'get_status_flag', 'student', 'date', 'f_date', 'success', 'expired', 'teacher') - search_fields = ['student__email', 'parent__id', 'student__id'] - list_filter = ('material__course', 'expired', 'date', 'f_date') - raw_id_fields = ['student', 'parent'] - - def formfield_for_foreignkey(self, db_field, request=None, **kwargs): - if db_field.name == "teacher": - kwargs["queryset"] = User.objects.filter(in_role__in=['T']) - return super(ExamTryAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) - - def get_status_flag(self, instance): - return instance.get_status()['title'] - -admin.site.register(ExamTry, ExamTryAdmin) - - -class CourseThemeJAdmin(admin.ModelAdmin): - list_display = ('id', 'material', 'parent', 'student', 'date', 'f_date', ) - search_fields = ['student__email', 'student__id', 'material__title', 'material__id'] - list_filter = ['material__course', 'success', 'date', 'f_date'] - -admin.site.register(CourseThemeJ, CourseThemeJAdmin) - - -class AchievementJAdmin(admin.ModelAdmin): - list_display = ('title', 'student', 'achievement', 'date', 'got',) - -admin.site.register(AchievementJ, AchievementJAdmin) - - -class DiplomaJAdmin(admin.ModelAdmin): - list_display = ('parent', 'material', 'student', 'date', 'key', 'out_image', 'in_image', 'gen') - search_fields = ('key', 'student__email', 'student__fname', 'student__name', 'student__oname') - list_filter = ['material'] - - -admin.site.register(DiplomaJ, DiplomaJAdmin) - - -class ReportDepthAdmin(admin.ModelAdmin): - list_display = ('token', 'student', 'teacher', 'course', 's_date', 'f_date', 'flag') - - -admin.site.register(ReportDepth, ReportDepthAdmin) +#! coding: utf-8 + +from django.contrib import admin +from django.db.models import Q +from django.http import HttpResponse + +from access.models import User +from journals.models import TeacherJ, LessonJ, HomeworkJ, \ + ExamJ, AchievementJ, HomeworkTry, \ + ExamTry, CourseThemeJ, DiplomaJ, ReportDepth +from import_export.admin import ImportExportModelAdmin + + +def export_xls(modeladmin, request, queryset): + import xlwt + response = HttpResponse(content_type='application/ms-excel') + response['Content-Disposition'] = 'attachment; filename=report.xls' + wb = xlwt.Workbook(encoding='utf-8') + ws = wb.add_sheet("MyModel") + + row_num = 0 + + columns = [ + (u"ID Студента", 3000), + (u"ФИО", 6000), + (u"Email", 8000), + (u'Порядок темы урока', 1000), + (u'Тема урока', 16000), + (u'Порядок урока', 1000), + (u"Урок", 16000), + (u"ДЗ", 16000), + (u'Тема ДЗ', 16000), + (u'Порядок темы ДЗ', 1000), + (u"Преподаватель", 6000), + (u"Курс", 6000), + ] + + font_style = xlwt.XFStyle() + font_style.font.bold = True + + for col_num in range(len(columns)): + ws.write(row_num, col_num, columns[col_num][0], font_style) + # set column width + ws.col(col_num).width = columns[col_num][1] + + font_style = xlwt.XFStyle() + font_style.alignment.wrap = 1 + + for obj in queryset: + row_num += 1 + row = [ + obj.student.id if obj.student else '-', + obj.student.get_full_name() if obj.student else '-', + obj.student.email if obj.student else '-', + obj.lesson.theme.sort if obj.lesson else '-', + obj.lesson.theme.get_title() if obj.lesson else '-', + obj.lesson.sort if obj.lesson else '-', + obj.lesson.get_title() if obj.lesson else '-', + obj.homework.get_title() if obj.homework else '-', + obj.homework.theme.get_title() if obj.homework else '-', + obj.homework.theme.sort if obj.homework else '-', + obj.teacher.get_short_name() if obj.teacher else '-', + obj.course.get_title() if obj.course else '-', + ] + for col_num in range(len(row)): + ws.write(row_num, col_num, row[col_num], font_style) + + wb.save(response) + return response + + +export_xls.short_description = u"Export XLS" + + +def export_hw_journals(modeladmin, request, queryset): + import xlwt + response = HttpResponse(content_type='application/ms-excel') + response['Content-Disposition'] = 'attachment; filename=report.xls' + wb = xlwt.Workbook(encoding='utf-8') + ws = wb.add_sheet("MyModel") + + row_num = 0 + + columns = [ + (u"ID Студента", 3000), + (u"ФИО", 6000), + (u"Email", 8000), + (u'Порядок темы', 1000), + (u'Тема', 16000), + (u'Преподаватель', 1000) + ] + + font_style = xlwt.XFStyle() + font_style.font.bold = True + + for col_num in range(len(columns)): + ws.write(row_num, col_num, columns[col_num][0], font_style) + # set column width + ws.col(col_num).width = columns[col_num][1] + + font_style = xlwt.XFStyle() + font_style.alignment.wrap = 1 + + for obj in queryset: + row_num += 1 + row = [ + obj.student.id if obj.student else '-', + obj.student.get_full_name() if obj.student else '-', + obj.student.email if obj.student else '-', + obj.material.theme.sort if obj.material else '-', + obj.material.theme.get_title() if obj.material else '-', + obj.teacher.get_full_name() if obj.teacher else '-' + ] + for col_num in range(len(row)): + ws.write(row_num, col_num, row[col_num], font_style) + + wb.save(response) + return response + + +export_xls.short_description = u"Отчет по сдаче" + + +class TeacherJAdmin(admin.ModelAdmin): + list_display = ('get_student_name', 'get_student_email', 'lesson', 'homework', 'teacher', 'course', 'start_date', 'progress', ) + search_fields = ['current_token', 'student__email', 'student__id'] + list_filter = ['course', 'status'] + filter_horizontal = ('waiting', ) + actions = [export_xls] + + def get_student_email(self, instance): + return instance.student.email if instance.student else '' + + def get_student_name(self, instance): + return instance.student.get_full_name() if instance.student else '' + + def formfield_for_foreignkey(self, db_field, request=None, **kwargs): + if db_field.name == "teacher": + kwargs["queryset"] = User.objects.filter(in_role='T') + return super(TeacherJAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) + +admin.site.register(TeacherJ, TeacherJAdmin) + + +class LessonJAdmin(admin.ModelAdmin): + list_display = ('student', 'material', 'parent', 'success', 'date', 'f_date',) + list_filter = ['success', 'material__course', 'date', 'f_date'] + raw_id_fields = ['parent', 'student'] + search_fields = ['student__id', 'student__email'] + + def formfield_for_foreignkey(self, db_field, request=None, **kwargs): + if db_field.name == "teacher": + kwargs["queryset"] = User.objects.filter(in_role='T') + return super(LessonJAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) + +admin.site.register(LessonJ, LessonJAdmin) + + +class HomeworkJAdmin(admin.ModelAdmin): + list_display = ('student', 'parent', 'get_courese_title', 'success', 'date', 'f_date', 'teacher', 'get_url', ) + raw_id_fields = ['student', 'parent'] + list_filter = ['material__course', 'success', 'date', 'f_date'] + search_fields = ['student__email', 'student__id'] + actions = [export_hw_journals] + + def get_courese_title(self, instance): + return instance.material.course.get_title() + + def formfield_for_foreignkey(self, db_field, request=None, **kwargs): + if db_field.name == "teacher": + kwargs["queryset"] = User.objects.filter(in_role='T') + return super(HomeworkJAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) + +admin.site.register(HomeworkJ, HomeworkJAdmin) + + +class ExamJAdmin(admin.ModelAdmin): + list_display = ('student', 'date', 'f_date', 'success', 'teacher', 'get_url', ) + list_filter = ['material__course', 'success', 'date', 'f_date'] + search_fields = ['student__email'] + + def formfield_for_foreignkey(self, db_field, request=None, **kwargs): + if db_field.name == "teacher": + kwargs["queryset"] = User.objects.filter(in_role__in=['T']) + return super(ExamJAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) + +admin.site.register(ExamJ, ExamJAdmin) + + +class HomeworkTryAdmin(admin.ModelAdmin): + list_display = ('student', 'get_status_flag', 'material', 'date', 'f_date', 'success', 'expired', 'teacher', 'parent', 'get_url',) + search_fields = ['student__email', 'parent__id', 'student__id'] + list_filter = ('material__course', 'expired', 'date', 'f_date', ) + raw_id_fields = ['student', 'parent'] + filter_horizontal = ['comments'] + + def formfield_for_foreignkey(self, db_field, request=None, **kwargs): + if db_field.name == "teacher": + kwargs["queryset"] = User.objects.filter(in_role__in=['T']) + return super(HomeworkTryAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) + + def get_status_flag(self, instance): + return instance.get_status()['title'] + +admin.site.register(HomeworkTry, HomeworkTryAdmin) + + +class ExamTryAdmin(admin.ModelAdmin): + list_display = ('parent', 'get_status_flag', 'student', 'date', 'f_date', 'success', 'expired', 'teacher') + search_fields = ['student__email', 'parent__id', 'student__id'] + list_filter = ('material__course', 'expired', 'date', 'f_date') + raw_id_fields = ['student', 'parent'] + + def formfield_for_foreignkey(self, db_field, request=None, **kwargs): + if db_field.name == "teacher": + kwargs["queryset"] = User.objects.filter(in_role__in=['T']) + return super(ExamTryAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) + + def get_status_flag(self, instance): + return instance.get_status()['title'] + +admin.site.register(ExamTry, ExamTryAdmin) + + +class CourseThemeJAdmin(admin.ModelAdmin): + list_display = ('id', 'material', 'parent', 'student', 'date', 'f_date', ) + search_fields = ['student__email', 'student__id', 'material__title', 'material__id'] + list_filter = ['material__course', 'success', 'date', 'f_date'] + +admin.site.register(CourseThemeJ, CourseThemeJAdmin) + + +class AchievementJAdmin(admin.ModelAdmin): + list_display = ('title', 'student', 'achievement', 'date', 'got',) + +admin.site.register(AchievementJ, AchievementJAdmin) + + +class DiplomaJAdmin(admin.ModelAdmin): + list_display = ('parent', 'material', 'student', 'date', 'key', 'out_image', 'in_image', 'gen') + search_fields = ('key', 'student__email', 'student__fname', 'student__name', 'student__oname') + list_filter = ['material'] + + +admin.site.register(DiplomaJ, DiplomaJAdmin) + + +class ReportDepthAdmin(admin.ModelAdmin): + list_display = ('token', 'student', 'teacher', 'course', 's_date', 'f_date', 'flag') + + +admin.site.register(ReportDepth, ReportDepthAdmin) diff --git a/journals/api.py b/journals/api.py old mode 100755 new mode 100644 index 78eef8c..ad1cb35 --- a/journals/api.py +++ b/journals/api.py @@ -1,154 +1,154 @@ -# coding=utf-8 -from access.models import User -from lms.decors import api_decor -import simplejson as json -# Процесс добавления журналов через API -# Добавление проходит по -from lms.settings import SECRET_KEY -from courses.models import Course, Lesson, Homework, Exam -from journals.models import TeacherJ, LessonJ, ExamJ, HomeworkJ - - -def new_index(map, model, key, obj): - if str(key) in map[model]: - return obj.objects.get(id=map[model][str(key)]) - return None - - -@api_decor(without_auth=False, need_keys=['id', 'type'], method='POST', check_request=True) -def check_materials_access(request, context): - return context - - -@api_decor(without_auth=True, - need_keys=['student', 'lesson', 'status', 'start_date', 'f_date', 'lesson_old_id', 'student_old_id']) -def open_lj(request, context): - _fixture = json.load(open('../migrate/fixtures/pk_maps.json')) - if request.POST['token'] == SECRET_KEY: - l = new_index(_fixture, 'courses.lesson', request.POST['lesson'], Lesson) if request.POST[ - 'lesson_old_id'] else Lesson.objects.get(id=request.POST['lesson']) - s = new_index(_fixture, 'access.user', request.POST['student'], User) if request.POST[ - 'student_old_id'] else User.objects.get(id=request.POST['student']) - lj = LessonJ.objects.get_or_create(material=l, student=s) - if request.POST['status'] == 'F': - lj.saw_this() - lj.f_date = request.POST['f_date'] - lj.date = request.POST['start_date'] - elif request.POST['status'] == 'A': - lj.open_material() - lj.date = request.POST['start_date'] - elif request.POST['status'] == 'N': - lj.date = None - lj.f_date = None - lj.success = False - lj.save() - return context - - -@api_decor(without_auth=True, - need_keys=['student', 'homework', 'status', 'start_date', 'f_date', 'token', 'comments', 'student_old_id', - 'homework_old_id']) -def set_ht(request, context): - # Добавить попытку и все ее комментарии - _fixture = json.load(open('../migrate/fixtures/pk_maps.json')) - if request.POST['token'] == SECRET_KEY: - t = new_index(_fixture, 'access.user', request.POST['teacher'], User) if request.POST[ - 'teacher_old_id'] else User.objects.get(id=request.POST['teaceher']) - s = new_index(_fixture, 'access.user', request.POST['student'], User) if request.POST[ - 'student_old_id'] else User.objects.get(id=request.POST['student']) - c = new_index(_fixture, 'courses.course', request.POST['course'], Course) if request.POST[ - 'course_old_id'] else Course.objects.get(id=request.POST['course']) - tj = TeacherJ.objects.get_or_create(student=s, course=c) - tj.teacher = t - tj.save() - return context - - -@api_decor(without_auth=True, - need_keys=['token', 'teacher', 'teacher_old_id', 'student', 'student_old_id', 'course', 'course_old_id']) -def set_teacher(request, context): - _fixture = json.load(open('../migrate/fixtures/pk_maps.json')) - if request.POST['token'] == SECRET_KEY: - t = new_index(_fixture, 'access.user', request.POST['teacher'], User) if request.POST[ - 'teacher_old_id'] else User.objects.get(id=request.POST['teaceher']) - s = new_index(_fixture, 'access.user', request.POST['student'], User) if request.POST[ - 'student_old_id'] else User.objects.get(id=request.POST['student']) - c = new_index(_fixture, 'courses.course', request.POST['course'], Course) if request.POST[ - 'course_old_id'] else Course.objects.get(id=request.POST['course']) - tj = TeacherJ.objects.get_or_create(student=s, course=c) - tj.teacher = t - tj.save() - return context - - -@api_decor(without_auth=True, need_keys=['id', 'type'], method='GET', check_request=True) -def check_jaccess(request, context): - if request.user.is_authenticated(): - if request.user.is_admin: - context['code'] = '1' - return context - - context['code'] = '0' - _type = request.GET['type'] - journal = None - if _type == 'lesson': - journal = LessonJ.objects.filter(material=Lesson.objects.get(id=request.GET['id']), student=request.user) - if _type == 'homework': - journal = HomeworkJ.objects.filter(material=Homework.objects.get(id=request.GET['id']), student=request.user) - if _type == 'exam': - journal = ExamJ.objects.filter(material=Exam.objects.get(id=request.GET['id']), student=request.user) - - if journal and journal.exists(): - if request.user in journal[0].material.course.teachers.all(): - context['code'] = '1' - return context - - _before = journal.first().get_before() - if journal.first().get_status_flag() != 'N': - context['code'] = '1' - elif journal.first().get_status_flag() == 'N': - if _before['journal'].get_status_flag() == 'F': - journal.first().open_material() - - return context - - -@api_decor(without_auth=False, need_keys=['id'], method='GET', check_request=True) -def check_exists_jhomework(request, context): - try: - HomeworkJ.objects.get(id=request.GET['id'], f_date=None) - except HomeworkJ.DoesNotExist: - context['code'] = '0' - else: - context['code'] = '1' - return context - - -@api_decor(without_auth=False, need_keys=['id'], method='GET', check_request=True) -def check_exists_jexam(request, context): - try: - ExamJ.objects.get(id=request.GET['id'], f_date=None) - except ExamJ.DoesNotExist: - context['code'] = '0' - else: - context['code'] = '1' - return context - - -@api_decor(without_auth=True, need_keys=['id', 'type'], method='GET', check_request=True) -def check_block(request, context): - if request.user.is_authenticated(): - context['code'] = '0' - _type = request.GET['type'] - journal = None - if _type == 'lesson': - journal = LessonJ.objects.filter(material=Lesson.objects.get(id=request.GET['id']), student=request.user) - if _type == 'homework': - journal = HomeworkJ.objects.filter(material=Homework.objects.get(id=request.GET['id']), student=request.user) - if _type == 'exam': - journal = ExamJ.objects.filter(material=Exam.objects.get(id=request.GET['id']), student=request.user) - - if journal and journal.exists(): - context['code'] = '0' if journal.first().material.theme.empty else '1' - - return context +# coding=utf-8 +from access.models import User +from lms.decors import api_decor +import simplejson as json +# Процесс добавления журналов через API +# Добавление проходит по +from lms.settings import SECRET_KEY +from courses.models import Course, Lesson, Homework, Exam +from journals.models import TeacherJ, LessonJ, ExamJ, HomeworkJ + + +def new_index(map, model, key, obj): + if str(key) in map[model]: + return obj.objects.get(id=map[model][str(key)]) + return None + + +@api_decor(without_auth=False, need_keys=['id', 'type'], method='POST', check_request=True) +def check_materials_access(request, context): + return context + + +@api_decor(without_auth=True, + need_keys=['student', 'lesson', 'status', 'start_date', 'f_date', 'lesson_old_id', 'student_old_id']) +def open_lj(request, context): + _fixture = json.load(open('../migrate/fixtures/pk_maps.json')) + if request.POST['token'] == SECRET_KEY: + l = new_index(_fixture, 'courses.lesson', request.POST['lesson'], Lesson) if request.POST[ + 'lesson_old_id'] else Lesson.objects.get(id=request.POST['lesson']) + s = new_index(_fixture, 'access.user', request.POST['student'], User) if request.POST[ + 'student_old_id'] else User.objects.get(id=request.POST['student']) + lj = LessonJ.objects.get_or_create(material=l, student=s) + if request.POST['status'] == 'F': + lj.saw_this() + lj.f_date = request.POST['f_date'] + lj.date = request.POST['start_date'] + elif request.POST['status'] == 'A': + lj.open_material() + lj.date = request.POST['start_date'] + elif request.POST['status'] == 'N': + lj.date = None + lj.f_date = None + lj.success = False + lj.save() + return context + + +@api_decor(without_auth=True, + need_keys=['student', 'homework', 'status', 'start_date', 'f_date', 'token', 'comments', 'student_old_id', + 'homework_old_id']) +def set_ht(request, context): + # Добавить попытку и все ее комментарии + _fixture = json.load(open('../migrate/fixtures/pk_maps.json')) + if request.POST['token'] == SECRET_KEY: + t = new_index(_fixture, 'access.user', request.POST['teacher'], User) if request.POST[ + 'teacher_old_id'] else User.objects.get(id=request.POST['teaceher']) + s = new_index(_fixture, 'access.user', request.POST['student'], User) if request.POST[ + 'student_old_id'] else User.objects.get(id=request.POST['student']) + c = new_index(_fixture, 'courses.course', request.POST['course'], Course) if request.POST[ + 'course_old_id'] else Course.objects.get(id=request.POST['course']) + tj = TeacherJ.objects.get_or_create(student=s, course=c) + tj.teacher = t + tj.save() + return context + + +@api_decor(without_auth=True, + need_keys=['token', 'teacher', 'teacher_old_id', 'student', 'student_old_id', 'course', 'course_old_id']) +def set_teacher(request, context): + _fixture = json.load(open('../migrate/fixtures/pk_maps.json')) + if request.POST['token'] == SECRET_KEY: + t = new_index(_fixture, 'access.user', request.POST['teacher'], User) if request.POST[ + 'teacher_old_id'] else User.objects.get(id=request.POST['teaceher']) + s = new_index(_fixture, 'access.user', request.POST['student'], User) if request.POST[ + 'student_old_id'] else User.objects.get(id=request.POST['student']) + c = new_index(_fixture, 'courses.course', request.POST['course'], Course) if request.POST[ + 'course_old_id'] else Course.objects.get(id=request.POST['course']) + tj = TeacherJ.objects.get_or_create(student=s, course=c) + tj.teacher = t + tj.save() + return context + + +@api_decor(without_auth=True, need_keys=['id', 'type'], method='GET', check_request=True) +def check_jaccess(request, context): + if request.user.is_authenticated(): + if request.user.is_admin: + context['code'] = '1' + return context + + context['code'] = '0' + _type = request.GET['type'] + journal = None + if _type == 'lesson': + journal = LessonJ.objects.filter(material=Lesson.objects.get(id=request.GET['id']), student=request.user) + if _type == 'homework': + journal = HomeworkJ.objects.filter(material=Homework.objects.get(id=request.GET['id']), student=request.user) + if _type == 'exam': + journal = ExamJ.objects.filter(material=Exam.objects.get(id=request.GET['id']), student=request.user) + + if journal and journal.exists(): + if request.user in journal[0].material.course.teachers.all(): + context['code'] = '1' + return context + + _before = journal.first().get_before() + if journal.first().get_status_flag() != 'N': + context['code'] = '1' + elif journal.first().get_status_flag() == 'N': + if _before['journal'].get_status_flag() == 'F': + journal.first().open_material() + + return context + + +@api_decor(without_auth=False, need_keys=['id'], method='GET', check_request=True) +def check_exists_jhomework(request, context): + try: + HomeworkJ.objects.get(id=request.GET['id'], f_date=None) + except HomeworkJ.DoesNotExist: + context['code'] = '0' + else: + context['code'] = '1' + return context + + +@api_decor(without_auth=False, need_keys=['id'], method='GET', check_request=True) +def check_exists_jexam(request, context): + try: + ExamJ.objects.get(id=request.GET['id'], f_date=None) + except ExamJ.DoesNotExist: + context['code'] = '0' + else: + context['code'] = '1' + return context + + +@api_decor(without_auth=True, need_keys=['id', 'type'], method='GET', check_request=True) +def check_block(request, context): + if request.user.is_authenticated(): + context['code'] = '0' + _type = request.GET['type'] + journal = None + if _type == 'lesson': + journal = LessonJ.objects.filter(material=Lesson.objects.get(id=request.GET['id']), student=request.user) + if _type == 'homework': + journal = HomeworkJ.objects.filter(material=Homework.objects.get(id=request.GET['id']), student=request.user) + if _type == 'exam': + journal = ExamJ.objects.filter(material=Exam.objects.get(id=request.GET['id']), student=request.user) + + if journal and journal.exists(): + context['code'] = '0' if journal.first().material.theme.empty else '1' + + return context diff --git a/journals/migrations/0001_initial.py b/journals/migrations/0001_initial.py old mode 100755 new mode 100644 index 9333006..9e5647b --- a/journals/migrations/0001_initial.py +++ b/journals/migrations/0001_initial.py @@ -1,191 +1,191 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-18 16:46 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('management', '0001_initial'), - ('storage', '0001_initial'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('courses', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='AchievementJ', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('group', models.CharField(default='', max_length=100, verbose_name='\u0420\u0430\u0437\u0434\u0435\u043b')), - ('title', models.CharField(max_length=255, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a')), - ('text', models.TextField(blank=True, verbose_name='\u0422\u0435\u043a\u0441\u0442 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f')), - ('got', models.BooleanField(default=False, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043e')), - ('date', models.DateField(default=datetime.date.today, verbose_name='\u0414\u0430\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f')), - ('achievement', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Achievements', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u043e\u0441\u0442\u0438\u0436\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')), - ], - options={ - 'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0439', - 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b\u044b \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0439', - }, - ), - migrations.CreateModel( - name='CourseThemeJ', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('success', models.BooleanField(default=False, verbose_name='\u0417\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043e')), - ('date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430')), - ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f')), - ('actual_lesson', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Lesson', verbose_name='\u0410\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b \u0443\u0440\u043e\u043a \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u044b')), - ('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.CourseTheme', verbose_name='\u0422\u0435\u043c\u0430')), - ], - options={ - 'ordering': ['id'], - 'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u0442\u0435\u043c\u044b', - 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b \u0442\u0435\u043c\u044b', - }, - ), - migrations.CreateModel( - name='ExamJ', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('success', models.BooleanField(default=False, verbose_name='\u041f\u0440\u043e\u0439\u0434\u0435\u043d\u043e')), - ('date', models.DateTimeField(null=True, verbose_name='\u0414\u0430\u0442\u0430')), - ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f')), - ('diploma', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='storage.Storage', verbose_name='\u0414\u0438\u043f\u043b\u043e\u043c')), - ('material', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Exam', verbose_name='\u042d\u043a\u0437\u0430\u043c\u0435\u043d')), - ('parent', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='journals.CourseThemeJ', verbose_name='\u0416\u0443\u0440\u043d\u0430\u043b')), - ('student', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='e_student', to=settings.AUTH_USER_MODEL, verbose_name='\u042d\u043a\u0437\u0430\u043c\u0435\u043d\u0443\u0435\u043c\u044b\u0439')), - ('teacher', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='e_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u042d\u043a\u0437\u0430\u043c\u0435\u043d\u0430\u0442\u043e\u0440')), - ], - options={ - 'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u044d\u043a\u0437\u0430\u043c\u0435\u043d\u0430', - 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b\u044b \u044d\u043a\u0437\u0430\u043c\u0435\u043d\u043e\u0432', - }, - ), - migrations.CreateModel( - name='ExamTry', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u041d\u0430\u0447\u0430\u043b\u043e')), - ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435')), - ('success', models.BooleanField(default=False, verbose_name='\u0423\u0441\u043f\u0435\u0448\u043d\u043e')), - ('expired', models.BooleanField(default=False, verbose_name='\u041f\u0440\u043e\u0441\u0440\u043e\u0447\u0435\u043d\u043e')), - ('comments', models.ManyToManyField(blank=True, editable=False, to='management.Comment', verbose_name='\u041e\u0431\u0449\u0435\u043d\u0438\u0435')), - ('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Exam', verbose_name='\u042d\u043a\u0437\u0430\u043c\u0435\u043d')), - ('parent', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='journals.ExamJ', verbose_name='\u0416\u0443\u0440\u043d\u0430\u043b')), - ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='e_t_student', to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), - ('teacher', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='e_t_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c')), - ], - options={ - 'verbose_name': '\u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u0434\u0430\u0447\u0438 \u042d\u043a\u0437\u0430\u043c\u0435\u043d\u0430', - 'verbose_name_plural': '\u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u0441\u0434\u0430\u0447\u0438 \u042d\u043a\u0437\u0430\u043c\u0435\u043d\u043e\u0432', - }, - ), - migrations.CreateModel( - name='HomeworkJ', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('success', models.BooleanField(default=False, verbose_name='\u0417\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043e')), - ('date', models.DateTimeField(null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430')), - ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f')), - ('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Homework', verbose_name='\u0414\u043e\u043c\u0430\u0448\u043d\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435')), - ('parent', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='journals.CourseThemeJ', verbose_name='\u0416\u0443\u0440\u043d\u0430\u043b \u0442\u0435\u043c\u044b')), - ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='h_student', to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), - ('teacher', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='h_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u042d\u043a\u0437\u0430\u043c\u0435\u043d\u0430\u0442\u043e\u0440')), - ], - options={ - 'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b', - 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b\u044b \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u0440\u0430\u0431\u043e\u0442', - }, - ), - migrations.CreateModel( - name='HomeworkTry', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u041d\u0430\u0447\u0430\u043b\u043e')), - ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435')), - ('success', models.BooleanField(default=False, verbose_name='\u041e\u0434\u043e\u0431\u0440\u0435\u043d\u043e')), - ('expired', models.BooleanField(default=False, verbose_name='\u041f\u0440\u043e\u0441\u0440\u043e\u0447\u0435\u043d\u043e')), - ('comments', models.ManyToManyField(blank=True, editable=False, to='management.Comment', verbose_name='\u041e\u0431\u0449\u0435\u043d\u0438\u0435')), - ('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Homework', verbose_name='\u0414\u043e\u043c\u0430\u0448\u043d\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435')), - ('parent', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='journals.HomeworkJ', verbose_name='\u0416\u0443\u0440\u043d\u0430\u043b')), - ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='h_t_student', to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), - ('teacher', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='h_t_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c')), - ], - options={ - 'ordering': ['id'], - 'verbose_name': '\u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u0434\u0430\u0447\u0438 \u0414\u0417', - 'verbose_name_plural': '\u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u0441\u0434\u0430\u0447\u0438 \u0414\u0417', - }, - ), - migrations.CreateModel( - name='JournalsReports', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('s_date', models.DateField(verbose_name='\u041e\u0442')), - ('f_date', models.DateField(blank=True, null=True, verbose_name='\u0414\u043e')), - ('sent', models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d')), - ('course', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), - ('student', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='report_student', to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), - ('teacher', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='report_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c')), - ('to', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='report_to', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c')), - ], - options={ - 'verbose_name': '\u041e\u0442\u0447\u0435\u0442 \u043f\u043e \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044e', - 'verbose_name_plural': '\u041e\u0442\u0447\u0435\u0442\u044b \u043f\u043e \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f\u043c', - }, - ), - migrations.CreateModel( - name='LessonJ', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('success', models.BooleanField(default=False, verbose_name='\u041f\u0440\u043e\u0439\u0434\u0435\u043d\u043e')), - ('date', models.DateTimeField(null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430')), - ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u043d\u0435\u0448\u0438\u044f')), - ('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Lesson', verbose_name='\u0423\u0440\u043e\u043a')), - ('parent', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='journals.CourseThemeJ', verbose_name='\u0416\u0443\u0440\u043d\u0430\u043b \u0442\u0435\u043c\u044b')), - ('student', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), - ], - options={ - 'ordering': ['material__sort'], - 'verbose_name': '\u0416\u0443\u0440\u0430\u043d\u043b \u0443\u0440\u043e\u043a\u0430', - 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b\u044b \u0443\u0440\u043e\u043a\u043e\u0432', - }, - ), - migrations.CreateModel( - name='TeacherJ', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('full', models.BooleanField(default=False, verbose_name='\u0416\u0443\u0440\u043d\u0430\u043b \u0441\u043e\u0437\u0434\u0430\u043d')), - ('progress', models.IntegerField(default=0, verbose_name='\u041f\u0440\u043e\u0433\u0440\u0435\u0441\u0441')), - ('current_token', models.CharField(blank=True, default='', max_length=100, verbose_name='\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043a\u043b\u044e\u0447')), - ('start_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430')), - ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), - ('student', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teacherJ_student', to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), - ('teacher', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teacherJ_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c')), - ], - options={ - 'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u043d\u0438\u044f', - 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b\u044b \u043f\u0440\u043e\u043f\u043e\u0434\u0430\u0432\u0430\u043d\u0438\u044f', - }, - ), - migrations.AddField( - model_name='coursethemej', - name='parent', - field=models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='journals.TeacherJ', verbose_name='\u0416\u0443\u0440\u043d\u0430\u043b \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u043d\u0438\u044f'), - ), - migrations.AddField( - model_name='coursethemej', - name='student', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-18 16:46 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('management', '0001_initial'), + ('storage', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('courses', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='AchievementJ', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('group', models.CharField(default='', max_length=100, verbose_name='\u0420\u0430\u0437\u0434\u0435\u043b')), + ('title', models.CharField(max_length=255, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a')), + ('text', models.TextField(blank=True, verbose_name='\u0422\u0435\u043a\u0441\u0442 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f')), + ('got', models.BooleanField(default=False, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043e')), + ('date', models.DateField(default=datetime.date.today, verbose_name='\u0414\u0430\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f')), + ('achievement', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Achievements', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u043e\u0441\u0442\u0438\u0436\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')), + ], + options={ + 'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0439', + 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b\u044b \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0439', + }, + ), + migrations.CreateModel( + name='CourseThemeJ', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('success', models.BooleanField(default=False, verbose_name='\u0417\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043e')), + ('date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430')), + ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f')), + ('actual_lesson', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Lesson', verbose_name='\u0410\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b \u0443\u0440\u043e\u043a \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u044b')), + ('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.CourseTheme', verbose_name='\u0422\u0435\u043c\u0430')), + ], + options={ + 'ordering': ['id'], + 'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u0442\u0435\u043c\u044b', + 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b \u0442\u0435\u043c\u044b', + }, + ), + migrations.CreateModel( + name='ExamJ', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('success', models.BooleanField(default=False, verbose_name='\u041f\u0440\u043e\u0439\u0434\u0435\u043d\u043e')), + ('date', models.DateTimeField(null=True, verbose_name='\u0414\u0430\u0442\u0430')), + ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f')), + ('diploma', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='storage.Storage', verbose_name='\u0414\u0438\u043f\u043b\u043e\u043c')), + ('material', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Exam', verbose_name='\u042d\u043a\u0437\u0430\u043c\u0435\u043d')), + ('parent', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='journals.CourseThemeJ', verbose_name='\u0416\u0443\u0440\u043d\u0430\u043b')), + ('student', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='e_student', to=settings.AUTH_USER_MODEL, verbose_name='\u042d\u043a\u0437\u0430\u043c\u0435\u043d\u0443\u0435\u043c\u044b\u0439')), + ('teacher', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='e_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u042d\u043a\u0437\u0430\u043c\u0435\u043d\u0430\u0442\u043e\u0440')), + ], + options={ + 'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u044d\u043a\u0437\u0430\u043c\u0435\u043d\u0430', + 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b\u044b \u044d\u043a\u0437\u0430\u043c\u0435\u043d\u043e\u0432', + }, + ), + migrations.CreateModel( + name='ExamTry', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u041d\u0430\u0447\u0430\u043b\u043e')), + ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435')), + ('success', models.BooleanField(default=False, verbose_name='\u0423\u0441\u043f\u0435\u0448\u043d\u043e')), + ('expired', models.BooleanField(default=False, verbose_name='\u041f\u0440\u043e\u0441\u0440\u043e\u0447\u0435\u043d\u043e')), + ('comments', models.ManyToManyField(blank=True, editable=False, to='management.Comment', verbose_name='\u041e\u0431\u0449\u0435\u043d\u0438\u0435')), + ('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Exam', verbose_name='\u042d\u043a\u0437\u0430\u043c\u0435\u043d')), + ('parent', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='journals.ExamJ', verbose_name='\u0416\u0443\u0440\u043d\u0430\u043b')), + ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='e_t_student', to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), + ('teacher', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='e_t_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c')), + ], + options={ + 'verbose_name': '\u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u0434\u0430\u0447\u0438 \u042d\u043a\u0437\u0430\u043c\u0435\u043d\u0430', + 'verbose_name_plural': '\u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u0441\u0434\u0430\u0447\u0438 \u042d\u043a\u0437\u0430\u043c\u0435\u043d\u043e\u0432', + }, + ), + migrations.CreateModel( + name='HomeworkJ', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('success', models.BooleanField(default=False, verbose_name='\u0417\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043e')), + ('date', models.DateTimeField(null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430')), + ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f')), + ('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Homework', verbose_name='\u0414\u043e\u043c\u0430\u0448\u043d\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435')), + ('parent', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='journals.CourseThemeJ', verbose_name='\u0416\u0443\u0440\u043d\u0430\u043b \u0442\u0435\u043c\u044b')), + ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='h_student', to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), + ('teacher', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='h_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u042d\u043a\u0437\u0430\u043c\u0435\u043d\u0430\u0442\u043e\u0440')), + ], + options={ + 'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b', + 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b\u044b \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u0440\u0430\u0431\u043e\u0442', + }, + ), + migrations.CreateModel( + name='HomeworkTry', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u041d\u0430\u0447\u0430\u043b\u043e')), + ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435')), + ('success', models.BooleanField(default=False, verbose_name='\u041e\u0434\u043e\u0431\u0440\u0435\u043d\u043e')), + ('expired', models.BooleanField(default=False, verbose_name='\u041f\u0440\u043e\u0441\u0440\u043e\u0447\u0435\u043d\u043e')), + ('comments', models.ManyToManyField(blank=True, editable=False, to='management.Comment', verbose_name='\u041e\u0431\u0449\u0435\u043d\u0438\u0435')), + ('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Homework', verbose_name='\u0414\u043e\u043c\u0430\u0448\u043d\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435')), + ('parent', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='journals.HomeworkJ', verbose_name='\u0416\u0443\u0440\u043d\u0430\u043b')), + ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='h_t_student', to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), + ('teacher', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='h_t_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c')), + ], + options={ + 'ordering': ['id'], + 'verbose_name': '\u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u0434\u0430\u0447\u0438 \u0414\u0417', + 'verbose_name_plural': '\u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u0441\u0434\u0430\u0447\u0438 \u0414\u0417', + }, + ), + migrations.CreateModel( + name='JournalsReports', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('s_date', models.DateField(verbose_name='\u041e\u0442')), + ('f_date', models.DateField(blank=True, null=True, verbose_name='\u0414\u043e')), + ('sent', models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d')), + ('course', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), + ('student', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='report_student', to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), + ('teacher', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='report_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c')), + ('to', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='report_to', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c')), + ], + options={ + 'verbose_name': '\u041e\u0442\u0447\u0435\u0442 \u043f\u043e \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044e', + 'verbose_name_plural': '\u041e\u0442\u0447\u0435\u0442\u044b \u043f\u043e \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f\u043c', + }, + ), + migrations.CreateModel( + name='LessonJ', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('success', models.BooleanField(default=False, verbose_name='\u041f\u0440\u043e\u0439\u0434\u0435\u043d\u043e')), + ('date', models.DateTimeField(null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430')), + ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u043d\u0435\u0448\u0438\u044f')), + ('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Lesson', verbose_name='\u0423\u0440\u043e\u043a')), + ('parent', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='journals.CourseThemeJ', verbose_name='\u0416\u0443\u0440\u043d\u0430\u043b \u0442\u0435\u043c\u044b')), + ('student', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), + ], + options={ + 'ordering': ['material__sort'], + 'verbose_name': '\u0416\u0443\u0440\u0430\u043d\u043b \u0443\u0440\u043e\u043a\u0430', + 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b\u044b \u0443\u0440\u043e\u043a\u043e\u0432', + }, + ), + migrations.CreateModel( + name='TeacherJ', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('full', models.BooleanField(default=False, verbose_name='\u0416\u0443\u0440\u043d\u0430\u043b \u0441\u043e\u0437\u0434\u0430\u043d')), + ('progress', models.IntegerField(default=0, verbose_name='\u041f\u0440\u043e\u0433\u0440\u0435\u0441\u0441')), + ('current_token', models.CharField(blank=True, default='', max_length=100, verbose_name='\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043a\u043b\u044e\u0447')), + ('start_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430')), + ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), + ('student', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teacherJ_student', to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), + ('teacher', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teacherJ_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c')), + ], + options={ + 'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u043d\u0438\u044f', + 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b\u044b \u043f\u0440\u043e\u043f\u043e\u0434\u0430\u0432\u0430\u043d\u0438\u044f', + }, + ), + migrations.AddField( + model_name='coursethemej', + name='parent', + field=models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='journals.TeacherJ', verbose_name='\u0416\u0443\u0440\u043d\u0430\u043b \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u043d\u0438\u044f'), + ), + migrations.AddField( + model_name='coursethemej', + name='student', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442'), + ), + ] diff --git a/journals/migrations/0002_auto_20160318_1909.py b/journals/migrations/0002_auto_20160318_1909.py old mode 100755 new mode 100644 index 22eb994..6ba0fde --- a/journals/migrations/0002_auto_20160318_1909.py +++ b/journals/migrations/0002_auto_20160318_1909.py @@ -1,22 +1,22 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-18 19:09 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='homeworkj', - name='student', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='h_student', to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-18 19:09 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='homeworkj', + name='student', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='h_student', to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442'), + ), + ] diff --git a/journals/migrations/0003_auto_20160322_1359.py b/journals/migrations/0003_auto_20160322_1359.py old mode 100755 new mode 100644 index 2d80d7e..b96bf17 --- a/journals/migrations/0003_auto_20160322_1359.py +++ b/journals/migrations/0003_auto_20160322_1359.py @@ -1,35 +1,35 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-22 13:59 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0002_auto_20160318_1909'), - ] - - operations = [ - migrations.AddField( - model_name='coursethemej', - name='set_open', - field=models.BooleanField(default=False, verbose_name='\u041d\u0430\u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f'), - ), - migrations.AddField( - model_name='examj', - name='set_open', - field=models.BooleanField(default=False, verbose_name='\u041d\u0430\u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f'), - ), - migrations.AddField( - model_name='homeworkj', - name='set_open', - field=models.BooleanField(default=False, verbose_name='\u041d\u0430\u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f'), - ), - migrations.AddField( - model_name='lessonj', - name='set_open', - field=models.BooleanField(default=False, verbose_name='\u041d\u0430\u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-22 13:59 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0002_auto_20160318_1909'), + ] + + operations = [ + migrations.AddField( + model_name='coursethemej', + name='set_open', + field=models.BooleanField(default=False, verbose_name='\u041d\u0430\u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f'), + ), + migrations.AddField( + model_name='examj', + name='set_open', + field=models.BooleanField(default=False, verbose_name='\u041d\u0430\u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f'), + ), + migrations.AddField( + model_name='homeworkj', + name='set_open', + field=models.BooleanField(default=False, verbose_name='\u041d\u0430\u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f'), + ), + migrations.AddField( + model_name='lessonj', + name='set_open', + field=models.BooleanField(default=False, verbose_name='\u041d\u0430\u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f'), + ), + ] diff --git a/journals/migrations/0004_teacherj_opens.py b/journals/migrations/0004_teacherj_opens.py old mode 100755 new mode 100644 index 067b07b..9d49bf3 --- a/journals/migrations/0004_teacherj_opens.py +++ b/journals/migrations/0004_teacherj_opens.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-22 18:52 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0003_auto_20160322_1852'), - ('journals', '0003_auto_20160322_1359'), - ] - - operations = [ - migrations.AddField( - model_name='teacherj', - name='opens', - field=models.ManyToManyField(blank=True, to='courses.CourseMap', verbose_name='\u041d\u0430\u0441\u0438\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-22 18:52 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0003_auto_20160322_1852'), + ('journals', '0003_auto_20160322_1359'), + ] + + operations = [ + migrations.AddField( + model_name='teacherj', + name='opens', + field=models.ManyToManyField(blank=True, to='courses.CourseMap', verbose_name='\u041d\u0430\u0441\u0438\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f'), + ), + ] diff --git a/journals/migrations/0005_auto_20160329_1930.py b/journals/migrations/0005_auto_20160329_1930.py old mode 100755 new mode 100644 index 1383bcc..487df94 --- a/journals/migrations/0005_auto_20160329_1930.py +++ b/journals/migrations/0005_auto_20160329_1930.py @@ -1,31 +1,31 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-29 19:30 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0004_teacherj_opens'), - ] - - operations = [ - migrations.AlterModelOptions( - name='homeworktry', - options={'ordering': ['date'], 'verbose_name': '\u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u0434\u0430\u0447\u0438 \u0414\u0417', 'verbose_name_plural': '\u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u0441\u0434\u0430\u0447\u0438 \u0414\u0417'}, - ), - migrations.AlterField( - model_name='homeworkj', - name='teacher', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='h_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u042d\u043a\u0437\u0430\u043c\u0435\u043d\u0430\u0442\u043e\u0440'), - ), - migrations.AlterField( - model_name='teacherj', - name='opens', - field=models.ManyToManyField(blank=True, editable=False, to='courses.CourseMap', verbose_name='\u041d\u0430\u0441\u0438\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-29 19:30 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0004_teacherj_opens'), + ] + + operations = [ + migrations.AlterModelOptions( + name='homeworktry', + options={'ordering': ['date'], 'verbose_name': '\u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u0434\u0430\u0447\u0438 \u0414\u0417', 'verbose_name_plural': '\u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u0441\u0434\u0430\u0447\u0438 \u0414\u0417'}, + ), + migrations.AlterField( + model_name='homeworkj', + name='teacher', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='h_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u042d\u043a\u0437\u0430\u043c\u0435\u043d\u0430\u0442\u043e\u0440'), + ), + migrations.AlterField( + model_name='teacherj', + name='opens', + field=models.ManyToManyField(blank=True, editable=False, to='courses.CourseMap', verbose_name='\u041d\u0430\u0441\u0438\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f'), + ), + ] diff --git a/journals/migrations/0006_auto_20160331_2030.py b/journals/migrations/0006_auto_20160331_2030.py old mode 100755 new mode 100644 index 52ab724..b115b3a --- a/journals/migrations/0006_auto_20160331_2030.py +++ b/journals/migrations/0006_auto_20160331_2030.py @@ -1,42 +1,42 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-31 20:30 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0005_auto_20160329_1930'), - ] - - operations = [ - migrations.AlterField( - model_name='examj', - name='teacher', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='e_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u042d\u043a\u0437\u0430\u043c\u0435\u043d\u0430\u0442\u043e\u0440'), - ), - migrations.AlterField( - model_name='examtry', - name='teacher', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='e_t_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c'), - ), - migrations.AlterField( - model_name='homeworktry', - name='teacher', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='h_t_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c'), - ), - migrations.AlterField( - model_name='lessonj', - name='date', - field=models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430'), - ), - migrations.AlterField( - model_name='teacherj', - name='teacher', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teacherJ_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-31 20:30 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0005_auto_20160329_1930'), + ] + + operations = [ + migrations.AlterField( + model_name='examj', + name='teacher', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='e_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u042d\u043a\u0437\u0430\u043c\u0435\u043d\u0430\u0442\u043e\u0440'), + ), + migrations.AlterField( + model_name='examtry', + name='teacher', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='e_t_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c'), + ), + migrations.AlterField( + model_name='homeworktry', + name='teacher', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='h_t_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c'), + ), + migrations.AlterField( + model_name='lessonj', + name='date', + field=models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430'), + ), + migrations.AlterField( + model_name='teacherj', + name='teacher', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teacherJ_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c'), + ), + ] diff --git a/journals/migrations/0007_auto_20160405_2045.py b/journals/migrations/0007_auto_20160405_2045.py old mode 100755 new mode 100644 index 156c17a..d683b1e --- a/journals/migrations/0007_auto_20160405_2045.py +++ b/journals/migrations/0007_auto_20160405_2045.py @@ -1,31 +1,31 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-05 20:45 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0006_auto_20160331_2030'), - ] - - operations = [ - migrations.AddField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 5, 20, 45, 37, 558604), verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='journalsreports', - name='f_date', - field=models.DateField(blank=True, help_text='\u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f', null=True, verbose_name='\u0414\u043e'), - ), - migrations.AlterField( - model_name='journalsreports', - name='s_date', - field=models.DateField(help_text='\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e', verbose_name='\u041e\u0442'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-04-05 20:45 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0006_auto_20160331_2030'), + ] + + operations = [ + migrations.AddField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 5, 20, 45, 37, 558604), verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='journalsreports', + name='f_date', + field=models.DateField(blank=True, help_text='\u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f', null=True, verbose_name='\u0414\u043e'), + ), + migrations.AlterField( + model_name='journalsreports', + name='s_date', + field=models.DateField(help_text='\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e', verbose_name='\u041e\u0442'), + ), + ] diff --git a/journals/migrations/0008_auto_20160407_1741.py b/journals/migrations/0008_auto_20160407_1741.py old mode 100755 new mode 100644 index 14db21f..3ffe2a7 --- a/journals/migrations/0008_auto_20160407_1741.py +++ b/journals/migrations/0008_auto_20160407_1741.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-07 17:41 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0007_auto_20160405_2045'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 7, 17, 41, 52, 720478), verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-04-07 17:41 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0007_auto_20160405_2045'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 7, 17, 41, 52, 720478), verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0009_auto_20160407_2006.py b/journals/migrations/0009_auto_20160407_2006.py old mode 100755 new mode 100644 index 6de423f..6b58eec --- a/journals/migrations/0009_auto_20160407_2006.py +++ b/journals/migrations/0009_auto_20160407_2006.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-07 20:06 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0008_auto_20160407_1741'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 7, 20, 6, 28, 211597), verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-04-07 20:06 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0008_auto_20160407_1741'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 7, 20, 6, 28, 211597), verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0010_auto_20160413_0207.py b/journals/migrations/0010_auto_20160413_0207.py old mode 100755 new mode 100644 index de1256f..8891416 --- a/journals/migrations/0010_auto_20160413_0207.py +++ b/journals/migrations/0010_auto_20160413_0207.py @@ -1,43 +1,43 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-13 02:07 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('courses', '0006_auto_20160407_2006'), - ('journals', '0009_auto_20160407_2006'), - ] - - operations = [ - migrations.CreateModel( - name='ProgressReports', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('s_date', models.DateField(help_text='\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e', verbose_name='\u041e\u0442')), - ('f_date', models.DateField(blank=True, help_text='\u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f', null=True, verbose_name='\u0414\u043e')), - ('sent', models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d')), - ('date', models.DateTimeField(default=datetime.datetime(2016, 4, 13, 2, 7, 43, 239373), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430')), - ('course', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), - ('student', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='progress_student', to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), - ('teacher', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='progress_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c')), - ('to', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='progress_to', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c')), - ], - options={ - 'verbose_name': '\u041e\u0442\u0447\u0435\u0442 \u043f\u043e \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044e', - 'verbose_name_plural': '\u041e\u0442\u0447\u0435\u0442\u044b \u043f\u043e \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f\u043c', - }, - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 13, 2, 7, 43, 238580), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-13 02:07 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('courses', '0006_auto_20160407_2006'), + ('journals', '0009_auto_20160407_2006'), + ] + + operations = [ + migrations.CreateModel( + name='ProgressReports', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('s_date', models.DateField(help_text='\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e', verbose_name='\u041e\u0442')), + ('f_date', models.DateField(blank=True, help_text='\u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f', null=True, verbose_name='\u0414\u043e')), + ('sent', models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d')), + ('date', models.DateTimeField(default=datetime.datetime(2016, 4, 13, 2, 7, 43, 239373), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430')), + ('course', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), + ('student', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='progress_student', to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), + ('teacher', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='progress_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c')), + ('to', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='progress_to', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c')), + ], + options={ + 'verbose_name': '\u041e\u0442\u0447\u0435\u0442 \u043f\u043e \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044e', + 'verbose_name_plural': '\u041e\u0442\u0447\u0435\u0442\u044b \u043f\u043e \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f\u043c', + }, + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 13, 2, 7, 43, 238580), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0011_auto_20160413_0214.py b/journals/migrations/0011_auto_20160413_0214.py old mode 100755 new mode 100644 index 9a46d7e..1c2d659 --- a/journals/migrations/0011_auto_20160413_0214.py +++ b/journals/migrations/0011_auto_20160413_0214.py @@ -1,37 +1,37 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-13 02:14 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0010_auto_20160413_0207'), - ] - - operations = [ - migrations.AlterModelOptions( - name='progressreports', - options={'verbose_name': '\u041e\u0442\u0447\u0435\u0442 \u043f\u043e \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f\u043c', 'verbose_name_plural': '\u041e\u0442\u0447\u0435\u0442\u044b \u043f\u043e \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f\u043c'}, - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 13, 2, 14, 4, 433421), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 13, 2, 14, 4, 434170), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='to', - field=models.ForeignKey(blank=True, help_text='\u0415\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430: \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u0440\u0443\u0436\u0435\u043d \u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u0436\u0438\u0440\u043d\u044b\u0439 \u043e\u0442\u0447\u0435\u0442 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0438 \u0432\u0441\u044f', on_delete=django.db.models.deletion.CASCADE, related_name='progress_to', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-13 02:14 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0010_auto_20160413_0207'), + ] + + operations = [ + migrations.AlterModelOptions( + name='progressreports', + options={'verbose_name': '\u041e\u0442\u0447\u0435\u0442 \u043f\u043e \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f\u043c', 'verbose_name_plural': '\u041e\u0442\u0447\u0435\u0442\u044b \u043f\u043e \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f\u043c'}, + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 13, 2, 14, 4, 433421), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 13, 2, 14, 4, 434170), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='to', + field=models.ForeignKey(blank=True, help_text='\u0415\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430: \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u0440\u0443\u0436\u0435\u043d \u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u0436\u0438\u0440\u043d\u044b\u0439 \u043e\u0442\u0447\u0435\u0442 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0438 \u0432\u0441\u044f', on_delete=django.db.models.deletion.CASCADE, related_name='progress_to', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c'), + ), + ] diff --git a/journals/migrations/0012_auto_20160413_0215.py b/journals/migrations/0012_auto_20160413_0215.py old mode 100755 new mode 100644 index c6c0856..f8fc90e --- a/journals/migrations/0012_auto_20160413_0215.py +++ b/journals/migrations/0012_auto_20160413_0215.py @@ -1,38 +1,38 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-13 02:15 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0011_auto_20160413_0214'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 13, 2, 15, 7, 903719), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 13, 2, 15, 7, 905393), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='s_date', - field=models.DateField(blank=True, help_text='\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430: \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u0440\u0443\u0436\u0435\u043d \u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u0436\u0438\u0440\u043d\u044b\u0439 \u043e\u0442\u0447\u0435\u0442 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0438 \u0432\u0441\u044f', verbose_name='\u041e\u0442'), - ), - migrations.AlterField( - model_name='progressreports', - name='to', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='progress_to', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-13 02:15 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0011_auto_20160413_0214'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 13, 2, 15, 7, 903719), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 13, 2, 15, 7, 905393), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='s_date', + field=models.DateField(blank=True, help_text='\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430: \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u0440\u0443\u0436\u0435\u043d \u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u0436\u0438\u0440\u043d\u044b\u0439 \u043e\u0442\u0447\u0435\u0442 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0438 \u0432\u0441\u044f', verbose_name='\u041e\u0442'), + ), + migrations.AlterField( + model_name='progressreports', + name='to', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='progress_to', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c'), + ), + ] diff --git a/journals/migrations/0013_auto_20160414_1652.py b/journals/migrations/0013_auto_20160414_1652.py old mode 100755 new mode 100644 index 6e3ee2b..0819cdf --- a/journals/migrations/0013_auto_20160414_1652.py +++ b/journals/migrations/0013_auto_20160414_1652.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-14 16:52 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0012_auto_20160413_0215'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 14, 16, 52, 14, 316432), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 14, 16, 52, 14, 317184), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-14 16:52 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0012_auto_20160413_0215'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 14, 16, 52, 14, 316432), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 14, 16, 52, 14, 317184), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0014_auto_20160414_1941.py b/journals/migrations/0014_auto_20160414_1941.py old mode 100755 new mode 100644 index e20a0df..ccbd8e2 --- a/journals/migrations/0014_auto_20160414_1941.py +++ b/journals/migrations/0014_auto_20160414_1941.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-14 19:41 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0013_auto_20160414_1652'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 14, 19, 41, 21, 981410), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 14, 19, 41, 21, 982815), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-14 19:41 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0013_auto_20160414_1652'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 14, 19, 41, 21, 981410), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 14, 19, 41, 21, 982815), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0015_auto_20160414_1944.py b/journals/migrations/0015_auto_20160414_1944.py old mode 100755 new mode 100644 index a1b2a53..a8ec4b8 --- a/journals/migrations/0015_auto_20160414_1944.py +++ b/journals/migrations/0015_auto_20160414_1944.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-14 19:44 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0014_auto_20160414_1941'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 14, 19, 44, 42, 230690), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 14, 19, 44, 42, 231405), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-14 19:44 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0014_auto_20160414_1941'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 14, 19, 44, 42, 230690), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 14, 19, 44, 42, 231405), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0016_auto_20160419_1109.py b/journals/migrations/0016_auto_20160419_1109.py old mode 100755 new mode 100644 index 75e5be1..2dd2875 --- a/journals/migrations/0016_auto_20160419_1109.py +++ b/journals/migrations/0016_auto_20160419_1109.py @@ -1,37 +1,37 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-19 11:09 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0007_lesson_video_date'), - ('journals', '0015_auto_20160414_1944'), - ] - - operations = [ - migrations.AddField( - model_name='teacherj', - name='waiting', - field=models.ManyToManyField(blank=True, editable=False, null=True, related_name='map_waiting', to='courses.CourseMap', verbose_name='\u0414\u043e\u043f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f'), - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 19, 11, 9, 36, 483730), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 19, 11, 9, 36, 484535), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='teacherj', - name='opens', - field=models.ManyToManyField(blank=True, editable=False, related_name='map_opens', to='courses.CourseMap', verbose_name='\u041d\u0430\u0441\u0438\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-19 11:09 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0007_lesson_video_date'), + ('journals', '0015_auto_20160414_1944'), + ] + + operations = [ + migrations.AddField( + model_name='teacherj', + name='waiting', + field=models.ManyToManyField(blank=True, editable=False, null=True, related_name='map_waiting', to='courses.CourseMap', verbose_name='\u0414\u043e\u043f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f'), + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 19, 11, 9, 36, 483730), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 19, 11, 9, 36, 484535), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='teacherj', + name='opens', + field=models.ManyToManyField(blank=True, editable=False, related_name='map_opens', to='courses.CourseMap', verbose_name='\u041d\u0430\u0441\u0438\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f'), + ), + ] diff --git a/journals/migrations/0017_auto_20160419_1426.py b/journals/migrations/0017_auto_20160419_1426.py old mode 100755 new mode 100644 index 1b21604..91f6241 --- a/journals/migrations/0017_auto_20160419_1426.py +++ b/journals/migrations/0017_auto_20160419_1426.py @@ -1,31 +1,31 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-19 14:26 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0016_auto_20160419_1109'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 19, 14, 26, 6, 482839), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 19, 14, 26, 6, 483541), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='teacherj', - name='waiting', - field=models.ManyToManyField(blank=True, null=True, related_name='map_waiting', to='courses.CourseMap', verbose_name='\u0414\u043e\u043f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-19 14:26 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0016_auto_20160419_1109'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 19, 14, 26, 6, 482839), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 19, 14, 26, 6, 483541), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='teacherj', + name='waiting', + field=models.ManyToManyField(blank=True, null=True, related_name='map_waiting', to='courses.CourseMap', verbose_name='\u0414\u043e\u043f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f'), + ), + ] diff --git a/journals/migrations/0018_auto_20160420_1749.py b/journals/migrations/0018_auto_20160420_1749.py old mode 100755 new mode 100644 index ef3b96f..47f41ea --- a/journals/migrations/0018_auto_20160420_1749.py +++ b/journals/migrations/0018_auto_20160420_1749.py @@ -1,31 +1,31 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-20 17:49 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0017_auto_20160419_1426'), - ] - - operations = [ - migrations.AddField( - model_name='coursethemej', - 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'), - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 20, 17, 49, 55, 864154), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 20, 17, 49, 55, 864980), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-20 17:49 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0017_auto_20160419_1426'), + ] + + operations = [ + migrations.AddField( + model_name='coursethemej', + 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'), + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 20, 17, 49, 55, 864154), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 20, 17, 49, 55, 864980), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0019_auto_20160420_1819.py b/journals/migrations/0019_auto_20160420_1819.py old mode 100755 new mode 100644 index 779ae8b..92731df --- a/journals/migrations/0019_auto_20160420_1819.py +++ b/journals/migrations/0019_auto_20160420_1819.py @@ -1,30 +1,30 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-20 18:19 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0018_auto_20160420_1749'), - ] - - operations = [ - migrations.RemoveField( - model_name='coursethemej', - name='block', - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 20, 18, 19, 6, 373257), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 20, 18, 19, 6, 374450), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-20 18:19 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0018_auto_20160420_1749'), + ] + + operations = [ + migrations.RemoveField( + model_name='coursethemej', + name='block', + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 20, 18, 19, 6, 373257), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 20, 18, 19, 6, 374450), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0020_auto_20160425_1656.py b/journals/migrations/0020_auto_20160425_1656.py old mode 100755 new mode 100644 index ddc1ab5..20a63f5 --- a/journals/migrations/0020_auto_20160425_1656.py +++ b/journals/migrations/0020_auto_20160425_1656.py @@ -1,46 +1,46 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-25 16:56 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0012_course_diploma_key'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('journals', '0019_auto_20160420_1819'), - ] - - operations = [ - migrations.CreateModel( - name='Diploma', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('key', models.CharField(max_length=255, verbose_name='\u041a\u043b\u044e\u0447')), - ('date', models.DateField(default=datetime.date.today, verbose_name='\u0414\u0430\u0442\u0430 \u0432\u044b\u0434\u0430\u0447\u0438')), - ('out_image', models.ImageField(upload_to=b'', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 c \u043f\u0435\u0447\u0430\u0442\u044c\u044e')), - ('in_image', models.ImageField(upload_to=b'', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 c \u043f\u0435\u0447\u0430\u0442\u044c\u044e')), - ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u043a\u0443\u0440\u0441')), - ('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={ - 'verbose_name': '\u0414\u0438\u043f\u043b\u043e\u043c\u044b', - 'verbose_name_plural': '\u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u0441\u0434\u0430\u0447\u0438 \u042d\u043a\u0437\u0430\u043c\u0435\u043d\u043e\u0432', - }, - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 25, 16, 56, 34, 811002), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 25, 16, 56, 34, 811746), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-25 16:56 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0012_course_diploma_key'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('journals', '0019_auto_20160420_1819'), + ] + + operations = [ + migrations.CreateModel( + name='Diploma', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('key', models.CharField(max_length=255, verbose_name='\u041a\u043b\u044e\u0447')), + ('date', models.DateField(default=datetime.date.today, verbose_name='\u0414\u0430\u0442\u0430 \u0432\u044b\u0434\u0430\u0447\u0438')), + ('out_image', models.ImageField(upload_to=b'', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 c \u043f\u0435\u0447\u0430\u0442\u044c\u044e')), + ('in_image', models.ImageField(upload_to=b'', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 c \u043f\u0435\u0447\u0430\u0442\u044c\u044e')), + ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u043a\u0443\u0440\u0441')), + ('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={ + 'verbose_name': '\u0414\u0438\u043f\u043b\u043e\u043c\u044b', + 'verbose_name_plural': '\u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u0441\u0434\u0430\u0447\u0438 \u042d\u043a\u0437\u0430\u043c\u0435\u043d\u043e\u0432', + }, + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 25, 16, 56, 34, 811002), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 25, 16, 56, 34, 811746), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0021_auto_20160425_1737.py b/journals/migrations/0021_auto_20160425_1737.py old mode 100755 new mode 100644 index 846acb8..2726e83 --- a/journals/migrations/0021_auto_20160425_1737.py +++ b/journals/migrations/0021_auto_20160425_1737.py @@ -1,37 +1,37 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-25 17:37 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0020_auto_20160425_1656'), - ] - - operations = [ - migrations.RemoveField( - model_name='diploma', - name='course', - ), - migrations.RemoveField( - model_name='diploma', - name='student', - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 25, 17, 37, 54, 415640), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 25, 17, 37, 54, 416476), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.DeleteModel( - name='Diploma', - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-25 17:37 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0020_auto_20160425_1656'), + ] + + operations = [ + migrations.RemoveField( + model_name='diploma', + name='course', + ), + migrations.RemoveField( + model_name='diploma', + name='student', + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 25, 17, 37, 54, 415640), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 25, 17, 37, 54, 416476), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.DeleteModel( + name='Diploma', + ), + ] diff --git a/journals/migrations/0022_auto_20160426_1119.py b/journals/migrations/0022_auto_20160426_1119.py old mode 100755 new mode 100644 index e31c1cd..a275b5d --- a/journals/migrations/0022_auto_20160426_1119.py +++ b/journals/migrations/0022_auto_20160426_1119.py @@ -1,30 +1,30 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-26 11:19 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0021_auto_20160425_1737'), - ] - - operations = [ - migrations.RemoveField( - model_name='examj', - name='diploma', - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 11, 19, 28, 992777), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 11, 19, 28, 993857), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-26 11:19 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0021_auto_20160425_1737'), + ] + + operations = [ + migrations.RemoveField( + model_name='examj', + name='diploma', + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 11, 19, 28, 992777), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 11, 19, 28, 993857), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0023_auto_20160426_1240.py b/journals/migrations/0023_auto_20160426_1240.py old mode 100755 new mode 100644 index 37681e7..2e3e5ec --- a/journals/migrations/0023_auto_20160426_1240.py +++ b/journals/migrations/0023_auto_20160426_1240.py @@ -1,44 +1,44 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-26 12:40 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0017_auto_20160426_1240'), - ('journals', '0022_auto_20160426_1119'), - ] - - operations = [ - migrations.CreateModel( - name='DiplomaJ', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date', models.DateField(default=datetime.date.today, verbose_name='\u0414\u0430\u0442\u0430 \u0432\u044b\u0434\u0430\u0447\u0438')), - ('key', models.CharField(max_length=255, verbose_name='\u041a\u043b\u044e\u0447')), - ('out_image', models.ImageField(upload_to='diploms', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0431\u0435\u0437 \u043f\u0435\u0447\u0430\u0442\u0438')), - ('in_image', models.ImageField(upload_to='diploms', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 c \u043f\u0435\u0447\u0430\u0442\u044c\u044e')), - ('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Diploma', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u0438\u043f\u043b\u043e\u043c\u0430')), - ('parent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='journals.ExamJ', verbose_name='\u0416\u0443\u0440\u043d\u0430\u043b \u0441\u0434\u0430\u0447\u0438')), - ], - options={ - 'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u0434\u0438\u043f\u043b\u043e\u043c\u043e\u0432', - 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b\u044b \u0434\u0438\u043f\u043b\u043e\u043c\u043e\u0432', - }, - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 12, 40, 4, 467932), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 12, 40, 4, 468672), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-26 12:40 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0017_auto_20160426_1240'), + ('journals', '0022_auto_20160426_1119'), + ] + + operations = [ + migrations.CreateModel( + name='DiplomaJ', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date', models.DateField(default=datetime.date.today, verbose_name='\u0414\u0430\u0442\u0430 \u0432\u044b\u0434\u0430\u0447\u0438')), + ('key', models.CharField(max_length=255, verbose_name='\u041a\u043b\u044e\u0447')), + ('out_image', models.ImageField(upload_to='diploms', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0431\u0435\u0437 \u043f\u0435\u0447\u0430\u0442\u0438')), + ('in_image', models.ImageField(upload_to='diploms', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 c \u043f\u0435\u0447\u0430\u0442\u044c\u044e')), + ('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Diploma', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u0438\u043f\u043b\u043e\u043c\u0430')), + ('parent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='journals.ExamJ', verbose_name='\u0416\u0443\u0440\u043d\u0430\u043b \u0441\u0434\u0430\u0447\u0438')), + ], + options={ + 'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u0434\u0438\u043f\u043b\u043e\u043c\u043e\u0432', + 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b\u044b \u0434\u0438\u043f\u043b\u043e\u043c\u043e\u0432', + }, + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 12, 40, 4, 467932), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 12, 40, 4, 468672), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0024_auto_20160426_1340.py b/journals/migrations/0024_auto_20160426_1340.py old mode 100755 new mode 100644 index 7e8678f..a36d644 --- a/journals/migrations/0024_auto_20160426_1340.py +++ b/journals/migrations/0024_auto_20160426_1340.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-26 13:40 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0023_auto_20160426_1240'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 13, 40, 58, 509339), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 13, 40, 58, 510077), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-26 13:40 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0023_auto_20160426_1240'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 13, 40, 58, 509339), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 13, 40, 58, 510077), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0025_auto_20160426_1342.py b/journals/migrations/0025_auto_20160426_1342.py old mode 100755 new mode 100644 index 2a34318..27921bb --- a/journals/migrations/0025_auto_20160426_1342.py +++ b/journals/migrations/0025_auto_20160426_1342.py @@ -1,34 +1,34 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-26 13:42 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('journals', '0024_auto_20160426_1340'), - ] - - operations = [ - migrations.AddField( - model_name='diplomaj', - name='student', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442'), - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 13, 42, 20, 148906), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 13, 42, 20, 149697), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-26 13:42 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('journals', '0024_auto_20160426_1340'), + ] + + operations = [ + migrations.AddField( + model_name='diplomaj', + name='student', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442'), + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 13, 42, 20, 148906), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 13, 42, 20, 149697), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0026_auto_20160426_1711.py b/journals/migrations/0026_auto_20160426_1711.py old mode 100755 new mode 100644 index c561962..2374096 --- a/journals/migrations/0026_auto_20160426_1711.py +++ b/journals/migrations/0026_auto_20160426_1711.py @@ -1,41 +1,41 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-26 17:11 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0025_auto_20160426_1342'), - ] - - operations = [ - migrations.AlterField( - model_name='diplomaj', - name='in_image', - field=models.ImageField(blank=True, upload_to='diploms', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 c \u043f\u0435\u0447\u0430\u0442\u044c\u044e'), - ), - migrations.AlterField( - model_name='diplomaj', - name='key', - field=models.IntegerField(max_length=255, verbose_name='\u041a\u043b\u044e\u0447'), - ), - migrations.AlterField( - model_name='diplomaj', - name='out_image', - field=models.ImageField(blank=True, upload_to='diploms', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0431\u0435\u0437 \u043f\u0435\u0447\u0430\u0442\u0438'), - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 17, 11, 38, 672394), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 17, 11, 38, 673176), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-26 17:11 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0025_auto_20160426_1342'), + ] + + operations = [ + migrations.AlterField( + model_name='diplomaj', + name='in_image', + field=models.ImageField(blank=True, upload_to='diploms', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 c \u043f\u0435\u0447\u0430\u0442\u044c\u044e'), + ), + migrations.AlterField( + model_name='diplomaj', + name='key', + field=models.IntegerField(max_length=255, verbose_name='\u041a\u043b\u044e\u0447'), + ), + migrations.AlterField( + model_name='diplomaj', + name='out_image', + field=models.ImageField(blank=True, upload_to='diploms', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0431\u0435\u0437 \u043f\u0435\u0447\u0430\u0442\u0438'), + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 17, 11, 38, 672394), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 26, 17, 11, 38, 673176), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0027_auto_20160428_1531.py b/journals/migrations/0027_auto_20160428_1531.py old mode 100755 new mode 100644 index 32c1095..65f6c4f --- a/journals/migrations/0027_auto_20160428_1531.py +++ b/journals/migrations/0027_auto_20160428_1531.py @@ -1,45 +1,45 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-28 15:31 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0026_auto_20160426_1711'), - ] - - operations = [ - migrations.AlterModelOptions( - name='coursethemej', - options={'ordering': ['material__sort'], 'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u0442\u0435\u043c\u044b', 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b \u0442\u0435\u043c\u044b'}, - ), - migrations.AlterModelOptions( - name='homeworkj', - options={'ordering': ['material__sort'], 'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b', 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b\u044b \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u0440\u0430\u0431\u043e\u0442'}, - ), - migrations.AlterField( - model_name='diplomaj', - name='key', - field=models.IntegerField(blank=True, max_length=255, verbose_name='\u041a\u043b\u044e\u0447'), - ), - migrations.AlterField( - model_name='diplomaj', - name='parent', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='journals.ExamJ', verbose_name='\u0416\u0443\u0440\u043d\u0430\u043b \u0441\u0434\u0430\u0447\u0438'), - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 28, 15, 31, 56, 86358), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 28, 15, 31, 56, 87092), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-28 15:31 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0026_auto_20160426_1711'), + ] + + operations = [ + migrations.AlterModelOptions( + name='coursethemej', + options={'ordering': ['material__sort'], 'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u0442\u0435\u043c\u044b', 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b \u0442\u0435\u043c\u044b'}, + ), + migrations.AlterModelOptions( + name='homeworkj', + options={'ordering': ['material__sort'], 'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b', 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b\u044b \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u0440\u0430\u0431\u043e\u0442'}, + ), + migrations.AlterField( + model_name='diplomaj', + name='key', + field=models.IntegerField(blank=True, max_length=255, verbose_name='\u041a\u043b\u044e\u0447'), + ), + migrations.AlterField( + model_name='diplomaj', + name='parent', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='journals.ExamJ', verbose_name='\u0416\u0443\u0440\u043d\u0430\u043b \u0441\u0434\u0430\u0447\u0438'), + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 28, 15, 31, 56, 86358), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 28, 15, 31, 56, 87092), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0028_auto_20160428_1554.py b/journals/migrations/0028_auto_20160428_1554.py old mode 100755 new mode 100644 index f06d102..dbfd2ab --- a/journals/migrations/0028_auto_20160428_1554.py +++ b/journals/migrations/0028_auto_20160428_1554.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-28 15:54 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0027_auto_20160428_1531'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 28, 15, 54, 6, 268311), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 28, 15, 54, 6, 269014), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-28 15:54 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0027_auto_20160428_1531'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 28, 15, 54, 6, 268311), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 28, 15, 54, 6, 269014), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0029_auto_20160428_1556.py b/journals/migrations/0029_auto_20160428_1556.py old mode 100755 new mode 100644 index 5b887fd..c779cb9 --- a/journals/migrations/0029_auto_20160428_1556.py +++ b/journals/migrations/0029_auto_20160428_1556.py @@ -1,31 +1,31 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-28 15:56 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0028_auto_20160428_1554'), - ] - - operations = [ - migrations.AlterField( - model_name='diplomaj', - name='key', - field=models.IntegerField(blank=True, max_length=255, null=True, verbose_name='\u041a\u043b\u044e\u0447'), - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 28, 15, 56, 6, 175947), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 28, 15, 56, 6, 176431), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-28 15:56 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0028_auto_20160428_1554'), + ] + + operations = [ + migrations.AlterField( + model_name='diplomaj', + name='key', + field=models.IntegerField(blank=True, max_length=255, null=True, verbose_name='\u041a\u043b\u044e\u0447'), + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 28, 15, 56, 6, 175947), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 28, 15, 56, 6, 176431), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0030_auto_20160428_1633.py b/journals/migrations/0030_auto_20160428_1633.py old mode 100755 new mode 100644 index e7a1f5d..4c36e88 --- a/journals/migrations/0030_auto_20160428_1633.py +++ b/journals/migrations/0030_auto_20160428_1633.py @@ -1,31 +1,31 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-28 16:33 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0029_auto_20160428_1556'), - ] - - operations = [ - migrations.AddField( - model_name='diplomaj', - name='gen', - field=models.BooleanField(default=False, verbose_name='\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d'), - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 28, 16, 33, 15, 465433), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 28, 16, 33, 15, 466154), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-28 16:33 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0029_auto_20160428_1556'), + ] + + operations = [ + migrations.AddField( + model_name='diplomaj', + name='gen', + field=models.BooleanField(default=False, verbose_name='\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d'), + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 28, 16, 33, 15, 465433), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 28, 16, 33, 15, 466154), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0031_auto_20160506_1303.py b/journals/migrations/0031_auto_20160506_1303.py old mode 100755 new mode 100644 index 43a6890..b12acd9 --- a/journals/migrations/0031_auto_20160506_1303.py +++ b/journals/migrations/0031_auto_20160506_1303.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-06 13:03 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0030_auto_20160428_1633'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 6, 13, 3, 19, 710064), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='progressreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 6, 13, 3, 19, 710937), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-06 13:03 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0030_auto_20160428_1633'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 5, 6, 13, 3, 19, 710064), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='progressreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 5, 6, 13, 3, 19, 710937), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0032_auto_20160530_0820.py b/journals/migrations/0032_auto_20160530_0820.py old mode 100755 new mode 100644 index ecbecc6..7c77fbc --- a/journals/migrations/0032_auto_20160530_0820.py +++ b/journals/migrations/0032_auto_20160530_0820.py @@ -1,40 +1,40 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-30 08:20 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0031_auto_20160506_1303'), - ] - - operations = [ - migrations.RemoveField( - model_name='progressreports', - name='course', - ), - migrations.RemoveField( - model_name='progressreports', - name='student', - ), - migrations.RemoveField( - model_name='progressreports', - name='teacher', - ), - migrations.RemoveField( - model_name='progressreports', - name='to', - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 30, 8, 20, 58, 734398), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.DeleteModel( - name='ProgressReports', - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-30 08:20 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0031_auto_20160506_1303'), + ] + + operations = [ + migrations.RemoveField( + model_name='progressreports', + name='course', + ), + migrations.RemoveField( + model_name='progressreports', + name='student', + ), + migrations.RemoveField( + model_name='progressreports', + name='teacher', + ), + migrations.RemoveField( + model_name='progressreports', + name='to', + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 5, 30, 8, 20, 58, 734398), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.DeleteModel( + name='ProgressReports', + ), + ] diff --git a/journals/migrations/0033_auto_20160530_1320.py b/journals/migrations/0033_auto_20160530_1320.py old mode 100755 new mode 100644 index 57a3fd8..ef7bbe7 --- a/journals/migrations/0033_auto_20160530_1320.py +++ b/journals/migrations/0033_auto_20160530_1320.py @@ -1,43 +1,43 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-30 13:20 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('courses', '0026_auto_20160506_1838'), - ('journals', '0032_auto_20160530_0820'), - ] - - operations = [ - migrations.CreateModel( - name='ReportDepth', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('s_date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u0441\u0442\u0430\u0440\u0442\u0430')), - ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f')), - ('flag', models.CharField(blank=True, choices=[('G', ''), ('Y', ''), ('R', '')], max_length=1, null=True, verbose_name='\u0424\u043b\u0430\u0433 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f')), - ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), - ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='depth_report_student', to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), - ('teacher', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='depth_report_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c')), - ('token', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.CourseMap', verbose_name='\u0422\u043e\u0447\u043a\u0430 \u043a\u0443\u0440\u0441\u0430')), - ], - options={ - 'ordering': ['token'], - 'verbose_name': '\u0413\u043b\u0443\u0431\u043e\u043a\u0438\u0439 \u043e\u0442\u0447\u0435\u0442', - 'verbose_name_plural': '\u0413\u043b\u0443\u0431\u043e\u043a\u0438\u0439 \u043e\u0442\u0447\u0435\u0442', - }, - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 30, 13, 20, 18, 32192), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-30 13:20 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('courses', '0026_auto_20160506_1838'), + ('journals', '0032_auto_20160530_0820'), + ] + + operations = [ + migrations.CreateModel( + name='ReportDepth', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('s_date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u0441\u0442\u0430\u0440\u0442\u0430')), + ('f_date', models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f')), + ('flag', models.CharField(blank=True, choices=[('G', ''), ('Y', ''), ('R', '')], max_length=1, null=True, verbose_name='\u0424\u043b\u0430\u0433 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f')), + ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='\u041a\u0443\u0440\u0441')), + ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='depth_report_student', to=settings.AUTH_USER_MODEL, verbose_name='\u0421\u0442\u0443\u0434\u0435\u043d\u0442')), + ('teacher', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='depth_report_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c')), + ('token', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.CourseMap', verbose_name='\u0422\u043e\u0447\u043a\u0430 \u043a\u0443\u0440\u0441\u0430')), + ], + options={ + 'ordering': ['token'], + 'verbose_name': '\u0413\u043b\u0443\u0431\u043e\u043a\u0438\u0439 \u043e\u0442\u0447\u0435\u0442', + 'verbose_name_plural': '\u0413\u043b\u0443\u0431\u043e\u043a\u0438\u0439 \u043e\u0442\u0447\u0435\u0442', + }, + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 5, 30, 13, 20, 18, 32192), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0034_auto_20160530_1405.py b/journals/migrations/0034_auto_20160530_1405.py old mode 100755 new mode 100644 index c393dda..9bf9805 --- a/journals/migrations/0034_auto_20160530_1405.py +++ b/journals/migrations/0034_auto_20160530_1405.py @@ -1,28 +1,28 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-30 14:05 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0033_auto_20160530_1320'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 30, 14, 5, 8, 587794), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='reportdepth', - name='teacher', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='depth_report_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-30 14:05 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0033_auto_20160530_1320'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 5, 30, 14, 5, 8, 587794), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='reportdepth', + name='teacher', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='depth_report_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c'), + ), + ] diff --git a/journals/migrations/0035_auto_20160607_1613.py b/journals/migrations/0035_auto_20160607_1613.py old mode 100755 new mode 100644 index 5bcbd1e..78c73ec --- a/journals/migrations/0035_auto_20160607_1613.py +++ b/journals/migrations/0035_auto_20160607_1613.py @@ -1,30 +1,30 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-07 16:13 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0034_auto_20160530_1405'), - ] - - operations = [ - migrations.AlterModelOptions( - name='reportdepth', - options={'ordering': ['s_date'], 'verbose_name': '\u0413\u043b\u0443\u0431\u043e\u043a\u0438\u0439 \u043e\u0442\u0447\u0435\u0442', 'verbose_name_plural': '\u0413\u043b\u0443\u0431\u043e\u043a\u0438\u0439 \u043e\u0442\u0447\u0435\u0442'}, - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 7, 16, 13, 32, 699752), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - migrations.AlterField( - model_name='reportdepth', - name='flag', - field=models.CharField(blank=True, choices=[('G', '#99CC99'), ('Y', '#FFFF99'), ('R', '#FF3300')], max_length=1, null=True, verbose_name='\u0424\u043b\u0430\u0433 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-07 16:13 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0034_auto_20160530_1405'), + ] + + operations = [ + migrations.AlterModelOptions( + name='reportdepth', + options={'ordering': ['s_date'], 'verbose_name': '\u0413\u043b\u0443\u0431\u043e\u043a\u0438\u0439 \u043e\u0442\u0447\u0435\u0442', 'verbose_name_plural': '\u0413\u043b\u0443\u0431\u043e\u043a\u0438\u0439 \u043e\u0442\u0447\u0435\u0442'}, + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 7, 16, 13, 32, 699752), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + migrations.AlterField( + model_name='reportdepth', + name='flag', + field=models.CharField(blank=True, choices=[('G', '#99CC99'), ('Y', '#FFFF99'), ('R', '#FF3300')], max_length=1, null=True, verbose_name='\u0424\u043b\u0430\u0433 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f'), + ), + ] diff --git a/journals/migrations/0036_auto_20160607_1614.py b/journals/migrations/0036_auto_20160607_1614.py old mode 100755 new mode 100644 index 12e1c59..35d02d2 --- a/journals/migrations/0036_auto_20160607_1614.py +++ b/journals/migrations/0036_auto_20160607_1614.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-07 16:14 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0035_auto_20160607_1613'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 7, 16, 14, 9, 954833), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-07 16:14 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0035_auto_20160607_1613'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 7, 16, 14, 9, 954833), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0037_auto_20160607_2002.py b/journals/migrations/0037_auto_20160607_2002.py old mode 100755 new mode 100644 index aac8479..3c26a9f --- a/journals/migrations/0037_auto_20160607_2002.py +++ b/journals/migrations/0037_auto_20160607_2002.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-07 20:02 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0036_auto_20160607_1614'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 7, 20, 2, 41, 688111), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-07 20:02 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0036_auto_20160607_1614'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 7, 20, 2, 41, 688111), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0038_auto_20160607_2034.py b/journals/migrations/0038_auto_20160607_2034.py old mode 100755 new mode 100644 index a80c4c2..be12155 --- a/journals/migrations/0038_auto_20160607_2034.py +++ b/journals/migrations/0038_auto_20160607_2034.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-07 20:34 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0037_auto_20160607_2002'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 7, 20, 34, 43, 774641), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-07 20:34 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0037_auto_20160607_2002'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 7, 20, 34, 43, 774641), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0039_auto_20160607_2051.py b/journals/migrations/0039_auto_20160607_2051.py old mode 100755 new mode 100644 index b3f1484..d54f34e --- a/journals/migrations/0039_auto_20160607_2051.py +++ b/journals/migrations/0039_auto_20160607_2051.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-07 20:51 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0038_auto_20160607_2034'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 7, 20, 51, 37, 193156), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-07 20:51 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0038_auto_20160607_2034'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 7, 20, 51, 37, 193156), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0040_auto_20160608_1700.py b/journals/migrations/0040_auto_20160608_1700.py old mode 100755 new mode 100644 index e478cca..50456be --- a/journals/migrations/0040_auto_20160608_1700.py +++ b/journals/migrations/0040_auto_20160608_1700.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-08 17:00 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0039_auto_20160607_2051'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 8, 16, 59, 59, 733466), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-08 17:00 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0039_auto_20160607_2051'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 8, 16, 59, 59, 733466), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0041_auto_20160608_1705.py b/journals/migrations/0041_auto_20160608_1705.py old mode 100755 new mode 100644 index a0f8354..d5022f2 --- a/journals/migrations/0041_auto_20160608_1705.py +++ b/journals/migrations/0041_auto_20160608_1705.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-08 17:05 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0040_auto_20160608_1700'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 8, 17, 5, 4, 921678), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-08 17:05 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0040_auto_20160608_1700'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 8, 17, 5, 4, 921678), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0042_auto_20160608_1804.py b/journals/migrations/0042_auto_20160608_1804.py old mode 100755 new mode 100644 index a852922..ce3f727 --- a/journals/migrations/0042_auto_20160608_1804.py +++ b/journals/migrations/0042_auto_20160608_1804.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-08 18:04 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0041_auto_20160608_1705'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 8, 18, 4, 57, 546328), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-08 18:04 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0041_auto_20160608_1705'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 8, 18, 4, 57, 546328), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0043_auto_20160608_1841.py b/journals/migrations/0043_auto_20160608_1841.py old mode 100755 new mode 100644 index 1bc9d61..0dde108 --- a/journals/migrations/0043_auto_20160608_1841.py +++ b/journals/migrations/0043_auto_20160608_1841.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-08 18:41 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0042_auto_20160608_1804'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 8, 18, 41, 17, 883560), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-08 18:41 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0042_auto_20160608_1804'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 8, 18, 41, 17, 883560), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0044_auto_20160609_1429.py b/journals/migrations/0044_auto_20160609_1429.py old mode 100755 new mode 100644 index a5be5e1..3f00945 --- a/journals/migrations/0044_auto_20160609_1429.py +++ b/journals/migrations/0044_auto_20160609_1429.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 14:29 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0043_auto_20160608_1841'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 14, 29, 17, 613070), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 14:29 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0043_auto_20160608_1841'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 14, 29, 17, 613070), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0045_auto_20160609_1442.py b/journals/migrations/0045_auto_20160609_1442.py old mode 100755 new mode 100644 index eb39fd6..936cf73 --- a/journals/migrations/0045_auto_20160609_1442.py +++ b/journals/migrations/0045_auto_20160609_1442.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 14:42 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0044_auto_20160609_1429'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 14, 42, 25, 639509), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 14:42 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0044_auto_20160609_1429'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 14, 42, 25, 639509), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0046_auto_20160609_1534.py b/journals/migrations/0046_auto_20160609_1534.py old mode 100755 new mode 100644 index 2be2475..e03bb95 --- a/journals/migrations/0046_auto_20160609_1534.py +++ b/journals/migrations/0046_auto_20160609_1534.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 15:34 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0045_auto_20160609_1442'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 15, 34, 28, 550178), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 15:34 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0045_auto_20160609_1442'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 15, 34, 28, 550178), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0047_auto_20160609_1536.py b/journals/migrations/0047_auto_20160609_1536.py old mode 100755 new mode 100644 index d14f4f3..1403476 --- a/journals/migrations/0047_auto_20160609_1536.py +++ b/journals/migrations/0047_auto_20160609_1536.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 15:36 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0046_auto_20160609_1534'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 15, 36, 24, 176770), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 15:36 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0046_auto_20160609_1534'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 15, 36, 24, 176770), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0048_auto_20160609_1536.py b/journals/migrations/0048_auto_20160609_1536.py old mode 100755 new mode 100644 index e6df11b..eac80d2 --- a/journals/migrations/0048_auto_20160609_1536.py +++ b/journals/migrations/0048_auto_20160609_1536.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 15:36 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0047_auto_20160609_1536'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 15, 36, 29, 932969), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 15:36 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0047_auto_20160609_1536'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 15, 36, 29, 932969), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0049_auto_20160609_1546.py b/journals/migrations/0049_auto_20160609_1546.py old mode 100755 new mode 100644 index 4a75659..dfcfcbe --- a/journals/migrations/0049_auto_20160609_1546.py +++ b/journals/migrations/0049_auto_20160609_1546.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 15:46 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0048_auto_20160609_1536'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 15, 46, 17, 287825), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 15:46 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0048_auto_20160609_1536'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 15, 46, 17, 287825), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0050_auto_20160609_1627.py b/journals/migrations/0050_auto_20160609_1627.py old mode 100755 new mode 100644 index 7f7a0f6..5198f65 --- a/journals/migrations/0050_auto_20160609_1627.py +++ b/journals/migrations/0050_auto_20160609_1627.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 16:27 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0049_auto_20160609_1546'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 16, 27, 14, 289357), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 16:27 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0049_auto_20160609_1546'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 16, 27, 14, 289357), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0051_auto_20160609_2224.py b/journals/migrations/0051_auto_20160609_2224.py old mode 100755 new mode 100644 index 1fa3022..e9d1b02 --- a/journals/migrations/0051_auto_20160609_2224.py +++ b/journals/migrations/0051_auto_20160609_2224.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 22:24 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0050_auto_20160609_1627'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 22, 24, 43, 817817), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 22:24 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0050_auto_20160609_1627'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 22, 24, 43, 817817), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0052_auto_20160628_1731.py b/journals/migrations/0052_auto_20160628_1731.py old mode 100755 new mode 100644 index e4763ba..f51dc45 --- a/journals/migrations/0052_auto_20160628_1731.py +++ b/journals/migrations/0052_auto_20160628_1731.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-28 17:31 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0051_auto_20160609_2224'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 28, 17, 31, 12, 287945), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-28 17:31 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0051_auto_20160609_2224'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 28, 17, 31, 12, 287945), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0053_auto_20160711_1518.py b/journals/migrations/0053_auto_20160711_1518.py old mode 100755 new mode 100644 index e23c9d0..2634696 --- a/journals/migrations/0053_auto_20160711_1518.py +++ b/journals/migrations/0053_auto_20160711_1518.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-11 15:18 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0052_auto_20160628_1731'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 11, 15, 18, 42, 287900), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-11 15:18 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0052_auto_20160628_1731'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 11, 15, 18, 42, 287900), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0054_auto_20160713_2038.py b/journals/migrations/0054_auto_20160713_2038.py old mode 100755 new mode 100644 index 366f7c7..11bb12d --- a/journals/migrations/0054_auto_20160713_2038.py +++ b/journals/migrations/0054_auto_20160713_2038.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-13 20:38 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0053_auto_20160711_1518'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 13, 20, 38, 33, 382012), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-13 20:38 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0053_auto_20160711_1518'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 13, 20, 38, 33, 382012), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0055_auto_20160729_1215.py b/journals/migrations/0055_auto_20160729_1215.py old mode 100755 new mode 100644 index d407a0d..100cc39 --- a/journals/migrations/0055_auto_20160729_1215.py +++ b/journals/migrations/0055_auto_20160729_1215.py @@ -1,29 +1,29 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-29 12:15 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('journals', '0054_auto_20160713_2038'), - ] - - operations = [ - migrations.AddField( - model_name='teacherj', - name='current_tch', - field=models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teacherJ_crteacher', to=settings.AUTH_USER_MODEL, verbose_name='\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u0435\u043f'), - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 29, 12, 15, 50, 796790), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-29 12:15 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('journals', '0054_auto_20160713_2038'), + ] + + operations = [ + migrations.AddField( + model_name='teacherj', + name='current_tch', + field=models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teacherJ_crteacher', to=settings.AUTH_USER_MODEL, verbose_name='\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u0435\u043f'), + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 29, 12, 15, 50, 796790), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0056_auto_20160729_1308.py b/journals/migrations/0056_auto_20160729_1308.py old mode 100755 new mode 100644 index 29f0016..121a403 --- a/journals/migrations/0056_auto_20160729_1308.py +++ b/journals/migrations/0056_auto_20160729_1308.py @@ -1,29 +1,29 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-29 13:08 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('journals', '0055_auto_20160729_1215'), - ] - - operations = [ - migrations.AddField( - model_name='homeworktry', - name='new_teach', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='h_t_new_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041d\u043e\u0432\u044b\u0439 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c'), - ), - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 29, 13, 8, 32, 955571), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-29 13:08 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('journals', '0055_auto_20160729_1215'), + ] + + operations = [ + migrations.AddField( + model_name='homeworktry', + name='new_teach', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='h_t_new_teacher', to=settings.AUTH_USER_MODEL, verbose_name='\u041d\u043e\u0432\u044b\u0439 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c'), + ), + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 29, 13, 8, 32, 955571), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/0057_auto_20160814_1736.py b/journals/migrations/0057_auto_20160814_1736.py old mode 100755 new mode 100644 index 76fc84f..0cdffc9 --- a/journals/migrations/0057_auto_20160814_1736.py +++ b/journals/migrations/0057_auto_20160814_1736.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-08-14 17:36 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('journals', '0056_auto_20160729_1308'), - ] - - operations = [ - migrations.AlterField( - model_name='journalsreports', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 8, 14, 17, 36, 41, 787179), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-08-14 17:36 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0056_auto_20160729_1308'), + ] + + operations = [ + migrations.AlterField( + model_name='journalsreports', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 8, 14, 17, 36, 41, 787179), editable=False, verbose_name='\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0447\u0435\u0442\u0430'), + ), + ] diff --git a/journals/migrations/__init__.py b/journals/migrations/__init__.py old mode 100755 new mode 100644 diff --git a/journals/models.py b/journals/models.py old mode 100755 new mode 100644 diff --git a/journals/tasks.py b/journals/tasks.py old mode 100755 new mode 100644 diff --git a/journals/tools.py b/journals/tools.py old mode 100755 new mode 100644 diff --git a/journals/urls.py b/journals/urls.py old mode 100755 new mode 100644 index d4e5390..664c419 --- a/journals/urls.py +++ b/journals/urls.py @@ -1,11 +1,11 @@ -from django.conf.urls import url -from journals import api -urlpatterns = [ - url(r'set_teacher/$', api.set_teacher), - url(r'set_ht/$', api.set_ht), - url(r'open_lj/$', api.open_lj), - url(r'check_jaccess/$', api.check_jaccess), - url(r'check_exists_jhomework/$', api.check_exists_jhomework), - url(r'check_exists_jexam/$', api.check_exists_jexam), - url(r'check_block/$', api.check_block) -] +from django.conf.urls import url +from journals import api +urlpatterns = [ + url(r'set_teacher/$', api.set_teacher), + url(r'set_ht/$', api.set_ht), + url(r'open_lj/$', api.open_lj), + url(r'check_jaccess/$', api.check_jaccess), + url(r'check_exists_jhomework/$', api.check_exists_jhomework), + url(r'check_exists_jexam/$', api.check_exists_jexam), + url(r'check_block/$', api.check_block) +] diff --git a/journals/views.py b/journals/views.py old mode 100755 new mode 100644 index c60c790..91ea44a --- a/journals/views.py +++ b/journals/views.py @@ -1,3 +1,3 @@ -from django.shortcuts import render - -# Create your views here. +from django.shortcuts import render + +# Create your views here. diff --git a/library/__init__.py b/library/__init__.py old mode 100755 new mode 100644 diff --git a/library/admin.py b/library/admin.py old mode 100755 new mode 100644 index bf9bd7a..e2ddde0 --- a/library/admin.py +++ b/library/admin.py @@ -1,24 +1,24 @@ -from django.contrib import admin - -# Register your models here. -from library.models import Article, Tags, ArticleSection - - -class ArticleAdmin(admin.ModelAdmin): - list_display = ('title', 'section', 'date', 'public', 'slug', ) - filter_horizontal = ('tags', 'comments', ) - search_fields = ['title'] - -admin.site.register(Article, ArticleAdmin) - - -class TagsAdmin(admin.ModelAdmin): - list_display = ('name', ) - -admin.site.register(Tags, TagsAdmin) - - -class ArticleSectionAdmin(admin.ModelAdmin): - list_display = ('name', ) - -admin.site.register(ArticleSection, ArticleSectionAdmin) +from django.contrib import admin + +# Register your models here. +from library.models import Article, Tags, ArticleSection + + +class ArticleAdmin(admin.ModelAdmin): + list_display = ('title', 'section', 'date', 'public', 'slug', ) + filter_horizontal = ('tags', 'comments', ) + search_fields = ['title'] + +admin.site.register(Article, ArticleAdmin) + + +class TagsAdmin(admin.ModelAdmin): + list_display = ('name', ) + +admin.site.register(Tags, TagsAdmin) + + +class ArticleSectionAdmin(admin.ModelAdmin): + list_display = ('name', ) + +admin.site.register(ArticleSection, ArticleSectionAdmin) diff --git a/library/api.py b/library/api.py old mode 100755 new mode 100644 index b2606f4..002fc83 --- a/library/api.py +++ b/library/api.py @@ -1,165 +1,165 @@ -# coding=utf-8 -import random -import re -from lms.decors import api_decor -from management.letters import sent_comment_news -from library.models import Article -from management.models import Comment -from storage.models import Storage -import django.utils.timezone - - -@api_decor(without_auth=True) -def get_random_article(request, context): - context['code'] = '1' - context['data'] = random.choice(Article.objects.exclude(id=request.GET['id'])).slug - return context - - -@api_decor(without_auth=False, method='POST', need_keys=['art'], check_request=True) -def set_favorite(request, context): - try: - article = Article.objects.get(id=request.POST['art']) - except Article.DoesNotExist: - context['code'] = '0' - context['response'] = u'Статья не найдена' - else: - article.set_favorite(request.user) - context['code'] = '1' - return context - - -@api_decor(without_auth=False, method='POST', need_keys=['art'], check_request=True) -def unset_favorite(request, context): - try: - article = Article.objects.get(id=request.POST['art']) - except Article.DoesNotExist: - context['code'] = '0' - context['response'] = u'Статья не найдена' - else: - article.unset_favorite(request.user) - context['code'] = '1' - return context - - -@api_decor(without_auth=False, method='GET', need_keys=['id'], check_request=True) -def check_favorite(request, context): - try: - article = Article.objects.get(id=request.GET['id']) - except Article.DoesNotExist: - context['code'] = '0' - context['response'] = u'Статья не найдена' - else: - if article.check_favorit_exists(request.user): - context['code'] = '1' - else: - context['code'] = '0' - return context - - -@api_decor(without_auth=True, need_keys=['lesson'], method='POST', check_request=True) -def load_comments(request, context): - # Загрузка списка комментариев - lesson = Article.objects.get(id=request.POST['lesson']) - context['data'] = lesson.get_comments(_user=request.user) - - if len(context['data']) == 0: - context['code'] = '0' - else: - context['code'] = '1' - return context - - -@api_decor(without_auth=True) -def get_comments_length(request, context): - context['code'] = '1' - context['data'] = Article.objects.get(id=request.GET['id']).comments.filter(closed=False).count() - return context - - -@api_decor(without_auth=False) -def sent_comment(request, context): - # Отправка комментария урока - if request.POST['comment_sent_text']: - lesson = Article.objects.get(id=request.POST['comment_for_lesson_id']) - parent_id = request.POST['reply_for_comment_id'] - comment = Comment.objects.create(parent_id=parent_id, owner=request.user, - bbtext=request.POST['comment_sent_text'], date=django.utils.timezone.now()) - - lesson.comments.add(comment) - lesson.save() - # Получение о добавление файлов комментария - r = re.compile('^file_') - files_keys = [] - for i in request.POST.keys(): - if r.match(i): files_keys.append(i) - - if files_keys: - for i in files_keys: - comment.files.add(Storage.objects.get(key=request.POST[i])) - comment.save() - - if parent_id != '0': - comment2 = Comment.objects.get(id=parent_id) - if comment2.owner.check_subscription('new_comment'): - sent_comment_news(comment2, comment, lesson) - context['code'] = '1' - context['data'] = comment.id - context['code'] = '1' - return context - - -@api_decor(without_auth=False) -def set_like(request, context): - try: - article = Article.objects.get(id=request.POST['id']) - except Article.DoesNotExist: - context['code'] = '0' - context['response'] = u'Статья не найдена' - else: - result = article.like_plus(request.user) - context['code'] = '1' if result else '0' - return context - - -@api_decor(without_auth=False) -def unset_like(request, context): - try: - article = Article.objects.get(id=request.POST['id']) - except Article.DoesNotExist: - context['code'] = '0' - context['response'] = u'Статья не найдена' - else: - result = article.like_minus(request.user) - context['code'] = '1' if result else '0' - return context - - -@api_decor(without_auth=True) -def refresh_like(request, context): - try: - article = Article.objects.get(id=request.GET['id']) - except Article.DoesNotExist: - context['code'] = '0' - context['response'] = u'Статья не найдена' - else: - context['data'] = article.get_likes_length() - context['code'] = '1' - return context - - -@api_decor(without_auth=True) -def get_articles_length(request, context): - context['data'] = Article.objects.all().count() - context['code'] = '1' - return context - - -@api_decor(without_auth=True) -def get_all_views_length(request, context): - views = 0 - for i in Article.objects.filter(public=True): - views += i.get_views_length() - context['code'] = '1' - context['data'] = views - return context +# coding=utf-8 +import random +import re +from lms.decors import api_decor +from management.letters import sent_comment_news +from library.models import Article +from management.models import Comment +from storage.models import Storage +import django.utils.timezone + + +@api_decor(without_auth=True) +def get_random_article(request, context): + context['code'] = '1' + context['data'] = random.choice(Article.objects.exclude(id=request.GET['id'])).slug + return context + + +@api_decor(without_auth=False, method='POST', need_keys=['art'], check_request=True) +def set_favorite(request, context): + try: + article = Article.objects.get(id=request.POST['art']) + except Article.DoesNotExist: + context['code'] = '0' + context['response'] = u'Статья не найдена' + else: + article.set_favorite(request.user) + context['code'] = '1' + return context + + +@api_decor(without_auth=False, method='POST', need_keys=['art'], check_request=True) +def unset_favorite(request, context): + try: + article = Article.objects.get(id=request.POST['art']) + except Article.DoesNotExist: + context['code'] = '0' + context['response'] = u'Статья не найдена' + else: + article.unset_favorite(request.user) + context['code'] = '1' + return context + + +@api_decor(without_auth=False, method='GET', need_keys=['id'], check_request=True) +def check_favorite(request, context): + try: + article = Article.objects.get(id=request.GET['id']) + except Article.DoesNotExist: + context['code'] = '0' + context['response'] = u'Статья не найдена' + else: + if article.check_favorit_exists(request.user): + context['code'] = '1' + else: + context['code'] = '0' + return context + + +@api_decor(without_auth=True, need_keys=['lesson'], method='POST', check_request=True) +def load_comments(request, context): + # Загрузка списка комментариев + lesson = Article.objects.get(id=request.POST['lesson']) + context['data'] = lesson.get_comments(_user=request.user) + + if len(context['data']) == 0: + context['code'] = '0' + else: + context['code'] = '1' + return context + + +@api_decor(without_auth=True) +def get_comments_length(request, context): + context['code'] = '1' + context['data'] = Article.objects.get(id=request.GET['id']).comments.filter(closed=False).count() + return context + + +@api_decor(without_auth=False) +def sent_comment(request, context): + # Отправка комментария урока + if request.POST['comment_sent_text']: + lesson = Article.objects.get(id=request.POST['comment_for_lesson_id']) + parent_id = request.POST['reply_for_comment_id'] + comment = Comment.objects.create(parent_id=parent_id, owner=request.user, + bbtext=request.POST['comment_sent_text'], date=django.utils.timezone.now()) + + lesson.comments.add(comment) + lesson.save() + # Получение о добавление файлов комментария + r = re.compile('^file_') + files_keys = [] + for i in request.POST.keys(): + if r.match(i): files_keys.append(i) + + if files_keys: + for i in files_keys: + comment.files.add(Storage.objects.get(key=request.POST[i])) + comment.save() + + if parent_id != '0': + comment2 = Comment.objects.get(id=parent_id) + if comment2.owner.check_subscription('new_comment'): + sent_comment_news(comment2, comment, lesson) + context['code'] = '1' + context['data'] = comment.id + context['code'] = '1' + return context + + +@api_decor(without_auth=False) +def set_like(request, context): + try: + article = Article.objects.get(id=request.POST['id']) + except Article.DoesNotExist: + context['code'] = '0' + context['response'] = u'Статья не найдена' + else: + result = article.like_plus(request.user) + context['code'] = '1' if result else '0' + return context + + +@api_decor(without_auth=False) +def unset_like(request, context): + try: + article = Article.objects.get(id=request.POST['id']) + except Article.DoesNotExist: + context['code'] = '0' + context['response'] = u'Статья не найдена' + else: + result = article.like_minus(request.user) + context['code'] = '1' if result else '0' + return context + + +@api_decor(without_auth=True) +def refresh_like(request, context): + try: + article = Article.objects.get(id=request.GET['id']) + except Article.DoesNotExist: + context['code'] = '0' + context['response'] = u'Статья не найдена' + else: + context['data'] = article.get_likes_length() + context['code'] = '1' + return context + + +@api_decor(without_auth=True) +def get_articles_length(request, context): + context['data'] = Article.objects.all().count() + context['code'] = '1' + return context + + +@api_decor(without_auth=True) +def get_all_views_length(request, context): + views = 0 + for i in Article.objects.filter(public=True): + views += i.get_views_length() + context['code'] = '1' + context['data'] = views + return context diff --git a/library/migrations/0001_initial.py b/library/migrations/0001_initial.py old mode 100755 new mode 100644 index 917cb65..77fadd6 --- a/library/migrations/0001_initial.py +++ b/library/migrations/0001_initial.py @@ -1,33 +1,33 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-10 18:54 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Article', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('public', models.BooleanField(default=True, 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')), - ('page', models.TextField(verbose_name='PAGE')), - ('css', models.FileField(blank=True, null=True, upload_to='library', verbose_name='CSS')), - ('js', models.FileField(blank=True, null=True, upload_to='library', verbose_name='JS')), - ('date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438')), - ], - options={ - 'verbose_name': '\u0421\u0442\u0430\u0442\u044c\u044f', - 'verbose_name_plural': '\u0421\u0442\u0430\u0442\u044c\u0438', - }, - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-10 18:54 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Article', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('public', models.BooleanField(default=True, 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')), + ('page', models.TextField(verbose_name='PAGE')), + ('css', models.FileField(blank=True, null=True, upload_to='library', verbose_name='CSS')), + ('js', models.FileField(blank=True, null=True, upload_to='library', verbose_name='JS')), + ('date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438')), + ], + options={ + 'verbose_name': '\u0421\u0442\u0430\u0442\u044c\u044f', + 'verbose_name_plural': '\u0421\u0442\u0430\u0442\u044c\u0438', + }, + ), + ] diff --git a/library/migrations/0002_auto_20160610_1855.py b/library/migrations/0002_auto_20160610_1855.py old mode 100755 new mode 100644 index caf8030..2c4cf54 --- a/library/migrations/0002_auto_20160610_1855.py +++ b/library/migrations/0002_auto_20160610_1855.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-10 18:55 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('library', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='article', - name='date', - field=models.DateTimeField(default=datetime.datetime.now, editable=False, verbose_name='\u0414\u0430\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-10 18:55 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='article', + name='date', + field=models.DateTimeField(default=datetime.datetime.now, editable=False, verbose_name='\u0414\u0430\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438'), + ), + ] diff --git a/library/migrations/0003_auto_20160610_1856.py b/library/migrations/0003_auto_20160610_1856.py old mode 100755 new mode 100644 index 46c4397..65e4e0a --- a/library/migrations/0003_auto_20160610_1856.py +++ b/library/migrations/0003_auto_20160610_1856.py @@ -1,25 +1,25 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-10 18:56 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('library', '0002_auto_20160610_1855'), - ] - - operations = [ - migrations.AlterField( - model_name='article', - name='css', - field=models.TextField(blank=True, default='', verbose_name='CSS'), - ), - migrations.AlterField( - model_name='article', - name='js', - field=models.TextField(blank=True, default='', verbose_name='JS'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-10 18:56 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0002_auto_20160610_1855'), + ] + + operations = [ + migrations.AlterField( + model_name='article', + name='css', + field=models.TextField(blank=True, default='', verbose_name='CSS'), + ), + migrations.AlterField( + model_name='article', + name='js', + field=models.TextField(blank=True, default='', verbose_name='JS'), + ), + ] diff --git a/library/migrations/0004_auto_20160610_1917.py b/library/migrations/0004_auto_20160610_1917.py old mode 100755 new mode 100644 index 9e10eb6..7e35a54 --- a/library/migrations/0004_auto_20160610_1917.py +++ b/library/migrations/0004_auto_20160610_1917.py @@ -1,30 +1,30 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-10 19:17 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('library', '0003_auto_20160610_1856'), - ] - - operations = [ - migrations.AddField( - model_name='article', - name='haed_description', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435'), - ), - migrations.AddField( - model_name='article', - name='head_image', - field=models.ImageField(blank=True, null=True, upload_to='library', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430'), - ), - migrations.AddField( - model_name='article', - name='head_title', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-10 19:17 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0003_auto_20160610_1856'), + ] + + operations = [ + migrations.AddField( + model_name='article', + name='haed_description', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435'), + ), + migrations.AddField( + model_name='article', + name='head_image', + field=models.ImageField(blank=True, null=True, upload_to='library', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430'), + ), + migrations.AddField( + model_name='article', + name='head_title', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a'), + ), + ] diff --git a/library/migrations/0005_article_section.py b/library/migrations/0005_article_section.py old mode 100755 new mode 100644 index a7267c2..a06d42f --- a/library/migrations/0005_article_section.py +++ b/library/migrations/0005_article_section.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-11 15:18 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('library', '0004_auto_20160610_1917'), - ] - - operations = [ - migrations.AddField( - model_name='article', - name='section', - field=models.CharField(default='', max_length=255, verbose_name='\u0420\u0430\u0437\u0434\u0435\u043b'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-11 15:18 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0004_auto_20160610_1917'), + ] + + operations = [ + migrations.AddField( + model_name='article', + name='section', + field=models.CharField(default='', max_length=255, verbose_name='\u0420\u0430\u0437\u0434\u0435\u043b'), + ), + ] diff --git a/library/migrations/0006_tags.py b/library/migrations/0006_tags.py old mode 100755 new mode 100644 index 300b204..e03bb43 --- a/library/migrations/0006_tags.py +++ b/library/migrations/0006_tags.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-11 15:26 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('library', '0005_article_section'), - ] - - operations = [ - migrations.CreateModel( - name='Tags', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255, verbose_name='\u0422\u0435\u0433\u0438')), - ], - options={ - 'verbose_name': '\u0422\u0435\u0433', - 'verbose_name_plural': '\u0422\u0435\u0433\u0438', - }, - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-11 15:26 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0005_article_section'), + ] + + operations = [ + migrations.CreateModel( + name='Tags', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='\u0422\u0435\u0433\u0438')), + ], + options={ + 'verbose_name': '\u0422\u0435\u0433', + 'verbose_name_plural': '\u0422\u0435\u0433\u0438', + }, + ), + ] diff --git a/library/migrations/0007_article_tags.py b/library/migrations/0007_article_tags.py old mode 100755 new mode 100644 index 58fb642..02b069d --- a/library/migrations/0007_article_tags.py +++ b/library/migrations/0007_article_tags.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-11 15:27 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('library', '0006_tags'), - ] - - operations = [ - migrations.AddField( - model_name='article', - name='tags', - field=models.ManyToManyField(blank=True, null=True, to='library.Tags', verbose_name='\u0422\u0435\u0433\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-11 15:27 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0006_tags'), + ] + + operations = [ + migrations.AddField( + model_name='article', + name='tags', + field=models.ManyToManyField(blank=True, null=True, to='library.Tags', verbose_name='\u0422\u0435\u0433\u0438'), + ), + ] diff --git a/library/migrations/0008_auto_20160711_1714.py b/library/migrations/0008_auto_20160711_1714.py old mode 100755 new mode 100644 index 313089c..f1f6988 --- a/library/migrations/0008_auto_20160711_1714.py +++ b/library/migrations/0008_auto_20160711_1714.py @@ -1,36 +1,36 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-11 17:14 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0044_auto_20160711_1714'), - ('library', '0007_article_tags'), - ] - - operations = [ - migrations.AddField( - model_name='article', - name='comments', - field=models.ManyToManyField(blank=True, null=True, to='management.Comment', verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438'), - ), - migrations.AddField( - model_name='article', - name='likes', - field=models.IntegerField(default=0, max_length=255, verbose_name='\u041b\u0430\u0439\u043a\u0438'), - ), - migrations.AddField( - model_name='article', - name='preview', - field=models.TextField(blank=True, default='', verbose_name='\u041f\u0440\u0435\u0432\u044c\u044e\u0448\u043a\u0430'), - ), - migrations.AddField( - model_name='article', - name='views', - field=models.IntegerField(default=0, max_length=255, verbose_name='\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u044b'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-11 17:14 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0044_auto_20160711_1714'), + ('library', '0007_article_tags'), + ] + + operations = [ + migrations.AddField( + model_name='article', + name='comments', + field=models.ManyToManyField(blank=True, null=True, to='management.Comment', verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438'), + ), + migrations.AddField( + model_name='article', + name='likes', + field=models.IntegerField(default=0, max_length=255, verbose_name='\u041b\u0430\u0439\u043a\u0438'), + ), + migrations.AddField( + model_name='article', + name='preview', + field=models.TextField(blank=True, default='', verbose_name='\u041f\u0440\u0435\u0432\u044c\u044e\u0448\u043a\u0430'), + ), + migrations.AddField( + model_name='article', + name='views', + field=models.IntegerField(default=0, max_length=255, verbose_name='\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u044b'), + ), + ] diff --git a/library/migrations/0009_auto_20160711_1755.py b/library/migrations/0009_auto_20160711_1755.py old mode 100755 new mode 100644 index 53a2d84..dec3861 --- a/library/migrations/0009_auto_20160711_1755.py +++ b/library/migrations/0009_auto_20160711_1755.py @@ -1,35 +1,35 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-11 17:55 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('library', '0008_auto_20160711_1714'), - ] - - operations = [ - migrations.AddField( - model_name='article', - name='preview_img', - field=models.ImageField(blank=True, null=True, upload_to='library', verbose_name='\u041f\u0440\u0435\u0432\u044c\u044e\u0448\u043a\u0430 \u0437\u0430\u043b\u0438\u0432\u043a\u0438'), - ), - migrations.AlterField( - model_name='article', - name='haed_description', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0434\u043b\u044f \u0441\u043e\u0446 \u0441\u0435\u0442\u0435\u0439'), - ), - migrations.AlterField( - model_name='article', - name='head_image', - field=models.ImageField(blank=True, null=True, upload_to='library', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0434\u043b\u044f \u0441\u043e\u0446 \u0441\u0435\u0442\u0435\u0439'), - ), - migrations.AlterField( - model_name='article', - name='head_title', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0434\u043b\u044f \u0441\u043e\u0446 \u0441\u0435\u0442\u0435\u0439'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-11 17:55 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0008_auto_20160711_1714'), + ] + + operations = [ + migrations.AddField( + model_name='article', + name='preview_img', + field=models.ImageField(blank=True, null=True, upload_to='library', verbose_name='\u041f\u0440\u0435\u0432\u044c\u044e\u0448\u043a\u0430 \u0437\u0430\u043b\u0438\u0432\u043a\u0438'), + ), + migrations.AlterField( + model_name='article', + name='haed_description', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0434\u043b\u044f \u0441\u043e\u0446 \u0441\u0435\u0442\u0435\u0439'), + ), + migrations.AlterField( + model_name='article', + name='head_image', + field=models.ImageField(blank=True, null=True, upload_to='library', verbose_name='\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0434\u043b\u044f \u0441\u043e\u0446 \u0441\u0435\u0442\u0435\u0439'), + ), + migrations.AlterField( + model_name='article', + name='head_title', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0434\u043b\u044f \u0441\u043e\u0446 \u0441\u0435\u0442\u0435\u0439'), + ), + ] diff --git a/library/migrations/0010_auto_20160711_1825.py b/library/migrations/0010_auto_20160711_1825.py old mode 100755 new mode 100644 index 1626df2..f05220f --- a/library/migrations/0010_auto_20160711_1825.py +++ b/library/migrations/0010_auto_20160711_1825.py @@ -1,52 +1,52 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-11 18:25 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('library', '0009_auto_20160711_1755'), - ] - - operations = [ - migrations.CreateModel( - name='Likes', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('result', models.IntegerField(verbose_name='\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442')), - ('user', 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')), - ], - options={ - 'verbose_name': '\u041b\u0430\u0439\u043a', - 'verbose_name_plural': '\u041b\u0430\u0439\u043a\u0438', - }, - ), - migrations.AlterModelOptions( - name='article', - options={'ordering': ['-date'], 'verbose_name': '\u0421\u0442\u0430\u0442\u044c\u044f', 'verbose_name_plural': '\u0421\u0442\u0430\u0442\u044c\u0438'}, - ), - migrations.RemoveField( - model_name='article', - name='likes', - ), - migrations.RemoveField( - model_name='article', - name='views', - ), - migrations.AddField( - model_name='article', - name='views', - field=models.ManyToManyField(default=0, max_length=255, to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u044b'), - ), - migrations.AddField( - model_name='article', - name='likes', - field=models.ManyToManyField(default=0, max_length=255, to='library.Likes', verbose_name='\u041b\u0430\u0439\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-11 18:25 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('library', '0009_auto_20160711_1755'), + ] + + operations = [ + migrations.CreateModel( + name='Likes', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('result', models.IntegerField(verbose_name='\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442')), + ('user', 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')), + ], + options={ + 'verbose_name': '\u041b\u0430\u0439\u043a', + 'verbose_name_plural': '\u041b\u0430\u0439\u043a\u0438', + }, + ), + migrations.AlterModelOptions( + name='article', + options={'ordering': ['-date'], 'verbose_name': '\u0421\u0442\u0430\u0442\u044c\u044f', 'verbose_name_plural': '\u0421\u0442\u0430\u0442\u044c\u0438'}, + ), + migrations.RemoveField( + model_name='article', + name='likes', + ), + migrations.RemoveField( + model_name='article', + name='views', + ), + migrations.AddField( + model_name='article', + name='views', + field=models.ManyToManyField(default=0, max_length=255, to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u044b'), + ), + migrations.AddField( + model_name='article', + name='likes', + field=models.ManyToManyField(default=0, max_length=255, to='library.Likes', verbose_name='\u041b\u0430\u0439\u043a\u0438'), + ), + ] diff --git a/library/migrations/0011_auto_20160711_2007.py b/library/migrations/0011_auto_20160711_2007.py old mode 100755 new mode 100644 index b61547a..9b4c64a --- a/library/migrations/0011_auto_20160711_2007.py +++ b/library/migrations/0011_auto_20160711_2007.py @@ -1,27 +1,27 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-11 20:07 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('library', '0010_auto_20160711_1825'), - ] - - operations = [ - migrations.AddField( - model_name='article', - name='favorite', - field=models.ManyToManyField(blank=True, null=True, related_name='article_as_favorites', to=settings.AUTH_USER_MODEL, verbose_name='\u0412 \u0444\u0430\u0432\u043e\u0440\u0438\u0442\u0430\u0445'), - ), - migrations.AlterField( - model_name='article', - name='views', - field=models.ManyToManyField(default=0, max_length=255, related_name='article_views', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u044b'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-11 20:07 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('library', '0010_auto_20160711_1825'), + ] + + operations = [ + migrations.AddField( + model_name='article', + name='favorite', + field=models.ManyToManyField(blank=True, null=True, related_name='article_as_favorites', to=settings.AUTH_USER_MODEL, verbose_name='\u0412 \u0444\u0430\u0432\u043e\u0440\u0438\u0442\u0430\u0445'), + ), + migrations.AlterField( + model_name='article', + name='views', + field=models.ManyToManyField(default=0, max_length=255, related_name='article_views', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u044b'), + ), + ] diff --git a/library/migrations/0012_auto_20160712_1206.py b/library/migrations/0012_auto_20160712_1206.py old mode 100755 new mode 100644 index 51014f7..969b373 --- a/library/migrations/0012_auto_20160712_1206.py +++ b/library/migrations/0012_auto_20160712_1206.py @@ -1,51 +1,51 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-12 12:06 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('library', '0011_auto_20160711_2007'), - ] - - operations = [ - migrations.CreateModel( - name='ArticleSection', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255, verbose_name='\u0420\u0430\u0437\u0434\u0435\u043b')), - ], - options={ - 'verbose_name': '\u0420\u0430\u0437\u0434\u0435\u043b \u0441\u0442\u0430\u0442\u044c\u0438', - 'verbose_name_plural': '\u0420\u0430\u0437\u0434\u0435\u043b\u044b \u0441\u0442\u0430\u0442\u0435\u0439', - }, - ), - migrations.RemoveField( - model_name='article', - name='section', - ), - migrations.AlterField( - model_name='article', - name='comments', - field=models.ManyToManyField(blank=True, editable=False, null=True, to='management.Comment', verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438'), - ), - migrations.AlterField( - model_name='article', - name='favorite', - field=models.ManyToManyField(blank=True, editable=False, null=True, related_name='article_as_favorites', to=settings.AUTH_USER_MODEL, verbose_name='\u0412 \u0444\u0430\u0432\u043e\u0440\u0438\u0442\u0430\u0445'), - ), - migrations.AlterField( - model_name='article', - name='likes', - field=models.ManyToManyField(blank=True, default=0, editable=False, max_length=255, to='library.Likes', verbose_name='\u041b\u0430\u0439\u043a\u0438'), - ), - migrations.AlterField( - model_name='article', - name='views', - field=models.ManyToManyField(default=0, editable=False, max_length=255, related_name='article_views', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u044b'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-12 12:06 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0011_auto_20160711_2007'), + ] + + operations = [ + migrations.CreateModel( + name='ArticleSection', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='\u0420\u0430\u0437\u0434\u0435\u043b')), + ], + options={ + 'verbose_name': '\u0420\u0430\u0437\u0434\u0435\u043b \u0441\u0442\u0430\u0442\u044c\u0438', + 'verbose_name_plural': '\u0420\u0430\u0437\u0434\u0435\u043b\u044b \u0441\u0442\u0430\u0442\u0435\u0439', + }, + ), + migrations.RemoveField( + model_name='article', + name='section', + ), + migrations.AlterField( + model_name='article', + name='comments', + field=models.ManyToManyField(blank=True, editable=False, null=True, to='management.Comment', verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438'), + ), + migrations.AlterField( + model_name='article', + name='favorite', + field=models.ManyToManyField(blank=True, editable=False, null=True, related_name='article_as_favorites', to=settings.AUTH_USER_MODEL, verbose_name='\u0412 \u0444\u0430\u0432\u043e\u0440\u0438\u0442\u0430\u0445'), + ), + migrations.AlterField( + model_name='article', + name='likes', + field=models.ManyToManyField(blank=True, default=0, editable=False, max_length=255, to='library.Likes', verbose_name='\u041b\u0430\u0439\u043a\u0438'), + ), + migrations.AlterField( + model_name='article', + name='views', + field=models.ManyToManyField(default=0, editable=False, max_length=255, related_name='article_views', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u044b'), + ), + ] diff --git a/library/migrations/0013_article_section.py b/library/migrations/0013_article_section.py old mode 100755 new mode 100644 index 895928c..63f73b9 --- a/library/migrations/0013_article_section.py +++ b/library/migrations/0013_article_section.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-12 12:07 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('library', '0012_auto_20160712_1206'), - ] - - operations = [ - migrations.AddField( - model_name='article', - name='section', - field=models.ForeignKey(blank=True, default='', max_length=255, null=True, on_delete=django.db.models.deletion.CASCADE, to='library.ArticleSection', verbose_name='\u0420\u0430\u0437\u0434\u0435\u043b'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-12 12:07 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0012_auto_20160712_1206'), + ] + + operations = [ + migrations.AddField( + model_name='article', + name='section', + field=models.ForeignKey(blank=True, default='', max_length=255, null=True, on_delete=django.db.models.deletion.CASCADE, to='library.ArticleSection', verbose_name='\u0420\u0430\u0437\u0434\u0435\u043b'), + ), + ] diff --git a/library/migrations/0014_auto_20160712_1213.py b/library/migrations/0014_auto_20160712_1213.py old mode 100755 new mode 100644 index d65f0af..0659c42 --- a/library/migrations/0014_auto_20160712_1213.py +++ b/library/migrations/0014_auto_20160712_1213.py @@ -1,22 +1,22 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-12 12:13 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('library', '0013_article_section'), - ] - - operations = [ - migrations.AlterField( - model_name='article', - name='section', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='library.ArticleSection', verbose_name='\u0420\u0430\u0437\u0434\u0435\u043b'), - preserve_default=False, - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-12 12:13 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0013_article_section'), + ] + + operations = [ + migrations.AlterField( + model_name='article', + name='section', + field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='library.ArticleSection', verbose_name='\u0420\u0430\u0437\u0434\u0435\u043b'), + preserve_default=False, + ), + ] diff --git a/library/migrations/0015_auto_20160713_1356.py b/library/migrations/0015_auto_20160713_1356.py old mode 100755 new mode 100644 index e527cc6..13422cc --- a/library/migrations/0015_auto_20160713_1356.py +++ b/library/migrations/0015_auto_20160713_1356.py @@ -1,30 +1,30 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-13 13:56 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('library', '0014_auto_20160712_1213'), - ] - - operations = [ - migrations.AddField( - model_name='article', - name='slug', - field=models.SlugField(blank=True, default='', editable=False, max_length=255), - ), - migrations.AlterField( - model_name='article', - name='css', - field=models.TextField(blank=True, default='', help_text='\u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0441\u0435, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c http \u043d\u0430 https', verbose_name='CSS'), - ), - migrations.AlterField( - model_name='article', - name='js', - field=models.TextField(blank=True, default='', help_text='\u0423\u0434\u0430\u043b\u0438\u0442\u044c bootstrap, jquery \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c http \u043d\u0430 https', verbose_name='JS'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-13 13:56 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0014_auto_20160712_1213'), + ] + + operations = [ + migrations.AddField( + model_name='article', + name='slug', + field=models.SlugField(blank=True, default='', editable=False, max_length=255), + ), + migrations.AlterField( + model_name='article', + name='css', + field=models.TextField(blank=True, default='', help_text='\u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0441\u0435, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c http \u043d\u0430 https', verbose_name='CSS'), + ), + migrations.AlterField( + model_name='article', + name='js', + field=models.TextField(blank=True, default='', help_text='\u0423\u0434\u0430\u043b\u0438\u0442\u044c bootstrap, jquery \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c http \u043d\u0430 https', verbose_name='JS'), + ), + ] diff --git a/library/migrations/0016_auto_20160713_1419.py b/library/migrations/0016_auto_20160713_1419.py old mode 100755 new mode 100644 index 3cde273..de6bd5a --- a/library/migrations/0016_auto_20160713_1419.py +++ b/library/migrations/0016_auto_20160713_1419.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-13 14:19 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('library', '0015_auto_20160713_1356'), - ] - - operations = [ - migrations.AlterField( - model_name='article', - name='slug', - field=models.SlugField(blank=True, default='', editable=False, max_length=255, unique=True), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-13 14:19 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0015_auto_20160713_1356'), + ] + + operations = [ + migrations.AlterField( + model_name='article', + name='slug', + field=models.SlugField(blank=True, default='', editable=False, max_length=255, unique=True), + ), + ] diff --git a/library/migrations/0017_auto_20160713_2039.py b/library/migrations/0017_auto_20160713_2039.py old mode 100755 new mode 100644 index c7fe5a1..ae7e181 --- a/library/migrations/0017_auto_20160713_2039.py +++ b/library/migrations/0017_auto_20160713_2039.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-13 20:39 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('library', '0016_auto_20160713_1419'), - ] - - operations = [ - migrations.RenameField( - model_name='article', - old_name='haed_description', - new_name='head_description', - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-13 20:39 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0016_auto_20160713_1419'), + ] + + operations = [ + migrations.RenameField( + model_name='article', + old_name='haed_description', + new_name='head_description', + ), + ] diff --git a/library/migrations/0018_remove_article_likes.py b/library/migrations/0018_remove_article_likes.py old mode 100755 new mode 100644 index de591c7..bd768ac --- a/library/migrations/0018_remove_article_likes.py +++ b/library/migrations/0018_remove_article_likes.py @@ -1,19 +1,19 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-19 19:37 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('library', '0017_auto_20160713_2039'), - ] - - operations = [ - migrations.RemoveField( - model_name='article', - name='likes', - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-19 19:37 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0017_auto_20160713_2039'), + ] + + operations = [ + migrations.RemoveField( + model_name='article', + name='likes', + ), + ] diff --git a/library/migrations/0019_article_likes.py b/library/migrations/0019_article_likes.py old mode 100755 new mode 100644 index 2f0f2bb..85b20eb --- a/library/migrations/0019_article_likes.py +++ b/library/migrations/0019_article_likes.py @@ -1,22 +1,22 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-19 19:38 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('library', '0018_remove_article_likes'), - ] - - operations = [ - migrations.AddField( - model_name='article', - name='likes', - field=models.ManyToManyField(blank=True, editable=False, max_length=255, null=True, related_name='acticle_likes', to=settings.AUTH_USER_MODEL, verbose_name='\u041b\u0430\u0439\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-19 19:38 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('library', '0018_remove_article_likes'), + ] + + operations = [ + migrations.AddField( + model_name='article', + name='likes', + field=models.ManyToManyField(blank=True, editable=False, max_length=255, null=True, related_name='acticle_likes', to=settings.AUTH_USER_MODEL, verbose_name='\u041b\u0430\u0439\u043a\u0438'), + ), + ] diff --git a/library/migrations/0020_auto_20160722_1831.py b/library/migrations/0020_auto_20160722_1831.py old mode 100755 new mode 100644 index 8ba8f85..ec71924 --- a/library/migrations/0020_auto_20160722_1831.py +++ b/library/migrations/0020_auto_20160722_1831.py @@ -1,27 +1,27 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-22 18:31 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('library', '0019_article_likes'), - ] - - operations = [ - migrations.RemoveField( - model_name='likes', - name='user', - ), - migrations.AddField( - model_name='article', - name='all_views', - field=models.IntegerField(blank=True, default=0, verbose_name='\u0412\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u0432'), - ), - migrations.DeleteModel( - name='Likes', - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-22 18:31 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0019_article_likes'), + ] + + operations = [ + migrations.RemoveField( + model_name='likes', + name='user', + ), + migrations.AddField( + model_name='article', + name='all_views', + field=models.IntegerField(blank=True, default=0, verbose_name='\u0412\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u0432'), + ), + migrations.DeleteModel( + name='Likes', + ), + ] diff --git a/library/migrations/0021_auto_20160814_1736.py b/library/migrations/0021_auto_20160814_1736.py old mode 100755 new mode 100644 index affa539..926fcfd --- a/library/migrations/0021_auto_20160814_1736.py +++ b/library/migrations/0021_auto_20160814_1736.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-08-14 17:36 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('library', '0020_auto_20160722_1831'), - ] - - operations = [ - migrations.AlterField( - model_name='article', - name='comments', - field=models.ManyToManyField(blank=True, null=True, to='management.Comment', verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-08-14 17:36 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0020_auto_20160722_1831'), + ] + + operations = [ + migrations.AlterField( + model_name='article', + name='comments', + field=models.ManyToManyField(blank=True, null=True, to='management.Comment', verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438'), + ), + ] diff --git a/library/migrations/__init__.py b/library/migrations/__init__.py old mode 100755 new mode 100644 diff --git a/library/models.py b/library/models.py old mode 100755 new mode 100644 index 3dd0c20..5b2da15 --- a/library/models.py +++ b/library/models.py @@ -1,159 +1,159 @@ -# coding=utf-8 -from __future__ import unicode_literals -import datetime -import re -from django.db import models -from management.models import Comment -from lms.tools import out_date_format, translit -from lms.settings import DOMAIN -from access.models import User -from courses.templates import comment_fabric - - -class ArticleSection(models.Model): - name = models.CharField(verbose_name=u'Раздел', max_length=255) - - def __str__(self): return '%s' % self.name - - def __unicode__(self): return u'%s' % self.name - - class Meta: - verbose_name = u'Раздел статьи' - verbose_name_plural = u'Разделы статей' - - -class Article(models.Model): - public = models.BooleanField(verbose_name=u'Опубликовать', default=True) - slug = models.SlugField(max_length=255, editable=False, blank=True, default='', unique=True) - head_title = models.CharField(verbose_name=u'Заголовок для соц сетей', max_length=255, blank=True, null=True) - head_description = models.CharField(verbose_name=u'Описание в заголовке для соц сетей', max_length=255, blank=True, null=True) - head_image = models.ImageField(verbose_name=u'Картинка для соц сетей', upload_to='library', blank=True, null=True) - title = models.CharField(verbose_name=u'Заголовок', max_length=255) - section = models.ForeignKey(ArticleSection, verbose_name=u'Раздел') - preview = models.TextField(verbose_name=u'Превьюшка', blank=True, default='') - preview_img = models.ImageField(verbose_name=u'Превьюшка заливки', upload_to='library', blank=True, null=True) - page = models.TextField(verbose_name=u'PAGE') - css = models.TextField(verbose_name=u'CSS', blank=True, default='', help_text=u'Можно добавлять все, но только исправить http на https') - js = models.TextField(verbose_name=u'JS', blank=True, default='', help_text=u'Удалить bootstrap, jquery и заменить http на https') - date = models.DateTimeField(verbose_name=u'Дата публикации', default=datetime.datetime.now, editable=False) - tags = models.ManyToManyField('Tags', verbose_name=u'Теги', blank=True) - likes = models.ManyToManyField(User, verbose_name=u'Лайки', max_length=255, blank=True, editable=False, related_name=u'acticle_likes') - views = models.ManyToManyField(User, verbose_name=u'Просмотры', max_length=255, default=0, related_name='article_views', editable=False) - all_views = models.IntegerField(verbose_name=u'Всего просмотров', default=0, blank=True) - comments = models.ManyToManyField(Comment, verbose_name=u'Комментарии', blank=True, editable=False) - favorite = models.ManyToManyField(User, verbose_name=u'В фаворитах', blank=True, related_name='article_as_favorites', editable=False) - - def __str__(self): return '%s' % self.title - - def __unicode__(self): return u'%s' % self.title - - def get_date(self): - return out_date_format(self.date, no_time=True) - - def set_favorite(self, user): - if user not in self.favorite.all(): - self.favorite.add(user) - - def unset_favorite(self, user): - if user in self.favorite.all(): - self.favorite.remove(user) - - def get_face(self, user): - return { - 'id': self.id, - 'title': self.title, - 'slug': self.slug, - 'social': {'title': self.head_title if self.head_title else self.title, 'description': self.head_description if self.head_description else self.preview, 'image': self.head_image.url if self.head_image else DOMAIN + '/static/img/3818cc0ec1.png'}, - 'preview': {'title': self.title, 'description': self.preview, 'image': self.preview_img.url if self.preview_img else DOMAIN + '/static/img/3818cc0ec1.png'}, - 'page': self.page, - 'css': self.css, - 'js': self.js, - 'date': self.get_date(), - 'tags': {'count': self.get_tags_length(), 'content': self.tags.all()}, - 'likes': {'count': self.get_likes_length(), 'content': self.likes.all()}, - 'views': {'count': self.get_views_length(), 'content': self.views.all()}, - 'favorites': {'count': self.get_favorite_length(), 'content': self.favorite.all()}, - 'comments': {'count': self.get_comments_length(), 'content': self.comments.all()}, - 'section': {'title': self.section.name, 'id': self.section.id}, - 'like': self.check_like_exists(user) if user.is_authenticated() else False, - 'view': self.check_view_exists(user) if user.is_authenticated() else False, - 'favorite': self.check_favorit_exists(user) if user.is_authenticated() else False - } - - def get_comments(self, _user=None): - # Получить все комментарии урока - return [comment_fabric(comment, __type='L', __user=_user) for comment in self.comments.filter(parent_id=0)] - - def get_all_comments(self, _user=None): - return [comment_fabric(comment, __type='L', __user=_user) for comment in self.comments.all().order_by('-date')] - - def check_favorit_exists(self, user): - return user in self.favorite.all() - - def check_view_exists(self, user): - return user in self.views.all() - - def check_like_exists(self, user): - return user in self.likes.all() - - def like_plus(self, user): - result = False - if user not in self.likes.all(): - self.likes.add(user) - result = True - return result - - def like_minus(self, user): - result = False - if user in self.likes.all(): - self.likes.remove(user) - result = True - return result - - def get_likes_length(self): - return self.likes.count() - - def get_views_length(self): - return self.all_views - - def views_plus(self, user): - self.all_views += 1 - if user.is_authenticated(): - if not self.views.filter(id=user.id).exists(): - self.views.add(user) - self.save() - - def get_comments_length(self): - return self.comments.filter(closed=False).count() - - def get_favorite_length(self): - return self.favorite.count() - - def get_tags_length(self): - return self.tags.count() - - def get_absolute_url(self): - return '/library/article/%s' % self.slug - - def save(self, *args, **kwargs): - self.slug = '{0}'.format(translit(self.title, only_letter=True)) - super(Article, self).save(*args, **kwargs) - - class Meta: - verbose_name = u'Статья' - verbose_name_plural = u'Статьи' - ordering = ['-date'] - - -class Tags(models.Model): - name = models.CharField(verbose_name=u'Теги', max_length=255) - - def __str__(self): - return '%s' % self.name - - def __unicode__(self): - return 'u%s' % self.name - - class Meta: - verbose_name = u'Тег' - verbose_name_plural = u'Теги' +# coding=utf-8 +from __future__ import unicode_literals +import datetime +import re +from django.db import models +from management.models import Comment +from lms.tools import out_date_format, translit +from lms.settings import DOMAIN +from access.models import User +from courses.templates import comment_fabric + + +class ArticleSection(models.Model): + name = models.CharField(verbose_name=u'Раздел', max_length=255) + + def __str__(self): return '%s' % self.name + + def __unicode__(self): return u'%s' % self.name + + class Meta: + verbose_name = u'Раздел статьи' + verbose_name_plural = u'Разделы статей' + + +class Article(models.Model): + public = models.BooleanField(verbose_name=u'Опубликовать', default=True) + slug = models.SlugField(max_length=255, editable=False, blank=True, default='', unique=True) + head_title = models.CharField(verbose_name=u'Заголовок для соц сетей', max_length=255, blank=True, null=True) + head_description = models.CharField(verbose_name=u'Описание в заголовке для соц сетей', max_length=255, blank=True, null=True) + head_image = models.ImageField(verbose_name=u'Картинка для соц сетей', upload_to='library', blank=True, null=True) + title = models.CharField(verbose_name=u'Заголовок', max_length=255) + section = models.ForeignKey(ArticleSection, verbose_name=u'Раздел') + preview = models.TextField(verbose_name=u'Превьюшка', blank=True, default='') + preview_img = models.ImageField(verbose_name=u'Превьюшка заливки', upload_to='library', blank=True, null=True) + page = models.TextField(verbose_name=u'PAGE') + css = models.TextField(verbose_name=u'CSS', blank=True, default='', help_text=u'Можно добавлять все, но только исправить http на https') + js = models.TextField(verbose_name=u'JS', blank=True, default='', help_text=u'Удалить bootstrap, jquery и заменить http на https') + date = models.DateTimeField(verbose_name=u'Дата публикации', default=datetime.datetime.now, editable=False) + tags = models.ManyToManyField('Tags', verbose_name=u'Теги', blank=True) + likes = models.ManyToManyField(User, verbose_name=u'Лайки', max_length=255, blank=True, editable=False, related_name=u'acticle_likes') + views = models.ManyToManyField(User, verbose_name=u'Просмотры', max_length=255, default=0, related_name='article_views', editable=False) + all_views = models.IntegerField(verbose_name=u'Всего просмотров', default=0, blank=True) + comments = models.ManyToManyField(Comment, verbose_name=u'Комментарии', blank=True, editable=False) + favorite = models.ManyToManyField(User, verbose_name=u'В фаворитах', blank=True, related_name='article_as_favorites', editable=False) + + def __str__(self): return '%s' % self.title + + def __unicode__(self): return u'%s' % self.title + + def get_date(self): + return out_date_format(self.date, no_time=True) + + def set_favorite(self, user): + if user not in self.favorite.all(): + self.favorite.add(user) + + def unset_favorite(self, user): + if user in self.favorite.all(): + self.favorite.remove(user) + + def get_face(self, user): + return { + 'id': self.id, + 'title': self.title, + 'slug': self.slug, + 'social': {'title': self.head_title if self.head_title else self.title, 'description': self.head_description if self.head_description else self.preview, 'image': self.head_image.url if self.head_image else DOMAIN + '/static/img/3818cc0ec1.png'}, + 'preview': {'title': self.title, 'description': self.preview, 'image': self.preview_img.url if self.preview_img else DOMAIN + '/static/img/3818cc0ec1.png'}, + 'page': self.page, + 'css': self.css, + 'js': self.js, + 'date': self.get_date(), + 'tags': {'count': self.get_tags_length(), 'content': self.tags.all()}, + 'likes': {'count': self.get_likes_length(), 'content': self.likes.all()}, + 'views': {'count': self.get_views_length(), 'content': self.views.all()}, + 'favorites': {'count': self.get_favorite_length(), 'content': self.favorite.all()}, + 'comments': {'count': self.get_comments_length(), 'content': self.comments.all()}, + 'section': {'title': self.section.name, 'id': self.section.id}, + 'like': self.check_like_exists(user) if user.is_authenticated() else False, + 'view': self.check_view_exists(user) if user.is_authenticated() else False, + 'favorite': self.check_favorit_exists(user) if user.is_authenticated() else False + } + + def get_comments(self, _user=None): + # Получить все комментарии урока + return [comment_fabric(comment, __type='L', __user=_user) for comment in self.comments.filter(parent_id=0)] + + def get_all_comments(self, _user=None): + return [comment_fabric(comment, __type='L', __user=_user) for comment in self.comments.all().order_by('-date')] + + def check_favorit_exists(self, user): + return user in self.favorite.all() + + def check_view_exists(self, user): + return user in self.views.all() + + def check_like_exists(self, user): + return user in self.likes.all() + + def like_plus(self, user): + result = False + if user not in self.likes.all(): + self.likes.add(user) + result = True + return result + + def like_minus(self, user): + result = False + if user in self.likes.all(): + self.likes.remove(user) + result = True + return result + + def get_likes_length(self): + return self.likes.count() + + def get_views_length(self): + return self.all_views + + def views_plus(self, user): + self.all_views += 1 + if user.is_authenticated(): + if not self.views.filter(id=user.id).exists(): + self.views.add(user) + self.save() + + def get_comments_length(self): + return self.comments.filter(closed=False).count() + + def get_favorite_length(self): + return self.favorite.count() + + def get_tags_length(self): + return self.tags.count() + + def get_absolute_url(self): + return '/library/article/%s' % self.slug + + def save(self, *args, **kwargs): + self.slug = '{0}'.format(translit(self.title, only_letter=True)) + super(Article, self).save(*args, **kwargs) + + class Meta: + verbose_name = u'Статья' + verbose_name_plural = u'Статьи' + ordering = ['-date'] + + +class Tags(models.Model): + name = models.CharField(verbose_name=u'Теги', max_length=255) + + def __str__(self): + return '%s' % self.name + + def __unicode__(self): + return 'u%s' % self.name + + class Meta: + verbose_name = u'Тег' + verbose_name_plural = u'Теги' diff --git a/library/urls.py b/library/urls.py old mode 100755 new mode 100644 index 6edd076..2c5a38c --- a/library/urls.py +++ b/library/urls.py @@ -1,20 +1,20 @@ -from library import views, api -from django.conf.urls import url - - -urlpatterns = [ - url(r'articles/', views.articles), - url(r'article/(?P.*)/$', views.article), - url(r'unset_favorite/$', api.unset_favorite), - url(r'set_favorite/$', api.set_favorite), - url(r'check_favorite/$', api.check_favorite), - url(r'get_comments_length/$', api.get_comments_length), - url(r'sent_comment/$', api.sent_comment), - url(r'load_comments/$', api.load_comments), - url(r'unset_like/$', api.unset_like), - url(r'set_like/$', api.set_like), - url(r'refresh_like/$', api.refresh_like), - url(r'get_articles_length/$', api.get_articles_length), - url(r'get_random_article/$', api.get_random_article), - url(r'get_all_views_length/$', api.get_all_views_length) -] +from library import views, api +from django.conf.urls import url + + +urlpatterns = [ + url(r'articles/', views.articles), + url(r'article/(?P.*)/$', views.article), + url(r'unset_favorite/$', api.unset_favorite), + url(r'set_favorite/$', api.set_favorite), + url(r'check_favorite/$', api.check_favorite), + url(r'get_comments_length/$', api.get_comments_length), + url(r'sent_comment/$', api.sent_comment), + url(r'load_comments/$', api.load_comments), + url(r'unset_like/$', api.unset_like), + url(r'set_like/$', api.set_like), + url(r'refresh_like/$', api.refresh_like), + url(r'get_articles_length/$', api.get_articles_length), + url(r'get_random_article/$', api.get_random_article), + url(r'get_all_views_length/$', api.get_all_views_length) +] diff --git a/library/views.py b/library/views.py old mode 100755 new mode 100644 index 8b5b186..6f9f84b --- a/library/views.py +++ b/library/views.py @@ -1,22 +1,22 @@ -from django.http import Http404 -from lms.decors import response_decor -from library.models import Article - - -@response_decor(template='articles.html', without_auth=True) -def article(request, slug): - try: - a = Article.objects.get(slug=slug) - except Article.DoesNotExist: - raise Http404 - else: - a.views_plus(request.user) - return {'article': a.get_face(request.user)} - - -@response_decor(template='all_articles.html', without_auth=True) -def articles(request): - views = 0 - for i in Article.objects.filter(public=True): - views += i.get_views_length() - return {'articles': [article.get_face(request.user) for article in Article.objects.filter(public=True)], 'views': views} +from django.http import Http404 +from lms.decors import response_decor +from library.models import Article + + +@response_decor(template='articles.html', without_auth=True) +def article(request, slug): + try: + a = Article.objects.get(slug=slug) + except Article.DoesNotExist: + raise Http404 + else: + a.views_plus(request.user) + return {'article': a.get_face(request.user)} + + +@response_decor(template='all_articles.html', without_auth=True) +def articles(request): + views = 0 + for i in Article.objects.filter(public=True): + views += i.get_views_length() + return {'articles': [article.get_face(request.user) for article in Article.objects.filter(public=True)], 'views': views} diff --git a/manage.py b/manage.py old mode 100755 new mode 100644 index a16f12f..a6beac0 --- a/manage.py +++ b/manage.py @@ -1,10 +1,10 @@ -#! /usr/bin/env python -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") - - from django.core.management import execute_from_command_line - - execute_from_command_line(sys.argv) +#! /usr/bin/env python +import os +import sys + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") + + from django.core.management import execute_from_command_line + + execute_from_command_line(sys.argv) diff --git a/management/__init__.py b/management/__init__.py old mode 100755 new mode 100644 diff --git a/management/admin.py b/management/admin.py old mode 100755 new mode 100644 index b972433..f2015aa --- a/management/admin.py +++ b/management/admin.py @@ -1,104 +1,104 @@ -from django.contrib import admin - -from access.models import User -from management.models import Comment, Feedback, News, CommentSawTable, Faq, FaqTitle, Newsletter, NewsletterShell, \ - ModalJournal, ModalTask, Modal, ModalTemplate, ModalPlace - - -class NewsletterShellAdmin(admin.ModelAdmin): - list_display = ('name', ) - -admin.site.register(NewsletterShell, NewsletterShellAdmin) - - -class NewsletterAdmin(admin.ModelAdmin): - list_display = ('author', 'shell', 'date', 'sent_date', 'status', ) - filter_horizontal = ('recipient', 'f_recipient', ) - search_fields = ('author__id', 'author__email', 'author__fname', 'author__name', 'author__oname', ) - list_filter = ('date', 'sent_date', 'status', ) - -admin.site.register(Newsletter, NewsletterAdmin) - - -class CommentAdmin(admin.ModelAdmin): - list_display = ('id', 'parent_id', 'owner', 'closed', 'status', 'date', 'token', ) - search_fields = ['id', 'token'] - filter_horizontal = ('files', ) - list_filter = ('status', 'date',) - -admin.site.register(Comment, CommentAdmin) - - -class FeedbackAdmin(admin.ModelAdmin): - list_display = ('name', 'email', 'phone', 'date', 'closed',) - -admin.site.register(Feedback, FeedbackAdmin) - - -class NewsAdmin(admin.ModelAdmin): - list_display = ('title', 'author', 'public', 'public_date',) - - -admin.site.register(News, NewsAdmin) - - -class CommentSawTableAdmin(admin.ModelAdmin): - list_display = ('user', 'comment', 'date', ) - - -admin.site.register(CommentSawTable, CommentSawTableAdmin) - - -class FaqTitleAdmin(admin.ModelAdmin): - list_display = ('title', 'icon', 'is_admin', 'is_staff', ) - -admin.site.register(FaqTitle, FaqTitleAdmin) - - -class FaqAdmin(admin.ModelAdmin): - list_display = ('title', 'answer', ) - search_fields = ['answer', 'title'] - list_filter = ['title'] - -admin.site.register(Faq, FaqAdmin) - - -class ModalPlaceAdmin(admin.ModelAdmin): - list_display = ('key', 'public',) - list_filter = ('public',) - search_fields = ('key',) - -admin.site.register(ModalPlace, ModalPlaceAdmin) - - -class ModalTemplateAdmin(admin.ModelAdmin): - list_display = ('title', 'key', 'place', ) - list_filter = ('key', 'place',) - search_fields = ('title', 'slug', 'key', 'place__key',) - -admin.site.register(ModalTemplate, ModalTemplateAdmin) - - -class ModalAdmin(admin.ModelAdmin): - list_display = ('title', 'id', 'template', 'views', 'closes', 'interval', 'show_time', 'hide_time', 'close',) - list_filter = ('show_time', 'hide_time', 'template__key', ) - search_fields = ('title', 'template__key', 'template__title', ) - -admin.site.register(Modal, ModalAdmin) - - -class ModalTaskAdmin(admin.ModelAdmin): - list_display = ('modal', 'manager', 'date', 'status',) - list_filter = ('status', 'date', 'modal',) - search_fields = ('user__email', 'user__fname', 'user__name', 'user__oname', 'modal__title', 'modal__template__key') - filter_horizontal = ('user',) - -admin.site.register(ModalTask, ModalTaskAdmin) - - -class ModalJournalAdmin(admin.ModelAdmin): - list_display = ('user', 'task', 'date', 'views', 'closes', 'key', 'status',) - list_filter = ('date', 'status',) - search_fields = ('user__email', 'user__fname', 'user__name', 'user__oname', 'key',) - -admin.site.register(ModalJournal, ModalJournalAdmin) +from django.contrib import admin + +from access.models import User +from management.models import Comment, Feedback, News, CommentSawTable, Faq, FaqTitle, Newsletter, NewsletterShell, \ + ModalJournal, ModalTask, Modal, ModalTemplate, ModalPlace + + +class NewsletterShellAdmin(admin.ModelAdmin): + list_display = ('name', ) + +admin.site.register(NewsletterShell, NewsletterShellAdmin) + + +class NewsletterAdmin(admin.ModelAdmin): + list_display = ('author', 'shell', 'date', 'sent_date', 'status', ) + filter_horizontal = ('recipient', 'f_recipient', ) + search_fields = ('author__id', 'author__email', 'author__fname', 'author__name', 'author__oname', ) + list_filter = ('date', 'sent_date', 'status', ) + +admin.site.register(Newsletter, NewsletterAdmin) + + +class CommentAdmin(admin.ModelAdmin): + list_display = ('id', 'parent_id', 'owner', 'closed', 'status', 'date', 'token', ) + search_fields = ['id', 'token'] + filter_horizontal = ('files', ) + list_filter = ('status', 'date',) + +admin.site.register(Comment, CommentAdmin) + + +class FeedbackAdmin(admin.ModelAdmin): + list_display = ('name', 'email', 'phone', 'date', 'closed',) + +admin.site.register(Feedback, FeedbackAdmin) + + +class NewsAdmin(admin.ModelAdmin): + list_display = ('title', 'author', 'public', 'public_date',) + + +admin.site.register(News, NewsAdmin) + + +class CommentSawTableAdmin(admin.ModelAdmin): + list_display = ('user', 'comment', 'date', ) + + +admin.site.register(CommentSawTable, CommentSawTableAdmin) + + +class FaqTitleAdmin(admin.ModelAdmin): + list_display = ('title', 'icon', 'is_admin', 'is_staff', ) + +admin.site.register(FaqTitle, FaqTitleAdmin) + + +class FaqAdmin(admin.ModelAdmin): + list_display = ('title', 'answer', ) + search_fields = ['answer', 'title'] + list_filter = ['title'] + +admin.site.register(Faq, FaqAdmin) + + +class ModalPlaceAdmin(admin.ModelAdmin): + list_display = ('key', 'public',) + list_filter = ('public',) + search_fields = ('key',) + +admin.site.register(ModalPlace, ModalPlaceAdmin) + + +class ModalTemplateAdmin(admin.ModelAdmin): + list_display = ('title', 'key', 'place', ) + list_filter = ('key', 'place',) + search_fields = ('title', 'slug', 'key', 'place__key',) + +admin.site.register(ModalTemplate, ModalTemplateAdmin) + + +class ModalAdmin(admin.ModelAdmin): + list_display = ('title', 'id', 'template', 'views', 'closes', 'interval', 'show_time', 'hide_time', 'close',) + list_filter = ('show_time', 'hide_time', 'template__key', ) + search_fields = ('title', 'template__key', 'template__title', ) + +admin.site.register(Modal, ModalAdmin) + + +class ModalTaskAdmin(admin.ModelAdmin): + list_display = ('modal', 'manager', 'date', 'status',) + list_filter = ('status', 'date', 'modal',) + search_fields = ('user__email', 'user__fname', 'user__name', 'user__oname', 'modal__title', 'modal__template__key') + filter_horizontal = ('user',) + +admin.site.register(ModalTask, ModalTaskAdmin) + + +class ModalJournalAdmin(admin.ModelAdmin): + list_display = ('user', 'task', 'date', 'views', 'closes', 'key', 'status',) + list_filter = ('date', 'status',) + search_fields = ('user__email', 'user__fname', 'user__name', 'user__oname', 'key',) + +admin.site.register(ModalJournal, ModalJournalAdmin) diff --git a/management/api.py b/management/api.py old mode 100755 new mode 100644 diff --git a/management/comments.py b/management/comments.py old mode 100755 new mode 100644 index cf2de1b..d42f21e --- a/management/comments.py +++ b/management/comments.py @@ -1,18 +1,18 @@ -# coding=utf-8 -from lms.decors import api_decor - -# Получить -@api_decor(without_auth=False, need_keys=['theme', 'student'], method='POST', check_request=True) -def load_homework_comments_for_teacher(request, context): - # Получение комментариев для преподавателя - homework = HomeworkJ.objects.get(material__theme__id=request.POST['theme'], student__id=request.POST['student'], - teacher=request.user) - context['data'] = [] - for i in homework.comments.filter(parent_id='0').order_by('date'): - context['data'].append(comment_fabric(i, __user=request.user)) - - if len(context['data']) == 0: - context['code'] = '0' - else: - context['code'] = '1' +# coding=utf-8 +from lms.decors import api_decor + +# Получить +@api_decor(without_auth=False, need_keys=['theme', 'student'], method='POST', check_request=True) +def load_homework_comments_for_teacher(request, context): + # Получение комментариев для преподавателя + homework = HomeworkJ.objects.get(material__theme__id=request.POST['theme'], student__id=request.POST['student'], + teacher=request.user) + context['data'] = [] + for i in homework.comments.filter(parent_id='0').order_by('date'): + context['data'].append(comment_fabric(i, __user=request.user)) + + if len(context['data']) == 0: + context['code'] = '0' + else: + context['code'] = '1' return context \ No newline at end of file diff --git a/management/letters.py b/management/letters.py old mode 100755 new mode 100644 diff --git a/management/mails.py b/management/mails.py old mode 100755 new mode 100644 index 4f18001..72a50d9 --- a/management/mails.py +++ b/management/mails.py @@ -1,18 +1,18 @@ -# coding=utf-8 -from service.models import MailBox - - -def letter_decor(): - # Обслуживание стандартного запроса http - def wrap_response(func): - def _render_json(*args, **kwargs): - data = func(*args, **kwargs) - MailBox.objects.create(_to=data['email'], - title=data['title'], - text=data['text'], - _type=data['type'], - template=data['template'] if data.get('template') else '', - result=data['result'] if data.get('result') else None, - ) - return _render_json - return wrap_response +# coding=utf-8 +from service.models import MailBox + + +def letter_decor(): + # Обслуживание стандартного запроса http + def wrap_response(func): + def _render_json(*args, **kwargs): + data = func(*args, **kwargs) + MailBox.objects.create(_to=data['email'], + title=data['title'], + text=data['text'], + _type=data['type'], + template=data['template'] if data.get('template') else '', + result=data['result'] if data.get('result') else None, + ) + return _render_json + return wrap_response diff --git a/management/migrations/0001_initial.py b/management/migrations/0001_initial.py old mode 100755 new mode 100644 index 8c95f77..8da6be1 --- a/management/migrations/0001_initial.py +++ b/management/migrations/0001_initial.py @@ -1,91 +1,91 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-18 16:46 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone -import redactor.fields - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('storage', '0001_initial'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Comment', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('closed', models.BooleanField(default=False, verbose_name='\u0417\u0430\u043a\u0440\u044b\u0442')), - ('parent_id', models.IntegerField(blank=True, default=0, verbose_name='ID \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430')), - ('text', models.TextField(default=b'', verbose_name='\u0422\u0435\u043a\u0441\u0442')), - ('date', models.DateTimeField(default=django.utils.timezone.now, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430')), - ('send', models.BooleanField(default=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e')), - ('files', models.ManyToManyField(blank=True, to='storage.Storage', verbose_name='\u041f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b')), - ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comment_owner', to=settings.AUTH_USER_MODEL, verbose_name='\u0410\u0432\u0442\u043e\u0440')), - ('saw', models.ManyToManyField(blank=True, to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0432\u0448\u0438\u0435')), - ], - options={ - 'ordering': ['id'], - 'verbose_name': '\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439', - 'verbose_name_plural': '\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438', - }, - ), - migrations.CreateModel( - name='CommentSawTable', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0412\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430')), - ('comment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='management.Comment', verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0432\u0448\u0438\u0439')), - ], - options={ - 'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430', - 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u0432', - }, - ), - migrations.CreateModel( - name='Feedback', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('closed', models.BooleanField(default=False, verbose_name='\u0412\u0437\u044f\u0442\u043e \u0432 \u0440\u0430\u0431\u043e\u0442\u0443')), - ('name', models.CharField(max_length=255, verbose_name='\u0418\u043c\u044f')), - ('email', models.CharField(max_length=255, verbose_name='Email')), - ('phone', models.CharField(max_length=255, verbose_name='\u0422\u0435\u043b\u0435\u0444\u043e\u043d')), - ('text', models.TextField(verbose_name='\u0422\u0435\u043a\u0441\u0442')), - ('date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0412\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f')), - ('send', models.BooleanField(default=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e')), - ], - options={ - 'verbose_name': '\u0412\u043e\u043f\u0440\u043e\u0441', - 'verbose_name_plural': '\u0412\u043e\u043f\u0440\u043e\u0441\u044b', - }, - ), - migrations.CreateModel( - name='News', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('public', models.BooleanField(default=False, verbose_name=b'\xd0\x9e\xd0\xbf\xd1\x83\xd0\xb1\xd0\xbb\xd0\xb8\xd0\xba\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd1\x8c')), - ('title', models.CharField(max_length=255, verbose_name=b'\xd0\x97\xd0\xb0\xd0\xb3\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xbe\xd0\xba')), - ('icon', models.ImageField(blank=True, upload_to=b'news', verbose_name='\u0418\u043a\u043e\u043d\u043a\u0430')), - ('image', models.ImageField(blank=True, upload_to=b'news', verbose_name=b'\xd0\x97\xd0\xb0\xd0\xb3\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xbe\xd1\x87\xd0\xbd\xd0\xbe\xd0\xb5 \xd0\xb8\xd0\xb7\xd0\xbe\xd0\xb1\xd1\x80\xd0\xb0\xd0\xb6\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5')), - ('content', redactor.fields.RedactorField(verbose_name=b'\xd0\xa2\xd0\xb5\xd0\xba\xd1\x81\xd1\x82')), - ('public_date', models.DateTimeField(blank=True, verbose_name=b'\xd0\x94\xd0\xb0\xd1\x82\xd0\xb0 \xd0\xbf\xd1\x83\xd0\xb1\xd0\xbb\xd0\xb8\xd0\xba\xd0\xb0\xd1\x86\xd0\xb8\xd0\xb8')), - ('create_date', models.DateTimeField(default=django.utils.timezone.now, verbose_name=b'\xd0\x94\xd0\xb0\xd1\x82\xd0\xb0 \xd1\x81\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x8f')), - ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='author_user', to=settings.AUTH_USER_MODEL, verbose_name=b'\xd0\x90\xd0\xb2\xd1\x82\xd0\xbe\xd1\x80')), - ], - options={ - 'ordering': ['-public_date'], - 'verbose_name': '\u041d\u043e\u0432\u043e\u0441\u0442\u044c', - 'verbose_name_plural': '\u041d\u043e\u0432\u043e\u0441\u0442\u0438', - }, - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-18 16:46 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone +import redactor.fields + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('storage', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Comment', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('closed', models.BooleanField(default=False, verbose_name='\u0417\u0430\u043a\u0440\u044b\u0442')), + ('parent_id', models.IntegerField(blank=True, default=0, verbose_name='ID \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430')), + ('text', models.TextField(default=b'', verbose_name='\u0422\u0435\u043a\u0441\u0442')), + ('date', models.DateTimeField(default=django.utils.timezone.now, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430')), + ('send', models.BooleanField(default=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e')), + ('files', models.ManyToManyField(blank=True, to='storage.Storage', verbose_name='\u041f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b')), + ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comment_owner', to=settings.AUTH_USER_MODEL, verbose_name='\u0410\u0432\u0442\u043e\u0440')), + ('saw', models.ManyToManyField(blank=True, to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0432\u0448\u0438\u0435')), + ], + options={ + 'ordering': ['id'], + 'verbose_name': '\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439', + 'verbose_name_plural': '\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438', + }, + ), + migrations.CreateModel( + name='CommentSawTable', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0412\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430')), + ('comment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='management.Comment', verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0432\u0448\u0438\u0439')), + ], + options={ + 'verbose_name': '\u0416\u0443\u0440\u043d\u0430\u043b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430', + 'verbose_name_plural': '\u0416\u0443\u0440\u043d\u0430\u043b\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u0432', + }, + ), + migrations.CreateModel( + name='Feedback', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('closed', models.BooleanField(default=False, verbose_name='\u0412\u0437\u044f\u0442\u043e \u0432 \u0440\u0430\u0431\u043e\u0442\u0443')), + ('name', models.CharField(max_length=255, verbose_name='\u0418\u043c\u044f')), + ('email', models.CharField(max_length=255, verbose_name='Email')), + ('phone', models.CharField(max_length=255, verbose_name='\u0422\u0435\u043b\u0435\u0444\u043e\u043d')), + ('text', models.TextField(verbose_name='\u0422\u0435\u043a\u0441\u0442')), + ('date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0412\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f')), + ('send', models.BooleanField(default=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e')), + ], + options={ + 'verbose_name': '\u0412\u043e\u043f\u0440\u043e\u0441', + 'verbose_name_plural': '\u0412\u043e\u043f\u0440\u043e\u0441\u044b', + }, + ), + migrations.CreateModel( + name='News', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('public', models.BooleanField(default=False, verbose_name=b'\xd0\x9e\xd0\xbf\xd1\x83\xd0\xb1\xd0\xbb\xd0\xb8\xd0\xba\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd1\x8c')), + ('title', models.CharField(max_length=255, verbose_name=b'\xd0\x97\xd0\xb0\xd0\xb3\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xbe\xd0\xba')), + ('icon', models.ImageField(blank=True, upload_to=b'news', verbose_name='\u0418\u043a\u043e\u043d\u043a\u0430')), + ('image', models.ImageField(blank=True, upload_to=b'news', verbose_name=b'\xd0\x97\xd0\xb0\xd0\xb3\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xbe\xd1\x87\xd0\xbd\xd0\xbe\xd0\xb5 \xd0\xb8\xd0\xb7\xd0\xbe\xd0\xb1\xd1\x80\xd0\xb0\xd0\xb6\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5')), + ('content', redactor.fields.RedactorField(verbose_name=b'\xd0\xa2\xd0\xb5\xd0\xba\xd1\x81\xd1\x82')), + ('public_date', models.DateTimeField(blank=True, verbose_name=b'\xd0\x94\xd0\xb0\xd1\x82\xd0\xb0 \xd0\xbf\xd1\x83\xd0\xb1\xd0\xbb\xd0\xb8\xd0\xba\xd0\xb0\xd1\x86\xd0\xb8\xd0\xb8')), + ('create_date', models.DateTimeField(default=django.utils.timezone.now, verbose_name=b'\xd0\x94\xd0\xb0\xd1\x82\xd0\xb0 \xd1\x81\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x8f')), + ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='author_user', to=settings.AUTH_USER_MODEL, verbose_name=b'\xd0\x90\xd0\xb2\xd1\x82\xd0\xbe\xd1\x80')), + ], + options={ + 'ordering': ['-public_date'], + 'verbose_name': '\u041d\u043e\u0432\u043e\u0441\u0442\u044c', + 'verbose_name_plural': '\u041d\u043e\u0432\u043e\u0441\u0442\u0438', + }, + ), + ] diff --git a/management/migrations/0002_sms.py b/management/migrations/0002_sms.py old mode 100755 new mode 100644 index 17d66ee..3b2c3ff --- a/management/migrations/0002_sms.py +++ b/management/migrations/0002_sms.py @@ -1,30 +1,30 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-31 18:55 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='Sms', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('_to', models.CharField(max_length=255, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c')), - ('_status', models.CharField(choices=[(b'S', b''), (b'N', b'')], default=b'S', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f')), - ('text', models.TextField(verbose_name='\u0422\u0435\u043a\u0441\u0442')), - ('_from', models.CharField(choices=[(b'T', b''), (b'N', b'')], default=b'T', max_length=1, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c')), - ('error', models.TextField(blank=True, editable=False, null=True, verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438')), - ], - options={ - 'verbose_name': '\u0421\u041c\u0421', - 'verbose_name_plural': '\u0421\u041c\u0421', - }, - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-31 18:55 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Sms', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('_to', models.CharField(max_length=255, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c')), + ('_status', models.CharField(choices=[(b'S', b''), (b'N', b'')], default=b'S', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f')), + ('text', models.TextField(verbose_name='\u0422\u0435\u043a\u0441\u0442')), + ('_from', models.CharField(choices=[(b'T', b''), (b'N', b'')], default=b'T', max_length=1, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c')), + ('error', models.TextField(blank=True, editable=False, null=True, verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438')), + ], + options={ + 'verbose_name': '\u0421\u041c\u0421', + 'verbose_name_plural': '\u0421\u041c\u0421', + }, + ), + ] diff --git a/management/migrations/0003_sms_date.py b/management/migrations/0003_sms_date.py old mode 100755 new mode 100644 index 8f1b8cf..8775fcb --- a/management/migrations/0003_sms_date.py +++ b/management/migrations/0003_sms_date.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-31 19:02 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0002_sms'), - ] - - operations = [ - migrations.AddField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 3, 31, 19, 2, 23, 639641), verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-31 19:02 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0002_sms'), + ] + + operations = [ + migrations.AddField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 3, 31, 19, 2, 23, 639641), verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0004_auto_20160331_2017.py b/management/migrations/0004_auto_20160331_2017.py old mode 100755 new mode 100644 index 4dd0ded..c6a28fe --- a/management/migrations/0004_auto_20160331_2017.py +++ b/management/migrations/0004_auto_20160331_2017.py @@ -1,36 +1,36 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-31 20:17 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0003_sms_date'), - ] - - operations = [ - migrations.AddField( - model_name='sms', - name='sent', - field=models.BooleanField(default=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c'), - ), - migrations.AlterField( - model_name='sms', - name='_from', - field=models.CharField(choices=[(b'T', b'Tocka Koda'), (b'C', b'CODEMY.RU'), (b'N', b'')], default=b'C', max_length=1, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c'), - ), - migrations.AlterField( - model_name='sms', - name='_status', - field=models.CharField(choices=[(b'S', b'\xd0\x9e\xd1\x82\xd0\xbf\xd1\x80\xd0\xb0\xd0\xb2\xd0\xbb\xd1\x8f\xd0\xb5\xd1\x82\xd1\x81\xd1\x8f'), (b'F', b'\xd0\x9e\xd1\x82\xd0\xbf\xd1\x80\xd0\xb0\xd0\xb2\xd0\xbb\xd0\xb5\xd0\xbd'), (b'E', b'\xd0\x9e\xd1\x88\xd0\xb8\xd0\xb1\xd0\xba\xd0\xb0 \xd0\xbe\xd1\x82\xd0\xbf\xd1\x80\xd0\xb0\xd0\xb2\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f')], default=b'S', editable=False, max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f'), - ), - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 3, 31, 20, 17, 20, 844249), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-31 20:17 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0003_sms_date'), + ] + + operations = [ + migrations.AddField( + model_name='sms', + name='sent', + field=models.BooleanField(default=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c'), + ), + migrations.AlterField( + model_name='sms', + name='_from', + field=models.CharField(choices=[(b'T', b'Tocka Koda'), (b'C', b'CODEMY.RU'), (b'N', b'')], default=b'C', max_length=1, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c'), + ), + migrations.AlterField( + model_name='sms', + name='_status', + field=models.CharField(choices=[(b'S', b'\xd0\x9e\xd1\x82\xd0\xbf\xd1\x80\xd0\xb0\xd0\xb2\xd0\xbb\xd1\x8f\xd0\xb5\xd1\x82\xd1\x81\xd1\x8f'), (b'F', b'\xd0\x9e\xd1\x82\xd0\xbf\xd1\x80\xd0\xb0\xd0\xb2\xd0\xbb\xd0\xb5\xd0\xbd'), (b'E', b'\xd0\x9e\xd1\x88\xd0\xb8\xd0\xb1\xd0\xba\xd0\xb0 \xd0\xbe\xd1\x82\xd0\xbf\xd1\x80\xd0\xb0\xd0\xb2\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f')], default=b'S', editable=False, max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f'), + ), + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 3, 31, 20, 17, 20, 844249), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0005_auto_20160331_2017.py b/management/migrations/0005_auto_20160331_2017.py old mode 100755 new mode 100644 index 247d0f6..5384a86 --- a/management/migrations/0005_auto_20160331_2017.py +++ b/management/migrations/0005_auto_20160331_2017.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-31 20:17 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0004_auto_20160331_2017'), - ] - - operations = [ - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 3, 31, 20, 17, 49, 225656), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - migrations.AlterField( - model_name='sms', - name='sent', - field=models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-31 20:17 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0004_auto_20160331_2017'), + ] + + operations = [ + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 3, 31, 20, 17, 49, 225656), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + migrations.AlterField( + model_name='sms', + name='sent', + field=models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c'), + ), + ] diff --git a/management/migrations/0006_auto_20160331_2030.py b/management/migrations/0006_auto_20160331_2030.py old mode 100755 new mode 100644 index 05b8101..f609032 --- a/management/migrations/0006_auto_20160331_2030.py +++ b/management/migrations/0006_auto_20160331_2030.py @@ -1,31 +1,31 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-31 20:30 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0005_auto_20160331_2017'), - ] - - operations = [ - migrations.AddField( - model_name='sms', - name='debug', - field=models.CharField(blank=True, max_length=255, verbose_name='\u0421\u0442\u0440\u043e\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430'), - ), - migrations.AlterField( - model_name='sms', - name='_from', - field=models.CharField(choices=[(b'T', b'Tocka Koda'), (b'C', b'CODEMY.RU')], default=b'C', max_length=1, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c'), - ), - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 3, 31, 20, 30, 24, 93077), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-03-31 20:30 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0005_auto_20160331_2017'), + ] + + operations = [ + migrations.AddField( + model_name='sms', + name='debug', + field=models.CharField(blank=True, max_length=255, verbose_name='\u0421\u0442\u0440\u043e\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430'), + ), + migrations.AlterField( + model_name='sms', + name='_from', + field=models.CharField(choices=[(b'T', b'Tocka Koda'), (b'C', b'CODEMY.RU')], default=b'C', max_length=1, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c'), + ), + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 3, 31, 20, 30, 24, 93077), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0007_auto_20160405_2045.py b/management/migrations/0007_auto_20160405_2045.py old mode 100755 new mode 100644 index 9c7e35e..af60d8e --- a/management/migrations/0007_auto_20160405_2045.py +++ b/management/migrations/0007_auto_20160405_2045.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-05 20:45 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0006_auto_20160331_2030'), - ] - - operations = [ - migrations.AlterField( - model_name='sms', - name='_to', - field=models.CharField(help_text=b'+79660497379', max_length=255, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c'), - ), - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 5, 20, 45, 37, 483710), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-04-05 20:45 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0006_auto_20160331_2030'), + ] + + operations = [ + migrations.AlterField( + model_name='sms', + name='_to', + field=models.CharField(help_text=b'+79660497379', max_length=255, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c'), + ), + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 5, 20, 45, 37, 483710), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0008_auto_20160407_1741.py b/management/migrations/0008_auto_20160407_1741.py old mode 100755 new mode 100644 index fda6e50..d51c0fc --- a/management/migrations/0008_auto_20160407_1741.py +++ b/management/migrations/0008_auto_20160407_1741.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-07 17:41 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0007_auto_20160405_2045'), - ] - - operations = [ - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 7, 17, 41, 52, 666005), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-04-07 17:41 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0007_auto_20160405_2045'), + ] + + operations = [ + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 7, 17, 41, 52, 666005), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0009_auto_20160407_2006.py b/management/migrations/0009_auto_20160407_2006.py old mode 100755 new mode 100644 index aafd158..db7d5a3 --- a/management/migrations/0009_auto_20160407_2006.py +++ b/management/migrations/0009_auto_20160407_2006.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-07 20:06 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0008_auto_20160407_1741'), - ] - - operations = [ - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 7, 20, 6, 28, 155860), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-04-07 20:06 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0008_auto_20160407_1741'), + ] + + operations = [ + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 7, 20, 6, 28, 155860), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0010_auto_20160412_1529.py b/management/migrations/0010_auto_20160412_1529.py old mode 100755 new mode 100644 index 4ae8376..dfdc3a6 --- a/management/migrations/0010_auto_20160412_1529.py +++ b/management/migrations/0010_auto_20160412_1529.py @@ -1,48 +1,48 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-12 15:29 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -import django.db.models.deletion -import redactor.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0009_auto_20160407_2006'), - ] - - operations = [ - migrations.CreateModel( - name='Faq', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('question', models.CharField(max_length=255, verbose_name='\u0412\u043e\u043f\u0440\u043e\u0441')), - ('answer', redactor.fields.RedactorField(verbose_name='\u041e\u0442\u0432\u0435\u0442')), - ], - ), - migrations.CreateModel( - name='FaqTitle', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('title', models.CharField(max_length=255, verbose_name='\u0422\u0435\u043c\u0430')), - ('icon', models.ImageField(blank=True, upload_to=b'faq', verbose_name='\u0418\u043a\u043e\u043d\u043a\u0430')), - ], - options={ - 'verbose_name': '\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a FAQ', - 'verbose_name_plural': '\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 FAQ', - }, - ), - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 12, 15, 29, 54, 697834), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - migrations.AddField( - model_name='faq', - name='title', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='management.FaqTitle', verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-12 15:29 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models +import django.db.models.deletion +import redactor.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0009_auto_20160407_2006'), + ] + + operations = [ + migrations.CreateModel( + name='Faq', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('question', models.CharField(max_length=255, verbose_name='\u0412\u043e\u043f\u0440\u043e\u0441')), + ('answer', redactor.fields.RedactorField(verbose_name='\u041e\u0442\u0432\u0435\u0442')), + ], + ), + migrations.CreateModel( + name='FaqTitle', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=255, verbose_name='\u0422\u0435\u043c\u0430')), + ('icon', models.ImageField(blank=True, upload_to=b'faq', verbose_name='\u0418\u043a\u043e\u043d\u043a\u0430')), + ], + options={ + 'verbose_name': '\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a FAQ', + 'verbose_name_plural': '\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 FAQ', + }, + ), + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 12, 15, 29, 54, 697834), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + migrations.AddField( + model_name='faq', + name='title', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='management.FaqTitle', verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a'), + ), + ] diff --git a/management/migrations/0011_auto_20160412_1943.py b/management/migrations/0011_auto_20160412_1943.py old mode 100755 new mode 100644 index d3ab787..6f0aecd --- a/management/migrations/0011_auto_20160412_1943.py +++ b/management/migrations/0011_auto_20160412_1943.py @@ -1,27 +1,27 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-12 19:43 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0010_auto_20160412_1529'), - ] - - operations = [ - migrations.AlterField( - model_name='faq', - name='title', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='management.FaqTitle', unique=True, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a'), - ), - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 12, 19, 43, 5, 421327), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-12 19:43 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0010_auto_20160412_1529'), + ] + + operations = [ + migrations.AlterField( + model_name='faq', + name='title', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='management.FaqTitle', unique=True, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a'), + ), + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 12, 19, 43, 5, 421327), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0012_auto_20160412_1946.py b/management/migrations/0012_auto_20160412_1946.py old mode 100755 new mode 100644 index eb5b79f..7208fb2 --- a/management/migrations/0012_auto_20160412_1946.py +++ b/management/migrations/0012_auto_20160412_1946.py @@ -1,30 +1,30 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-12 19:46 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0011_auto_20160412_1943'), - ] - - operations = [ - migrations.AlterModelOptions( - name='faqtitle', - options={'ordering': ['sort'], 'verbose_name': '\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a FAQ', 'verbose_name_plural': '\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 FAQ'}, - ), - migrations.AddField( - model_name='faqtitle', - name='sort', - field=models.ImageField(default=0, upload_to=b'', verbose_name='\u041f\u043e\u0440\u044f\u0434\u043e\u043a'), - ), - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 12, 19, 46, 47, 718596), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-12 19:46 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0011_auto_20160412_1943'), + ] + + operations = [ + migrations.AlterModelOptions( + name='faqtitle', + options={'ordering': ['sort'], 'verbose_name': '\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a FAQ', 'verbose_name_plural': '\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 FAQ'}, + ), + migrations.AddField( + model_name='faqtitle', + name='sort', + field=models.ImageField(default=0, upload_to=b'', verbose_name='\u041f\u043e\u0440\u044f\u0434\u043e\u043a'), + ), + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 12, 19, 46, 47, 718596), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0013_auto_20160412_1956.py b/management/migrations/0013_auto_20160412_1956.py old mode 100755 new mode 100644 index 4d6f260..0ef6dc1 --- a/management/migrations/0013_auto_20160412_1956.py +++ b/management/migrations/0013_auto_20160412_1956.py @@ -1,32 +1,32 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-12 19:56 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0012_auto_20160412_1946'), - ] - - operations = [ - migrations.AlterField( - model_name='faq', - name='title', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='management.FaqTitle', unique=True, verbose_name='\u0420\u0430\u0437\u0434\u0435\u043b'), - ), - migrations.AlterField( - model_name='faqtitle', - name='sort', - field=models.IntegerField(default=0, verbose_name='\u041f\u043e\u0440\u044f\u0434\u043e\u043a'), - ), - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 12, 19, 56, 47, 261878), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-12 19:56 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0012_auto_20160412_1946'), + ] + + operations = [ + migrations.AlterField( + model_name='faq', + name='title', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='management.FaqTitle', unique=True, verbose_name='\u0420\u0430\u0437\u0434\u0435\u043b'), + ), + migrations.AlterField( + model_name='faqtitle', + name='sort', + field=models.IntegerField(default=0, verbose_name='\u041f\u043e\u0440\u044f\u0434\u043e\u043a'), + ), + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 12, 19, 56, 47, 261878), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0014_auto_20160412_2003.py b/management/migrations/0014_auto_20160412_2003.py old mode 100755 new mode 100644 index 94d10b0..ca2acff --- a/management/migrations/0014_auto_20160412_2003.py +++ b/management/migrations/0014_auto_20160412_2003.py @@ -1,32 +1,32 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-12 20:03 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0013_auto_20160412_1956'), - ] - - operations = [ - migrations.AlterField( - model_name='faq', - name='title', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='management.FaqTitle', verbose_name='\u0420\u0430\u0437\u0434\u0435\u043b'), - ), - migrations.AlterField( - model_name='faqtitle', - name='title', - field=models.CharField(max_length=255, unique=True, verbose_name='\u0422\u0435\u043c\u0430'), - ), - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 12, 20, 3, 24, 283843), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-12 20:03 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0013_auto_20160412_1956'), + ] + + operations = [ + migrations.AlterField( + model_name='faq', + name='title', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='management.FaqTitle', verbose_name='\u0420\u0430\u0437\u0434\u0435\u043b'), + ), + migrations.AlterField( + model_name='faqtitle', + name='title', + field=models.CharField(max_length=255, unique=True, verbose_name='\u0422\u0435\u043c\u0430'), + ), + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 12, 20, 3, 24, 283843), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0015_auto_20160412_2004.py b/management/migrations/0015_auto_20160412_2004.py old mode 100755 new mode 100644 index c4d1028..1c52cb0 --- a/management/migrations/0015_auto_20160412_2004.py +++ b/management/migrations/0015_auto_20160412_2004.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-12 20:04 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0014_auto_20160412_2003'), - ] - - operations = [ - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 12, 20, 4, 44, 315158), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-12 20:04 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0014_auto_20160412_2003'), + ] + + operations = [ + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 12, 20, 4, 44, 315158), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0016_auto_20160412_2145.py b/management/migrations/0016_auto_20160412_2145.py old mode 100755 new mode 100644 index 15db14f..c0ab9ed --- a/management/migrations/0016_auto_20160412_2145.py +++ b/management/migrations/0016_auto_20160412_2145.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-12 21:45 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0015_auto_20160412_2004'), - ] - - operations = [ - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 12, 21, 45, 22, 540990), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-12 21:45 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0015_auto_20160412_2004'), + ] + + operations = [ + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 12, 21, 45, 22, 540990), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0017_auto_20160414_1941.py b/management/migrations/0017_auto_20160414_1941.py old mode 100755 new mode 100644 index 5c27f81..cbcf725 --- a/management/migrations/0017_auto_20160414_1941.py +++ b/management/migrations/0017_auto_20160414_1941.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-14 19:41 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0016_auto_20160412_2145'), - ] - - operations = [ - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 14, 19, 41, 21, 890528), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-14 19:41 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0016_auto_20160412_2145'), + ] + + operations = [ + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 14, 19, 41, 21, 890528), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0018_auto_20160414_1944.py b/management/migrations/0018_auto_20160414_1944.py old mode 100755 new mode 100644 index 4dd81c3..f592594 --- a/management/migrations/0018_auto_20160414_1944.py +++ b/management/migrations/0018_auto_20160414_1944.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-14 19:44 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0017_auto_20160414_1941'), - ] - - operations = [ - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 14, 19, 44, 42, 153512), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-14 19:44 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0017_auto_20160414_1941'), + ] + + operations = [ + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 14, 19, 44, 42, 153512), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0019_auto_20160420_1749.py b/management/migrations/0019_auto_20160420_1749.py old mode 100755 new mode 100644 index c136b3c..3cceecb --- a/management/migrations/0019_auto_20160420_1749.py +++ b/management/migrations/0019_auto_20160420_1749.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-20 17:49 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0018_auto_20160414_1944'), - ] - - operations = [ - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 20, 17, 49, 55, 518147), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-20 17:49 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0018_auto_20160414_1944'), + ] + + operations = [ + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 20, 17, 49, 55, 518147), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0020_auto_20160420_1819.py b/management/migrations/0020_auto_20160420_1819.py old mode 100755 new mode 100644 index c69d92f..0de3346 --- a/management/migrations/0020_auto_20160420_1819.py +++ b/management/migrations/0020_auto_20160420_1819.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-20 18:19 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0019_auto_20160420_1749'), - ] - - operations = [ - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 4, 20, 18, 19, 6, 287391), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-20 18:19 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0019_auto_20160420_1749'), + ] + + operations = [ + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 4, 20, 18, 19, 6, 287391), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0021_auto_20160506_1303.py b/management/migrations/0021_auto_20160506_1303.py old mode 100755 new mode 100644 index 44c46ac..fe1a872 --- a/management/migrations/0021_auto_20160506_1303.py +++ b/management/migrations/0021_auto_20160506_1303.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-06 13:03 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0020_auto_20160420_1819'), - ] - - operations = [ - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 6, 13, 3, 19, 619872), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-06 13:03 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0020_auto_20160420_1819'), + ] + + operations = [ + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 5, 6, 13, 3, 19, 619872), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0022_auto_20160521_1849.py b/management/migrations/0022_auto_20160521_1849.py old mode 100755 new mode 100644 index 5bfe17f..49b6286 --- a/management/migrations/0022_auto_20160521_1849.py +++ b/management/migrations/0022_auto_20160521_1849.py @@ -1,36 +1,36 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-21 18:49 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0021_auto_20160506_1303'), - ] - - operations = [ - migrations.CreateModel( - name='MailBox', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('status', models.CharField(choices=[(b'Q', b'\xd0\x9d\xd0\xb0 \xd0\xbe\xd1\x87\xd0\xb5\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb8'), (b'W', b'\xd0\x9e\xd0\xb6\xd0\xb8\xd0\xb4\xd0\xb0\xd0\xb5\xd1\x82 \xd0\xb4\xd0\xb0\xd1\x82\xd1\x8b \xd0\xb4\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd0\xb2\xd0\xba\xd0\xb8'), (b'S', b'\xd0\x9e\xd1\x82\xd0\xbf\xd1\x80\xd0\xb0\xd0\xb2\xd0\xbb\xd0\xb5\xd0\xbd'), (b'D', b'\xd0\x94\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd0\xb2\xd0\xbb\xd0\xb5\xd0\xbd'), (b'F', b'\xd0\x90\xd0\xb4\xd1\x80\xd0\xb5\xd1\x81\xd0\xb0\xd1\x82 \xd0\xbd\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd')], default=b'Q', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441 \u043f\u0438\u0441\u044c\u043c\u0430')), - ('_to', models.EmailField(max_length=254, verbose_name='\u041f\u043e\u0447\u0442\u0430')), - ('queue_date', models.DateTimeField(default=datetime.datetime.now, help_text='\u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0430\u0442\u0443 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438, \u043f\u0438\u0441\u044c\u043c\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f', verbose_name='\u0414\u0430\u0442\u0430 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u0434\u0430\u0447\u0438')), - ('sent_date', models.DateTimeField(blank=True, editable=False, null=True, verbose_name='\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438')), - ('text', models.TextField(verbose_name='\u0422\u0435\u043a\u0441\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438')), - ], - options={ - 'verbose_name': '\u041f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u044f\u0449\u0438\u043a', - 'verbose_name_plural': '\u041f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u044f\u0449\u0438\u043a', - }, - ), - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 21, 18, 49, 44, 336371), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-21 18:49 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0021_auto_20160506_1303'), + ] + + operations = [ + migrations.CreateModel( + name='MailBox', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('status', models.CharField(choices=[(b'Q', b'\xd0\x9d\xd0\xb0 \xd0\xbe\xd1\x87\xd0\xb5\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb8'), (b'W', b'\xd0\x9e\xd0\xb6\xd0\xb8\xd0\xb4\xd0\xb0\xd0\xb5\xd1\x82 \xd0\xb4\xd0\xb0\xd1\x82\xd1\x8b \xd0\xb4\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd0\xb2\xd0\xba\xd0\xb8'), (b'S', b'\xd0\x9e\xd1\x82\xd0\xbf\xd1\x80\xd0\xb0\xd0\xb2\xd0\xbb\xd0\xb5\xd0\xbd'), (b'D', b'\xd0\x94\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd0\xb2\xd0\xbb\xd0\xb5\xd0\xbd'), (b'F', b'\xd0\x90\xd0\xb4\xd1\x80\xd0\xb5\xd1\x81\xd0\xb0\xd1\x82 \xd0\xbd\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd')], default=b'Q', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441 \u043f\u0438\u0441\u044c\u043c\u0430')), + ('_to', models.EmailField(max_length=254, verbose_name='\u041f\u043e\u0447\u0442\u0430')), + ('queue_date', models.DateTimeField(default=datetime.datetime.now, help_text='\u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0430\u0442\u0443 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438, \u043f\u0438\u0441\u044c\u043c\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f', verbose_name='\u0414\u0430\u0442\u0430 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u0434\u0430\u0447\u0438')), + ('sent_date', models.DateTimeField(blank=True, editable=False, null=True, verbose_name='\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438')), + ('text', models.TextField(verbose_name='\u0422\u0435\u043a\u0441\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438')), + ], + options={ + 'verbose_name': '\u041f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u044f\u0449\u0438\u043a', + 'verbose_name_plural': '\u041f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u044f\u0449\u0438\u043a', + }, + ), + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 5, 21, 18, 49, 44, 336371), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0023_auto_20160521_1919.py b/management/migrations/0023_auto_20160521_1919.py old mode 100755 new mode 100644 index fcc00f3..5fa3ce6 --- a/management/migrations/0023_auto_20160521_1919.py +++ b/management/migrations/0023_auto_20160521_1919.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-21 19:19 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0022_auto_20160521_1849'), - ] - - operations = [ - migrations.AddField( - model_name='mailbox', - name='title', - field=models.CharField(blank=True, max_length=255, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043f\u0438\u0441\u044c\u043c\u0430'), - ), - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 21, 19, 19, 58, 161580), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-21 19:19 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0022_auto_20160521_1849'), + ] + + operations = [ + migrations.AddField( + model_name='mailbox', + name='title', + field=models.CharField(blank=True, max_length=255, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043f\u0438\u0441\u044c\u043c\u0430'), + ), + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 5, 21, 19, 19, 58, 161580), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0024_auto_20160521_2257.py b/management/migrations/0024_auto_20160521_2257.py old mode 100755 new mode 100644 index 66546bd..8816837 --- a/management/migrations/0024_auto_20160521_2257.py +++ b/management/migrations/0024_auto_20160521_2257.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-21 22:57 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0023_auto_20160521_1919'), - ] - - operations = [ - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 21, 22, 57, 7, 380200), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-21 22:57 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0023_auto_20160521_1919'), + ] + + operations = [ + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 5, 21, 22, 57, 7, 380200), help_text=b'\xd0\x9d\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb5 7\xd0\xbc\xd0\xb8 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/management/migrations/0025_auto_20160607_1614.py b/management/migrations/0025_auto_20160607_1614.py old mode 100755 new mode 100644 index ef75470..8465ab9 --- a/management/migrations/0025_auto_20160607_1614.py +++ b/management/migrations/0025_auto_20160607_1614.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-07 16:14 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0024_auto_20160521_2257'), - ] - - operations = [ - migrations.DeleteModel( - name='MailBox', - ), - migrations.DeleteModel( - name='Sms', - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-07 16:14 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0024_auto_20160521_2257'), + ] + + operations = [ + migrations.DeleteModel( + name='MailBox', + ), + migrations.DeleteModel( + name='Sms', + ), + ] diff --git a/management/migrations/0026_modals_modalstack.py b/management/migrations/0026_modals_modalstack.py old mode 100755 new mode 100644 index df0ba73..8ac8b03 --- a/management/migrations/0026_modals_modalstack.py +++ b/management/migrations/0026_modals_modalstack.py @@ -1,44 +1,44 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-08 16:52 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('management', '0025_auto_20160607_1614'), - ] - - operations = [ - migrations.CreateModel( - name='Modals', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255, verbose_name='\u041a\u043b\u044e\u0447')), - ('date', models.CharField(max_length=255, verbose_name='\u0414\u043d\u0435\u0439 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f')), - ('live_time', models.IntegerField(default=1, verbose_name='\u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437')), - ], - options={ - 'verbose_name': '\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e', - 'verbose_name_plural': '\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043a\u043d\u0430', - }, - ), - migrations.CreateModel( - name='ModalStack', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('f_date', models.DateTimeField(verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f')), - ('modal', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='management.Modals', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u043e\u043a\u043d\u0430')), - ('user', 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')), - ], - options={ - 'verbose_name': '\u0421\u0442\u044d\u043a \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0445', - 'verbose_name_plural': '\u0421\u0442\u044d\u043a \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0445', - }, - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-08 16:52 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('management', '0025_auto_20160607_1614'), + ] + + operations = [ + migrations.CreateModel( + name='Modals', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='\u041a\u043b\u044e\u0447')), + ('date', models.CharField(max_length=255, verbose_name='\u0414\u043d\u0435\u0439 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f')), + ('live_time', models.IntegerField(default=1, verbose_name='\u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437')), + ], + options={ + 'verbose_name': '\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e', + 'verbose_name_plural': '\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043a\u043d\u0430', + }, + ), + migrations.CreateModel( + name='ModalStack', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('f_date', models.DateTimeField(verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f')), + ('modal', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='management.Modals', verbose_name='\u0428\u0430\u0431\u043b\u043e\u043d \u043e\u043a\u043d\u0430')), + ('user', 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')), + ], + options={ + 'verbose_name': '\u0421\u0442\u044d\u043a \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0445', + 'verbose_name_plural': '\u0421\u0442\u044d\u043a \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0445', + }, + ), + ] diff --git a/management/migrations/0027_remove_modals_date.py b/management/migrations/0027_remove_modals_date.py old mode 100755 new mode 100644 index 7d70481..0108971 --- a/management/migrations/0027_remove_modals_date.py +++ b/management/migrations/0027_remove_modals_date.py @@ -1,19 +1,19 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-08 17:00 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0026_modals_modalstack'), - ] - - operations = [ - migrations.RemoveField( - model_name='modals', - name='date', - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-08 17:00 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0026_modals_modalstack'), + ] + + operations = [ + migrations.RemoveField( + model_name='modals', + name='date', + ), + ] diff --git a/management/migrations/0028_auto_20160608_1705.py b/management/migrations/0028_auto_20160608_1705.py old mode 100755 new mode 100644 index c96addc..2fccf54 --- a/management/migrations/0028_auto_20160608_1705.py +++ b/management/migrations/0028_auto_20160608_1705.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-08 17:05 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0027_remove_modals_date'), - ] - - operations = [ - migrations.AlterField( - model_name='modalstack', - name='f_date', - field=models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-08 17:05 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0027_remove_modals_date'), + ] + + operations = [ + migrations.AlterField( + model_name='modalstack', + name='f_date', + field=models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f'), + ), + ] diff --git a/management/migrations/0029_auto_20160608_1804.py b/management/migrations/0029_auto_20160608_1804.py old mode 100755 new mode 100644 index cd898a1..b11b09f --- a/management/migrations/0029_auto_20160608_1804.py +++ b/management/migrations/0029_auto_20160608_1804.py @@ -1,74 +1,74 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-08 18:04 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0028_auto_20160608_1705'), - ] - - operations = [ - migrations.RemoveField( - model_name='modals', - name='name', - ), - migrations.RemoveField( - model_name='modalstack', - name='f_date', - ), - migrations.AddField( - model_name='modals', - name='closes', - field=models.IntegerField(default=0, help_text='0 = \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e', verbose_name='\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0439'), - ), - migrations.AddField( - model_name='modals', - name='f_date', - field=models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u0430'), - ), - migrations.AddField( - model_name='modals', - name='key', - field=models.CharField(default=b'', max_length=255, verbose_name='\u041a\u043b\u044e\u0447'), - ), - migrations.AddField( - model_name='modals', - name='start_date', - field=models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f'), - ), - migrations.AddField( - model_name='modals', - name='title', - field=models.CharField(default=b'', max_length=255, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a'), - ), - migrations.AddField( - model_name='modals', - name='views', - field=models.IntegerField(default=0, help_text='0 = \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e', verbose_name='\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043a\u0430\u0437\u043e\u0432'), - ), - migrations.AddField( - model_name='modalstack', - name='closes', - field=models.IntegerField(blank=True, null=True, verbose_name='\u0417\u0430\u043a\u0440\u044b\u0442\u0438\u0439'), - ), - migrations.AddField( - model_name='modalstack', - name='date', - field=models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f'), - ), - migrations.AddField( - model_name='modalstack', - name='views', - field=models.IntegerField(blank=True, null=True, verbose_name='\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u0432'), - ), - migrations.AlterField( - model_name='modals', - name='live_time', - field=models.IntegerField(default=1, verbose_name='\u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437/\u0434\u043d\u0435\u0439'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-08 18:04 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0028_auto_20160608_1705'), + ] + + operations = [ + migrations.RemoveField( + model_name='modals', + name='name', + ), + migrations.RemoveField( + model_name='modalstack', + name='f_date', + ), + migrations.AddField( + model_name='modals', + name='closes', + field=models.IntegerField(default=0, help_text='0 = \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e', verbose_name='\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0439'), + ), + migrations.AddField( + model_name='modals', + name='f_date', + field=models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u0430'), + ), + migrations.AddField( + model_name='modals', + name='key', + field=models.CharField(default=b'', max_length=255, verbose_name='\u041a\u043b\u044e\u0447'), + ), + migrations.AddField( + model_name='modals', + name='start_date', + field=models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f'), + ), + migrations.AddField( + model_name='modals', + name='title', + field=models.CharField(default=b'', max_length=255, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a'), + ), + migrations.AddField( + model_name='modals', + name='views', + field=models.IntegerField(default=0, help_text='0 = \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e', verbose_name='\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043a\u0430\u0437\u043e\u0432'), + ), + migrations.AddField( + model_name='modalstack', + name='closes', + field=models.IntegerField(blank=True, null=True, verbose_name='\u0417\u0430\u043a\u0440\u044b\u0442\u0438\u0439'), + ), + migrations.AddField( + model_name='modalstack', + name='date', + field=models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f'), + ), + migrations.AddField( + model_name='modalstack', + name='views', + field=models.IntegerField(blank=True, null=True, verbose_name='\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u0432'), + ), + migrations.AlterField( + model_name='modals', + name='live_time', + field=models.IntegerField(default=1, verbose_name='\u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437/\u0434\u043d\u0435\u0439'), + ), + ] diff --git a/management/migrations/0030_auto_20160608_1841.py b/management/migrations/0030_auto_20160608_1841.py old mode 100755 new mode 100644 index 8640f42..76cdec1 --- a/management/migrations/0030_auto_20160608_1841.py +++ b/management/migrations/0030_auto_20160608_1841.py @@ -1,25 +1,25 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-08 18:41 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0029_auto_20160608_1804'), - ] - - operations = [ - migrations.AddField( - model_name='modalstack', - name='timer', - field=models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f'), - ), - migrations.AddField( - model_name='modalstack', - name='timer_offer', - field=models.IntegerField(blank=True, editable=False, null=True, verbose_name='\u0421\u0435\u043a\u0443\u043d\u0434 \u0434\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-08 18:41 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0029_auto_20160608_1804'), + ] + + operations = [ + migrations.AddField( + model_name='modalstack', + name='timer', + field=models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f'), + ), + migrations.AddField( + model_name='modalstack', + name='timer_offer', + field=models.IntegerField(blank=True, editable=False, null=True, verbose_name='\u0421\u0435\u043a\u0443\u043d\u0434 \u0434\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f'), + ), + ] diff --git a/management/migrations/0031_auto_20160609_1429.py b/management/migrations/0031_auto_20160609_1429.py old mode 100755 new mode 100644 index e8cb38e..e406408 --- a/management/migrations/0031_auto_20160609_1429.py +++ b/management/migrations/0031_auto_20160609_1429.py @@ -1,25 +1,25 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 14:29 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0030_auto_20160608_1841'), - ] - - operations = [ - migrations.AlterField( - model_name='modalstack', - name='closes', - field=models.IntegerField(blank=True, default=0, null=True, verbose_name='\u0417\u0430\u043a\u0440\u044b\u0442\u0438\u0439'), - ), - migrations.AlterField( - model_name='modalstack', - name='views', - field=models.IntegerField(blank=True, default=0, null=True, verbose_name='\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u0432'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 14:29 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0030_auto_20160608_1841'), + ] + + operations = [ + migrations.AlterField( + model_name='modalstack', + name='closes', + field=models.IntegerField(blank=True, default=0, null=True, verbose_name='\u0417\u0430\u043a\u0440\u044b\u0442\u0438\u0439'), + ), + migrations.AlterField( + model_name='modalstack', + name='views', + field=models.IntegerField(blank=True, default=0, null=True, verbose_name='\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u0432'), + ), + ] diff --git a/management/migrations/0032_auto_20160609_1442.py b/management/migrations/0032_auto_20160609_1442.py old mode 100755 new mode 100644 index 0681d05..539475a --- a/management/migrations/0032_auto_20160609_1442.py +++ b/management/migrations/0032_auto_20160609_1442.py @@ -1,24 +1,24 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 14:42 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0031_auto_20160609_1429'), - ] - - operations = [ - migrations.RemoveField( - model_name='modalstack', - name='timer_offer', - ), - migrations.AlterField( - model_name='modals', - name='live_time', - field=models.IntegerField(default=1, verbose_name='\u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437/\u0447\u0430\u0441\u043e\u0432'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 14:42 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0031_auto_20160609_1429'), + ] + + operations = [ + migrations.RemoveField( + model_name='modalstack', + name='timer_offer', + ), + migrations.AlterField( + model_name='modals', + name='live_time', + field=models.IntegerField(default=1, verbose_name='\u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437/\u0447\u0430\u0441\u043e\u0432'), + ), + ] diff --git a/management/migrations/0033_modalstack_show.py b/management/migrations/0033_modalstack_show.py old mode 100755 new mode 100644 index d0408a5..d08d7d1 --- a/management/migrations/0033_modalstack_show.py +++ b/management/migrations/0033_modalstack_show.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 15:36 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0032_auto_20160609_1442'), - ] - - operations = [ - migrations.AddField( - model_name='modalstack', - name='show', - field=models.BooleanField(default=False, verbose_name='\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 15:36 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0032_auto_20160609_1442'), + ] + + operations = [ + migrations.AddField( + model_name='modalstack', + name='show', + field=models.BooleanField(default=False, verbose_name='\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f'), + ), + ] diff --git a/management/migrations/0034_modals__type.py b/management/migrations/0034_modals__type.py old mode 100755 new mode 100644 index e668345..538b940 --- a/management/migrations/0034_modals__type.py +++ b/management/migrations/0034_modals__type.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 15:46 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0033_modalstack_show'), - ] - - operations = [ - migrations.AddField( - model_name='modals', - name='_type', - field=models.CharField(choices=[(b'M', '\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e'), (b'B', '\u0411\u0430\u0437\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e')], default=b'B', max_length=1, verbose_name='\u0422\u0438\u043f \u043e\u043a\u043d\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 15:46 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0033_modalstack_show'), + ] + + operations = [ + migrations.AddField( + model_name='modals', + name='_type', + field=models.CharField(choices=[(b'M', '\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e'), (b'B', '\u0411\u0430\u0437\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e')], default=b'B', max_length=1, verbose_name='\u0422\u0438\u043f \u043e\u043a\u043d\u0430'), + ), + ] diff --git a/management/migrations/0035_modals_timer.py b/management/migrations/0035_modals_timer.py old mode 100755 new mode 100644 index 9975ce5..05539db --- a/management/migrations/0035_modals_timer.py +++ b/management/migrations/0035_modals_timer.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 20:30 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0034_modals__type'), - ] - - operations = [ - migrations.AddField( - model_name='modals', - name='timer', - field=models.IntegerField(default=0, verbose_name='\u0427\u0430\u0441\u043e\u0432 \u043f\u043e\u043a\u0430\u0437\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 20:30 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0034_modals__type'), + ] + + operations = [ + migrations.AddField( + model_name='modals', + name='timer', + field=models.IntegerField(default=0, verbose_name='\u0427\u0430\u0441\u043e\u0432 \u043f\u043e\u043a\u0430\u0437\u0430'), + ), + ] diff --git a/management/migrations/0036_modals_set_timer.py b/management/migrations/0036_modals_set_timer.py old mode 100755 new mode 100644 index c09b03f..3e22813 --- a/management/migrations/0036_modals_set_timer.py +++ b/management/migrations/0036_modals_set_timer.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 20:43 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0035_modals_timer'), - ] - - operations = [ - migrations.AddField( - model_name='modals', - name='set_timer', - field=models.BooleanField(default=False, verbose_name='\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u0430\u0439\u043c\u0435\u0440'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 20:43 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0035_modals_timer'), + ] + + operations = [ + migrations.AddField( + model_name='modals', + name='set_timer', + field=models.BooleanField(default=False, verbose_name='\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u0430\u0439\u043c\u0435\u0440'), + ), + ] diff --git a/management/migrations/0037_auto_20160609_2224.py b/management/migrations/0037_auto_20160609_2224.py old mode 100755 new mode 100644 index 2b3d951..d67d412 --- a/management/migrations/0037_auto_20160609_2224.py +++ b/management/migrations/0037_auto_20160609_2224.py @@ -1,36 +1,36 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 22:24 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0036_modals_set_timer'), - ] - - operations = [ - migrations.AddField( - model_name='modalstack', - name='relive_date', - field=models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f'), - ), - migrations.AlterField( - model_name='modals', - name='live_time', - field=models.IntegerField(default=60, help_text='\u0427\u0435\u0440\u0435\u0437 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043d\u043e\u0432\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c', verbose_name='\u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437/\u043c\u0438\u043d\u0443\u0442'), - ), - migrations.AlterField( - model_name='modals', - name='timer', - field=models.IntegerField(default=0, help_text='0 = \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e', verbose_name='\u0427\u0430\u0441\u043e\u0432 \u043f\u043e\u043a\u0430\u0437\u0430'), - ), - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 22, 24, 43, 740384), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 22:24 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0036_modals_set_timer'), + ] + + operations = [ + migrations.AddField( + model_name='modalstack', + name='relive_date', + field=models.DateTimeField(blank=True, null=True, verbose_name='\u0414\u0430\u0442\u0430 \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f'), + ), + migrations.AlterField( + model_name='modals', + name='live_time', + field=models.IntegerField(default=60, help_text='\u0427\u0435\u0440\u0435\u0437 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043d\u043e\u0432\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c', verbose_name='\u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437/\u043c\u0438\u043d\u0443\u0442'), + ), + migrations.AlterField( + model_name='modals', + name='timer', + field=models.IntegerField(default=0, help_text='0 = \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e', verbose_name='\u0427\u0430\u0441\u043e\u0432 \u043f\u043e\u043a\u0430\u0437\u0430'), + ), + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 22, 24, 43, 740384), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/0038_auto_20160609_2322.py b/management/migrations/0038_auto_20160609_2322.py old mode 100755 new mode 100644 index 916cf2e..ea3212f --- a/management/migrations/0038_auto_20160609_2322.py +++ b/management/migrations/0038_auto_20160609_2322.py @@ -1,31 +1,31 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 23:22 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0037_auto_20160609_2224'), - ] - - operations = [ - migrations.AddField( - model_name='modals', - name='no_close', - field=models.BooleanField(default=False, verbose_name='\u041d\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c\u043e'), - ), - migrations.AlterField( - model_name='modals', - name='timer', - field=models.IntegerField(default=0, help_text='0 = \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0431\u043e\u043b\u044c\u0448\u0435 24 \u0447\u0430\u0441\u043e\u0432 - \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0430\u0439\u043c\u0435\u0440, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0442\u043a\u0443 \u043d\u0430 \u043f\u043e\u043a\u0430\u0437', verbose_name='\u0427\u0430\u0441\u043e\u0432 \u043f\u043e\u043a\u0430\u0437\u0430'), - ), - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 23, 22, 51, 531830), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 23:22 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0037_auto_20160609_2224'), + ] + + operations = [ + migrations.AddField( + model_name='modals', + name='no_close', + field=models.BooleanField(default=False, verbose_name='\u041d\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c\u043e'), + ), + migrations.AlterField( + model_name='modals', + name='timer', + field=models.IntegerField(default=0, help_text='0 = \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0431\u043e\u043b\u044c\u0448\u0435 24 \u0447\u0430\u0441\u043e\u0432 - \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0430\u0439\u043c\u0435\u0440, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0442\u043a\u0443 \u043d\u0430 \u043f\u043e\u043a\u0430\u0437', verbose_name='\u0427\u0430\u0441\u043e\u0432 \u043f\u043e\u043a\u0430\u0437\u0430'), + ), + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 23, 22, 51, 531830), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/0039_auto_20160609_2351.py b/management/migrations/0039_auto_20160609_2351.py old mode 100755 new mode 100644 index 53d3bb0..33ed932 --- a/management/migrations/0039_auto_20160609_2351.py +++ b/management/migrations/0039_auto_20160609_2351.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-09 23:51 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0038_auto_20160609_2322'), - ] - - operations = [ - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 23, 51, 7, 30249), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-09 23:51 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0038_auto_20160609_2322'), + ] + + operations = [ + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 9, 23, 51, 7, 30249), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/0040_auto_20160628_1731.py b/management/migrations/0040_auto_20160628_1731.py old mode 100755 new mode 100644 index ccc43ba..282922d --- a/management/migrations/0040_auto_20160628_1731.py +++ b/management/migrations/0040_auto_20160628_1731.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-06-28 17:31 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0039_auto_20160609_2351'), - ] - - operations = [ - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 28, 17, 31, 12, 202858), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-06-28 17:31 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0039_auto_20160609_2351'), + ] + + operations = [ + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 6, 28, 17, 31, 12, 202858), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/0041_auto_20160706_1910.py b/management/migrations/0041_auto_20160706_1910.py old mode 100755 new mode 100644 index d243f1f..501afda --- a/management/migrations/0041_auto_20160706_1910.py +++ b/management/migrations/0041_auto_20160706_1910.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-06 19:10 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0040_auto_20160628_1731'), - ] - - operations = [ - migrations.AddField( - model_name='comment', - name='replyes', - field=models.ManyToManyField(blank=True, null=True, related_name='_comment_replyes_+', to='management.Comment', verbose_name='\u041e\u0442\u0432\u0435\u0442\u044b'), - ), - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 6, 19, 10, 52, 787269), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-06 19:10 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0040_auto_20160628_1731'), + ] + + operations = [ + migrations.AddField( + model_name='comment', + name='replyes', + field=models.ManyToManyField(blank=True, null=True, related_name='_comment_replyes_+', to='management.Comment', verbose_name='\u041e\u0442\u0432\u0435\u0442\u044b'), + ), + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 6, 19, 10, 52, 787269), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/0042_auto_20160706_1914.py b/management/migrations/0042_auto_20160706_1914.py old mode 100755 new mode 100644 index f1802eb..db39f1d --- a/management/migrations/0042_auto_20160706_1914.py +++ b/management/migrations/0042_auto_20160706_1914.py @@ -1,30 +1,30 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-06 19:14 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0041_auto_20160706_1910'), - ] - - operations = [ - migrations.RemoveField( - model_name='comment', - name='replyes', - ), - migrations.AddField( - model_name='comment', - name='replies', - field=models.ManyToManyField(blank=True, null=True, related_name='_comment_replies_+', to='management.Comment', verbose_name='\u041e\u0442\u0432\u0435\u0442\u044b'), - ), - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 6, 19, 13, 59, 283637), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-06 19:14 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0041_auto_20160706_1910'), + ] + + operations = [ + migrations.RemoveField( + model_name='comment', + name='replyes', + ), + migrations.AddField( + model_name='comment', + name='replies', + field=models.ManyToManyField(blank=True, null=True, related_name='_comment_replies_+', to='management.Comment', verbose_name='\u041e\u0442\u0432\u0435\u0442\u044b'), + ), + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 6, 19, 13, 59, 283637), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/0043_auto_20160711_1518.py b/management/migrations/0043_auto_20160711_1518.py old mode 100755 new mode 100644 index e56b594..9d022ce --- a/management/migrations/0043_auto_20160711_1518.py +++ b/management/migrations/0043_auto_20160711_1518.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-11 15:18 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0042_auto_20160706_1914'), - ] - - operations = [ - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 11, 15, 18, 42, 177491), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-11 15:18 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0042_auto_20160706_1914'), + ] + + operations = [ + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 11, 15, 18, 42, 177491), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/0044_auto_20160711_1714.py b/management/migrations/0044_auto_20160711_1714.py old mode 100755 new mode 100644 index 1d45646..c4dd349 --- a/management/migrations/0044_auto_20160711_1714.py +++ b/management/migrations/0044_auto_20160711_1714.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-11 17:14 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0043_auto_20160711_1518'), - ] - - operations = [ - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 11, 17, 14, 42, 34022), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-11 17:14 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0043_auto_20160711_1518'), + ] + + operations = [ + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 11, 17, 14, 42, 34022), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/0045_auto_20160713_2038.py b/management/migrations/0045_auto_20160713_2038.py old mode 100755 new mode 100644 index d684b57..d674933 --- a/management/migrations/0045_auto_20160713_2038.py +++ b/management/migrations/0045_auto_20160713_2038.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-13 20:38 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0044_auto_20160711_1714'), - ] - - operations = [ - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 13, 20, 38, 33, 290916), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-13 20:38 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0044_auto_20160711_1714'), + ] + + operations = [ + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 13, 20, 38, 33, 290916), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/0046_auto_20160714_2015.py b/management/migrations/0046_auto_20160714_2015.py old mode 100755 new mode 100644 index 70ef105..20541a2 --- a/management/migrations/0046_auto_20160714_2015.py +++ b/management/migrations/0046_auto_20160714_2015.py @@ -1,31 +1,31 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-14 20:15 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0045_auto_20160713_2038'), - ] - - operations = [ - migrations.AddField( - model_name='comment', - name='response', - field=models.BooleanField(default=False, verbose_name='\u0415\u0441\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u043e\u0442 \u0430\u0434\u043c\u0438\u043d\u0430'), - ), - migrations.AlterField( - model_name='comment', - name='date', - field=models.DateTimeField(default=datetime.datetime.now, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430'), - ), - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 14, 20, 15, 56, 430952), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-14 20:15 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0045_auto_20160713_2038'), + ] + + operations = [ + migrations.AddField( + model_name='comment', + name='response', + field=models.BooleanField(default=False, verbose_name='\u0415\u0441\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u043e\u0442 \u0430\u0434\u043c\u0438\u043d\u0430'), + ), + migrations.AlterField( + model_name='comment', + name='date', + field=models.DateTimeField(default=datetime.datetime.now, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430'), + ), + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 14, 20, 15, 56, 430952), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/0047_auto_20160714_2018.py b/management/migrations/0047_auto_20160714_2018.py old mode 100755 new mode 100644 index a35f6cd..2b76eaf --- a/management/migrations/0047_auto_20160714_2018.py +++ b/management/migrations/0047_auto_20160714_2018.py @@ -1,27 +1,27 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-14 20:18 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0046_auto_20160714_2015'), - ] - - operations = [ - migrations.AddField( - model_name='comment', - name='response_comment', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='admin_text_response', to='management.Comment', verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442 \u0430\u0434\u043c\u0438\u043d\u0430'), - ), - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 14, 20, 18, 19, 583963), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-14 20:18 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0046_auto_20160714_2015'), + ] + + operations = [ + migrations.AddField( + model_name='comment', + name='response_comment', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='admin_text_response', to='management.Comment', verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442 \u0430\u0434\u043c\u0438\u043d\u0430'), + ), + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 14, 20, 18, 19, 583963), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/0048_auto_20160715_0104.py b/management/migrations/0048_auto_20160715_0104.py old mode 100755 new mode 100644 index a144b20..8f457d9 --- a/management/migrations/0048_auto_20160715_0104.py +++ b/management/migrations/0048_auto_20160715_0104.py @@ -1,37 +1,37 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-15 01:04 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('management', '0047_auto_20160714_2018'), - ] - - operations = [ - migrations.CreateModel( - name='Newsletter', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('status', models.CharField(choices=[(b'Q', '\u041d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0438'), (b'W', '\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f'), (b'F', '\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e')], default=b'Q', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441')), - ('text', models.TextField(verbose_name='\u0422\u0435\u043a\u0441\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f')), - ('date', models.DateTimeField(verbose_name='')), - ('sent_date', models.DateTimeField(verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438')), - ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='newsletter_owner', to=settings.AUTH_USER_MODEL, verbose_name='\u0418\u043d\u0438\u0446\u0438\u0430\u0442\u043e\u0440')), - ('f_recipient', models.ManyToManyField(related_name='newsletter_response', to=settings.AUTH_USER_MODEL, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e')), - ('recipient', models.ManyToManyField(related_name='newsletter_request', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0438')), - ], - ), - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 15, 1, 4, 23, 668352), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-15 01:04 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('management', '0047_auto_20160714_2018'), + ] + + operations = [ + migrations.CreateModel( + name='Newsletter', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('status', models.CharField(choices=[(b'Q', '\u041d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0438'), (b'W', '\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f'), (b'F', '\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e')], default=b'Q', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441')), + ('text', models.TextField(verbose_name='\u0422\u0435\u043a\u0441\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f')), + ('date', models.DateTimeField(verbose_name='')), + ('sent_date', models.DateTimeField(verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438')), + ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='newsletter_owner', to=settings.AUTH_USER_MODEL, verbose_name='\u0418\u043d\u0438\u0446\u0438\u0430\u0442\u043e\u0440')), + ('f_recipient', models.ManyToManyField(related_name='newsletter_response', to=settings.AUTH_USER_MODEL, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e')), + ('recipient', models.ManyToManyField(related_name='newsletter_request', to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0438')), + ], + ), + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 15, 1, 4, 23, 668352), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/0049_auto_20160715_1444.py b/management/migrations/0049_auto_20160715_1444.py old mode 100755 new mode 100644 index d993151..fd3153e --- a/management/migrations/0049_auto_20160715_1444.py +++ b/management/migrations/0049_auto_20160715_1444.py @@ -1,54 +1,54 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-15 14:44 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0048_auto_20160715_0104'), - ] - - operations = [ - migrations.CreateModel( - name='NewsletterShell', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255, verbose_name='\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0430')), - ('head', models.TextField(verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a')), - ('footer', models.TextField(verbose_name='\u0424\u0443\u0442\u0435\u0440')), - ], - options={ - 'verbose_name': '\u041e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438', - 'verbose_name_plural': '\u041e\u0431\u043e\u043b\u043e\u0447\u043a\u0438 \u0440\u0430\u0441\u0441\u044b\u043b\u043e\u043a', - }, - ), - migrations.AlterModelOptions( - name='newsletter', - options={'verbose_name': '\u0420\u0430\u0441\u0441\u044b\u043b\u043a\u0430', 'verbose_name_plural': '\u0420\u0430\u0441\u0441\u044b\u043b\u043a\u0438'}, - ), - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 15, 14, 44, 12, 810816), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - migrations.AlterField( - model_name='newsletter', - name='date', - field=models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u0434\u0430\u0447\u0438'), - ), - migrations.AlterField( - model_name='newsletter', - name='sent_date', - field=models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - migrations.AddField( - model_name='newsletter', - name='shell', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='management.NewsletterShell', verbose_name='\u041e\u0431\u043e\u043b\u043e\u0447\u043a\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-15 14:44 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0048_auto_20160715_0104'), + ] + + operations = [ + migrations.CreateModel( + name='NewsletterShell', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, verbose_name='\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0430')), + ('head', models.TextField(verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a')), + ('footer', models.TextField(verbose_name='\u0424\u0443\u0442\u0435\u0440')), + ], + options={ + 'verbose_name': '\u041e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438', + 'verbose_name_plural': '\u041e\u0431\u043e\u043b\u043e\u0447\u043a\u0438 \u0440\u0430\u0441\u0441\u044b\u043b\u043e\u043a', + }, + ), + migrations.AlterModelOptions( + name='newsletter', + options={'verbose_name': '\u0420\u0430\u0441\u0441\u044b\u043b\u043a\u0430', 'verbose_name_plural': '\u0420\u0430\u0441\u0441\u044b\u043b\u043a\u0438'}, + ), + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 15, 14, 44, 12, 810816), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + migrations.AlterField( + model_name='newsletter', + name='date', + field=models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u0434\u0430\u0447\u0438'), + ), + migrations.AlterField( + model_name='newsletter', + name='sent_date', + field=models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + migrations.AddField( + model_name='newsletter', + name='shell', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='management.NewsletterShell', verbose_name='\u041e\u0431\u043e\u043b\u043e\u0447\u043a\u0430'), + ), + ] diff --git a/management/migrations/0050_auto_20160718_1715.py b/management/migrations/0050_auto_20160718_1715.py old mode 100755 new mode 100644 index 97d8ad0..03547b0 --- a/management/migrations/0050_auto_20160718_1715.py +++ b/management/migrations/0050_auto_20160718_1715.py @@ -1,31 +1,31 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-18 17:15 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0049_auto_20160715_1444'), - ] - - operations = [ - migrations.AddField( - model_name='faqtitle', - name='is_admin', - field=models.BooleanField(default=False, verbose_name='\u0422\u043e\u043b\u044c\u043a\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c'), - ), - migrations.AddField( - model_name='faqtitle', - name='is_stuff', - field=models.BooleanField(default=False, verbose_name='\u0422\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c'), - ), - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 18, 17, 15, 5, 804336), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-18 17:15 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0049_auto_20160715_1444'), + ] + + operations = [ + migrations.AddField( + model_name='faqtitle', + name='is_admin', + field=models.BooleanField(default=False, verbose_name='\u0422\u043e\u043b\u044c\u043a\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c'), + ), + migrations.AddField( + model_name='faqtitle', + name='is_stuff', + field=models.BooleanField(default=False, verbose_name='\u0422\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c'), + ), + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 18, 17, 15, 5, 804336), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/0051_auto_20160718_1721.py b/management/migrations/0051_auto_20160718_1721.py old mode 100755 new mode 100644 index 9a3b881..e4958d3 --- a/management/migrations/0051_auto_20160718_1721.py +++ b/management/migrations/0051_auto_20160718_1721.py @@ -1,26 +1,26 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-18 17:21 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0050_auto_20160718_1715'), - ] - - operations = [ - migrations.RenameField( - model_name='faqtitle', - old_name='is_stuff', - new_name='is_staff', - ), - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 18, 17, 21, 20, 885723), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-18 17:21 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0050_auto_20160718_1715'), + ] + + operations = [ + migrations.RenameField( + model_name='faqtitle', + old_name='is_stuff', + new_name='is_staff', + ), + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 18, 17, 21, 20, 885723), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/0052_auto_20160725_1348.py b/management/migrations/0052_auto_20160725_1348.py old mode 100755 new mode 100644 index 151c835..e5a764f --- a/management/migrations/0052_auto_20160725_1348.py +++ b/management/migrations/0052_auto_20160725_1348.py @@ -1,84 +1,84 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-25 13:48 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import redactor.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0051_auto_20160718_1721'), - ] - - operations = [ - migrations.AddField( - model_name='faq', - name='comments', - field=models.ManyToManyField(blank=True, editable=False, null=True, to='management.Comment', verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438'), - ), - migrations.AddField( - model_name='faq', - name='date', - field=models.DateTimeField(default=datetime.datetime.now, editable=False, verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f'), - ), - migrations.AddField( - model_name='faq', - name='rating', - field=models.IntegerField(default=0, verbose_name='\u0420\u0435\u0439\u0442\u0438\u043d\u0433 \u0441\u0442\u0430\u0442\u044c\u0438'), - ), - migrations.AlterField( - model_name='comment', - name='closed', - field=models.BooleanField(default=False, editable=False, verbose_name='\u0417\u0430\u043a\u0440\u044b\u0442'), - ), - migrations.AlterField( - model_name='comment', - name='files', - field=models.ManyToManyField(blank=True, editable=False, to='storage.Storage', verbose_name='\u041f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b'), - ), - migrations.AlterField( - model_name='comment', - name='parent_id', - field=models.IntegerField(blank=True, default=0, editable=False, verbose_name='ID \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430'), - ), - migrations.AlterField( - model_name='comment', - name='replies', - field=models.ManyToManyField(blank=True, editable=False, null=True, related_name='_comment_replies_+', to='management.Comment', verbose_name='\u041e\u0442\u0432\u0435\u0442\u044b'), - ), - migrations.AlterField( - model_name='comment', - name='response', - field=models.BooleanField(default=False, editable=False, verbose_name='\u0415\u0441\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u043e\u0442 \u0430\u0434\u043c\u0438\u043d\u0430'), - ), - migrations.AlterField( - model_name='comment', - name='response_comment', - field=models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='admin_text_response', to='management.Comment', verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442 \u0430\u0434\u043c\u0438\u043d\u0430'), - ), - migrations.AlterField( - model_name='comment', - name='saw', - field=models.ManyToManyField(blank=True, editable=False, to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0432\u0448\u0438\u0435'), - ), - migrations.AlterField( - model_name='comment', - name='send', - field=models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e'), - ), - migrations.AlterField( - model_name='comment', - name='text', - field=redactor.fields.RedactorField(default=b'', verbose_name='\u0422\u0435\u043a\u0441\u0442'), - ), - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 25, 13, 48, 40, 107257), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-25 13:48 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import redactor.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0051_auto_20160718_1721'), + ] + + operations = [ + migrations.AddField( + model_name='faq', + name='comments', + field=models.ManyToManyField(blank=True, editable=False, null=True, to='management.Comment', verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438'), + ), + migrations.AddField( + model_name='faq', + name='date', + field=models.DateTimeField(default=datetime.datetime.now, editable=False, verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f'), + ), + migrations.AddField( + model_name='faq', + name='rating', + field=models.IntegerField(default=0, verbose_name='\u0420\u0435\u0439\u0442\u0438\u043d\u0433 \u0441\u0442\u0430\u0442\u044c\u0438'), + ), + migrations.AlterField( + model_name='comment', + name='closed', + field=models.BooleanField(default=False, editable=False, verbose_name='\u0417\u0430\u043a\u0440\u044b\u0442'), + ), + migrations.AlterField( + model_name='comment', + name='files', + field=models.ManyToManyField(blank=True, editable=False, to='storage.Storage', verbose_name='\u041f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b'), + ), + migrations.AlterField( + model_name='comment', + name='parent_id', + field=models.IntegerField(blank=True, default=0, editable=False, verbose_name='ID \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430'), + ), + migrations.AlterField( + model_name='comment', + name='replies', + field=models.ManyToManyField(blank=True, editable=False, null=True, related_name='_comment_replies_+', to='management.Comment', verbose_name='\u041e\u0442\u0432\u0435\u0442\u044b'), + ), + migrations.AlterField( + model_name='comment', + name='response', + field=models.BooleanField(default=False, editable=False, verbose_name='\u0415\u0441\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u043e\u0442 \u0430\u0434\u043c\u0438\u043d\u0430'), + ), + migrations.AlterField( + model_name='comment', + name='response_comment', + field=models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='admin_text_response', to='management.Comment', verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442 \u0430\u0434\u043c\u0438\u043d\u0430'), + ), + migrations.AlterField( + model_name='comment', + name='saw', + field=models.ManyToManyField(blank=True, editable=False, to=settings.AUTH_USER_MODEL, verbose_name='\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0432\u0448\u0438\u0435'), + ), + migrations.AlterField( + model_name='comment', + name='send', + field=models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e'), + ), + migrations.AlterField( + model_name='comment', + name='text', + field=redactor.fields.RedactorField(default=b'', verbose_name='\u0422\u0435\u043a\u0441\u0442'), + ), + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 25, 13, 48, 40, 107257), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/0053_auto_20160725_1551.py b/management/migrations/0053_auto_20160725_1551.py old mode 100755 new mode 100644 index 8923ab2..9ee021a --- a/management/migrations/0053_auto_20160725_1551.py +++ b/management/migrations/0053_auto_20160725_1551.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-25 15:51 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0052_auto_20160725_1348'), - ] - - operations = [ - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 25, 15, 51, 28, 988938), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-25 15:51 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0052_auto_20160725_1348'), + ] + + operations = [ + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 25, 15, 51, 28, 988938), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/0054_auto_20160725_1551.py b/management/migrations/0054_auto_20160725_1551.py old mode 100755 new mode 100644 index 8578e18..f1f0f8b --- a/management/migrations/0054_auto_20160725_1551.py +++ b/management/migrations/0054_auto_20160725_1551.py @@ -1,38 +1,38 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-25 15:51 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('access', '0054_auto_20160725_1551'), - ('management', '0053_auto_20160725_1551'), - ] - - operations = [ - migrations.CreateModel( - name='SideBill', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430')), - ('name', models.CharField(max_length=255, verbose_name='\u0418\u043c\u044f')), - ('email', models.CharField(max_length=255, verbose_name='Email')), - ('phone', models.CharField(max_length=255, verbose_name='\u0422\u0435\u043b\u0435\u0444\u043e\u043d')), - ('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='access.TrafSource', verbose_name='\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430')), - ], - options={ - 'verbose_name': '\u0414\u0430\u043d\u043d\u044b\u0435 \u0441 \u043b\u0435\u043d\u0434\u043e\u0441\u043e\u0432', - 'verbose_name_plural': '\u0414\u0430\u043d\u043d\u044b\u0435 \u0441 \u043b\u0435\u043d\u0434\u043e\u0441\u043e\u0432', - }, - ), - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 25, 15, 51, 36, 435324), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-25 15:51 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0054_auto_20160725_1551'), + ('management', '0053_auto_20160725_1551'), + ] + + operations = [ + migrations.CreateModel( + name='SideBill', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date', models.DateTimeField(default=datetime.datetime.now, verbose_name='\u0414\u0430\u0442\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430')), + ('name', models.CharField(max_length=255, verbose_name='\u0418\u043c\u044f')), + ('email', models.CharField(max_length=255, verbose_name='Email')), + ('phone', models.CharField(max_length=255, verbose_name='\u0422\u0435\u043b\u0435\u0444\u043e\u043d')), + ('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='access.TrafSource', verbose_name='\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430')), + ], + options={ + 'verbose_name': '\u0414\u0430\u043d\u043d\u044b\u0435 \u0441 \u043b\u0435\u043d\u0434\u043e\u0441\u043e\u0432', + 'verbose_name_plural': '\u0414\u0430\u043d\u043d\u044b\u0435 \u0441 \u043b\u0435\u043d\u0434\u043e\u0441\u043e\u0432', + }, + ), + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 25, 15, 51, 36, 435324), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/0055_auto_20160725_1554.py b/management/migrations/0055_auto_20160725_1554.py old mode 100755 new mode 100644 index 5610af8..48b15a3 --- a/management/migrations/0055_auto_20160725_1554.py +++ b/management/migrations/0055_auto_20160725_1554.py @@ -1,38 +1,38 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-25 15:54 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0054_auto_20160725_1551'), - ] - - operations = [ - migrations.RemoveField( - model_name='sidebill', - name='email', - ), - migrations.RemoveField( - model_name='sidebill', - name='name', - ), - migrations.RemoveField( - model_name='sidebill', - name='phone', - ), - migrations.AddField( - model_name='sidebill', - name='data', - field=models.TextField(default=b'', verbose_name='\u0414\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0444\u043e\u0440\u043c'), - ), - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 25, 15, 54, 55, 249378), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-25 15:54 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0054_auto_20160725_1551'), + ] + + operations = [ + migrations.RemoveField( + model_name='sidebill', + name='email', + ), + migrations.RemoveField( + model_name='sidebill', + name='name', + ), + migrations.RemoveField( + model_name='sidebill', + name='phone', + ), + migrations.AddField( + model_name='sidebill', + name='data', + field=models.TextField(default=b'', verbose_name='\u0414\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0444\u043e\u0440\u043c'), + ), + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 25, 15, 54, 55, 249378), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/0056_auto_20160725_1601.py b/management/migrations/0056_auto_20160725_1601.py old mode 100755 new mode 100644 index c0f164d..e54d13a --- a/management/migrations/0056_auto_20160725_1601.py +++ b/management/migrations/0056_auto_20160725_1601.py @@ -1,28 +1,28 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-25 16:01 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0055_auto_20160725_1554'), - ] - - operations = [ - migrations.RemoveField( - model_name='sidebill', - name='source', - ), - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 25, 16, 1, 22, 314203), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - migrations.DeleteModel( - name='SideBill', - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-25 16:01 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0055_auto_20160725_1554'), + ] + + operations = [ + migrations.RemoveField( + model_name='sidebill', + name='source', + ), + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 7, 25, 16, 1, 22, 314203), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + migrations.DeleteModel( + name='SideBill', + ), + ] diff --git a/management/migrations/0057_auto_20160814_1736.py b/management/migrations/0057_auto_20160814_1736.py old mode 100755 new mode 100644 index baf42ae..29aace6 --- a/management/migrations/0057_auto_20160814_1736.py +++ b/management/migrations/0057_auto_20160814_1736.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-08-14 17:36 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('management', '0056_auto_20160725_1601'), - ] - - operations = [ - migrations.AlterField( - model_name='modalstack', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 8, 14, 17, 36, 41, 694572), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-08-14 17:36 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0056_auto_20160725_1601'), + ] + + operations = [ + migrations.AlterField( + model_name='modalstack', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 8, 14, 17, 36, 41, 694572), verbose_name='\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438'), + ), + ] diff --git a/management/migrations/__init__.py b/management/migrations/__init__.py old mode 100755 new mode 100644 diff --git a/management/models.py b/management/models.py old mode 100755 new mode 100644 index 2594365..007dde9 --- a/management/models.py +++ b/management/models.py @@ -1,490 +1,490 @@ -# coding=utf-8 -from django.db import models -import locale, datetime -from access.models import User -from redactor.fields import RedactorField -from lms.tools import out_date_format, random_int, random_string -from courses.templates import comment_fabric -from management.letters import sent_new_feedback -from storage.models import Storage -import django.utils.timezone -from precise_bbcode.fields import BBCodeTextField -from markdown import markdown - -MODAL_STATUS = ( - ('C', 'Создана'), - ('P', 'Выполняется'), - ('Q', 'На очереди'), - ('F', 'Закончено') -) - - -def gen_comment_token(comment): - # 1 Надпись ID - # 2 id в системе - # 3 # - # 4 5 случайных чисел - return 'C{0}-{1}'.format(comment.id, random_int(length=5)) - - -def gen_modal_key(): - # Генерация ключа шаблона модуля - return 'M{0}'.format(random_string()) - - -def gen_modal_journal_key(): - return 'MJ{0}'.format(random_int(length=30)) - - -class NewsletterShell(models.Model): - name = models.CharField(verbose_name=u'Название шаблона', max_length=255) - head = models.TextField(verbose_name=u'Заголовок') - footer = models.TextField(verbose_name=u'Футер') - - def __unicode__(self): - return u'%s' % self.name - - def __str__(self): - return '%s' % self.name - - class Meta: - verbose_name = u'Оболочка рассылки' - verbose_name_plural = u'Оболочки рассылок' - - -class Newsletter(models.Model): - STATUS = ( - ('Q', u'На очереди'), - ('W', u'Выполняется'), - ('F', u'Выполнено') - ) - status = models.CharField(verbose_name=u'Статус', max_length=1, choices=STATUS, default='Q') - shell = models.ForeignKey(NewsletterShell, verbose_name=u'Оболочка', null=True) - author = models.ForeignKey(User, verbose_name=u'Инициатор', related_name='newsletter_owner') - text = models.TextField(verbose_name=u'Текст сообщения') - recipient = models.ManyToManyField(User, verbose_name=u'Получатели', related_name='newsletter_request') - date = models.DateTimeField(verbose_name=u'Дата постановки задачи', default=datetime.datetime.now) - sent_date = models.DateTimeField(verbose_name=u'Дата отправки', default=datetime.datetime.now) - f_recipient = models.ManyToManyField(User, verbose_name=u'Отправлено', related_name='newsletter_response') - - def __unicode__(self): - return u'%s %s %s:%s' % (self.author.get_short_name(), self.get_status_display(), self.date, self.sent_date) - - def __str__(self): - return '%s %s %s:%s' % (self.author.get_short_name(), self.get_status_display(), self.date, self.sent_date) - - class Meta: - verbose_name = u'Рассылка' - verbose_name_plural = u'Рассылки' - - -class News(models.Model): - public = models.BooleanField(verbose_name='Опубликовать', default=False) - title = models.CharField(verbose_name='Заголовок', max_length=255) - icon = models.ImageField(verbose_name=u'Иконка', upload_to='news', blank=True) - image = models.ImageField(verbose_name='Заголовочное изображение', upload_to='news', blank=True) - content = RedactorField(verbose_name='Текст') - author = models.ForeignKey(User, verbose_name='Автор', related_name='author_user') - public_date = models.DateTimeField(verbose_name='Дата публикации', blank=True) - create_date = models.DateTimeField(verbose_name='Дата создания', default=django.utils.timezone.now) - - def __unicode__(self): - return u'{0}'.format(self.public) - - def __str__(self): - return '{0}'.format(self.public) - - def get_date(self): - return out_date_format(self.public_date, no_time=True) - - def save(self, *args, **kwargs): - if self.public and not self.public_date: - self.public_date = django.utils.timezone.now() - super(News, self).save(*args, **kwargs) - - class Meta: - verbose_name = 'Новость' - verbose_name_plural = 'Новости' - ordering = ['-public_date'] - - -class CommentSawTable(models.Model): - comment = models.ForeignKey('Comment', verbose_name=u'Комментарий') - user = models.ForeignKey(User, verbose_name=u'Просмотревший') - date = models.DateTimeField(verbose_name=u'Время просмотра просмотра', default=datetime.datetime.now) - - def __unicode__(self): - return u'%s %s' % (self.user, self.date) - - def __str__(self): - return '%s %s' % (self.user, self.date) - - class Meta: - verbose_name = u'Журнал просмотра' - verbose_name_plural = u'Журналы просмотров' - - -class Comment(models.Model): - STATUSES = ( - ('G', 'Одобрено'), - ('F', 'Отклонено'), - ('A', 'Сообщение от администрации'), - ('T', 'Техническое обращение'), - ('H', 'Домашняя работа студента'), - ('Q', 'Вопрос на форуме'), - ('Q2', 'Ответ на форуме'), - ('S', 'Комментарий') - ) - token = models.CharField(verbose_name=u'Ключь доступа', max_length=100, default='', editable=False) - best = models.BooleanField(verbose_name=u'Лучший ответ', default=False) - rating = models.IntegerField(verbose_name=u'Рейтинг', default=0) - minus_rating = models.ManyToManyField(User, verbose_name=u'Хейтеры', editable=False, null=True) - plus_rating = models.ManyToManyField(User, verbose_name=u'Гудеры', editable=False, null=True) - status = models.CharField(verbose_name=u'Статус сообщения', max_length=2, choices=STATUSES, default='S') - saw = models.ManyToManyField(User, verbose_name=u'Прочитавшие', blank=True, editable=False) - response = models.BooleanField(verbose_name=u'Есть ответ от админа', default=False, editable=False) - response_comment = models.ForeignKey('self', verbose_name=u'Комментарий ответа от админа', blank=True, null=True, related_name='admin_text_response', editable=False) - closed = models.BooleanField(verbose_name=u'Закрыт', default=False, editable=False) - parent_id = models.IntegerField(verbose_name=u'ID исходника', default=0, blank=True, editable=False) - owner = models.ForeignKey(User, verbose_name=u'Автор', related_name='comment_owner') - text = RedactorField(verbose_name=u'Текст', default='') - bbtext = BBCodeTextField(verbose_name=u'BB Текст', default='', blank=True) - markdown = models.TextField(blank=True, default='') - html_content = models.TextField(editable=False, blank=True, default='') - date = models.DateTimeField(verbose_name=u'Отправка', default=datetime.datetime.now) - files = models.ManyToManyField(Storage, verbose_name=u'Прикрепленые файлы', blank=True, editable=False) - send = models.BooleanField(verbose_name=u'Отправлено', default=False, editable=False) - replies = models.ManyToManyField('self', verbose_name=u'Ответы', blank=True, related_name='all_text_response', editable=False) - answers = models.ManyToManyField('self', verbose_name=u'Форумные ответы', blank=True, related_name='forum_answers', editable=False) - - def __unicode__(self): - return str(self.id) - - def __str__(self): - return str(self.id) - - def get_text(self): - # Возвращение html текста из bb - if self.html_content: - return self.html_content - - elif self.bbtext.rendered: - result = self.bbtext.rendered - # TODO : Кастыль, Настроить приложения, чтобы тег обрабатывался стандартно - if '[/*]' in result: - result = str(result).replace('[/*]', '') - return result - - elif self.text: - return self.text - - def get_root_id(self): - do = True - cur = None - if self.parent_id: - while do: - comment = Comment.objects.get(id=self.parent_id) - if comment.parent_id: - cur = comment.parent_id - else: - return cur - return cur - - def plus_rating(self, user): - # Добавить рейтинг - # ============= - # Проверить пользователя в хейтерах - удалить его оттуда - # Проверить пользоветля в гудерах и добавить - если его там нет - pass - - def minus_rating(self, user): - # Отнять рейтинг - # ============ - # Проверить пользователя в хейтерах - удалить его оттуда - # Проверить пользоветля в гудерах и добавить - если его там нет - pass - - def check_opinion(self, user): - # Проверить мнение и вернуть состояние голоса - pass - - def get_opinion(self, user): - # Получить цвет мнения - # ============ - # null = нет мнения - # True = положительное мнение - # False = отрицательное мнение - pass - - def delete_opinion(self, user): - # Удалить мнение пользователя - pass - - def save(self, *args, **kwargs): - if not self.status: - if 'Задача принята!
    ' in self.text: - self.status = 'G' - self.text.replace('Задача принята!
    ', '') - elif 'Отправлено на доработку!
    ' in self.text: - self.status = 'F' - self.text.replace('Задача принята!
    ', '') - else: - self.status = 'S' - - if not self.token: - self.token = gen_comment_token(self) - self.html_content = markdown(self.markdown) - super(Comment, self).save(*args, **kwargs) - - def get_answered(self): - return Comment.objects.filter(parent_id=self.id) - - def set_saw(self, user): - # Проверить, что прочитан ли комментарий и добавить пользователя в прочитавших - if not CommentSawTable.objects.filter(user=user, comment=self).exists(): - CommentSawTable.objects.create(user=user, comment=self) - - def get_replies(self, __type, __user): - result = [] - for reply in Comment.objects.filter(parent_id=self.id): - result.append(comment_fabric(reply, __type=__type, __user=__user)) - return result - - def get_face(self, _type=None, _user=None): - return comment_fabric(self, __type=_type, __user=_user) - - def get_RFC_date(self): - locale.setlocale(locale.LC_TIME, 'en_US') - return datetime.datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT') - - class Meta: - verbose_name = u'Комментарий' - verbose_name_plural = u'Комментарии' - ordering = ['id'] - - -class Feedback(models.Model): - closed = models.BooleanField(verbose_name=u'Взято в работу', default=False) - name = models.CharField(verbose_name=u'Имя', max_length=255) - email = models.CharField(verbose_name=u'Email', max_length=255) - phone = models.CharField(verbose_name=u'Телефон', max_length=255) - text = models.TextField(verbose_name=u'Текст') - date = models.DateTimeField(verbose_name=u'Время обращения', default=datetime.datetime.now) - send = models.BooleanField(verbose_name=u'Отправлено', default=False) - - def __unicode__(self): - return u'%s %s' % (self.name, self.closed) - - def __str__(self): - return '%s %s' % (self.name, self.closed) - - def save(self, *args, **kwargs): - if not self.send: - for eye in User.objects.filter(in_role='S2'): - sent_new_feedback(self, eye.email) - super(Feedback, self).save(*args, **kwargs) - - class Meta: - verbose_name = u'Вопрос' - verbose_name_plural = u'Вопросы' - - -class FaqTitle(models.Model): - is_admin = models.BooleanField(verbose_name=u'Только администраторам', default=False) - is_staff = models.BooleanField(verbose_name=u'Только сотрудникам', default=False) - title = models.CharField(verbose_name=u'Тема', max_length=255, unique=True) - icon = models.ImageField(verbose_name=u'Иконка', upload_to='faq', blank=True) - sort = models.IntegerField(verbose_name=u'Порядок', default=0) - - def __unicode__(self): - return u'%s' % self.title - - def __str__(self): - return '%s' % self.title - - def get_face(self): - return { - 'id': self.id, - 'title': self.title, - 'icon': self.get_image(), - 'is_staff': self.is_staff, - 'is_admin': self.is_admin, - 'answers': [i.get_face() for i in Faq.objects.filter(title=self)] - } - - def get_image(self): - if self.icon: - return self.icon.url - else: - return '/static/img/faq.png' - - class Meta: - verbose_name = u'Заголовок FAQ' - verbose_name_plural = u'Заголовки FAQ' - ordering = ['sort'] - - -class Faq(models.Model): - title = models.ForeignKey(FaqTitle, verbose_name=u'Раздел') - question = models.CharField(verbose_name=u'Вопрос', max_length=255) - answer = RedactorField(verbose_name=u'Ответ') - rating = models.IntegerField(verbose_name=u'Рейтинг статьи', default=0) - comments = models.ManyToManyField(Comment, verbose_name=u'Комментарии', blank=True, editable=False) - date = models.DateTimeField(verbose_name=u'Дата создания', default=datetime.datetime.now, editable=False) - - def __str__(self): - return '%s %s' % (self.title, self.question) - - def __unicode__(self): - return u'%s %s' % (self.title, self.question) - - def get_face(self): - return { - 'id': self.id, - 'question': self.question, - 'answer': self.answer, - 'rating': self.rating - } - - -class ModalPlace(models.Model): - public = models.BooleanField(verbose_name=u'В работе', default=True) - key = models.CharField(verbose_name=u'Ключь места', max_length=255, default=gen_modal_key) - description = models.TextField(verbose_name=u'Описание', blank=True) - - def __unicode__(self): - return u'%s' % self.key - - def __str__(self): - return str(self.key) - - def get_modals(self, user): - # Получить все модальные окна для этого места - pass - - class Meta: - verbose_name = u'Всплывающие окна / Место вставок' - verbose_name_plural = u'Всплывающие окна / Места вставки' - - -class ModalTemplate(models.Model): - title = models.CharField(verbose_name=u'Заголовок', max_length=255) - key = models.CharField(verbose_name=u'Ключ Шаблона', max_length=255, default=gen_modal_key) - place = models.ForeignKey(ModalPlace, verbose_name=u'Место вставки', null=True) - context = models.TextField(verbose_name=u'Шаблон', help_text=u'{TEXT} - Место вставки текста,' - u'{TITLE} - Заголовок,' - u'{KEY} - Ключь окна') - - def __unicode__(self): - return u'{0}-{1}'.format(self.title, self.key) - - def __str__(self): - return '{0}-{1}'.format(self.title, self.key) - - def get_title(self): - return '{0}-{1}'.format(self.title, self.key) - - def get_modals(self, user): - # Получить все окна для этого шаблона - pass - - class Meta: - verbose_name = u'Всплывающие окна / Шаблон' - verbose_name_plural = u'Всплывающие окна / Шаблоны' - - -class Modal(models.Model): - template = models.ForeignKey(ModalTemplate, verbose_name=u'Шаблон') - title = models.CharField(verbose_name=u'Заголовок', max_length=255, blank=True) - text = models.TextField(verbose_name=u'Содержимое окна', blank=True) - close = models.BooleanField(verbose_name=u'Закрываемое', default=True) - views = models.IntegerField(verbose_name=u'Необходимое количество просмотров', default=1) - closes = models.IntegerField(verbose_name=u'Необходимое количество закрытий', default=1) - interval = models.IntegerField(verbose_name=u'Интервал показов в часах', default=1) - show_time = models.DateTimeField(verbose_name=u'Начало показа', default=datetime.datetime.now) - hide_time = models.DateTimeField(verbose_name=u'Закрытие показов', blank=True, null=True) - - def __unicode__(self): - return u'' % self.title - - def __str__(self): - return str(self.title) - - def get_title(self): - return self.title - - def get_modals(self, user): - # Получить все окна для этого конструктора - pass - - class Meta: - verbose_name = u'Всплывающие окна / Конструктор' - verbose_name_plural = u'Всплывающие окна / Конструкторы' - - -class ModalTask(models.Model): - user = models.ManyToManyField(User, verbose_name=u'Пользователи', - help_text=u'Как пользователь зайдет на сайт - отсюда он будет удален и ' - u'будет создан журнал. ', related_name='task_user', blank=True, editable=False) - modal = models.ForeignKey(Modal, verbose_name=u'Окно') - manager = models.ForeignKey(User, verbose_name=u'Поставивший задачу', related_name='task_manager') - date = models.DateTimeField(verbose_name=u'Постановка задачи', default=datetime.datetime.now) - status = models.CharField(verbose_name=u'Статус', choices=MODAL_STATUS, default='C', max_length=1) - - def __str__(self): - return str(self.modal.get_title()) - - def __unicode__(self): - return u'%s' % self.modal.get_title() - - def get_modals(self, user): - # Получить все окна от этой задачи - pass - - def save(self, *args, **kwargs): - - super(ModalTask, self).save(*args, **kwargs) - - class Meta: - verbose_name = u'Всплывающие окна / Задача' - verbose_name_plural = u'Всплывающие окна / Задачи' - - -class ModalJournal(models.Model): - STATUS = ( - ('O', 'Открыт'), - ('С', 'Закрыт'), - ('F', 'Закончен') - ) - key = models.CharField(verbose_name=u'Ключ', max_length=255, default=gen_modal_journal_key) - status = models.CharField(verbose_name=u'Статус', choices=STATUS, default='O', editable=False, max_length=1) - user = models.ForeignKey(User, verbose_name=u'Пользователь') - date = models.DateTimeField(verbose_name=u'Дата показа', default=datetime.datetime.now, editable=False) - task = models.ForeignKey(ModalTask, verbose_name=u'Задача') - views = models.IntegerField(verbose_name=u'Необходимое количество просмотров', default=0) - closes = models.IntegerField(verbose_name=u'Необходимое количество закрытий', default=0) - - def __unicode__(self): - return u'%s %s' % (self.user, self.date) - - def __str__(self): - return u'%s %s' % (self.user, self.date) - - def get_content(self, user): - pass - - def save(self, *args, **kwargs): - if self.closes >= self.task.modal.closes: - self.status = 'F' - - if self.views >= self.task.modal.views: - self.status = 'F' - - if self.date >= self.task.modal.hide_time: - self.status = 'F' - - super(ModalJournal, self).save(*args, **kwargs) - - class Meta: - verbose_name = u'Всплывающие окна / Журнал' - verbose_name_plural = u'Всплывающие окна / Журналы' +# coding=utf-8 +from django.db import models +import locale, datetime +from access.models import User +from redactor.fields import RedactorField +from lms.tools import out_date_format, random_int, random_string +from courses.templates import comment_fabric +from management.letters import sent_new_feedback +from storage.models import Storage +import django.utils.timezone +from precise_bbcode.fields import BBCodeTextField +from markdown import markdown + +MODAL_STATUS = ( + ('C', 'Создана'), + ('P', 'Выполняется'), + ('Q', 'На очереди'), + ('F', 'Закончено') +) + + +def gen_comment_token(comment): + # 1 Надпись ID + # 2 id в системе + # 3 # + # 4 5 случайных чисел + return 'C{0}-{1}'.format(comment.id, random_int(length=5)) + + +def gen_modal_key(): + # Генерация ключа шаблона модуля + return 'M{0}'.format(random_string()) + + +def gen_modal_journal_key(): + return 'MJ{0}'.format(random_int(length=30)) + + +class NewsletterShell(models.Model): + name = models.CharField(verbose_name=u'Название шаблона', max_length=255) + head = models.TextField(verbose_name=u'Заголовок') + footer = models.TextField(verbose_name=u'Футер') + + def __unicode__(self): + return u'%s' % self.name + + def __str__(self): + return '%s' % self.name + + class Meta: + verbose_name = u'Оболочка рассылки' + verbose_name_plural = u'Оболочки рассылок' + + +class Newsletter(models.Model): + STATUS = ( + ('Q', u'На очереди'), + ('W', u'Выполняется'), + ('F', u'Выполнено') + ) + status = models.CharField(verbose_name=u'Статус', max_length=1, choices=STATUS, default='Q') + shell = models.ForeignKey(NewsletterShell, verbose_name=u'Оболочка', null=True) + author = models.ForeignKey(User, verbose_name=u'Инициатор', related_name='newsletter_owner') + text = models.TextField(verbose_name=u'Текст сообщения') + recipient = models.ManyToManyField(User, verbose_name=u'Получатели', related_name='newsletter_request') + date = models.DateTimeField(verbose_name=u'Дата постановки задачи', default=datetime.datetime.now) + sent_date = models.DateTimeField(verbose_name=u'Дата отправки', default=datetime.datetime.now) + f_recipient = models.ManyToManyField(User, verbose_name=u'Отправлено', related_name='newsletter_response') + + def __unicode__(self): + return u'%s %s %s:%s' % (self.author.get_short_name(), self.get_status_display(), self.date, self.sent_date) + + def __str__(self): + return '%s %s %s:%s' % (self.author.get_short_name(), self.get_status_display(), self.date, self.sent_date) + + class Meta: + verbose_name = u'Рассылка' + verbose_name_plural = u'Рассылки' + + +class News(models.Model): + public = models.BooleanField(verbose_name='Опубликовать', default=False) + title = models.CharField(verbose_name='Заголовок', max_length=255) + icon = models.ImageField(verbose_name=u'Иконка', upload_to='news', blank=True) + image = models.ImageField(verbose_name='Заголовочное изображение', upload_to='news', blank=True) + content = RedactorField(verbose_name='Текст') + author = models.ForeignKey(User, verbose_name='Автор', related_name='author_user') + public_date = models.DateTimeField(verbose_name='Дата публикации', blank=True) + create_date = models.DateTimeField(verbose_name='Дата создания', default=django.utils.timezone.now) + + def __unicode__(self): + return u'{0}'.format(self.public) + + def __str__(self): + return '{0}'.format(self.public) + + def get_date(self): + return out_date_format(self.public_date, no_time=True) + + def save(self, *args, **kwargs): + if self.public and not self.public_date: + self.public_date = django.utils.timezone.now() + super(News, self).save(*args, **kwargs) + + class Meta: + verbose_name = 'Новость' + verbose_name_plural = 'Новости' + ordering = ['-public_date'] + + +class CommentSawTable(models.Model): + comment = models.ForeignKey('Comment', verbose_name=u'Комментарий') + user = models.ForeignKey(User, verbose_name=u'Просмотревший') + date = models.DateTimeField(verbose_name=u'Время просмотра просмотра', default=datetime.datetime.now) + + def __unicode__(self): + return u'%s %s' % (self.user, self.date) + + def __str__(self): + return '%s %s' % (self.user, self.date) + + class Meta: + verbose_name = u'Журнал просмотра' + verbose_name_plural = u'Журналы просмотров' + + +class Comment(models.Model): + STATUSES = ( + ('G', 'Одобрено'), + ('F', 'Отклонено'), + ('A', 'Сообщение от администрации'), + ('T', 'Техническое обращение'), + ('H', 'Домашняя работа студента'), + ('Q', 'Вопрос на форуме'), + ('Q2', 'Ответ на форуме'), + ('S', 'Комментарий') + ) + token = models.CharField(verbose_name=u'Ключь доступа', max_length=100, default='', editable=False) + best = models.BooleanField(verbose_name=u'Лучший ответ', default=False) + rating = models.IntegerField(verbose_name=u'Рейтинг', default=0) + minus_rating = models.ManyToManyField(User, verbose_name=u'Хейтеры', editable=False, null=True) + plus_rating = models.ManyToManyField(User, verbose_name=u'Гудеры', editable=False, null=True) + status = models.CharField(verbose_name=u'Статус сообщения', max_length=2, choices=STATUSES, default='S') + saw = models.ManyToManyField(User, verbose_name=u'Прочитавшие', blank=True, editable=False) + response = models.BooleanField(verbose_name=u'Есть ответ от админа', default=False, editable=False) + response_comment = models.ForeignKey('self', verbose_name=u'Комментарий ответа от админа', blank=True, null=True, related_name='admin_text_response', editable=False) + closed = models.BooleanField(verbose_name=u'Закрыт', default=False, editable=False) + parent_id = models.IntegerField(verbose_name=u'ID исходника', default=0, blank=True, editable=False) + owner = models.ForeignKey(User, verbose_name=u'Автор', related_name='comment_owner') + text = RedactorField(verbose_name=u'Текст', default='') + bbtext = BBCodeTextField(verbose_name=u'BB Текст', default='', blank=True) + markdown = models.TextField(blank=True, default='') + html_content = models.TextField(editable=False, blank=True, default='') + date = models.DateTimeField(verbose_name=u'Отправка', default=datetime.datetime.now) + files = models.ManyToManyField(Storage, verbose_name=u'Прикрепленые файлы', blank=True, editable=False) + send = models.BooleanField(verbose_name=u'Отправлено', default=False, editable=False) + replies = models.ManyToManyField('self', verbose_name=u'Ответы', blank=True, related_name='all_text_response', editable=False) + answers = models.ManyToManyField('self', verbose_name=u'Форумные ответы', blank=True, related_name='forum_answers', editable=False) + + def __unicode__(self): + return str(self.id) + + def __str__(self): + return str(self.id) + + def get_text(self): + # Возвращение html текста из bb + if self.html_content: + return self.html_content + + elif self.bbtext.rendered: + result = self.bbtext.rendered + # TODO : Кастыль, Настроить приложения, чтобы тег обрабатывался стандартно + if '[/*]' in result: + result = str(result).replace('[/*]', '') + return result + + elif self.text: + return self.text + + def get_root_id(self): + do = True + cur = None + if self.parent_id: + while do: + comment = Comment.objects.get(id=self.parent_id) + if comment.parent_id: + cur = comment.parent_id + else: + return cur + return cur + + def plus_rating(self, user): + # Добавить рейтинг + # ============= + # Проверить пользователя в хейтерах - удалить его оттуда + # Проверить пользоветля в гудерах и добавить - если его там нет + pass + + def minus_rating(self, user): + # Отнять рейтинг + # ============ + # Проверить пользователя в хейтерах - удалить его оттуда + # Проверить пользоветля в гудерах и добавить - если его там нет + pass + + def check_opinion(self, user): + # Проверить мнение и вернуть состояние голоса + pass + + def get_opinion(self, user): + # Получить цвет мнения + # ============ + # null = нет мнения + # True = положительное мнение + # False = отрицательное мнение + pass + + def delete_opinion(self, user): + # Удалить мнение пользователя + pass + + def save(self, *args, **kwargs): + if not self.status: + if 'Задача принята!
    ' in self.text: + self.status = 'G' + self.text.replace('Задача принята!
    ', '') + elif 'Отправлено на доработку!
    ' in self.text: + self.status = 'F' + self.text.replace('Задача принята!
    ', '') + else: + self.status = 'S' + + if not self.token: + self.token = gen_comment_token(self) + self.html_content = markdown(self.markdown) + super(Comment, self).save(*args, **kwargs) + + def get_answered(self): + return Comment.objects.filter(parent_id=self.id) + + def set_saw(self, user): + # Проверить, что прочитан ли комментарий и добавить пользователя в прочитавших + if not CommentSawTable.objects.filter(user=user, comment=self).exists(): + CommentSawTable.objects.create(user=user, comment=self) + + def get_replies(self, __type, __user): + result = [] + for reply in Comment.objects.filter(parent_id=self.id): + result.append(comment_fabric(reply, __type=__type, __user=__user)) + return result + + def get_face(self, _type=None, _user=None): + return comment_fabric(self, __type=_type, __user=_user) + + def get_RFC_date(self): + locale.setlocale(locale.LC_TIME, 'en_US') + return datetime.datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT') + + class Meta: + verbose_name = u'Комментарий' + verbose_name_plural = u'Комментарии' + ordering = ['id'] + + +class Feedback(models.Model): + closed = models.BooleanField(verbose_name=u'Взято в работу', default=False) + name = models.CharField(verbose_name=u'Имя', max_length=255) + email = models.CharField(verbose_name=u'Email', max_length=255) + phone = models.CharField(verbose_name=u'Телефон', max_length=255) + text = models.TextField(verbose_name=u'Текст') + date = models.DateTimeField(verbose_name=u'Время обращения', default=datetime.datetime.now) + send = models.BooleanField(verbose_name=u'Отправлено', default=False) + + def __unicode__(self): + return u'%s %s' % (self.name, self.closed) + + def __str__(self): + return '%s %s' % (self.name, self.closed) + + def save(self, *args, **kwargs): + if not self.send: + for eye in User.objects.filter(in_role='S2'): + sent_new_feedback(self, eye.email) + super(Feedback, self).save(*args, **kwargs) + + class Meta: + verbose_name = u'Вопрос' + verbose_name_plural = u'Вопросы' + + +class FaqTitle(models.Model): + is_admin = models.BooleanField(verbose_name=u'Только администраторам', default=False) + is_staff = models.BooleanField(verbose_name=u'Только сотрудникам', default=False) + title = models.CharField(verbose_name=u'Тема', max_length=255, unique=True) + icon = models.ImageField(verbose_name=u'Иконка', upload_to='faq', blank=True) + sort = models.IntegerField(verbose_name=u'Порядок', default=0) + + def __unicode__(self): + return u'%s' % self.title + + def __str__(self): + return '%s' % self.title + + def get_face(self): + return { + 'id': self.id, + 'title': self.title, + 'icon': self.get_image(), + 'is_staff': self.is_staff, + 'is_admin': self.is_admin, + 'answers': [i.get_face() for i in Faq.objects.filter(title=self)] + } + + def get_image(self): + if self.icon: + return self.icon.url + else: + return '/static/img/faq.png' + + class Meta: + verbose_name = u'Заголовок FAQ' + verbose_name_plural = u'Заголовки FAQ' + ordering = ['sort'] + + +class Faq(models.Model): + title = models.ForeignKey(FaqTitle, verbose_name=u'Раздел') + question = models.CharField(verbose_name=u'Вопрос', max_length=255) + answer = RedactorField(verbose_name=u'Ответ') + rating = models.IntegerField(verbose_name=u'Рейтинг статьи', default=0) + comments = models.ManyToManyField(Comment, verbose_name=u'Комментарии', blank=True, editable=False) + date = models.DateTimeField(verbose_name=u'Дата создания', default=datetime.datetime.now, editable=False) + + def __str__(self): + return '%s %s' % (self.title, self.question) + + def __unicode__(self): + return u'%s %s' % (self.title, self.question) + + def get_face(self): + return { + 'id': self.id, + 'question': self.question, + 'answer': self.answer, + 'rating': self.rating + } + + +class ModalPlace(models.Model): + public = models.BooleanField(verbose_name=u'В работе', default=True) + key = models.CharField(verbose_name=u'Ключь места', max_length=255, default=gen_modal_key) + description = models.TextField(verbose_name=u'Описание', blank=True) + + def __unicode__(self): + return u'%s' % self.key + + def __str__(self): + return str(self.key) + + def get_modals(self, user): + # Получить все модальные окна для этого места + pass + + class Meta: + verbose_name = u'Всплывающие окна / Место вставок' + verbose_name_plural = u'Всплывающие окна / Места вставки' + + +class ModalTemplate(models.Model): + title = models.CharField(verbose_name=u'Заголовок', max_length=255) + key = models.CharField(verbose_name=u'Ключ Шаблона', max_length=255, default=gen_modal_key) + place = models.ForeignKey(ModalPlace, verbose_name=u'Место вставки', null=True) + context = models.TextField(verbose_name=u'Шаблон', help_text=u'{TEXT} - Место вставки текста,' + u'{TITLE} - Заголовок,' + u'{KEY} - Ключь окна') + + def __unicode__(self): + return u'{0}-{1}'.format(self.title, self.key) + + def __str__(self): + return '{0}-{1}'.format(self.title, self.key) + + def get_title(self): + return '{0}-{1}'.format(self.title, self.key) + + def get_modals(self, user): + # Получить все окна для этого шаблона + pass + + class Meta: + verbose_name = u'Всплывающие окна / Шаблон' + verbose_name_plural = u'Всплывающие окна / Шаблоны' + + +class Modal(models.Model): + template = models.ForeignKey(ModalTemplate, verbose_name=u'Шаблон') + title = models.CharField(verbose_name=u'Заголовок', max_length=255, blank=True) + text = models.TextField(verbose_name=u'Содержимое окна', blank=True) + close = models.BooleanField(verbose_name=u'Закрываемое', default=True) + views = models.IntegerField(verbose_name=u'Необходимое количество просмотров', default=1) + closes = models.IntegerField(verbose_name=u'Необходимое количество закрытий', default=1) + interval = models.IntegerField(verbose_name=u'Интервал показов в часах', default=1) + show_time = models.DateTimeField(verbose_name=u'Начало показа', default=datetime.datetime.now) + hide_time = models.DateTimeField(verbose_name=u'Закрытие показов', blank=True, null=True) + + def __unicode__(self): + return u'' % self.title + + def __str__(self): + return str(self.title) + + def get_title(self): + return self.title + + def get_modals(self, user): + # Получить все окна для этого конструктора + pass + + class Meta: + verbose_name = u'Всплывающие окна / Конструктор' + verbose_name_plural = u'Всплывающие окна / Конструкторы' + + +class ModalTask(models.Model): + user = models.ManyToManyField(User, verbose_name=u'Пользователи', + help_text=u'Как пользователь зайдет на сайт - отсюда он будет удален и ' + u'будет создан журнал. ', related_name='task_user', blank=True, editable=False) + modal = models.ForeignKey(Modal, verbose_name=u'Окно') + manager = models.ForeignKey(User, verbose_name=u'Поставивший задачу', related_name='task_manager') + date = models.DateTimeField(verbose_name=u'Постановка задачи', default=datetime.datetime.now) + status = models.CharField(verbose_name=u'Статус', choices=MODAL_STATUS, default='C', max_length=1) + + def __str__(self): + return str(self.modal.get_title()) + + def __unicode__(self): + return u'%s' % self.modal.get_title() + + def get_modals(self, user): + # Получить все окна от этой задачи + pass + + def save(self, *args, **kwargs): + + super(ModalTask, self).save(*args, **kwargs) + + class Meta: + verbose_name = u'Всплывающие окна / Задача' + verbose_name_plural = u'Всплывающие окна / Задачи' + + +class ModalJournal(models.Model): + STATUS = ( + ('O', 'Открыт'), + ('С', 'Закрыт'), + ('F', 'Закончен') + ) + key = models.CharField(verbose_name=u'Ключ', max_length=255, default=gen_modal_journal_key) + status = models.CharField(verbose_name=u'Статус', choices=STATUS, default='O', editable=False, max_length=1) + user = models.ForeignKey(User, verbose_name=u'Пользователь') + date = models.DateTimeField(verbose_name=u'Дата показа', default=datetime.datetime.now, editable=False) + task = models.ForeignKey(ModalTask, verbose_name=u'Задача') + views = models.IntegerField(verbose_name=u'Необходимое количество просмотров', default=0) + closes = models.IntegerField(verbose_name=u'Необходимое количество закрытий', default=0) + + def __unicode__(self): + return u'%s %s' % (self.user, self.date) + + def __str__(self): + return u'%s %s' % (self.user, self.date) + + def get_content(self, user): + pass + + def save(self, *args, **kwargs): + if self.closes >= self.task.modal.closes: + self.status = 'F' + + if self.views >= self.task.modal.views: + self.status = 'F' + + if self.date >= self.task.modal.hide_time: + self.status = 'F' + + super(ModalJournal, self).save(*args, **kwargs) + + class Meta: + verbose_name = u'Всплывающие окна / Журнал' + verbose_name_plural = u'Всплывающие окна / Журналы' diff --git a/management/reports.py b/management/reports.py old mode 100755 new mode 100644 index 293cfe5..3663240 --- a/management/reports.py +++ b/management/reports.py @@ -1,338 +1,338 @@ -# coding=utf-8 -import calendar -import datetime -from django.http import Http404 -from lms.decors import api_decor, response_decor -from journals.models import TeacherJ, CourseThemeJ, HomeworkJ, LessonJ, ReportDepth -from finance.models import Bill, Price -from courses.models import Course, CourseTheme, CourseMap -from access.models import User -from lms.tools import check_role, out_date_format -from lms.settings import DOMAIN -from service.models import MailBox - - -def get_now_success_hw(): - now = datetime.datetime.now() - return HomeworkJ.objects.filter(date__gte=datetime.datetime(now.year, now.month, 1), - date__lte=datetime.datetime(now.year, now.month, calendar.mdays[datetime.date.today().month]), - f_date__lte=datetime.datetime(now.year, now.month, calendar.mdays[datetime.date.today().month]), - f_date__gte=datetime.datetime(now.year, now.month, 1)).count() - - -def get_second_success_hw(): - _now = datetime.datetime.now() - now = datetime.date(_now.year, datetime.datetime.now().month - 1 or 12, _now.day) - return HomeworkJ.objects.filter(date__gte=datetime.datetime(now.year, now.month, 1), - date__lte=datetime.datetime(now.year, now.month, calendar.mdays[now.month]), - f_date__lte=datetime.datetime(now.year, now.month, calendar.mdays[now.month]), - f_date__gte=datetime.datetime(now.year, now.month, 1)).count() - - -@api_decor(without_auth=False) -def now_success_hw(request, context): - context['code'] = '1' - context['data'] = get_now_success_hw() - return context - - -@api_decor(without_auth=False) -def now_second_hw(request, context): - context['code'] = '1' - context['data'] = get_second_success_hw() - return context - - -@response_decor(template='reports/progress.html', without_auth=False) -def progress(request): - courses = {} - for course in Course.objects.filter(public=True): - title = course.get_title() - courses[title] = {'users': [], 'map': [], 'id': course.id} - courses[title]['users'] = Bill.objects.filter(status='F', service__course=course).order_by( - 'user__id').distinct() - courses[title]['map'] = CourseMap.objects.filter(course=course) - - return {'courses': courses, 'get_now_success_hw': get_now_success_hw(), 'get_second_success_hw': get_second_success_hw()} - - -@response_decor(template='reports/freeweek.html', without_auth=False) -def freeweek(request): - if request.GET.get('price'): - result = {'get_now_success_hw': get_now_success_hw(), 'get_second_success_hw': get_second_success_hw()} - price = Price.objects.get(id=request.GET['price']) - result['title'] = price.course.get_title() - result['b_in'] = Bill.objects.filter(status='F', service=price, - finish_date__gt=datetime.datetime.now() - datetime.timedelta(days=8), - user__is_active=True, user__reg_status='4').order_by( - 'finish_date').distinct() - all = Bill.objects.filter(status='F', service=price, finish_date__gt=datetime.datetime.now() - datetime.timedelta(days=8), - user__is_active=True, user__reg_status='4').values_list('user__email', - flat=True).distinct().order_by('finish_date') - result['in_hw'] = HomeworkJ.objects.filter(student__email__in=all, f_date=None, - success=False, material__course=price.course).exclude(date=None).order_by('date') - result['out_hw'] = HomeworkJ.objects.filter(student__email__in=all, success=True, - material__course=price.course).exclude( - f_date=None, date=None).order_by('f_date') - - else: - result = {'active': {}, 'get_now_success_hw': get_now_success_hw(), 'get_second_success_hw': get_second_success_hw()} - # all - Всего пользователей - now = datetime.datetime.now() - result['all'] = int(User.objects.filter(refer='B').count()) - # active - Активировалось - result['active']['count'] = int(User.objects.filter(refer='B', is_active=True, reg_status='4').count()) - result['active']['persent'] = result['active']['count'] * 100 / result['all'] - # Проходят обучение - price = Price.objects.get(id=18) - result['java'] = {'title': price.course, 'id': 18} - result['java']['all'] = Bill.objects.filter(status='F', service=price, user__is_active=True, - user__reg_status='4').values_list('user', - flat=True).distinct().count() - result['java']['in'] = { - 'all': Bill.objects.filter(status='F', service=price, finish_date__gt=now - datetime.timedelta(days=8), - user__is_active=True, user__reg_status='4').values_list('user__email', - flat=True).distinct(), - 'count': Bill.objects.filter(status='F', service=price, finish_date__gte=now - datetime.timedelta(days=7), - user__is_active=True, user__reg_status='4').values_list('user__email', - flat=True).distinct().count()} - result['java']['in_hw'] = HomeworkJ.objects.filter(student__email__in=result['java']['in']['all'], f_date=None, - success=False, material__course=price.course).exclude( - date=None).values_list( - 'student', flat=True).distinct().count() - result['java']['out_hw'] = HomeworkJ.objects.filter(student__email__in=result['java']['in']['all'], - success=True, material__course=price.course).exclude( - f_date=None, date=None).values_list( - 'student', flat=True).distinct().count() - - price = Price.objects.get(id=19) - result['web'] = {'title': price.course, 'id': 19} - result['web']['all'] = Bill.objects.filter(status='F', service=price, user__is_active=True, - user__reg_status='4').values_list('user', - flat=True).distinct().count() - result['web']['in'] = { - 'all': Bill.objects.filter(status='F', service=price, finish_date__gt=now - datetime.timedelta(days=8), - user__is_active=True, user__reg_status='4').values_list('user__email', - flat=True).distinct(), - 'count': Bill.objects.filter(status='F', service=price, finish_date__gte=now - datetime.timedelta(days=7), - user__is_active=True, user__reg_status='4').values_list('user__email', - flat=True).distinct().count()} - result['web']['in_hw'] = HomeworkJ.objects.filter(student__email__in=result['web']['in']['all'], f_date=None, - success=False, material__course=price.course).exclude( - date=None).values_list( - 'student', flat=True).distinct().count() - result['web']['out_hw'] = HomeworkJ.objects.filter(student__email__in=result['web']['in']['all'], - success=True, material__course=price.course).exclude( - f_date=None, date=None).values_list( - 'student', flat=True).distinct().count() - - price = Price.objects.get(id=17) - result['android'] = {'title': price.course, 'id': 17} - result['android']['all'] = Bill.objects.filter(status='F', service=price, user__is_active=True, - user__reg_status='4').values_list('user', - flat=True).distinct().count() - result['android']['in'] = { - 'all': Bill.objects.filter(status='F', service=price, finish_date__gt=now - datetime.timedelta(days=8), - user__is_active=True, user__reg_status='4').values_list('user__email', - flat=True).distinct(), - 'count': Bill.objects.filter(status='F', service=price, finish_date__gte=now - datetime.timedelta(days=7), - user__is_active=True, user__reg_status='4').values_list('user__email', - flat=True).distinct().count()} - result['android']['in_hw'] = HomeworkJ.objects.filter(student__email__in=result['android']['in']['all'], - f_date=None, success=False, - material__course=price.course).exclude( - date=None).values_list( - 'student', flat=True).distinct().count() - result['android']['out_hw'] = HomeworkJ.objects.filter(student__email__in=result['android']['in']['all'], - success=True, material__course=price.course).exclude( - f_date=None, - date=None).values_list( - 'student', flat=True).distinct().count() - - price = Price.objects.get(id=16) - result['csh'] = {'title': price.course, 'id': 16} - result['csh']['all'] = Bill.objects.filter(status='F', service=price, user__is_active=True, - user__reg_status='4').values_list('user', - flat=True).distinct().count() - result['csh']['in'] = { - 'all': Bill.objects.filter(status='F', service=price, finish_date__gt=now - datetime.timedelta(days=8), - user__is_active=True, user__reg_status='4').values_list('user__email', - flat=True).distinct(), - 'count': Bill.objects.filter(status='F', service=price, finish_date__gte=now - datetime.timedelta(days=7), - user__is_active=True, user__reg_status='4').values_list('user__email', - flat=True).distinct().count()} - result['csh']['in_hw'] = HomeworkJ.objects.filter(student__email__in=result['csh']['in']['all'], f_date=None, - success=False, material__course=price.course).exclude( - date=None).values_list( - 'student', flat=True).distinct().count() - result['csh']['out_hw'] = HomeworkJ.objects.filter(student__email__in=result['csh']['in']['all'], - success=True, material__course=price.course).exclude( - f_date=None, date=None).values_list( - 'student', flat=True).distinct().count() - - return result - - -@response_decor(template='reports/hw_process_pp.html', without_auth=False) -def hw_process_pp(request): - # Ответ по ученику - return {'get_now_success_hw': get_now_success_hw(), 'get_second_success_hw': get_second_success_hw()} - - -@response_decor(template='reports/hw_process_pt.html', without_auth=False) -def hw_process_pt(request): - # Отчет по преподавателю - return {'courses': Course.objects.filter(public=True), 'get_now_success_hw': get_now_success_hw(), 'get_second_success_hw': get_second_success_hw()} - - -@response_decor(template='reports/mails.html', without_auth=False) -def mails(request): - # Контроль рассылок - stat = {} - m3 = datetime.datetime.now()-datetime.timedelta(weeks=12) - m1 = datetime.datetime.now()-datetime.timedelta(weeks=4) - w1 = datetime.datetime.now()-datetime.timedelta(weeks=1) - d3 = datetime.datetime.now()-datetime.timedelta(days=3) - d1 = datetime.datetime.now()-datetime.timedelta(days=1) - sections = MailBox.objects.exclude(_type='').values_list('_type', flat=True).distinct() - n = 0 - for section in sections: - stat[section] = { - 'id': n, - 'all': MailBox.objects.filter(_type=section).count(), - 'm3': MailBox.objects.filter(_type=section, sent_date__gte=m3).count(), - 'm1': MailBox.objects.filter(_type=section, sent_date__gte=m1).count(), - 'w1': MailBox.objects.filter(_type=section, sent_date__gte=w1).count(), - 'd3': MailBox.objects.filter(_type=section, sent_date__gte=d3).count(), - 'd1': MailBox.objects.filter(_type=section, sent_date__gte=d1).count() - } - n += 1 - return {'get_now_success_hw': get_now_success_hw(), 'get_second_success_hw': get_second_success_hw(), 'stat': stat, 'self_reports': []} - - -@api_decor(without_auth=False, method='GET', check_request=True, need_keys=['course']) -def get_course_teachers(request, context): - try: - course = Course.objects.get(id=request.GET['course']) - except Course.DoesNotExist: - context['code'] = '0' - context['response'] = u'Курс не найден' - context['data'] = [] - else: - context['code'] = '1' - context['data'] = [teacher.get_face() for teacher in course.teachers.all()] - return context - - -@api_decor(without_auth=False, method='GET', check_request=True, need_keys=['teacher']) -def get_teacher_students(request, context): - try: - journals = TeacherJ.objects.filter(teacher=User.objects.get(id=request.GET['teacher'])).exclude(user__is_active=False) - except User.DoesNotExist: - context['code'] = '0' - context['data'] = [] - context['response'] = u'Преподаватель не найден' - else: - context['code'] = '1' - context['data'] = journals - return context - - -@api_decor(without_auth=False) -def get_course_students(request, context): - context['data'] = [] - if request.GET.get('exc'): - ex = request.GET['exc'].split('_') - ex.pop() - exc = map(int, ex) - user = Bill.objects.filter(status='F', service__course__id=request.GET['course']).exclude( - user__id__in=exc).order_by('user__id').distinct().first() - else: - user = Bill.objects.filter(status='F', service__course__id=request.GET['course']).order_by( - 'user__id').distinct().first() - - if user: - user = user.user - context['code'] = '1' - context['response'] = user.id - for token in ReportDepth.objects.filter(student=user, course__id=int(request.GET['course'])).order_by( - 'token__sort'): - context['data'].append({ - 'point': str(request.GET['course']) + '_' + str(user.id) + '_' + str(token.token.token), - 's_date': '{2}{1}{0}'.format(token.s_date.day, token.s_date.month, token.s_date.year), - 'f_date': '{2}{1}{0}'.format(token.f_date.day, token.f_date.month, - token.f_date.year) if token.f_date else None, - 'type': token.token._type, - 'student': user.id}) - return context - - -@api_decor(without_auth=False, need_keys=['course', 'teacher', 's_date', 'f_date', 'expired', 'success', 'in_work'], method='GET', check_request=True) -def get_process_report(request, context): - if request.user.is_admin: - context['data'] = { - 'more': [] - } - q = { - 'teacher__id': request.GET['teacher'], - 'material__course__id': request.GET['course'], - 'date__gte': datetime.datetime.strptime(request.GET['s_date'], '%d_%m_%Y'), - 'date__lt': datetime.datetime.strptime(request.GET['f_date'], '%d_%m_%Y') - } - hw = HomeworkJ.objects.filter(**q) - student = [] - get_hw = [] - in_work_hw = [] - expired_hw = [] - success_hw = [] - for i in hw: - if not i.set_open and len(list(i.get_tries())) > 0: - exp = i.check_expired() - result = True - if result: - context['data']['more'].append( - {'course': i.material.course.get_title(), - 'id': i.id, - 'material': u'ID: {0} / Порядок темы: {1} / Заголовок: {2}'.format(i.material.id, i.material.theme.sort, i.material.get_title()), - 'material_id': i.material.id, - 'student_token': i.student.interactive_key, - 'student': i.student.get_short_name(), - 'teacher': i.teacher.get_short_name(), - 's_date': out_date_format(i.date), - 'f_date': out_date_format(i.f_date), - 'status': i.get_status()['title'], - 'expired': exp, - 'expired_time': i.expired_time(), - 'tries': len(list(i.get_tries())), - 'link': '{1}teacher/workshop/homework/{0}'.format(i.id, DOMAIN)} - ) - if i.student.id not in student: - student.append(i.student.id) - - if i.id not in expired_hw and exp: - expired_hw.append(i.id) - - if i.id not in in_work_hw and not i.f_date and not i.success: - in_work_hw.append(i.id) - - if i.id not in success_hw and i.success: - success_hw.append(i.id) - - if i.id not in get_hw: - get_hw.append(i.id) - context['code'] = '1' - context['data']['info'] = {'students': len(student), 'get_hw': len(get_hw), 'in_work_hw': len(in_work_hw), 'expired_hw': len(expired_hw), 'success_hw': len(success_hw)} - return context - raise Http404 - - -@api_decor(without_auth=False) -def progress_check_result(request, context): - context['data'] = [] - if int(request.GET['len']) == Bill.objects.filter(status='F', service__course__id=request.GET['course']).values_list('user', - flat=True).order_by( - 'user__id').distinct().count(): - context['code'] = '1' - else: - context['code'] = '0' - return context +# coding=utf-8 +import calendar +import datetime +from django.http import Http404 +from lms.decors import api_decor, response_decor +from journals.models import TeacherJ, CourseThemeJ, HomeworkJ, LessonJ, ReportDepth +from finance.models import Bill, Price +from courses.models import Course, CourseTheme, CourseMap +from access.models import User +from lms.tools import check_role, out_date_format +from lms.settings import DOMAIN +from service.models import MailBox + + +def get_now_success_hw(): + now = datetime.datetime.now() + return HomeworkJ.objects.filter(date__gte=datetime.datetime(now.year, now.month, 1), + date__lte=datetime.datetime(now.year, now.month, calendar.mdays[datetime.date.today().month]), + f_date__lte=datetime.datetime(now.year, now.month, calendar.mdays[datetime.date.today().month]), + f_date__gte=datetime.datetime(now.year, now.month, 1)).count() + + +def get_second_success_hw(): + _now = datetime.datetime.now() + now = datetime.date(_now.year, datetime.datetime.now().month - 1 or 12, _now.day) + return HomeworkJ.objects.filter(date__gte=datetime.datetime(now.year, now.month, 1), + date__lte=datetime.datetime(now.year, now.month, calendar.mdays[now.month]), + f_date__lte=datetime.datetime(now.year, now.month, calendar.mdays[now.month]), + f_date__gte=datetime.datetime(now.year, now.month, 1)).count() + + +@api_decor(without_auth=False) +def now_success_hw(request, context): + context['code'] = '1' + context['data'] = get_now_success_hw() + return context + + +@api_decor(without_auth=False) +def now_second_hw(request, context): + context['code'] = '1' + context['data'] = get_second_success_hw() + return context + + +@response_decor(template='reports/progress.html', without_auth=False) +def progress(request): + courses = {} + for course in Course.objects.filter(public=True): + title = course.get_title() + courses[title] = {'users': [], 'map': [], 'id': course.id} + courses[title]['users'] = Bill.objects.filter(status='F', service__course=course).order_by( + 'user__id').distinct() + courses[title]['map'] = CourseMap.objects.filter(course=course) + + return {'courses': courses, 'get_now_success_hw': get_now_success_hw(), 'get_second_success_hw': get_second_success_hw()} + + +@response_decor(template='reports/freeweek.html', without_auth=False) +def freeweek(request): + if request.GET.get('price'): + result = {'get_now_success_hw': get_now_success_hw(), 'get_second_success_hw': get_second_success_hw()} + price = Price.objects.get(id=request.GET['price']) + result['title'] = price.course.get_title() + result['b_in'] = Bill.objects.filter(status='F', service=price, + finish_date__gt=datetime.datetime.now() - datetime.timedelta(days=8), + user__is_active=True, user__reg_status='4').order_by( + 'finish_date').distinct() + all = Bill.objects.filter(status='F', service=price, finish_date__gt=datetime.datetime.now() - datetime.timedelta(days=8), + user__is_active=True, user__reg_status='4').values_list('user__email', + flat=True).distinct().order_by('finish_date') + result['in_hw'] = HomeworkJ.objects.filter(student__email__in=all, f_date=None, + success=False, material__course=price.course).exclude(date=None).order_by('date') + result['out_hw'] = HomeworkJ.objects.filter(student__email__in=all, success=True, + material__course=price.course).exclude( + f_date=None, date=None).order_by('f_date') + + else: + result = {'active': {}, 'get_now_success_hw': get_now_success_hw(), 'get_second_success_hw': get_second_success_hw()} + # all - Всего пользователей + now = datetime.datetime.now() + result['all'] = int(User.objects.filter(refer='B').count()) + # active - Активировалось + result['active']['count'] = int(User.objects.filter(refer='B', is_active=True, reg_status='4').count()) + result['active']['persent'] = result['active']['count'] * 100 / result['all'] + # Проходят обучение + price = Price.objects.get(id=18) + result['java'] = {'title': price.course, 'id': 18} + result['java']['all'] = Bill.objects.filter(status='F', service=price, user__is_active=True, + user__reg_status='4').values_list('user', + flat=True).distinct().count() + result['java']['in'] = { + 'all': Bill.objects.filter(status='F', service=price, finish_date__gt=now - datetime.timedelta(days=8), + user__is_active=True, user__reg_status='4').values_list('user__email', + flat=True).distinct(), + 'count': Bill.objects.filter(status='F', service=price, finish_date__gte=now - datetime.timedelta(days=7), + user__is_active=True, user__reg_status='4').values_list('user__email', + flat=True).distinct().count()} + result['java']['in_hw'] = HomeworkJ.objects.filter(student__email__in=result['java']['in']['all'], f_date=None, + success=False, material__course=price.course).exclude( + date=None).values_list( + 'student', flat=True).distinct().count() + result['java']['out_hw'] = HomeworkJ.objects.filter(student__email__in=result['java']['in']['all'], + success=True, material__course=price.course).exclude( + f_date=None, date=None).values_list( + 'student', flat=True).distinct().count() + + price = Price.objects.get(id=19) + result['web'] = {'title': price.course, 'id': 19} + result['web']['all'] = Bill.objects.filter(status='F', service=price, user__is_active=True, + user__reg_status='4').values_list('user', + flat=True).distinct().count() + result['web']['in'] = { + 'all': Bill.objects.filter(status='F', service=price, finish_date__gt=now - datetime.timedelta(days=8), + user__is_active=True, user__reg_status='4').values_list('user__email', + flat=True).distinct(), + 'count': Bill.objects.filter(status='F', service=price, finish_date__gte=now - datetime.timedelta(days=7), + user__is_active=True, user__reg_status='4').values_list('user__email', + flat=True).distinct().count()} + result['web']['in_hw'] = HomeworkJ.objects.filter(student__email__in=result['web']['in']['all'], f_date=None, + success=False, material__course=price.course).exclude( + date=None).values_list( + 'student', flat=True).distinct().count() + result['web']['out_hw'] = HomeworkJ.objects.filter(student__email__in=result['web']['in']['all'], + success=True, material__course=price.course).exclude( + f_date=None, date=None).values_list( + 'student', flat=True).distinct().count() + + price = Price.objects.get(id=17) + result['android'] = {'title': price.course, 'id': 17} + result['android']['all'] = Bill.objects.filter(status='F', service=price, user__is_active=True, + user__reg_status='4').values_list('user', + flat=True).distinct().count() + result['android']['in'] = { + 'all': Bill.objects.filter(status='F', service=price, finish_date__gt=now - datetime.timedelta(days=8), + user__is_active=True, user__reg_status='4').values_list('user__email', + flat=True).distinct(), + 'count': Bill.objects.filter(status='F', service=price, finish_date__gte=now - datetime.timedelta(days=7), + user__is_active=True, user__reg_status='4').values_list('user__email', + flat=True).distinct().count()} + result['android']['in_hw'] = HomeworkJ.objects.filter(student__email__in=result['android']['in']['all'], + f_date=None, success=False, + material__course=price.course).exclude( + date=None).values_list( + 'student', flat=True).distinct().count() + result['android']['out_hw'] = HomeworkJ.objects.filter(student__email__in=result['android']['in']['all'], + success=True, material__course=price.course).exclude( + f_date=None, + date=None).values_list( + 'student', flat=True).distinct().count() + + price = Price.objects.get(id=16) + result['csh'] = {'title': price.course, 'id': 16} + result['csh']['all'] = Bill.objects.filter(status='F', service=price, user__is_active=True, + user__reg_status='4').values_list('user', + flat=True).distinct().count() + result['csh']['in'] = { + 'all': Bill.objects.filter(status='F', service=price, finish_date__gt=now - datetime.timedelta(days=8), + user__is_active=True, user__reg_status='4').values_list('user__email', + flat=True).distinct(), + 'count': Bill.objects.filter(status='F', service=price, finish_date__gte=now - datetime.timedelta(days=7), + user__is_active=True, user__reg_status='4').values_list('user__email', + flat=True).distinct().count()} + result['csh']['in_hw'] = HomeworkJ.objects.filter(student__email__in=result['csh']['in']['all'], f_date=None, + success=False, material__course=price.course).exclude( + date=None).values_list( + 'student', flat=True).distinct().count() + result['csh']['out_hw'] = HomeworkJ.objects.filter(student__email__in=result['csh']['in']['all'], + success=True, material__course=price.course).exclude( + f_date=None, date=None).values_list( + 'student', flat=True).distinct().count() + + return result + + +@response_decor(template='reports/hw_process_pp.html', without_auth=False) +def hw_process_pp(request): + # Ответ по ученику + return {'get_now_success_hw': get_now_success_hw(), 'get_second_success_hw': get_second_success_hw()} + + +@response_decor(template='reports/hw_process_pt.html', without_auth=False) +def hw_process_pt(request): + # Отчет по преподавателю + return {'courses': Course.objects.filter(public=True), 'get_now_success_hw': get_now_success_hw(), 'get_second_success_hw': get_second_success_hw()} + + +@response_decor(template='reports/mails.html', without_auth=False) +def mails(request): + # Контроль рассылок + stat = {} + m3 = datetime.datetime.now()-datetime.timedelta(weeks=12) + m1 = datetime.datetime.now()-datetime.timedelta(weeks=4) + w1 = datetime.datetime.now()-datetime.timedelta(weeks=1) + d3 = datetime.datetime.now()-datetime.timedelta(days=3) + d1 = datetime.datetime.now()-datetime.timedelta(days=1) + sections = MailBox.objects.exclude(_type='').values_list('_type', flat=True).distinct() + n = 0 + for section in sections: + stat[section] = { + 'id': n, + 'all': MailBox.objects.filter(_type=section).count(), + 'm3': MailBox.objects.filter(_type=section, sent_date__gte=m3).count(), + 'm1': MailBox.objects.filter(_type=section, sent_date__gte=m1).count(), + 'w1': MailBox.objects.filter(_type=section, sent_date__gte=w1).count(), + 'd3': MailBox.objects.filter(_type=section, sent_date__gte=d3).count(), + 'd1': MailBox.objects.filter(_type=section, sent_date__gte=d1).count() + } + n += 1 + return {'get_now_success_hw': get_now_success_hw(), 'get_second_success_hw': get_second_success_hw(), 'stat': stat, 'self_reports': []} + + +@api_decor(without_auth=False, method='GET', check_request=True, need_keys=['course']) +def get_course_teachers(request, context): + try: + course = Course.objects.get(id=request.GET['course']) + except Course.DoesNotExist: + context['code'] = '0' + context['response'] = u'Курс не найден' + context['data'] = [] + else: + context['code'] = '1' + context['data'] = [teacher.get_face() for teacher in course.teachers.all()] + return context + + +@api_decor(without_auth=False, method='GET', check_request=True, need_keys=['teacher']) +def get_teacher_students(request, context): + try: + journals = TeacherJ.objects.filter(teacher=User.objects.get(id=request.GET['teacher'])).exclude(user__is_active=False) + except User.DoesNotExist: + context['code'] = '0' + context['data'] = [] + context['response'] = u'Преподаватель не найден' + else: + context['code'] = '1' + context['data'] = journals + return context + + +@api_decor(without_auth=False) +def get_course_students(request, context): + context['data'] = [] + if request.GET.get('exc'): + ex = request.GET['exc'].split('_') + ex.pop() + exc = map(int, ex) + user = Bill.objects.filter(status='F', service__course__id=request.GET['course']).exclude( + user__id__in=exc).order_by('user__id').distinct().first() + else: + user = Bill.objects.filter(status='F', service__course__id=request.GET['course']).order_by( + 'user__id').distinct().first() + + if user: + user = user.user + context['code'] = '1' + context['response'] = user.id + for token in ReportDepth.objects.filter(student=user, course__id=int(request.GET['course'])).order_by( + 'token__sort'): + context['data'].append({ + 'point': str(request.GET['course']) + '_' + str(user.id) + '_' + str(token.token.token), + 's_date': '{2}{1}{0}'.format(token.s_date.day, token.s_date.month, token.s_date.year), + 'f_date': '{2}{1}{0}'.format(token.f_date.day, token.f_date.month, + token.f_date.year) if token.f_date else None, + 'type': token.token._type, + 'student': user.id}) + return context + + +@api_decor(without_auth=False, need_keys=['course', 'teacher', 's_date', 'f_date', 'expired', 'success', 'in_work'], method='GET', check_request=True) +def get_process_report(request, context): + if request.user.is_admin: + context['data'] = { + 'more': [] + } + q = { + 'teacher__id': request.GET['teacher'], + 'material__course__id': request.GET['course'], + 'date__gte': datetime.datetime.strptime(request.GET['s_date'], '%d_%m_%Y'), + 'date__lt': datetime.datetime.strptime(request.GET['f_date'], '%d_%m_%Y') + } + hw = HomeworkJ.objects.filter(**q) + student = [] + get_hw = [] + in_work_hw = [] + expired_hw = [] + success_hw = [] + for i in hw: + if not i.set_open and len(list(i.get_tries())) > 0: + exp = i.check_expired() + result = True + if result: + context['data']['more'].append( + {'course': i.material.course.get_title(), + 'id': i.id, + 'material': u'ID: {0} / Порядок темы: {1} / Заголовок: {2}'.format(i.material.id, i.material.theme.sort, i.material.get_title()), + 'material_id': i.material.id, + 'student_token': i.student.interactive_key, + 'student': i.student.get_short_name(), + 'teacher': i.teacher.get_short_name(), + 's_date': out_date_format(i.date), + 'f_date': out_date_format(i.f_date), + 'status': i.get_status()['title'], + 'expired': exp, + 'expired_time': i.expired_time(), + 'tries': len(list(i.get_tries())), + 'link': '{1}teacher/workshop/homework/{0}'.format(i.id, DOMAIN)} + ) + if i.student.id not in student: + student.append(i.student.id) + + if i.id not in expired_hw and exp: + expired_hw.append(i.id) + + if i.id not in in_work_hw and not i.f_date and not i.success: + in_work_hw.append(i.id) + + if i.id not in success_hw and i.success: + success_hw.append(i.id) + + if i.id not in get_hw: + get_hw.append(i.id) + context['code'] = '1' + context['data']['info'] = {'students': len(student), 'get_hw': len(get_hw), 'in_work_hw': len(in_work_hw), 'expired_hw': len(expired_hw), 'success_hw': len(success_hw)} + return context + raise Http404 + + +@api_decor(without_auth=False) +def progress_check_result(request, context): + context['data'] = [] + if int(request.GET['len']) == Bill.objects.filter(status='F', service__course__id=request.GET['course']).values_list('user', + flat=True).order_by( + 'user__id').distinct().count(): + context['code'] = '1' + else: + context['code'] = '0' + return context diff --git a/management/templatetags/__init__.py b/management/templatetags/__init__.py old mode 100755 new mode 100644 index a1208ca..7914b31 --- a/management/templatetags/__init__.py +++ b/management/templatetags/__init__.py @@ -1 +1 @@ -__author__ = 'baryshnikov' +__author__ = 'baryshnikov' diff --git a/management/templatetags/comment_filter.py b/management/templatetags/comment_filter.py old mode 100755 new mode 100644 index 15e9e4e..31d9580 --- a/management/templatetags/comment_filter.py +++ b/management/templatetags/comment_filter.py @@ -1,23 +1,23 @@ -from django import template -from access.models import User -from courses.models import CourseTheme, Lesson, Exam, Course, Homework -from journals.models import ExamJ, HomeworkJ, TeacherJ, CourseThemeJ -from finance.tools import system_check_bill -register = template.Library() - - -def getUserfactory(user): - if user: - try: - user = User.objects.get(id=user) - except User.DoesNotExist: - return user - else: - return None - return user - - -@register.filter -def get_admin_comments(lesson, user): - __theme = Lesson.objects.get(id=lesson) - return __theme.get_all_comments(_user=User.objects.get(id=user)) +from django import template +from access.models import User +from courses.models import CourseTheme, Lesson, Exam, Course, Homework +from journals.models import ExamJ, HomeworkJ, TeacherJ, CourseThemeJ +from finance.tools import system_check_bill +register = template.Library() + + +def getUserfactory(user): + if user: + try: + user = User.objects.get(id=user) + except User.DoesNotExist: + return user + else: + return None + return user + + +@register.filter +def get_admin_comments(lesson, user): + __theme = Lesson.objects.get(id=lesson) + return __theme.get_all_comments(_user=User.objects.get(id=user)) diff --git a/management/tools.py b/management/tools.py old mode 100755 new mode 100644 diff --git a/management/urls.py b/management/urls.py old mode 100755 new mode 100644 diff --git a/management/views.py b/management/views.py old mode 100755 new mode 100644 diff --git a/practice/tasks.py b/practice/tasks.py index 2c02129..32587c0 100644 --- a/practice/tasks.py +++ b/practice/tasks.py @@ -1,11 +1,11 @@ -# coding=utf-8 -from celery.task import periodic_task -from datetime import timedelta, datetime -from practice.models import Workshop - - -@periodic_task(run_every=timedelta(minutes=1)) -def open_resolves(): - for resolve in Workshop.objects.filter(open_resolve=False, will_open_resolve__lte=datetime.now()).exclude(resolve=''): - resolve.open_resolve = True - resolve.save() +# coding=utf-8 +from celery.task import periodic_task +from datetime import timedelta, datetime +from practice.models import Workshop + + +@periodic_task(run_every=timedelta(minutes=1)) +def open_resolves(): + for resolve in Workshop.objects.filter(open_resolve=False, will_open_resolve__lte=datetime.now()).exclude(resolve=''): + resolve.open_resolve = True + resolve.save() diff --git a/practice/urls.py b/practice/urls.py index b1512e6..af6deae 100644 --- a/practice/urls.py +++ b/practice/urls.py @@ -1,7 +1,7 @@ -from django.conf.urls import url -from practice import api, views - -urlpatterns = [ - url(r'get_data_sheet/$', api.get_data_sheet), - url(r'workshop/(?P.*)/$', views.workshop) -] +from django.conf.urls import url +from practice import api, views + +urlpatterns = [ + url(r'get_data_sheet/$', api.get_data_sheet), + url(r'workshop/(?P.*)/$', views.workshop) +] diff --git a/service/__init__.py b/service/__init__.py old mode 100755 new mode 100644 diff --git a/service/admin.py b/service/admin.py old mode 100755 new mode 100644 index d30ea61..2e71979 --- a/service/admin.py +++ b/service/admin.py @@ -1,25 +1,25 @@ -from django.contrib import admin -from service.models import MailBox, Sms, MailTemplate - - -class MailBoxAdmin(admin.ModelAdmin): - list_display = ('_to', 'title', 'queue_date', 'sent_date', 'status', '_type', 'error', ) - list_filter = ('_type', 'sent_date', 'status',) - search_fields = ['_to'] - -admin.site.register(MailBox, MailBoxAdmin) - - -class SmsAdmin(admin.ModelAdmin): - list_display = ('_to', '_status', 'text', 'date', 'error') - search_fields = ['_to'] - list_filter = ['_status', 'date'] - -admin.site.register(Sms, SmsAdmin) - - -class MailTemplateAdmin(admin.ModelAdmin): - list_display = ('title', 'key', ) - - -admin.site.register(MailTemplate, MailTemplateAdmin) +from django.contrib import admin +from service.models import MailBox, Sms, MailTemplate + + +class MailBoxAdmin(admin.ModelAdmin): + list_display = ('_to', 'title', 'queue_date', 'sent_date', 'status', '_type', 'error', ) + list_filter = ('_type', 'sent_date', 'status',) + search_fields = ['_to'] + +admin.site.register(MailBox, MailBoxAdmin) + + +class SmsAdmin(admin.ModelAdmin): + list_display = ('_to', '_status', 'text', 'date', 'error') + search_fields = ['_to'] + list_filter = ['_status', 'date'] + +admin.site.register(Sms, SmsAdmin) + + +class MailTemplateAdmin(admin.ModelAdmin): + list_display = ('title', 'key', ) + + +admin.site.register(MailTemplate, MailTemplateAdmin) diff --git a/service/migrations/0001_initial.py b/service/migrations/0001_initial.py old mode 100755 new mode 100644 index 30f7b56..0ec1c28 --- a/service/migrations/0001_initial.py +++ b/service/migrations/0001_initial.py @@ -1,51 +1,51 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-21 22:58 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='MailBox', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('status', models.CharField(choices=[('Q', '\u041d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0438'), ('W', '\u041e\u0436\u0438\u0434\u0430\u0435\u0442 \u0434\u0430\u0442\u044b \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438'), ('S', '\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d'), ('D', '\u0414\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d'), ('F', '\u0410\u0434\u0440\u0435\u0441\u0430\u0442 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d')], default='Q', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441 \u043f\u0438\u0441\u044c\u043c\u0430')), - ('_to', models.EmailField(max_length=254, verbose_name='\u041f\u043e\u0447\u0442\u0430')), - ('queue_date', models.DateTimeField(default=datetime.datetime.now, help_text='\u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0430\u0442\u0443 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438, \u043f\u0438\u0441\u044c\u043c\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f', verbose_name='\u0414\u0430\u0442\u0430 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u0434\u0430\u0447\u0438')), - ('sent_date', models.DateTimeField(blank=True, editable=False, null=True, verbose_name='\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438')), - ('title', models.CharField(blank=True, max_length=255, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043f\u0438\u0441\u044c\u043c\u0430')), - ('text', models.TextField(verbose_name='\u0422\u0435\u043a\u0441\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438')), - ], - options={ - 'verbose_name': '\u041f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u044f\u0449\u0438\u043a', - 'verbose_name_plural': '\u041f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u044f\u0449\u0438\u043a', - }, - ), - migrations.CreateModel( - name='Sms', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('sent', models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c')), - ('_to', models.CharField(help_text='+79660497379', max_length=255, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c')), - ('_status', models.CharField(choices=[('S', '\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f'), ('F', '\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d'), ('E', '\u041e\u0448\u0438\u0431\u043a\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f')], default='S', editable=False, max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f')), - ('date', models.DateTimeField(default=datetime.datetime(2016, 5, 21, 22, 58, 40, 48414), help_text='\u041d\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 7\u043c\u0438 \u0434\u043d\u0435\u0439', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438')), - ('text', models.TextField(verbose_name='\u0422\u0435\u043a\u0441\u0442')), - ('_from', models.CharField(choices=[('T', 'Tocka Koda'), ('C', 'CODEMY.RU')], default='C', max_length=1, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c')), - ('error', models.TextField(blank=True, editable=False, null=True, verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438')), - ('debug', models.CharField(blank=True, max_length=255, verbose_name='\u0421\u0442\u0440\u043e\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430')), - ], - options={ - 'verbose_name': '\u0421\u041c\u0421', - 'verbose_name_plural': '\u0421\u041c\u0421', - }, - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-21 22:58 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='MailBox', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('status', models.CharField(choices=[('Q', '\u041d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0438'), ('W', '\u041e\u0436\u0438\u0434\u0430\u0435\u0442 \u0434\u0430\u0442\u044b \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438'), ('S', '\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d'), ('D', '\u0414\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d'), ('F', '\u0410\u0434\u0440\u0435\u0441\u0430\u0442 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d')], default='Q', max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441 \u043f\u0438\u0441\u044c\u043c\u0430')), + ('_to', models.EmailField(max_length=254, verbose_name='\u041f\u043e\u0447\u0442\u0430')), + ('queue_date', models.DateTimeField(default=datetime.datetime.now, help_text='\u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0430\u0442\u0443 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438, \u043f\u0438\u0441\u044c\u043c\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f', verbose_name='\u0414\u0430\u0442\u0430 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u0434\u0430\u0447\u0438')), + ('sent_date', models.DateTimeField(blank=True, editable=False, null=True, verbose_name='\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438')), + ('title', models.CharField(blank=True, max_length=255, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043f\u0438\u0441\u044c\u043c\u0430')), + ('text', models.TextField(verbose_name='\u0422\u0435\u043a\u0441\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438')), + ], + options={ + 'verbose_name': '\u041f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u044f\u0449\u0438\u043a', + 'verbose_name_plural': '\u041f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u044f\u0449\u0438\u043a', + }, + ), + migrations.CreateModel( + name='Sms', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('sent', models.BooleanField(default=False, editable=False, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c')), + ('_to', models.CharField(help_text='+79660497379', max_length=255, verbose_name='\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c')), + ('_status', models.CharField(choices=[('S', '\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f'), ('F', '\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d'), ('E', '\u041e\u0448\u0438\u0431\u043a\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f')], default='S', editable=False, max_length=1, verbose_name='\u0421\u0442\u0430\u0442\u0443\u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f')), + ('date', models.DateTimeField(default=datetime.datetime(2016, 5, 21, 22, 58, 40, 48414), help_text='\u041d\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 7\u043c\u0438 \u0434\u043d\u0435\u0439', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438')), + ('text', models.TextField(verbose_name='\u0422\u0435\u043a\u0441\u0442')), + ('_from', models.CharField(choices=[('T', 'Tocka Koda'), ('C', 'CODEMY.RU')], default='C', max_length=1, verbose_name='\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c')), + ('error', models.TextField(blank=True, editable=False, null=True, verbose_name='\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438')), + ('debug', models.CharField(blank=True, max_length=255, verbose_name='\u0421\u0442\u0440\u043e\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430')), + ], + options={ + 'verbose_name': '\u0421\u041c\u0421', + 'verbose_name_plural': '\u0421\u041c\u0421', + }, + ), + ] diff --git a/service/migrations/0002_auto_20160523_1258.py b/service/migrations/0002_auto_20160523_1258.py old mode 100755 new mode 100644 index 43f0ac1..155a89c --- a/service/migrations/0002_auto_20160523_1258.py +++ b/service/migrations/0002_auto_20160523_1258.py @@ -1,31 +1,31 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-23 12:58 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('service', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='mailbox', - name='_type', - field=models.CharField(blank=True, default='', max_length=255, verbose_name='\u0422\u0438\u043f \u043f\u0438\u0441\u044c\u043c\u0430'), - ), - migrations.AlterField( - model_name='mailbox', - name='title', - field=models.CharField(max_length=255, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043f\u0438\u0441\u044c\u043c\u0430'), - ), - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 23, 12, 58, 35, 553986), help_text='\u041d\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 7\u043c\u0438 \u0434\u043d\u0435\u0439', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-23 12:58 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('service', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='mailbox', + name='_type', + field=models.CharField(blank=True, default='', max_length=255, verbose_name='\u0422\u0438\u043f \u043f\u0438\u0441\u044c\u043c\u0430'), + ), + migrations.AlterField( + model_name='mailbox', + name='title', + field=models.CharField(max_length=255, verbose_name='\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043f\u0438\u0441\u044c\u043c\u0430'), + ), + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 5, 23, 12, 58, 35, 553986), help_text='\u041d\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 7\u043c\u0438 \u0434\u043d\u0435\u0439', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/service/migrations/0003_auto_20160523_1420.py b/service/migrations/0003_auto_20160523_1420.py old mode 100755 new mode 100644 index 7463e17..f43ef0d --- a/service/migrations/0003_auto_20160523_1420.py +++ b/service/migrations/0003_auto_20160523_1420.py @@ -1,27 +1,27 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-23 14:20 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -import redactor.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('service', '0002_auto_20160523_1258'), - ] - - operations = [ - migrations.AlterField( - model_name='mailbox', - name='text', - field=redactor.fields.RedactorField(verbose_name='\u0422\u0435\u043a\u0441\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 23, 14, 20, 37, 375689), help_text='\u041d\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 7\u043c\u0438 \u0434\u043d\u0435\u0439', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-23 14:20 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models +import redactor.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('service', '0002_auto_20160523_1258'), + ] + + operations = [ + migrations.AlterField( + model_name='mailbox', + name='text', + field=redactor.fields.RedactorField(verbose_name='\u0422\u0435\u043a\u0441\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 5, 23, 14, 20, 37, 375689), help_text='\u041d\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 7\u043c\u0438 \u0434\u043d\u0435\u0439', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/service/migrations/0004_auto_20160523_1423.py b/service/migrations/0004_auto_20160523_1423.py old mode 100755 new mode 100644 index cf97497..179e1b5 --- a/service/migrations/0004_auto_20160523_1423.py +++ b/service/migrations/0004_auto_20160523_1423.py @@ -1,32 +1,32 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-23 14:23 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -import redactor.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('service', '0003_auto_20160523_1420'), - ] - - operations = [ - migrations.AddField( - model_name='mailbox', - name='result', - field=redactor.fields.RedactorField(blank=True, default='', verbose_name='\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0438\u0441\u044c\u043c\u0430'), - ), - migrations.AlterField( - model_name='mailbox', - name='text', - field=redactor.fields.RedactorField(editable=False, verbose_name='\u0422\u0435\u043a\u0441\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 23, 14, 23, 52, 583897), help_text='\u041d\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 7\u043c\u0438 \u0434\u043d\u0435\u0439', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-23 14:23 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models +import redactor.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('service', '0003_auto_20160523_1420'), + ] + + operations = [ + migrations.AddField( + model_name='mailbox', + name='result', + field=redactor.fields.RedactorField(blank=True, default='', verbose_name='\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0438\u0441\u044c\u043c\u0430'), + ), + migrations.AlterField( + model_name='mailbox', + name='text', + field=redactor.fields.RedactorField(editable=False, verbose_name='\u0422\u0435\u043a\u0441\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 5, 23, 14, 23, 52, 583897), help_text='\u041d\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 7\u043c\u0438 \u0434\u043d\u0435\u0439', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/service/migrations/0005_auto_20160523_1427.py b/service/migrations/0005_auto_20160523_1427.py old mode 100755 new mode 100644 index 0f74f51..eb7c3d8 --- a/service/migrations/0005_auto_20160523_1427.py +++ b/service/migrations/0005_auto_20160523_1427.py @@ -1,32 +1,32 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-23 14:27 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -import redactor.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('service', '0004_auto_20160523_1423'), - ] - - operations = [ - migrations.AlterField( - model_name='mailbox', - name='result', - field=redactor.fields.RedactorField(blank=True, default='', verbose_name='\u0412\u0438\u0434 \u043f\u0438\u0441\u044c\u043c\u0430'), - ), - migrations.AlterField( - model_name='mailbox', - name='text', - field=models.TextField(editable=False, verbose_name='\u0422\u0435\u043a\u0441\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 23, 14, 27, 58, 979146), help_text='\u041d\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 7\u043c\u0438 \u0434\u043d\u0435\u0439', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-23 14:27 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models +import redactor.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('service', '0004_auto_20160523_1423'), + ] + + operations = [ + migrations.AlterField( + model_name='mailbox', + name='result', + field=redactor.fields.RedactorField(blank=True, default='', verbose_name='\u0412\u0438\u0434 \u043f\u0438\u0441\u044c\u043c\u0430'), + ), + migrations.AlterField( + model_name='mailbox', + name='text', + field=models.TextField(editable=False, verbose_name='\u0422\u0435\u043a\u0441\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime(2016, 5, 23, 14, 27, 58, 979146), help_text='\u041d\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 7\u043c\u0438 \u0434\u043d\u0435\u0439', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/service/migrations/0006_auto_20160523_1525.py b/service/migrations/0006_auto_20160523_1525.py old mode 100755 new mode 100644 index 401eb3e..3cd652a --- a/service/migrations/0006_auto_20160523_1525.py +++ b/service/migrations/0006_auto_20160523_1525.py @@ -1,21 +1,21 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-23 15:25 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('service', '0005_auto_20160523_1427'), - ] - - operations = [ - migrations.AlterField( - model_name='sms', - name='date', - field=models.DateTimeField(default=datetime.datetime.now, help_text='\u041d\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 7\u043c\u0438 \u0434\u043d\u0435\u0439', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-05-23 15:25 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('service', '0005_auto_20160523_1427'), + ] + + operations = [ + migrations.AlterField( + model_name='sms', + name='date', + field=models.DateTimeField(default=datetime.datetime.now, help_text='\u041d\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 7\u043c\u0438 \u0434\u043d\u0435\u0439', verbose_name='\u0414\u0430\u0442\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438'), + ), + ] diff --git a/service/migrations/0007_mailbox_custom.py b/service/migrations/0007_mailbox_custom.py old mode 100755 new mode 100644 index afb7774..5b760ab --- a/service/migrations/0007_mailbox_custom.py +++ b/service/migrations/0007_mailbox_custom.py @@ -1,20 +1,20 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-07-18 15:21 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('service', '0006_auto_20160523_1525'), - ] - - operations = [ - migrations.AddField( - model_name='mailbox', - name='custom', - field=models.BooleanField(default=False, verbose_name='\u041a\u0430\u0441\u0442\u043e\u043c\u043d\u0430\u044f \u043e\u0431\u043b\u043e\u0436\u043a\u0430'), - ), - ] +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-07-18 15:21 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('service', '0006_auto_20160523_1525'), + ] + + operations = [ + migrations.AddField( + model_name='mailbox', + name='custom', + field=models.BooleanField(default=False, verbose_name='\u041a\u0430\u0441\u0442\u043e\u043c\u043d\u0430\u044f \u043e\u0431\u043b\u043e\u0436\u043a\u0430'), + ), + ] diff --git a/service/migrations/__init__.py b/service/migrations/__init__.py old mode 100755 new mode 100644 diff --git a/service/models.py b/service/models.py old mode 100755 new mode 100644 index 88645c2..8dce0f9 --- a/service/models.py +++ b/service/models.py @@ -1,196 +1,196 @@ -# coding=utf-8 -from __future__ import unicode_literals -import datetime -import smtplib - -from django.db import models -from django.core.mail import EmailMessage, send_mail -from lms.settings import DEFAULT_FROM_EMAIL, TESTING, TEST_EMAIL, NAME, DOMAIN, SUPPORT, SUPPORT_PHONE -from redactor.fields import RedactorField - -from lms.tools import random_string, str_shielding - - -def mail_access_token(): - pass - - -class MailTemplate(models.Model): - key = models.CharField(verbose_name=u'Ключ шаблона', max_length=255, editable=False, blank=True) - title = models.CharField(verbose_name=u'Название шаблона', max_length=255) - text = models.TextField(verbose_name=u'Шаблон', default='', help_text='{TEXT} - Текст самого письма ' - '{DOMAIN} - Домен отправителя' - '{NAME} - Название компании,' - '{SUPPORT} - Почта поддержки,' - '{SUPPORT_PHONE} - Телефон поддержки') - - def __unicode__(self): - return u'%s' % self.title - - def __str__(self): - return '%s' % self.title - - def save(self, *args, **kwargs): - if not self.key: - self.key = random_string() - super(MailTemplate, self).save(*args, **kwargs) - - class Meta: - verbose_name = u'Шаблон письма' - verbose_name_plural = u'Шаблоны писем' - - -class MailBox(models.Model): - MAIL_STATUS = ( - ('Q', 'На очереди'), - ('W', 'Ожидает даты доставки'), - ('S', 'Отправлен'), - ('E', 'Ошибка отправки'), - ('D', 'Доставлен'), - ('F', 'Адресат не найден') - ) - #token = models.CharField(verbose_name=u'Токен', max_length=255, default=mail_access_token, unique=True) - status = models.CharField(verbose_name=u'Статус письма', choices=MAIL_STATUS, default='Q', max_length=1) - custom = models.BooleanField(verbose_name=u'Кастомная обложка', default=False) - _to = models.EmailField(verbose_name=u'Почта') - queue_date = models.DateTimeField(verbose_name=u'Дата постановки задачи', default=datetime.datetime.now, - help_text=u'Если указать дату доставки, письмо будет ожидать времени своего ' - u'отправления') - error = models.CharField(verbose_name=u'Ошибка отправки', blank=True, default='', max_length=255) - sent_date = models.DateTimeField(verbose_name=u'Время отправки', blank=True, null=True, editable=False) - title = models.CharField(verbose_name=u'Заголовок письма', max_length=255) - text = models.TextField(verbose_name=u'Текст отправки', editable=False) - result = RedactorField(verbose_name=u'Вид письма', blank=True, default='') - _type = models.CharField(verbose_name=u'Тип письма', max_length=255, blank=True, default='') - template = models.CharField(verbose_name=u'Ключ шаблона письма', max_length=100, blank=True, default='') - - def __unicode__(self): - return u'%s %s' % (self._to, self.get_status_display()) - - def __str__(self): - return '%s %s' % (self._to, self.get_status_display()) - - def send_letter(self): - if not self.custom: - msg = EmailMessage(self.title, self.result, u'{1} <{0}>'.format(DEFAULT_FROM_EMAIL, NAME), - [self._to if not TESTING else TEST_EMAIL]) - msg.content_subtype = "html" - try: - msg.send() - except smtplib.SMTPDataError as e: - self.status = 'E' - self.error = e - else: - self.sent_date = datetime.datetime.now() - self.status = 'S' - else: - try: - send_mail( - self.title, - '', - u'{1} <{0}>'.format(DEFAULT_FROM_EMAIL, NAME), - [self._to], - fail_silently=True, - html_message=self.result - ) - except smtplib.SMTPDataError as e: - self.status = 'E' - self.error = e - - # Иногда письма о счетах, которые идут нашим манагерам попадают в спам - # Добавил проверку на этот случай. Пусть еще разок попробуют - if self.error[0:54] == "(554, b'5.7.1 Message rejected under suspicion of SPAM": - self.status = 'Q' - - else: - self.sent_date = datetime.datetime.now() - self.status = 'S' - self.save() - - def save(self, *args, **kwargs): - if not self.result: - template = u'' \ - u'' \ - u'' \ - u'' \ - u'' \ - u'' \ - u'' \ - u'{TEXT}' \ - u'' \ - u'' \ - u'' \ - u'
    С уважением,
    {NAME}
    Пожалуйста, по любым вопросам смело пишите на {SUPPORT}
    ' \ - u'' \ - u'' - if self.template: - try: - _tmp = MailTemplate.objects.get(key=self.template) - except MailTemplate.DoesNotExists: - pass - else: - template = str_shielding(_tmp.text, ['{TEXT}', '{DOMAIN}', '{NAME}', '{SUPPORT}', '{SUPPORT_PHONE}']) - self.result = template.format(**{'TEXT': self.text, 'DOMAIN': DOMAIN, 'NAME': NAME, 'SUPPORT': SUPPORT, 'SUPPORT_PHONE': SUPPORT_PHONE}) - else: - self.custom = True - - super(MailBox, self).save(*args, **kwargs) - - class Meta: - verbose_name = u'Письмо' - verbose_name_plural = u'Письма' - - -class Sms(models.Model): - STAT = ( - ('S', 'Отправляется'), - ('F', 'Отправлен'), - ('E', 'Ошибка отправления') - ) - FROM = ( - ('T', 'Tocka Koda'), - ('C', 'CODEMY.RU') - ) - sent = models.BooleanField(verbose_name=u'Отправить', default=False, editable=False) - _to = models.CharField(verbose_name=u'Получатель', max_length=255, help_text='+79660497379') - _status = models.CharField(verbose_name=u'Статус сообщения', max_length=1, default='S', choices=STAT, - editable=False) - date = models.DateTimeField(verbose_name=u'Дата отправки', default=datetime.datetime.now, - help_text='Не дальше 7ми дней') - text = models.TextField(verbose_name=u'Текст') - _from = models.CharField(verbose_name=u'Отправитель', max_length=1, default='C', choices=FROM) - error = models.TextField(verbose_name=u'Описание отправки', blank=True, null=True, editable=False) - debug = models.CharField(verbose_name=u'Строка запроса', max_length=255, blank=True) - - def __unicode__(self): - return u'%s %s %s' % (self._to, self._status, self.text) - - def save(self, *args, **kwargs): - #if not self.sent: - # try: - - # url = "http://sms.ru/sms/send" - # values = {'api_id': SMS, 'to': self._to, 'text': self.text.encode('utf-8'), - # 'from': self.get__from_display(), 'time': str(time.mktime(self.date.timetuple()))[:10]} - # data = urllib.urlencode(values) - # self.debug = url - # req = urllib2.Request(url, data) - # res = urllib2.urlopen(req) - # except urllib2.URLError as errstr: - # self.error = errstr - # self._status = 'E' - # else: - # sr = res.read().splitlines() - # if sr is not None and int(sr[0]) == 100: - # self._status = 'F' - - # if sr is not None and int(sr[0]) != 100: - # self._status = 'E' - # self.error = servicecodes[int(sr[0])] - # self.sent = True - - super(Sms, self).save(*args, **kwargs) - - class Meta: - verbose_name = u'СМС' - verbose_name_plural = u'СМС' +# coding=utf-8 +from __future__ import unicode_literals +import datetime +import smtplib + +from django.db import models +from django.core.mail import EmailMessage, send_mail +from lms.settings import DEFAULT_FROM_EMAIL, TESTING, TEST_EMAIL, NAME, DOMAIN, SUPPORT, SUPPORT_PHONE +from redactor.fields import RedactorField + +from lms.tools import random_string, str_shielding + + +def mail_access_token(): + pass + + +class MailTemplate(models.Model): + key = models.CharField(verbose_name=u'Ключ шаблона', max_length=255, editable=False, blank=True) + title = models.CharField(verbose_name=u'Название шаблона', max_length=255) + text = models.TextField(verbose_name=u'Шаблон', default='', help_text='{TEXT} - Текст самого письма ' + '{DOMAIN} - Домен отправителя' + '{NAME} - Название компании,' + '{SUPPORT} - Почта поддержки,' + '{SUPPORT_PHONE} - Телефон поддержки') + + def __unicode__(self): + return u'%s' % self.title + + def __str__(self): + return '%s' % self.title + + def save(self, *args, **kwargs): + if not self.key: + self.key = random_string() + super(MailTemplate, self).save(*args, **kwargs) + + class Meta: + verbose_name = u'Шаблон письма' + verbose_name_plural = u'Шаблоны писем' + + +class MailBox(models.Model): + MAIL_STATUS = ( + ('Q', 'На очереди'), + ('W', 'Ожидает даты доставки'), + ('S', 'Отправлен'), + ('E', 'Ошибка отправки'), + ('D', 'Доставлен'), + ('F', 'Адресат не найден') + ) + #token = models.CharField(verbose_name=u'Токен', max_length=255, default=mail_access_token, unique=True) + status = models.CharField(verbose_name=u'Статус письма', choices=MAIL_STATUS, default='Q', max_length=1) + custom = models.BooleanField(verbose_name=u'Кастомная обложка', default=False) + _to = models.EmailField(verbose_name=u'Почта') + queue_date = models.DateTimeField(verbose_name=u'Дата постановки задачи', default=datetime.datetime.now, + help_text=u'Если указать дату доставки, письмо будет ожидать времени своего ' + u'отправления') + error = models.CharField(verbose_name=u'Ошибка отправки', blank=True, default='', max_length=255) + sent_date = models.DateTimeField(verbose_name=u'Время отправки', blank=True, null=True, editable=False) + title = models.CharField(verbose_name=u'Заголовок письма', max_length=255) + text = models.TextField(verbose_name=u'Текст отправки', editable=False) + result = RedactorField(verbose_name=u'Вид письма', blank=True, default='') + _type = models.CharField(verbose_name=u'Тип письма', max_length=255, blank=True, default='') + template = models.CharField(verbose_name=u'Ключ шаблона письма', max_length=100, blank=True, default='') + + def __unicode__(self): + return u'%s %s' % (self._to, self.get_status_display()) + + def __str__(self): + return '%s %s' % (self._to, self.get_status_display()) + + def send_letter(self): + if not self.custom: + msg = EmailMessage(self.title, self.result, u'{1} <{0}>'.format(DEFAULT_FROM_EMAIL, NAME), + [self._to if not TESTING else TEST_EMAIL]) + msg.content_subtype = "html" + try: + msg.send() + except smtplib.SMTPDataError as e: + self.status = 'E' + self.error = e + else: + self.sent_date = datetime.datetime.now() + self.status = 'S' + else: + try: + send_mail( + self.title, + '', + u'{1} <{0}>'.format(DEFAULT_FROM_EMAIL, NAME), + [self._to], + fail_silently=True, + html_message=self.result + ) + except smtplib.SMTPDataError as e: + self.status = 'E' + self.error = e + + # Иногда письма о счетах, которые идут нашим манагерам попадают в спам + # Добавил проверку на этот случай. Пусть еще разок попробуют + if self.error[0:54] == "(554, b'5.7.1 Message rejected under suspicion of SPAM": + self.status = 'Q' + + else: + self.sent_date = datetime.datetime.now() + self.status = 'S' + self.save() + + def save(self, *args, **kwargs): + if not self.result: + template = u'' \ + u'' \ + u'' \ + u'' \ + u'' \ + u'' \ + u'' \ + u'{TEXT}' \ + u'' \ + u'' \ + u'' \ + u'
    С уважением,
    {NAME}
    Пожалуйста, по любым вопросам смело пишите на {SUPPORT}
    ' \ + u'' \ + u'' + if self.template: + try: + _tmp = MailTemplate.objects.get(key=self.template) + except MailTemplate.DoesNotExists: + pass + else: + template = str_shielding(_tmp.text, ['{TEXT}', '{DOMAIN}', '{NAME}', '{SUPPORT}', '{SUPPORT_PHONE}']) + self.result = template.format(**{'TEXT': self.text, 'DOMAIN': DOMAIN, 'NAME': NAME, 'SUPPORT': SUPPORT, 'SUPPORT_PHONE': SUPPORT_PHONE}) + else: + self.custom = True + + super(MailBox, self).save(*args, **kwargs) + + class Meta: + verbose_name = u'Письмо' + verbose_name_plural = u'Письма' + + +class Sms(models.Model): + STAT = ( + ('S', 'Отправляется'), + ('F', 'Отправлен'), + ('E', 'Ошибка отправления') + ) + FROM = ( + ('T', 'Tocka Koda'), + ('C', 'CODEMY.RU') + ) + sent = models.BooleanField(verbose_name=u'Отправить', default=False, editable=False) + _to = models.CharField(verbose_name=u'Получатель', max_length=255, help_text='+79660497379') + _status = models.CharField(verbose_name=u'Статус сообщения', max_length=1, default='S', choices=STAT, + editable=False) + date = models.DateTimeField(verbose_name=u'Дата отправки', default=datetime.datetime.now, + help_text='Не дальше 7ми дней') + text = models.TextField(verbose_name=u'Текст') + _from = models.CharField(verbose_name=u'Отправитель', max_length=1, default='C', choices=FROM) + error = models.TextField(verbose_name=u'Описание отправки', blank=True, null=True, editable=False) + debug = models.CharField(verbose_name=u'Строка запроса', max_length=255, blank=True) + + def __unicode__(self): + return u'%s %s %s' % (self._to, self._status, self.text) + + def save(self, *args, **kwargs): + #if not self.sent: + # try: + + # url = "http://sms.ru/sms/send" + # values = {'api_id': SMS, 'to': self._to, 'text': self.text.encode('utf-8'), + # 'from': self.get__from_display(), 'time': str(time.mktime(self.date.timetuple()))[:10]} + # data = urllib.urlencode(values) + # self.debug = url + # req = urllib2.Request(url, data) + # res = urllib2.urlopen(req) + # except urllib2.URLError as errstr: + # self.error = errstr + # self._status = 'E' + # else: + # sr = res.read().splitlines() + # if sr is not None and int(sr[0]) == 100: + # self._status = 'F' + + # if sr is not None and int(sr[0]) != 100: + # self._status = 'E' + # self.error = servicecodes[int(sr[0])] + # self.sent = True + + super(Sms, self).save(*args, **kwargs) + + class Meta: + verbose_name = u'СМС' + verbose_name_plural = u'СМС' diff --git a/service/tasks.py b/service/tasks.py old mode 100755 new mode 100644 diff --git a/service/tools.py b/service/tools.py old mode 100755 new mode 100644 index b536203..85c7344 --- a/service/tools.py +++ b/service/tools.py @@ -1,20 +1,20 @@ -# coding=utf-8 -servicecodes = { - 100: "Сообщение принято к отправке. На следующих строчках вы найдете идентификаторы отправленных сообщений в том же порядке, в котором вы указали номера, на которых совершалась отправка.", - 200: "Неправильный api_id", - 201: "Не хватает средств на лицевом счету", - 202: "Неправильно указан получатель", - 203: "Нет текста сообщения", - 204: "Имя отправителя не согласовано с администрацией", - 205: "Сообщение слишком длинное (превышает 8 СМС)", - 206: "Будет превышен или уже превышен дневной лимит на отправку сообщений", - 207: "На этот номер (или один из номеров) нельзя отправлять сообщения, либо указано более 100 номеров в списке получателей", - 208: "Параметр time указан неправильно", - 209: "Вы добавили этот номер (или один из номеров) в стоп-лист", - 210: "Используется GET, где необходимо использовать POST", - 211: "Метод не найден", - 220: "Сервис временно недоступен, попробуйте чуть позже.", - 300: "Неправильный token (возможно истек срок действия, либо ваш IP изменился)", - 301: "Неправильный пароль, либо пользователь не найден", - 302: "Пользователь авторизован, но аккаунт не подтвержден (пользователь не ввел код, присланный в регистрационной смс)", -} +# coding=utf-8 +servicecodes = { + 100: "Сообщение принято к отправке. На следующих строчках вы найдете идентификаторы отправленных сообщений в том же порядке, в котором вы указали номера, на которых совершалась отправка.", + 200: "Неправильный api_id", + 201: "Не хватает средств на лицевом счету", + 202: "Неправильно указан получатель", + 203: "Нет текста сообщения", + 204: "Имя отправителя не согласовано с администрацией", + 205: "Сообщение слишком длинное (превышает 8 СМС)", + 206: "Будет превышен или уже превышен дневной лимит на отправку сообщений", + 207: "На этот номер (или один из номеров) нельзя отправлять сообщения, либо указано более 100 номеров в списке получателей", + 208: "Параметр time указан неправильно", + 209: "Вы добавили этот номер (или один из номеров) в стоп-лист", + 210: "Используется GET, где необходимо использовать POST", + 211: "Метод не найден", + 220: "Сервис временно недоступен, попробуйте чуть позже.", + 300: "Неправильный token (возможно истек срок действия, либо ваш IP изменился)", + 301: "Неправильный пароль, либо пользователь не найден", + 302: "Пользователь авторизован, но аккаунт не подтвержден (пользователь не ввел код, присланный в регистрационной смс)", +} diff --git a/service/views.py b/service/views.py old mode 100755 new mode 100644 index c60c790..91ea44a --- a/service/views.py +++ b/service/views.py @@ -1,3 +1,3 @@ -from django.shortcuts import render - -# Create your views here. +from django.shortcuts import render + +# Create your views here. diff --git a/static/09Cg13KjU7/bg.jpg b/static/09Cg13KjU7/bg.jpg deleted file mode 100644 index e6733b5..0000000 Binary files a/static/09Cg13KjU7/bg.jpg and /dev/null differ diff --git a/static/09Cg13KjU7/button.png b/static/09Cg13KjU7/button.png deleted file mode 100644 index 7053ce7..0000000 Binary files a/static/09Cg13KjU7/button.png and /dev/null differ diff --git a/static/09Cg13KjU7/footer.png b/static/09Cg13KjU7/footer.png deleted file mode 100644 index 1c5686a..0000000 Binary files a/static/09Cg13KjU7/footer.png and /dev/null differ diff --git a/static/09Cg13KjU7/skillbox.png b/static/09Cg13KjU7/skillbox.png deleted file mode 100644 index 6e524bc..0000000 Binary files a/static/09Cg13KjU7/skillbox.png and /dev/null differ diff --git a/static/admin/css/base.css b/static/admin/css/base.css deleted file mode 120000 index 3db1c87..0000000 --- a/static/admin/css/base.css +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/css/base.css \ No newline at end of file diff --git a/static/admin/css/changelists.css b/static/admin/css/changelists.css deleted file mode 120000 index b067ce8..0000000 --- a/static/admin/css/changelists.css +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/css/changelists.css \ No newline at end of file diff --git a/static/admin/css/dashboard.css b/static/admin/css/dashboard.css deleted file mode 120000 index 6d54444..0000000 --- a/static/admin/css/dashboard.css +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/css/dashboard.css \ No newline at end of file diff --git a/static/admin/css/fonts.css b/static/admin/css/fonts.css deleted file mode 120000 index cdc8c7c..0000000 --- a/static/admin/css/fonts.css +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/css/fonts.css \ No newline at end of file diff --git a/static/admin/css/forms.css b/static/admin/css/forms.css deleted file mode 120000 index 15ccb31..0000000 --- a/static/admin/css/forms.css +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/css/forms.css \ No newline at end of file diff --git a/static/admin/css/login.css b/static/admin/css/login.css deleted file mode 120000 index 5713268..0000000 --- a/static/admin/css/login.css +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/css/login.css \ No newline at end of file diff --git a/static/admin/css/rtl.css b/static/admin/css/rtl.css deleted file mode 120000 index ca0b5c8..0000000 --- a/static/admin/css/rtl.css +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/css/rtl.css \ No newline at end of file diff --git a/static/admin/css/widgets.css b/static/admin/css/widgets.css deleted file mode 120000 index c53c9c6..0000000 --- a/static/admin/css/widgets.css +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/css/widgets.css \ No newline at end of file diff --git a/static/admin/fonts/LICENSE.txt b/static/admin/fonts/LICENSE.txt deleted file mode 120000 index f788d11..0000000 --- a/static/admin/fonts/LICENSE.txt +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/fonts/LICENSE.txt \ No newline at end of file diff --git a/static/admin/fonts/README.txt b/static/admin/fonts/README.txt deleted file mode 120000 index 9d32853..0000000 --- a/static/admin/fonts/README.txt +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/fonts/README.txt \ No newline at end of file diff --git a/static/admin/fonts/Roboto-Bold-webfont.woff b/static/admin/fonts/Roboto-Bold-webfont.woff deleted file mode 120000 index cad8c78..0000000 --- a/static/admin/fonts/Roboto-Bold-webfont.woff +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/fonts/Roboto-Bold-webfont.woff \ No newline at end of file diff --git a/static/admin/fonts/Roboto-Light-webfont.woff b/static/admin/fonts/Roboto-Light-webfont.woff deleted file mode 120000 index 374a089..0000000 --- a/static/admin/fonts/Roboto-Light-webfont.woff +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/fonts/Roboto-Light-webfont.woff \ No newline at end of file diff --git a/static/admin/fonts/Roboto-Regular-webfont.woff b/static/admin/fonts/Roboto-Regular-webfont.woff deleted file mode 120000 index 95f19fe..0000000 --- a/static/admin/fonts/Roboto-Regular-webfont.woff +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/fonts/Roboto-Regular-webfont.woff \ No newline at end of file diff --git a/static/admin/img/LICENSE b/static/admin/img/LICENSE deleted file mode 120000 index 409b6a5..0000000 --- a/static/admin/img/LICENSE +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/LICENSE \ No newline at end of file diff --git a/static/admin/img/README.txt b/static/admin/img/README.txt deleted file mode 120000 index 4e7a1e1..0000000 --- a/static/admin/img/README.txt +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/README.txt \ No newline at end of file diff --git a/static/admin/img/calendar-icons.svg b/static/admin/img/calendar-icons.svg deleted file mode 120000 index 8508dd6..0000000 --- a/static/admin/img/calendar-icons.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/calendar-icons.svg \ No newline at end of file diff --git a/static/admin/img/gis/move_vertex_off.svg b/static/admin/img/gis/move_vertex_off.svg deleted file mode 120000 index 58e8b54..0000000 --- a/static/admin/img/gis/move_vertex_off.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_off.svg \ No newline at end of file diff --git a/static/admin/img/gis/move_vertex_on.svg b/static/admin/img/gis/move_vertex_on.svg deleted file mode 120000 index 472609a..0000000 --- a/static/admin/img/gis/move_vertex_on.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_on.svg \ No newline at end of file diff --git a/static/admin/img/icon-addlink.svg b/static/admin/img/icon-addlink.svg deleted file mode 120000 index 6d85597..0000000 --- a/static/admin/img/icon-addlink.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/icon-addlink.svg \ No newline at end of file diff --git a/static/admin/img/icon-alert.svg b/static/admin/img/icon-alert.svg deleted file mode 120000 index aa91986..0000000 --- a/static/admin/img/icon-alert.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/icon-alert.svg \ No newline at end of file diff --git a/static/admin/img/icon-calendar.svg b/static/admin/img/icon-calendar.svg deleted file mode 120000 index 2534d82..0000000 --- a/static/admin/img/icon-calendar.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/icon-calendar.svg \ No newline at end of file diff --git a/static/admin/img/icon-changelink.svg b/static/admin/img/icon-changelink.svg deleted file mode 120000 index 7d79904..0000000 --- a/static/admin/img/icon-changelink.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/icon-changelink.svg \ No newline at end of file diff --git a/static/admin/img/icon-clock.svg b/static/admin/img/icon-clock.svg deleted file mode 120000 index a4a3794..0000000 --- a/static/admin/img/icon-clock.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/icon-clock.svg \ No newline at end of file diff --git a/static/admin/img/icon-deletelink.svg b/static/admin/img/icon-deletelink.svg deleted file mode 120000 index a7b5539..0000000 --- a/static/admin/img/icon-deletelink.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/icon-deletelink.svg \ No newline at end of file diff --git a/static/admin/img/icon-no.svg b/static/admin/img/icon-no.svg deleted file mode 120000 index 584ffae..0000000 --- a/static/admin/img/icon-no.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/icon-no.svg \ No newline at end of file diff --git a/static/admin/img/icon-unknown-alt.svg b/static/admin/img/icon-unknown-alt.svg deleted file mode 120000 index 8462b4d..0000000 --- a/static/admin/img/icon-unknown-alt.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/icon-unknown-alt.svg \ No newline at end of file diff --git a/static/admin/img/icon-unknown.svg b/static/admin/img/icon-unknown.svg deleted file mode 120000 index d49ba6b..0000000 --- a/static/admin/img/icon-unknown.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/icon-unknown.svg \ No newline at end of file diff --git a/static/admin/img/icon-yes.svg b/static/admin/img/icon-yes.svg deleted file mode 120000 index 8af3bcf..0000000 --- a/static/admin/img/icon-yes.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/icon-yes.svg \ No newline at end of file diff --git a/static/admin/img/inline-delete.svg b/static/admin/img/inline-delete.svg deleted file mode 120000 index 5fb1d51..0000000 --- a/static/admin/img/inline-delete.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/inline-delete.svg \ No newline at end of file diff --git a/static/admin/img/search.svg b/static/admin/img/search.svg deleted file mode 120000 index 02e4ffa..0000000 --- a/static/admin/img/search.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/search.svg \ No newline at end of file diff --git a/static/admin/img/selector-icons.svg b/static/admin/img/selector-icons.svg deleted file mode 120000 index 1d888c4..0000000 --- a/static/admin/img/selector-icons.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/selector-icons.svg \ No newline at end of file diff --git a/static/admin/img/sorting-icons.svg b/static/admin/img/sorting-icons.svg deleted file mode 120000 index a22bd42..0000000 --- a/static/admin/img/sorting-icons.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/sorting-icons.svg \ No newline at end of file diff --git a/static/admin/img/tooltag-add.svg b/static/admin/img/tooltag-add.svg deleted file mode 120000 index 566065a..0000000 --- a/static/admin/img/tooltag-add.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/tooltag-add.svg \ No newline at end of file diff --git a/static/admin/img/tooltag-arrowright.svg b/static/admin/img/tooltag-arrowright.svg deleted file mode 120000 index 63a5b4d..0000000 --- a/static/admin/img/tooltag-arrowright.svg +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/tooltag-arrowright.svg \ No newline at end of file diff --git a/static/admin/js/SelectBox.js b/static/admin/js/SelectBox.js deleted file mode 120000 index 8bfe00d..0000000 --- a/static/admin/js/SelectBox.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/SelectBox.js \ No newline at end of file diff --git a/static/admin/js/SelectFilter2.js b/static/admin/js/SelectFilter2.js deleted file mode 120000 index 4807c1c..0000000 --- a/static/admin/js/SelectFilter2.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/SelectFilter2.js \ No newline at end of file diff --git a/static/admin/js/actions.js b/static/admin/js/actions.js deleted file mode 120000 index 459156d..0000000 --- a/static/admin/js/actions.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/actions.js \ No newline at end of file diff --git a/static/admin/js/actions.min.js b/static/admin/js/actions.min.js deleted file mode 120000 index d88d3d9..0000000 --- a/static/admin/js/actions.min.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/actions.min.js \ No newline at end of file diff --git a/static/admin/js/admin/DateTimeShortcuts.js b/static/admin/js/admin/DateTimeShortcuts.js deleted file mode 120000 index a36ce76..0000000 --- a/static/admin/js/admin/DateTimeShortcuts.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js \ No newline at end of file diff --git a/static/admin/js/admin/RelatedObjectLookups.js b/static/admin/js/admin/RelatedObjectLookups.js deleted file mode 120000 index 016a3b3..0000000 --- a/static/admin/js/admin/RelatedObjectLookups.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js \ No newline at end of file diff --git a/static/admin/js/calendar.js b/static/admin/js/calendar.js deleted file mode 120000 index 1b6fc34..0000000 --- a/static/admin/js/calendar.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/calendar.js \ No newline at end of file diff --git a/static/admin/js/collapse.js b/static/admin/js/collapse.js deleted file mode 120000 index 7c80f0d..0000000 --- a/static/admin/js/collapse.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/collapse.js \ No newline at end of file diff --git a/static/admin/js/collapse.min.js b/static/admin/js/collapse.min.js deleted file mode 120000 index c5403af..0000000 --- a/static/admin/js/collapse.min.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/collapse.min.js \ No newline at end of file diff --git a/static/admin/js/core.js b/static/admin/js/core.js deleted file mode 120000 index 0ee4bd6..0000000 --- a/static/admin/js/core.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/core.js \ No newline at end of file diff --git a/static/admin/js/inlines.js b/static/admin/js/inlines.js deleted file mode 120000 index 84bc80f..0000000 --- a/static/admin/js/inlines.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/inlines.js \ No newline at end of file diff --git a/static/admin/js/inlines.min.js b/static/admin/js/inlines.min.js deleted file mode 120000 index 3b3d081..0000000 --- a/static/admin/js/inlines.min.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/inlines.min.js \ No newline at end of file diff --git a/static/admin/js/jquery.init.js b/static/admin/js/jquery.init.js deleted file mode 120000 index 8e1368d..0000000 --- a/static/admin/js/jquery.init.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/jquery.init.js \ No newline at end of file diff --git a/static/admin/js/prepopulate.js b/static/admin/js/prepopulate.js deleted file mode 120000 index 54f312b..0000000 --- a/static/admin/js/prepopulate.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/prepopulate.js \ No newline at end of file diff --git a/static/admin/js/prepopulate.min.js b/static/admin/js/prepopulate.min.js deleted file mode 120000 index 0b363ef..0000000 --- a/static/admin/js/prepopulate.min.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/prepopulate.min.js \ No newline at end of file diff --git a/static/admin/js/timeparse.js b/static/admin/js/timeparse.js deleted file mode 120000 index 8f11458..0000000 --- a/static/admin/js/timeparse.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/timeparse.js \ No newline at end of file diff --git a/static/admin/js/urlify.js b/static/admin/js/urlify.js deleted file mode 120000 index f4cb79f..0000000 --- a/static/admin/js/urlify.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/urlify.js \ No newline at end of file diff --git a/static/admin/js/vendor/jquery/LICENSE-JQUERY.txt b/static/admin/js/vendor/jquery/LICENSE-JQUERY.txt deleted file mode 120000 index 6c6abb4..0000000 --- a/static/admin/js/vendor/jquery/LICENSE-JQUERY.txt +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/vendor/jquery/LICENSE-JQUERY.txt \ No newline at end of file diff --git a/static/admin/js/vendor/jquery/jquery.js b/static/admin/js/vendor/jquery/jquery.js deleted file mode 120000 index aff929d..0000000 --- a/static/admin/js/vendor/jquery/jquery.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/vendor/jquery/jquery.js \ No newline at end of file diff --git a/static/admin/js/vendor/jquery/jquery.min.js b/static/admin/js/vendor/jquery/jquery.min.js deleted file mode 120000 index 988af4c..0000000 --- a/static/admin/js/vendor/jquery/jquery.min.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/vendor/jquery/jquery.min.js \ No newline at end of file diff --git a/static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt b/static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt deleted file mode 120000 index b5cbe70..0000000 --- a/static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt \ No newline at end of file diff --git a/static/admin/js/vendor/xregexp/xregexp.min.js b/static/admin/js/vendor/xregexp/xregexp.min.js deleted file mode 120000 index f07cbc6..0000000 --- a/static/admin/js/vendor/xregexp/xregexp.min.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.min.js \ No newline at end of file diff --git a/static/css/404.css b/static/css/404.css deleted file mode 100755 index c2b641c..0000000 --- a/static/css/404.css +++ /dev/null @@ -1,360 +0,0 @@ -#monkey_404 { - width: 800px; - height: 480px; - position: absolute; - left: 50%; - top: 50%; - margin-left: -400px; - margin-top: -240px; -} -#monkey_404 .st0 { - fill: #E8EBED; -} -#monkey_404 .st1 { - fill: #FFFFFF; -} -#monkey_404 .st2 { - fill: none; - stroke: #89949B; - stroke-width: 3; - stroke-linecap: round; - stroke-linejoin: round; - stroke-miterlimit: 10; -} -#monkey_404 .st3 { - fill: #E8EBED; - stroke: #89949B; - stroke-width: 3; - stroke-linecap: round; - stroke-linejoin: round; - stroke-miterlimit: 10; -} -#monkey_404 .st4 { - fill: #FFFFFF; - stroke: #89949B; - stroke-width: 3; - stroke-linecap: round; - stroke-linejoin: round; - stroke-miterlimit: 10; -} -#monkey_404 .st5 { - fill: none; - stroke: #89949B; - stroke-width: 3; - stroke-linecap: round; - stroke-linejoin: round; - stroke-miterlimit: 10; -} -#monkey_404 .st6 { - fill: none; - stroke: #89949B; - stroke-width: 4; - stroke-linecap: round; - stroke-linejoin: round; - stroke-miterlimit: 10; -} -#monkey_404 .st7 { - fill: #FFFFFF; - stroke: #89949B; - stroke-width: 2; - stroke-linecap: round; - stroke-linejoin: round; - stroke-miterlimit: 10; -} -#monkey_404 .st8 { - fill: #89949B; -} -#monkey_404 .st9 { - fill: #89949B; -} -#monkey_404 .st10 { - fill: none; - stroke: #89949B; - stroke-width: 2; - stroke-linecap: round; - stroke-linejoin: round; - stroke-miterlimit: 10; -} -#monkey_404 .st11 { - fill: #FFFFFF; -} -#monkey_404 .st12 { - fill: #FFFFFF; - stroke: #8894A0; - stroke-width: 3; - stroke-linecap: round; - stroke-linejoin: round; - stroke-miterlimit: 10; -} -#monkey_404 .st13 { - fill: #FFFFFF; - stroke: #89949B; - stroke-width: 3; - stroke-linecap: round; - stroke-linejoin: round; - stroke-miterlimit: 10; -} -#monkey_404 .st14 { - fill: none; - stroke: #89949B; - stroke-linecap: round; - stroke-linejoin: round; - stroke-miterlimit: 10; -} -#monkey_404 .st15 { - fill: none; - stroke: #89949B; - stroke-linecap: round; - stroke-linejoin: round; - stroke-miterlimit: 10; -} -#monkey_404 #arm { - -webkit-transform-origin: 155px 292px; - -moz-transform-origin: 155px 292px; - -o-transform-origin: 155px 292px; - -ms-transform-origin: 155px 292px; - transform-origin: 155px 292px; - -webkit-transform: rotateZ(-2deg); - -moz-transform: rotateZ(-2deg); - -o-transform: rotateZ(-2deg); - -ms-transform: rotateZ(-2deg); - transform: rotateZ(-2deg); -} -#monkey_404 #monkey { - -webkit-animation: monkey-breathe 3s infinite ease-in-out; - -moz-animation: monkey-breathe 3s infinite ease-in-out; - -o-animation: monkey-breathe 3s infinite ease-in-out; - animation: monkey-breathe 3s infinite ease-in-out; -} -#monkey_404 #zelda, -#monkey_404 #tetris, -#monkey_404 #moon, -#monkey_404 #star_a, -#monkey_404 #star_b, -#monkey_404 #star_c, -#monkey_404 #star_d, -#monkey_404 #number_4, -#monkey_404 #number_4_2, -#monkey_404 #number_0, -#monkey_404 #sword { - -webkit-animation: levitate 3s infinite ease-in-out; - -moz-animation: levitate 3s infinite ease-in-out; - -o-animation: levitate 3s infinite ease-in-out; - animation: levitate 3s infinite ease-in-out; -} -#monkey_404 #zelda { - -webkit-animation-delay: 0s; - -moz-animation-delay: 0s; - -o-animation-delay: 0s; - animation-delay: 0s; - -webkit-animation-duration: 3s; - -moz-animation-duration: 3s; - -o-animation-duration: 3s; - animation-duration: 3s; -} -#monkey_404 #tetris { - -webkit-animation-delay: 1s; - -moz-animation-delay: 1s; - -o-animation-delay: 1s; - animation-delay: 1s; - -webkit-animation-duration: 3s; - -moz-animation-duration: 3s; - -o-animation-duration: 3s; - animation-duration: 3s; -} -#monkey_404 #moon { - -webkit-animation-delay: 0.5s; - -moz-animation-delay: 0.5s; - -o-animation-delay: 0.5s; - animation-delay: 0.5s; - -webkit-animation-duration: 3s; - -moz-animation-duration: 3s; - -o-animation-duration: 3s; - animation-duration: 3s; -} -#monkey_404 #star_a { - -webkit-animation-delay: 0s; - -moz-animation-delay: 0s; - -o-animation-delay: 0s; - animation-delay: 0s; - -webkit-animation-duration: 3s; - -moz-animation-duration: 3s; - -o-animation-duration: 3s; - animation-duration: 3s; -} -#monkey_404 #star_b { - -webkit-animation-delay: 0.5s; - -moz-animation-delay: 0.5s; - -o-animation-delay: 0.5s; - animation-delay: 0.5s; - -webkit-animation-duration: 3s; - -moz-animation-duration: 3s; - -o-animation-duration: 3s; - animation-duration: 3s; -} -#monkey_404 #star_c { - -webkit-animation-delay: 1s; - -moz-animation-delay: 1s; - -o-animation-delay: 1s; - animation-delay: 1s; - -webkit-animation-duration: 3s; - -moz-animation-duration: 3s; - -o-animation-duration: 3s; - animation-duration: 3s; -} -#monkey_404 #star_d { - -webkit-animation-delay: 1.5s; - -moz-animation-delay: 1.5s; - -o-animation-delay: 1.5s; - animation-delay: 1.5s; - -webkit-animation-duration: 3s; - -moz-animation-duration: 3s; - -o-animation-duration: 3s; - animation-duration: 3s; -} -#monkey_404 #number_4 { - -webkit-animation-delay: 0s; - -moz-animation-delay: 0s; - -o-animation-delay: 0s; - animation-delay: 0s; - -webkit-animation-duration: 3s; - -moz-animation-duration: 3s; - -o-animation-duration: 3s; - animation-duration: 3s; -} -#monkey_404 #number_4_2 { - -webkit-animation-delay: 1s; - -moz-animation-delay: 1s; - -o-animation-delay: 1s; - animation-delay: 1s; - -webkit-animation-duration: 3s; - -moz-animation-duration: 3s; - -o-animation-duration: 3s; - animation-duration: 3s; -} -#monkey_404 #number_0 { - -webkit-animation-delay: 0.5s; - -moz-animation-delay: 0.5s; - -o-animation-delay: 0.5s; - animation-delay: 0.5s; - -webkit-animation-duration: 3s; - -moz-animation-duration: 3s; - -o-animation-duration: 3s; - animation-duration: 3s; -} -#monkey_404 #sword { - -webkit-animation-delay: 1.5s; - -moz-animation-delay: 1.5s; - -o-animation-delay: 1.5s; - animation-delay: 1.5s; - -webkit-animation-duration: 3s; - -moz-animation-duration: 3s; - -o-animation-duration: 3s; - animation-duration: 3s; -} -#monkey_404 #eye_left { - -webkit-transform-origin: 191px 257px; - -moz-transform-origin: 191px 257px; - -o-transform-origin: 191px 257px; - -ms-transform-origin: 191px 257px; - transform-origin: 191px 257px; - -webkit-animation: blink-l 12s infinite ease-in-out; - -moz-animation: blink-l 12s infinite ease-in-out; - -o-animation: blink-l 12s infinite ease-in-out; - animation: blink-l 12s infinite ease-in-out; -} -#monkey_404 #eye_right { - -webkit-transform-origin: 205px 256px; - -moz-transform-origin: 205px 256px; - -o-transform-origin: 205px 256px; - -ms-transform-origin: 205px 256px; - transform-origin: 205px 256px; - -webkit-animation: blink-r 12s infinite ease-in-out; - -moz-animation: blink-r 12s infinite ease-in-out; - -o-animation: blink-r 12s infinite ease-in-out; - animation: blink-r 12s infinite ease-in-out; -} -lesshat-selector { - -lh-property: 0; } -@-webkit-keyframes arm-rotate{ 0% { -webkit-transform: rotateZ(-3deg);} 50% { -webkit-transform: rotateZ(6deg);}} -@-moz-keyframes arm-rotate{ 0% { -moz-transform: rotateZ(-3deg);} 50% { -moz-transform: rotateZ(6deg);}} -@-o-keyframes arm-rotate{ 0% { -o-transform: rotateZ(-3deg);} 50% { -o-transform: rotateZ(6deg);}} -@keyframes arm-rotate{ 0% {-webkit-transform: rotateZ(-3deg);-moz-transform: rotateZ(-3deg);-ms-transform: rotateZ(-3deg);transform: rotateZ(-3deg);} 50% {-webkit-transform: rotateZ(6deg);-moz-transform: rotateZ(6deg);-ms-transform: rotateZ(6deg);transform: rotateZ(6deg);}; -} -lesshat-selector { - -lh-property: 0; } -@-webkit-keyframes arm-rotate{ 0% { -webkit-transform: rotateZ(-3deg);} 50% { -webkit-transform: rotateZ(6deg);}} -@-moz-keyframes arm-rotate{ 0% { -moz-transform: rotateZ(-3deg);} 50% { -moz-transform: rotateZ(6deg);}} -@-o-keyframes arm-rotate{ 0% { -o-transform: rotateZ(-3deg);} 50% { -o-transform: rotateZ(6deg);}} -@keyframes arm-rotate{ 0% {-webkit-transform: rotateZ(-3deg);-moz-transform: rotateZ(-3deg);-ms-transform: rotateZ(-3deg);transform: rotateZ(-3deg);} 50% {-webkit-transform: rotateZ(6deg);-moz-transform: rotateZ(6deg);-ms-transform: rotateZ(6deg);transform: rotateZ(6deg);}; -} -lesshat-selector { - -lh-property: 0; } -@-webkit-keyframes monkey-breathe{ 0% { -webkit-transform: translate3d(0,0,0);} 50% { -webkit-transform: translate3d(0,1px,0);}} -@-moz-keyframes monkey-breathe{ 0% { -moz-transform: translate3d(0,0,0);} 50% { -moz-transform: translate3d(0,1px,0);}} -@-o-keyframes monkey-breathe{ 0% { -o-transform: translate3d(0,0,0);} 50% { -o-transform: translate3d(0,1px,0);}} -@keyframes monkey-breathe{ 0% {-webkit-transform: translate3d(0,0,0);-moz-transform: translate3d(0,0,0);-ms-transform: translate3d(0,0,0);transform: translate3d(0,0,0);} 50% {-webkit-transform: translate3d(0,1px,0);-moz-transform: translate3d(0,1px,0);-ms-transform: translate3d(0,1px,0);transform: translate3d(0,1px,0);}; -} -lesshat-selector { - -lh-property: 0; } -@-webkit-keyframes monkey-breathe{ 0% { -webkit-transform: translate3d(0,0,0);} 50% { -webkit-transform: translate3d(0,1px,0);}} -@-moz-keyframes monkey-breathe{ 0% { -moz-transform: translate3d(0,0,0);} 50% { -moz-transform: translate3d(0,1px,0);}} -@-o-keyframes monkey-breathe{ 0% { -o-transform: translate3d(0,0,0);} 50% { -o-transform: translate3d(0,1px,0);}} -@keyframes monkey-breathe{ 0% {-webkit-transform: translate3d(0,0,0);-moz-transform: translate3d(0,0,0);-ms-transform: translate3d(0,0,0);transform: translate3d(0,0,0);} 50% {-webkit-transform: translate3d(0,1px,0);-moz-transform: translate3d(0,1px,0);-ms-transform: translate3d(0,1px,0);transform: translate3d(0,1px,0);}; -} -lesshat-selector { - -lh-property: 0; } -@-webkit-keyframes levitate{ 0% { -webkit-transform: translate3d(0,0,0);} 50% { -webkit-transform: translate3d(0,5px,0);}} -@-moz-keyframes levitate{ 0% { -moz-transform: translate3d(0,0,0);} 50% { -moz-transform: translate3d(0,5px,0);}} -@-o-keyframes levitate{ 0% { -o-transform: translate3d(0,0,0);} 50% { -o-transform: translate3d(0,5px,0);}} -@keyframes levitate{ 0% {-webkit-transform: translate3d(0,0,0);-moz-transform: translate3d(0,0,0);-ms-transform: translate3d(0,0,0);transform: translate3d(0,0,0);} 50% {-webkit-transform: translate3d(0,5px,0);-moz-transform: translate3d(0,5px,0);-ms-transform: translate3d(0,5px,0);transform: translate3d(0,5px,0);}; -} -lesshat-selector { - -lh-property: 0; } -@-webkit-keyframes levitate{ 0% { -webkit-transform: translate3d(0,0,0);} 50% { -webkit-transform: translate3d(0,5px,0);}} -@-moz-keyframes levitate{ 0% { -moz-transform: translate3d(0,0,0);} 50% { -moz-transform: translate3d(0,5px,0);}} -@-o-keyframes levitate{ 0% { -o-transform: translate3d(0,0,0);} 50% { -o-transform: translate3d(0,5px,0);}} -@keyframes levitate{ 0% {-webkit-transform: translate3d(0,0,0);-moz-transform: translate3d(0,0,0);-ms-transform: translate3d(0,0,0);transform: translate3d(0,0,0);} 50% {-webkit-transform: translate3d(0,5px,0);-moz-transform: translate3d(0,5px,0);-ms-transform: translate3d(0,5px,0);transform: translate3d(0,5px,0);}; -} -lesshat-selector { - -lh-property: 0; } -@-webkit-keyframes star{ 0% { -webkit-transform: translate3d(0,0,0) rotateZ(0deg);} 50% { -webkit-transform: translate3d(0,5px,0) rotateZ(180deg);}} -@-moz-keyframes star{ 0% { -moz-transform: translate3d(0,0,0) rotateZ(0deg);} 50% { -moz-transform: translate3d(0,5px,0) rotateZ(180deg);}} -@-o-keyframes star{ 0% { -o-transform: translate3d(0,0,0) rotateZ(0deg);} 50% { -o-transform: translate3d(0,5px,0) rotateZ(180deg);}} -@keyframes star{ 0% {-webkit-transform: translate3d(0,0,0) rotateZ(0deg);-moz-transform: translate3d(0,0,0) rotateZ(0deg);-ms-transform: translate3d(0,0,0) rotateZ(0deg);transform: translate3d(0,0,0) rotateZ(0deg);} 50% {-webkit-transform: translate3d(0,5px,0) rotateZ(180deg);-moz-transform: translate3d(0,5px,0) rotateZ(180deg);-ms-transform: translate3d(0,5px,0) rotateZ(180deg);transform: translate3d(0,5px,0) rotateZ(180deg);}; -} -lesshat-selector { - -lh-property: 0; } -@-webkit-keyframes star{ 0% { -webkit-transform: translate3d(0,0,0) rotateZ(0deg);} 50% { -webkit-transform: translate3d(0,5px,0) rotateZ(180deg);}} -@-moz-keyframes star{ 0% { -moz-transform: translate3d(0,0,0) rotateZ(0deg);} 50% { -moz-transform: translate3d(0,5px,0) rotateZ(180deg);}} -@-o-keyframes star{ 0% { -o-transform: translate3d(0,0,0) rotateZ(0deg);} 50% { -o-transform: translate3d(0,5px,0) rotateZ(180deg);}} -@keyframes star{ 0% {-webkit-transform: translate3d(0,0,0) rotateZ(0deg);-moz-transform: translate3d(0,0,0) rotateZ(0deg);-ms-transform: translate3d(0,0,0) rotateZ(0deg);transform: translate3d(0,0,0) rotateZ(0deg);} 50% {-webkit-transform: translate3d(0,5px,0) rotateZ(180deg);-moz-transform: translate3d(0,5px,0) rotateZ(180deg);-ms-transform: translate3d(0,5px,0) rotateZ(180deg);transform: translate3d(0,5px,0) rotateZ(180deg);}; -} -lesshat-selector { - -lh-property: 0; } -@-webkit-keyframes blink-l{ 0% { -webkit-transform: rotateX(0deg); } 2% { -webkit-transform: rotateX(80deg); } 4%,20% { -webkit-transform: rotateX(0deg); } 22% { -webkit-transform: rotateX(80deg); } 24%,30% { -webkit-transform: rotateX(0deg); } 32% { -webkit-transform: rotateX(80deg); } 34%,70% { -webkit-transform: rotateX(0deg); } 72% { -webkit-transform: rotateX(80deg); } 74%,100% { -webkit-transform: rotateX(0deg); }} -@-moz-keyframes blink-l{ 0% { -moz-transform: rotateX(0deg); } 2% { -moz-transform: rotateX(80deg); } 4%,20% { -moz-transform: rotateX(0deg); } 22% { -moz-transform: rotateX(80deg); } 24%,30% { -moz-transform: rotateX(0deg); } 32% { -moz-transform: rotateX(80deg); } 34%,70% { -moz-transform: rotateX(0deg); } 72% { -moz-transform: rotateX(80deg); } 74%,100% { -moz-transform: rotateX(0deg); }} -@-o-keyframes blink-l{ 0% { -o-transform: rotateX(0deg); } 2% { -o-transform: rotateX(80deg); } 4%,20% { -o-transform: rotateX(0deg); } 22% { -o-transform: rotateX(80deg); } 24%,30% { -o-transform: rotateX(0deg); } 32% { -o-transform: rotateX(80deg); } 34%,70% { -o-transform: rotateX(0deg); } 72% { -o-transform: rotateX(80deg); } 74%,100% { -o-transform: rotateX(0deg); }} -@keyframes blink-l{ 0% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 2% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 4%,20% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 22% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 24%,30% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 32% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 34%,70% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 72% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 74%,100% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); }; -} -lesshat-selector { - -lh-property: 0; } -@-webkit-keyframes blink-l{ 0% { -webkit-transform: rotateX(0deg); } 2% { -webkit-transform: rotateX(80deg); } 4%,20% { -webkit-transform: rotateX(0deg); } 22% { -webkit-transform: rotateX(80deg); } 24%,30% { -webkit-transform: rotateX(0deg); } 32% { -webkit-transform: rotateX(80deg); } 34%,70% { -webkit-transform: rotateX(0deg); } 72% { -webkit-transform: rotateX(80deg); } 74%,100% { -webkit-transform: rotateX(0deg); }} -@-moz-keyframes blink-l{ 0% { -moz-transform: rotateX(0deg); } 2% { -moz-transform: rotateX(80deg); } 4%,20% { -moz-transform: rotateX(0deg); } 22% { -moz-transform: rotateX(80deg); } 24%,30% { -moz-transform: rotateX(0deg); } 32% { -moz-transform: rotateX(80deg); } 34%,70% { -moz-transform: rotateX(0deg); } 72% { -moz-transform: rotateX(80deg); } 74%,100% { -moz-transform: rotateX(0deg); }} -@-o-keyframes blink-l{ 0% { -o-transform: rotateX(0deg); } 2% { -o-transform: rotateX(80deg); } 4%,20% { -o-transform: rotateX(0deg); } 22% { -o-transform: rotateX(80deg); } 24%,30% { -o-transform: rotateX(0deg); } 32% { -o-transform: rotateX(80deg); } 34%,70% { -o-transform: rotateX(0deg); } 72% { -o-transform: rotateX(80deg); } 74%,100% { -o-transform: rotateX(0deg); }} -@keyframes blink-l{ 0% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 2% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 4%,20% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 22% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 24%,30% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 32% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 34%,70% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 72% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 74%,100% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); }; -} -lesshat-selector { - -lh-property: 0; } -@-webkit-keyframes blink-r{ 0% { -webkit-transform: rotateX(0deg); } 2% { -webkit-transform: rotateX(80deg); } 4%,30% { -webkit-transform: rotateX(0deg); } 32% { -webkit-transform: rotateX(80deg); } 34%,50% { -webkit-transform: rotateX(0deg); } 52% { -webkit-transform: rotateX(80deg); } 54%,100% { -webkit-transform: rotateX(0deg); } } -@-moz-keyframes blink-r{ 0% { -moz-transform: rotateX(0deg); } 2% { -moz-transform: rotateX(80deg); } 4%,30% { -moz-transform: rotateX(0deg); } 32% { -moz-transform: rotateX(80deg); } 34%,50% { -moz-transform: rotateX(0deg); } 52% { -moz-transform: rotateX(80deg); } 54%,100% { -moz-transform: rotateX(0deg); } } -@-o-keyframes blink-r{ 0% { -o-transform: rotateX(0deg); } 2% { -o-transform: rotateX(80deg); } 4%,30% { -o-transform: rotateX(0deg); } 32% { -o-transform: rotateX(80deg); } 34%,50% { -o-transform: rotateX(0deg); } 52% { -o-transform: rotateX(80deg); } 54%,100% { -o-transform: rotateX(0deg); } } -@keyframes blink-r{ 0% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 2% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 4%,30% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 32% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 34%,50% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 52% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 54%,100% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } ; -} -lesshat-selector { - -lh-property: 0; } -@-webkit-keyframes blink-r{ 0% { -webkit-transform: rotateX(0deg); } 2% { -webkit-transform: rotateX(80deg); } 4%,30% { -webkit-transform: rotateX(0deg); } 32% { -webkit-transform: rotateX(80deg); } 34%,50% { -webkit-transform: rotateX(0deg); } 52% { -webkit-transform: rotateX(80deg); } 54%,100% { -webkit-transform: rotateX(0deg); } } -@-moz-keyframes blink-r{ 0% { -moz-transform: rotateX(0deg); } 2% { -moz-transform: rotateX(80deg); } 4%,30% { -moz-transform: rotateX(0deg); } 32% { -moz-transform: rotateX(80deg); } 34%,50% { -moz-transform: rotateX(0deg); } 52% { -moz-transform: rotateX(80deg); } 54%,100% { -moz-transform: rotateX(0deg); } } -@-o-keyframes blink-r{ 0% { -o-transform: rotateX(0deg); } 2% { -o-transform: rotateX(80deg); } 4%,30% { -o-transform: rotateX(0deg); } 32% { -o-transform: rotateX(80deg); } 34%,50% { -o-transform: rotateX(0deg); } 52% { -o-transform: rotateX(80deg); } 54%,100% { -o-transform: rotateX(0deg); } } -@keyframes blink-r{ 0% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 2% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 4%,30% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 32% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 34%,50% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } 52% {-webkit-transform: rotateX(80deg);-moz-transform: rotateX(80deg);-ms-transform: rotateX(80deg);transform: rotateX(80deg); } 54%,100% {-webkit-transform: rotateX(0deg);-moz-transform: rotateX(0deg);-ms-transform: rotateX(0deg);transform: rotateX(0deg); } ; -} diff --git a/static/css/animate.min.css b/static/css/animate.min.css deleted file mode 100755 index 78c0a38..0000000 --- a/static/css/animate.min.css +++ /dev/null @@ -1,6 +0,0 @@ -@charset "UTF-8";/*! -Animate.css - http://daneden.me/animate -Licensed under the MIT license - http://opensource.org/licenses/MIT - -Copyright (c) 2015 Daniel Eden -*/.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}.animated.bounceIn,.animated.bounceOut,.animated.flipOutX,.animated.flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounce{100%,20%,53%,80%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(0.755,.050,.855,.060);animation-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(0.755,.050,.855,.060);animation-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{100%,20%,53%,80%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(0.755,.050,.855,.060);animation-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(0.755,.050,.855,.060);animation-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{100%,50%,from{opacity:1}25%,75%{opacity:0}}@keyframes flash{100%,50%,from{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{100%,from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{100%,from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{from{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}@keyframes wobble{from{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{100%,11.1%,from{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(0.390625deg) skewY(0.390625deg);transform:skewX(0.390625deg) skewY(0.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{100%,11.1%,from{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(0.390625deg) skewY(0.390625deg);transform:skewX(0.390625deg) skewY(0.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes bounceIn{100%,20%,40%,60%,80%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{100%,20%,40%,60%,80%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{100%,60%,75%,90%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInDown{100%,60%,75%,90%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{100%,60%,75%,90%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{100%,60%,75%,90%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{100%,60%,75%,90%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInRight{100%,60%,75%,90%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{100%,60%,75%,90%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{100%,60%,75%,90%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{from{opacity:0}100%{opacity:1}}@keyframes fadeIn{from{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{from{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{from{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{from{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{from{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{from{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{from{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{from{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{from{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{from{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{from{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{from{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{from{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{from{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{from{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{from{opacity:1}100%{opacity:0}}@keyframes fadeOut{from{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{from{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{from{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedIn{from{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{from{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{from{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{from{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{from{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{from{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{from{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{from{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{from{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{from{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInDown{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInLeft{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInRight{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInUp{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}@keyframes zoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{from{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInLeft{from{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{from{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInRight{from{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}100%{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}100%{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}100%{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}100%{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}100%{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}100%{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}100%{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}100%{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp} \ No newline at end of file diff --git a/static/css/app.css b/static/css/app.css deleted file mode 100755 index 41f4f73..0000000 --- a/static/css/app.css +++ /dev/null @@ -1,6409 +0,0 @@ -html { - background-color: #f0f3f4; -} - -body { - font-family: "exo_2regular", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - -webkit-font-smoothing: antialiased; - line-height: 1.42857143; - color: #58666e; - background-color: transparent; -} - -*:focus { - outline: 0 !important; -} -div{ - box-sizing: border-box; -} -button{ - box-sizing: border-box; -} -input{ - box-sizing: border-box; -} -.aside-col { - font-family: 'exo_2regular'; -} -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - margin: 0; -} -@media (max-width: 480px) { - .h1, - .h2, - .h3, - .h4, - .h5, - .h6 { - text-align: center; - } - .col-lg-6{ - padding: 0; - } -} - - -a { - color: #363f44; - text-decoration: none; - cursor: pointer; -} - -a:hover, -a:focus { - color: #141719; - text-decoration: none; -} - -label { - font-weight: normal; -} - -small, -.small { - font-size: 13px; -} -.m-r-xn{ - margin-left:36px; -} -.badge, -.label { - font-weight: bold; - text-shadow: 0 1px 0 rgba(0, 0, 0, 0.2); -} - -.badge.bg-light, -.label.bg-light { - text-shadow: none; -} - -.badge { - background-color: #cfdadd; -} - -.badge.up { - position: relative; - top: -10px; - padding: 3px 6px; - margin-left: -10px; -} - -.badge-sm { - padding: 2px 5px !important; - font-size: 85%; -} - -.label-sm { - padding-top: 0; - padding-bottom: 1px; -} - -.badge-white { - padding: 2px 6px; - background-color: transparent; - border: 1px solid rgba(255, 255, 255, 0.35); -} - -.badge-empty { - color: inherit; - background-color: transparent; - border: 1px solid rgba(0, 0, 0, 0.15); -} - -blockquote { - border-color: #dee5e7; - font-size: 14px; -} - -.caret-white { - border-top-color: #fff; - border-top-color: rgba(255, 255, 255, 0.65); -} - -a:hover .caret-white { - border-top-color: #fff; -} - -.thumbnail { - border-color: #dee5e7; -} - -.progress { - background-color: #edf1f2; -} - -.progress-xxs { - height: 2px; -} - -.progress-xs { - height: 6px; -} - -.progress-sm { - height: 12px; -} - -.progress-sm .progress-bar { - font-size: 10px; - line-height: 1em; -} - -.progress, -.progress-bar { - -webkit-box-shadow: none; - box-shadow: none; -} - -.progress-bar-primary { - background-color: #7266ba; -} - -.progress-bar-info { - background-color: #23b7e5; -} - -.progress-bar-success { - background-color: #27c24c; -} - -.progress-bar-warning { - background-color: #fad733; -} - -.progress-bar-danger { - background-color: #f05050; -} - -.progress-bar-black { - background-color: #1c2b36; -} - -.progress-bar-white { - background-color: #fff; -} - -.accordion-group, -.accordion-inner { - border-color: #dee5e7; - border-radius: 2px; -} - -.alert { - font-size: 13px; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2); -} - -.alert .close i { - display: block; - font-size: 12px; - font-weight: normal; -} - -.form-control { - border-color: #cfdadd; - border-radius: 2px; -} -.icon-black{ - color: #000000; -} -.form-control, -.form-control:focus { - -webkit-box-shadow: none; - box-shadow: none; -} - -.form-control:focus { - border-color: #23b7e5; -} - -.form-horizontal .control-label.text-left { - text-align: left; -} - -.form-control-spin { - position: absolute; - top: 50%; - right: 10px; - z-index: 2; - margin-top: -7px; -} - -.input-lg { - height: 45px; -} - -.input-group-addon { - background-color: #edf1f2; - border-color: #cfdadd; -} - -.list-group { - border-radius: 2px; -} - -.list-group.no-radius .list-group-item { - border-radius: 0 !important; -} - -.list-group.no-borders .list-group-item { - border: none; -} - -.list-group.no-border .list-group-item { - border-width: 1px 0; -} - -.list-group.no-bg .list-group-item { - background-color: transparent; -} - -.list-group-item { - padding-right: 15px; - border-color: #e7ecee; -} - -a.list-group-item:hover, -a.list-group-item:focus, -a.list-group-item.hover { - background-color: #f6f8f8; -} - -.list-group-item.media { - margin-top: 0; -} - -.list-group-item.active { - color: #fff; - background-color: #23b7e5 !important; - border-color: #23b7e5 !important; -} - -.list-group-item.active .text-muted { - color: #ace4f5 !important; -} - -.list-group-item.active a { - color: #fff; -} - -.list-group-item.focus { - background-color: #e4eaec !important; -} - -.list-group-item.select { - position: relative; - z-index: 1; - background-color: #dbeef9 !important; - border-color: #c5e4f5; -} - -.list-group-alt .list-group-item:nth-child(2n+2) { - background-color: rgba(0, 0, 0, 0.02) !important; -} - -.list-group-lg .list-group-item { - padding-top: 15px; - padding-bottom: 15px; -} - -.list-group-sm .list-group-item { - padding: 6px 10px; -} - -.list-group-sp .list-group-item { - margin-bottom: 5px; - border-radius: 3px; -} - -.list-group-item > .badge { - margin-right: 0; -} - -.list-group-item > .fa-chevron-right { - float: right; - margin-top: 4px; - margin-right: -5px; -} - -.list-group-item > .fa-chevron-right + .badge { - margin-right: 5px; -} - -.nav-pills.no-radius > li > a { - border-radius: 0; -} - -.nav-pills > li.active > a { - color: #fff !important; - background-color: #23b7e5; -} - -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:active { - background-color: #19a9d5; -} - -.nav > li > a:hover, -.nav > li > a:focus { - background-color: #f6f8f8; -} - -.nav.nav-lg > li > a { - padding: 20px 20px; -} - -.nav.nav-md > li > a { - padding: 15px 15px; -} - -.nav.nav-sm > li > a { - padding: 6px 12px; -} - -.nav.nav-xs > li > a { - padding: 4px 10px; -} - -.nav.nav-xxs > li > a { - padding: 1px 10px; -} - -.nav.nav-rounded > li > a { - border-radius: 20px; -} - -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #f6f8f8; -} - -.nav-tabs { - border-color: #dee5e7; -} - -.nav-tabs > li > a { - border-bottom-color: #dee5e7; - border-radius: 2px 2px 0 0; -} - -.nav-tabs > li:hover > a, -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover { - border-color: #dee5e7; -} - -.nav-tabs > li.active > a { - border-bottom-color: #fff !important; -} - -.nav-tabs-alt .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; -} - -.nav-tabs-alt .nav-tabs > li > a { - background: transparent !important; - border-color: transparent !important; - border-bottom-color: #dee5e7 !important; - border-radius: 0; -} - -.nav-tabs-alt .nav-tabs > li.active > a { - border-bottom-color: #23b7e5 !important; -} - -.tab-container { - margin-bottom: 15px; -} - -.tab-container .tab-content { - padding: 15px; - background-color: #fff; - border: 1px solid #dee5e7; - border-top-width: 0; - border-radius: 0 0 2px 2px; -} - -.pagination > li > a { - border-color: #dee5e7; -} - -.pagination > li > a:hover, -.pagination > li > a:focus { - background-color: #edf1f2; - border-color: #dee5e7; -} - -.panel { - border-radius: 2px; -} - -.panel .accordion-toggle { - display: block; - font-size: 14px; - cursor: pointer; -} - -.panel .list-group-item { - border-color: #edf1f2; -} - -.panel.no-borders { - border-width: 0; -} - -.panel.no-borders .panel-heading, -.panel.no-borders .panel-footer { - border-width: 0; -} - -.panel-heading { - border-radius: 2px 2px 0 0; -} - -.panel-default .panel-heading { - background-color: #f6f8f8; -} - -.panel-heading.no-border { - margin: -1px -1px 0 -1px; - border: none; -} -.panel-heading.no-border.index{ - margin: -1px -1px 0 -1px; - border: none; - background: #e68917; - color: #fff; - float: left; - position: absolute; - z-index: 999; - top: 20px; - left: 12px; - border-radius: 3px; -} -.panel-heading .nav { - margin: -10px -15px; -} - -.panel-heading .list-group { - background: transparent; -} - -.panel-footer { - background-color: #ffffff; - border-color: #edf1f2; - border-radius: 0 0 2px 2px; -} - -.panel-default { - border-color: #dee5e7; -} - -.panel-default > .panel-heading, -.panel-default > .panel-footer { - border-color: #edf1f2; -} - -.panel-group .panel-heading + .panel-collapse .panel-body { - border-top: 1px solid #eaedef; -} - -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 8px 15px; - border-top: 1px solid #eaeff0; -} - -.table > thead > tr > th { - padding: 8px 15px; - border-bottom: 1px solid #eaeff0; -} - -.table-bordered { - border-color: #eaeff0; -} - -.table-bordered > tbody > tr > td { - border-color: #eaeff0; -} - -.table-bordered > thead > tr > th { - border-color: #eaeff0; -} - -.table-striped > tbody > tr:nth-child(odd) > td, -.table-striped > tbody > tr:nth-child(odd) > th { - background-color: #fafbfc; -} - -.table-striped > thead > th { - background-color: #fafbfc; - border-right: 1px solid #eaeff0; -} - -.table-striped > thead > th:last-child { - border-right: none; -} - -.well, -pre { - background-color: #edf1f2; - border-color: #dee5e7; -} - -.dropdown-menu { - border: 1px solid #dee5e7; - border: 1px solid rgba(0, 0, 0, 0.1); - border-radius: 2px; - -webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); - box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); -} - -.dropdown-menu.pull-left { - left: 100%; -} - -.dropdown-menu > .panel { - margin: -5px 0; - border: none; -} - -.dropdown-menu > li > a { - padding: 5px 15px; -} - -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus, -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #141719; - background-color: #edf1f2 !important; - background-image: none; - filter: none; -} - -.dropdown-header { - padding: 5px 15px; -} - -.dropdown-submenu { - position: relative; -} - -.dropdown-submenu:hover > a, -.dropdown-submenu:focus > a { - color: #58666e; - background-color: #edf1f2 !important; -} - -.dropdown-submenu:hover > .dropdown-menu, -.dropdown-submenu:focus > .dropdown-menu { - display: block; -} - -.dropdown-submenu.pull-left { - float: none !important; -} - -.dropdown-submenu.pull-left > .dropdown-menu { - left: -100%; - margin-left: 10px; -} - -.dropdown-submenu .dropdown-menu { - top: 0; - left: 100%; - margin-top: -6px; - margin-left: -1px; -} - -.dropup .dropdown-submenu > .dropdown-menu { - top: auto; - bottom: 0; -} - -.btn-group > .btn { - margin-left: -1px; - cursor: pointer; -} - -/*cols*/ - -.col-lg-2-4 { - position: relative; - min-height: 1px; - padding-right: 15px; - padding-left: 15px; -} - -.col-0 { - clear: left; -} - -.row.no-gutter { - margin-right: 0; - margin-left: 0; -} - -.no-gutter [class*="col"] { - padding: 0; -} - -.row-sm { - margin-right: -10px; - margin-left: -10px; -} - -.row-sm > div { - padding-right: 10px; - padding-left: 10px; -} - -.modal-backdrop { - background-color: #3a3f51; -} - -.modal-backdrop.in { - opacity: 0.8; - filter: alpha(opacity=80); -} - -.modal-over { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; -} - -.modal-center { - position: absolute; - top: 50%; - left: 50%; -} - -/*layout*/ - -html, -body { - width: 100%; - height: 100%; -} - -body { - overflow-x: hidden; - overflow-y: scroll; -} - -.app { - position: relative; - width: 100%; - height: auto; - min-height: 100%; - z-index: 1; -} - -.app:before { - position: absolute; - top: 0; - bottom: 0; - z-index: -1; - display: block; - width: inherit; - background-color: #f0f3f4; - border: inherit; - content: ""; -} - -.app-header-fixed { - padding-top: 50px; -} - -.app-header-fixed .app-header { - position: fixed; - top: 0; - width: 100%; -} - -.app-header { - z-index: 1025; - border-radius: 0; -} - -.app-aside { - float: left; -} -.app-asider{ - float: right; -} - -.app-aside:before { - position: absolute; - top: 0; - bottom: 0; - z-index: -1; - width: inherit; - background-color: inherit; - border: inherit; - content: ""; -} - -.app-aside-footer { - position: absolute; - bottom: 0; - z-index: 1000; - width: 100%; - max-width: 200px; -} - -.app-aside-folded .app-aside-footer { - max-width: 60px; -} - -.app-aside-footer ~ div { - padding-bottom: 50px; -} - -.app-aside-right { - padding-bottom: 50px; -} - -.app-content { - height: 100%; - -webkit-transition: 0.4s; - -moz-transition: 0.4s; - -o-transition: 0.4s; - transition: 0.4s; -} - -.app-content:before, -.app-content:after { - display: table; - content: " "; -} - -.app-content:after { - clear: both; -} - -.app-content-full { - position: absolute; - top: 50px; - bottom: 50px; - width: auto !important; - height: auto; - padding: 0 !important; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.app-content-full.h-full { - bottom: 0; - height: auto; -} - -.app-content-body { - float: left; - width: 100%; - padding-bottom: 50px; -} - -.app-footer { - position: absolute; - right: 0; - bottom: 0; - left: 0; - z-index: 1005; -} - -.app-footer.app-footer-fixed { - position: fixed; -} - -.hbox { - display: table; - width: 100%; - height: 100%; - border-spacing: 0; - table-layout: fixed; -} - -.hbox .col { - display: table-cell; - float: none; - height: 100%; - vertical-align: top; -} - -.v-middle { - vertical-align: middle !important; -} - -.v-top { - vertical-align: top !important; -} - -.v-bottom { - vertical-align: bottom !important; -} - -.vbox { - position: relative; - display: table; - width: 100%; - height: 100%; - min-height: 240px; - border-spacing: 0; -} - -.vbox .row-row { - display: table-row; - height: 100%; -} - -.vbox .row-row .cell { - position: relative; - width: 100%; - height: 100%; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.ie .vbox .row-row .cell { - display: table-cell; -} - -.vbox .row-row .cell .cell-inner { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; -} - -.navbar { - margin: 0; - border-width: 0; - border-radius: 0; -} - -.navbar .navbar-form-sm { - margin-top: 10px; - margin-bottom: 10px; -} - -.navbar-md { - min-height: 60px; -} - -.navbar-md .navbar-btn { - margin-top: 13px; -} - -.navbar-md .navbar-form { - margin-top: 15px; -} - -.navbar-md .navbar-nav > li > a { - padding-top: 20px; - padding-bottom: 20px; -} - -.navbar-md .navbar-brand { - line-height: 60px; -} - -.navbar-header > button { - padding: 10px 17px; - font-size: 16px; - line-height: 30px; - text-decoration: none; - background-color: transparent; - border: none; -} - -.navbar-brand { - display: inline-block; - float: none; - height: auto; - padding: 0 20px; - font-size: 20px; - font-weight: 700; - line-height: 50px; - text-align: center; -} - -.navbar-brand:hover { - text-decoration: none; -} - -.navbar-brand img { - display: inline; - max-height: 31px; - margin-top: -4px; - vertical-align: middle; -} - -@media (min-width: 768px) { - .navbar-header { - width: 240px; - } - .navbar-collapse, - .app-content, - .app-footer { - } - .app-aside-right { - position: absolute; - top: 50px; - right: 0; - bottom: 0; - z-index: 1000; - } - .app-aside-right.pos-fix { - z-index: 1010; - } - .visible-folded { - display: none; - } - .app-aside-folded .hidden-folded { - display: none !important; - } - .app-aside-folded .visible-folded { - display: inherit; - } - .app-aside-folded .text-center-folded { - text-align: center; - } - .app-aside-folded .pull-none-folded { - float: none !important; - } - .app-aside-folded .w-auto-folded { - width: auto; - } - .app-aside-folded .app-aside, - .app-aside-folded .navbar-header { - width: 60px; - } - .app-aside-folded .navbar-collapse, - .app-aside-folded .app-content, - .app-aside-folded .app-footer { - margin-left: 60px; - } - .app-aside-folded .app-header .navbar-brand { - display: block; - padding: 0; - } - .app-aside-fixed .app-header .navbar-header { - position: fixed; - } - .app-aside-fixed .aside-wrap { - position: fixed; - top: 50px; - bottom: 0; - left: 0; - z-index: 1000; - width: 199px; - overflow: hidden; - } - .app-aside-fixed .aside-wrap .navi-wrap { - position: relative; - width: 217px; - height: 100%; - overflow-x: hidden; - overflow-y: scroll; - -webkit-overflow-scrolling: touch; - } - .app-aside-fixed .aside-wrap .navi-wrap::-webkit-scrollbar { - -webkit-appearance: none; - } - .app-aside-fixed .aside-wrap .navi-wrap::-webkit-scrollbar:vertical { - width: 17px; - } - .app-aside-fixed .aside-wrap .navi-wrap > * { - width: 200px; - } - .smart .app-aside-fixed .aside-wrap .navi-wrap { - width: 200px; - } - .app-aside-fixed.app-aside-folded .app-aside { - position: fixed; - top: 0; - bottom: 0; - z-index: 1010; - } - .app-aside-fixed.app-aside-folded .aside-wrap { - width: 59px; - } - .app-aside-fixed.app-aside-folded .aside-wrap .navi-wrap { - width: 77px; - } - .app-aside-fixed.app-aside-folded .aside-wrap .navi-wrap > * { - width: 60px; - } - .smart .app-aside-fixed.app-aside-folded .aside-wrap .navi-wrap { - width: 60px; - } - .bg-auto:before { - position: absolute; - top: 0; - bottom: 0; - z-index: -1; - width: inherit; - background-color: inherit; - border: inherit; - content: ""; - } - .bg-auto.b-l:before { - margin-left: -1px; - } - .bg-auto.b-r:before { - margin-right: -1px; - } - .col.show { - display: table-cell !important; - } -} - -@media (min-width: 768px) and (max-width: 991px) { - .hbox-auto-sm { - display: block; - } - .hbox-auto-sm > .col { - display: block; - width: auto; - height: auto; - } - .hbox-auto-sm > .col.show { - display: block !important; - } -} - -@media (max-width: 767px) { - .app-aside { - float: none; - } - .app-content-full { - width: 100% !important; - } - .hbox-auto-xs { - display: block; - } - .hbox-auto-xs > .col { - display: block; - width: auto; - height: auto; - } - .navbar-nav { - margin-top: 0; - margin-bottom: 0; - } - .navbar-nav > li > a { - box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1); - } - .navbar-nav > li > a .up { - top: 0; - } - .navbar-nav > li > a .avatar { - width: 30px; - margin-top: -5px; - } - .navbar-nav .open .dropdown-menu { - background-color: #fff; - } - .navbar-form { - margin-top: 0 !important; - margin-bottom: 0 !important; - box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1); - } - .navbar-form .form-group { - margin-bottom: 0; - } -} - -html { -} - -.app.container { - padding-right: 0; - padding-left: 0; -} - -@media (min-width: 768px) { - .app.container { - width: 750px; - -webkit-box-shadow: 0 0 30px rgba(0, 0, 0, 0.3); - box-shadow: 0 0 30px rgba(0, 0, 0, 0.3); - } - .app.container .app-aside { - overflow-x: hidden; - } - .app.container.app-aside-folded .app-aside { - overflow-x: visible; - } - .app.container.app-aside-fixed .aside-wrap { - left: inherit; - } - .app.container.app-aside-fixed.app-aside-folded .app-aside > ul.nav { - position: absolute; - } - .app.container .app-header, - .app.container .app-aside { - max-width: 750px; - } - .app.container .app-footer-fixed { - right: auto; - left: auto; - width: 100%; - max-width: 550px; - } - .app.container.app-aside-folded .app-footer-fixed { - max-width: 690px; - } - .app.container.app-aside-dock .app-footer-fixed { - max-width: 750px; - } -} - -@media (min-width: 992px) { - .app.container { - width: 970px; - } - .app.container .app-header, - .app.container .app-aside { - max-width: 970px; - } - .app.container .app-footer-fixed { - max-width: 770px; - } - .app.container.app-aside-folded .app-footer-fixed { - max-width: 910px; - } - .app.container.app-aside-dock .app-footer-fixed { - max-width: 970px; - } -} - -@media (min-width: 1200px) { - .app.container { - width: 1170px; - } - .app.container .app-header, - .app.container .app-aside { - max-width: 1170px; - } - .app.container .app-footer-fixed { - max-width: 970px; - } - .app.container.app-aside-folded .app-footer-fixed { - max-width: 1110px; - } - .app.container.app-aside-dock .app-footer-fixed { - max-width: 1170px; - } -} - -.nav-sub { - height: 0; - margin-left: -20px; - overflow: hidden; - opacity: 0; - -webkit-transition: all 0.2s ease-in-out 0s; - transition: all 0.2s ease-in-out 0s; -} - -.active > .nav-sub, -.app-aside-folded li:hover > .nav-sub, -.app-aside-folded li:focus > .nav-sub, -.app-aside-folded li:active > .nav-sub { - height: auto !important; - margin-left: 0; - overflow: auto; - opacity: 1; -} - -.nav-sub-header { - display: none !important; -} - -.nav-sub-header a { - padding: 15px 20px; -} - -.navi ul.nav li { - position: relative; - display: block; -} - -.navi ul.nav li li a { - padding-left: 55px; -} - -.navi ul.nav li li ul { - display: none; -} - -.navi ul.nav li li.active > ul { - display: block; -} -@media (min-width: 768px) { -.navi ul.nav li a { - position: relative; - display: block; - padding: 10px 20px; - font-weight: normal; - text-transform: none; - -webkit-transition: background-color 0.2s ease-in-out 0s; - transition: background-color 0.2s ease-in-out 0s; -} -} -@media (max-width: 480px) { - .navi ul.nav li a { - position: relative; - display: block; - color: #fff; - padding: 10px 20px; - font-weight: normal; - text-transform: none; - -webkit-transition: background-color 0.2s ease-in-out 0s; - transition: background-color 0.2s ease-in-out 0s; -} -} - -.navi ul.nav li a .badge, -.navi ul.nav li a .label { - padding: 2px 5px; - margin-top: 2px; - font-size: 11px; -} - -.navi ul.nav li a > i { - position: relative; - float: left; - width: 40px; - margin: -10px -10px; - margin-right: 5px; - overflow: hidden; - line-height: 40px; - text-align: center; -} - -.navi ul.nav li a > i:before { - position: relative; - z-index: 2; -} - -@media (min-width: 768px) { - .app-aside-folded .nav-sub-header { - display: block !important; - } - .app-aside-folded .nav-sub-header a { - padding: 15px 20px !important; - } - .app-aside-folded .navi > ul > li > a { - position: relative; - height: 50px; - padding: 0; - text-align: center; - border: none; - } - .app-aside-folded .navi > ul > li > a span { - display: none; - } - .app-aside-folded .navi > ul > li > a span.pull-right { - display: none !important; - } - .app-aside-folded .navi > ul > li > a i { - display: block; - float: none; - width: auto; - margin: 0; - font-size: 16px; - line-height: 50px; - border: none !important; - } - .app-aside-folded .navi > ul > li > a i b { - left: 0 !important; - } - .app-aside-folded .navi > ul > li > a .badge, - .app-aside-folded .navi > ul > li > a .label { - position: absolute; - top: 8px; - right: 12px; - z-index: 3; - } - .app-aside-folded .navi > ul > li > ul { - position: absolute; - top: 0 !important; - left: 100%; - z-index: 1050; - width: 200px; - height: 0 !important; - -webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); - box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); - } - .app-aside-folded .navi li li a { - padding-left: 20px !important; - } - .app-aside-folded.app-aside-fixed .app-aside > ul.nav { - position: fixed; - left: 80px; - z-index: 1010; - display: block; - width: 260px; - height: auto; - overflow: visible; - overflow-y: auto; - opacity: 1; - -webkit-overflow-scrolling: touch; - } - .app-aside-folded.app-aside-fixed .app-aside > ul.nav:before { - position: absolute; - top: 0; - left: -60px; - width: 60px; - height: 50px; - content: ""; - } - .app-aside-folded.app-aside-fixed .app-aside > ul.nav a { - padding-right: 20px !important; - padding-left: 20px !important; - } -} - -@media (max-width: 767px) { - .app { - overflow-x: hidden; - } - .app-content { - -webkit-transition: -webkit-transform 0.2s ease; - -moz-transition: -moz-transform 0.2s ease; - -o-transition: -o-transform 0.2s ease; - transition: transform 0.2s ease; - } - .off-screen { - position: absolute; - top: 50px; - bottom: 0; - z-index: 1010; - display: block !important; - width: 75%; - overflow-x: hidden; - overflow-y: auto; - visibility: visible; - -webkit-overflow-scrolling: touch; - } - .off-screen + * { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1015; - width: 100%; - padding-top: 50px; - overflow: hidden; - background-color: #f0f3f4; - -webkit-transform: translate3d(75%, 0, 0px); - transform: translate3d(75%, 0, 0px); - -webkit-transition: -webkit-transform 0.2s ease; - -moz-transition: -moz-transform 0.2s ease; - -o-transition: -o-transform 0.2s ease; - transition: transform 0.2s ease; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - } - .off-screen + * .off-screen-toggle { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1020; - display: block !important; - } - .off-screen.pull-right { - right: 0; - } - .off-screen.pull-right + * { - -webkit-transform: translate3d(-75%, 0, 0px); - transform: translate3d(-75%, 0, 0px); - } -} - -@media (min-width: 992px) { - .app-aside-dock .app-content, - .app-aside-dock .app-footer { - margin-left: 0; - } - .app-aside-dock .app-aside-footer ~ div { - padding-bottom: 0; - } - .app-aside-dock.app-aside-fixed.app-header-fixed { - padding-top: 115px; - } - .app-aside-dock.app-aside-fixed .app-aside { - position: fixed; - top: 50px; - z-index: 1000; - width: 100%; - } - .app-aside-dock .app-aside, - .app-aside-dock .aside-wrap, - .app-aside-dock .navi-wrap { - position: relative; - top: 0; - float: none; - width: 100% !important; - overflow: visible !important; - } - .app-aside-dock .navi-wrap > * { - width: auto !important; - } - .app-aside-dock .app-aside { - bottom: auto !important; - } - .app-aside-dock .app-aside.b-r { - border-bottom: 1px solid #dee5e7; - border-right-width: 0; - } - .app-aside-dock .app-aside:before { - display: none; - } - .app-aside-dock .app-aside nav > .nav { - float: left; - } - .app-aside-dock .app-aside .hidden-folded, - .app-aside-dock .app-aside .line, - .app-aside-dock .app-aside .navi-wrap > div { - display: none !important; - } - .app-aside-dock .app-aside .navi > ul > li { - position: relative; - display: inline-block; - float: left; - } - .app-aside-dock .app-aside .navi > ul > li > a { - height: auto; - padding: 10px 15px 12px 15px; - text-align: center; - } - .app-aside-dock .app-aside .navi > ul > li > a > .badge, - .app-aside-dock .app-aside .navi > ul > li > a > .label { - position: absolute; - top: 5px; - right: 8px; - padding: 1px 4px; - } - .app-aside-dock .app-aside .navi > ul > li > a > i { - display: block; - float: none; - width: 40px; - margin-top: -10px; - margin-right: auto; - margin-bottom: -7px; - margin-left: auto; - font-size: 14px; - line-height: 40px; - } - .app-aside-dock .app-aside .navi > ul > li > a > span.pull-right { - position: absolute; - bottom: 2px; - left: 50%; - display: block !important; - margin-left: -6px; - line-height: 1; - } - .app-aside-dock .app-aside .navi > ul > li > a > span.pull-right i { - width: 12px; - font-size: 12px; - line-height: 12px; - } - .app-aside-dock .app-aside .navi > ul > li > a > span.pull-right i.text { - line-height: 14px; - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); - } - .app-aside-dock .app-aside .navi > ul > li > a > span { - display: block; - font-weight: normal; - } - .app-aside-dock .app-aside .navi > ul > li .nav-sub { - position: absolute; - top: auto !important; - left: 0; - z-index: 1050; - display: none; - width: 200px; - height: auto !important; - -webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); - box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); - } - .app-aside-dock .app-aside .navi > ul > li .nav-sub-header { - display: none !important; - } - .app-aside-dock .app-aside .navi li li a { - padding-left: 15px; - } - .app-aside-dock .app-aside .navi li:hover > .nav-sub, - .app-aside-dock .app-aside .navi li:focus > .nav-sub, - .app-aside-dock .app-aside .navi li:active > .nav-sub { - display: block; - height: auto !important; - margin-left: 0; - overflow: auto; - opacity: 1; - } -} - -.arrow { - z-index: 10; - border-width: 9px; -} - -.arrow, -.arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} - -.arrow:after { - border-width: 8px; - content: ""; -} - -.arrow.top { - top: -9px; - left: 50%; - margin-left: -9px; - border-bottom-color: rgba(0, 0, 0, 0.1); - border-top-width: 0; -} - -.arrow.top:after { - top: 1px; - margin-left: -8px; - border-bottom-color: #ffffff; - border-top-width: 0; -} - -.arrow.top.arrow-primary:after { - border-bottom-color: #7266ba; -} - -.arrow.top.arrow-info:after { - border-bottom-color: #23b7e5; -} - -.arrow.top.arrow-success:after { - border-bottom-color: #27c24c; -} - -.arrow.top.arrow-danger:after { - border-bottom-color: #f05050; -} - -.arrow.top.arrow-warning:after { - border-bottom-color: #fad733; -} - -.arrow.top.arrow-light:after { - border-bottom-color: #edf1f2; -} - -.arrow.top.arrow-dark:after { - border-bottom-color: #3a3f51; -} - -.arrow.top.arrow-black:after { - border-bottom-color: #1c2b36; -} - -.arrow.right { - top: 50%; - right: -9px; - margin-top: -9px; - border-left-color: rgba(0, 0, 0, 0.1); - border-right-width: 0; -} - -.arrow.right:after { - right: 1px; - bottom: -8px; - border-left-color: #ffffff; - border-right-width: 0; -} - -.arrow.right.arrow-primary:after { - border-left-color: #7266ba; -} - -.arrow.right.arrow-info:after { - border-left-color: #23b7e5; -} - -.arrow.right.arrow-success:after { - border-left-color: #27c24c; -} - -.arrow.right.arrow-danger:after { - border-left-color: #f05050; -} - -.arrow.right.arrow-warning:after { - border-left-color: #fad733; -} - -.arrow.right.arrow-light:after { - border-left-color: #edf1f2; -} - -.arrow.right.arrow-dark:after { - border-left-color: #3a3f51; -} - -.arrow.right.arrow-black:after { - border-left-color: #1c2b36; -} - -.arrow.bottom { - bottom: -9px; - left: 50%; - margin-left: -9px; - border-top-color: rgba(0, 0, 0, 0.1); - border-bottom-width: 0; -} - -.arrow.bottom:after { - bottom: 1px; - margin-left: -8px; - border-top-color: #ffffff; - border-bottom-width: 0; -} - -.arrow.bottom.arrow-primary:after { - border-top-color: #7266ba; -} - -.arrow.bottom.arrow-info:after { - border-top-color: #23b7e5; -} - -.arrow.bottom.arrow-success:after { - border-top-color: #27c24c; -} - -.arrow.bottom.arrow-danger:after { - border-top-color: #f05050; -} - -.arrow.bottom.arrow-warning:after { - border-top-color: #fad733; -} - -.arrow.bottom.arrow-light:after { - border-top-color: #edf1f2; -} - -.arrow.bottom.arrow-dark:after { - border-top-color: #3a3f51; -} - -.arrow.bottom.arrow-black:after { - border-top-color: #1c2b36; -} - -.arrow.left { - top: 50%; - left: -9px; - margin-top: -9px; - border-right-color: rgba(0, 0, 0, 0.1); - border-left-width: 0; -} - -.arrow.left:after { - bottom: -8px; - left: 1px; - border-right-color: #ffffff; - border-left-width: 0; -} - -.arrow.left.arrow-primary:after { - border-right-color: #7266ba; -} - -.arrow.left.arrow-info:after { - border-right-color: #23b7e5; -} - -.arrow.left.arrow-success:after { - border-right-color: #27c24c; -} - -.arrow.left.arrow-danger:after { - border-right-color: #f05050; -} - -.arrow.left.arrow-warning:after { - border-right-color: #fad733; -} - -.arrow.left.arrow-light:after { - border-right-color: #edf1f2; -} - -.arrow.left.arrow-dark:after { - border-right-color: #3a3f51; -} - -.arrow.left.arrow-black:after { - border-right-color: #1c2b36; -} - -.arrow.pull-left { - left: 19px; -} - -.arrow.pull-right { - right: 19px; - left: auto; -} - -.arrow.pull-up { - top: 19px; -} - -.arrow.pull-down { - top: auto; - bottom: 19px; -} - -.btn { - font-weight: 500; - border-radius: 2px; - outline: 0!important; -} - -.btn-link { - color: #58666e; -} - -.btn-link.active { - box-shadow: none; - webkit-box-shadow: none; -} - -.btn-default { - color: #58666e !important; - background-color: #fcfdfd; - background-color: #fff; - border-color: #dee5e7; - border-bottom-color: #d8e1e3; - -webkit-box-shadow: 0 1px 1px rgba(90, 90, 90, 0.1); - box-shadow: 0 1px 1px rgba(90, 90, 90, 0.1); -} - -.btn-default:hover, -.btn-default:focus, -.btn-default:active, -.btn-default.active, -.open .dropdown-toggle.btn-default { - color: #58666e !important; - background-color: #edf1f2; - border-color: #c7d3d6; -} - -.btn-default:active, -.btn-default.active, -.open .dropdown-toggle.btn-default { - background-image: none; -} - -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #dfdfdf; - border-color: #dee5e7; -} - -.btn-default.btn-bg { - border-color: rgba(0, 0, 0, 0.1); - background-clip: padding-box; -} - -.btn-primary { - color: #ffffff !important; - background-color: #7266ba; - border-color: #7266ba; -} - -.btn-primary:hover, -.btn-primary:focus, -.btn-primary:active, -.btn-primary.active, -.open .dropdown-toggle.btn-primary { - color: #ffffff !important; - background-color: #6254b2; - border-color: #5a4daa; -} - -.btn-primary:active, -.btn-primary.active, -.open .dropdown-toggle.btn-primary { - background-image: none; -} - -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #7266ba; - border-color: #7266ba; -} - -.btn-success { - color: #ffffff !important; - background-color: #27c24c; - border-color: #27c24c; -} - -.btn-success:hover, -.btn-success:focus, -.btn-success:active, -.btn-success.active, -.open .dropdown-toggle.btn-success { - color: #ffffff !important; - background-color: #23ad44; - border-color: #20a03f; -} - -.btn-success:active, -.btn-success.active, -.open .dropdown-toggle.btn-success { - background-image: none; -} - -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #27c24c; - border-color: #27c24c; -} - -.btn-info { - color: #ffffff !important; - background-color: #23b7e5; - border-color: #23b7e5; -} - -.btn-info:hover, -.btn-info:focus, -.btn-info:active, -.btn-info.active, -.open .dropdown-toggle.btn-info { - color: #ffffff !important; - background-color: #19a9d5; - border-color: #189ec8; -} - -.btn-info:active, -.btn-info.active, -.open .dropdown-toggle.btn-info { - background-image: none; -} - -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #23b7e5; - border-color: #23b7e5; -} - -.btn-warning { - color: #333 !important; - background-color: #fad733; - border-color: #fad733; -} - -.btn-warning:hover, -.btn-warning:focus, -.btn-warning:active, -.btn-warning.active, -.open .dropdown-toggle.btn-warning { - color: #000 !important; - background-color: #f9d21a; - border-color: #f9cf0b; -} - -.btn-warning:active, -.btn-warning.active, -.open .dropdown-toggle.btn-warning { - background-image: none; -} - -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #fad733; - border-color: #fad733; -} - -.btn-danger { - color: #ffffff !important; - background-color: #f05050; - border-color: #f05050; -} - -.btn-danger:hover, -.btn-danger:focus, -.btn-danger:active, -.btn-danger.active, -.open .dropdown-toggle.btn-danger { - color: #ffffff !important; - background-color: #ee3939; - border-color: #ed2a2a; -} - -.btn-danger:active, -.btn-danger.active, -.open .dropdown-toggle.btn-danger { - background-image: none; -} - -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #f05050; - border-color: #f05050; -} - -.btn-dark { - color: #ffffff !important; - background-color: #3a3f51; - border-color: #3a3f51; -} - -.btn-dark:hover, -.btn-dark:focus, -.btn-dark:active, -.btn-dark.active, -.open .dropdown-toggle.btn-dark { - color: #ffffff !important; - background-color: #2f3342; - border-color: #292d39; -} - -.btn-dark:active, -.btn-dark.active, -.open .dropdown-toggle.btn-dark { - background-image: none; -} - -.btn-dark.disabled, -.btn-dark[disabled], -fieldset[disabled] .btn-dark, -.btn-dark.disabled:hover, -.btn-dark[disabled]:hover, -fieldset[disabled] .btn-dark:hover, -.btn-dark.disabled:focus, -.btn-dark[disabled]:focus, -fieldset[disabled] .btn-dark:focus, -.btn-dark.disabled:active, -.btn-dark[disabled]:active, -fieldset[disabled] .btn-dark:active, -.btn-dark.disabled.active, -.btn-dark[disabled].active, -fieldset[disabled] .btn-dark.active { - background-color: #3a3f51; - border-color: #3a3f51; -} - -.btn-black { - color: #ffffff !important; - background-color: #1c2b36; - border-color: #1c2b36; -} - -.btn-black:hover, -.btn-black:focus, -.btn-black:active, -.btn-black.active, -.open .dropdown-toggle.btn-black { - color: #ffffff !important; - background-color: #000; - border-color: #0e161b; -} - -.btn-black:active, -.btn-black.active, -.open .dropdown-toggle.btn-black { - background-image: none; -} - -.btn-black.disabled, -.btn-black[disabled], -fieldset[disabled] .btn-black, -.btn-black.disabled:hover, -.btn-black[disabled]:hover, -fieldset[disabled] .btn-black:hover, -.btn-black.disabled:focus, -.btn-black[disabled]:focus, -fieldset[disabled] .btn-black:focus, -.btn-black.disabled:active, -.btn-black[disabled]:active, -fieldset[disabled] .btn-black:active, -.btn-black.disabled.active, -.btn-black[disabled].active, -fieldset[disabled] .btn-black.active { - background-color: #1c2b36; - border-color: #1c2b36; -} - -.btn-icon { - width: 34px; - height: 34px; - padding: 0 !important; - text-align: center; -} - -.btn-icon i { - position: relative; - top: -1px; - line-height: 34px; -} - -.btn-icon.btn-sm { - width: 30px; - height: 30px; -} - -.btn-icon.btn-sm i { - line-height: 30px; -} - -.btn-icon.btn-lg { - width: 45px; - height: 45px; -} - -.btn-icon.btn-lg i { - line-height: 45px; -} - -.btn-rounded { - padding-right: 15px; - padding-left: 15px; - border-radius: 50px; -} - -.btn-rounded.btn-lg { - padding-right: 25px; - padding-left: 25px; -} - -.btn > i.pull-left, -.btn > i.pull-right { - line-height: 1.42857143; -} - -.btn-block { - padding-right: 12px; - padding-left: 12px; -} - -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-right-radius: 2px; -} - -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-bottom-left-radius: 2px; -} - -.btn-addon i { - position: relative; - float: left; - width: 34px; - height: 34px; - margin: -7px -12px; - margin-right: 12px; - line-height: 34px; - text-align: center; - background-color: rgba(0, 0, 0, 0.1); - border-radius: 2px 0 0 2px; -} - -.btn-addon i.pull-right { - margin-right: -12px; - margin-left: 12px; - border-radius: 0 2px 2px 0; -} - -.btn-addon.btn-sm i { - width: 30px; - height: 30px; - margin: -6px -10px; - margin-right: 10px; - line-height: 30px; -} - -.btn-addon.btn-sm i.pull-right { - margin-right: -10px; - margin-left: 10px; -} - -.btn-addon.btn-lg i { - width: 45px; - height: 45px; - margin: -11px -16px; - margin-right: 16px; - line-height: 45px; -} - -.btn-addon.btn-lg i.pull-right { - margin-right: -16px; - margin-left: 16px; -} - -.btn-addon.btn-default i { - background-color: transparent; - border-right: 1px solid #dee5e7; -} - -.btn-groups .btn { - margin-bottom: 5px; -} - -.list-icon i { - display: inline-block; - width: 40px; - margin: 0; - font-size: 14px; - text-align: center; - vertical-align: middle; - -webkit-transition: font-size 0.2s; - transition: font-size 0.2s; -} - -.list-icon div { - line-height: 40px; - white-space: nowrap; -} - -.list-icon div:hover i { - font-size: 26px; -} - -.settings { - position: fixed; - top: 120px; - right: -240px; - z-index: 1050; - width: 240px; - -webkit-transition: right 0.2s; - transition: right 0.2s; -} - -.settings.active { - right: -1px; -} - -.settings > .btn { - position: absolute; - top: -1px; - left: -42px; - padding: 10px 15px; - background: #f6f8f8 !important; - border-color: #dee5e7; - border-right-width: 0; -} - -.settings .i-checks span b { - display: inline-block; - float: left; - width: 50%; - height: 20px; -} - -.settings .i-checks span b.header { - height: 10px; -} - -.streamline { - position: relative; - border-color: #dee5e7; -} - -.streamline .sl-item:after, -.streamline:after { - position: absolute; - bottom: 0; - left: 0; - width: 9px; - height: 9px; - margin-left: -5px; - background-color: #fff; - border-color: inherit; - border-style: solid; - border-width: 1px; - border-radius: 10px; - content: ''; -} - -.sl-item { - position: relative; - padding-bottom: 1px; - border-color: #dee5e7; -} - -.sl-item:before, -.sl-item:after { - display: table; - content: " "; -} - -.sl-item:after { - clear: both; -} - -.sl-item:after { - top: 6px; - bottom: auto; -} - -.sl-item.b-l { - margin-left: -1px; -} - -.timeline { - padding: 0; - margin: 0; -} - -.tl-item { - display: block; - position: relative; - right: 6px; -} - -.tl-item:before, -.tl-item:after { - display: table; - content: " "; -} - -.tl-item:after { - clear: both; -} - -.visible-left { - display: none; -} -@media only screen and (max-device-width: 480px){ - .tl-wrap { - display: block; - padding: 15px 0px 15px 10px; - border: 0px solid #DEE5E7; - border-left-width: 4px; - margin: 0; -} -} -@media only screen and (min-device-width: 480px){ - .tl-wrap { - display: block; - padding: 15px 0px 15px 20px; - border: 0px solid #DEE5E7; - border-left-width: 4px; - margin-left: 6em; -} -} - - -.tl-wrap:before, -.tl-wrap:after { - display: table; - content: " "; -} - -.tl-wrap:after { - clear: both; -} - -.tl-wrap:before { - position: relative; - top: 15px; - float: left; - width: 10px; - height: 10px; - margin-left: -27px; - background: #edf1f2; - border-color: inherit; - border-style: solid; - border-width: 3px; - border-radius: 50%; - content: ""; - box-shadow: 0 0 0 4px #f0f3f4; -} - -.tl-wrap:hover:before { - background: transparent; - border-color: #fff; -} - -.tl-date { - position: relative; - top: 8px; - display: block; - float: left; - text-align: right; - margin-left: -11.3em; - width: 9em; -} - -.tl-content { - position: relative; - display: inline-block; - padding-top: 10px; - padding-bottom: 10px; -} - -.tl-content.block { - display: block; - width: 100%; -} - -.tl-content.panel { - margin-bottom: 0; - padding:5px !important; -} -@media only screen and (max-device-width: 480px){ - .tl-header { - display: block; - width: 100%; - margin-left: 0px; - text-align: center; -} -} -@media only screen and (min-device-width: 480px){ - .tl-header { - display: block; - width: 12em; - margin-left: 0px; - text-align: center; -} -} - - -.timeline-center .tl-item { - margin-left: 50%; -} - -.timeline-center .tl-item .tl-wrap { - margin-left: -2px; -} - -.timeline-center .tl-header { - width: auto; - margin: 0; -} - -.timeline-center .tl-left { - margin-right: 50%; - margin-left: 0; -} - -.timeline-center .tl-left .hidden-left { - display: none !important; -} - -.timeline-center .tl-left .visible-left { - display: inherit; -} - -.timeline-center .tl-left .tl-wrap { - float: right; - padding-right: 20px; - padding-left: 0; - margin-right: -2px; - border-right-width: 4px; - border-left-width: 0; -} - -.timeline-center .tl-left .tl-wrap:before { - float: right; - margin-right: -27px; - margin-left: 0; -} - -.timeline-center .tl-left .tl-date { - float: right; - margin-right: -8.5em; - margin-left: 0; - text-align: left; -} - -.i-switch { - position: relative; - display: inline-block; - width: 35px; - height: 20px; - margin: 0; - cursor: pointer; - background-color: #27c24c; - border-radius: 30px; -} - -.i-switch input { - position: absolute; - opacity: 0; - filter: alpha(opacity=0); -} - -.i-switch input:checked + i:before { - top: 50%; - right: 5px; - bottom: 50%; - left: 50%; - border-width: 0; - border-radius: 5px; -} - -.i-switch input:checked + i:after { - margin-left: 16px; -} - -.i-switch i:before { - position: absolute; - top: -1px; - right: -1px; - bottom: -1px; - left: -1px; - background-color: #fff; - border: 1px solid #f0f0f0; - border-radius: 30px; - content: ""; - -webkit-transition: all 0.2s; - transition: all 0.2s; -} - -.i-switch i:after { - position: absolute; - top: 1px; - bottom: 1px; - width: 18px; - background-color: #fff; - border-radius: 50%; - content: ""; - -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.25); - box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.25); - -webkit-transition: margin-left 0.3s; - transition: margin-left 0.3s; -} - -.i-switch-md { - width: 40px; - height: 24px; -} - -.i-switch-md input:checked + i:after { - margin-left: 17px; -} - -.i-switch-md i:after { - width: 22px; -} - -.i-switch-lg { - width: 50px; - height: 30px; -} - -.i-switch-lg input:checked + i:after { - margin-left: 21px; -} - -.i-switch-lg i:after { - width: 28px; -} - -.i-checks { - padding-left: 20px; - cursor: pointer; -} - -.i-checks input { - position: absolute; - margin-left: -20px; - opacity: 0; -} - -.i-checks input:checked + i { - border-color: #23b7e5; -} - -.i-checks input:checked + i:before { - top: 4px; - left: 4px; - width: 10px; - height: 10px; - background-color: #23b7e5; -} - -.i-checks input:checked + span .active { - display: inherit; -} - -.i-checks input[type="radio"] + i, -.i-checks input[type="radio"] + i:before { - border-radius: 50%; -} - -.i-checks input[disabled] + i, -fieldset[disabled] .i-checks input + i { - border-color: #dee5e7; -} - -.i-checks input[disabled] + i:before, -fieldset[disabled] .i-checks input + i:before { - background-color: #dee5e7; -} - -.i-checks > i { - position: relative; - display: inline-block; - width: 20px; - height: 20px; - margin-top: -2px; - margin-right: 4px; - margin-left: -20px; - line-height: 1; - vertical-align: middle; - background-color: #fff; - border: 1px solid #cfdadd; -} - -.i-checks > i:before { - position: absolute; - top: 50%; - left: 50%; - width: 0; - height: 0; - background-color: transparent; - content: ""; - -webkit-transition: all 0.2s; - transition: all 0.2s; -} - -.i-checks > span { - margin-left: -20px; -} - -.i-checks > span .active { - display: none; -} - -.i-checks-sm input:checked + i:before { - top: 3px; - left: 3px; - width: 8px; - height: 8px; -} - -.i-checks-sm > i { - width: 16px; - height: 16px; - margin-right: 6px; - margin-left: -18px; -} - -.i-checks-lg input:checked + i:before { - top: 8px; - left: 8px; - width: 12px; - height: 12px; -} - -.i-checks-lg > i { - width: 30px; - height: 30px; -} - -.datepicker { - margin: 0 5px; -} - -.datepicker .btn-default { - border-width: 0; - box-shadow: none; -} - -.datepicker .btn[disabled] { - opacity: 0.4; -} - -.datepicker .btn-info .text-info { - color: #fff !important; -} - -/*Charts*/ - -.jqstooltip { - padding: 5px 10px !important; - background-color: rgba(0, 0, 0, 0.8) !important; - border: solid 1px #000 !important; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -.easyPieChart { - position: relative; - text-align: center; -} - -.easyPieChart > div { - position: relative; - z-index: 1; -} - -.easyPieChart > div .text { - position: absolute; - top: 60%; - width: 100%; - line-height: 1; -} - -.easyPieChart > div img { - margin-top: -4px; -} - -.easyPieChart canvas { - position: absolute; - top: 0; - left: 0; - z-index: 0; -} - -#flotTip { - z-index: 100; - padding: 4px 10px; - font-size: 12px; - color: #fff; - background-color: rgba(0, 0, 0, 0.8); - border: solid 1px #000 !important; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -.legendColorBox > div { - margin: 5px; - border: none !important; -} - -.legendColorBox > div > div { - border-radius: 10px; -} - -.sortable-placeholder { - min-height: 50px; - margin-bottom: 5px; - list-style: none; - border: 1px dashed #CCC; -} - -.panel .dataTables_wrapper { - padding-top: 10px; -} - -.panel .dataTables_wrapper > .row { - margin: 0; -} - -.panel .dataTables_wrapper > .row > .col-sm-12 { - padding: 0; -} - -.st-sort-ascent:before { - content: '\25B2'; -} - -.st-sort-descent:before { - content: '\25BC'; -} - -.st-selected td { - background: #f0f9ec !important; -} - -.chosen-choices, -.chosen-single, -.bootstrap-tagsinput { - border-color: #cfdadd !important; - border-radius: 2px !important; -} - -.bootstrap-tagsinput { - padding: 5px 12px !important; -} - -.item { - position: relative; -} - -.item .top { - position: absolute; - top: 0; - left: 0; -} - -.item .bottom { - position: absolute; - bottom: 0; - left: 0; -} - -.item .center { - position: absolute; - top: 50%; -} - -.item .trueCenter { - position: absolute; - top: 36%; -} - -.item-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - display: none; -} - -.item-overlay.active, -.item:hover .item-overlay { - display: block; -} - -.form-validation .form-control.ng-dirty.ng-invalid { - border-color: #f05050; -} - -.form-validation .form-control.ng-dirty.ng-valid, -.form-validation .form-control.ng-dirty.ng-valid:focus { - border-color: #27c24c; -} - -.form-validation .i-checks .ng-invalid.ng-dirty + i { - border-color: #f05050; -} - -.ng-animate .bg-auto:before { - display: none; -} - -[ui-view].ng-leave { - display: none; -} - -[ui-view].ng-leave.smooth { - display: block; -} - -.smooth.ng-animate { - position: absolute; - width: 100%; - height: 100%; - overflow: hidden; -} - -.fade-in-right-big.ng-enter { - -webkit-animation: fadeInRightBig 0.5s; - animation: fadeInRightBig 0.5s; -} - -.fade-in-right-big.ng-leave { - -webkit-animation: fadeOutLeftBig 0.5s; - animation: fadeOutLeftBig 0.5s; -} - -.fade-in-left-big.ng-enter { - -webkit-animation: fadeInLeftBig 0.5s; - animation: fadeInLeftBig 0.5s; -} - -.fade-in-left-big.ng-leave { - -webkit-animation: fadeOutRightBig 0.5s; - animation: fadeOutRightBig 0.5s; -} - -.fade-in-up-big.ng-enter { - -webkit-animation: fadeInUpBig 0.5s; - animation: fadeInUpBig 0.5s; -} - -.fade-in-up-big.ng-leave { - -webkit-animation: fadeOutUpBig 0.5s; - animation: fadeOutUpBig 0.5s; -} - -.fade-in-down-big.ng-enter { - -webkit-animation: fadeInDownBig 0.5s; - animation: fadeInDownBig 0.5s; -} - -.fade-in-down-big.ng-leave { - -webkit-animation: fadeOutDownBig 0.5s; - animation: fadeOutDownBig 0.5s; -} - -.fade-in.ng-enter { - -webkit-animation: fadeIn 0.5s; - animation: fadeIn 0.5s; -} - -.fade-in.ng-leave { - -webkit-animation: fadeOut 0.5s; - animation: fadeOut 0.5s; -} - -.fade-in-right.ng-enter { - -webkit-animation: fadeInRight 0.5s; - animation: fadeInRight 0.5s; -} - -.fade-in-right.ng-leave { - -webkit-animation: fadeOutLeft 0.5s; - animation: fadeOutLeft 0.5s; -} - -.fade-in-left.ng-enter { - -webkit-animation: fadeInLeft 0.5s; - animation: fadeInLeft 0.5s; -} - -.fade-in-left.ng-leave { - -webkit-animation: fadeOutRight 0.5s; - animation: fadeOutRight 0.5s; -} - -.fade-in-up.ng-enter { - -webkit-animation: fadeInUp 0.5s; - animation: fadeInUp 0.5s; -} - -.fade-in-up.ng-leave { - -webkit-animation: fadeOutUp 0.5s; - animation: fadeOutUp 0.5s; -} - -.fade-in-down.ng-enter { - -webkit-animation: fadeInDown 0.5s; - animation: fadeInDown 0.5s; -} - -.fade-in-down.ng-leave { - -webkit-animation: fadeOutDown 0.5s; - animation: fadeOutDown 0.5s; -} - -.bg-gd { - background-image: -webkit-gradient(linear, left 0, left 100%, from(rgba(40, 50, 60, 0)), to(rgba(40, 50, 60, 0.075))); - background-image: -webkit-linear-gradient(top, rgba(40, 50, 60, 0), 0, rgba(40, 50, 60, 0.075), 100%); - background-image: -moz-linear-gradient(top, rgba(40, 50, 60, 0) 0, rgba(40, 50, 60, 0.075) 100%); - background-image: linear-gradient(to bottom, rgba(40, 50, 60, 0) 0, rgba(40, 50, 60, 0.075) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0028323c', endColorstr='#1328323c', GradientType=0); - filter: none; -} - -.bg-gd-dk { - background-image: -webkit-gradient(linear, left 10%, left 100%, from(rgba(40, 50, 60, 0)), to(rgba(40, 50, 60, 0.5))); - background-image: -webkit-linear-gradient(top, rgba(40, 50, 60, 0), 10%, rgba(40, 50, 60, 0.5), 100%); - background-image: -moz-linear-gradient(top, rgba(40, 50, 60, 0) 10%, rgba(40, 50, 60, 0.5) 100%); - background-image: linear-gradient(to bottom, rgba(40, 50, 60, 0) 10%, rgba(40, 50, 60, 0.5) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0028323c', endColorstr='#8028323c', GradientType=0); - filter: none; -} - -.bg-light { - color: #58666e; - background-color: #edf1f2; -} - -.bg-light.lt, -.bg-light .lt { - background-color: #f3f5f6; -} - -.bg-light.lter, -.bg-light .lter { - background-color: #f6f8f8; -} - -.bg-light.dk, -.bg-light .dk { - background-color: #e4eaec; -} - -.bg-light.dker, -.bg-light .dker { - background-color: #dde6e9; -} - -.bg-light.bg, -.bg-light .bg { - background-color: #edf1f2; -} - -.bg-dark { - color: #a6a8b1; - background-color: #666; -} - -.bg-dark.lt, -.bg-dark .lt { - background-color: #474c5e; -} - -.bg-dark.lter, -.bg-dark .lter { - background-color: #54596a; -} - -.bg-dark.dk, -.bg-dark .dk { - background-color: #2e3344; -} - -.bg-dark.dker, -.bg-dark .dker { - background-color: #232735; -} - -.bg-dark.bg, -.bg-dark .bg { - background-color: #3a3f51; -} - -.bg-dark a { - color: #c1c3c9; -} - -.bg-dark a:hover { - color: #ffffff; -} - -.bg-dark a.list-group-item:hover, -.bg-dark a.list-group-item:focus { - background-color: inherit; -} - -.bg-dark .nav > li:hover > a, -.bg-dark .nav > li:focus > a, -.bg-dark .nav > li.active > a { - color: #ffffff; - background-color: #00bcff; -} - -.bg-dark .nav > li > a { - color: #b4b6bd; -} - -.bg-dark .nav > li > a:hover, -.bg-dark .nav > li > a:focus { - background-color: #ebebeb; -} - -.bg-dark .nav .open > a { - background-color: #2e3344; -} - -.bg-dark .caret { - border-top-color: #a6a8b1; - border-bottom-color: #a6a8b1; -} - -.bg-dark.navbar .nav > li.active > a { - color: #ffffff; - background-color: #2e3344; -} - -.bg-dark .open > a, -.bg-dark .open > a:hover, -.bg-dark .open > a:focus { - color: #ffffff; -} - -.bg-dark .text-muted { - color: #8b8e99 !important; -} - -.bg-dark .text-lt { - color: #eaebed !important; -} - -.bg-dark.auto .list-group-item, -.bg-dark .auto .list-group-item { - background-color: transparent; - border-color: #2f3342 !important; -} - -.bg-dark.auto .list-group-item:hover, -.bg-dark .auto .list-group-item:hover, -.bg-dark.auto .list-group-item:focus, -.bg-dark .auto .list-group-item:focus, -.bg-dark.auto .list-group-item:active, -.bg-dark .auto .list-group-item:active, -.bg-dark.auto .list-group-item.active, -.bg-dark .auto .list-group-item.active { - background-color: #2e3344 !important; -} - -.bg-black { - color: #7793a7; - background-color: #1c2b36; -} - -.bg-black.lt, -.bg-black .lt { - background-color: #263845; -} - -.bg-black.lter, -.bg-black .lter { - background-color: #314554; -} - -.bg-black.dk, -.bg-black .dk { - background-color: #131e26; -} - -.bg-black.dker, -.bg-black .dker { - background-color: #0a1015; -} - -.bg-black.bg, -.bg-black .bg { - background-color: #1c2b36; -} - -.bg-black a { - color: #96abbb; -} - -.bg-black a:hover { - color: #ffffff; -} - -.bg-black a.list-group-item:hover, -.bg-black a.list-group-item:focus { - background-color: inherit; -} - -.bg-black .nav > li:hover > a, -.bg-black .nav > li:focus > a, -.bg-black .nav > li.active > a { - color: #ffffff; - background-color: #131e26; -} - -.bg-black .nav > li > a { - color: #869fb1; -} - -.bg-black .nav > li > a:hover, -.bg-black .nav > li > a:focus { - background-color: #16232d; -} - -.bg-black .nav .open > a { - background-color: #131e26; -} - -.bg-black .caret { - border-top-color: #7793a7; - border-bottom-color: #7793a7; -} - -.bg-black.navbar .nav > li.active > a { - color: #ffffff; - background-color: #131e26; -} - -.bg-black .open > a, -.bg-black .open > a:hover, -.bg-black .open > a:focus { - color: #ffffff; -} - -.bg-black .text-muted { - color: #5c798f !important; -} - -.bg-black .text-lt { - color: #c4d0d9 !important; -} - -.bg-black.auto .list-group-item, -.bg-black .auto .list-group-item { - background-color: transparent; - border-color: #131e25 !important; -} - -.bg-black.auto .list-group-item:hover, -.bg-black .auto .list-group-item:hover, -.bg-black.auto .list-group-item:focus, -.bg-black .auto .list-group-item:focus, -.bg-black.auto .list-group-item:active, -.bg-black .auto .list-group-item:active, -.bg-black.auto .list-group-item.active, -.bg-black .auto .list-group-item.active { - background-color: #131e26 !important; -} - -.bg-primary { - color: #f4f3f9; - background-color: #7266ba; -} - -.bg-primary.lt, -.bg-primary .lt { - background-color: #847abf; -} - -.bg-primary.lter, -.bg-primary .lter { - background-color: #958dc6; -} - -.bg-primary.dk, -.bg-primary .dk { - background-color: #6051b5; -} - -.bg-primary.dker, -.bg-primary .dker { - background-color: #5244a9; -} - -.bg-primary.bg, -.bg-primary .bg { - background-color: #7266ba; -} - -.bg-primary a { - color: #ffffff; -} - -.bg-primary a:hover { - color: #ffffff; -} - -.bg-primary a.list-group-item:hover, -.bg-primary a.list-group-item:focus { - background-color: inherit; -} - -.bg-primary .nav > li:hover > a, -.bg-primary .nav > li:focus > a, -.bg-primary .nav > li.active > a { - color: #ffffff; - background-color: #6051b5; -} - -.bg-primary .nav > li > a { - color: #f2f2f2; -} - -.bg-primary .nav > li > a:hover, -.bg-primary .nav > li > a:focus { - background-color: #6658b8; -} - -.bg-primary .nav .open > a { - background-color: #6051b5; -} - -.bg-primary .caret { - border-top-color: #f4f3f9; - border-bottom-color: #f4f3f9; -} - -.bg-primary.navbar .nav > li.active > a { - color: #ffffff; - background-color: #6051b5; -} - -.bg-primary .open > a, -.bg-primary .open > a:hover, -.bg-primary .open > a:focus { - color: #ffffff; -} - -.bg-primary .text-muted { - color: #d6d3e6 !important; -} - -.bg-primary .text-lt { - color: #ffffff !important; -} - -.bg-primary.auto .list-group-item, -.bg-primary .auto .list-group-item { - background-color: transparent; - border-color: #6254b2 !important; -} - -.bg-primary.auto .list-group-item:hover, -.bg-primary .auto .list-group-item:hover, -.bg-primary.auto .list-group-item:focus, -.bg-primary .auto .list-group-item:focus, -.bg-primary.auto .list-group-item:active, -.bg-primary .auto .list-group-item:active, -.bg-primary.auto .list-group-item.active, -.bg-primary .auto .list-group-item.active { - background-color: #6051b5 !important; -} - -.bg-success { - color: #c6efd0; - background-color: #27c24c; -} - -.bg-success.lt, -.bg-success .lt { - background-color: #31d257; -} - -.bg-success.lter, -.bg-success .lter { - background-color: #48d46a; -} - -.bg-success.dk, -.bg-success .dk { - background-color: #20af42; -} - -.bg-success.dker, -.bg-success .dker { - background-color: #1a9c39; -} - -.bg-success.bg, -.bg-success .bg { - background-color: #27c24c; -} - -.bg-success a { - color: #eefaf1; -} - -.bg-success a:hover { - color: #ffffff; -} - -.bg-success a.list-group-item:hover, -.bg-success a.list-group-item:focus { - background-color: inherit; -} - -.bg-success .nav > li:hover > a, -.bg-success .nav > li:focus > a, -.bg-success .nav > li.active > a { - color: #ffffff; - background-color: #20af42; -} - -.bg-success .nav > li > a { - color: #daf5e0; -} - -.bg-success .nav > li > a:hover, -.bg-success .nav > li > a:focus { - background-color: #22b846; -} - -.bg-success .nav .open > a { - background-color: #20af42; -} - -.bg-success .caret { - border-top-color: #c6efd0; - border-bottom-color: #c6efd0; -} - -.bg-success.navbar .nav > li.active > a { - color: #ffffff; - background-color: #20af42; -} - -.bg-success .open > a, -.bg-success .open > a:hover, -.bg-success .open > a:focus { - color: #ffffff; -} - -.bg-success .text-muted { - color: #9ee4af !important; -} - -.bg-success .text-lt { - color: #ffffff !important; -} - -.bg-success.auto .list-group-item, -.bg-success .auto .list-group-item { - background-color: transparent; - border-color: #23ad44 !important; -} - -.bg-success.auto .list-group-item:hover, -.bg-success .auto .list-group-item:hover, -.bg-success.auto .list-group-item:focus, -.bg-success .auto .list-group-item:focus, -.bg-success.auto .list-group-item:active, -.bg-success .auto .list-group-item:active, -.bg-success.auto .list-group-item.active, -.bg-success .auto .list-group-item.active { - background-color: #20af42 !important; -} - -.bg-info { - color: #dcf2f8; - background-color: #23b7e5; -} - -.bg-info.lt, -.bg-info .lt { - background-color: #3dbde5; -} - -.bg-info.lter, -.bg-info .lter { - background-color: #55c3e6; -} - -.bg-info.dk, -.bg-info .dk { - background-color: #fdfdfd; -} - -.bg-info.dker, -.bg-info .dker { - background-color: #ffcd00; -} - -.bg-info.bg, -.bg-info .bg { - background-color: #23b7e5; -} - -.bg-info a { - color: #000; -} - -.bg-info a:hover { - color: #ffffff; -} - -.bg-info a.list-group-item:hover, -.bg-info a.list-group-item:focus { - background-color: inherit; -} - -.bg-info .nav > li:hover > a, -.bg-info .nav > li:focus > a, -.bg-info .nav > li.active > a { - color: #ffffff; - background-color: #000; -} - -.bg-info .nav > li > a { - color: #000; -} - -.bg-info .nav > li > a:hover, -.bg-info .nav > li > a:focus { - background-color: #000; -} - -.bg-info .nav .open > a { - background-color: #000; -} - -.bg-info .nav .open .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} - -.bg-info .caret { - border-top-color: #000; - border-bottom-color: #000; -} - -.bg-info .nav > li > a:hover .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} - -.bg-info.navbar .nav > li.active > a { - color: #ffffff; - background-color: #16aad8; -} - -.bg-info .open > a, -.bg-info .open > a:hover, -.bg-info .open > a:focus { - color: #ffffff; -} - -.bg-info .text-muted { - color: #b0e1f1 !important; -} - -.bg-info .text-lt { - color: #666 !important; -} - -.bg-info.auto .list-group-item, -.bg-info .auto .list-group-item { - background-color: transparent; - border-color: #19a9d5 !important; -} - -.bg-info.auto .list-group-item:hover, -.bg-info .auto .list-group-item:hover, -.bg-info.auto .list-group-item:focus, -.bg-info .auto .list-group-item:focus, -.bg-info.auto .list-group-item:active, -.bg-info .auto .list-group-item:active, -.bg-info.auto .list-group-item.active, -.bg-info .auto .list-group-item.active { - background-color: #16aad8 !important; -} - -.bg-warning { - color: #fffefa; - background-color: #fad733; -} - -.bg-warning.lt, -.bg-warning .lt { - background-color: #f8da4e; -} - -.bg-warning.lter, -.bg-warning .lter { - background-color: #f7de69; -} - -.bg-warning.dk, -.bg-warning .dk { - background-color: #fcd417; -} - -.bg-warning.dker, -.bg-warning .dker { - background-color: #F0AD4E; -} - -.bg-warning.bg, -.bg-warning .bg { - background-color: #fad733; -} - -.bg-warning a { - color: #ffffff; -} - -.bg-warning a:hover { - color: #ffffff; -} - -.bg-warning a.list-group-item:hover, -.bg-warning a.list-group-item:focus { - background-color: inherit; -} - -.bg-warning .nav > li:hover > a, -.bg-warning .nav > li:focus > a, -.bg-warning .nav > li.active > a { - color: #ffffff; - background-color: #fcd417; -} - -.bg-warning .nav > li > a { - color: #f2f2f2; -} - -.bg-warning .nav > li > a:hover, -.bg-warning .nav > li > a:focus { - background-color: #fcd621; -} - -.bg-warning .nav .open > a { - background-color: #fcd417; -} - -.bg-warning .caret { - border-top-color: #fffefa; - border-bottom-color: #fffefa; -} - -.bg-warning.navbar .nav > li.active > a { - color: #ffffff; - background-color: #fcd417; -} - -.bg-warning .open > a, -.bg-warning .open > a:hover, -.bg-warning .open > a:focus { - color: #ffffff; -} - -.bg-warning .text-muted { - color: #fbf2cb !important; -} - -.bg-warning .text-lt { - color: #ffffff !important; -} - -.bg-warning.auto .list-group-item, -.bg-warning .auto .list-group-item { - background-color: transparent; - border-color: #f9d21a !important; -} - -.bg-warning.auto .list-group-item:hover, -.bg-warning .auto .list-group-item:hover, -.bg-warning.auto .list-group-item:focus, -.bg-warning .auto .list-group-item:focus, -.bg-warning.auto .list-group-item:active, -.bg-warning .auto .list-group-item:active, -.bg-warning.auto .list-group-item.active, -.bg-warning .auto .list-group-item.active { - background-color: #fcd417 !important; -} - -.bg-danger { - color: #ffffff; - background-color: #f05050; -} - -.bg-danger.lt, -.bg-danger .lt { - background-color: #f06a6a; -} - -.bg-danger.lter, -.bg-danger .lter { - background-color: #f18282; -} - -.bg-danger.dk, -.bg-danger .dk { - background-color: #f13636; -} - -.bg-danger.dker, -.bg-danger .dker { - background-color: #f21b1b; -} - -.bg-danger.bg, -.bg-danger .bg { - background-color: #f05050; -} - -.bg-danger a { - color: #ffffff; -} - -.bg-danger a:hover { - color: #ffffff; -} - -.bg-danger a.list-group-item:hover, -.bg-danger a.list-group-item:focus { - background-color: inherit; -} - -.bg-danger .nav > li:hover > a, -.bg-danger .nav > li:focus > a, -.bg-danger .nav > li.active > a { - color: #ffffff; - background-color: #f13636; -} - -.bg-danger .nav > li > a { - color: #f2f2f2; -} - -.bg-danger .nav > li > a:hover, -.bg-danger .nav > li > a:focus { - background-color: #f13f3f; -} - -.bg-danger .nav .open > a { - background-color: #f13636; -} - -.bg-danger .caret { - border-top-color: #ffffff; - border-bottom-color: #ffffff; -} - -.bg-danger.navbar .nav > li.active > a { - color: #ffffff; - background-color: #f13636; -} - -.bg-danger .open > a, -.bg-danger .open > a:hover, -.bg-danger .open > a:focus { - color: #ffffff; -} - -.bg-danger .text-muted { - color: #e6e6e6 !important; -} - -.bg-danger .text-lt { - color: #ffffff !important; -} - -.bg-danger.auto .list-group-item, -.bg-danger .auto .list-group-item { - background-color: transparent; - border-color: #ee3939 !important; -} - -.bg-danger.auto .list-group-item:hover, -.bg-danger .auto .list-group-item:hover, -.bg-danger.auto .list-group-item:focus, -.bg-danger .auto .list-group-item:focus, -.bg-danger.auto .list-group-item:active, -.bg-danger .auto .list-group-item:active, -.bg-danger.auto .list-group-item.active, -.bg-danger .auto .list-group-item.active { - background-color: #f13636 !important; -} - -.bg-white { - color: #58666e; - background-color: #fff; -} - -.bg-white a { - color: #363f44; -} - -.bg-white a:hover { - color: #1f2427; -} - -.bg-white .text-muted { - color: #98a6ad !important; -} - -.bg-white .lt, -.bg-white .lter, -.bg-white .dk, -.bg-white .dker { - background-color: #fff; -} - -.bg-white-only { - background-color: #fff; -} - -.bg-white-opacity { - background-color: rgba(255, 255, 255, 0.5); -} - -.bg-black-opacity { - background-color: rgba(32, 43, 54, 0.5); -} - -a.bg-light:hover { - color: #363f44; -} - -a.bg-primary:hover { - background-color: #6254b2; -} - -a.text-primary:hover { - color: #6254b2; -} - -.text-primary { - color: #7266ba; -} - -.text-primary-lt { - color: #8278c2; -} - -.text-primary-lter { - color: #FFCD00; -} - -.text-primary-dk { - color: #6254b2; -} - -.text-primary-dker { - color: #564aa3; -} - -a.bg-info:hover { - background-color: #19a9d5; -} - -a.text-info:hover { - color: #19a9d5; -} - -.text-info { - color: #23b7e5; -} - -.text-info-lt { - color: #3abee8; -} - -.text-info-lter { - color: #51c6ea; -} - -.text-info-dk { - color: #19a9d5; -} - -.text-info-dker { - color: #1797be; -} - -a.bg-success:hover { - background-color: #23ad44; -} - -a.text-success:hover { - color: #23ad44; -} - -.text-success { - color: #27c24c; -} - -.text-success-lt { - color: #2ed556; -} - -.text-success-lter { - color: #43d967; -} - -.text-success-dk { - color: #23ad44; -} - -.text-success-dker { - color: #1e983b; -} - -a.bg-warning:hover { - background-color: #f9d21a; -} - -a.text-warning:hover { - color: #f9d21a; -} - -.text-warning { - color: #fad733; -} - -.text-warning-lt { - color: #fbdc4c; -} - -.text-warning-lter { - color: #fbe165; -} - -.text-warning-dk { - color: #f9d21a; -} - -.text-warning-dker { - color: #f4ca06; -} - -a.bg-danger:hover { - background-color: #ee3939; -} - -a.text-danger:hover { - color: #ee3939; -} - -.text-danger { - color: #f05050; -} - -.text-danger-lt { - color: #f26767; -} - -.text-danger-lter { - color: #f47f7f; -} - -.text-danger-dk { - color: #ee3939; -} - -.text-danger-dker { - color: #ec2121; -} - -a.bg-dark:hover { - background-color: #2f3342; -} - -a.text-dark:hover { - color: #2f3342; -} - -.text-dark { - color: #3a3f51; -} - -.text-dark-lt { - color: #454b60; -} - -.text-dark-lter { - color: #4f566f; -} - -.text-dark-dk { - color: #2f3342; -} - -.text-dark-dker { - color: #252833; -} - -a.bg-#000000:hover { - background-color: #131e25; -} - -a.text-#000000:hover { - color: #131e25; -} - -.text-#000000 { - color: #1c2b36; -} - -.text-#000000-lt { - color: #253847; -} - -.text-#000000-lter { - color: #2d4658; -} - -.text-#000000-dk { - color: #131e25; -} - -.text-#000000-dker { - color: #0b1014; -} - -.text-white { - color: #fff; -} - -.text-black { - color: #000; -} - -.text-muted { - color: #98a6ad; -} - -.text-muted.label-small { - font-size: 12px; -} - -.pos-rlt { - position: relative; -} - -.pos-stc { - position: static !important; -} - -.pos-abt { - position: absolute; -} - -.pos-fix { - position: fixed; -} - -.show { - visibility: visible; -} - -.line { - width: 100%; - height: 2px; - margin: 10px 0; - overflow: hidden; - font-size: 0; -} - -.line-xs { - margin: 0; -} - -.line-lg { - margin-top: 15px; - margin-bottom: 15px; -} - -.line-dashed { - background-color: transparent; - border-style: dashed !important; - border-width: 0; -} - -.no-line { - border-width: 0; -} - -.no-border, -.no-borders { - border-color: transparent; - border-width: 0; -} - -.no-radius { - border-radius: 0 !important; -} - -.block { - display: block; -} - -.block.hide { - display: none; -} - -.inline { - display: inline-block !important; -} - -.none { - display: none; -} - -.pull-none { - float: none; -} - -.rounded { - border-radius: 500px; -} - -.clear { - display: block; - overflow: hidden; -} - -.no-bg { - color: inherit; - background-color: transparent !important; -} - -.no-select { - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-touch-callout: none; -} - -.l-h { - line-height: 1.42857143; -} - -.l-h-0x { - line-height: 0; -} - -.l-h-1x { - line-height: 1.2; -} - -.l-h-2x { - line-height: 2em; -} - -.l-s-1x { - letter-spacing: 1; -} - -.l-s-2x { - letter-spacing: 2; -} - -.l-s-3x { - letter-spacing: 3; -} - -.font-normal { - font-weight: normal; -} - -.font-thin { - font-weight: 300; -} - -.font-bold { - font-weight: 700; -} - -.text-3x { - font-size: 3em; -} - -.text-2x { - font-size: 2em; -} - -.text-lg { - font-size: 48px; -} - -.text-md { - font-size: 16px; -} - -.text-base { - font-size: 14px; -} - -.text-sm { - font-size: 13px; -} - -.text-xs { - font-size: 12px; -} - -.text-xxs { - text-indent: -9999px; -} - -.text-ellipsis { - display: block; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.text-u-c { - text-transform: uppercase; -} - -.text-l-t { - text-decoration: line-through; -} - -.text-u-l { - text-decoration: underline; -} - -.text-active, -.active > .text, -.active > .auto .text { - display: none !important; -} - -.active > .text-active, -.active > .auto .text-active { - display: inline-block !important; -} - -.box-shadow { - box-shadow: 0 2px 2px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(0, 0, 0, 0.05); -} - -.box-shadow-lg { - box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.05); -} - -.text-shadow { - font-size: 170px; - text-shadow: 0 1px 0 #dee5e7, 0 2px 0 #fcfdfd, 0 5px 10px rgba(0, 0, 0, 0.125), 0 10px 20px rgba(0, 0, 0, 0.2); -} - -.no-shadow { - -webkit-box-shadow: none !important; - box-shadow: none !important; -} - -.wrapper-xs { - padding: 5px; -} - -.wrapper-sm { - padding: 10px; -} - -.wrapper { - padding: 15px; -} - -.wrapper-md { - padding: 20px; -} - -.wrapper-lg { - padding: 30px; -} - -.wrapper-xl { - padding: 50px; -} - -.padder-lg { - padding-right: 30px; - padding-left: 30px; -} - -.padder-md { - padding: 20px; -} - -.padder { - padding-right: 15px; - padding-left: 15px; -} - -.padder-v { - padding-top: 15px; - padding-bottom: 15px; -} - -.no-padder { - padding: 0 !important; -} - -.pull-in { - margin-right: -15px; - margin-left: -15px; -} - -.pull-out { - margin: -10px -15px; -} - -.b { - border: 1px solid rgba(0, 0, 0, 0.05); -} - -.b-a { - border: 1px solid #dee5e7; -} - -.b-t { - border-top: 1px solid #dee5e7; -} - -.b-r { - border-right: 1px solid #dee5e7; -} - -.b-b { - border-bottom: 1px solid #dee5e7; -} - -.b-l { - border-left: 1px solid #dee5e7; -} - -.b-light { - border-color: #edf1f2; -} - -.b-dark { - border-color: #3a3f51; -} - -.b-black { - border-color: #3a3f51; -} - -.b-primary { - border-color: #7266ba; -} - -.b-success { - border-color: #27c24c; -} - -.b-info { - border-color: #23b7e5; -} - -.b-warning { - border-color: #fad733; -} - -.b-danger { - border-color: #f05050; -} - -.b-white { - border-color: #ffffff; -} - -.b-dashed { - border-style: dashed !important; -} - -.b-l-light { - border-left-color: #edf1f2; -} - -.b-l-dark { - border-left-color: #3a3f51; -} - -.b-l-black { - border-left-color: #3a3f51; -} - -.b-l-primary { - border-left-color: #7266ba; -} - -.b-l-success { - border-left-color: #27c24c; -} - -.b-l-info { - border-left-color: #23b7e5; -} - -.b-l-warning { - border-left-color: #fad733; -} - -.b-l-danger { - border-left-color: #f05050; -} - -.b-l-white { - border-left-color: #ffffff; -} - -.b-l-2x { - border-left-width: 2px; -} - -.b-l-3x { - border-left-width: 3px; -} - -.b-l-4x { - border-left-width: 4px; -} - -.b-l-5x { - border-left-width: 5px; -} - -.b-2x { - border-width: 2px; -} - -.b-3x { - border-width: 3px; -} - -.b-4x { - border-width: 4px; -} - -.b-5x { - border-width: 5px; -} - -.r { - border-radius: 2px 2px 2px 2px; -} - -.r-2x { - border-radius: 4px; -} - -.r-3x { - border-radius: 6px; -} - -.r-l { - border-radius: 2px 0 0 2px; -} - -.r-r { - border-radius: 0 2px 2px 0; -} - -.r-t { - border-radius: 2px 2px 0 0; -} - -.r-b { - border-radius: 0 0 2px 2px; -} - -.m-xxs { - margin: 2px 4px; -} - -.m-xs { - margin: 5px; -} - -.m-sm { - margin: 10px; -} - -.m { - margin: 15px; -} - -.m-md { - margin: 20px; -} - -.m-lg { - margin: 30px; -} - -.m-xl { - margin: 50px; -} - -.m-n { - margin: 0 !important; -} - -.m-l-none { - margin-left: 0 !important; -} - -.m-l-xs { - margin-left: 5px; -} - -.m-l-sm { - margin-left: 10px; -} - -.m-l { - margin-left: 15px; -} - -.m-l-md { - margin-left: 20px; -} - -.m-l-lg { - margin-left: 30px; -} - -.m-l-xl { - margin-left: 40px; -} - -.m-l-xxl { - margin-left: 50px; -} - -.m-l-n-xxs { - margin-left: -1px; -} - -.m-l-n-xs { - margin-left: -5px; -} - -.m-l-n-sm { - margin-left: -10px; -} - -.m-l-n { - margin-left: -15px; -} - -.m-l-n-md { - margin-left: -20px; -} - -.m-l-n-lg { - margin-left: -30px; -} - -.m-l-n-xl { - margin-left: -40px; -} - -.m-l-n-xxl { - margin-left: -50px; -} - -.m-t-none { - margin-top: 0 !important; -} - -.m-t-xxs { - margin-top: 1px; -} - -.m-t-xs { - margin-top: 5px; -} - -.m-t-sm { - margin-top: 10px; -} - -.m-t { - margin-top: 15px; -} -.p-t { - padding-top: 15px; -} -.m-t-md { - margin-top: 20px; -} - -.m-t-lg { - margin-top: 30px; -} - -.m-t-xl { - margin-top: 40px; -} - -.m-t-xxl { - margin-top: 50px; -} - -.m-t-n-xxs { - margin-top: -1px; -} - -.m-t-n-xs { - margin-top: -5px; -} - -.m-t-n-sm { - margin-top: -10px; -} - -.m-t-n { - margin-top: -15px; -} - -.m-t-n-md { - margin-top: -20px; -} - -.m-t-n-lg { - margin-top: -30px; -} - -.m-t-n-xl { - margin-top: -40px; -} - -.m-t-n-xxl { - margin-top: -50px; -} - -.m-r-none { - margin-right: 0 !important; -} - -.m-r-xxs { - margin-right: 1px; -} - -.m-r-xs { - margin-right: 5px; -} - -.m-r-sm { - margin-right: 10px; -} - -.m-r { - margin-right: 15px; -} - -.m-r-md { - margin-right: 20px; -} - -.m-r-lg { - margin-right: 30px; -} - -.m-r-xl { - margin-right: 40px; -} - -.m-r-xxl { - margin-right: 50px; -} - -.m-r-n-xxs { - margin-right: -1px; -} - -.m-r-n-xs { - margin-right: -5px; -} - -.m-r-n-sm { - margin-right: -10px; -} - -.m-r-n { - margin-right: -15px; -} - -.m-r-n-md { - margin-right: -20px; -} - -.m-r-n-lg { - margin-right: -30px; -} - -.m-r-n-xl { - margin-right: -40px; -} - -.m-r-n-xxl { - margin-right: -50px; -} - -.m-b-none { - margin-bottom: 0 !important; -} - -.m-b-xxs { - margin-bottom: 1px; -} - -.m-b-xs { - margin-bottom: 5px; -} - -.m-b-sm { - margin-bottom: 10px; -} - -.m-b { - margin-bottom: 15px; -} - -.m-b-md { - margin-bottom: 20px; -} - -.m-b-lg { - margin-bottom: 30px; -} - -.m-b-xl { - margin-bottom: 40px; -} - -.m-b-xxl { - margin-bottom: 50px; -} - -.m-b-n-xxs { - margin-bottom: -1px; -} - -.m-b-n-xs { - margin-bottom: -5px; -} - -.m-b-n-sm { - margin-bottom: -10px; -} - -.m-b-n { - margin-bottom: -15px; -} - -.m-b-n-md { - margin-bottom: -20px; -} - -.m-b-n-lg { - margin-bottom: -30px; -} - -.m-b-n-xl { - margin-bottom: -40px; -} - -.m-b-n-xxl { - margin-bottom: -50px; -} - -.avatar { - position: relative; - display: block; - white-space: nowrap; - border-radius: 500px; -} - -.avatar img { - width: 100%; - border-radius: 500px; -} - -.avatar i { - position: absolute; - top: 0; - left: 0; - width: 10px; - height: 10px; - margin: 2px; - border-style: solid; - border-width: 2px; - border-radius: 100%; -} - -.avatar i.right { - right: 0; - left: auto; -} - -.avatar i.bottom { - top: auto; - right: 0; - bottom: 0; - left: auto; -} - -.avatar i.left { - top: auto; - bottom: 0; -} - -.avatar i.on { - background-color: #27c24c; -} - -.avatar i.off { - background-color: #98a6ad; -} - -.avatar i.busy { - background-color: #f05050; -} - -.avatar i.away { - background-color: #fad733; -} - -.avatar.thumb-md i { - width: 12px; - height: 12px; - margin: 3px; -} - -.avatar.thumb-sm i { - margin: 1px; -} - -.avatar.thumb-xs i { - margin: 0; -} - -.w-1x { - width: 1em; -} - -.w-2x { - width: 2em; -} - -.w-3x { - width: 3em; -} - -.w-xxs { - width: 60px; -} - -.w-xs { - width: 90px; -} - -.w-sm { - width: 150px; -} - -.w { - width: 200px; -} - -.w-md { - width: 240px; -} - -.w-lg { - width: 280px; -} - -.w-xl { - width: 320px; -} - -.w-xxl { - width: 360px; -} - -.w-full { - width: 100%; -} - -.w-auto { - width: auto; -} - -.h-auto { - height: auto; -} - -.h-full { - height: 100%; -} - -.thumb-xl { - display: inline-block; - width: 128px; -} - -.thumb-lg { - display: inline-block; - width: 96px; -} - -.thumb-md { - display: inline-block; - width: 64px; -} - -.thumb { - display: inline-block; - width: 50px; -} - -.thumb-sm { - display: inline-block; - width: 40px; -} - -.thumb-xs { - display: inline-block; - width: 34px; -} - -.thumb-xxs { - display: inline-block; - width: 30px; -} - -.thumb-wrapper { - padding: 2px; - border: 1px solid #dee5e7; -} - -.thumb img, -.thumb-xs img, -.thumb-sm img, -.thumb-md img, -.thumb-lg img, -.thumb-btn img { - height: auto; - max-width: 100%; - vertical-align: middle; -} - -.img-full { - width: 100%; -} - -.img-full img { - width: 100%; -} - -.scrollable { - overflow-x: hidden; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.scrollable.hover { - overflow-y: hidden !important; -} - -.scrollable.hover:hover { - overflow: visible !important; - overflow-y: auto !important; -} - -.smart .scrollable { - overflow-y: auto !important; -} - -.scroll-x, -.scroll-y { - overflow: hidden; - -webkit-overflow-scrolling: touch; -} - -.scroll-y { - overflow-y: auto; -} - -.scroll-x { - overflow-x: auto; -} - -.hover-action { - display: none; -} - -.hover-rotate { - -webkit-transition: all 0.2s ease-in-out 0.1s; - transition: all 0.2s ease-in-out 0.1s; -} - -.hover-anchor:hover > .hover-action, -.hover-anchor:focus > .hover-action, -.hover-anchor:active > .hover-action { - display: inherit; -} - -.hover-anchor:hover > .hover-rotate, -.hover-anchor:focus > .hover-rotate, -.hover-anchor:active > .hover-rotate { - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} - -.backdrop { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; -} - -.backdrop.fade { - opacity: 0; - filter: alpha(opacity=0); -} - -.backdrop.in { - opacity: 0.8; - filter: alpha(opacity=80); -} - -/*desktop*/ - -@media screen and (min-width: 992px) { - .col-lg-2-4 { - float: left; - width: 20.000%; - } -} - -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm.show { - display: inherit !important; - } - .no-m-sm { - margin: 0 !important; - } -} - -/*phone*/ - -@media (max-width: 767px) { - .w-auto-xs { - width: auto; - } - .shift { - display: none !important; - } - .shift.in { - display: block !important; - } - .row-2 [class*="col"] { - float: left; - width: 50%; - } - .row-2 .col-0 { - clear: none; - } - .row-2 li:nth-child(odd) { - margin-left: 0; - clear: left; - } - .text-center-xs { - text-align: center; - } - .text-left-xs { - text-align: left; - } - .text-right-xs { - text-align: right; - } - .no-border-xs { - border-width: 0; - } - .pull-none-xs { - float: none !important; - } - .pull-right-xs { - float: right !important; - } - .pull-left-xs { - float: left !important; - } - .dropdown-menu.pull-none-xs { - left: 0; - } - .hidden-xs.show { - display: inherit !important; - } - .wrapper-lg, - .wrapper-md { - padding: 15px; - } - .padder-lg, - .padder-md { - padding-right: 15px; - padding-left: 15px; - } - .no-m-xs { - margin: 0 !important; - } -} - -.butterbar { - position: relative; - height: 3px; - margin-bottom: -3px; -} - -.butterbar .bar { - position: absolute; - width: 100%; - height: 0; - text-indent: -9999px; - background-color: #23b7e5; -} - -.butterbar .bar:before { - position: absolute; - right: 50%; - left: 50%; - height: 3px; - background-color: inherit; - content: ""; -} - -.butterbar.active { - -webkit-animation: changebar 2.25s infinite 0.75s; - -moz-animation: changebar 2.25s infinite 0.75s; - animation: changebar 2.25s infinite 0.75s; -} - -.butterbar.active .bar { - -webkit-animation: changebar 2.25s infinite; - -moz-animation: changebar 2.25s infinite; - animation: changebar 2.25s infinite; -} - -.butterbar.active .bar:before { - -webkit-animation: movingbar 0.75s infinite; - -moz-animation: movingbar 0.75s infinite; - animation: movingbar 0.75s infinite; -} - -/* Moving bar */ - -@-webkit-keyframes movingbar { - 0% { - right: 50%; - left: 50%; - } - 99.9% { - right: 0; - left: 0; - } - 100% { - right: 50%; - left: 50%; - } -} - -@-moz-keyframes movingbar { - 0% { - right: 50%; - left: 50%; - } - 99.9% { - right: 0; - left: 0; - } - 100% { - right: 50%; - left: 50%; - } -} - -@keyframes movingbar { - 0% { - right: 50%; - left: 50%; - } - 99.9% { - right: 0; - left: 0; - } - 100% { - right: 50%; - left: 50%; - } -} - -/* change bar */ - -@-webkit-keyframes changebar { - 0% { - background-color: #23b7e5; - } - 33.3% { - background-color: #23b7e5; - } - 33.33% { - background-color: #fad733; - } - 66.6% { - background-color: #fad733; - } - 66.66% { - background-color: #7266ba; - } - 99.9% { - background-color: #7266ba; - } -} - -@-moz-keyframes changebar { - 0% { - background-color: #23b7e5; - } - 33.3% { - background-color: #23b7e5; - } - 33.33% { - background-color: #fad733; - } - 66.6% { - background-color: #fad733; - } - 66.66% { - background-color: #7266ba; - } - 99.9% { - background-color: #7266ba; - } -} - -@keyframes changebar { - 0% { - background-color: #23b7e5; - } - 33.3% { - background-color: #23b7e5; - } - 33.33% { - background-color: #fad733; - } - 66.6% { - background-color: #fad733; - } - 66.66% { - background-color: #7266ba; - } - 99.9% { - background-color: #7266ba; - } -} - -/*КОСТЫЛИ*/ -.btn.disabled { - opacity: 1; -} - -.p-l-none { - padding-left: 0 !important; -} - -.p-r-none { - padding-right: 0 !important; -} - -.p-b-none { - padding-bottom: 0 !important; -} - -.p-t-none { - padding-top: 0 !important; -} - -.p-none { - padding: 0 !important; -} - -.fixed-pie { - display: ''; -} - -.pl-fix { - padding-left: 15px !important; -} - -@media (max-width: 490px) { - .fixed-pie { - display: none; - } -} -@media (min-width: 1200px) and (max-width: 1416px) { - .fixed-pie { - display: none; - } -} - -@media (max-width: 1200px) { - .pl-fix { - padding-left: 0 !important; - } -} - -.bg-warning-hover:hover { - background: #fad733; - color: #fff; -} -.bg-primary-hover:hover { - background: #7266ba; - color: #fff; -} -.bg-danger-hover:hover { - background: #f05050; - color: #fff; -} -.bg-info-hover:hover { - background: #23b7e5; - color: #fff; -} -.bg-success-hover:hover { - background: #27c24c; - color: #fff; -} - -.achievement { - min-height: 160px; -} - -.min-w-360 { - min-width: 360px; -} -.navbar-header .glyphicon-log-out, -.navbar-header .glyphicon-align-justify{ - color: #000000; -} -.nav .btn-lg{ - font-size: 14px; -} -.center_img { - display: block; - text-align: center; -} -/*.activ{ - margin-left: 45%; -}*/ -.activ p{ - text-align: center; - font-size: 21px; - line-height: 22px; - padding-bottom: 10px; - font-weight: bold; - color: #55636b; - padding-top: 9px; - padding-bottom: 23px; - margin-right: 13px; -} - -.modal-header, -.modal-footer{ - border-bottom: none; - border-top: none; -} -input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {color: #b1b1b1; font-size:18px; line-height: 18px; text-align: left;} -input::-moz-placeholder, textarea::-moz-placeholder {opacity: 1; color: #b1b1b1; font-size:18px; line-height: 43px; text-align: left;} -textarea::-webkit-input-placeholder {text-align: left !important; color: #b1b1b1; line-height: 62px;} -textarea::-moz-placeholder {text-align: left !important; color: #b1b1b1; line-height: 62px; } - -.activ input{ - width: 100%; - height: 40px; - margin-bottom: 1px; - border-radius: 4px; - border:1px solid #e7ecee; - color: #787676; - font-size:18px; - text-align: left; - font-family: 'exo_2regular'; - padding-left: 24px; -} - -.activ .padd_bottom { - margin-bottom: 6px; -} -.modal-footer .btn-primary { - background: #fad733; - width: 62%; - font-size: 1.7vmax; - color: #000000 !important; - text-align: center; - margin-right: 22px; - border: none; -} -.wht { - text-align: center; - padding: 19px 0 12px 0; - display: block; - text-decoration: underline; - color: #b2acac; -} -.wht:hover{ - text-decoration: underline; - color: #696666; -} -.modal .title1{ - text-align: center; -} -.clearfix .nav .phone{ - display: none; -} -.btn-lg{ - border-radius: 3px; -} -.modal-body { - padding: 0 15px; -} -.modal1{ - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - display: none; - overflow: hidden; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.bg-dark .nav > li:hover > a{ - background-color: none; -} -.panel-body .all_news{ - margin-top: 15px; - display: block; - text-align: center; - text-decoration:underline; - color: #b2afaf; - font-size: 12px; -} -.panel-body .all_news:hover { - color: #363f44; -} -.news_word .clear.new{ - color: #777; -} -.neu_news { - margin-left: 60px; -} -.posit_news li { - margin-bottom: 6px; -} -.posit_news .btn_new{ - color: #000000; -} -.f-s-new{ - font-family: 'exo_2regular'; - font-size: 14px; - color: rgb(88, 102, 110); - line-height: 20px; -} -.header_new_base{ - display: block; - overflow: hidden; - vertical-align: top; -} -.activ .btn { - width: 100%; - margin: 15px 0; - height: 50px; -} -.c-gray{ - color: #3a3f51; -} -.m-left{ - margin-left: 0px; -} -.scroll-fon { - height: 650px; - overflow-x: hidden; - overflow-y: auto; -} -/*.scroll-fon-xxxl{ - height: 600px; - overflow-x: hidden; - overflow-y: auto; -}*/ -.p-n{ - padding: 0px; -} -.b-g{ - background: #edf1f2; -} -.b-g-s{ - background: #f6f8f8; -} -.b-w{ - background: #f0f3f4; -} -.b-r{ - border-right: 1px solid #dee5e7; -} - -.scroll-bared { - overflow-x: hidden; - overflow-y: auto; -} - -/*.lesson-list { - height: 450px; -}*/ - -#cke_17 { - display: none; -} - -.popup { - display: none; - position: fixed; - top: 50%; - left: 50%; - -webkit-transform: translate(-50%,-50%); - transform: translate(-50%,-50%); -} - -#diplom { - position: fixed; - text-align: center; - background-color: #fff; - z-index: 4 !important; - height: 100%; - max-height: 95%; -} - -#diplom .h3 { - font-size: 10px; - position: absolute; - bottom: 7%; - left: 50%; - -webkit-transform: translateX(-50%); - -ms-transform: translateX(-50%); - -o-transform: translateX(-50%); - transform: translateX(-50%); - width: 100%; -} -#diplom .h3 .main { - font-size: 3.6em; - line-height: 0.5em; - color: #2c2b2b; - display: block; - text-align: center; -} -#diplom .h3 p { - font-size: 1.3em; - line-height: 1em; - color: #525252; -} -#diplom .h3 span { - font-size: 1.3em; - line-height: 1em; - color: #a8a8a8; -} -#diplom img { - height: 84%; - display: block; - margin: 0 auto; -} - -#diplom .border { - position: relative; - z-index: 1; -} -#diplom .inner { - position: relative; - z-index: 2; - top: 20px; - width: auto; -} -#diplom .shadow { - position: relative; - top: -145%; - z-index: 3; - margin: 0 auto; -} -#diplom .btn { - position: absolute; - z-index: 3; - bottom: 10px; - left: 50%; - transform: translateX(-50%); - -webkit-transform:translateX(-50%); -} -.fancybox-overlay { - width: 100% !important; - height: 100% !important; - position: fixed; - top: 0px; - z-index: 1 !important; - background: rgba(0,0,0,0.7); -} -.fancybox-opened { - z-index: 2; -} -.prepod_teammates .list-group-item { - padding: 5px; - margin: 0; - border-bottom: none; -} -.prepod_teammates .list-group-item:last-child { - border-bottom: 1px solid #EDF1F2; -} -.prepod_teammates .timestamp { - font-size: 12px; -} -.prepod_nav_item { - padding: 0 10px !important; -} - -@media all and (max-width: 400px){ - #diplom .h3 { - font-size: 7px; - bottom: 11%; - } - #diplom img { - height: 77%; - } - #diplom .inner { - top: -77%; - } - #diplom .shadow { - top: -154%; - } - #diplom .btn { - width: 160px; - } -} - -#achievement { - text-align: center; -} -#achievement .popup_badge { - position: absolute; - z-index: 4; - -webkit-transform: translate(-50%,-50%) rotate(0deg); - transform: translate(-50%,-50%) rotate(0deg); - width: 124px; - height: 124px; - top: -100%; - left: 50%; - transition: all 0.45s ease-out 2.5s; -} -#for_circle { - position: relative; - padding: 150px 0; -} -#for_circle canvas { - position: absolute; - left: 50%; - top: 50%; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - z-index: 1; -} - -.popup_badge_container { - background-color: #d89000; - border-radius: 0px; - height: 0px; - width: 0px; - position: absolute; - top: 50%; - left: 50%; - -webkit-transform: rotate(45deg) translate(-50%,-50%); - transform: rotate(45deg) translate(-50%,-50%); - -webkit-transform-origin: 0 0 0; - transform-origin: 0 0 0; - z-index: 2; - border-radius: 0px; - /*transition: all 0.6s ease-out;*/ -} -.popup_badge_inner { - position: absolute; - top: 50%; - left: 50%; - -webkit-transform: rotate(45deg) translate(-50%, -50%); - transform: rotate(45deg) translate(-50%, -50%) ; - -webkit-transform-origin: 0 0 0; - transform-origin: 0 0 0; - z-index: 3; - height: 0px; - width: 0px; - border-radius: 0px; - background-color: #ffe629; - /*transition: all 1s ease-out 0.3s;*/ -} - -.fancybox-opened .popup_badge_container { - opacity: 1; -/* -webkit-transform: rotate(1125deg) translate(-50%,-50%); - transform: rotate(1125deg) translate(-50%,-50%);*/ - - animation: bounce_rotate_big 2s ease-out both; - -webkit-animation: bounce_rotate_big 2s ease-out both; -} - -.fancybox-opened .popup_badge_inner { - /*-webkit-transform: rotate(1125deg) translate(-50%, -50%); - transform: rotate(1125deg) translate(-50%, -50%);*/ - animation: bounce_rotate_small 2s ease-out 0.1s both; - -webkit-animation: bounce_rotate_small 2s ease-out 0.1s both; -} -.fancybox-opened #achievement .popup_badge { - top: 50%; -} - -@keyframes bounce_rotate_big { - 0% { transform: rotate(0deg) translate(-50%, -50%); width: 0; height: 0; border-radius: 0px;} - 25% { transform: rotate(720deg) translate(-50%, -50%);} - 50% { transform: rotate(1150deg) translate(-50%, -50%);width: 180px; height: 180px;} - 75% { transform: rotate(1100deg) translate(-50%, -50%);} - 90% { transform: rotate(1125deg) translate(-50%, -50%);} - 100%{ transform: rotate(1125deg) translate(-50%, -50%); width: 220px; height: 220px; border-radius: 80px;} -} -@-webkit-keyframes bounce_rotate_big { - 0% { -webkit-transform: rotate(0deg) translate(-50%, -50%); width: 0; height: 0; border-radius: 0px;} - 25% { -webkit-transform: rotate(720deg) translate(-50%, -50%);} - 50% { -webkit-transform: rotate(1150deg) translate(-50%, -50%);width: 180px; height: 180px;} - 75% { -webkit-transform: rotate(1100deg) translate(-50%, -50%);} - 90% { -webkit-transform: rotate(1125deg) translate(-50%, -50%);} - 100%{ transform: rotate(1125deg) translate(-50%, -50%); width: 220px; height: 220px; border-radius: 80px;} -} - -@keyframes bounce_rotate_small { - 0% { transform: rotate(0deg) translate(-50%, -50%); width: 0; height: 0;border-radius: 0px;} - 25% { transform: rotate(720deg) translate(-50%, -50%);} - 50% { transform: rotate(1150deg) translate(-50%, -50%);width: 180px; height: 180px;} - 75% { transform: rotate(1100deg) translate(-50%, -50%);} - 90% { transform: rotate(1125deg) translate(-50%, -50%);} - 100%{ transform: rotate(1125deg) translate(-50%, -50%); width: 180px; height: 180px;border-radius: 58px;} -} -@-webkit-keyframes bounce_rotate_small { - 0% { -webkit-transform: rotate(0deg) translate(-50%, -50%); width: 0; height: 0; border-radius: 0px;} - 25% { -webkit-transform: rotate(720deg) translate(-50%, -50%);} - 50% { -webkit-transform: rotate(1150deg) translate(-50%, -50%);width: 180px; height: 180px;} - 75% { -webkit-transform: rotate(1100deg) translate(-50%, -50%);} - 90% { -webkit-transform: rotate(1125deg) translate(-50%, -50%);} - 100%{ transform: rotate(1125deg) translate(-50%, -50%); width: 180px; height: 180px; border-radius: 58px;} -} -.modal{ - overflow-x: hidden; - overflow-y: hidden; -} -p.error{ - background: #ffc; - border-radius: 5px; - font-size: 14px; - font-weight: normal; - padding-bottom: 10px; - margin-right: 0; - line-height: 25px; -} -#canvas_length{ - position: relative; - left: 81px; - top: -44px; - font-size: 20px; - font-weight: bold; -} -ul.list-group.arrow-dark{ - border: 0 !important; -} -ul.list-group.arrow-dark a li{ - background: #ebebeb; - border: 0; -} -ul.list-group.arrow-dark a:hover li{ - background: #49aee8; - border: 0; -} -span.panel-title a:hover{ - color: #333; -} -.panel-body > ul.nav > li > a:hover{ - background: #666; - padding: 5px 10px; -} -a.prepod_nav_item{ -padding: 10px 10px !important; -} -.panel-heading a:hover{ - color: #333 !important; -} -.gread_title{ - font-size: 75px; - font-family: "Roboto Condensed",sans-serif; - font-weight: bold; - text-transform: uppercase; - color: #464547; - line-height: 99%; - margin-bottom: 71px; -} -.btn-green{ - background: #669966; - color: #fff !important; -} -.btn-green:hover{ - background: #333; - color: #fff; -} -.bill_place{ - position: fixed; - z-index: 2000; - width: 400px; - right: 10px; - top: 10px; -} -.lesson_video{ - -} -ul.files_loaded_block{ - padding: 0; - list-style: none; -} -ul.files_loaded_block li{ - float: left; - margin-right: 10px; -} -ul.check_list{ - padding-right: 0; - list-style: none; -} -ul.check_list li{ - -} -.btn-group label.btn-primary:hover{ - background: #7266ba; - border-color: #7266ba; -} -.btn-group label.btn-primary.active:hover{ - background: #6254b2; - border-color: #6254b2; -} -.red_icon{ - color: #999; - cursor: pointer; - padding: 5px; -} -.red_icon:hover{ - color: red; - cursor: pointer; -} - -span.bg-warning{ - background: #e5a228; -} - -@media only screen and (max-device-width: 480px){ -.course_button{ - border-radius: 3px; - margin-bottom: 0; - margin-top: 5px; - font-size: 25px; - width: 100%; -} -} -@media only screen and (min-device-width: 480px){ -.course_button{ - border-radius: 3px; - margin-bottom: 0; - margin-top: 5px; - font-size: 25px; -} -} -.like_button{ - background: none; - padding: 5px 6px; - margin-top: -4px; - font-size: 13px; - color: #99CCFF; - border: 0; -} -.like_button:hover{ - background: #f1f1f1; - border: 0; - color: #0066CC; -} -.like_button span.like_count{ - padding: 0 0 0 5px; -} -.like_button:visited:active:focus::selection{ - background: none; - padding: 5px 6px; - margin-top: -4px; - font-size: 13px; - color: #0066CC; -} -.complain_button{ - background: none; - padding: 5px 6px; - margin-top: -4px; - font-size: 13px; - color: #FFCCCC; - margin-right: 10px; - border: 0; -} -.complain_button:hover{ - background: #f1f1f1; - border: 0; - color: #FF9966; -} -.complain_button:visited:active:focus::selection{ - background: none; - padding: 5px 6px; - margin-top: -4px; - font-size: 13px; - color: #FF9966; - margin-right: 10px; -} -input::-moz-placeholder{ - padding: 0 0 0 10px; - line-height: initial; -} -ul.inside_list{ - background: #f1f1f1; - width: 100%; - min-height: 100px; - border-radius: 5px; - border-right: 5px solid #ccc; - border-left: 5px solid #ccc; - padding: 5px; -} -ul.inside_list li{ - list-style: none; - background: #fff; - margin-bottom: 5px; - color: #666; - font-weight: bold; - padding: 5px; -} -ul.inside_list li.active:hover{ - background: #99CC66; -} -ul.inside_list li:hover{ - background: #ccc; -} -.material{ - border-radius:100px; - transition: all 0.3s; - background-color:#FDD835; - cursor:pointer; - position:fixed; - top:15px; - left:15px; -} - -.material.full { - border-radius:0px; - width:100%; - height:100%; - bottom:0; - right:0; - position: fixed; -} -.container { - width: 200px; - height: 100px; - padding-top: 100px; - margin: 0 auto; -} - -.ball { - width: 10px; - height: 10px; - margin: 10px auto; - border-radius: 50px; - } - .ball:nth-child(1) { - background: #ff005d; - -webkit-animation: right 1s infinite ease-in-out; - -moz-animation: right 1s infinite ease-in-out; - animation: right 1s infinite ease-in-out; - } - - .ball:nth-child(2) { - background: #35ff99; - -webkit-animation: left 1.1s infinite ease-in-out; - -moz-animation: left 1.1s infinite ease-in-out; - animation: left 1.1s infinite ease-in-out; - } - - .ball:nth-child(3) { - background: #008597; - -webkit-animation: right 1.05s infinite ease-in-out; - -moz-animation: right 1.05s infinite ease-in-out; - animation: right 1.05s infinite ease-in-out; - } - - .ball:nth-child(4) { - background: #ffcc00; - -webkit-animation: left 1.15s infinite ease-in-out; - -moz-animation: left 1.15s infinite ease-in-out; - animation: left 1.15s infinite ease-in-out; - } - - .ball:nth-child(5) { - background: #2d3443; - -webkit-animation: right 1.1s infinite ease-in-out; - -moz-animation: right 1.1s infinite ease-in-out; - animation: right 1.1s infinite ease-in-out; - } - - .ball:nth-child(6) { - background: #ff7c35; - -webkit-animation: left 1.05s infinite ease-in-out; - -moz-animation: left 1.05s infinite ease-in-out; - animation: left 1.05s infinite ease-in-out; - } - - .ball:nth-child(7) { - background: #4d407c; - -webkit-animation: right 1s infinite ease-in-out; - -moz-animation: right 1s infinite ease-in-out; - animation: right 1s infinite ease-in-out; - } - - -@-webkit-keyframes right { - 0% { -webkit-transform: translate(-15px); } - 50% { -webkit-transform: translate(15px); } - 100% { -webkit-transform: translate(-15px); } -} - -@-webkit-keyframes left { - 0% { -webkit-transform: translate(15px); } - 50% { -webkit-transform: translate(-15px); } - 100% { -webkit-transform: translate(15px); } -} - -@-moz-keyframes right { - 0% { -moz-transform: translate(-15px); } - 50% { -moz-transform: translate(15px); } - 100% { -moz-transform: translate(-15px); } -} - -@-moz-keyframes left { - 0% { -moz-transform: translate(15px); } - 50% { -moz-transform: translate(-15px); } - 100% { -moz-transform: translate(15px); } -} - -@keyframes right { - 0% { transform: translate(-15px); } - 50% { transform: translate(15px); } - 100% { transform: translate(-15px); } -} - -@keyframes left { - 0% { transform: translate(15px); } - 50% { transform: translate(-15px); } - 100% { transform: translate(15px); } -} -.list-group-item:hover{ - background: #ffc; - cursor: pointer; -} -#toTop { -width:100px; -text-align:center; -padding:5px; -position:fixed; - bottom: 30px; - right: 100px; -cursor:pointer; -display:none; -font-family:verdana; -font-size:11px; -} -.nav-tabs_self{ - border: 0; - padding: 30px; - list-style: none; - padding-bottom: 0; - padding-top: 15px; -} -.nav-tabs_self>li{float:left;margin-bottom:-1px;margin-right: 10px;} -.nav-tabs_self>li>a{} -.nav-tabs_self>li>a:hover{border:0 !important;border-radius:3px;background: #ffcd00;transition: 0.3s;padding: 10px 15px !important;} -.nav-tabs_self>li.active>a,.nav-tabs_self>li.active>a:focus,.nav-tabs_self>li.active>a:hover{border-radius:3px;background: #ffcd00;font-weight: bold;border: 0 !important;padding: 10px 15px !important;} -.nav-tabs_self.nav-justified{width:100%;border-bottom:0} -.nav-tabs_self.nav-justified>li{float:none} -.nav-tabs_self.nav-justified>li>a{margin-bottom:5px;text-align:center} -.nav-tabs_self.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto} -@media (min-width:768px){ - .nav-tabs_self.nav-justified>li{display:table-cell;width:1%} - .nav-tabs_self.nav-justified>li>a{margin-bottom:0} -} -.nav-tabs_self.nav-justified>li>a{margin-right:0;border-radius:4px} -.nav-tabs_self.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd} -@media (min-width:768px){ - .nav-tabs_self.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0} - .nav-tabs_self.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff} -} -.tab-content_self{ - padding: 30px; -} -.tab-content_self>.tab-pane{display:none} -.tab-content_self>.active{display:block;padding: 20px;} -.nav-tabs_self .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0} - -.grid__item{ - float: left; - padding: 10px 0; - text-align: justify; -} -.grid__item img{ - border-radius: 3px 3px 0 0; - width: 100%; -} -.grid__item .favorite{ - position: relative; -} -.grid__item .favorite i{ - position: absolute; - right: 10px; - top: -5px; - padding: 10px 5px; - background: #fff; - border-radius: 3px; - cursor: pointer; -} -.grid__item .favorite i#no_active{ - background: #fff; -} -.grid__item .favorite i#active { - background: #ffcd00; -} - -.grid__item .content{ - background: #fff; - padding: 10px 20px; - float: left; -} -.grid__item .content .section_block{ - -} -.grid__item .content .section_block .section{ - color: #ffcd00; -} -.grid__item .content .section_block .date{ - float: right; - padding: 10px 0; - font-size: 12px; - color: #888888; -} - -.grid__item .content .title{ - font-size: 18px; - font-weight: bold; - padding: 10px 0; - text-align: left; -} -.grid__item .content .preview{ - font-size: 14px; - color: #888888; -} -.grid__item .content .tags{ - padding: 20px 0 10px; -} -.grid__item .content .tags span{ - font-size: 12px; - background: #e8e8e8; - color: #7e7e7e; - border-radius: 7px; - padding: 5px; -} - -.grid__item .bottom{ - background: #f6f6f6; - padding: 20px; - clear: both; -} -@media (min-width: 480px) { - .grid__item .bottom button{ - background: #ffcd00; - border-radius: 3px; - padding: 10px 20px; - border: 0; - width: 100%; -} - .grid__item .bottom .icons{ - float: right; - color: #b3b3b3; - font-size: 14px; - padding: 10px 0; - -} - .article_content{ - padding: 0 30px; - } -} -@media (max-width: 480px) { - .grid__item .bottom button { - background: #ffcd00; - border-radius: 3px; - padding: 10px 20px; - border: 0; - width: 100%; - } - .grid__item .bottom .icons{ - float: right; - color: #b3b3b3; - font-size: 14px; - padding: 10px 0; - width: 100%; - text-align: center; -} - .article_content{ - padding: 0; - } -} -.grid__item .bottom button:hover{ - background: #ccc; -} -.grid__item .bottom .icons{ - float: right; - color: #b3b3b3; - font-size: 14px; - padding: 10px 0; -} -.grid__item .bottom .icons i{ - padding-right: 5px; - padding-left: 20px; -} -.grid__item .bottom .views{ - float: left; -} -.grid__item .bottom .comments{ - float: left; -} -.grid__item .bottom .likes{ -} -@media (min-width: 480px) { -#nav_block { - text-align: center; - position: fixed; - top: 62px; - display: none; - left: 215px; - font-family: verdana; - background: #f5f5f5; - padding: 0 20px; - border-radius: 3px; - z-index: 14000; -} } -@media (max-width: 480px) { -#nav_block { - width: 100%; - text-align: center; - position: fixed; - top: 53px; - display: none; - left: 0px; - font-family: verdana; - background: #f5f5f5; - padding: 0 20px; - border-radius: 0; - z-index: 15000; -} - #nav_in{ - width: 240px; - margin: 0 auto; - } -} -#nav_block span{ - float: left; - padding: 10px; -} -#nav_block span.active{ - color: #ffcd00; -} -#nav_block span#simple{ - float: left; - padding: 0; -} -#nav_block hr{ - float: left; - margin: 10px; - height: 19px; - width: 1px; -} -#nav_block span#button:hover{ - color: #333; - cursor: pointer; - background: #ccc; -} -.tag{ - font-size: 12px; - background: #e8e8e8; - color: #7e7e7e; - border-radius: 25px; - padding: 5px; - white-space: pre; - margin-right: 5px; - float: left; - margin-bottom: 10px; -} -@media (max-width: 480px) { - .nav-tabs_self>li{ - width: 100%; - text-align: center; - } -} -.panel a{ - border-bottom: 1px dotted; -} - -i.top_icon{ - cursor: pointer; - color: #333; - float: left; - margin: 16px; - font-size: 16px; -} -.course_cart{ - border-radius: 5px; - border: 1px solid #f1f1f1; - -webkit-transition: 0.4s; - -moz-transition: 0.4s; - -o-transition: 0.4s; - transition: 0.4s; -} -.course_cart:hover{ -box-shadow: 0 12px 35px 0 rgba(134, 173, 253, 0.4); -} -.label-progress:hover{ - height: 10px; -} -#teacher_popup{ - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.8); - position: absolute; - top: 0px; - right: 0px; - z-index: 100000; -} -.teacher_popup{ - border: 2px solid #fff; - position: absolute; - width: 400px; - height: 226px; - left: 50%; - margin-left: -200px; - margin-top: 150px; - font-size: 22px; - background-color: #f9f9f9; - font-size: 22px; - padding: 30px; - bottom: 400px; -} -.realy{ - width: 100%; - height: 80px; - line-height: 40px; - text-align: center; - color: #000; - margin-bottom: 20px; -} -#yes, #no{ - border: 1px solid #fff; - width: 168px; - height: 60px; - text-align: center; - line-height: 60px; - cursor: pointer; -} -#yes{ - float: left; - font-size: 20px; - background-color: #27c24c; - border-radius: 7px 0 0 7px; -} -#no{ - float: right; - font-size: 20px; - background-color: #f05050; - border-radius: 0 7px 7px 0; -} diff --git a/static/css/app.min.css b/static/css/app.min.css deleted file mode 100755 index e30a0e3..0000000 --- a/static/css/app.min.css +++ /dev/null @@ -1,23 +0,0 @@ -/*! - * Bootstrap v3.3.2 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{padding:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url('/static/fonts/glyphicons-halflings-regular.eot');src:url('/static/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('/static/fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('/static/fonts/glyphicons-halflings-regular.woff') format('woff'),url('/static/fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('/static/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;line-height:1;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media(min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media(min-width:768px){.container{width:750px}}@media(min-width:992px){.container{width:970px}}@media(min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media(min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media(min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media(min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;border:1px solid #ddd;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:34px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:normal;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.form-group-sm .form-control{height:30px;line-height:30px}textarea.form-group-sm .form-control,select[multiple].form-group-sm .form-control{height:auto}.form-group-sm .form-control-static{height:30px;padding:5px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.form-group-lg .form-control{height:46px;line-height:46px}textarea.form-group-lg .form-control,select[multiple].form-group-lg .form-control{height:auto}.form-group-lg .form-control-static{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media(min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.333333px}}@media(min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:manipulation;touch-action:manipulation}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:normal;color:#337ab7;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media(min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media(min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media(min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media(min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media(min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media(min-width:768px){.navbar{border-radius:4px}}@media(min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media(min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important;visibility:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media(max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media(min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media(min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media(min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media(min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media(max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media(min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}@media(min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media(min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:4px}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media(min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media(max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media(max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:hidden;outline:0;-webkit-overflow-scrolling:touch}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{min-height:16.42857143px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media(min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media(min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:normal;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:normal;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left>.arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.next,.carousel-inner>.item.active.right{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);opacity:.5;filter:alpha(opacity=50)}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,0.5)),to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,0.0001)),to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(max-width:767px){.visible-xs-block{display:block!important}}@media(max-width:767px){.visible-xs-inline{display:inline!important}}@media(max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media(min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media(min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media(min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media(min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media(min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media(min-width:1200px){.visible-lg-block{display:block!important}}@media(min-width:1200px){.visible-lg-inline{display:inline!important}}@media(min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media(max-width:767px){.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} - -@charset "UTF-8";/*! -Animate.css - http://daneden.me/animate -Licensed under the MIT license - http://opensource.org/licenses/MIT - -Copyright (c) 2013 Daniel Eden -*/.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}@-webkit-keyframes bounce{0%,20%,53%,80%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition-timing-function:cubic-bezier(0.215,0.61,0.355,1);transition-timing-function:cubic-bezier(0.215,0.61,0.355,1)}40%,43%{-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0);-webkit-transition-timing-function:cubic-bezier(0.755,0.05,0.855,0.06);transition-timing-function:cubic-bezier(0.755,0.05,0.855,0.06)}70%{-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0);-webkit-transition-timing-function:cubic-bezier(0.755,0.05,0.855,0.06);transition-timing-function:cubic-bezier(0.755,0.05,0.855,0.06)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,20%,53%,80%,100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition-timing-function:cubic-bezier(0.215,0.61,0.355,1);transition-timing-function:cubic-bezier(0.215,0.61,0.355,1)}40%,43%{-webkit-transform:translate3d(0,-30px,0);-ms-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0);-webkit-transition-timing-function:cubic-bezier(0.755,0.05,0.855,0.06);transition-timing-function:cubic-bezier(0.755,0.05,0.855,0.06)}70%{-webkit-transform:translate3d(0,-15px,0);-ms-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0);-webkit-transition-timing-function:cubic-bezier(0.755,0.05,0.855,0.06);transition-timing-function:cubic-bezier(0.755,0.05,0.855,0.06)}90%{-webkit-transform:translate3d(0,-4px,0);-ms-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,50%,100%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,100%{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);-ms-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,0.75,1);transform:scale3d(1.25,0.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,0.85,1);transform:scale3d(1.15,0.85,1)}65%{-webkit-transform:scale3d(0.95,1.05,1);transform:scale3d(0.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,0.95,1);transform:scale3d(1.05,0.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,0.75,1);-ms-transform:scale3d(1.25,0.75,1);transform:scale3d(1.25,0.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);-ms-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,0.85,1);-ms-transform:scale3d(1.15,0.85,1);transform:scale3d(1.15,0.85,1)}65%{-webkit-transform:scale3d(0.95,1.05,1);-ms-transform:scale3d(0.95,1.05,1);transform:scale3d(0.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,0.95,1);-ms-transform:scale3d(1.05,0.95,1);transform:scale3d(1.05,0.95,1)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);-ms-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);-ms-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);-ms-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);-ms-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);-ms-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-animation-name:swing;animation-name:swing;-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center}@-webkit-keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(0.9,0.9,0.9) rotate3d(0,0,1,-3deg);transform:scale3d(0.9,0.9,0.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(0.9,0.9,0.9) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(0.9,0.9,0.9) rotate3d(0,0,1,-3deg);transform:scale3d(0.9,0.9,0.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}@keyframes wobble{0%{-webkit-transform:none;-ms-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);-ms-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);-ms-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);-ms-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);-ms-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);-ms-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,100%{-webkit-transition-timing-function:cubic-bezier(0.215,0.61,0.355,1);transition-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;-webkit-transform:scale3d(0.3,0.3,0.3);transform:scale3d(0.3,0.3,0.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(0.9,0.9,0.9);transform:scale3d(0.9,0.9,0.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(0.97,0.97,0.97);transform:scale3d(0.97,0.97,0.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,100%{-webkit-transition-timing-function:cubic-bezier(0.215,0.61,0.355,1);transition-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;-webkit-transform:scale3d(0.3,0.3,0.3);-ms-transform:scale3d(0.3,0.3,0.3);transform:scale3d(0.3,0.3,0.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(0.9,0.9,0.9);-ms-transform:scale3d(0.9,0.9,0.9);transform:scale3d(0.9,0.9,0.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);-ms-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(0.97,0.97,0.97);-ms-transform:scale3d(0.97,0.97,0.97);transform:scale3d(0.97,0.97,0.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,100%{-webkit-transition-timing-function:cubic-bezier(0.215,0.61,0.355,1);transition-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInDown{0%,60%,75%,90%,100%{-webkit-transition-timing-function:cubic-bezier(0.215,0.61,0.355,1);transition-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);-ms-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);-ms-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);-ms-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,100%{-webkit-transition-timing-function:cubic-bezier(0.215,0.61,0.355,1);transition-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{0%,60%,75%,90%,100%{-webkit-transition-timing-function:cubic-bezier(0.215,0.61,0.355,1);transition-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);-ms-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);-ms-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);-ms-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,100%{-webkit-transition-timing-function:cubic-bezier(0.215,0.61,0.355,1);transition-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInRight{0%,60%,75%,90%,100%{-webkit-transition-timing-function:cubic-bezier(0.215,0.61,0.355,1);transition-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);-ms-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);-ms-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);-ms-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,100%{-webkit-transition-timing-function:cubic-bezier(0.215,0.61,0.355,1);transition-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{0%,60%,75%,90%,100%{-webkit-transition-timing-function:cubic-bezier(0.215,0.61,0.355,1);transition-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);-ms-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);-ms-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(0.9,0.9,0.9);transform:scale3d(0.9,0.9,0.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(0.3,0.3,0.3);transform:scale3d(0.3,0.3,0.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(0.9,0.9,0.9);-ms-transform:scale3d(0.9,0.9,0.9);transform:scale3d(0.9,0.9,0.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(0.3,0.3,0.3);-ms-transform:scale3d(0.3,0.3,0.3);transform:scale3d(0.3,0.3,0.3)}}.bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);-ms-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);-ms-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);-ms-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(0.95,0.95,0.95);transform:perspective(400px) scale3d(0.95,0.95,0.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(0.95,0.95,0.95);-ms-transform:perspective(400px) scale3d(0.95,0.95,0.95);transform:perspective(400px) scale3d(0.95,0.95,0.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-animation-name:flip;animation-name:flip;-webkit-backface-visibility:visible;-ms-backface-visibility:visible;backface-visibility:visible}@-webkit-keyframes flipInX{0%{opacity:0;-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{opacity:1;-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg)}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{opacity:0;-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{opacity:1;-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);-ms-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg)}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-animation-name:flipInX;animation-name:flipInX;-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipInY{0%{opacity:0;-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{opacity:1;-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg)}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{opacity:0;-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{opacity:1;-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);-ms-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg)}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-animation-name:flipInY;animation-name:flipInY;-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{opacity:1;-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg)}100%{opacity:0;-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg)}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{opacity:1;-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg)}100%{opacity:0;-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg)}}.flipOutX{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{opacity:1;-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg)}100%{opacity:0;-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg)}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{opacity:1;-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg)}100%{opacity:0;-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg)}}.flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:flipOutY;animation-name:flipOutY;-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes lightSpeedIn{0%{opacity:0;-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg)}60%{opacity:1;-webkit-transform:skewX(20deg);transform:skewX(20deg)}80%{opacity:1;-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes lightSpeedIn{0%{opacity:0;-webkit-transform:translate3d(100%,0,0) skewX(-30deg);-ms-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg)}60%{opacity:1;-webkit-transform:skewX(20deg);-ms-transform:skewX(20deg);transform:skewX(20deg)}80%{opacity:1;-webkit-transform:skewX(-5deg);-ms-transform:skewX(-5deg);transform:skewX(-5deg)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg)}}@keyframes lightSpeedOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) skewX(30deg);-ms-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg)}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{opacity:0;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);-webkit-transform-origin:center;transform-origin:center}100%{opacity:1;-webkit-transform:none;transform:none;-webkit-transform-origin:center;transform-origin:center}}@keyframes rotateIn{0%{opacity:0;-webkit-transform:rotate3d(0,0,1,-200deg);-ms-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{opacity:0;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);-webkit-transform-origin:left bottom;transform-origin:left bottom}100%{opacity:1;-webkit-transform:none;transform:none;-webkit-transform-origin:left bottom;transform-origin:left bottom}}@keyframes rotateInDownLeft{0%{opacity:0;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{opacity:0;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);-webkit-transform-origin:right bottom;transform-origin:right bottom}100%{opacity:1;-webkit-transform:none;transform:none;-webkit-transform-origin:right bottom;transform-origin:right bottom}}@keyframes rotateInDownRight{0%{opacity:0;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{opacity:0;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);-webkit-transform-origin:left bottom;transform-origin:left bottom}100%{opacity:1;-webkit-transform:none;transform:none;-webkit-transform-origin:left bottom;transform-origin:left bottom}}@keyframes rotateInUpLeft{0%{opacity:0;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{opacity:0;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);-webkit-transform-origin:right bottom;transform-origin:right bottom}100%{opacity:1;-webkit-transform:none;transform:none;-webkit-transform-origin:right bottom;transform-origin:right bottom}}@keyframes rotateInUpRight{0%{opacity:0;-webkit-transform:rotate3d(0,0,1,-90deg);-ms-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{opacity:1;-webkit-transform-origin:center;transform-origin:center}100%{opacity:0;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);-webkit-transform-origin:center;transform-origin:center}}@keyframes rotateOut{0%{opacity:1;-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}100%{opacity:0;-webkit-transform:rotate3d(0,0,1,200deg);-ms-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{opacity:1;-webkit-transform-origin:left bottom;transform-origin:left bottom}100%{opacity:0;-webkit-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);-webkit-transform-origin:left bottom;transform-origin:left bottom}}@keyframes rotateOutDownLeft{0%{opacity:1;-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom}100%{opacity:0;-webkit-transform:rotate(0,0,1,45deg);-ms-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{opacity:1;-webkit-transform-origin:right bottom;transform-origin:right bottom}100%{opacity:0;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);-webkit-transform-origin:right bottom;transform-origin:right bottom}}@keyframes rotateOutDownRight{0%{opacity:1;-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom}100%{opacity:0;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{opacity:1;-webkit-transform-origin:left bottom;transform-origin:left bottom}100%{opacity:0;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);-webkit-transform-origin:left bottom;transform-origin:left bottom}}@keyframes rotateOutUpLeft{0%{opacity:1;-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom}100%{opacity:0;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{opacity:1;-webkit-transform-origin:right bottom;transform-origin:right bottom}100%{opacity:0;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);-webkit-transform-origin:right bottom;transform-origin:right bottom}}@keyframes rotateOutUpRight{0%{opacity:1;-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom}100%{opacity:0;-webkit-transform:rotate3d(0,0,1,90deg);-ms-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform-origin:top left;transform-origin:top left}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform-origin:top left;transform-origin:top left}40%,80%{opacity:1;-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform-origin:top left;transform-origin:top left}100%{opacity:0;-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0)}}@keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);-ms-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left}40%,80%{opacity:1;-webkit-transform:rotate3d(0,0,1,60deg);-ms-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left}100%{opacity:0;-webkit-transform:translate3d(0,700px,0);-ms-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0)}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);-ms-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);-ms-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(0.3,0.3,0.3);transform:scale3d(0.3,0.3,0.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(0.3,0.3,0.3);-ms-transform:scale3d(0.3,0.3,0.3);transform:scale3d(0.3,0.3,0.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(0.1,0.1,0.1) translate3d(0,-1000px,0);transform:scale3d(0.1,0.1,0.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;-webkit-transform:scale3d(0.475,0.475,0.475) translate3d(0,60px,0);transform:scale3d(0.475,0.475,0.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,0.885,0.32,1);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(0.1,0.1,0.1) translate3d(0,-1000px,0);-ms-transform:scale3d(0.1,0.1,0.1) translate3d(0,-1000px,0);transform:scale3d(0.1,0.1,0.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;-webkit-transform:scale3d(0.475,0.475,0.475) translate3d(0,60px,0);-ms-transform:scale3d(0.475,0.475,0.475) translate3d(0,60px,0);transform:scale3d(0.475,0.475,0.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,0.885,0.32,1);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(0.1,0.1,0.1) translate3d(-1000px,0,0);transform:scale3d(0.1,0.1,0.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;-webkit-transform:scale3d(0.475,0.475,0.475) translate3d(10px,0,0);transform:scale3d(0.475,0.475,0.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,0.885,0.32,1);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(0.1,0.1,0.1) translate3d(-1000px,0,0);-ms-transform:scale3d(0.1,0.1,0.1) translate3d(-1000px,0,0);transform:scale3d(0.1,0.1,0.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;-webkit-transform:scale3d(0.475,0.475,0.475) translate3d(10px,0,0);-ms-transform:scale3d(0.475,0.475,0.475) translate3d(10px,0,0);transform:scale3d(0.475,0.475,0.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,0.885,0.32,1);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(0.1,0.1,0.1) translate3d(1000px,0,0);transform:scale3d(0.1,0.1,0.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;-webkit-transform:scale3d(0.475,0.475,0.475) translate3d(-10px,0,0);transform:scale3d(0.475,0.475,0.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,0.885,0.32,1);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(0.1,0.1,0.1) translate3d(1000px,0,0);-ms-transform:scale3d(0.1,0.1,0.1) translate3d(1000px,0,0);transform:scale3d(0.1,0.1,0.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;-webkit-transform:scale3d(0.475,0.475,0.475) translate3d(-10px,0,0);-ms-transform:scale3d(0.475,0.475,0.475) translate3d(-10px,0,0);transform:scale3d(0.475,0.475,0.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,0.885,0.32,1);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(0.1,0.1,0.1) translate3d(0,1000px,0);transform:scale3d(0.1,0.1,0.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;-webkit-transform:scale3d(0.475,0.475,0.475) translate3d(0,-60px,0);transform:scale3d(0.475,0.475,0.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,0.885,0.32,1);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(0.1,0.1,0.1) translate3d(0,1000px,0);-ms-transform:scale3d(0.1,0.1,0.1) translate3d(0,1000px,0);transform:scale3d(0.1,0.1,0.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;-webkit-transform:scale3d(0.475,0.475,0.475) translate3d(0,-60px,0);-ms-transform:scale3d(0.475,0.475,0.475) translate3d(0,-60px,0);transform:scale3d(0.475,0.475,0.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,0.885,0.32,1);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(0.3,0.3,0.3);transform:scale3d(0.3,0.3,0.3)}100%{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(0.3,0.3,0.3);-ms-transform:scale3d(0.3,0.3,0.3);transform:scale3d(0.3,0.3,0.3)}100%{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(0.475,0.475,0.475) translate3d(0,-60px,0);transform:scale3d(0.475,0.475,0.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}100%{opacity:0;-webkit-transform:scale3d(0.1,0.1,0.1) translate3d(0,2000px,0);transform:scale3d(0.1,0.1,0.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(0.175,0.885,0.32,1);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1);-webkit-transform-origin:center bottom;transform-origin:center bottom}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(0.475,0.475,0.475) translate3d(0,-60px,0);-ms-transform:scale3d(0.475,0.475,0.475) translate3d(0,-60px,0);transform:scale3d(0.475,0.475,0.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}100%{opacity:0;-webkit-transform:scale3d(0.1,0.1,0.1) translate3d(0,2000px,0);-ms-transform:scale3d(0.1,0.1,0.1) translate3d(0,2000px,0);transform:scale3d(0.1,0.1,0.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(0.175,0.885,0.32,1);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(0.475,0.475,0.475) translate3d(42px,0,0);transform:scale3d(0.475,0.475,0.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(0.1) translate3d(-2000px,0,0);transform:scale(0.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(0.475,0.475,0.475) translate3d(42px,0,0);-ms-transform:scale3d(0.475,0.475,0.475) translate3d(42px,0,0);transform:scale3d(0.475,0.475,0.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(0.1) translate3d(-2000px,0,0);-ms-transform:scale(0.1) translate3d(-2000px,0,0);transform:scale(0.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(0.475,0.475,0.475) translate3d(-42px,0,0);transform:scale3d(0.475,0.475,0.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(0.1) translate3d(2000px,0,0);transform:scale(0.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(0.475,0.475,0.475) translate3d(-42px,0,0);-ms-transform:scale3d(0.475,0.475,0.475) translate3d(-42px,0,0);transform:scale3d(0.475,0.475,0.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(0.1) translate3d(2000px,0,0);-ms-transform:scale(0.1) translate3d(2000px,0,0);transform:scale(0.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(0.475,0.475,0.475) translate3d(0,60px,0);transform:scale3d(0.475,0.475,0.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}100%{opacity:0;-webkit-transform:scale3d(0.1,0.1,0.1) translate3d(0,-2000px,0);transform:scale3d(0.1,0.1,0.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(0.175,0.885,0.32,1);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1);-webkit-transform-origin:center bottom;transform-origin:center bottom}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(0.475,0.475,0.475) translate3d(0,60px,0);-ms-transform:scale3d(0.475,0.475,0.475) translate3d(0,60px,0);transform:scale3d(0.475,0.475,0.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}100%{opacity:0;-webkit-transform:scale3d(0.1,0.1,0.1) translate3d(0,-2000px,0);-ms-transform:scale3d(0.1,0.1,0.1) translate3d(0,-2000px,0);transform:scale3d(0.1,0.1,0.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(0.175,0.885,0.32,1);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp} - -/*! - * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';font-style:normal;font-weight:normal;src:url('/static/fonts/fontawesome-webfont.eot?v=4.2.0');src:url('/static/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'),url('/static/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'),url('/static/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'),url('/static/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg')}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;text-rendering:auto;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;top:.14285714em;left:-2.14285714em;width:2.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"} - -@font-face{font-family:'Simple-Line-Icons';font-style:normal;font-weight:normal;src:url('/static/fonts/Simple-Line-Icons.eot');src:url('/static/fonts/Simple-Line-Icons.eot?#iefix') format('embedded-opentype'),url('/static/fonts/Simple-Line-Icons.woff') format('woff'),url('/static/fonts/Simple-Line-Icons.ttf') format('truetype'),url('/static/fonts/Simple-Line-Icons.svg#Simple-Line-Icons') format('svg')}[data-icon]:before{font-family:'Simple-Line-Icons';-webkit-font-smoothing:antialiased;font-weight:normal;line-height:1;text-transform:none;content:attr(data-icon);speak:none;font-variant:normal;-moz-osx-font-smoothing:grayscale}.icon-user-female,.icon-user-follow,.icon-user-following,.icon-user-unfollow,.icon-trophy,.icon-screen-smartphone,.icon-screen-desktop,.icon-plane,.icon-notebook,.icon-moustache,.icon-mouse,.icon-magnet,.icon-energy,.icon-emoticon-smile,.icon-disc,.icon-cursor-move,.icon-crop,.icon-credit-card,.icon-chemistry,.icon-user,.icon-speedometer,.icon-social-youtube,.icon-social-twitter,.icon-social-tumblr,.icon-social-facebook,.icon-social-dropbox,.icon-social-dribbble,.icon-shield,.icon-screen-tablet,.icon-magic-wand,.icon-hourglass,.icon-graduation,.icon-ghost,.icon-game-controller,.icon-fire,.icon-eyeglasses,.icon-envelope-open,.icon-envelope-letter,.icon-bell,.icon-badge,.icon-anchor,.icon-wallet,.icon-vector,.icon-speech,.icon-puzzle,.icon-printer,.icon-present,.icon-playlist,.icon-pin,.icon-picture,.icon-map,.icon-layers,.icon-handbag,.icon-globe-alt,.icon-globe,.icon-frame,.icon-folder-alt,.icon-film,.icon-feed,.icon-earphones-alt,.icon-earphones,.icon-drop,.icon-drawer,.icon-docs,.icon-directions,.icon-direction,.icon-diamond,.icon-cup,.icon-compass,.icon-call-out,.icon-call-in,.icon-call-end,.icon-calculator,.icon-bubbles,.icon-briefcase,.icon-book-open,.icon-basket-loaded,.icon-basket,.icon-bag,.icon-action-undo,.icon-action-redo,.icon-wrench,.icon-umbrella,.icon-trash,.icon-tag,.icon-support,.icon-size-fullscreen,.icon-size-actual,.icon-shuffle,.icon-share-alt,.icon-share,.icon-rocket,.icon-question,.icon-pie-chart,.icon-pencil,.icon-note,.icon-music-tone-alt,.icon-music-tone,.icon-microphone,.icon-loop,.icon-logout,.icon-login,.icon-list,.icon-like,.icon-home,.icon-grid,.icon-graph,.icon-equalizer,.icon-dislike,.icon-cursor,.icon-control-start,.icon-control-rewind,.icon-control-play,.icon-control-pause,.icon-control-forward,.icon-control-end,.icon-calendar,.icon-bulb,.icon-bar-chart,.icon-arrow-up,.icon-arrow-right,.icon-arrow-left,.icon-arrow-down,.icon-ban,.icon-bubble,.icon-camcorder,.icon-camera,.icon-check,.icon-clock,.icon-close,.icon-cloud-download,.icon-cloud-upload,.icon-doc,.icon-envelope,.icon-eye,.icon-flag,.icon-folder,.icon-heart,.icon-info,.icon-key,.icon-link,.icon-lock,.icon-lock-open,.icon-magnifier,.icon-magnifier-add,.icon-magnifier-remove,.icon-paper-clip,.icon-paper-plane,.icon-plus,.icon-pointer,.icon-power,.icon-refresh,.icon-reload,.icon-settings,.icon-star,.icon-symbol-female,.icon-symbol-male,.icon-target,.icon-volume-1,.icon-volume-2,.icon-volume-off,.icon-users{font-family:'Simple-Line-Icons';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;line-height:1;text-transform:none;speak:none;font-variant:normal}.icon-user-female:before{content:"\e000"}.icon-user-follow:before{content:"\e002"}.icon-user-following:before{content:"\e003"}.icon-user-unfollow:before{content:"\e004"}.icon-trophy:before{content:"\e006"}.icon-screen-smartphone:before{content:"\e010"}.icon-screen-desktop:before{content:"\e011"}.icon-plane:before{content:"\e012"}.icon-notebook:before{content:"\e013"}.icon-moustache:before{content:"\e014"}.icon-mouse:before{content:"\e015"}.icon-magnet:before{content:"\e016"}.icon-energy:before{content:"\e020"}.icon-emoticon-smile:before{content:"\e021"}.icon-disc:before{content:"\e022"}.icon-cursor-move:before{content:"\e023"}.icon-crop:before{content:"\e024"}.icon-credit-card:before{content:"\e025"}.icon-chemistry:before{content:"\e026"}.icon-user:before{content:"\e005"}.icon-speedometer:before{content:"\e007"}.icon-social-youtube:before{content:"\e008"}.icon-social-twitter:before{content:"\e009"}.icon-social-tumblr:before{content:"\e00a"}.icon-social-facebook:before{content:"\e00b"}.icon-social-dropbox:before{content:"\e00c"}.icon-social-dribbble:before{content:"\e00d"}.icon-shield:before{content:"\e00e"}.icon-screen-tablet:before{content:"\e00f"}.icon-magic-wand:before{content:"\e017"}.icon-hourglass:before{content:"\e018"}.icon-graduation:before{content:"\e019"}.icon-ghost:before{content:"\e01a"}.icon-game-controller:before{content:"\e01b"}.icon-fire:before{content:"\e01c"}.icon-eyeglasses:before{content:"\e01d"}.icon-envelope-open:before{content:"\e01e"}.icon-envelope-letter:before{content:"\e01f"}.icon-bell:before{content:"\e027"}.icon-badge:before{content:"\e028"}.icon-anchor:before{content:"\e029"}.icon-wallet:before{content:"\e02a"}.icon-vector:before{content:"\e02b"}.icon-speech:before{content:"\e02c"}.icon-puzzle:before{content:"\e02d"}.icon-printer:before{content:"\e02e"}.icon-present:before{content:"\e02f"}.icon-playlist:before{content:"\e030"}.icon-pin:before{content:"\e031"}.icon-picture:before{content:"\e032"}.icon-map:before{content:"\e033"}.icon-layers:before{content:"\e034"}.icon-handbag:before{content:"\e035"}.icon-globe-alt:before{content:"\e036"}.icon-globe:before{content:"\e037"}.icon-frame:before{content:"\e038"}.icon-folder-alt:before{content:"\e039"}.icon-film:before{content:"\e03a"}.icon-feed:before{content:"\e03b"}.icon-earphones-alt:before{content:"\e03c"}.icon-earphones:before{content:"\e03d"}.icon-drop:before{content:"\e03e"}.icon-drawer:before{content:"\e03f"}.icon-docs:before{content:"\e040"}.icon-directions:before{content:"\e041"}.icon-direction:before{content:"\e042"}.icon-diamond:before{content:"\e043"}.icon-cup:before{content:"\e044"}.icon-compass:before{content:"\e045"}.icon-call-out:before{content:"\e046"}.icon-call-in:before{content:"\e047"}.icon-call-end:before{content:"\e048"}.icon-calculator:before{content:"\e049"}.icon-bubbles:before{content:"\e04a"}.icon-briefcase:before{content:"\e04b"}.icon-book-open:before{content:"\e04c"}.icon-basket-loaded:before{content:"\e04d"}.icon-basket:before{content:"\e04e"}.icon-bag:before{content:"\e04f"}.icon-action-undo:before{content:"\e050"}.icon-action-redo:before{content:"\e051"}.icon-wrench:before{content:"\e052"}.icon-umbrella:before{content:"\e053"}.icon-trash:before{content:"\e054"}.icon-tag:before{content:"\e055"}.icon-support:before{content:"\e056"}.icon-size-fullscreen:before{content:"\e057"}.icon-size-actual:before{content:"\e058"}.icon-shuffle:before{content:"\e059"}.icon-share-alt:before{content:"\e05a"}.icon-share:before{content:"\e05b"}.icon-rocket:before{content:"\e05c"}.icon-question:before{content:"\e05d"}.icon-pie-chart:before{content:"\e05e"}.icon-pencil:before{content:"\e05f"}.icon-note:before{content:"\e060"}.icon-music-tone-alt:before{content:"\e061"}.icon-music-tone:before{content:"\e062"}.icon-microphone:before{content:"\e063"}.icon-loop:before{content:"\e064"}.icon-logout:before{content:"\e065"}.icon-login:before{content:"\e066"}.icon-list:before{content:"\e067"}.icon-like:before{content:"\e068"}.icon-home:before{content:"\e069"}.icon-grid:before{content:"\e06a"}.icon-graph:before{content:"\e06b"}.icon-equalizer:before{content:"\e06c"}.icon-dislike:before{content:"\e06d"}.icon-cursor:before{content:"\e06e"}.icon-control-start:before{content:"\e06f"}.icon-control-rewind:before{content:"\e070"}.icon-control-play:before{content:"\e071"}.icon-control-pause:before{content:"\e072"}.icon-control-forward:before{content:"\e073"}.icon-control-end:before{content:"\e074"}.icon-calendar:before{content:"\e075"}.icon-bulb:before{content:"\e076"}.icon-bar-chart:before{content:"\e077"}.icon-arrow-up:before{content:"\e078"}.icon-arrow-right:before{content:"\e079"}.icon-arrow-left:before{content:"\e07a"}.icon-arrow-down:before{content:"\e07b"}.icon-ban:before{content:"\e07c"}.icon-bubble:before{content:"\e07d"}.icon-camcorder:before{content:"\e07e"}.icon-camera:before{content:"\e07f"}.icon-check:before{content:"\e080"}.icon-clock:before{content:"\e081"}.icon-close:before{content:"\e082"}.icon-cloud-download:before{content:"\e083"}.icon-cloud-upload:before{content:"\e084"}.icon-doc:before{content:"\e085"}.icon-envelope:before{content:"\e086"}.icon-eye:before{content:"\e087"}.icon-flag:before{content:"\e088"}.icon-folder:before{content:"\e089"}.icon-heart:before{content:"\e08a"}.icon-info:before{content:"\e08b"}.icon-key:before{content:"\e08c"}.icon-link:before{content:"\e08d"}.icon-lock:before{content:"\e08e"}.icon-lock-open:before{content:"\e08f"}.icon-magnifier:before{content:"\e090"}.icon-magnifier-add:before{content:"\e091"}.icon-magnifier-remove:before{content:"\e092"}.icon-paper-clip:before{content:"\e093"}.icon-paper-plane:before{content:"\e094"}.icon-plus:before{content:"\e095"}.icon-pointer:before{content:"\e096"}.icon-power:before{content:"\e097"}.icon-refresh:before{content:"\e098"}.icon-reload:before{content:"\e099"}.icon-settings:before{content:"\e09a"}.icon-star:before{content:"\e09b"}.icon-symbol-female:before{content:"\e09c"}.icon-symbol-male:before{content:"\e09d"}.icon-target:before{content:"\e09e"}.icon-volume-1:before{content:"\e09f"}.icon-volume-2:before{content:"\e0a0"}.icon-volume-off:before{content:"\e0a1"}.icon-users:before{content:"\e001"} - -html{background-color:#f0f3f4}body{font-family:"Source Sans Pro","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased;line-height:1.42857143;color:#58666e;background-color:transparent}*:focus{outline:0!important}.h1,.h2,.h3,.h4,.h5,.h6{margin:0}a{color:#363f44;text-decoration:none;cursor:pointer}a:hover,a:focus{color:#141719;text-decoration:none}label{font-weight:normal}small,.small{font-size:13px}.badge,.label{font-weight:bold;text-shadow:0 1px 0 rgba(0,0,0,0.2)}.badge.bg-light,.label.bg-light{text-shadow:none}.badge{background-color:#cfdadd}.badge.up{position:relative;top:-10px;padding:3px 6px;margin-left:-10px}.badge-sm{padding:2px 5px!important;font-size:85%}.label-sm{padding-top:0;padding-bottom:1px}.badge-white{padding:2px 6px;background-color:transparent;border:1px solid rgba(255,255,255,0.35)}.badge-empty{color:inherit;background-color:transparent;border:1px solid rgba(0,0,0,0.15)}blockquote{border-color:#dee5e7}.caret-white{border-top-color:#fff;border-top-color:rgba(255,255,255,0.65)}a:hover .caret-white{border-top-color:#fff}.thumbnail{border-color:#dee5e7}.progress{background-color:#edf1f2}.progress-xxs{height:2px}.progress-xs{height:6px}.progress-sm{height:12px}.progress-sm .progress-bar{font-size:10px;line-height:1em}.progress,.progress-bar{-webkit-box-shadow:none;box-shadow:none}.progress-bar-primary{background-color:#7266ba}.progress-bar-info{background-color:#23b7e5}.progress-bar-success{background-color:#27c24c}.progress-bar-warning{background-color:#fad733}.progress-bar-danger{background-color:#f05050}.progress-bar-black{background-color:#1c2b36}.progress-bar-white{background-color:#fff}.accordion-group,.accordion-inner{border-color:#dee5e7;border-radius:2px}.alert{font-size:13px;box-shadow:inset 0 1px 0 rgba(255,255,255,0.2)}.alert .close i{display:block;font-size:12px;font-weight:normal}.form-control{border-color:#cfdadd;border-radius:2px}.form-control,.form-control:focus{-webkit-box-shadow:none;box-shadow:none}.form-control:focus{border-color:#23b7e5}.form-horizontal .control-label.text-left{text-align:left}.form-control-spin{position:absolute;top:50%;right:10px;z-index:2;margin-top:-7px}.input-lg{height:45px}.input-group-addon{background-color:#edf1f2;border-color:#cfdadd}.list-group{border-radius:2px}.list-group.no-radius .list-group-item{border-radius:0!important}.list-group.no-borders .list-group-item{border:0}.list-group.no-border .list-group-item{border-width:1px 0}.list-group.no-bg .list-group-item{background-color:transparent}.list-group-item{padding-right:15px;border-color:#e7ecee}a.list-group-item:hover,a.list-group-item:focus,a.list-group-item.hover{background-color:#f6f8f8}.list-group-item.media{margin-top:0}.list-group-item.active{color:#fff;background-color:#23b7e5!important;border-color:#23b7e5!important}.list-group-item.active .text-muted{color:#ace4f5!important}.list-group-item.active a{color:#fff}.list-group-item.focus{background-color:#e4eaec!important}.list-group-item.select{position:relative;z-index:1;background-color:#dbeef9!important;border-color:#c5e4f5}.list-group-alt .list-group-item:nth-child(2n+2){background-color:rgba(0,0,0,0.02)!important}.list-group-lg .list-group-item{padding-top:15px;padding-bottom:15px}.list-group-sm .list-group-item{padding:6px 10px}.list-group-sp .list-group-item{margin-bottom:5px;border-radius:3px}.list-group-item>.badge{margin-right:0}.list-group-item>.fa-chevron-right{float:right;margin-top:4px;margin-right:-5px}.list-group-item>.fa-chevron-right+.badge{margin-right:5px}.nav-pills.no-radius>li>a{border-radius:0}.nav-pills>li.active>a{color:#fff!important;background-color:#23b7e5}.nav-pills>li.active>a:hover,.nav-pills>li.active>a:active{background-color:#19a9d5}.nav>li>a:hover,.nav>li>a:focus{background-color:#f6f8f8}.nav.nav-lg>li>a{padding:20px 20px}.nav.nav-md>li>a{padding:15px 15px}.nav.nav-sm>li>a{padding:6px 12px}.nav.nav-xs>li>a{padding:4px 10px}.nav.nav-xxs>li>a{padding:1px 10px}.nav.nav-rounded>li>a{border-radius:20px}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#f6f8f8}.nav-tabs{border-color:#dee5e7}.nav-tabs>li>a{border-bottom-color:#dee5e7;border-radius:2px 2px 0 0}.nav-tabs>li:hover>a,.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover{border-color:#dee5e7}.nav-tabs>li.active>a{border-bottom-color:#fff!important}.nav-tabs-alt .nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs-alt .nav-tabs>li>a{background:transparent!important;border-color:transparent!important;border-bottom-color:#dee5e7!important;border-radius:0}.nav-tabs-alt .nav-tabs>li.active>a{border-bottom-color:#23b7e5!important}.tab-container{margin-bottom:15px}.tab-container .tab-content{padding:15px;background-color:#fff;border:1px solid #dee5e7;border-top-width:0;border-radius:0 0 2px 2px}.pagination>li>a{border-color:#dee5e7}.pagination>li>a:hover,.pagination>li>a:focus{background-color:#edf1f2;border-color:#dee5e7}.panel{border-radius:2px}.panel .accordion-toggle{display:block;font-size:14px;cursor:pointer}.panel .list-group-item{border-color:#edf1f2}.panel.no-borders{border-width:0}.panel.no-borders .panel-heading,.panel.no-borders .panel-footer{border-width:0}.panel-heading{border-radius:2px 2px 0 0}.panel-default .panel-heading{background-color:#f6f8f8}.panel-heading.no-border{margin:-1px -1px 0 -1px;border:0}.panel-heading .nav{margin:-10px -15px}.panel-heading .list-group{background:transparent}.panel-footer{background-color:#fff;border-color:#edf1f2;border-radius:0 0 2px 2px}.panel-default{border-color:#dee5e7}.panel-default>.panel-heading,.panel-default>.panel-footer{border-color:#edf1f2}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #eaedef}.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px 15px;border-top:1px solid #eaeff0}.table>thead>tr>th{padding:8px 15px;border-bottom:1px solid #eaeff0}.table-bordered{border-color:#eaeff0}.table-bordered>tbody>tr>td{border-color:#eaeff0}.table-bordered>thead>tr>th{border-color:#eaeff0}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#fafbfc}.table-striped>thead>th{background-color:#fafbfc;border-right:1px solid #eaeff0}.table-striped>thead>th:last-child{border-right:0}.well,pre{background-color:#edf1f2;border-color:#dee5e7}.dropdown-menu{border:1px solid #dee5e7;border:1px solid rgba(0,0,0,0.1);border-radius:2px;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.1);box-shadow:0 2px 6px rgba(0,0,0,0.1)}.dropdown-menu.pull-left{left:100%}.dropdown-menu>.panel{margin:-5px 0;border:0}.dropdown-menu>li>a{padding:5px 15px}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#141719;background-color:#edf1f2!important;background-image:none;filter:none}.dropdown-header{padding:5px 15px}.dropdown-submenu{position:relative}.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{color:#58666e;background-color:#edf1f2!important}.dropdown-submenu:hover>.dropdown-menu,.dropdown-submenu:focus>.dropdown-menu{display:block}.dropdown-submenu.pull-left{float:none!important}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px}.dropdown-submenu .dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0}.btn-group>.btn{margin-left:-1px}.col-lg-2-4{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-0{clear:left}.row.no-gutter{margin-right:0;margin-left:0}.no-gutter [class*="col"]{padding:0}.row-sm{margin-right:-10px;margin-left:-10px}.row-sm>div{padding-right:10px;padding-left:10px}.modal-backdrop{background-color:#3a3f51}.modal-backdrop.in{opacity:.8;filter:alpha(opacity=80)}.modal-over{position:fixed;top:0;right:0;bottom:0;left:0}.modal-center{position:absolute;top:50%;left:50%}html,body{width:100%;height:100%}body{overflow-x:hidden}.app{position:relative;width:100%;height:auto;min-height:100%}.app:before{position:absolute;top:0;bottom:0;z-index:-1;display:block;width:inherit;background-color:#f0f3f4;border:inherit;content:""}.app-header-fixed{padding-top:50px}.app-header-fixed .app-header{position:fixed;top:0;width:100%}.app-header{z-index:1025;border-radius:0}.app-aside{float:left}.app-aside:before{position:absolute;top:0;bottom:0;z-index:-1;width:inherit;background-color:inherit;border:inherit;content:""}.app-aside-footer{position:absolute;bottom:0;z-index:1000;width:100%;max-width:200px}.app-aside-folded .app-aside-footer{max-width:60px}.app-aside-footer~div{padding-bottom:50px}.app-aside-right{padding-bottom:50px}.app-content{height:100%}.app-content:before,.app-content:after{display:table;content:" "}.app-content:after{clear:both}.app-content-full{position:absolute;top:50px;bottom:50px;width:auto!important;height:auto;padding:0!important;overflow-y:auto;-webkit-overflow-scrolling:touch}.app-content-full.h-full{bottom:0;height:auto}.app-content-body{float:left;width:100%;padding-bottom:50px}.app-footer{position:absolute;right:0;bottom:0;left:0;z-index:1005}.app-footer.app-footer-fixed{position:fixed}.hbox{display:table;width:100%;height:100%;border-spacing:0;table-layout:fixed}.hbox .col{display:table-cell;float:none;height:100%;vertical-align:top}.v-middle{vertical-align:middle!important}.v-top{vertical-align:top!important}.v-bottom{vertical-align:bottom!important}.vbox{position:relative;display:table;width:100%;height:100%;min-height:240px;border-spacing:0}.vbox .row-row{display:table-row;height:100%}.vbox .row-row .cell{position:relative;width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.ie .vbox .row-row .cell{display:table-cell}.vbox .row-row .cell .cell-inner{position:absolute;top:0;right:0;bottom:0;left:0}.navbar{margin:0;border-width:0;border-radius:0}.navbar .navbar-form-sm{margin-top:10px;margin-bottom:10px}.navbar-md{min-height:60px}.navbar-md .navbar-btn{margin-top:13px}.navbar-md .navbar-form{margin-top:15px}.navbar-md .navbar-nav>li>a{padding-top:20px;padding-bottom:20px}.navbar-md .navbar-brand{line-height:60px}.navbar-header>button{padding:10px 17px;font-size:16px;line-height:30px;text-decoration:none;background-color:transparent;border:0}.navbar-brand{display:inline-block;float:none;height:auto;padding:0 20px;font-size:20px;font-weight:700;line-height:50px;text-align:center}.navbar-brand:hover{text-decoration:none}.navbar-brand img{display:inline;max-height:20px;margin-top:-4px;vertical-align:middle}@media(min-width:768px){.app-aside,.navbar-header{width:200px}.navbar-collapse,.app-content,.app-footer{margin-left:200px}.app-aside-right{position:absolute;top:50px;right:0;bottom:0;z-index:1000}.app-aside-right.pos-fix{z-index:1010}.visible-folded{display:none}.app-aside-folded .hidden-folded{display:none!important}.app-aside-folded .visible-folded{display:inherit}.app-aside-folded .text-center-folded{text-align:center}.app-aside-folded .pull-none-folded{float:none!important}.app-aside-folded .w-auto-folded{width:auto}.app-aside-folded .app-aside,.app-aside-folded .navbar-header{width:60px}.app-aside-folded .navbar-collapse,.app-aside-folded .app-content,.app-aside-folded .app-footer{margin-left:60px}.app-aside-folded .app-header .navbar-brand{display:block;padding:0}.app-aside-fixed .app-header .navbar-header{position:fixed}.app-aside-fixed .aside-wrap{position:fixed;top:50px;bottom:0;left:0;z-index:1000;width:199px;overflow:hidden}.app-aside-fixed .aside-wrap .navi-wrap{position:relative;width:217px;height:100%;overflow-x:hidden;overflow-y:scroll;-webkit-overflow-scrolling:touch}.app-aside-fixed .aside-wrap .navi-wrap::-webkit-scrollbar{-webkit-appearance:none}.app-aside-fixed .aside-wrap .navi-wrap::-webkit-scrollbar:vertical{width:17px}.app-aside-fixed .aside-wrap .navi-wrap>*{width:200px}.smart .app-aside-fixed .aside-wrap .navi-wrap{width:200px}.app-aside-fixed.app-aside-folded .app-aside{position:fixed;top:0;bottom:0;z-index:1010}.app-aside-fixed.app-aside-folded .aside-wrap{width:59px}.app-aside-fixed.app-aside-folded .aside-wrap .navi-wrap{width:77px}.app-aside-fixed.app-aside-folded .aside-wrap .navi-wrap>*{width:60px}.smart .app-aside-fixed.app-aside-folded .aside-wrap .navi-wrap{width:60px}.bg-auto:before{position:absolute;top:0;bottom:0;z-index:-1;width:inherit;background-color:inherit;border:inherit;content:""}.bg-auto.b-l:before{margin-left:-1px}.bg-auto.b-r:before{margin-right:-1px}.col.show{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.hbox-auto-sm{display:block}.hbox-auto-sm>.col{display:block;width:auto;height:auto}.hbox-auto-sm>.col.show{display:block!important}}@media(max-width:767px){.app-aside{float:none}.app-content-full{width:100%!important}.hbox-auto-xs{display:block}.hbox-auto-xs>.col{display:block;width:auto;height:auto}.navbar-nav{margin-top:0;margin-bottom:0}.navbar-nav>li>a{box-shadow:0 -1px 0 rgba(0,0,0,0.1)}.navbar-nav>li>a .up{top:0}.navbar-nav>li>a .avatar{width:30px;margin-top:-5px}.navbar-nav .open .dropdown-menu{background-color:#fff}.navbar-form{margin-top:0!important;margin-bottom:0!important;box-shadow:0 -1px 0 rgba(0,0,0,0.1)}.navbar-form .form-group{margin-bottom:0}}html{background:url('/static/img/bg.jpg');background-attachment:fixed;background-size:cover}.app.container{padding-right:0;padding-left:0}@media(min-width:768px){.app.container{width:750px;-webkit-box-shadow:0 0 30px rgba(0,0,0,0.3);box-shadow:0 0 30px rgba(0,0,0,0.3)}.app.container .app-aside{overflow-x:hidden}.app.container.app-aside-folded .app-aside{overflow-x:visible}.app.container.app-aside-fixed .aside-wrap{left:inherit}.app.container.app-aside-fixed.app-aside-folded .app-aside>ul.nav{position:absolute}.app.container .app-header,.app.container .app-aside{max-width:750px}.app.container .app-footer-fixed{right:auto;left:auto;width:100%;max-width:550px}.app.container.app-aside-folded .app-footer-fixed{max-width:690px}.app.container.app-aside-dock .app-footer-fixed{max-width:750px}}@media(min-width:992px){.app.container{width:970px}.app.container .app-header,.app.container .app-aside{max-width:970px}.app.container .app-footer-fixed{max-width:770px}.app.container.app-aside-folded .app-footer-fixed{max-width:910px}.app.container.app-aside-dock .app-footer-fixed{max-width:970px}}@media(min-width:1200px){.app.container{width:1170px}.app.container .app-header,.app.container .app-aside{max-width:1170px}.app.container .app-footer-fixed{max-width:970px}.app.container.app-aside-folded .app-footer-fixed{max-width:1110px}.app.container.app-aside-dock .app-footer-fixed{max-width:1170px}}.nav-sub{height:0;margin-left:-20px;overflow:hidden;opacity:0;-webkit-transition:all .2s ease-in-out 0s;transition:all .2s ease-in-out 0s}.active>.nav-sub,.app-aside-folded li:hover>.nav-sub,.app-aside-folded li:focus>.nav-sub,.app-aside-folded li:active>.nav-sub{height:auto!important;margin-left:0;overflow:auto;opacity:1}.nav-sub-header{display:none!important}.nav-sub-header a{padding:15px 20px}.navi ul.nav li{position:relative;display:block}.navi ul.nav li li a{padding-left:55px}.navi ul.nav li li ul{display:none}.navi ul.nav li li.active>ul{display:block}.navi ul.nav li a{position:relative;display:block;padding:10px 20px;font-weight:normal;text-transform:none;-webkit-transition:background-color .2s ease-in-out 0s;transition:background-color .2s ease-in-out 0s}.navi ul.nav li a .badge,.navi ul.nav li a .label{padding:2px 5px;margin-top:2px;font-size:11px}.navi ul.nav li a>i{position:relative;float:left;width:40px;margin:-10px -10px;margin-right:5px;overflow:hidden;line-height:40px;text-align:center}.navi ul.nav li a>i:before{position:relative;z-index:2}@media(min-width:768px){.app-aside-folded .nav-sub-header{display:block!important}.app-aside-folded .nav-sub-header a{padding:15px 20px!important}.app-aside-folded .navi>ul>li>a{position:relative;height:50px;padding:0;text-align:center;border:0}.app-aside-folded .navi>ul>li>a span{display:none}.app-aside-folded .navi>ul>li>a span.pull-right{display:none!important}.app-aside-folded .navi>ul>li>a i{display:block;float:none;width:auto;margin:0;font-size:16px;line-height:50px;border:none!important}.app-aside-folded .navi>ul>li>a i b{left:0!important}.app-aside-folded .navi>ul>li>a .badge,.app-aside-folded .navi>ul>li>a .label{position:absolute;top:8px;right:12px;z-index:3}.app-aside-folded .navi>ul>li>ul{position:absolute;top:0!important;left:100%;z-index:1050;width:200px;height:0!important;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.1);box-shadow:0 2px 6px rgba(0,0,0,0.1)}.app-aside-folded .navi li li a{padding-left:20px!important}.app-aside-folded.app-aside-fixed .app-aside>ul.nav{position:fixed;left:80px;z-index:1010;display:block;width:260px;height:auto;overflow:visible;overflow-y:auto;opacity:1;-webkit-overflow-scrolling:touch}.app-aside-folded.app-aside-fixed .app-aside>ul.nav:before{position:absolute;top:0;left:-60px;width:60px;height:50px;content:""}.app-aside-folded.app-aside-fixed .app-aside>ul.nav a{padding-right:20px!important;padding-left:20px!important}}@media(max-width:767px){.app{overflow-x:hidden}.app-content{-webkit-transition:-webkit-transform .2s ease;-moz-transition:-moz-transform .2s ease;-o-transition:-o-transform .2s ease;transition:transform .2s ease}.off-screen{position:absolute;top:50px;bottom:0;z-index:1010;display:block!important;width:75%;overflow-x:hidden;overflow-y:auto;visibility:visible;-webkit-overflow-scrolling:touch}.off-screen+*{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1015;width:100%;padding-top:50px;overflow:hidden;background-color:#f0f3f4;-webkit-transform:translate3d(75%,0,0);transform:translate3d(75%,0,0);-webkit-transition:-webkit-transform .2s ease;-moz-transition:-moz-transform .2s ease;-o-transition:-o-transform .2s ease;transition:transform .2s ease;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.off-screen+* .off-screen-toggle{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1020;display:block!important}.off-screen.pull-right{right:0}.off-screen.pull-right+*{-webkit-transform:translate3d(-75%,0,0);transform:translate3d(-75%,0,0)}}@media(min-width:992px){.app-aside-dock .app-content,.app-aside-dock .app-footer{margin-left:0}.app-aside-dock .app-aside-footer~div{padding-bottom:0}.app-aside-dock.app-aside-fixed.app-header-fixed{padding-top:115px}.app-aside-dock.app-aside-fixed .app-aside{position:fixed;top:50px;z-index:1000;width:100%}.app-aside-dock .app-aside,.app-aside-dock .aside-wrap,.app-aside-dock .navi-wrap{position:relative;top:0;float:none;width:100%!important;overflow:visible!important}.app-aside-dock .navi-wrap>*{width:auto!important}.app-aside-dock .app-aside{bottom:auto!important}.app-aside-dock .app-aside.b-r{border-bottom:1px solid #dee5e7;border-right-width:0}.app-aside-dock .app-aside:before{display:none}.app-aside-dock .app-aside nav>.nav{float:left}.app-aside-dock .app-aside .hidden-folded,.app-aside-dock .app-aside .line,.app-aside-dock .app-aside .navi-wrap>div{display:none!important}.app-aside-dock .app-aside .navi>ul>li{position:relative;display:inline-block;float:left}.app-aside-dock .app-aside .navi>ul>li>a{height:auto;padding:10px 15px 12px 15px;text-align:center}.app-aside-dock .app-aside .navi>ul>li>a>.badge,.app-aside-dock .app-aside .navi>ul>li>a>.label{position:absolute;top:5px;right:8px;padding:1px 4px}.app-aside-dock .app-aside .navi>ul>li>a>i{display:block;float:none;width:40px;margin-top:-10px;margin-right:auto;margin-bottom:-7px;margin-left:auto;font-size:14px;line-height:40px}.app-aside-dock .app-aside .navi>ul>li>a>span.pull-right{position:absolute;bottom:2px;left:50%;display:block!important;margin-left:-6px;line-height:1}.app-aside-dock .app-aside .navi>ul>li>a>span.pull-right i{width:12px;font-size:12px;line-height:12px}.app-aside-dock .app-aside .navi>ul>li>a>span.pull-right i.text{line-height:14px;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.app-aside-dock .app-aside .navi>ul>li>a>span{display:block;font-weight:normal}.app-aside-dock .app-aside .navi>ul>li .nav-sub{position:absolute;top:auto!important;left:0;z-index:1050;display:none;width:200px;height:auto!important;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.1);box-shadow:0 2px 6px rgba(0,0,0,0.1)}.app-aside-dock .app-aside .navi>ul>li .nav-sub-header{display:none!important}.app-aside-dock .app-aside .navi li li a{padding-left:15px}.app-aside-dock .app-aside .navi li:hover>.nav-sub,.app-aside-dock .app-aside .navi li:focus>.nav-sub,.app-aside-dock .app-aside .navi li:active>.nav-sub{display:block;height:auto!important;margin-left:0;overflow:auto;opacity:1}}.arrow{z-index:10;border-width:9px}.arrow,.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.arrow:after{border-width:8px;content:""}.arrow.top{top:-9px;left:50%;margin-left:-9px;border-bottom-color:rgba(0,0,0,0.1);border-top-width:0}.arrow.top:after{top:1px;margin-left:-8px;border-bottom-color:#fff;border-top-width:0}.arrow.top.arrow-primary:after{border-bottom-color:#7266ba}.arrow.top.arrow-info:after{border-bottom-color:#23b7e5}.arrow.top.arrow-success:after{border-bottom-color:#27c24c}.arrow.top.arrow-danger:after{border-bottom-color:#f05050}.arrow.top.arrow-warning:after{border-bottom-color:#fad733}.arrow.top.arrow-light:after{border-bottom-color:#edf1f2}.arrow.top.arrow-dark:after{border-bottom-color:#3a3f51}.arrow.top.arrow-black:after{border-bottom-color:#1c2b36}.arrow.right{top:50%;right:-9px;margin-top:-9px;border-left-color:rgba(0,0,0,0.1);border-right-width:0}.arrow.right:after{right:1px;bottom:-8px;border-left-color:#fff;border-right-width:0}.arrow.right.arrow-primary:after{border-left-color:#7266ba}.arrow.right.arrow-info:after{border-left-color:#23b7e5}.arrow.right.arrow-success:after{border-left-color:#27c24c}.arrow.right.arrow-danger:after{border-left-color:#f05050}.arrow.right.arrow-warning:after{border-left-color:#fad733}.arrow.right.arrow-light:after{border-left-color:#edf1f2}.arrow.right.arrow-dark:after{border-left-color:#3a3f51}.arrow.right.arrow-black:after{border-left-color:#1c2b36}.arrow.bottom{bottom:-9px;left:50%;margin-left:-9px;border-top-color:rgba(0,0,0,0.1);border-bottom-width:0}.arrow.bottom:after{bottom:1px;margin-left:-8px;border-top-color:#fff;border-bottom-width:0}.arrow.bottom.arrow-primary:after{border-top-color:#7266ba}.arrow.bottom.arrow-info:after{border-top-color:#23b7e5}.arrow.bottom.arrow-success:after{border-top-color:#27c24c}.arrow.bottom.arrow-danger:after{border-top-color:#f05050}.arrow.bottom.arrow-warning:after{border-top-color:#fad733}.arrow.bottom.arrow-light:after{border-top-color:#edf1f2}.arrow.bottom.arrow-dark:after{border-top-color:#3a3f51}.arrow.bottom.arrow-black:after{border-top-color:#1c2b36}.arrow.left{top:50%;left:-9px;margin-top:-9px;border-right-color:rgba(0,0,0,0.1);border-left-width:0}.arrow.left:after{bottom:-8px;left:1px;border-right-color:#fff;border-left-width:0}.arrow.left.arrow-primary:after{border-right-color:#7266ba}.arrow.left.arrow-info:after{border-right-color:#23b7e5}.arrow.left.arrow-success:after{border-right-color:#27c24c}.arrow.left.arrow-danger:after{border-right-color:#f05050}.arrow.left.arrow-warning:after{border-right-color:#fad733}.arrow.left.arrow-light:after{border-right-color:#edf1f2}.arrow.left.arrow-dark:after{border-right-color:#3a3f51}.arrow.left.arrow-black:after{border-right-color:#1c2b36}.arrow.pull-left{left:19px}.arrow.pull-right{right:19px;left:auto}.arrow.pull-up{top:19px}.arrow.pull-down{top:auto;bottom:19px}.btn{font-weight:500;border-radius:2px;outline:0!important}.btn-link{color:#58666e}.btn-link.active{box-shadow:none;webkit-box-shadow:none}.btn-default{color:#58666e!important;background-color:#fcfdfd;background-color:#fff;border-color:#dee5e7;border-bottom-color:#d8e1e3;-webkit-box-shadow:0 1px 1px rgba(90,90,90,0.1);box-shadow:0 1px 1px rgba(90,90,90,0.1)}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#58666e!important;background-color:#edf1f2;border-color:#c7d3d6}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fcfdfd;border-color:#dee5e7}.btn-default.btn-bg{border-color:rgba(0,0,0,0.1);background-clip:padding-box}.btn-primary{color:#fff!important;background-color:#7266ba;border-color:#7266ba}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff!important;background-color:#6254b2;border-color:#5a4daa}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#7266ba;border-color:#7266ba}.btn-success{color:#fff!important;background-color:#27c24c;border-color:#27c24c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff!important;background-color:#23ad44;border-color:#20a03f}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#27c24c;border-color:#27c24c}.btn-info{color:#fff!important;background-color:#23b7e5;border-color:#23b7e5}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff!important;background-color:#19a9d5;border-color:#189ec8}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#23b7e5;border-color:#23b7e5}.btn-warning{color:#fff!important;background-color:#fad733;border-color:#fad733}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff!important;background-color:#f9d21a;border-color:#f9cf0b}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#fad733;border-color:#fad733}.btn-danger{color:#fff!important;background-color:#f05050;border-color:#f05050}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff!important;background-color:#ee3939;border-color:#ed2a2a}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#f05050;border-color:#f05050}.btn-dark{color:#fff!important;background-color:#3a3f51;border-color:#3a3f51}.btn-dark:hover,.btn-dark:focus,.btn-dark:active,.btn-dark.active,.open .dropdown-toggle.btn-dark{color:#fff!important;background-color:#2f3342;border-color:#292d39}.btn-dark:active,.btn-dark.active,.open .dropdown-toggle.btn-dark{background-image:none}.btn-dark.disabled,.btn-dark[disabled],fieldset[disabled] .btn-dark,.btn-dark.disabled:hover,.btn-dark[disabled]:hover,fieldset[disabled] .btn-dark:hover,.btn-dark.disabled:focus,.btn-dark[disabled]:focus,fieldset[disabled] .btn-dark:focus,.btn-dark.disabled:active,.btn-dark[disabled]:active,fieldset[disabled] .btn-dark:active,.btn-dark.disabled.active,.btn-dark[disabled].active,fieldset[disabled] .btn-dark.active{background-color:#3a3f51;border-color:#3a3f51}.btn-black{color:#fff!important;background-color:#1c2b36;border-color:#1c2b36}.btn-black:hover,.btn-black:focus,.btn-black:active,.btn-black.active,.open .dropdown-toggle.btn-black{color:#fff!important;background-color:#131e25;border-color:#0e161b}.btn-black:active,.btn-black.active,.open .dropdown-toggle.btn-black{background-image:none}.btn-black.disabled,.btn-black[disabled],fieldset[disabled] .btn-black,.btn-black.disabled:hover,.btn-black[disabled]:hover,fieldset[disabled] .btn-black:hover,.btn-black.disabled:focus,.btn-black[disabled]:focus,fieldset[disabled] .btn-black:focus,.btn-black.disabled:active,.btn-black[disabled]:active,fieldset[disabled] .btn-black:active,.btn-black.disabled.active,.btn-black[disabled].active,fieldset[disabled] .btn-black.active{background-color:#1c2b36;border-color:#1c2b36}.btn-icon{width:34px;height:34px;padding:0!important;text-align:center}.btn-icon i{position:relative;top:-1px;line-height:34px}.btn-icon.btn-sm{width:30px;height:30px}.btn-icon.btn-sm i{line-height:30px}.btn-icon.btn-lg{width:45px;height:45px}.btn-icon.btn-lg i{line-height:45px}.btn-rounded{padding-right:15px;padding-left:15px;border-radius:50px}.btn-rounded.btn-lg{padding-right:25px;padding-left:25px}.btn>i.pull-left,.btn>i.pull-right{line-height:1.42857143}.btn-block{padding-right:12px;padding-left:12px}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:2px}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:2px}.btn-addon i{position:relative;float:left;width:34px;height:34px;margin:-7px -12px;margin-right:12px;line-height:34px;text-align:center;background-color:rgba(0,0,0,0.1);border-radius:2px 0 0 2px}.btn-addon i.pull-right{margin-right:-12px;margin-left:12px;border-radius:0 2px 2px 0}.btn-addon.btn-sm i{width:30px;height:30px;margin:-6px -10px;margin-right:10px;line-height:30px}.btn-addon.btn-sm i.pull-right{margin-right:-10px;margin-left:10px}.btn-addon.btn-lg i{width:45px;height:45px;margin:-11px -16px;margin-right:16px;line-height:45px}.btn-addon.btn-lg i.pull-right{margin-right:-16px;margin-left:16px}.btn-addon.btn-default i{background-color:transparent;border-right:1px solid #dee5e7}.btn-groups .btn{margin-bottom:5px}.list-icon i{display:inline-block;width:40px;margin:0;font-size:14px;text-align:center;vertical-align:middle;-webkit-transition:font-size .2s;transition:font-size .2s}.list-icon div{line-height:40px;white-space:nowrap}.list-icon div:hover i{font-size:26px}.settings{position:fixed;top:120px;right:-240px;z-index:1050;width:240px;-webkit-transition:right .2s;transition:right .2s}.settings.active{right:-1px}.settings>.btn{position:absolute;top:-1px;left:-42px;padding:10px 15px;background:#f6f8f8!important;border-color:#dee5e7;border-right-width:0}.settings .i-checks span b{display:inline-block;float:left;width:50%;height:20px}.settings .i-checks span b.header{height:10px}.streamline{position:relative;border-color:#dee5e7}.streamline .sl-item:after,.streamline:after{position:absolute;bottom:0;left:0;width:9px;height:9px;margin-left:-5px;background-color:#fff;border-color:inherit;border-style:solid;border-width:1px;border-radius:10px;content:''}.sl-item{position:relative;padding-bottom:1px;border-color:#dee5e7}.sl-item:before,.sl-item:after{display:table;content:" "}.sl-item:after{clear:both}.sl-item:after{top:6px;bottom:auto}.sl-item.b-l{margin-left:-1px}.timeline{padding:0;margin:0}.tl-item{display:block}.tl-item:before,.tl-item:after{display:table;content:" "}.tl-item:after{clear:both}.visible-left{display:none}.tl-wrap{display:block;padding:15px 0 15px 20px;margin-left:6em;border-color:#dee5e7;border-style:solid;border-width:0 0 0 4px}.tl-wrap:before,.tl-wrap:after{display:table;content:" "}.tl-wrap:after{clear:both}.tl-wrap:before{position:relative;top:15px;float:left;width:10px;height:10px;margin-left:-27px;background:#edf1f2;border-color:inherit;border-style:solid;border-width:3px;border-radius:50%;content:"";box-shadow:0 0 0 4px #f0f3f4}.tl-wrap:hover:before{background:transparent;border-color:#fff}.tl-date{position:relative;top:10px;display:block;float:left;width:4.5em;margin-left:-7.5em;text-align:right}.tl-content{position:relative;display:inline-block;padding-top:10px;padding-bottom:10px}.tl-content.block{display:block;width:100%}.tl-content.panel{margin-bottom:0}.tl-header{display:block;width:12em;margin-left:2px;text-align:center}.timeline-center .tl-item{margin-left:50%}.timeline-center .tl-item .tl-wrap{margin-left:-2px}.timeline-center .tl-header{width:auto;margin:0}.timeline-center .tl-left{margin-right:50%;margin-left:0}.timeline-center .tl-left .hidden-left{display:none!important}.timeline-center .tl-left .visible-left{display:inherit}.timeline-center .tl-left .tl-wrap{float:right;padding-right:20px;padding-left:0;margin-right:-2px;border-right-width:4px;border-left-width:0}.timeline-center .tl-left .tl-wrap:before{float:right;margin-right:-27px;margin-left:0}.timeline-center .tl-left .tl-date{float:right;margin-right:-8.5em;margin-left:0;text-align:left}.i-switch{position:relative;display:inline-block;width:35px;height:20px;margin:0;cursor:pointer;background-color:#27c24c;border-radius:30px}.i-switch input{position:absolute;opacity:0;filter:alpha(opacity=0)}.i-switch input:checked+i:before{top:50%;right:5px;bottom:50%;left:50%;border-width:0;border-radius:5px}.i-switch input:checked+i:after{margin-left:16px}.i-switch i:before{position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;background-color:#fff;border:1px solid #f0f0f0;border-radius:30px;content:"";-webkit-transition:all .2s;transition:all .2s}.i-switch i:after{position:absolute;top:1px;bottom:1px;width:18px;background-color:#fff;border-radius:50%;content:"";-webkit-box-shadow:1px 1px 3px rgba(0,0,0,0.25);box-shadow:1px 1px 3px rgba(0,0,0,0.25);-webkit-transition:margin-left .3s;transition:margin-left .3s}.i-switch-md{width:40px;height:24px}.i-switch-md input:checked+i:after{margin-left:17px}.i-switch-md i:after{width:22px}.i-switch-lg{width:50px;height:30px}.i-switch-lg input:checked+i:after{margin-left:21px}.i-switch-lg i:after{width:28px}.i-checks{padding-left:20px;cursor:pointer}.i-checks input{position:absolute;margin-left:-20px;opacity:0}.i-checks input:checked+i{border-color:#23b7e5}.i-checks input:checked+i:before{top:4px;left:4px;width:10px;height:10px;background-color:#23b7e5}.i-checks input:checked+span .active{display:inherit}.i-checks input[type="radio"]+i,.i-checks input[type="radio"]+i:before{border-radius:50%}.i-checks input[disabled]+i,fieldset[disabled] .i-checks input+i{border-color:#dee5e7}.i-checks input[disabled]+i:before,fieldset[disabled] .i-checks input+i:before{background-color:#dee5e7}.i-checks>i{position:relative;display:inline-block;width:20px;height:20px;margin-top:-2px;margin-right:4px;margin-left:-20px;line-height:1;vertical-align:middle;background-color:#fff;border:1px solid #cfdadd}.i-checks>i:before{position:absolute;top:50%;left:50%;width:0;height:0;background-color:transparent;content:"";-webkit-transition:all .2s;transition:all .2s}.i-checks>span{margin-left:-20px}.i-checks>span .active{display:none}.i-checks-sm input:checked+i:before{top:3px;left:3px;width:8px;height:8px}.i-checks-sm>i{width:16px;height:16px;margin-right:6px;margin-left:-18px}.i-checks-lg input:checked+i:before{top:8px;left:8px;width:12px;height:12px}.i-checks-lg>i{width:30px;height:30px}.datepicker{margin:0 5px}.datepicker .btn-default{border-width:0;box-shadow:none}.datepicker .btn[disabled]{opacity:.4}.datepicker .btn-info .text-info{color:#fff!important}.jqstooltip{padding:5px 10px!important;background-color:rgba(0,0,0,0.8)!important;border:solid 1px #000!important;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.easyPieChart{position:relative;text-align:center}.easyPieChart>div{position:relative;z-index:1}.easyPieChart>div .text{position:absolute;top:60%;width:100%;line-height:1}.easyPieChart>div img{margin-top:-4px}.easyPieChart canvas{position:absolute;top:0;left:0;z-index:0}#flotTip{z-index:100;padding:4px 10px;font-size:12px;color:#fff;background-color:rgba(0,0,0,0.8);border:solid 1px #000!important;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.legendColorBox>div{margin:5px;border:none!important}.legendColorBox>div>div{border-radius:10px}.sortable-placeholder{min-height:50px;margin-bottom:5px;list-style:none;border:1px dashed #CCC}.panel .dataTables_wrapper{padding-top:10px}.panel .dataTables_wrapper>.row{margin:0}.panel .dataTables_wrapper>.row>.col-sm-12{padding:0}.st-sort-ascent:before{content:'\25B2'}.st-sort-descent:before{content:'\25BC'}.st-selected td{background:#f0f9ec!important}.chosen-choices,.chosen-single,.bootstrap-tagsinput{border-color:#cfdadd!important;border-radius:2px!important}.bootstrap-tagsinput{padding:5px 12px!important}.item{position:relative}.item .top{position:absolute;top:0;left:0}.item .bottom{position:absolute;bottom:0;left:0}.item .center{position:absolute;top:50%}.item-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:none}.item-overlay.active,.item:hover .item-overlay{display:block}.form-validation .form-control.ng-dirty.ng-invalid{border-color:#f05050}.form-validation .form-control.ng-dirty.ng-valid,.form-validation .form-control.ng-dirty.ng-valid:focus{border-color:#27c24c}.form-validation .i-checks .ng-invalid.ng-dirty+i{border-color:#f05050}.ng-animate .bg-auto:before{display:none}[ui-view].ng-leave{display:none}[ui-view].ng-leave.smooth{display:block}.smooth.ng-animate{position:absolute;width:100%;height:100%;overflow:hidden}.fade-in-right-big.ng-enter{-webkit-animation:fadeInRightBig .5s;animation:fadeInRightBig .5s}.fade-in-right-big.ng-leave{-webkit-animation:fadeOutLeftBig .5s;animation:fadeOutLeftBig .5s}.fade-in-left-big.ng-enter{-webkit-animation:fadeInLeftBig .5s;animation:fadeInLeftBig .5s}.fade-in-left-big.ng-leave{-webkit-animation:fadeOutRightBig .5s;animation:fadeOutRightBig .5s}.fade-in-up-big.ng-enter{-webkit-animation:fadeInUpBig .5s;animation:fadeInUpBig .5s}.fade-in-up-big.ng-leave{-webkit-animation:fadeOutUpBig .5s;animation:fadeOutUpBig .5s}.fade-in-down-big.ng-enter{-webkit-animation:fadeInDownBig .5s;animation:fadeInDownBig .5s}.fade-in-down-big.ng-leave{-webkit-animation:fadeOutDownBig .5s;animation:fadeOutDownBig .5s}.fade-in.ng-enter{-webkit-animation:fadeIn .5s;animation:fadeIn .5s}.fade-in.ng-leave{-webkit-animation:fadeOut .5s;animation:fadeOut .5s}.fade-in-right.ng-enter{-webkit-animation:fadeInRight .5s;animation:fadeInRight .5s}.fade-in-right.ng-leave{-webkit-animation:fadeOutLeft .5s;animation:fadeOutLeft .5s}.fade-in-left.ng-enter{-webkit-animation:fadeInLeft .5s;animation:fadeInLeft .5s}.fade-in-left.ng-leave{-webkit-animation:fadeOutRight .5s;animation:fadeOutRight .5s}.fade-in-up.ng-enter{-webkit-animation:fadeInUp .5s;animation:fadeInUp .5s}.fade-in-up.ng-leave{-webkit-animation:fadeOutUp .5s;animation:fadeOutUp .5s}.fade-in-down.ng-enter{-webkit-animation:fadeInDown .5s;animation:fadeInDown .5s}.fade-in-down.ng-leave{-webkit-animation:fadeOutDown .5s;animation:fadeOutDown .5s}.bg-gd{background-image:-webkit-gradient(linear,left 0,left 100%,from(rgba(40,50,60,0)),to(rgba(40,50,60,0.075)));background-image:-webkit-linear-gradient(top,rgba(40,50,60,0),0,rgba(40,50,60,0.075),100%);background-image:-moz-linear-gradient(top,rgba(40,50,60,0) 0,rgba(40,50,60,0.075) 100%);background-image:linear-gradient(to bottom,rgba(40,50,60,0) 0,rgba(40,50,60,0.075) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0028323c',endColorstr='#1328323c',GradientType=0);filter:none}.bg-gd-dk{background-image:-webkit-gradient(linear,left 10%,left 100%,from(rgba(40,50,60,0)),to(rgba(40,50,60,0.5)));background-image:-webkit-linear-gradient(top,rgba(40,50,60,0),10%,rgba(40,50,60,0.5),100%);background-image:-moz-linear-gradient(top,rgba(40,50,60,0) 10%,rgba(40,50,60,0.5) 100%);background-image:linear-gradient(to bottom,rgba(40,50,60,0) 10%,rgba(40,50,60,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0028323c',endColorstr='#8028323c',GradientType=0);filter:none}.bg-light{color:#58666e;background-color:#edf1f2}.bg-light.lt,.bg-light .lt{background-color:#f3f5f6}.bg-light.lter,.bg-light .lter{background-color:#f6f8f8}.bg-light.dk,.bg-light .dk{background-color:#e4eaec}.bg-light.dker,.bg-light .dker{background-color:#dde6e9}.bg-light.bg,.bg-light .bg{background-color:#edf1f2}.bg-dark{color:#a6a8b1;background-color:#3a3f51}.bg-dark.lt,.bg-dark .lt{background-color:#474c5e}.bg-dark.lter,.bg-dark .lter{background-color:#54596a}.bg-dark.dk,.bg-dark .dk{background-color:#2e3344}.bg-dark.dker,.bg-dark .dker{background-color:#232735}.bg-dark.bg,.bg-dark .bg{background-color:#3a3f51}.bg-dark a{color:#c1c3c9}.bg-dark a:hover{color:#fff}.bg-dark a.list-group-item:hover,.bg-dark a.list-group-item:focus{background-color:inherit}.bg-dark .nav>li:hover>a,.bg-dark .nav>li:focus>a,.bg-dark .nav>li.active>a{color:#fff;background-color:#2e3344}.bg-dark .nav>li>a{color:#b4b6bd}.bg-dark .nav>li>a:hover,.bg-dark .nav>li>a:focus{background-color:#32374a}.bg-dark .nav .open>a{background-color:#2e3344}.bg-dark .caret{border-top-color:#a6a8b1;border-bottom-color:#a6a8b1}.bg-dark.navbar .nav>li.active>a{color:#fff;background-color:#2e3344}.bg-dark .open>a,.bg-dark .open>a:hover,.bg-dark .open>a:focus{color:#fff}.bg-dark .text-muted{color:#8b8e99!important}.bg-dark .text-lt{color:#eaebed!important}.bg-dark.auto .list-group-item,.bg-dark .auto .list-group-item{background-color:transparent;border-color:#2f3342!important}.bg-dark.auto .list-group-item:hover,.bg-dark .auto .list-group-item:hover,.bg-dark.auto .list-group-item:focus,.bg-dark .auto .list-group-item:focus,.bg-dark.auto .list-group-item:active,.bg-dark .auto .list-group-item:active,.bg-dark.auto .list-group-item.active,.bg-dark .auto .list-group-item.active{background-color:#2e3344!important}.bg-black{color:#7793a7;background-color:#1c2b36}.bg-black.lt,.bg-black .lt{background-color:#263845}.bg-black.lter,.bg-black .lter{background-color:#314554}.bg-black.dk,.bg-black .dk{background-color:#131e26}.bg-black.dker,.bg-black .dker{background-color:#0a1015}.bg-black.bg,.bg-black .bg{background-color:#1c2b36}.bg-black a{color:#96abbb}.bg-black a:hover{color:#fff}.bg-black a.list-group-item:hover,.bg-black a.list-group-item:focus{background-color:inherit}.bg-black .nav>li:hover>a,.bg-black .nav>li:focus>a,.bg-black .nav>li.active>a{color:#fff;background-color:#131e26}.bg-black .nav>li>a{color:#869fb1}.bg-black .nav>li>a:hover,.bg-black .nav>li>a:focus{background-color:#16232d}.bg-black .nav .open>a{background-color:#131e26}.bg-black .caret{border-top-color:#7793a7;border-bottom-color:#7793a7}.bg-black.navbar .nav>li.active>a{color:#fff;background-color:#131e26}.bg-black .open>a,.bg-black .open>a:hover,.bg-black .open>a:focus{color:#fff}.bg-black .text-muted{color:#5c798f!important}.bg-black .text-lt{color:#c4d0d9!important}.bg-black.auto .list-group-item,.bg-black .auto .list-group-item{background-color:transparent;border-color:#131e25!important}.bg-black.auto .list-group-item:hover,.bg-black .auto .list-group-item:hover,.bg-black.auto .list-group-item:focus,.bg-black .auto .list-group-item:focus,.bg-black.auto .list-group-item:active,.bg-black .auto .list-group-item:active,.bg-black.auto .list-group-item.active,.bg-black .auto .list-group-item.active{background-color:#131e26!important}.bg-primary{color:#f4f3f9;background-color:#7266ba}.bg-primary.lt,.bg-primary .lt{background-color:#847abf}.bg-primary.lter,.bg-primary .lter{background-color:#958dc6}.bg-primary.dk,.bg-primary .dk{background-color:#6051b5}.bg-primary.dker,.bg-primary .dker{background-color:#5244a9}.bg-primary.bg,.bg-primary .bg{background-color:#7266ba}.bg-primary a{color:#fff}.bg-primary a:hover{color:#fff}.bg-primary a.list-group-item:hover,.bg-primary a.list-group-item:focus{background-color:inherit}.bg-primary .nav>li:hover>a,.bg-primary .nav>li:focus>a,.bg-primary .nav>li.active>a{color:#fff;background-color:#6051b5}.bg-primary .nav>li>a{color:#f2f2f2}.bg-primary .nav>li>a:hover,.bg-primary .nav>li>a:focus{background-color:#6658b8}.bg-primary .nav .open>a{background-color:#6051b5}.bg-primary .caret{border-top-color:#f4f3f9;border-bottom-color:#f4f3f9}.bg-primary.navbar .nav>li.active>a{color:#fff;background-color:#6051b5}.bg-primary .open>a,.bg-primary .open>a:hover,.bg-primary .open>a:focus{color:#fff}.bg-primary .text-muted{color:#d6d3e6!important}.bg-primary .text-lt{color:#fff!important}.bg-primary.auto .list-group-item,.bg-primary .auto .list-group-item{background-color:transparent;border-color:#6254b2!important}.bg-primary.auto .list-group-item:hover,.bg-primary .auto .list-group-item:hover,.bg-primary.auto .list-group-item:focus,.bg-primary .auto .list-group-item:focus,.bg-primary.auto .list-group-item:active,.bg-primary .auto .list-group-item:active,.bg-primary.auto .list-group-item.active,.bg-primary .auto .list-group-item.active{background-color:#6051b5!important}.bg-success{color:#c6efd0;background-color:#27c24c}.bg-success.lt,.bg-success .lt{background-color:#31d257}.bg-success.lter,.bg-success .lter{background-color:#48d46a}.bg-success.dk,.bg-success .dk{background-color:#20af42}.bg-success.dker,.bg-success .dker{background-color:#1a9c39}.bg-success.bg,.bg-success .bg{background-color:#27c24c}.bg-success a{color:#eefaf1}.bg-success a:hover{color:#fff}.bg-success a.list-group-item:hover,.bg-success a.list-group-item:focus{background-color:inherit}.bg-success .nav>li:hover>a,.bg-success .nav>li:focus>a,.bg-success .nav>li.active>a{color:#fff;background-color:#20af42}.bg-success .nav>li>a{color:#daf5e0}.bg-success .nav>li>a:hover,.bg-success .nav>li>a:focus{background-color:#22b846}.bg-success .nav .open>a{background-color:#20af42}.bg-success .caret{border-top-color:#c6efd0;border-bottom-color:#c6efd0}.bg-success.navbar .nav>li.active>a{color:#fff;background-color:#20af42}.bg-success .open>a,.bg-success .open>a:hover,.bg-success .open>a:focus{color:#fff}.bg-success .text-muted{color:#9ee4af!important}.bg-success .text-lt{color:#fff!important}.bg-success.auto .list-group-item,.bg-success .auto .list-group-item{background-color:transparent;border-color:#23ad44!important}.bg-success.auto .list-group-item:hover,.bg-success .auto .list-group-item:hover,.bg-success.auto .list-group-item:focus,.bg-success .auto .list-group-item:focus,.bg-success.auto .list-group-item:active,.bg-success .auto .list-group-item:active,.bg-success.auto .list-group-item.active,.bg-success .auto .list-group-item.active{background-color:#20af42!important}.bg-info{color:#dcf2f8;background-color:#23b7e5}.bg-info.lt,.bg-info .lt{background-color:#3dbde5}.bg-info.lter,.bg-info .lter{background-color:#55c3e6}.bg-info.dk,.bg-info .dk{background-color:#16aad8}.bg-info.dker,.bg-info .dker{background-color:#1199c4}.bg-info.bg,.bg-info .bg{background-color:#23b7e5}.bg-info a{color:#fff}.bg-info a:hover{color:#fff}.bg-info a.list-group-item:hover,.bg-info a.list-group-item:focus{background-color:inherit}.bg-info .nav>li:hover>a,.bg-info .nav>li:focus>a,.bg-info .nav>li.active>a{color:#fff;background-color:#16aad8}.bg-info .nav>li>a{color:#f2f2f2}.bg-info .nav>li>a:hover,.bg-info .nav>li>a:focus{background-color:#17b2e2}.bg-info .nav .open>a{background-color:#16aad8}.bg-info .caret{border-top-color:#dcf2f8;border-bottom-color:#dcf2f8}.bg-info.navbar .nav>li.active>a{color:#fff;background-color:#16aad8}.bg-info .open>a,.bg-info .open>a:hover,.bg-info .open>a:focus{color:#fff}.bg-info .text-muted{color:#b0e1f1!important}.bg-info .text-lt{color:#fff!important}.bg-info.auto .list-group-item,.bg-info .auto .list-group-item{background-color:transparent;border-color:#19a9d5!important}.bg-info.auto .list-group-item:hover,.bg-info .auto .list-group-item:hover,.bg-info.auto .list-group-item:focus,.bg-info .auto .list-group-item:focus,.bg-info.auto .list-group-item:active,.bg-info .auto .list-group-item:active,.bg-info.auto .list-group-item.active,.bg-info .auto .list-group-item.active{background-color:#16aad8!important}.bg-warning{color:#fffefa;background-color:#fad733}.bg-warning.lt,.bg-warning .lt{background-color:#f8da4e}.bg-warning.lter,.bg-warning .lter{background-color:#f7de69}.bg-warning.dk,.bg-warning .dk{background-color:#fcd417}.bg-warning.dker,.bg-warning .dker{background-color:#face00}.bg-warning.bg,.bg-warning .bg{background-color:#fad733}.bg-warning a{color:#fff}.bg-warning a:hover{color:#fff}.bg-warning a.list-group-item:hover,.bg-warning a.list-group-item:focus{background-color:inherit}.bg-warning .nav>li:hover>a,.bg-warning .nav>li:focus>a,.bg-warning .nav>li.active>a{color:#fff;background-color:#fcd417}.bg-warning .nav>li>a{color:#f2f2f2}.bg-warning .nav>li>a:hover,.bg-warning .nav>li>a:focus{background-color:#fcd621}.bg-warning .nav .open>a{background-color:#fcd417}.bg-warning .caret{border-top-color:#fffefa;border-bottom-color:#fffefa}.bg-warning.navbar .nav>li.active>a{color:#fff;background-color:#fcd417}.bg-warning .open>a,.bg-warning .open>a:hover,.bg-warning .open>a:focus{color:#fff}.bg-warning .text-muted{color:#fbf2cb!important}.bg-warning .text-lt{color:#fff!important}.bg-warning.auto .list-group-item,.bg-warning .auto .list-group-item{background-color:transparent;border-color:#f9d21a!important}.bg-warning.auto .list-group-item:hover,.bg-warning .auto .list-group-item:hover,.bg-warning.auto .list-group-item:focus,.bg-warning .auto .list-group-item:focus,.bg-warning.auto .list-group-item:active,.bg-warning .auto .list-group-item:active,.bg-warning.auto .list-group-item.active,.bg-warning .auto .list-group-item.active{background-color:#fcd417!important}.bg-danger{color:#fff;background-color:#f05050}.bg-danger.lt,.bg-danger .lt{background-color:#f06a6a}.bg-danger.lter,.bg-danger .lter{background-color:#f18282}.bg-danger.dk,.bg-danger .dk{background-color:#f13636}.bg-danger.dker,.bg-danger .dker{background-color:#f21b1b}.bg-danger.bg,.bg-danger .bg{background-color:#f05050}.bg-danger a{color:#fff}.bg-danger a:hover{color:#fff}.bg-danger a.list-group-item:hover,.bg-danger a.list-group-item:focus{background-color:inherit}.bg-danger .nav>li:hover>a,.bg-danger .nav>li:focus>a,.bg-danger .nav>li.active>a{color:#fff;background-color:#f13636}.bg-danger .nav>li>a{color:#f2f2f2}.bg-danger .nav>li>a:hover,.bg-danger .nav>li>a:focus{background-color:#f13f3f}.bg-danger .nav .open>a{background-color:#f13636}.bg-danger .caret{border-top-color:#fff;border-bottom-color:#fff}.bg-danger.navbar .nav>li.active>a{color:#fff;background-color:#f13636}.bg-danger .open>a,.bg-danger .open>a:hover,.bg-danger .open>a:focus{color:#fff}.bg-danger .text-muted{color:#e6e6e6!important}.bg-danger .text-lt{color:#fff!important}.bg-danger.auto .list-group-item,.bg-danger .auto .list-group-item{background-color:transparent;border-color:#ee3939!important}.bg-danger.auto .list-group-item:hover,.bg-danger .auto .list-group-item:hover,.bg-danger.auto .list-group-item:focus,.bg-danger .auto .list-group-item:focus,.bg-danger.auto .list-group-item:active,.bg-danger .auto .list-group-item:active,.bg-danger.auto .list-group-item.active,.bg-danger .auto .list-group-item.active{background-color:#f13636!important}.bg-white{color:#58666e;background-color:#fff}.bg-white a{color:#363f44}.bg-white a:hover{color:#1f2427}.bg-white .text-muted{color:#98a6ad!important}.bg-white .lt,.bg-white .lter,.bg-white .dk,.bg-white .dker{background-color:#fff}.bg-white-only{background-color:#fff}.bg-white-opacity{background-color:rgba(255,255,255,0.5)}.bg-black-opacity{background-color:rgba(32,43,54,0.5)}a.bg-light:hover{color:#363f44}a.bg-primary:hover{background-color:#6254b2}a.text-primary:hover{color:#6254b2}.text-primary{color:#7266ba}.text-primary-lt{color:#8278c2}.text-primary-lter{color:#9289ca}.text-primary-dk{color:#6254b2}.text-primary-dker{color:#564aa3}a.bg-info:hover{background-color:#19a9d5}a.text-info:hover{color:#19a9d5}.text-info{color:#23b7e5}.text-info-lt{color:#3abee8}.text-info-lter{color:#51c6ea}.text-info-dk{color:#19a9d5}.text-info-dker{color:#1797be}a.bg-success:hover{background-color:#23ad44}a.text-success:hover{color:#23ad44}.text-success{color:#27c24c}.text-success-lt{color:#2ed556}.text-success-lter{color:#43d967}.text-success-dk{color:#23ad44}.text-success-dker{color:#1e983b}a.bg-warning:hover{background-color:#f9d21a}a.text-warning:hover{color:#f9d21a}.text-warning{color:#fad733}.text-warning-lt{color:#fbdc4c}.text-warning-lter{color:#fbe165}.text-warning-dk{color:#f9d21a}.text-warning-dker{color:#f4ca06}a.bg-danger:hover{background-color:#ee3939}a.text-danger:hover{color:#ee3939}.text-danger{color:#f05050}.text-danger-lt{color:#f26767}.text-danger-lter{color:#f47f7f}.text-danger-dk{color:#ee3939}.text-danger-dker{color:#ec2121}a.bg-dark:hover{background-color:#2f3342}a.text-dark:hover{color:#2f3342}.text-dark{color:#3a3f51}.text-dark-lt{color:#454b60}.text-dark-lter{color:#4f566f}.text-dark-dk{color:#2f3342}.text-dark-dker{color:#252833}a.bg-#000000:hover{background-color:#131e25}a.text-#000000:hover{color:#131e25}.text-#000000{color:#1c2b36}.text-#000000-lt{color:#253847}.text-#000000-lter{color:#2d4658}.text-#000000-dk{color:#131e25}.text-#000000-dker{color:#0b1014}.text-white{color:#fff}.text-black{color:#000}.text-muted{color:#98a6ad}.pos-rlt{position:relative}.pos-stc{position:static!important}.pos-abt{position:absolute}.pos-fix{position:fixed}.show{visibility:visible}.line{width:100%;height:2px;margin:10px 0;overflow:hidden;font-size:0}.line-xs{margin:0}.line-lg{margin-top:15px;margin-bottom:15px}.line-dashed{background-color:transparent;border-style:dashed!important;border-width:0}.no-line{border-width:0}.no-border,.no-borders{border-color:transparent;border-width:0}.no-radius{border-radius:0}.block{display:block}.block.hide{display:none}.inline{display:inline-block!important}.none{display:none}.pull-none{float:none}.rounded{border-radius:500px}.clear{display:block;overflow:hidden}.no-bg{color:inherit;background-color:transparent}.no-select{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none}.l-h{line-height:1.42857143}.l-h-0x{line-height:0}.l-h-1x{line-height:1.2}.l-h-2x{line-height:2em}.l-s-1x{letter-spacing:1}.l-s-2x{letter-spacing:2}.l-s-3x{letter-spacing:3}.font-normal{font-weight:normal}.font-thin{font-weight:300}.font-bold{font-weight:700}.text-3x{font-size:3em}.text-2x{font-size:2em}.text-lg{font-size:18px}.text-md{font-size:16px}.text-base{font-size:14px}.text-sm{font-size:13px}.text-xs{font-size:12px}.text-xxs{text-indent:-9999px}.text-ellipsis{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-u-c{text-transform:uppercase}.text-l-t{text-decoration:line-through}.text-u-l{text-decoration:underline}.text-active,.active>.text,.active>.auto .text{display:none!important}.active>.text-active,.active>.auto .text-active{display:inline-block!important}.box-shadow{box-shadow:0 2px 2px rgba(0,0,0,0.05),0 1px 0 rgba(0,0,0,0.05)}.box-shadow-lg{box-shadow:5px 5px 10px rgba(0,0,0,0.05)}.text-shadow{font-size:170px;text-shadow:0 1px 0 #dee5e7,0 2px 0 #fcfdfd,0 5px 10px rgba(0,0,0,0.125),0 10px 20px rgba(0,0,0,0.2)}.no-shadow{-webkit-box-shadow:none!important;box-shadow:none!important}.wrapper-xs{padding:5px}.wrapper-sm{padding:10px}.wrapper{padding:15px}.wrapper-md{padding:20px}.wrapper-lg{padding:30px}.wrapper-xl{padding:50px}.padder-lg{padding-right:30px;padding-left:30px}.padder-md{padding-right:20px;padding-left:20px}.padder{padding-right:15px;padding-left:15px}.padder-v{padding-top:15px;padding-bottom:15px}.no-padder{padding:0!important}.pull-in{margin-right:-15px;margin-left:-15px}.pull-out{margin:-10px -15px}.b{border:1px solid rgba(0,0,0,0.05)}.b-a{border:1px solid #dee5e7}.b-t{border-top:1px solid #dee5e7}.b-r{border-right:1px solid #dee5e7}.b-b{border-bottom:1px solid #dee5e7}.b-l{border-left:1px solid #dee5e7}.b-light{border-color:#edf1f2}.b-dark{border-color:#3a3f51}.b-black{border-color:#3a3f51}.b-primary{border-color:#7266ba}.b-success{border-color:#27c24c}.b-info{border-color:#23b7e5}.b-warning{border-color:#fad733}.b-danger{border-color:#f05050}.b-white{border-color:#fff}.b-dashed{border-style:dashed!important}.b-l-light{border-left-color:#edf1f2}.b-l-dark{border-left-color:#3a3f51}.b-l-black{border-left-color:#3a3f51}.b-l-primary{border-left-color:#7266ba}.b-l-success{border-left-color:#27c24c}.b-l-info{border-left-color:#23b7e5}.b-l-warning{border-left-color:#fad733}.b-l-danger{border-left-color:#f05050}.b-l-white{border-left-color:#fff}.b-l-2x{border-left-width:2px}.b-l-3x{border-left-width:3px}.b-l-4x{border-left-width:4px}.b-l-5x{border-left-width:5px}.b-2x{border-width:2px}.b-3x{border-width:3px}.b-4x{border-width:4px}.b-5x{border-width:5px}.r{border-radius:2px 2px 2px 2px}.r-2x{border-radius:4px}.r-3x{border-radius:6px}.r-l{border-radius:2px 0 0 2px}.r-r{border-radius:0 2px 2px 0}.r-t{border-radius:2px 2px 0 0}.r-b{border-radius:0 0 2px 2px}.m-xxs{margin:2px 4px}.m-xs{margin:5px}.m-sm{margin:10px}.m{margin:15px}.m-md{margin:20px}.m-lg{margin:30px}.m-xl{margin:50px}.m-n{margin:0!important}.m-l-none{margin-left:0!important}.m-l-xs{margin-left:5px}.m-l-sm{margin-left:10px}.m-l{margin-left:15px}.m-l-md{margin-left:20px}.m-l-lg{margin-left:30px}.m-l-xl{margin-left:40px}.m-l-xxl{margin-left:50px}.m-l-n-xxs{margin-left:-1px}.m-l-n-xs{margin-left:-5px}.m-l-n-sm{margin-left:-10px}.m-l-n{margin-left:-15px}.m-l-n-md{margin-left:-20px}.m-l-n-lg{margin-left:-30px}.m-l-n-xl{margin-left:-40px}.m-l-n-xxl{margin-left:-50px}.m-t-none{margin-top:0!important}.m-t-xxs{margin-top:1px}.m-t-xs{margin-top:5px}.m-t-sm{margin-top:10px}.m-t{margin-top:15px}.m-t-md{margin-top:20px}.m-t-lg{margin-top:30px}.m-t-xl{margin-top:40px}.m-t-xxl{margin-top:50px}.m-t-n-xxs{margin-top:-1px}.m-t-n-xs{margin-top:-5px}.m-t-n-sm{margin-top:-10px}.m-t-n{margin-top:-15px}.m-t-n-md{margin-top:-20px}.m-t-n-lg{margin-top:-30px}.m-t-n-xl{margin-top:-40px}.m-t-n-xxl{margin-top:-50px}.m-r-none{margin-right:0!important}.m-r-xxs{margin-right:1px}.m-r-xs{margin-right:5px}.m-r-sm{margin-right:10px}.m-r{margin-right:15px}.m-r-md{margin-right:20px}.m-r-lg{margin-right:30px}.m-r-xl{margin-right:40px}.m-r-xxl{margin-right:50px}.m-r-n-xxs{margin-right:-1px}.m-r-n-xs{margin-right:-5px}.m-r-n-sm{margin-right:-10px}.m-r-n{margin-right:-15px}.m-r-n-md{margin-right:-20px}.m-r-n-lg{margin-right:-30px}.m-r-n-xl{margin-right:-40px}.m-r-n-xxl{margin-right:-50px}.m-b-none{margin-bottom:0!important}.m-b-xxs{margin-bottom:1px}.m-b-xs{margin-bottom:5px}.m-b-sm{margin-bottom:10px}.m-b{margin-bottom:15px}.m-b-md{margin-bottom:20px}.m-b-lg{margin-bottom:30px}.m-b-xl{margin-bottom:40px}.m-b-xxl{margin-bottom:50px}.m-b-n-xxs{margin-bottom:-1px}.m-b-n-xs{margin-bottom:-5px}.m-b-n-sm{margin-bottom:-10px}.m-b-n{margin-bottom:-15px}.m-b-n-md{margin-bottom:-20px}.m-b-n-lg{margin-bottom:-30px}.m-b-n-xl{margin-bottom:-40px}.m-b-n-xxl{margin-bottom:-50px}.avatar{position:relative;display:block;white-space:nowrap;border-radius:500px}.avatar img{width:100%;border-radius:500px}.avatar i{position:absolute;top:0;left:0;width:10px;height:10px;margin:2px;border-style:solid;border-width:2px;border-radius:100%}.avatar i.right{right:0;left:auto}.avatar i.bottom{top:auto;right:0;bottom:0;left:auto}.avatar i.left{top:auto;bottom:0}.avatar i.on{background-color:#27c24c}.avatar i.off{background-color:#98a6ad}.avatar i.busy{background-color:#f05050}.avatar i.away{background-color:#fad733}.avatar.thumb-md i{width:12px;height:12px;margin:3px}.avatar.thumb-sm i{margin:1px}.avatar.thumb-xs i{margin:0}.w-1x{width:1em}.w-2x{width:2em}.w-3x{width:3em}.w-xxs{width:60px}.w-xs{width:90px}.w-sm{width:150px}.w{width:200px}.w-md{width:240px}.w-lg{width:280px}.w-xl{width:320px}.w-xxl{width:360px}.w-full{width:100%}.w-auto{width:auto}.h-auto{height:auto}.h-full{height:100%}.thumb-xl{display:inline-block;width:128px}.thumb-lg{display:inline-block;width:96px}.thumb-md{display:inline-block;width:64px}.thumb{display:inline-block;width:50px}.thumb-sm{display:inline-block;width:40px}.thumb-xs{display:inline-block;width:34px}.thumb-xxs{display:inline-block;width:30px}.thumb-wrapper{padding:2px;border:1px solid #dee5e7}.thumb img,.thumb-xs img,.thumb-sm img,.thumb-md img,.thumb-lg img,.thumb-btn img{height:auto;max-width:100%;vertical-align:middle}.img-full{width:100%}.img-full img{width:100%}.scrollable{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.hover{overflow-y:hidden!important}.scrollable.hover:hover{overflow:visible!important;overflow-y:auto!important}.smart .scrollable{overflow-y:auto!important}.scroll-x,.scroll-y{overflow:hidden;-webkit-overflow-scrolling:touch}.scroll-y{overflow-y:auto}.scroll-x{overflow-x:auto}.hover-action{display:none}.hover-rotate{-webkit-transition:all .2s ease-in-out .1s;transition:all .2s ease-in-out .1s}.hover-anchor:hover>.hover-action,.hover-anchor:focus>.hover-action,.hover-anchor:active>.hover-action{display:inherit}.hover-anchor:hover>.hover-rotate,.hover-anchor:focus>.hover-rotate,.hover-anchor:active>.hover-rotate{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.backdrop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1050}.backdrop.fade{opacity:0;filter:alpha(opacity=0)}.backdrop.in{opacity:.8;filter:alpha(opacity=80)}@media screen and (min-width:992px){.col-lg-2-4{float:left;width:20.000%}}@media(min-width:768px) and (max-width:991px){.hidden-sm.show{display:inherit!important}.no-m-sm{margin:0!important}}@media(max-width:767px){.w-auto-xs{width:auto}.shift{display:none!important}.shift.in{display:block!important}.row-2 [class*="col"]{float:left;width:50%}.row-2 .col-0{clear:none}.row-2 li:nth-child(odd){margin-left:0;clear:left}.text-center-xs{text-align:center}.text-left-xs{text-align:left}.text-right-xs{text-align:right}.no-border-xs{border-width:0}.pull-none-xs{float:none!important}.pull-right-xs{float:right!important}.pull-left-xs{float:left!important}.dropdown-menu.pull-none-xs{left:0}.hidden-xs.show{display:inherit!important}.wrapper-lg,.wrapper-md{padding:15px}.padder-lg,.padder-md{padding-right:15px;padding-left:15px}.no-m-xs{margin:0!important}}.butterbar{position:relative;height:3px;margin-bottom:-3px}.butterbar .bar{position:absolute;width:100%;height:0;text-indent:-9999px;background-color:#23b7e5}.butterbar .bar:before{position:absolute;right:50%;left:50%;height:3px;background-color:inherit;content:""}.butterbar.active{-webkit-animation:changebar 2.25s infinite .75s;-moz-animation:changebar 2.25s infinite .75s;animation:changebar 2.25s infinite .75s}.butterbar.active .bar{-webkit-animation:changebar 2.25s infinite;-moz-animation:changebar 2.25s infinite;animation:changebar 2.25s infinite}.butterbar.active .bar:before{-webkit-animation:movingbar .75s infinite;-moz-animation:movingbar .75s infinite;animation:movingbar .75s infinite}@-webkit-keyframes movingbar{0%{right:50%;left:50%}99.9%{right:0;left:0}100%{right:50%;left:50%}}@-moz-keyframes movingbar{0%{right:50%;left:50%}99.9%{right:0;left:0}100%{right:50%;left:50%}}@keyframes movingbar{0%{right:50%;left:50%}99.9%{right:0;left:0}100%{right:50%;left:50%}}@-webkit-keyframes changebar{0%{background-color:#23b7e5}33.3%{background-color:#23b7e5}33.33%{background-color:#fad733}66.6%{background-color:#fad733}66.66%{background-color:#7266ba}99.9%{background-color:#7266ba}}@-moz-keyframes changebar{0%{background-color:#23b7e5}33.3%{background-color:#23b7e5}33.33%{background-color:#fad733}66.6%{background-color:#fad733}66.66%{background-color:#7266ba}99.9%{background-color:#7266ba}}@keyframes changebar{0%{background-color:#23b7e5}33.3%{background-color:#23b7e5}33.33%{background-color:#fad733}66.6%{background-color:#fad733}66.66%{background-color:#7266ba}99.9%{background-color:#7266ba}} - -@font-face{font-family:'Source Sans Pro';font-style:normal;font-weight:300;src:local('Source Sans Pro Light'),local('SourceSansPro-Light'),url('/static/fonts/sourcesanspro/sourcesanspro-light.woff') format('woff')}@font-face{font-family:'Source Sans Pro';font-style:normal;font-weight:400;src:local('Source Sans Pro'),local('SourceSansPro-Regular'),url('/static/fonts/sourcesanspro/sourcesanspro.woff') format('woff')}@font-face{font-family:'Source Sans Pro';font-style:normal;font-weight:700;src:local('Source Sans Pro Bold'),local('SourceSansPro-Bold'),url('/static/fonts/sourcesanspro/sourcesanspro-bold.woff') format('woff')} \ No newline at end of file diff --git a/static/css/aside.css b/static/css/aside.css deleted file mode 100755 index d756bf8..0000000 --- a/static/css/aside.css +++ /dev/null @@ -1,123 +0,0 @@ -@media (min-width: 768px) { - .app-aside, - .app-asider, - .navbar-header { - width: 200px; - background: #fff !important; - } - .navbar-collapse, - .app-content, - .app-footer { - margin-left: 200px; - } - .app-aside-right { - position: absolute; - top: 50px; - right: 0; - bottom: 0; - z-index: 1000; - } - .app-aside-right.pos-fix { - z-index: 1010; - } - .visible-folded { - display: none; - } - .app-aside-folded .hidden-folded { - display: none !important; - } - .app-aside-folded .visible-folded { - display: inherit; - } - .app-aside-folded .text-center-folded { - text-align: center; - } - .app-aside-folded .pull-none-folded { - float: none !important; - } - .app-aside-folded .w-auto-folded { - width: auto; - } - .app-aside-folded .app-aside, - .app-aside-folded .navbar-header { - width: 60px; - } - .app-aside-folded .navbar-collapse, - .app-aside-folded .app-content, - .app-aside-folded .app-footer { - margin-left: 60px; - } - .app-aside-folded .app-header .navbar-brand { - display: block; - padding: 0; - } - .app-aside-fixed .app-header .navbar-header { - position: fixed; - } - .app-aside-fixed .aside-wrap { - position: fixed; - top: 50px; - bottom: 0; - left: 0; - z-index: 1000; - width: 199px; - overflow: hidden; - } - .app-aside-fixed .aside-wrap .navi-wrap { - position: relative; - width: 217px; - height: 100%; - overflow-x: hidden; - overflow-y: scroll; - -webkit-overflow-scrolling: touch; - } - .app-aside-fixed .aside-wrap .navi-wrap::-webkit-scrollbar { - -webkit-appearance: none; - } - .app-aside-fixed .aside-wrap .navi-wrap::-webkit-scrollbar:vertical { - width: 17px; - } - .app-aside-fixed .aside-wrap .navi-wrap > * { - width: 200px; - } - .smart .app-aside-fixed .aside-wrap .navi-wrap { - width: 200px; - } - .app-aside-fixed.app-aside-folded .app-aside { - position: fixed; - top: 0; - bottom: 0; - z-index: 1010; - } - .app-aside-fixed.app-aside-folded .aside-wrap { - width: 59px; - } - .app-aside-fixed.app-aside-folded .aside-wrap .navi-wrap { - width: 77px; - } - .app-aside-fixed.app-aside-folded .aside-wrap .navi-wrap > * { - width: 60px; - } - .smart .app-aside-fixed.app-aside-folded .aside-wrap .navi-wrap { - width: 60px; - } - .bg-auto:before { - position: absolute; - top: 0; - bottom: 0; - z-index: -1; - width: inherit; - background-color: inherit; - border: inherit; - content: ""; - } - .bg-auto.b-l:before { - margin-left: -1px; - } - .bg-auto.b-r:before { - margin-right: -1px; - } - .col.show { - display: table-cell !important; - } -} \ No newline at end of file diff --git a/static/css/bootstrap-datepicker.min.css b/static/css/bootstrap-datepicker.min.css deleted file mode 100755 index 7fbec1e..0000000 --- a/static/css/bootstrap-datepicker.min.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * Datepicker for Bootstrap v1.6.1 (https://github.com/eternicode/bootstrap-datepicker) - * - * Copyright 2012 Stefan Petre - * Improvements by Andrew Rowls - * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) - */ -.datepicker{padding:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #999;border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-bottom:before{top:-7px}.datepicker-dropdown.datepicker-orient-bottom:after{top:-6px}.datepicker-dropdown.datepicker-orient-top:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-top:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker td,.datepicker th{text-align:center;width:20px;height:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day.focused,.datepicker table tr td.day:hover{background:#eee;cursor:pointer}.datepicker table tr td.new,.datepicker table tr td.old{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.highlighted{background:#d9edf7;border-radius:0}.datepicker table tr td.today,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover{background-color:#fde19a;background-image:-moz-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:-ms-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdd49a),to(#fdf59a));background-image:-webkit-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:-o-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:linear-gradient(to bottom,#fdd49a,#fdf59a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);border-color:#fdf59a #fdf59a #fbed50;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#000}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today.disabled:hover[disabled],.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today:active,.datepicker table tr td.today:hover,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today:hover:active,.datepicker table tr td.today:hover:hover,.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today[disabled]{background-color:#fdf59a}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today:active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active{background-color:#fbf069\9}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range:hover{background:#eee;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.datepicker table tr td.range.today,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover{background-color:#f3d17a;background-image:-moz-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:-ms-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f3c17a),to(#f3e97a));background-image:-webkit-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:-o-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:linear-gradient(to bottom,#f3c17a,#f3e97a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);border-color:#f3e97a #f3e97a #edde34;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today.disabled:hover[disabled],.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today:hover:hover,.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today[disabled]{background-color:#f3e97a}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active{background-color:#efe24b\9}.datepicker table tr td.selected,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover{background-color:#9e9e9e;background-image:-moz-linear-gradient(to bottom,#b3b3b3,grey);background-image:-ms-linear-gradient(to bottom,#b3b3b3,grey);background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3b3b3),to(grey));background-image:-webkit-linear-gradient(to bottom,#b3b3b3,grey);background-image:-o-linear-gradient(to bottom,#b3b3b3,grey);background-image:linear-gradient(to bottom,#b3b3b3,grey);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);border-color:grey grey #595959;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected.disabled:hover[disabled],.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected:hover:hover,.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected[disabled]{background-color:grey}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active{background-color:#666\9}.datepicker table tr td.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover{background-color:#006dcc;background-image:-moz-linear-gradient(to bottom,#08c,#04c);background-image:-ms-linear-gradient(to bottom,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(to bottom,#08c,#04c);background-image:-o-linear-gradient(to bottom,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active.disabled:hover[disabled],.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active:active,.datepicker table tr td.active:hover,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active:hover:active,.datepicker table tr td.active:hover:hover,.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active[disabled]{background-color:#04c}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active:active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active{background-color:#039\9}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.datepicker table tr td span.focused,.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{background-color:#006dcc;background-image:-moz-linear-gradient(to bottom,#08c,#04c);background-image:-ms-linear-gradient(to bottom,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(to bottom,#08c,#04c);background-image:-o-linear-gradient(to bottom,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active.disabled:hover[disabled],.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active:hover:hover,.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active[disabled]{background-color:#04c}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active{background-color:#039\9}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker .datepicker-switch,.datepicker .next,.datepicker .prev,.datepicker tfoot tr th{cursor:pointer}.datepicker .datepicker-switch:hover,.datepicker .next:hover,.datepicker .prev:hover,.datepicker tfoot tr th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.input-append.date .add-on,.input-prepend.date .add-on{cursor:pointer}.input-append.date .add-on i,.input-prepend.date .add-on i{margin-top:3px}.input-daterange input{text-align:center}.input-daterange input:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-daterange input:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-daterange .add-on{display:inline-block;width:auto;min-width:16px;height:18px;padding:4px 5px;font-weight:400;line-height:18px;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:1px solid #ccc;margin-left:-5px;margin-right:-5px} -/*# sourceMappingURL=bootstrap-datepicker.min.css.map */ \ No newline at end of file diff --git a/static/css/bootstrap-datepicker.standalone.min.css b/static/css/bootstrap-datepicker.standalone.min.css deleted file mode 100755 index 16c636e..0000000 --- a/static/css/bootstrap-datepicker.standalone.min.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * Datepicker for Bootstrap v1.6.1 (https://github.com/eternicode/bootstrap-datepicker) - * - * Copyright 2012 Stefan Petre - * Improvements by Andrew Rowls - * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) - */ -.datepicker{padding:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #999;border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-bottom:before{top:-7px}.datepicker-dropdown.datepicker-orient-bottom:after{top:-6px}.datepicker-dropdown.datepicker-orient-top:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-top:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker td,.datepicker th{text-align:center;width:20px;height:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day.focused,.datepicker table tr td.day:hover{background:#eee;cursor:pointer}.datepicker table tr td.new,.datepicker table tr td.old{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.highlighted{background:#d9edf7;border-radius:0}.datepicker table tr td.today,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover{background-color:#fde19a;background-image:-moz-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:-ms-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdd49a),to(#fdf59a));background-image:-webkit-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:-o-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:linear-gradient(to bottom,#fdd49a,#fdf59a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);border-color:#fdf59a #fdf59a #fbed50;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#000}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today.disabled:hover[disabled],.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today:active,.datepicker table tr td.today:hover,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today:hover:active,.datepicker table tr td.today:hover:hover,.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today[disabled]{background-color:#fdf59a}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today:active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active{background-color:#fbf069\9}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range:hover{background:#eee;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.datepicker table tr td.range.today,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover{background-color:#f3d17a;background-image:-moz-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:-ms-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f3c17a),to(#f3e97a));background-image:-webkit-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:-o-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:linear-gradient(to bottom,#f3c17a,#f3e97a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);border-color:#f3e97a #f3e97a #edde34;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today.disabled:hover[disabled],.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today:hover:hover,.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today[disabled]{background-color:#f3e97a}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active{background-color:#efe24b\9}.datepicker table tr td.selected,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover{background-color:#9e9e9e;background-image:-moz-linear-gradient(to bottom,#b3b3b3,grey);background-image:-ms-linear-gradient(to bottom,#b3b3b3,grey);background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3b3b3),to(grey));background-image:-webkit-linear-gradient(to bottom,#b3b3b3,grey);background-image:-o-linear-gradient(to bottom,#b3b3b3,grey);background-image:linear-gradient(to bottom,#b3b3b3,grey);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);border-color:grey grey #595959;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected.disabled:hover[disabled],.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected:hover:hover,.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected[disabled]{background-color:grey}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active{background-color:#666\9}.datepicker table tr td.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover{background-color:#006dcc;background-image:-moz-linear-gradient(to bottom,#08c,#04c);background-image:-ms-linear-gradient(to bottom,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(to bottom,#08c,#04c);background-image:-o-linear-gradient(to bottom,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active.disabled:hover[disabled],.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active:active,.datepicker table tr td.active:hover,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active:hover:active,.datepicker table tr td.active:hover:hover,.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active[disabled]{background-color:#04c}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active:active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active{background-color:#039\9}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.datepicker table tr td span.focused,.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{background-color:#006dcc;background-image:-moz-linear-gradient(to bottom,#08c,#04c);background-image:-ms-linear-gradient(to bottom,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(to bottom,#08c,#04c);background-image:-o-linear-gradient(to bottom,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active.disabled:hover[disabled],.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active:hover:hover,.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active[disabled]{background-color:#04c}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active{background-color:#039\9}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker .datepicker-switch,.datepicker .next,.datepicker .prev,.datepicker tfoot tr th{cursor:pointer}.datepicker .datepicker-switch:hover,.datepicker .next:hover,.datepicker .prev:hover,.datepicker tfoot tr th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.input-append.date .add-on,.input-prepend.date .add-on{cursor:pointer}.input-append.date .add-on i,.input-prepend.date .add-on i{margin-top:3px}.input-daterange input{text-align:center}.input-daterange input:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-daterange input:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-daterange .add-on{display:inline-block;width:auto;min-width:16px;height:20px;padding:4px 5px;font-weight:400;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:1px solid #ccc;margin-left:-5px;margin-right:-5px}.datepicker.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px;color:#333;font-size:13px;line-height:20px}.datepicker.datepicker-inline td,.datepicker.datepicker-inline th,.datepicker.dropdown-menu td,.datepicker.dropdown-menu th{padding:4px 5px} -/*# sourceMappingURL=bootstrap-datepicker.standalone.min.css.map */ \ No newline at end of file diff --git a/static/css/bootstrap.min.css b/static/css/bootstrap.min.css deleted file mode 100755 index a5620a1..0000000 --- a/static/css/bootstrap.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:3;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0;color:#333;font-weight: bold;}.popover-content{padding:9px 14px;color:#333;}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file diff --git a/static/css/component.css b/static/css/component.css deleted file mode 100755 index e59755d..0000000 --- a/static/css/component.css +++ /dev/null @@ -1,415 +0,0 @@ -/* Product grid */ - -.grid { - position: relative; - overflow: hidden; - margin: 0 auto; - padding: 1.5em 0 8em; - text-align: center; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-touch-callout: none; - -khtml-user-select: none; -} - -/* Loader */ -.grid__loader { - display: none; - margin: 3em auto 0; -} - -.grid--loading .grid__loader { - display: block; -} - -/* Clearfix */ - -.grid:after { - content: ''; - display: block; - clear: both; -} - -/* Grid items */ - -.grid__sizer, -.grid__item { - position: relative; - float: left; - width: 20%; - padding: .75em; -} - -.no-touch .grid__sizer, -.no-touch .grid__item { - padding: .75em .75em 1.25em; -} - -.grid--loading .grid__item { - visibility: hidden; -} - -.grid__item--size-a { - width: 40%; -} - -/* Gallery */ - -.slider { - padding: 0; - border-radius: 5px; - background: #24252a; -} - -.no-touch .slider { - padding: 0 0 1.25em; -} - -.slider__item { - width: 100%; - padding: 1em; -} - -.slider__item img { - width: 100%; -} -/* Flickity page dots */ - -.slider .flickity-page-dots { - bottom: 20px; - opacity: 0; - -webkit-transition: opacity .3s; - transition: opacity .3s; -} - -.no-touch .slider:hover .flickity-page-dots { - opacity: 1; -} - -.slider .flickity-page-dots .dot { - background: #131417; -} - -/* Product meta */ - -.meta { - position: relative; - margin: 10px 0 0; - padding: 0 60px 0 0; - text-align: left; -} - -.meta__brand { - font-size: .85em; - font-weight: bold; - display: block; - color: #595b64; -} - -.meta__title { - font-size: .95em; - font-weight: bold; - margin: 0; - padding: .4em 0 .1em; -} - -.meta__price { - font-size: .95em; - font-weight: bold; - position: absolute; - top: .45em; - right: .25em; - color: #595b64; -} - -/* Action style */ - -.action { - font-family: Avenir, 'Helvetica Neue', 'Lato', 'Segoe UI', Helvetica, Arial, sans-serif; - font-size: 1.05em; - position: relative; - overflow: hidden; - margin: 0; - padding: .25em; - cursor: pointer; - color: #fff; - border: none; - background: none; -} - -.action:focus { - outline: none; -} - -.action--button { - color: #5c5edc; -} - -.no-touch .action--button:hover { - color: #fff; - outline: none; -} - -.text-hidden { - position: absolute; - top: 200%; -} - -/* Add to cart button */ - -.action--buy { - position: absolute; - top: 0; - right: 0; - padding: 1.85em 2.35em; - -webkit-transition: opacity .3s, -webkit-transform .3s; - transition: opacity .3s, transform .3s; - -webkit-transform: translate3d(-5px, 0, 0); - transform: translate3d(-5px, 0, 0); -} - -.no-touch .action--buy { - opacity: 0; -} - -.no-touch .grid__item:hover .action--buy { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); -} - -/* Fixed bottom bar */ - -.bar { - position: fixed; - z-index: 100; - bottom: 0; - left: 0; - width: 100%; - padding: 1.75em 5em; - text-align: center; - background: #191a1b; - -webkit-transform: translate3d(0, 0, 0); - /* Fix for Chrome flicker on Mac ...party like we're in 2012! */ -} - -.flexbox .filter { -} - -/* Filter */ - -.filter__label { - font-size: .85em; - display: inline-block; - margin: 0 2%; - font-weight: bold; - color: #393A3F; -} - -.filter__item { - margin: 0 10px; - padding: 10px 15px; - vertical-align: middle; - color: #333; -} - -.filter__item--selected { - padding: 10px 15px; - border-radius: 3px; - background: #ffcd00; -} - -.filter__item .icon { - font-size: 1.75em; - display: none; -} - -/* Shopping cart */ - -.cart { - font-size: 1.5em; - position: absolute; - top: 0; - right: 0; - overflow: hidden; - height: 100%; - padding: 0 1.195em; - cursor: pointer; - color: #abacae; - border: none; - background-color: #131415; -} - -.no-touch .cart:focus, -.no-touch .cart:hover { - color: #fff; - outline: none; -} - -.cart--animate .cart__icon { - -webkit-animation: cartAnim .4s forwards; - animation: cartAnim .4s forwards; -} - -@-webkit-keyframes cartAnim { - 50% { - opacity: 0; - -webkit-transform: translate3d(50px, 0, 0); - transform: translate3d(50px, 0, 0); - } - 51% { - opacity: 0; - -webkit-transform: translate3d(-50px, 0, 0); - transform: translate3d(-50px, 0, 0); - } - 100% { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes cartAnim { - 50% { - opacity: 0; - -webkit-transform: translate3d(50px, 0, 0); - transform: translate3d(50px, 0, 0); - } - 51% { - opacity: 0; - -webkit-transform: translate3d(-50px, 0, 0); - transform: translate3d(-50px, 0, 0); - } - 100% { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.cart__count { - font-size: 9px; - font-weight: bold; - line-height: 15px; - position: absolute; - top: 50%; - right: 20px; - width: 15px; - height: 15px; - margin: -16px 0 0 0; - text-align: center; - color: #fff; - border-radius: 50%; - background: #5c5edc; -} - -.cart--animate .cart__count { - -webkit-animation: countAnim .4s forwards; - animation: countAnim .4s forwards; -} - -@-webkit-keyframes countAnim { - 50% { - opacity: 0; - -webkit-transform: translate3d(0, 80px, 0); - transform: translate3d(0, 80px, 0); - } - 51% { - opacity: 0; - -webkit-transform: translate3d(0, -80px, 0); - transform: translate3d(0, -80px, 0); - } - 100% { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes countAnim { - 50% { - opacity: 0; - -webkit-transform: translate3d(0, 80px, 0); - transform: translate3d(0, 80px, 0); - } - 51% { - opacity: 0; - -webkit-transform: translate3d(0, -80px, 0); - transform: translate3d(0, -80px, 0); - } - 100% { - opacity: 1; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} -/* Resize grid items on smaller screens */ - -@media screen and (max-width: 65em) { - .grid__sizer, - .grid__item, - .grid__item--size-a { - width: 33.333%; - } -} - -@media screen and (max-width: 50em) { - .grid__sizer, - .grid__item, - .grid__item--size-a { - width: 50%; - } - .bar { - padding-left: 0; - text-align: left; - } -} - -@media screen and (max-width: 40em) { - .bar { - padding: .5em 4.5em .5em 0; - } - .flexbox .filter { - -webkit-justify-content: space-around; - justify-content: space-around; - padding: 0; - width: 100%; - } - .filter__item { - height: 100%; - width: 100%; - border: none; - margin-left: 0; - } - .filter__item .icon { - display: inline-block; - } - .filter__label, - .action__text { - display: none; - } - .cart { - padding: 0 1em; - } -} - -@media screen and (max-width: 25em) { - .grid { - max-width: 100%; - } - .grid__loader { - margin: 0 auto; - } - .grid__sizer, - .grid__item, - .grid__item--size-a { - width: 100%; - } - .action--buy { - font-size: 1.5em; - padding: 1.15em 1.5em; - -webkit-tap-highlight-color: transparent; - } -} \ No newline at end of file diff --git a/static/css/csshake.min.css b/static/css/csshake.min.css deleted file mode 100755 index 843ae53..0000000 --- a/static/css/csshake.min.css +++ /dev/null @@ -1 +0,0 @@ -.shake,.shake-little,.shake-slow,.shake-hard,.shake-horizontal,.shake-vertical,.shake-rotate,.shake-opacity,.shake-crazy,.shake-chunk{display:inline-block;transform-origin:center center}.shake-freeze,.shake-constant.shake-constant--hover:hover,.shake-trigger:hover .shake-constant.shake-constant--hover{animation-play-state:paused}.shake-freeze:hover,.shake-trigger:hover .shake-freeze,.shake:hover,.shake-trigger:hover .shake,.shake-little:hover,.shake-trigger:hover .shake-little,.shake-slow:hover,.shake-trigger:hover .shake-slow,.shake-hard:hover,.shake-trigger:hover .shake-hard,.shake-horizontal:hover,.shake-trigger:hover .shake-horizontal,.shake-vertical:hover,.shake-trigger:hover .shake-vertical,.shake-rotate:hover,.shake-trigger:hover .shake-rotate,.shake-opacity:hover,.shake-trigger:hover .shake-opacity,.shake-crazy:hover,.shake-trigger:hover .shake-crazy,.shake-chunk:hover,.shake-trigger:hover .shake-chunk{animation-play-state:running}@keyframes shake{2%{transform:translate(1.5px, 1.5px) rotate(-0.5deg)}4%{transform:translate(-1.5px, 1.5px) rotate(1.5deg)}6%{transform:translate(1.5px, 2.5px) rotate(-0.5deg)}8%{transform:translate(1.5px, -0.5px) rotate(0.5deg)}10%{transform:translate(2.5px, 0.5px) rotate(0.5deg)}12%{transform:translate(-1.5px, -0.5px) rotate(1.5deg)}14%{transform:translate(1.5px, 1.5px) rotate(1.5deg)}16%{transform:translate(0.5px, 0.5px) rotate(-0.5deg)}18%{transform:translate(-1.5px, -1.5px) rotate(1.5deg)}20%{transform:translate(1.5px, 2.5px) rotate(1.5deg)}22%{transform:translate(0.5px, 2.5px) rotate(1.5deg)}24%{transform:translate(2.5px, 1.5px) rotate(-0.5deg)}26%{transform:translate(0.5px, 1.5px) rotate(1.5deg)}28%{transform:translate(-0.5px, -1.5px) rotate(-0.5deg)}30%{transform:translate(-0.5px, 1.5px) rotate(-0.5deg)}32%{transform:translate(1.5px, 1.5px) rotate(-0.5deg)}34%{transform:translate(-1.5px, 0.5px) rotate(1.5deg)}36%{transform:translate(2.5px, 0.5px) rotate(-0.5deg)}38%{transform:translate(-0.5px, -0.5px) rotate(0.5deg)}40%{transform:translate(0.5px, -1.5px) rotate(-0.5deg)}42%{transform:translate(0.5px, 1.5px) rotate(1.5deg)}44%{transform:translate(2.5px, 0.5px) rotate(-0.5deg)}46%{transform:translate(2.5px, 0.5px) rotate(1.5deg)}48%{transform:translate(1.5px, 1.5px) rotate(-0.5deg)}50%{transform:translate(-0.5px, -0.5px) rotate(1.5deg)}52%{transform:translate(2.5px, -1.5px) rotate(0.5deg)}54%{transform:translate(0.5px, 2.5px) rotate(1.5deg)}56%{transform:translate(0.5px, 2.5px) rotate(-0.5deg)}58%{transform:translate(1.5px, 0.5px) rotate(-0.5deg)}60%{transform:translate(1.5px, 1.5px) rotate(-0.5deg)}62%{transform:translate(2.5px, -1.5px) rotate(1.5deg)}64%{transform:translate(2.5px, 1.5px) rotate(0.5deg)}66%{transform:translate(1.5px, 2.5px) rotate(1.5deg)}68%{transform:translate(-0.5px, 0.5px) rotate(0.5deg)}70%{transform:translate(-1.5px, 2.5px) rotate(1.5deg)}72%{transform:translate(1.5px, 2.5px) rotate(1.5deg)}74%{transform:translate(-0.5px, 2.5px) rotate(0.5deg)}76%{transform:translate(1.5px, 2.5px) rotate(0.5deg)}78%{transform:translate(2.5px, 0.5px) rotate(0.5deg)}80%{transform:translate(-1.5px, -0.5px) rotate(0.5deg)}82%{transform:translate(-0.5px, -1.5px) rotate(0.5deg)}84%{transform:translate(1.5px, 1.5px) rotate(-0.5deg)}86%{transform:translate(-0.5px, 2.5px) rotate(0.5deg)}88%{transform:translate(-1.5px, 2.5px) rotate(0.5deg)}90%{transform:translate(-0.5px, -0.5px) rotate(-0.5deg)}92%{transform:translate(2.5px, 1.5px) rotate(-0.5deg)}94%{transform:translate(1.5px, 2.5px) rotate(0.5deg)}96%{transform:translate(0.5px, 2.5px) rotate(-0.5deg)}98%{transform:translate(2.5px, 0.5px) rotate(1.5deg)}0%,100%{transform:translate(0, 0) rotate(0)}}.shake:hover,.shake-trigger:hover .shake,.shake.shake-freeze,.shake.shake-constant{animation:shake 100ms ease-in-out infinite}@keyframes shake-little{2%{transform:translate(1px, 1px) rotate(0.5deg)}4%{transform:translate(1px, 1px) rotate(0.5deg)}6%{transform:translate(1px, 1px) rotate(0.5deg)}8%{transform:translate(1px, 1px) rotate(0.5deg)}10%{transform:translate(1px, 1px) rotate(0.5deg)}12%{transform:translate(1px, 0px) rotate(0.5deg)}14%{transform:translate(0px, 1px) rotate(0.5deg)}16%{transform:translate(1px, 0px) rotate(0.5deg)}18%{transform:translate(1px, 0px) rotate(0.5deg)}20%{transform:translate(0px, 0px) rotate(0.5deg)}22%{transform:translate(0px, 0px) rotate(0.5deg)}24%{transform:translate(0px, 1px) rotate(0.5deg)}26%{transform:translate(0px, 1px) rotate(0.5deg)}28%{transform:translate(0px, 1px) rotate(0.5deg)}30%{transform:translate(1px, 1px) rotate(0.5deg)}32%{transform:translate(0px, 1px) rotate(0.5deg)}34%{transform:translate(0px, 1px) rotate(0.5deg)}36%{transform:translate(1px, 0px) rotate(0.5deg)}38%{transform:translate(1px, 1px) rotate(0.5deg)}40%{transform:translate(1px, 0px) rotate(0.5deg)}42%{transform:translate(1px, 1px) rotate(0.5deg)}44%{transform:translate(0px, 0px) rotate(0.5deg)}46%{transform:translate(1px, 0px) rotate(0.5deg)}48%{transform:translate(1px, 1px) rotate(0.5deg)}50%{transform:translate(0px, 0px) rotate(0.5deg)}52%{transform:translate(1px, 1px) rotate(0.5deg)}54%{transform:translate(0px, 0px) rotate(0.5deg)}56%{transform:translate(0px, 1px) rotate(0.5deg)}58%{transform:translate(1px, 1px) rotate(0.5deg)}60%{transform:translate(0px, 0px) rotate(0.5deg)}62%{transform:translate(0px, 0px) rotate(0.5deg)}64%{transform:translate(0px, 0px) rotate(0.5deg)}66%{transform:translate(0px, 1px) rotate(0.5deg)}68%{transform:translate(1px, 1px) rotate(0.5deg)}70%{transform:translate(0px, 0px) rotate(0.5deg)}72%{transform:translate(0px, 0px) rotate(0.5deg)}74%{transform:translate(0px, 0px) rotate(0.5deg)}76%{transform:translate(0px, 1px) rotate(0.5deg)}78%{transform:translate(0px, 0px) rotate(0.5deg)}80%{transform:translate(1px, 1px) rotate(0.5deg)}82%{transform:translate(0px, 0px) rotate(0.5deg)}84%{transform:translate(1px, 0px) rotate(0.5deg)}86%{transform:translate(1px, 1px) rotate(0.5deg)}88%{transform:translate(1px, 1px) rotate(0.5deg)}90%{transform:translate(1px, 1px) rotate(0.5deg)}92%{transform:translate(1px, 1px) rotate(0.5deg)}94%{transform:translate(0px, 1px) rotate(0.5deg)}96%{transform:translate(0px, 1px) rotate(0.5deg)}98%{transform:translate(0px, 1px) rotate(0.5deg)}0%,100%{transform:translate(0, 0) rotate(0)}}.shake-little:hover,.shake-trigger:hover .shake-little,.shake-little.shake-freeze,.shake-little.shake-constant{animation:shake-little 100ms ease-in-out infinite}@keyframes shake-slow{2%{transform:translate(2px, -9px) rotate(2.5deg)}4%{transform:translate(-4px, 5px) rotate(-2.5deg)}6%{transform:translate(-8px, 8px) rotate(3.5deg)}8%{transform:translate(-7px, 4px) rotate(-1.5deg)}10%{transform:translate(7px, 0px) rotate(1.5deg)}12%{transform:translate(3px, 8px) rotate(-0.5deg)}14%{transform:translate(4px, 4px) rotate(0.5deg)}16%{transform:translate(-4px, -4px) rotate(3.5deg)}18%{transform:translate(-8px, -7px) rotate(3.5deg)}20%{transform:translate(-9px, 8px) rotate(2.5deg)}22%{transform:translate(-9px, -5px) rotate(-2.5deg)}24%{transform:translate(4px, -7px) rotate(-2.5deg)}26%{transform:translate(-1px, 3px) rotate(1.5deg)}28%{transform:translate(-3px, -7px) rotate(3.5deg)}30%{transform:translate(6px, -9px) rotate(2.5deg)}32%{transform:translate(8px, -5px) rotate(-2.5deg)}34%{transform:translate(7px, 8px) rotate(1.5deg)}36%{transform:translate(2px, 5px) rotate(-2.5deg)}38%{transform:translate(-6px, 0px) rotate(2.5deg)}40%{transform:translate(9px, 7px) rotate(-2.5deg)}42%{transform:translate(-2px, -2px) rotate(-0.5deg)}44%{transform:translate(0px, -6px) rotate(-2.5deg)}46%{transform:translate(-5px, 2px) rotate(1.5deg)}48%{transform:translate(-8px, -7px) rotate(3.5deg)}50%{transform:translate(-5px, -6px) rotate(-2.5deg)}52%{transform:translate(8px, 1px) rotate(-2.5deg)}54%{transform:translate(-1px, -1px) rotate(-2.5deg)}56%{transform:translate(5px, -1px) rotate(2.5deg)}58%{transform:translate(-6px, -8px) rotate(-2.5deg)}60%{transform:translate(5px, 5px) rotate(3.5deg)}62%{transform:translate(-4px, -2px) rotate(1.5deg)}64%{transform:translate(-5px, 7px) rotate(3.5deg)}66%{transform:translate(7px, 4px) rotate(0.5deg)}68%{transform:translate(-5px, -2px) rotate(-2.5deg)}70%{transform:translate(1px, 3px) rotate(-1.5deg)}72%{transform:translate(-6px, 0px) rotate(2.5deg)}74%{transform:translate(1px, 9px) rotate(2.5deg)}76%{transform:translate(10px, -5px) rotate(-2.5deg)}78%{transform:translate(-5px, 4px) rotate(3.5deg)}80%{transform:translate(-6px, 1px) rotate(0.5deg)}82%{transform:translate(9px, 10px) rotate(2.5deg)}84%{transform:translate(-1px, 5px) rotate(-1.5deg)}86%{transform:translate(4px, 1px) rotate(2.5deg)}88%{transform:translate(-5px, -7px) rotate(1.5deg)}90%{transform:translate(-8px, -2px) rotate(0.5deg)}92%{transform:translate(10px, -9px) rotate(-0.5deg)}94%{transform:translate(7px, 6px) rotate(-0.5deg)}96%{transform:translate(6px, 1px) rotate(-2.5deg)}98%{transform:translate(5px, 0px) rotate(1.5deg)}0%,100%{transform:translate(0, 0) rotate(0)}}.shake-slow:hover,.shake-trigger:hover .shake-slow,.shake-slow.shake-freeze,.shake-slow.shake-constant{animation:shake-slow 5s ease-in-out infinite}@keyframes shake-hard{2%{transform:translate(2px, -5px) rotate(2.5deg)}4%{transform:translate(4px, 6px) rotate(-1.5deg)}6%{transform:translate(-5px, 3px) rotate(-2.5deg)}8%{transform:translate(-8px, 7px) rotate(3.5deg)}10%{transform:translate(-2px, -8px) rotate(3.5deg)}12%{transform:translate(-9px, -1px) rotate(1.5deg)}14%{transform:translate(1px, -8px) rotate(-0.5deg)}16%{transform:translate(-3px, 10px) rotate(-1.5deg)}18%{transform:translate(9px, -4px) rotate(0.5deg)}20%{transform:translate(4px, 8px) rotate(2.5deg)}22%{transform:translate(3px, 2px) rotate(-0.5deg)}24%{transform:translate(-5px, 6px) rotate(2.5deg)}26%{transform:translate(-7px, -6px) rotate(0.5deg)}28%{transform:translate(3px, 0px) rotate(2.5deg)}30%{transform:translate(8px, -8px) rotate(2.5deg)}32%{transform:translate(-9px, -8px) rotate(2.5deg)}34%{transform:translate(-9px, 3px) rotate(2.5deg)}36%{transform:translate(-2px, 7px) rotate(2.5deg)}38%{transform:translate(8px, 7px) rotate(-1.5deg)}40%{transform:translate(4px, 0px) rotate(-1.5deg)}42%{transform:translate(-4px, -9px) rotate(-0.5deg)}44%{transform:translate(0px, -4px) rotate(2.5deg)}46%{transform:translate(4px, 2px) rotate(2.5deg)}48%{transform:translate(10px, -9px) rotate(2.5deg)}50%{transform:translate(3px, -6px) rotate(2.5deg)}52%{transform:translate(1px, 6px) rotate(0.5deg)}54%{transform:translate(3px, -1px) rotate(-1.5deg)}56%{transform:translate(-1px, -9px) rotate(0.5deg)}58%{transform:translate(7px, -4px) rotate(-0.5deg)}60%{transform:translate(2px, 0px) rotate(2.5deg)}62%{transform:translate(-5px, 3px) rotate(0.5deg)}64%{transform:translate(6px, -8px) rotate(3.5deg)}66%{transform:translate(1px, -3px) rotate(2.5deg)}68%{transform:translate(10px, 1px) rotate(1.5deg)}70%{transform:translate(0px, 7px) rotate(-0.5deg)}72%{transform:translate(-9px, 6px) rotate(3.5deg)}74%{transform:translate(8px, 0px) rotate(-0.5deg)}76%{transform:translate(0px, 5px) rotate(0.5deg)}78%{transform:translate(6px, 6px) rotate(-0.5deg)}80%{transform:translate(4px, 3px) rotate(-2.5deg)}82%{transform:translate(8px, -2px) rotate(3.5deg)}84%{transform:translate(0px, -8px) rotate(1.5deg)}86%{transform:translate(-2px, -8px) rotate(2.5deg)}88%{transform:translate(10px, -7px) rotate(2.5deg)}90%{transform:translate(2px, 10px) rotate(-0.5deg)}92%{transform:translate(-9px, 4px) rotate(2.5deg)}94%{transform:translate(-3px, 1px) rotate(1.5deg)}96%{transform:translate(-2px, -1px) rotate(0.5deg)}98%{transform:translate(7px, -9px) rotate(3.5deg)}0%,100%{transform:translate(0, 0) rotate(0)}}.shake-hard:hover,.shake-trigger:hover .shake-hard,.shake-hard.shake-freeze,.shake-hard.shake-constant{animation:shake-hard 100ms ease-in-out infinite}@keyframes shake-horizontal{2%{transform:translate(4px, 0) rotate(0)}4%{transform:translate(7px, 0) rotate(0)}6%{transform:translate(-2px, 0) rotate(0)}8%{transform:translate(-7px, 0) rotate(0)}10%{transform:translate(-1px, 0) rotate(0)}12%{transform:translate(-2px, 0) rotate(0)}14%{transform:translate(1px, 0) rotate(0)}16%{transform:translate(-8px, 0) rotate(0)}18%{transform:translate(-5px, 0) rotate(0)}20%{transform:translate(9px, 0) rotate(0)}22%{transform:translate(-5px, 0) rotate(0)}24%{transform:translate(6px, 0) rotate(0)}26%{transform:translate(2px, 0) rotate(0)}28%{transform:translate(2px, 0) rotate(0)}30%{transform:translate(-5px, 0) rotate(0)}32%{transform:translate(-7px, 0) rotate(0)}34%{transform:translate(10px, 0) rotate(0)}36%{transform:translate(1px, 0) rotate(0)}38%{transform:translate(-2px, 0) rotate(0)}40%{transform:translate(4px, 0) rotate(0)}42%{transform:translate(-8px, 0) rotate(0)}44%{transform:translate(5px, 0) rotate(0)}46%{transform:translate(9px, 0) rotate(0)}48%{transform:translate(6px, 0) rotate(0)}50%{transform:translate(-9px, 0) rotate(0)}52%{transform:translate(7px, 0) rotate(0)}54%{transform:translate(-9px, 0) rotate(0)}56%{transform:translate(-7px, 0) rotate(0)}58%{transform:translate(-8px, 0) rotate(0)}60%{transform:translate(3px, 0) rotate(0)}62%{transform:translate(-7px, 0) rotate(0)}64%{transform:translate(6px, 0) rotate(0)}66%{transform:translate(-4px, 0) rotate(0)}68%{transform:translate(-2px, 0) rotate(0)}70%{transform:translate(6px, 0) rotate(0)}72%{transform:translate(-9px, 0) rotate(0)}74%{transform:translate(7px, 0) rotate(0)}76%{transform:translate(2px, 0) rotate(0)}78%{transform:translate(-8px, 0) rotate(0)}80%{transform:translate(2px, 0) rotate(0)}82%{transform:translate(2px, 0) rotate(0)}84%{transform:translate(-4px, 0) rotate(0)}86%{transform:translate(-7px, 0) rotate(0)}88%{transform:translate(4px, 0) rotate(0)}90%{transform:translate(-6px, 0) rotate(0)}92%{transform:translate(-8px, 0) rotate(0)}94%{transform:translate(-3px, 0) rotate(0)}96%{transform:translate(4px, 0) rotate(0)}98%{transform:translate(-8px, 0) rotate(0)}0%,100%{transform:translate(0, 0) rotate(0)}}.shake-horizontal:hover,.shake-trigger:hover .shake-horizontal,.shake-horizontal.shake-freeze,.shake-horizontal.shake-constant{animation:shake-horizontal 100ms ease-in-out infinite}@keyframes shake-vertical{2%{transform:translate(0, 6px) rotate(0)}4%{transform:translate(0, -1px) rotate(0)}6%{transform:translate(0, -7px) rotate(0)}8%{transform:translate(0, -1px) rotate(0)}10%{transform:translate(0, 9px) rotate(0)}12%{transform:translate(0, 1px) rotate(0)}14%{transform:translate(0, 3px) rotate(0)}16%{transform:translate(0, 6px) rotate(0)}18%{transform:translate(0, 0px) rotate(0)}20%{transform:translate(0, 2px) rotate(0)}22%{transform:translate(0, 1px) rotate(0)}24%{transform:translate(0, 3px) rotate(0)}26%{transform:translate(0, 4px) rotate(0)}28%{transform:translate(0, 0px) rotate(0)}30%{transform:translate(0, -8px) rotate(0)}32%{transform:translate(0, 6px) rotate(0)}34%{transform:translate(0, 6px) rotate(0)}36%{transform:translate(0, -4px) rotate(0)}38%{transform:translate(0, 2px) rotate(0)}40%{transform:translate(0, -8px) rotate(0)}42%{transform:translate(0, -9px) rotate(0)}44%{transform:translate(0, -3px) rotate(0)}46%{transform:translate(0, 0px) rotate(0)}48%{transform:translate(0, -7px) rotate(0)}50%{transform:translate(0, 0px) rotate(0)}52%{transform:translate(0, 3px) rotate(0)}54%{transform:translate(0, -4px) rotate(0)}56%{transform:translate(0, 3px) rotate(0)}58%{transform:translate(0, -9px) rotate(0)}60%{transform:translate(0, 9px) rotate(0)}62%{transform:translate(0, -6px) rotate(0)}64%{transform:translate(0, 0px) rotate(0)}66%{transform:translate(0, -4px) rotate(0)}68%{transform:translate(0, 1px) rotate(0)}70%{transform:translate(0, 5px) rotate(0)}72%{transform:translate(0, 0px) rotate(0)}74%{transform:translate(0, -6px) rotate(0)}76%{transform:translate(0, -3px) rotate(0)}78%{transform:translate(0, 3px) rotate(0)}80%{transform:translate(0, 6px) rotate(0)}82%{transform:translate(0, 2px) rotate(0)}84%{transform:translate(0, -3px) rotate(0)}86%{transform:translate(0, 1px) rotate(0)}88%{transform:translate(0, 1px) rotate(0)}90%{transform:translate(0, 10px) rotate(0)}92%{transform:translate(0, -2px) rotate(0)}94%{transform:translate(0, -2px) rotate(0)}96%{transform:translate(0, -6px) rotate(0)}98%{transform:translate(0, -9px) rotate(0)}0%,100%{transform:translate(0, 0) rotate(0)}}.shake-vertical:hover,.shake-trigger:hover .shake-vertical,.shake-vertical.shake-freeze,.shake-vertical.shake-constant{animation:shake-vertical 100ms ease-in-out infinite}@keyframes shake-rotate{2%{transform:translate(0, 0) rotate(3.5deg)}4%{transform:translate(0, 0) rotate(4.5deg)}6%{transform:translate(0, 0) rotate(1.5deg)}8%{transform:translate(0, 0) rotate(2.5deg)}10%{transform:translate(0, 0) rotate(3.5deg)}12%{transform:translate(0, 0) rotate(0.5deg)}14%{transform:translate(0, 0) rotate(-5.5deg)}16%{transform:translate(0, 0) rotate(-1.5deg)}18%{transform:translate(0, 0) rotate(1.5deg)}20%{transform:translate(0, 0) rotate(6.5deg)}22%{transform:translate(0, 0) rotate(3.5deg)}24%{transform:translate(0, 0) rotate(6.5deg)}26%{transform:translate(0, 0) rotate(-0.5deg)}28%{transform:translate(0, 0) rotate(7.5deg)}30%{transform:translate(0, 0) rotate(6.5deg)}32%{transform:translate(0, 0) rotate(-3.5deg)}34%{transform:translate(0, 0) rotate(-1.5deg)}36%{transform:translate(0, 0) rotate(3.5deg)}38%{transform:translate(0, 0) rotate(7.5deg)}40%{transform:translate(0, 0) rotate(-0.5deg)}42%{transform:translate(0, 0) rotate(3.5deg)}44%{transform:translate(0, 0) rotate(7.5deg)}46%{transform:translate(0, 0) rotate(7.5deg)}48%{transform:translate(0, 0) rotate(3.5deg)}50%{transform:translate(0, 0) rotate(0.5deg)}52%{transform:translate(0, 0) rotate(2.5deg)}54%{transform:translate(0, 0) rotate(5.5deg)}56%{transform:translate(0, 0) rotate(2.5deg)}58%{transform:translate(0, 0) rotate(-4.5deg)}60%{transform:translate(0, 0) rotate(-4.5deg)}62%{transform:translate(0, 0) rotate(7.5deg)}64%{transform:translate(0, 0) rotate(0.5deg)}66%{transform:translate(0, 0) rotate(2.5deg)}68%{transform:translate(0, 0) rotate(2.5deg)}70%{transform:translate(0, 0) rotate(5.5deg)}72%{transform:translate(0, 0) rotate(5.5deg)}74%{transform:translate(0, 0) rotate(-2.5deg)}76%{transform:translate(0, 0) rotate(7.5deg)}78%{transform:translate(0, 0) rotate(2.5deg)}80%{transform:translate(0, 0) rotate(-6.5deg)}82%{transform:translate(0, 0) rotate(-0.5deg)}84%{transform:translate(0, 0) rotate(2.5deg)}86%{transform:translate(0, 0) rotate(5.5deg)}88%{transform:translate(0, 0) rotate(0.5deg)}90%{transform:translate(0, 0) rotate(-0.5deg)}92%{transform:translate(0, 0) rotate(-1.5deg)}94%{transform:translate(0, 0) rotate(-0.5deg)}96%{transform:translate(0, 0) rotate(0.5deg)}98%{transform:translate(0, 0) rotate(-4.5deg)}0%,100%{transform:translate(0, 0) rotate(0)}}.shake-rotate:hover,.shake-trigger:hover .shake-rotate,.shake-rotate.shake-freeze,.shake-rotate.shake-constant{animation:shake-rotate 100ms ease-in-out infinite}@keyframes shake-opacity{10%{transform:translate(-4px, 4px) rotate(-1.5deg);opacity:0.25}20%{transform:translate(-1px, 2px) rotate(0.5deg);opacity:1}30%{transform:translate(2px, -4px) rotate(-1.5deg);opacity:0.03}40%{transform:translate(-1px, -2px) rotate(1.5deg);opacity:0.55}50%{transform:translate(5px, -4px) rotate(1.5deg);opacity:0.09}60%{transform:translate(-1px, 1px) rotate(-1.5deg);opacity:0.97}70%{transform:translate(4px, 1px) rotate(0.5deg);opacity:0.96}80%{transform:translate(3px, 2px) rotate(2.5deg);opacity:0.83}90%{transform:translate(-2px, -4px) rotate(-1.5deg);opacity:0.09}0%,100%{transform:translate(0, 0) rotate(0)}}.shake-opacity:hover,.shake-trigger:hover .shake-opacity,.shake-opacity.shake-freeze,.shake-opacity.shake-constant{animation:shake-opacity 0.5s ease-in-out infinite}@keyframes shake-crazy{10%{transform:translate(-10px, -19px) rotate(6deg);opacity:0.47}20%{transform:translate(-11px, 10px) rotate(5deg);opacity:0.82}30%{transform:translate(17px, -3px) rotate(-9deg);opacity:0.34}40%{transform:translate(11px, 19px) rotate(5deg);opacity:0.4}50%{transform:translate(-11px, 13px) rotate(1deg);opacity:0.97}60%{transform:translate(17px, -16px) rotate(7deg);opacity:0.24}70%{transform:translate(-10px, -12px) rotate(-6deg);opacity:0.56}80%{transform:translate(13px, -19px) rotate(-4deg);opacity:0.96}90%{transform:translate(-18px, -11px) rotate(3deg);opacity:0.49}0%,100%{transform:translate(0, 0) rotate(0)}}.shake-crazy:hover,.shake-trigger:hover .shake-crazy,.shake-crazy.shake-freeze,.shake-crazy.shake-constant{animation:shake-crazy 100ms ease-in-out infinite}@keyframes shake-chunk{2%{transform:translate(5px, 2px) rotate(-12deg)}4%{transform:translate(-6px, 3px) rotate(1deg)}6%{transform:translate(3px, 6px) rotate(14deg)}8%{transform:translate(1px, 8px) rotate(1deg)}10%{transform:translate(-5px, 10px) rotate(0deg)}12%{transform:translate(-11px, 2px) rotate(7deg)}14%{transform:translate(4px, 15px) rotate(11deg)}16%{transform:translate(4px, -8px) rotate(15deg)}18%{transform:translate(-5px, 10px) rotate(1deg)}20%{transform:translate(-1px, 3px) rotate(15deg)}22%{transform:translate(-8px, 5px) rotate(-6deg)}24%{transform:translate(-1px, -9px) rotate(8deg)}26%{transform:translate(9px, 11px) rotate(-13deg)}28%{transform:translate(-7px, 4px) rotate(9deg)}30%{transform:translate(8px, 14px) rotate(9deg)}32%{transform:translate(-4px, 11px) rotate(-11deg)}34%{transform:translate(14px, 11px) rotate(-8deg)}36%{transform:translate(-13px, -8px) rotate(13deg)}38%{transform:translate(-12px, 1px) rotate(-13deg)}0%,40%,100%{transform:translate(0, 0) rotate(0)}}.shake-chunk:hover,.shake-trigger:hover .shake-chunk,.shake-chunk.shake-freeze,.shake-chunk.shake-constant{animation:shake-chunk 4s ease-in-out infinite} \ No newline at end of file diff --git a/static/css/editor.scss b/static/css/editor.scss deleted file mode 100755 index f713388..0000000 --- a/static/css/editor.scss +++ /dev/null @@ -1,696 +0,0 @@ -@charset "UTF-8"; - -$simditor-button-height: 40px; -$simditor-button-width: 46px; - -.simditor { - position: relative; - border: 1px solid #c9d8db; - - .simditor-wrapper { - position: relative; - background: #ffffff; - - & > textarea { - display: none !important; - width: 100%; - box-sizing: border-box; - font-family: monaco; - font-size: 16px; - line-height: 1.6; - border: none; - padding: 22px 15px 40px; - min-height: 300px; - outline: none; - background: transparent; - resize: none; - } - - .simditor-placeholder { - display: none; - position: absolute; - left: 0; - z-index: 0; - padding: 22px 15px; - font-size: 16px; - font-family: arial, sans-serif; - line-height: 1.5; - color: #999999; - background: transparent; - } - - &.toolbar-floating { - .simditor-toolbar { - position: fixed; - top: 0; - z-index: 10; - box-shadow: 0 0 6px rgba(0,0,0,0.1); - } - } - - .simditor-image-loading { - width: 100%; - height: 100%; - position: absolute; - top: 0; - left: 0; - z-index: 2; - - .progress { - width: 100%; - height: 100%; - background: rgba(0,0,0,0.4); - position: absolute; - bottom: 0; - left: 0; - } - } - } - - .simditor-body { - padding: 22px 15px 40px; - min-height: 300px; - outline: none; - cursor: text; - position: relative; - z-index: 1; - background: transparent; - - a.selected { - background: #b3d4fd; - } - - a.simditor-mention { - cursor: pointer; - } - - .simditor-table { - position: relative; - - &.resizing { - cursor: col-resize; - } - - .simditor-resize-handle { - position: absolute; - left: 0; - top: 0; - width: 10px; - height: 100%; - cursor: col-resize; - } - } - - pre { - /*min-height: 28px;*/ - box-sizing: border-box; - -moz-box-sizing: border-box; - word-wrap: break-word!important; - white-space: pre-wrap!important; - } - - img { - cursor: pointer; - - &.selected { - box-shadow: 0 0 0 4px #cccccc; - } - } - } - - .simditor-paste-bin { - position: fixed; - bottom: 10px; - right: 10px; - width: 1px; - height: 20px; - font-size: 1px; - line-height: 1px; - overflow: hidden; - padding: 0; - margin: 0; - opacity: 0; - -webkit-user-select: text; - } - - .simditor-toolbar { - border-bottom: 1px solid #eeeeee; - background: #ffffff; - width: 100%; - - & > ul { - margin: 0; - padding: 0 0 0 6px; - list-style: none; - - & > li { - position: relative; - display: inline-block; - font-size: 0; - - & > span.separator { - display: inline-block; - background: #cfcfcf; - width: 1px; - height: 18px; - margin: ($simditor-button-height - 18px) / 2 15px; - vertical-align: middle; - } - - & > .toolbar-item { - display: inline-block; - width: $simditor-button-width; - height: $simditor-button-height; - outline: none; - color: #333333; - font-size: 15px; - line-height: $simditor-button-height; - vertical-align: middle; - text-align: center; - text-decoration: none; - - span { - opacity: 0.6; - - &.simditor-icon { - display: inline; - line-height: normal; - } - } - - &:hover span { - opacity: 1; - } - - &.active { - background: #eeeeee; - - span { - opacity: 1; - } - } - - &.disabled { - cursor: default; - - span { - opacity: 0.3; - } - } - - &.toolbar-item-title { - span:before { - content: "H"; - font-size: 19px; - font-weight: bold; - font-family: 'Times New Roman'; - } - - &.active-h1 span:before { - content: 'H1'; - font-size: 18px; - } - - &.active-h2 span:before { - content: 'H2'; - font-size: 18px; - } - - &.active-h3 span:before { - content: 'H3'; - font-size: 18px; - } - } - - &.toolbar-item-image { - position: relative; - overflow: hidden; - - & > input[type=file] { - position: absolute; - right: 0px; - top: 0px; - opacity: 0; - font-size: 100px; - cursor: pointer; - } - } - } - - &.menu-on { - .toolbar-item { - position: relative; - z-index: 20; - background: #ffffff; - box-shadow: 0 1px 4px rgba(0,0,0,0.3); - - span { - opacity: 1; - } - } - - .toolbar-menu { - display: block; - } - } - } - } - - .toolbar-menu { - display: none; - position: absolute; - top: $simditor-button-height; - left: 0; - z-index: 21; - background: #ffffff; - text-align: left; - box-shadow: 0 0 4px rgba(0,0,0,0.3); - - &:before { - content: ''; - display: block; - width: $simditor-button-width; - height: 4px; - background: #ffffff; - position: absolute; - top: -3px; - left: 0; - } - - ul { - min-width: 160px; - list-style: none; - margin: 0; - padding: 10px 1px; - - & > li { - - .menu-item { - display: block; - font-size:16px; - line-height: 2em; - padding: 0 10px; - text-decoration: none; - color: #666666; - - &:hover { - background: #f6f6f6; - } - - &.menu-item-h1 { - font-size: 24px; - color: #333333; - } - - &.menu-item-h2 { - font-size: 22px; - color: #333333; - } - - &.menu-item-h3 { - font-size: 20px; - color: #333333; - } - - &.menu-item-h4 { - font-size: 18px; - color: #333333; - } - - &.menu-item-h5 { - font-size: 16px; - color: #333333; - } - } - - .separator { - display: block; - border-top: 1px solid #cccccc; - height: 0; - line-height: 0; - font-size: 0; - margin: 6px 0; - } - } - - } - - &.toolbar-menu-color { - width: 96px; - - .color-list { - height: 40px; - margin: 10px 6px 6px 10px; - padding: 0; - - min-width: 0; - - li { - float: left; - margin: 0 4px 4px 0; - - .font-color { - display: block; - width: 16px; - height: 16px; - background: #dfdfdf; - border-radius: 2px; - - &:hover { - opacity: 0.8; - } - - &.font-color-default { - background: #333333; - } - } - - $font-colors: #E33737 #e28b41 #c8a732 #209361 #418caf #aa8773 #999999; - $i: 1; - @each $color in $font-colors { - .font-color-#{$i} { - background: $color; - } - $i: $i + 1; - } - } - } - } - - &.toolbar-menu-table { - .menu-create-table { - background: #ffffff; - padding: 1px; - - table { - border: none; - border-collapse: collapse; - border-spacing: 0; - table-layout: fixed; - - td { - padding: 0; - cursor: pointer; - - &:before { - width: 16px; - height: 16px; - border: 1px solid #ffffff; - background: #f3f3f3; - display: block; - content: '' - } - - &.selected:before { - background: #cfcfcf; - } - } - } - } - - .menu-edit-table { - display: none; - - ul { - li { - white-space: nowrap; - } - } - } - } - - &.toolbar-menu-image { - .menu-item-upload-image { - position: relative; - overflow: hidden; - - input[type=file] { - position: absolute; - right: 0px; - top: 0px; - opacity: 0; - font-size: 100px; - cursor: pointer; - } - } - } - - &.toolbar-menu-alignment { - width: 100%; - ul { - min-width: 100%; - } - .menu-item { - text-align: center; - } - } - } - } - - .simditor-popover { - display: none; - padding: 5px 8px 0; - background: #ffffff; - box-shadow: 0 1px 4px rgba(0,0,0,0.4); - border-radius: 2px; - position: absolute; - z-index: 2; - - .settings-field { - margin: 0 0 5px 0; - font-size: 12px; - height: 25px; - line-height: 25px; - - label { - display: inline-block; - margin: 0 5px 0 0; - } - - input[type=text] { - display: inline-block; - width: 200px; - box-sizing: border-box; - font-size: 12px; - - &.image-size { - width: 83px; - } - } - - .times { - display: inline-block; - width: 26px; - font-size: 12px; - text-align: center; - } - } - - &.link-popover .btn-unlink, - &.image-popover .btn-upload, - &.image-popover .btn-restore { - display: inline-block; - margin: 0 0 0 5px; - color: #333333; - font-size: 14px; - outline: 0; - - span { - opacity: 0.6; - } - - &:hover span { - opacity: 1; - } - } - - &.image-popover .btn-upload { - position: relative; - display: inline-block; - overflow: hidden; - vertical-align: middle; - - input[type=file] { - position: absolute; - right: 0px; - top: 0px; - opacity: 0; - height: 100%; - width: 28px; - } - } - } - - &.simditor-mobile { - .simditor-wrapper.toolbar-floating .simditor-toolbar { - position: absolute; - top: 0; - z-index: 10; - box-shadow: 0 0 6px rgba(0,0,0,0.1); - } - } -} - - - -.simditor .simditor-body, .editor-style { - font-size: 16px; - font-family: arial, sans-serif; - line-height: 1.6; - color: #333; - outline: none; - word-wrap: break-word; - - & > :first-child { - margin-top: 0!important; - } - - a{ color: #4298BA; text-decoration: none; word-break: break-all;} - a:visited{ color: #4298BA; } - a:hover{ color: #0F769F; } - a:active{ color:#9E792E; } - a:hover, a:active{ outline: 0; } - - h1,h2,h3,h4,h5,h6 { - font-weight: normal; - margin: 40px 0 20px; - color: #000000; - } - - h1 { font-size: 24px; } - h2 { font-size: 22px; } - h3 { font-size: 20px; } - h4 { font-size: 18px; } - h5 { font-size: 16px; } - h6 { font-size: 16px; } - - p, div { - word-wrap: break-word; - margin: 0 0 15px 0; - color: #333; - word-wrap: break-word; - } - - b, strong { - font-weight: bold; - } - - i, em { - font-style: italic; - } - - u { - text-decoration: underline; - } - - strike, del { - text-decoration: line-through; - } - - ul, ol { - list-style:disc outside none; - margin: 15px 0; - padding: 0 0 0 40px; - line-height: 1.6; - - ul, ol { - padding-left: 30px; - } - - ul { - list-style: circle outside none; - - ul { - list-style: square outside none; - } - } - } - - ol { - list-style:decimal; - } - - blockquote { - border-left: 6px solid #ddd; - padding: 5px 0 5px 10px; - margin: 15px 0 15px 15px; - - & > :first-child { - margin-top: 0; - } - } - - code { - display: inline-block; - padding: 0 4px; - margin: 0 5px; - background: #eeeeee; - border-radius: 3px; - font-size: 13px; - font-family: 'monaco', 'Consolas', "Liberation Mono", Courier, monospace; - } - - pre { - padding: 10px 5px 10px 10px; - margin: 15px 0; - display: block; - line-height: 18px; - background: #F0F0F0; - border-radius: 3px; - font-size:13px; - font-family: 'monaco', 'Consolas', "Liberation Mono", Courier, monospace; - white-space: pre; - word-wrap: normal; - overflow-x: auto; - - code { - display: block; - padding: 0; - margin: 0; - background: none; - border-radius: 0; - } - } - - hr { - display: block; - height: 0px; - border: 0; - border-top: 1px solid #ccc; - margin: 15px 0; - padding: 0; - } - - table { - width: 100%; - table-layout: fixed; - border-collapse: collapse; - border-spacing: 0; - margin: 15px 0; - - thead { - background-color: #f9f9f9; - } - - td, th { - min-width: 40px; - height: 30px; - border: 1px solid #ccc; - vertical-align: top; - padding: 2px 4px; - text-align: left; - box-sizing: border-box; - - &.active { - background-color: #ffffee; - } - } - } - - - img { - margin: 0 5px; - vertical-align: middle; - } - -} diff --git a/static/css/flickity.css b/static/css/flickity.css deleted file mode 100755 index b8eca4e..0000000 --- a/static/css/flickity.css +++ /dev/null @@ -1,141 +0,0 @@ -/*! Flickity v1.0.2 -http://flickity.metafizzy.co ----------------------------------------------- */ - -.flickity-enabled { - position: relative; -} - -.flickity-enabled:focus { outline: none; } - -.flickity-viewport { - overflow: hidden; - position: relative; - height: 100%; -} - -.flickity-slider { - position: absolute; - width: 100%; - height: 100%; -} - -/* draggable */ - -.flickity-enabled.is-draggable { - -webkit-tap-highlight-color: transparent; - tap-highlight-color: transparent; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.flickity-enabled.is-draggable .flickity-viewport { - cursor: move; - cursor: -webkit-grab; - cursor: grab; -} - -.flickity-enabled.is-draggable .flickity-viewport.is-pointer-down { - cursor: -webkit-grabbing; - cursor: grabbing; -} - -/* ---- previous/next buttons ---- */ - -.flickity-prev-next-button { - position: absolute; - top: 50%; - width: 44px; - height: 44px; - border: none; - border-radius: 50%; - background: white; - background: hsla(0, 0%, 100%, 0.75); - cursor: pointer; - /* vertically center */ - -webkit-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%); -} - -.flickity-prev-next-button:hover { background: white; } - -.flickity-prev-next-button:focus { - outline: none; - box-shadow: 0 0 0 5px #09F; -} - -.flickity-prev-next-button:active { - filter: alpha(opacity=60); /* IE8 */ - opacity: 0.6; -} - -.flickity-prev-next-button.previous { left: 10px; } -.flickity-prev-next-button.next { right: 10px; } -/* right to left */ -.flickity-rtl .flickity-prev-next-button.previous { - left: auto; - right: 10px; -} -.flickity-rtl .flickity-prev-next-button.next { - right: auto; - left: 10px; -} - -.flickity-prev-next-button:disabled { - filter: alpha(opacity=30); /* IE8 */ - opacity: 0.3; - cursor: auto; -} - -.flickity-prev-next-button svg { - position: absolute; - left: 20%; - top: 20%; - width: 60%; - height: 60%; -} - -.flickity-prev-next-button .arrow { - fill: #333; -} - -/* color & size if no SVG - IE8 and Android 2.3 */ -.flickity-prev-next-button.no-svg { - color: #333; - font-size: 26px; -} - -/* ---- page dots ---- */ - -.flickity-page-dots { - position: absolute; - width: 100%; - bottom: -25px; - padding: 0; - margin: 0; - list-style: none; - text-align: center; - line-height: 1; -} - -.flickity-rtl .flickity-page-dots { direction: rtl; } - -.flickity-page-dots .dot { - display: inline-block; - width: 10px; - height: 10px; - margin: 0 8px; - background: #333; - border-radius: 50%; - filter: alpha(opacity=25); /* IE8 */ - opacity: 0.25; - cursor: pointer; -} - -.flickity-page-dots .dot.is-selected { - filter: alpha(opacity=100); /* IE8 */ - opacity: 1; -} diff --git a/static/css/font-awesome.min.css b/static/css/font-awesome.min.css deleted file mode 100755 index aae88c4..0000000 --- a/static/css/font-awesome.min.css +++ /dev/null @@ -1,4 +0,0 @@ -/*! - * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.4.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.4.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.4.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.4.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"} diff --git a/static/css/font.css b/static/css/font.css deleted file mode 100755 index 00d6931..0000000 --- a/static/css/font.css +++ /dev/null @@ -1,52 +0,0 @@ -@font-face { - font-family: 'Source Sans Pro'; - font-style: normal; - font-weight: 300; - src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url('../fonts/sourcesanspro/sourcesanspro-light.woff') format('woff'); -} -@font-face { - font-family: 'Source Sans Pro'; - font-style: normal; - font-weight: 400; - src: local('Source Sans Pro'), local('SourceSansPro-Regular'), url('../fonts/sourcesanspro/sourcesanspro.woff') format('woff'); -} -@font-face { - font-family: 'Source Sans Pro'; - font-style: normal; - font-weight: 700; - src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url('../fonts/sourcesanspro/sourcesanspro-bold.woff') format('woff'); -} - -@font-face { - font-family: 'exo_2bold'; - src: url('../fonts/Exo2-Bold-webfont.eot'); - src: url('../fonts/Exo2-Bold-webfont.eot?#iefix') format('embedded-opentype'), - url('../fonts/Exo2-Bold-webfont.woff') format('woff'), - url('../fonts/Exo2-Bold-webfont.ttf') format('truetype'), - url('../fonts/Exo2-Bold-webfont.svg#exo_2bold') format('svg'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'exo_2light'; - src: url('../fonts/Exo2-Light-webfont.eot'); - src: url('../fonts/Exo2-Light-webfont.eot?#iefix') format('embedded-opentype'), - url('../fonts/Exo2-Light-webfont.woff') format('woff'), - url('../fonts/Exo2-Light-webfont.ttf') format('truetype'), - url('../fonts/Exo2-Light-webfont.svg#exo_2light') format('svg'); - font-weight: normal; - font-style: normal; - -} - -@font-face { - font-family: 'exo_2regular'; - src: url('../fonts/Exo2-Regular-webfont.eot'); - src: url('../fonts/Exo2-Regular-webfont.eot?#iefix') format('embedded-opentype'), - url('../fonts/Exo2-Regular-webfont.woff') format('woff'), - url('../fonts/Exo2-Regular-webfont.ttf') format('truetype'), - url('../fonts/Exo2-Regular-webfont.svg#exo_2regular') format('svg'); - font-weight: normal; - font-style: normal; -} \ No newline at end of file diff --git a/static/css/fonticon.scss b/static/css/fonticon.scss deleted file mode 100755 index 7cdf7b8..0000000 --- a/static/css/fonticon.scss +++ /dev/null @@ -1 +0,0 @@ -@font-face{font-family:'Simditor';src:url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABp8AA4AAAAAKmwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAaYAAAABoAAAAcdO8GE09TLzIAAAG0AAAARQAAAGAQ+ZFXY21hcAAAAkgAAABRAAABWuA2Gx9jdnQgAAAEgAAAAAoAAAAKAwQAxGZwZ20AAAKcAAABsQAAAmUPtC+nZ2x5ZgAABNgAABPeAAAgZG/p6QxoZWFkAAABRAAAADAAAAA2BvuCgGhoZWEAAAF0AAAAHgAAACQH9QTlaG10eAAAAfwAAABKAAAAlHv7AItsb2NhAAAEjAAAAEwAAABMi4qTXm1heHAAAAGUAAAAIAAAACABRwHNbmFtZQAAGLgAAAEFAAAB12vS/ulwb3N0AAAZwAAAAJ4AAAFsyCrvunByZXAAAARQAAAALgAAAC6w8isUeNpjYGRgYADiKAkPy3h+m68M8swfgCIMF0/IVyDo/84sFswJQC4HAxNIFAAZwAnyeNpjYGRgYE5gmMAQzWLBwPD/O5AEiqAAVQBa6wPkAAAAAQAAACUAoAAKAAAAAAACAAEAAgAWAAABAAEpAAAAAHjaY2BhnsA4gYGVgYGpn+kgAwNDL4RmfMxgxMgCFGVgZWaAAUYBBjTQwMDwQY454X8BQzRzAsMEIJcRSVaBgREAQ9oK6QAAAHjaY8xhUGQAAsYABgbmDwjMYsEgxCzBwMDkAOQnALEEgx1UjhNMr4BjTqBakDxC/wqIPsYMqJoEKIbpk0C1C4zXM3DA5AEzchbtAAB42mNgYGBmgGAZBkYGEAgB8hjBfBYGCyDNxcDBwASEDAy8DAof5P7/B6sCsRmAbOb/3/8/FWCD6oUCRjaIkWA2SCcLAyoAqmZlGN4AALmUC0kAAAB42l1Ru05bQRDdDQ8DgcTYIDnaFLOZkALvhTZIIK4uwsh2YzlC2o1c5GJcwAdQIFGD9msGaChTpE2DkAskPoFPiJSZNYmiNDs7s3POmTNLypGqd2m956lzFkjhboNmm34npNpFgAfS9Y1GRtrBIy02M3rlun2/j8FmNOVOGkB5z1vKQ0bTTqAW7bl/Mj+D4T7/yzwHg5Zmmp5aZyE9hMB8M25p8DWjWXf9QV+xOlwNBoYU01Tc9cdUyv+W5lxtGbY2M5p3cCEiP5gGaGqtjUDTnzqkej6OYgly+WysDSamrD/JRHBhMl3VVC0zvnZwn+wsOtikSnPgAQ6wVZ6Ch+OjCYX0LYkyS0OEg9gqMULEJIdCTjl3sj8pUD6ShDFvktLOuGGtgXHkNTCozdMcvsxmU9tbhzB+EUfw3S/Gkg4+sqE2RoTYjlgKYAKRkFFVvqHGcy+LAbnU/jMQJWB5+u1fJwKtOzYRL2VtnWOMFYKe3zbf+WXF3apc50Whu3dVNVTplOZDL2ff4xFPj4XhoLHgzed9f6NA7Q2LGw2aA8GQ3o3e/9FadcRV3gsf2W81s7EWAAAAuAH/hbABjQBLsAhQWLEBAY5ZsUYGK1ghsBBZS7AUUlghsIBZHbAGK1xYWbAUKwAAAAAAowCFACECfwAAAAAAKgAqACoAKgAqACoAfgEkAcAChAK+A2oElgU2BbQGxgeYCBgIPgjGCU4KZgqKCq4LQAuYDDoMcAzuDXINoA4MDngO4g86D6QQMnjazVl5cBvXeX9vF4tdXHsBuwBBEvdBAgQXxOIgRPGQSEkULcoJJds6Yku2Na6TKJXHsnx0XNptHcvNpLaSJpkczthV68Zu0ulbQE58qXXaHK3j7ThjD6PmmnQmaTydSaqkmdbxkFC/tyApinXiuP2jlcC37/vegX3f8fu+7wExKIkQLjCPIxbxaNjCyNja4l3sTyqWm/vu1hbLQBdZLGVzlN3i3a7lrS1M+aaSVPKmkk5iz+tf/zrz+MrRJHMDgp3US3/tyjEvIQn1oiJCWd6dx7kGrsexLuGwjlm3AXSQ0h5M+5M4D3/1MNbx4b5AoPNmIIDdgQB0v/e9AJ78JqemVLfT4uN0sDtAHzBtvvvYsIK5aqWgcF6XyizRR+f+K9cAhRB9T3TpGTbCRlAARdAEehiRCYNwNulNLCmkzyZ+g6g2GTSIaJKCTUo2JpMGSS0RZBOp0kohb7E9lerzFMlghSDZ4nGRbLGJRpdXbGsKFy2UUlRL7Gk2iaacYzlfeCITbhJeJY0msvycorZj8eYWylMV4JFBtaXlKs1mszyS5UNh3azUqvlhnOLZsAZEvZpLp9gU35jAjfo4lvM5GEzn6xkzXAnrWogXMR/DITfvTuMy9hSyr0XSx+6VXa6+1NFbTrwrPvD+v8OevSHFLzT9cYbZgqXZ+U9cVahEC7nrTo6ZN33w2fdsCykvTOaaCTc+/vn7XbOf27X840CNEYXYRJYp6gEOswb24YPlHbsHtIgSvO1Tt/aNgglRWTJTIMsB9FeIDIAcTZKzidsmIYNoNumpEE0mvSDCQcMqgKDq0ecmDv/sY0grekXil4n0opXCvyTxF4Foi34pWCQpuZ1IxYPFdpK2LWAmPpT4UNotKmqzBTx4kEQTPe0X44lkatj5h6+gyFQUI8s9AErADCghpxChSUIq6W9aWq+iEh0EzeVzKTffqK/+V2sg03wjXKk33FSeImbcYKhhN4/fd9OemVtlr18f6ZF5rjKH9R0+33cKp0KsIC1o7ti2EsbaPoaf9TE+XHZxvoCWEf8N39gvBlhmi0fAkSinC+Kfdr71j6KX8/f3IsaxwaMgt13oOvSHqDWPUJHst4lgUJPbYrSVYGw6EzbJmG2FpioVMiaTCDWwcZMkbLKjgskBgwSWSMZuZQLUIDMxT7EVyNBuIAi2mZGtEbDEg/A3kgGDi/RuGQODQ1aiABSWA3WgrMgWkMa2JhlTyCTIBLxUhbO706lhZhxXc/mUgetmuFGpm3xYc6d4dz+mQgGbBJFN4OowNjCYIp9vmGG9EdZDsFbEwRoYbDIFk0O6mazUmTcx5w8nC4c/c/3p7WF9p8ozvPRZIiZYjLPTXh4L3N6Rxs1jUZ8Wcgksy/T3NAXGODmw0+tiotqg/xavsPwVwesV2K2Cl/ly0tv5m+Nbkjur+2+/7oX3J1hmBPMc5rMcJ/LTyd/77O8O9A6F5NSO04195WQ+hpmymxFwMCDybv/ymxm6EW2o/U5c+g/m28xHURrwSg9J2A0n5mmTq1J0gqZeiYPXQUOHmZdkeY9cVJ94Qi1CR37iiU30Y7+Cv0av4c9F0L2EBtEcWkTENMiMo3vJJmmD6OAuVwEILZGs3Z7IqkKRTNokK1uz4EAl29oDOp2cAMXJTZJVqPpm1afj+kChYlJIKSnnIv3R4qCjbWEGtF0ojU5SbaclIGQ12k+n6QqJUJVXdFCTG9SVA43XzUauVm3UzUoYAEUC7eaom4RA5WHeBPWKbIpqnBoHIFEjhqktgCHkc+z3qVyXq7TtjF6156NX3+4OMLwh9MVGPrhn7u6bzQd+7Ar7hq87cLq0N+lnmKasspMnM/trJQXf2tUIbTKzV98yuyunv6/pYVhmf9zcfnhPKp4+ox3a2j88qgd0r9fDjw8N4giTLrtu7Js5MCBRXHcjz6XbQK6HURiV0RSaR9ejD+BB1KpT3xq3iatCxmXC2hTHAeNlm0QNMmyTsk32GeSQTVIGydvkZoNsN8n7bKqSbZXWzM3UpWau8hQx+W2DsEtkrkIYmzCytQPUMW8TvtLaMU8n7Zj2FNvq/A7QV8IkXruleilbpaFiXrYMX5FE6J7WCVAgwyoqgJYWy+ym2tihtEOl4V1OSFCfllE4lb+KEvOK5RsCCPOqbTc3WHB0KvsB2LwB4NaVtkcMhuhEVrV4DVhIIUCNq8TdtIajYCS9TbIP4lqTlFVSapJDyrlYojCUoWtSKsk2SV4hg2AIDV5L10zNCSSpfMOJQXy+Pom1dK4KCFmrplNAmxWdBhrerHHaBrNJVnRM19fSbgoG2uZBZRP9QH3r87X+5Ph7s4m+SHlMqgT2v8wOhKfi0WA5tnNwNBceZ3ax+73Cyn5qF8wXBO/y6+fHsSsyMD/GXrORv7F/iOm/ZmQbPzhXzVaiiSwX3+a/cFAyG2IuEksmx40Zw5+KJNvH6Xza4J81Gmc8WnHXD//pMi+y3u3aFbr0XfYi8wvIlCQUR3nUANQ+gVoatSvIF1iKyzwkCgap2sRHKfDjccen05TKgz/PQmhcsvwZgHJsW0KiUrF24yKy+jSKxi4OUf+sloDw+AMCJWbGgUhmsgkgyiN1UAqoobL2xJvkiX4Ff7PcL0wemlz7sNddKd63YG7sn3KW/bPTdv5iXUaMsZlzpQAZJ+l6EvAujibRAmpxVG4Zk4puK6QHIDWT+G0yBDFtyiDCEgiI9NitHoE6T48CzoNlawB8LWmTpt1qDlB+c8RTtLaBBAHB4IhFnMrVlGp9bBXOgHaiD6W5txmH9K50oTT51F0ZSdOkzNg1CX2xNInfeEvuDPAmS/jDdz2lSbOSds2Yqiecif+NSY/tXT87tRwDzn81OgK2cx96BD2GHkStj1NZ+G1r6D1gGJxhZfabVDDWnnsrVDTWzB1Ab7Wt4x8GumZYxx4A+lGwp8cN8skl4rGtyCiMeGQLAabIZegP2tbsrfQpWwngTR2F/kHbuvsh+pStdwHvtvuh/xHb+hNHflmI1hvkUafYvpHmNo3j2q8ff6fzN39fQ+maLNWXgysJr3COGtQVzUZu5wdvzf9N5lxuZmvZFX+2Vssyv8hVD62b8A/We69ctvBn3oL5NsOX93lh5VHna46B5Gk+4Ln0ZfYx9jqomhqQDT7u1CNRm+x0ckE3RZBrneC013ayvrklmmLnZCsGPrFgk+10hm6TBdlinFLESfq25yC+JPtmds7vpWiixyBmTO+DALGgWKH98GTUds/4xLVORNkJgeJphm9u2TZNJxfcMHmGTrpWsYp0UUpt53bPvduBomy9CmlBio8xkO+5U8Ns3h2C7KgClZ4zAElUlx5m8hSSYiy3llnlqo38WnLVTan4cL0SZtOyfEoaVlnFzXkTMUnkZVaV7pBLUuer3ec+mCCXNk7A3zfK+4wHyyeNSqV8euTUFdTDsOQUpBcyz/sHEi6fW2FVAzaS8He6zwV5SL5ywr+PPDi8YJTvGDkNTmScuoJCLpqzuUbBj3kkohgaRu9FrbCDY4D/BkV/2SBF0I8BOcQSCUH9I1scaMNL8b6FOYpZ2NPFsl7gJ2yrDFrCUAsSf5P0KiQAemDDgPkCRACnXFSICOK+jOzJWiOMs5BXa0o3rwYPyYU3e8utDowz9y2/fu4QTuDE8r1O4vwAtAu17PK91N3ZB3JVZncXt19YPk4nnt0I9erKfsdCv5CrVimEQZ2HE2wEvwE4piEAKgrYfjiubFjKOghvjDNsJKGv7NcTCZ35gp7Af3ucdmmDOAcTLzr1dz8qoXHI1OqoFaTSjDr5r8upuyEphqoa5DcNJg9ftdewrqYR0yzQsg7RWll1zMo5OhjT5leovUP6a9xZXvR6Rf4sa6wlsuzLTgx81BHMsc39y3PwR/38Wc4r4BnBy53t/OjXwsMrV+QXby8PdoM8fG8tD4Gn8giCLax7l/6/lccFKgrOEQobeacCYYY7L1BR8I5cOrO/uUAEpz56kj2KPGBrSdRE74ZM/r3oJPo2apWpVAbsFiQVxTY7UIZUe4DCH2TycZtca5DDNkVPipR3OEi5HfBRtmTwOB8IT7aOQe+ITY7IVhVT77VOUaycAxEyHOCcrHzRo4fHZ3bMUw/0qWRvkxxT2kMlp3gmR1Qy0CRV5UtGvt44cPD4CcrMqOQk+G60rKhfFELBzFCpStlxhaQBQNV2vTGzgzIOK2R3k0yoX9oytn3uxpuOf4Ay9yrkdif5hpyb3oXpYY36O9VBRc91ExcnbVmvTnN5qLMrkw7YNvRwns+vQS6f24Csrg1r8YY9w+vf9J9nQDmBwJlAdMEre+GzuB4LmbMAp6WHys97xdOfkoYp/H7aKyknLhOqeH5tCr59fV3nQnenH61v/fEzHOd0MuuxdtGZ0tNF2Be8uvfTFI9L0mdOe6Tfukz4/efXpow7K3BifYvr13btYhM6x0wBNgWQiojbcIBJNCzJASZ0OfaAVTNFzbfsSXiWfZqE38BvaHHoAieuOfvM4hnmIdgniJwdeKjYIFtf3ehKsJlxVtH1+O61/STYvBsrwH63OvVCHnK+21CLp3Yrmt3AQG9wIGh4TRo9+rppr7lEhiAHli0MZhmwSUC2PNBT7JZHobHDE+nmu9aQCbY6thVsFSuWKwPPgEomwf4yCRgwyhQHMlWnZqf3hs6zscGzx3AMO1kWFHIsmMhqcjyO012zoLbDvKLFNC32hNNen9CXv0LR+6JvNH0mPeq7qCe+JPSc0aQzknYGsnR12dfnW1adyaufs+foAtoMDCQS+Fp9mSbRy3pYptKWu/eGzv1XDlURFYbk3BjmQHN55+YDxD5A0S0kKeo5jLzRXuotOcVKZegJkexOp3KrHhPDzhVpig/r/Ophqo16HNcT7NFO68a/nPD5592Ka/Cu6bueeur1ffOqV+iBF4K32X0fvp6Jdh7tLMwFfPNuhquNPfXTp+b3ymEdXpeebfauVYxefd8gZGlpVEQm+ghqFalWDUeZoLKwQWIm6YVUrUIPYcJZqgYZWYKMnCbjPaBOzSaabCWh12+TftnKdi90aqBXrQdSMJ87XzAq9KRJpc0yAT/t9qtPS8Fccdh0UrVwAOYJSmawVKaDvUo7OzA04iRmWMRUJhOYiqRC7+dieC17cK0+VTmXcMt6AgSYyMn1BLOo3f7w7Ron9vW5xD037BFdfX1i50eFrYXCVjznPJ57tbP06qu4gHtXOp9eWcG3YHZm374ZsdcjiqXR0ZIoenoxR2eufjp/jAuv0kVMb3fBytq9+zTEORP8wgtZVA61/FR+gMuQT3hAWpJBgRpZnF9RW4ybd+7DsYnT+SSfxmwS15Ia/sZRvGtxrvOZubvwyT/C0ZV76ZYr/mefZe7s/NnKv54/j7o1p+ODEajeG2gvIl6jFUs2TCiefHarN12tQAEEzlc0wNAwGTWsJv1inxdciI+DT2WUViBqwguQotrWI8MGlTVWiOZcklbqZi5Pr0kbE2wDm0HIhGNMHIf4fIoH/KXgXAN0FnEoxgKe83j0SU7jyo3OT3rLW7BY6U8KOD17j7qQjhSjewUWL2l/z8xh3tu7sCI35EQk78J4gMGPnFh5zCWUXALfozE/7/xL4Rt7x09oMpv0cB5BjEkMK8jaeZz7RFT1cC6c9HKrZ/+Y8/uGgnT0eUQ8Br30gvxUMgFPCKoQBo5t0h85ggA+YcOKdC/mXxx/c5FezBN1WCT6i5zFML8UiffF5ya/8eYFOsARDCMijATpSOhFjohyG4k4WCSMDAbrDRbbHtpSvkT5LGp7xZDu3NFP+RFmWI9XlNRgl7X2j0xFaQ7ZSAaT9M4xHcdmrRFM5nGS5bLMvUJHjuID/hMn+Jv8LzMv9XU+4bmE2Mhs5/nOeUa+ufPq/bHY1Y828SgeuQULy986fHhVDmBvzEtgeSEaGVBX2VBV6w6ga2BOWUANiKCN/AQex9gMa+zFlWeDmd7snj/4UEIKM8K7m+cPHnwt0BPfw39wiNVEE3+nuYdi/GrOtlbX51bvNSAv1gx6tZE1KKDXDKjeKcCv3lVkN+VY+U10423G2YuASwcomLJPStoFTeoIlKChBwB5+XVnJNId+aQzcqukHZ+lPdr8w6/tof9H51opU4J5pXuux52Ro92Ru52Rh/5PzvVOc+grz7XxWBtP9T86FIuESyfZZ5ivQkSKoRTUDEQwWu6gTlHOY7c4NUxRLmBArMFQRlgZCnEegUJciKYNCmG6+KrHsZbna3VwPBGHIQPNSbg2gScxZs0gVJ34z3fjqbypLn3zHtfCG2bIJd3w+B2l2jjLYu3I157BLuary52g12X4vcNy9OWTh4WouyT6XEWfznGM2rmEv3XgAMV/qgPmTuf34RQ6hloC1YAO2OTcdSlxeHHJeVfiW6J8XabVJb33S3ZvO1ibnsJKKlA1p5ok5txrs/R3PWTpcDJKasq5YKQ/meqGxIqubSyQsZLm82nFrIUbGtdI19Jamv1cvFCIL5+lLf7p4g1HFheP3IC3PHZk8QbmzkK80+cM/DBe6Aj4dxYXOw+ev+ee8/HvOoHm8t1mEU2hQ6s2lbBbCVrwo0QBCv4ep1im59rm3G52Iz8cg+Y42+E0mX4o+pXhStOJ7z2QxrWH6036gw2RFCfVu1xer1b5EN8hGS1i51e2tdsAsDkIPGYliDdesazes7CRI9OdoekjR6bxa8mk4OL7XB7OJ3aGoMLP4ddyVS7j5kK/36mLGfHnojgBj4/h49BOiPiadnfd9BGRDfJ9nKua6657hIdVGMMiWEOnOmvoYoT+C93/Vj8AAHjafY+/asMwEIc/JU6aQhsyltJBQ6eCg20IgdCt1GTwlNJsHUJijCCxwHaeqVufpM/Qta/Ri31ZOkTipO9Ov/sjYMwXhm7d8qBsGPGs3OOKd+U+j3wqB6L5UR5wY4zykJGxojTBtXj3bdaJDROelHvS91W5z5IP5UA038oD7vhVHjIxY1I8JQ2ObUs1lkz2C6S+bNzWl7XNMnHfRHNgJ2cjykoC7rBzjRdakVNwZM/m9LDKi+N+I3AunrYJhagsCVMiuRdi/0t20Vg0IXOxRJQxs26U1FdFbpNpZBf23FowTsJ5mETx7OKEa+ldyedcO9GpRzcF67yqnS9tLHUvVfgDz/ZF8gAAAHjabc25DgFhGIXh/53B2Pd9J9HPN/bSWolC4iI0OjfgxhFO6SQnT/k6z333errI/dvkc5yHh+98YsRJEJAkRZoMWXLkKVCkRJkKVWrUadCkRZsOXXr0GTBkxDh2vp5O3u4SPO63YxiG0mQkp3Im53Ihl3Il13Ijt3In9/Igjz9NfVPf1Df1TX1T39Q39U19U9/UN/VNfVPfDm8tR0peAAB42mNgYGBkAIKLcceVwfQJ+XIoXQEARe8GegAA) format('woff');font-weight:normal;font-style:normal}.simditor-icon{display:inline-block;font:normal normal normal 14px/1 'Simditor';font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0,0)}.simditor-icon-code:before{content:'\f000'}.simditor-icon-bold:before{content:'\f001'}.simditor-icon-italic:before{content:'\f002'}.simditor-icon-underline:before{content:'\f003'}.simditor-icon-times:before{content:'\f004'}.simditor-icon-strikethrough:before{content:'\f005'}.simditor-icon-list-ol:before{content:'\f006'}.simditor-icon-list-ul:before{content:'\f007'}.simditor-icon-quote-left:before{content:'\f008'}.simditor-icon-table:before{content:'\f009'}.simditor-icon-link:before{content:'\f00a'}.simditor-icon-picture-o:before{content:'\f00b'}.simditor-icon-minus:before{content:'\f00c'}.simditor-icon-indent:before{content:'\f00d'}.simditor-icon-outdent:before{content:'\f00e'}.simditor-icon-unlink:before{content:'\f00f'}.simditor-icon-caret-down:before{content:'\f010'}.simditor-icon-caret-right:before{content:'\f011'}.simditor-icon-upload:before{content:'\f012'}.simditor-icon-undo:before{content:'\f013'}.simditor-icon-smile-o:before{content:'\f014'}.simditor-icon-tint:before{content:'\f015'}.simditor-icon-font:before{content:'\f016'}.simditor-icon-html5:before{content:'\f017'}.simditor-icon-mark:before{content:'\f018'}.simditor-icon-align-center:before{content:'\f019'}.simditor-icon-align-left:before{content:'\f01a'}.simditor-icon-align-right:before{content:'\f01b'}.simditor-icon-font-minus:before{content:'\f01c'}.simditor-icon-markdown:before{content:'\f01d'}.simditor-icon-checklist:before{content:'\f01e'} \ No newline at end of file diff --git a/static/css/hupercomment.css b/static/css/hupercomment.css deleted file mode 100644 index 56c2cca..0000000 --- a/static/css/hupercomment.css +++ /dev/null @@ -1,11 +0,0 @@ -.hc__menu__login{ - display: none; -} -.hc__footer__r{ - display: none; -} -.hc__reply__box__textarea::placeholder{ - text-align: center; -} -*::-webkit-input-placeholder { opacity:0; } -*::-moz-placeholder { opacity:0; } /* ff 4-18 */ \ No newline at end of file diff --git a/static/css/jqiuery_dialogs.css b/static/css/jqiuery_dialogs.css deleted file mode 100755 index ae096dd..0000000 --- a/static/css/jqiuery_dialogs.css +++ /dev/null @@ -1,117 +0,0 @@ -.ui-widget { -} - -.ui-widget-content { -border-radius: 3px; -background: #fff; -color: #383838; -} - -.ui-dialog { -overflow:hidden;position:absolute;top:0;left:0;outline:0; z-index: 2001; - box-shadow: 0 1px 10px rgba(0, 0, 0, .5), -5px 0 10px -23px rgba(0, 0, 0, .8), 5px 0 10px -13px rgba(0, 0, 0, .8), 0 0 0 rgba(0, 0, 0, .3) inset; -} - -#success { - padding: 0; - margin: 0; -} - -.ui-dialog .ui-dialog-content { -position:relative;border:0;padding:.5em 1em;background:none;overflow:auto -} - -.ui-widget-header { -background:#fff;color:#333;font-weight:bold -} - -.ui-dialog .ui-dialog-titlebar { - padding: 0.4em 1em; - position: relative; - background: #fff; - color: #666; - margin: 10px; -} -.ui-icon, .ui-widget-content .ui-icon{ - background-image: url("/static/img/1409200426_delete_remove_close_exit_trash-16.png"); -} -.ui-dialog-titlebar-close{ - position:absolute;right:.5em;top:50%;width:16px;margin:-10px 0 0 0;padding:1px;height:16px;border: 0; - background: #fff url("/static/img/1409200426_delete_remove_close_exit_trash-16.png") no-repeat; - cursor: pointer; - outline: 0; -} -.ui-button-icon-only .ui-icon{ - left: 50%; -margin-left: -8px; -} -.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon{ - position: absolute; -top: 50%; -margin-top: -8px; -} -.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1000;} -.ui-widget-overlay { - - background: none; -opacity: .5; -filter: Alpha(Opacity=50); -} -.ui-button{ - display: inline-block; -position: relative; -padding: 0; -line-height: normal; -margin-right: .1em; -cursor: pointer; -vertical-align: middle; -text-align: center; -overflow: visible; -} -.ui-dialog .ui-dialog-buttonpane button { - margin: .5em .4em .5em 0; - cursor: pointer; - font-family: Arial, sans-serif; - padding: 7px; - color: #666; - border: 1px solid #ccc; - font-weight: bold; - background: rgba(0, 0, 0, .4); - background: -webkit-linear-gradient(top, rgba(0, 0, 0, .2) 0, rgba(0, 0, 0, .4) 100%); - background: -moz-linear-gradient(top, rgba(0, 0, 0, .2) 0, rgba(0, 0, 0, .4) 100%); - background: -o-linear-gradient(top, rgba(0, 0, 0, .2) 0, rgba(0, 0, 0, .4) 100%); - background: linear-gradient(to bottom, rgba(0, 0, 0, .2) 0, rgba(0, 0, 0, .4) 100%); - -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, .07); - box-shadow: 0 1px 0 rgba(0, 0, 0, .07); - border-radius: 3px; - background: #fff; - background: -webkit-linear-gradient(top, #fff 0, #eee 100%); - background: -moz-linear-gradient(top, #fff 0, #eee 100%); - background: -o-linear-gradient(top, #fff 0, #eee 100%); - background: linear-gradient(to bottom, #fff 0, #eee 100%); - border-radius: 2px; - outline: 0; -} -.ui-dialog .ui-dialog-buttonpane button:hover{ - color: #333; -} -.validateTips { -background: #ffc; -min-height: 15px; -width: 100%; -padding: 2%; -font-size: 13px; -text-align: justify; -color: green; - margin-bottom: 5px; -} -.ui-dialog-buttonpane{ -background: #f1f1f1; - padding: 0 1em; - border-top: 1px solid #ccc; - border-radius: 0; -} -.noclose .ui-dialog-titlebar-close -{ - display:none; -} \ No newline at end of file diff --git a/static/css/jquery-ui.min.css b/static/css/jquery-ui.min.css deleted file mode 100755 index 51dc786..0000000 --- a/static/css/jquery-ui.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! jQuery UI - v1.11.4 - 2016-06-14 -* http://jqueryui.com -* Includes: core.css, autocomplete.css, menu.css -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} \ No newline at end of file diff --git a/static/css/jquery-ui.structure.min.css b/static/css/jquery-ui.structure.min.css deleted file mode 100755 index 3c20202..0000000 --- a/static/css/jquery-ui.structure.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery UI - v1.11.4 - 2016-06-14 -* http://jqueryui.com -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} \ No newline at end of file diff --git a/static/css/jquery.Jcrop.css b/static/css/jquery.Jcrop.css deleted file mode 100755 index 9a5dccf..0000000 --- a/static/css/jquery.Jcrop.css +++ /dev/null @@ -1,171 +0,0 @@ -/* jquery.Jcrop.css v0.9.12 - MIT License */ -/* - The outer-most container in a typical Jcrop instance - If you are having difficulty with formatting related to styles - on a parent element, place any fixes here or in a like selector - - You can also style this element if you want to add a border, etc - A better method for styling can be seen below with .jcrop-light - (Add a class to the holder and style elements for that extended class) -*/ -.jcrop-holder { - direction: ltr; - text-align: left; - margin: 0 auto; -border-radius: 5px; - padding: 10px; -} -.jcrop-keymgr{ - display: none; -} -/* Selection Border */ -.jcrop-vline, -.jcrop-hline { - background: #ffffff url("/static/img/Jcrop.gif"); - font-size: 0; - position: absolute; -} -.jcrop-vline { - height: 100%; - width: 1px !important; -} -.jcrop-vline.right { - right: 0; -} -.jcrop-hline { - height: 1px !important; - width: 100%; -} -.jcrop-hline.bottom { - bottom: 0; -} -/* Invisible click targets */ -.jcrop-tracker { - height: 100%; - width: 100%; - /* "turn off" link highlight */ - -webkit-tap-highlight-color: transparent; - /* disable callout, image save panel */ - -webkit-touch-callout: none; - /* disable cut copy paste */ - -webkit-user-select: none; -} -/* Selection Handles */ -.jcrop-handle { - background-color: #333333; - border: 1px #eeeeee solid; - width: 7px; - height: 7px; - font-size: 1px; -} -.jcrop-handle.ord-n { - left: 50%; - margin-left: -4px; - margin-top: -4px; - top: 0; -} -.jcrop-handle.ord-s { - bottom: 0; - left: 50%; - margin-bottom: -4px; - margin-left: -4px; -} -.jcrop-handle.ord-e { - margin-right: -4px; - margin-top: -4px; - right: 0; - top: 50%; -} -.jcrop-handle.ord-w { - left: 0; - margin-left: -4px; - margin-top: -4px; - top: 50%; -} -.jcrop-handle.ord-nw { - left: 0; - margin-left: -4px; - margin-top: -4px; - top: 0; -} -.jcrop-handle.ord-ne { - margin-right: -4px; - margin-top: -4px; - right: 0; - top: 0; -} -.jcrop-handle.ord-se { - bottom: 0; - margin-bottom: -4px; - margin-right: -4px; - right: 0; -} -.jcrop-handle.ord-sw { - bottom: 0; - left: 0; - margin-bottom: -4px; - margin-left: -4px; -} -/* Dragbars */ -.jcrop-dragbar.ord-n, -.jcrop-dragbar.ord-s { - height: 7px; - width: 100%; -} -.jcrop-dragbar.ord-e, -.jcrop-dragbar.ord-w { - height: 100%; - width: 7px; -} -.jcrop-dragbar.ord-n { - margin-top: -4px; -} -.jcrop-dragbar.ord-s { - bottom: 0; - margin-bottom: -4px; -} -.jcrop-dragbar.ord-e { - margin-right: -4px; - right: 0; -} -.jcrop-dragbar.ord-w { - margin-left: -4px; -} -/* The "jcrop-light" class/extension */ -.jcrop-light .jcrop-vline, -.jcrop-light .jcrop-hline { - background: #ffffff; - filter: alpha(opacity=70) !important; - opacity: .70!important; -} -.jcrop-light .jcrop-handle { - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - background-color: #000000; - border-color: #ffffff; - border-radius: 3px; -} -/* The "jcrop-dark" class/extension */ -.jcrop-dark .jcrop-vline, -.jcrop-dark .jcrop-hline { - background: #000000; - filter: alpha(opacity=70) !important; - opacity: 0.7 !important; -} -.jcrop-dark .jcrop-handle { - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - background-color: #ffffff; - border-color: #000000; - border-radius: 3px; -} -/* Simple macro to turn off the antlines */ -.solid-line .jcrop-vline, -.solid-line .jcrop-hline { - background: #ffffff; -} -/* Fix for twitter bootstrap et al. */ -.jcrop-holder img, -img.jcrop-preview { - max-width: none; -} \ No newline at end of file diff --git a/static/css/jquery.fancybox.css b/static/css/jquery.fancybox.css deleted file mode 100755 index 7497ba7..0000000 --- a/static/css/jquery.fancybox.css +++ /dev/null @@ -1,274 +0,0 @@ -/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */ -.fancybox-wrap, -.fancybox-skin, -.fancybox-outer, -.fancybox-inner, -.fancybox-image, -.fancybox-wrap iframe, -.fancybox-wrap object, -.fancybox-nav, -.fancybox-nav span, -.fancybox-tmp -{ - padding: 0; - margin: 0; - border: 0; - outline: none; - vertical-align: top; -} - -.fancybox-wrap { - position: absolute; - top: 0; - left: 0; - z-index: 8020; -} - -.fancybox-skin { - position: relative; - background: #f9f9f9; - color: #444; - text-shadow: none; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.fancybox-opened { - z-index: 8030; -} - -.fancybox-opened .fancybox-skin { - -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); - box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); -} - -.fancybox-outer, .fancybox-inner { - position: relative; -} - -.fancybox-inner { - overflow: hidden; -} - -.fancybox-type-iframe .fancybox-inner { - -webkit-overflow-scrolling: touch; -} - -.fancybox-error { - color: #444; - font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; - margin: 0; - padding: 15px; - white-space: nowrap; -} - -.fancybox-image, .fancybox-iframe { - display: block; - width: 100%; - height: 100%; -} - -.fancybox-image { - max-width: 100%; - max-height: 100%; -} - -#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { - background-image: url('/static/img/fancybox_sprite.png'); -} - -#fancybox-loading { - position: fixed; - top: 50%; - left: 50%; - margin-top: -22px; - margin-left: -22px; - background-position: 0 -108px; - opacity: 0.8; - cursor: pointer; - z-index: 8060; -} - -#fancybox-loading div { - width: 44px; - height: 44px; - background: url('/static/img/fancybox_loading.gif') center center no-repeat; -} - -.fancybox-close { - position: absolute; - top: -18px; - right: -18px; - width: 36px; - height: 36px; - cursor: pointer; - z-index: 8040; -} - -.fancybox-nav { - position: absolute; - top: 0; - width: 40%; - height: 100%; - cursor: pointer; - text-decoration: none; - background: transparent url('/static/img/blank.gif'); /* helps IE */ - -webkit-tap-highlight-color: rgba(0,0,0,0); - z-index: 8040; -} - -.fancybox-prev { - left: 0; -} - -.fancybox-next { - right: 0; -} - -.fancybox-nav span { - position: absolute; - top: 50%; - width: 36px; - height: 34px; - margin-top: -18px; - cursor: pointer; - z-index: 8040; - visibility: hidden; -} - -.fancybox-prev span { - left: 10px; - background-position: 0 -36px; -} - -.fancybox-next span { - right: 10px; - background-position: 0 -72px; -} - -.fancybox-nav:hover span { - visibility: visible; -} - -.fancybox-tmp { - position: absolute; - top: -99999px; - left: -99999px; - visibility: hidden; - max-width: 99999px; - max-height: 99999px; - overflow: visible !important; -} - -/* Overlay helper */ - -.fancybox-lock { - overflow: hidden !important; - width: auto; -} - -.fancybox-lock body { - overflow: hidden !important; -} - -.fancybox-lock-test { - overflow-y: hidden !important; -} - -.fancybox-overlay { - position: absolute; - top: 0; - left: 0; - overflow: hidden; - display: none; - z-index: 8010; - background: url('/static/img/fancybox_overlay.png'); -} - -.fancybox-overlay-fixed { - position: fixed; - bottom: 0; - right: 0; -} - -.fancybox-lock .fancybox-overlay { - overflow: auto; - overflow-y: scroll; -} - -/* Title helper */ - -.fancybox-title { - visibility: hidden; - font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; - position: relative; - text-shadow: none; - z-index: 8050; -} - -.fancybox-opened .fancybox-title { - visibility: visible; -} - -.fancybox-title-float-wrap { - position: absolute; - bottom: 0; - right: 50%; - margin-bottom: -35px; - z-index: 8050; - text-align: center; -} - -.fancybox-title-float-wrap .child { - display: inline-block; - margin-right: -100%; - padding: 2px 20px; - background: transparent; /* Fallback for web browsers that doesn't support RGBa */ - background: rgba(0, 0, 0, 0.8); - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; - text-shadow: 0 1px 2px #222; - color: #FFF; - font-weight: bold; - line-height: 24px; - white-space: nowrap; -} - -.fancybox-title-outside-wrap { - position: relative; - margin-top: 10px; - color: #fff; -} - -.fancybox-title-inside-wrap { - padding-top: 10px; -} - -.fancybox-title-over-wrap { - position: absolute; - bottom: 0; - left: 0; - color: #fff; - padding: 10px; - background: #000; - background: rgba(0, 0, 0, .8); -} - -/*Retina graphics!*/ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (min--moz-device-pixel-ratio: 1.5), - only screen and (min-device-pixel-ratio: 1.5){ - - #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { - background-image: url('/static/img/fancybox_sprite@2x.png'); - background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/ - } - - #fancybox-loading div { - background-image: url('/static/img/fancybox_loading@2x.gif'); - background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/ - } -} \ No newline at end of file diff --git a/static/css/kladr.min.css b/static/css/kladr.min.css deleted file mode 100755 index 367d0be..0000000 --- a/static/css/kladr.min.css +++ /dev/null @@ -1 +0,0 @@ -.kladr-error{color:#cb3e27}#kladr_autocomplete ul{position:absolute;display:block;margin:0;padding:0;border:1px solid #c4c4c4;background-color:#fff;z-index:9999;overflow-x:hidden;overflow-y:auto;min-width:200px;max-height:420px;color:#313131}#kladr_autocomplete li{display:list-item;list-style-type:none;margin:0;padding:8px 10px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#kladr_autocomplete li+li{border-top:1px solid #ededed}#kladr_autocomplete li:hover{background-color:#f2f2f2;cursor:pointer}#kladr_autocomplete li.active{background-color:#e9e9e9}#kladr_autocomplete a{text-decoration:none}#kladr_autocomplete strong{color:#038ebd}#kladr_autocomplete .spinner{position:absolute;display:block;margin:0;padding:0;width:16px;height:16px;background:url("/static/img/spinner.png") center center no-repeat;z-index:9999} \ No newline at end of file diff --git a/static/css/pie_chart.css b/static/css/pie_chart.css deleted file mode 100755 index b30b0c5..0000000 --- a/static/css/pie_chart.css +++ /dev/null @@ -1,39 +0,0 @@ -.chart { -} -.pieTip { - z-index: 2100; - position: absolute; - float: left; - min-width: 30px; - max-width: 300px; - padding: 5px 18px 6px; - border-radius: 2px; - background: rgba(255,255,255,.97); - color: #444; - font-size: 15px; - text-shadow: 0 1px 0 #fff; - text-transform: uppercase; - text-align: center; - line-height: 1.3; - letter-spacing: .06em; - box-shadow: 0 0 3px rgba(0,0,0,0.2), 0 1px 2px rgba(0,0,0,0.5); - -webkit-transform: all .3s; - -moz-transform: all .3s; - -ms-transform: all .3s; - -o-transform: all .3s; - transform: all .3s; - pointer-events: none; -} -.pieTip:after { - position: absolute; - left: 50%; - bottom: -6px; - content: ""; - height: 0; - margin: 0 0 0 -6px; - border-right: 5px solid transparent; - border-left: 5px solid transparent; - border-top: 6px solid rgba(255,255,255,.95); - line-height: 0; -} -.chart path { cursor: pointer; } \ No newline at end of file diff --git a/static/css/simditor.css b/static/css/simditor.css deleted file mode 100755 index 341ae82..0000000 --- a/static/css/simditor.css +++ /dev/null @@ -1,746 +0,0 @@ -/*! -* Simditor v2.3.6 -* http://simditor.tower.im/ -* 2015-12-21 -*/ -@font-face { - font-family: 'Simditor'; - src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABp8AA4AAAAAKmwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAaYAAAABoAAAAcdO8GE09TLzIAAAG0AAAARQAAAGAQ+ZFXY21hcAAAAkgAAABRAAABWuA2Gx9jdnQgAAAEgAAAAAoAAAAKAwQAxGZwZ20AAAKcAAABsQAAAmUPtC+nZ2x5ZgAABNgAABPeAAAgZG/p6QxoZWFkAAABRAAAADAAAAA2BvuCgGhoZWEAAAF0AAAAHgAAACQH9QTlaG10eAAAAfwAAABKAAAAlHv7AItsb2NhAAAEjAAAAEwAAABMi4qTXm1heHAAAAGUAAAAIAAAACABRwHNbmFtZQAAGLgAAAEFAAAB12vS/ulwb3N0AAAZwAAAAJ4AAAFsyCrvunByZXAAAARQAAAALgAAAC6w8isUeNpjYGRgYADiKAkPy3h+m68M8swfgCIMF0/IVyDo/84sFswJQC4HAxNIFAAZwAnyeNpjYGRgYE5gmMAQzWLBwPD/O5AEiqAAVQBa6wPkAAAAAQAAACUAoAAKAAAAAAACAAEAAgAWAAABAAEpAAAAAHjaY2BhnsA4gYGVgYGpn+kgAwNDL4RmfMxgxMgCFGVgZWaAAUYBBjTQwMDwQY454X8BQzRzAsMEIJcRSVaBgREAQ9oK6QAAAHjaY8xhUGQAAsYABgbmDwjMYsEgxCzBwMDkAOQnALEEgx1UjhNMr4BjTqBakDxC/wqIPsYMqJoEKIbpk0C1C4zXM3DA5AEzchbtAAB42mNgYGBmgGAZBkYGEAgB8hjBfBYGCyDNxcDBwASEDAy8DAof5P7/B6sCsRmAbOb/3/8/FWCD6oUCRjaIkWA2SCcLAyoAqmZlGN4AALmUC0kAAAB42l1Ru05bQRDdDQ8DgcTYIDnaFLOZkALvhTZIIK4uwsh2YzlC2o1c5GJcwAdQIFGD9msGaChTpE2DkAskPoFPiJSZNYmiNDs7s3POmTNLypGqd2m956lzFkjhboNmm34npNpFgAfS9Y1GRtrBIy02M3rlun2/j8FmNOVOGkB5z1vKQ0bTTqAW7bl/Mj+D4T7/yzwHg5Zmmp5aZyE9hMB8M25p8DWjWXf9QV+xOlwNBoYU01Tc9cdUyv+W5lxtGbY2M5p3cCEiP5gGaGqtjUDTnzqkej6OYgly+WysDSamrD/JRHBhMl3VVC0zvnZwn+wsOtikSnPgAQ6wVZ6Ch+OjCYX0LYkyS0OEg9gqMULEJIdCTjl3sj8pUD6ShDFvktLOuGGtgXHkNTCozdMcvsxmU9tbhzB+EUfw3S/Gkg4+sqE2RoTYjlgKYAKRkFFVvqHGcy+LAbnU/jMQJWB5+u1fJwKtOzYRL2VtnWOMFYKe3zbf+WXF3apc50Whu3dVNVTplOZDL2ff4xFPj4XhoLHgzed9f6NA7Q2LGw2aA8GQ3o3e/9FadcRV3gsf2W81s7EWAAAAuAH/hbABjQBLsAhQWLEBAY5ZsUYGK1ghsBBZS7AUUlghsIBZHbAGK1xYWbAUKwAAAAAAowCFACECfwAAAAAAKgAqACoAKgAqACoAfgEkAcAChAK+A2oElgU2BbQGxgeYCBgIPgjGCU4KZgqKCq4LQAuYDDoMcAzuDXINoA4MDngO4g86D6QQMnjazVl5cBvXeX9vF4tdXHsBuwBBEvdBAgQXxOIgRPGQSEkULcoJJds6Yku2Na6TKJXHsnx0XNptHcvNpLaSJpkczthV68Zu0ulbQE58qXXaHK3j7ThjD6PmmnQmaTydSaqkmdbxkFC/tyApinXiuP2jlcC37/vegX3f8fu+7wExKIkQLjCPIxbxaNjCyNja4l3sTyqWm/vu1hbLQBdZLGVzlN3i3a7lrS1M+aaSVPKmkk5iz+tf/zrz+MrRJHMDgp3US3/tyjEvIQn1oiJCWd6dx7kGrsexLuGwjlm3AXSQ0h5M+5M4D3/1MNbx4b5AoPNmIIDdgQB0v/e9AJ78JqemVLfT4uN0sDtAHzBtvvvYsIK5aqWgcF6XyizRR+f+K9cAhRB9T3TpGTbCRlAARdAEehiRCYNwNulNLCmkzyZ+g6g2GTSIaJKCTUo2JpMGSS0RZBOp0kohb7E9lerzFMlghSDZ4nGRbLGJRpdXbGsKFy2UUlRL7Gk2iaacYzlfeCITbhJeJY0msvycorZj8eYWylMV4JFBtaXlKs1mszyS5UNh3azUqvlhnOLZsAZEvZpLp9gU35jAjfo4lvM5GEzn6xkzXAnrWogXMR/DITfvTuMy9hSyr0XSx+6VXa6+1NFbTrwrPvD+v8OevSHFLzT9cYbZgqXZ+U9cVahEC7nrTo6ZN33w2fdsCykvTOaaCTc+/vn7XbOf27X840CNEYXYRJYp6gEOswb24YPlHbsHtIgSvO1Tt/aNgglRWTJTIMsB9FeIDIAcTZKzidsmIYNoNumpEE0mvSDCQcMqgKDq0ecmDv/sY0grekXil4n0opXCvyTxF4Foi34pWCQpuZ1IxYPFdpK2LWAmPpT4UNotKmqzBTx4kEQTPe0X44lkatj5h6+gyFQUI8s9AErADCghpxChSUIq6W9aWq+iEh0EzeVzKTffqK/+V2sg03wjXKk33FSeImbcYKhhN4/fd9OemVtlr18f6ZF5rjKH9R0+33cKp0KsIC1o7ti2EsbaPoaf9TE+XHZxvoCWEf8N39gvBlhmi0fAkSinC+Kfdr71j6KX8/f3IsaxwaMgt13oOvSHqDWPUJHst4lgUJPbYrSVYGw6EzbJmG2FpioVMiaTCDWwcZMkbLKjgskBgwSWSMZuZQLUIDMxT7EVyNBuIAi2mZGtEbDEg/A3kgGDi/RuGQODQ1aiABSWA3WgrMgWkMa2JhlTyCTIBLxUhbO706lhZhxXc/mUgetmuFGpm3xYc6d4dz+mQgGbBJFN4OowNjCYIp9vmGG9EdZDsFbEwRoYbDIFk0O6mazUmTcx5w8nC4c/c/3p7WF9p8ozvPRZIiZYjLPTXh4L3N6Rxs1jUZ8Wcgksy/T3NAXGODmw0+tiotqg/xavsPwVwesV2K2Cl/ly0tv5m+Nbkjur+2+/7oX3J1hmBPMc5rMcJ/LTyd/77O8O9A6F5NSO04195WQ+hpmymxFwMCDybv/ymxm6EW2o/U5c+g/m28xHURrwSg9J2A0n5mmTq1J0gqZeiYPXQUOHmZdkeY9cVJ94Qi1CR37iiU30Y7+Cv0av4c9F0L2EBtEcWkTENMiMo3vJJmmD6OAuVwEILZGs3Z7IqkKRTNokK1uz4EAl29oDOp2cAMXJTZJVqPpm1afj+kChYlJIKSnnIv3R4qCjbWEGtF0ojU5SbaclIGQ12k+n6QqJUJVXdFCTG9SVA43XzUauVm3UzUoYAEUC7eaom4RA5WHeBPWKbIpqnBoHIFEjhqktgCHkc+z3qVyXq7TtjF6156NX3+4OMLwh9MVGPrhn7u6bzQd+7Ar7hq87cLq0N+lnmKasspMnM/trJQXf2tUIbTKzV98yuyunv6/pYVhmf9zcfnhPKp4+ox3a2j88qgd0r9fDjw8N4giTLrtu7Js5MCBRXHcjz6XbQK6HURiV0RSaR9ejD+BB1KpT3xq3iatCxmXC2hTHAeNlm0QNMmyTsk32GeSQTVIGydvkZoNsN8n7bKqSbZXWzM3UpWau8hQx+W2DsEtkrkIYmzCytQPUMW8TvtLaMU8n7Zj2FNvq/A7QV8IkXruleilbpaFiXrYMX5FE6J7WCVAgwyoqgJYWy+ym2tihtEOl4V1OSFCfllE4lb+KEvOK5RsCCPOqbTc3WHB0KvsB2LwB4NaVtkcMhuhEVrV4DVhIIUCNq8TdtIajYCS9TbIP4lqTlFVSapJDyrlYojCUoWtSKsk2SV4hg2AIDV5L10zNCSSpfMOJQXy+Pom1dK4KCFmrplNAmxWdBhrerHHaBrNJVnRM19fSbgoG2uZBZRP9QH3r87X+5Ph7s4m+SHlMqgT2v8wOhKfi0WA5tnNwNBceZ3ax+73Cyn5qF8wXBO/y6+fHsSsyMD/GXrORv7F/iOm/ZmQbPzhXzVaiiSwX3+a/cFAyG2IuEksmx40Zw5+KJNvH6Xza4J81Gmc8WnHXD//pMi+y3u3aFbr0XfYi8wvIlCQUR3nUANQ+gVoatSvIF1iKyzwkCgap2sRHKfDjccen05TKgz/PQmhcsvwZgHJsW0KiUrF24yKy+jSKxi4OUf+sloDw+AMCJWbGgUhmsgkgyiN1UAqoobL2xJvkiX4Ff7PcL0wemlz7sNddKd63YG7sn3KW/bPTdv5iXUaMsZlzpQAZJ+l6EvAujibRAmpxVG4Zk4puK6QHIDWT+G0yBDFtyiDCEgiI9NitHoE6T48CzoNlawB8LWmTpt1qDlB+c8RTtLaBBAHB4IhFnMrVlGp9bBXOgHaiD6W5txmH9K50oTT51F0ZSdOkzNg1CX2xNInfeEvuDPAmS/jDdz2lSbOSds2Yqiecif+NSY/tXT87tRwDzn81OgK2cx96BD2GHkStj1NZ+G1r6D1gGJxhZfabVDDWnnsrVDTWzB1Ab7Wt4x8GumZYxx4A+lGwp8cN8skl4rGtyCiMeGQLAabIZegP2tbsrfQpWwngTR2F/kHbuvsh+pStdwHvtvuh/xHb+hNHflmI1hvkUafYvpHmNo3j2q8ff6fzN39fQ+maLNWXgysJr3COGtQVzUZu5wdvzf9N5lxuZmvZFX+2Vssyv8hVD62b8A/We69ctvBn3oL5NsOX93lh5VHna46B5Gk+4Ln0ZfYx9jqomhqQDT7u1CNRm+x0ckE3RZBrneC013ayvrklmmLnZCsGPrFgk+10hm6TBdlinFLESfq25yC+JPtmds7vpWiixyBmTO+DALGgWKH98GTUds/4xLVORNkJgeJphm9u2TZNJxfcMHmGTrpWsYp0UUpt53bPvduBomy9CmlBio8xkO+5U8Ns3h2C7KgClZ4zAElUlx5m8hSSYiy3llnlqo38WnLVTan4cL0SZtOyfEoaVlnFzXkTMUnkZVaV7pBLUuer3ec+mCCXNk7A3zfK+4wHyyeNSqV8euTUFdTDsOQUpBcyz/sHEi6fW2FVAzaS8He6zwV5SL5ywr+PPDi8YJTvGDkNTmScuoJCLpqzuUbBj3kkohgaRu9FrbCDY4D/BkV/2SBF0I8BOcQSCUH9I1scaMNL8b6FOYpZ2NPFsl7gJ2yrDFrCUAsSf5P0KiQAemDDgPkCRACnXFSICOK+jOzJWiOMs5BXa0o3rwYPyYU3e8utDowz9y2/fu4QTuDE8r1O4vwAtAu17PK91N3ZB3JVZncXt19YPk4nnt0I9erKfsdCv5CrVimEQZ2HE2wEvwE4piEAKgrYfjiubFjKOghvjDNsJKGv7NcTCZ35gp7Af3ucdmmDOAcTLzr1dz8qoXHI1OqoFaTSjDr5r8upuyEphqoa5DcNJg9ftdewrqYR0yzQsg7RWll1zMo5OhjT5leovUP6a9xZXvR6Rf4sa6wlsuzLTgx81BHMsc39y3PwR/38Wc4r4BnBy53t/OjXwsMrV+QXby8PdoM8fG8tD4Gn8giCLax7l/6/lccFKgrOEQobeacCYYY7L1BR8I5cOrO/uUAEpz56kj2KPGBrSdRE74ZM/r3oJPo2apWpVAbsFiQVxTY7UIZUe4DCH2TycZtca5DDNkVPipR3OEi5HfBRtmTwOB8IT7aOQe+ITY7IVhVT77VOUaycAxEyHOCcrHzRo4fHZ3bMUw/0qWRvkxxT2kMlp3gmR1Qy0CRV5UtGvt44cPD4CcrMqOQk+G60rKhfFELBzFCpStlxhaQBQNV2vTGzgzIOK2R3k0yoX9oytn3uxpuOf4Ay9yrkdif5hpyb3oXpYY36O9VBRc91ExcnbVmvTnN5qLMrkw7YNvRwns+vQS6f24Csrg1r8YY9w+vf9J9nQDmBwJlAdMEre+GzuB4LmbMAp6WHys97xdOfkoYp/H7aKyknLhOqeH5tCr59fV3nQnenH61v/fEzHOd0MuuxdtGZ0tNF2Be8uvfTFI9L0mdOe6Tfukz4/efXpow7K3BifYvr13btYhM6x0wBNgWQiojbcIBJNCzJASZ0OfaAVTNFzbfsSXiWfZqE38BvaHHoAieuOfvM4hnmIdgniJwdeKjYIFtf3ehKsJlxVtH1+O61/STYvBsrwH63OvVCHnK+21CLp3Yrmt3AQG9wIGh4TRo9+rppr7lEhiAHli0MZhmwSUC2PNBT7JZHobHDE+nmu9aQCbY6thVsFSuWKwPPgEomwf4yCRgwyhQHMlWnZqf3hs6zscGzx3AMO1kWFHIsmMhqcjyO012zoLbDvKLFNC32hNNen9CXv0LR+6JvNH0mPeq7qCe+JPSc0aQzknYGsnR12dfnW1adyaufs+foAtoMDCQS+Fp9mSbRy3pYptKWu/eGzv1XDlURFYbk3BjmQHN55+YDxD5A0S0kKeo5jLzRXuotOcVKZegJkexOp3KrHhPDzhVpig/r/Ophqo16HNcT7NFO68a/nPD5592Ka/Cu6bueeur1ffOqV+iBF4K32X0fvp6Jdh7tLMwFfPNuhquNPfXTp+b3ymEdXpeebfauVYxefd8gZGlpVEQm+ghqFalWDUeZoLKwQWIm6YVUrUIPYcJZqgYZWYKMnCbjPaBOzSaabCWh12+TftnKdi90aqBXrQdSMJ87XzAq9KRJpc0yAT/t9qtPS8Fccdh0UrVwAOYJSmawVKaDvUo7OzA04iRmWMRUJhOYiqRC7+dieC17cK0+VTmXcMt6AgSYyMn1BLOo3f7w7Ron9vW5xD037BFdfX1i50eFrYXCVjznPJ57tbP06qu4gHtXOp9eWcG3YHZm374ZsdcjiqXR0ZIoenoxR2eufjp/jAuv0kVMb3fBytq9+zTEORP8wgtZVA61/FR+gMuQT3hAWpJBgRpZnF9RW4ybd+7DsYnT+SSfxmwS15Ia/sZRvGtxrvOZubvwyT/C0ZV76ZYr/mefZe7s/NnKv54/j7o1p+ODEajeG2gvIl6jFUs2TCiefHarN12tQAEEzlc0wNAwGTWsJv1inxdciI+DT2WUViBqwguQotrWI8MGlTVWiOZcklbqZi5Pr0kbE2wDm0HIhGNMHIf4fIoH/KXgXAN0FnEoxgKe83j0SU7jyo3OT3rLW7BY6U8KOD17j7qQjhSjewUWL2l/z8xh3tu7sCI35EQk78J4gMGPnFh5zCWUXALfozE/7/xL4Rt7x09oMpv0cB5BjEkMK8jaeZz7RFT1cC6c9HKrZ/+Y8/uGgnT0eUQ8Br30gvxUMgFPCKoQBo5t0h85ggA+YcOKdC/mXxx/c5FezBN1WCT6i5zFML8UiffF5ya/8eYFOsARDCMijATpSOhFjohyG4k4WCSMDAbrDRbbHtpSvkT5LGp7xZDu3NFP+RFmWI9XlNRgl7X2j0xFaQ7ZSAaT9M4xHcdmrRFM5nGS5bLMvUJHjuID/hMn+Jv8LzMv9XU+4bmE2Mhs5/nOeUa+ufPq/bHY1Y828SgeuQULy986fHhVDmBvzEtgeSEaGVBX2VBV6w6ga2BOWUANiKCN/AQex9gMa+zFlWeDmd7snj/4UEIKM8K7m+cPHnwt0BPfw39wiNVEE3+nuYdi/GrOtlbX51bvNSAv1gx6tZE1KKDXDKjeKcCv3lVkN+VY+U10423G2YuASwcomLJPStoFTeoIlKChBwB5+XVnJNId+aQzcqukHZ+lPdr8w6/tof9H51opU4J5pXuux52Ro92Ru52Rh/5PzvVOc+grz7XxWBtP9T86FIuESyfZZ5ivQkSKoRTUDEQwWu6gTlHOY7c4NUxRLmBArMFQRlgZCnEegUJciKYNCmG6+KrHsZbna3VwPBGHIQPNSbg2gScxZs0gVJ34z3fjqbypLn3zHtfCG2bIJd3w+B2l2jjLYu3I157BLuary52g12X4vcNy9OWTh4WouyT6XEWfznGM2rmEv3XgAMV/qgPmTuf34RQ6hloC1YAO2OTcdSlxeHHJeVfiW6J8XabVJb33S3ZvO1ibnsJKKlA1p5ok5txrs/R3PWTpcDJKasq5YKQ/meqGxIqubSyQsZLm82nFrIUbGtdI19Jamv1cvFCIL5+lLf7p4g1HFheP3IC3PHZk8QbmzkK80+cM/DBe6Aj4dxYXOw+ev+ee8/HvOoHm8t1mEU2hQ6s2lbBbCVrwo0QBCv4ep1im59rm3G52Iz8cg+Y42+E0mX4o+pXhStOJ7z2QxrWH6036gw2RFCfVu1xer1b5EN8hGS1i51e2tdsAsDkIPGYliDdesazes7CRI9OdoekjR6bxa8mk4OL7XB7OJ3aGoMLP4ddyVS7j5kK/36mLGfHnojgBj4/h49BOiPiadnfd9BGRDfJ9nKua6657hIdVGMMiWEOnOmvoYoT+C93/Vj8AAHjafY+/asMwEIc/JU6aQhsyltJBQ6eCg20IgdCt1GTwlNJsHUJijCCxwHaeqVufpM/Qta/Ri31ZOkTipO9Ov/sjYMwXhm7d8qBsGPGs3OOKd+U+j3wqB6L5UR5wY4zykJGxojTBtXj3bdaJDROelHvS91W5z5IP5UA038oD7vhVHjIxY1I8JQ2ObUs1lkz2C6S+bNzWl7XNMnHfRHNgJ2cjykoC7rBzjRdakVNwZM/m9LDKi+N+I3AunrYJhagsCVMiuRdi/0t20Vg0IXOxRJQxs26U1FdFbpNpZBf23FowTsJ5mETx7OKEa+ldyedcO9GpRzcF67yqnS9tLHUvVfgDz/ZF8gAAAHjabc25DgFhGIXh/53B2Pd9J9HPN/bSWolC4iI0OjfgxhFO6SQnT/k6z333errI/dvkc5yHh+98YsRJEJAkRZoMWXLkKVCkRJkKVWrUadCkRZsOXXr0GTBkxDh2vp5O3u4SPO63YxiG0mQkp3Im53Ihl3Il13Ijt3In9/Igjz9NfVPf1Df1TX1T39Q39U19U9/UN/VNfVPfDm8tR0peAAB42mNgYGBkAIKLcceVwfQJ+XIoXQEARe8GegAA) format("woff"); - font-weight: normal; - font-style: normal; -} -.simditor-icon { - display: inline-block; - font: normal normal normal 14px/1 'Simditor'; - font-size: inherit; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - transform: translate(0, 0); -} - -.simditor-icon-code:before { - content: '\f000'; -} - -.simditor-icon-bold:before { - content: '\f001'; -} - -.simditor-icon-italic:before { - content: '\f002'; -} - -.simditor-icon-underline:before { - content: '\f003'; -} - -.simditor-icon-times:before { - content: '\f004'; -} - -.simditor-icon-strikethrough:before { - content: '\f005'; -} - -.simditor-icon-list-ol:before { - content: '\f006'; -} - -.simditor-icon-list-ul:before { - content: '\f007'; -} - -.simditor-icon-quote-left:before { - content: '\f008'; -} - -.simditor-icon-table:before { - content: '\f009'; -} - -.simditor-icon-link:before { - content: '\f00a'; -} - -.simditor-icon-picture-o:before { - content: '\f00b'; -} - -.simditor-icon-minus:before { - content: '\f00c'; -} - -.simditor-icon-indent:before { - content: '\f00d'; -} - -.simditor-icon-outdent:before { - content: '\f00e'; -} - -.simditor-icon-unlink:before { - content: '\f00f'; -} - -.simditor-icon-caret-down:before { - content: '\f010'; -} - -.simditor-icon-caret-right:before { - content: '\f011'; -} - -.simditor-icon-upload:before { - content: '\f012'; -} - -.simditor-icon-undo:before { - content: '\f013'; -} - -.simditor-icon-smile-o:before { - content: '\f014'; -} - -.simditor-icon-tint:before { - content: '\f015'; -} - -.simditor-icon-font:before { - content: '\f016'; -} - -.simditor-icon-html5:before { - content: '\f017'; -} - -.simditor-icon-mark:before { - content: '\f018'; -} - -.simditor-icon-align-center:before { - content: '\f019'; -} - -.simditor-icon-align-left:before { - content: '\f01a'; -} - -.simditor-icon-align-right:before { - content: '\f01b'; -} - -.simditor-icon-font-minus:before { - content: '\f01c'; -} - -.simditor-icon-markdown:before { - content: '\f01d'; -} - -.simditor-icon-checklist:before { - content: '\f01e'; -} - -.simditor { - position: relative; - border: 1px solid #c9d8db; -} -.simditor .simditor-wrapper { - position: relative; - background: #ffffff; -} -.simditor .simditor-wrapper > textarea { - display: none !important; - width: 100%; - box-sizing: border-box; - font-family: monaco; - font-size: 16px; - line-height: 1.6; - border: none; - padding: 22px 15px 40px; - min-height: 300px; - outline: none; - background: transparent; - resize: none; -} -.simditor .simditor-wrapper .simditor-placeholder { - display: none; - position: absolute; - left: 0; - z-index: 0; - padding: 22px 15px; - font-size: 16px; - font-family: arial, sans-serif; - line-height: 1.5; - color: #999999; - background: transparent; -} -.simditor .simditor-wrapper.toolbar-floating .simditor-toolbar { - position: fixed; - top: 0; - z-index: 10; - box-shadow: 0 0 6px rgba(0, 0, 0, 0.1); -} -.simditor .simditor-wrapper .simditor-image-loading { - width: 100%; - height: 100%; - position: absolute; - top: 0; - left: 0; - z-index: 2; -} -.simditor .simditor-wrapper .simditor-image-loading .progress { - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.4); - position: absolute; - bottom: 0; - left: 0; -} -.simditor .simditor-body { - padding: 22px 15px 40px; - min-height: 300px; - outline: none; - cursor: text; - position: relative; - z-index: 1; - background: transparent; -} -.simditor .simditor-body a.selected { - background: #b3d4fd; -} -.simditor .simditor-body a.simditor-mention { - cursor: pointer; -} -.simditor .simditor-body .simditor-table { - position: relative; -} -.simditor .simditor-body .simditor-table.resizing { - cursor: col-resize; -} -.simditor .simditor-body .simditor-table .simditor-resize-handle { - position: absolute; - left: 0; - top: 0; - width: 10px; - height: 100%; - cursor: col-resize; -} -.simditor .simditor-body pre { - /*min-height: 28px;*/ - box-sizing: border-box; - -moz-box-sizing: border-box; - word-wrap: break-word !important; - white-space: pre-wrap !important; -} -.simditor .simditor-body img { - cursor: pointer; -} -.simditor .simditor-body img.selected { - box-shadow: 0 0 0 4px #cccccc; -} -.simditor .simditor-paste-bin { - position: fixed; - bottom: 10px; - right: 10px; - width: 1px; - height: 20px; - font-size: 1px; - line-height: 1px; - overflow: hidden; - padding: 0; - margin: 0; - opacity: 0; - -webkit-user-select: text; -} -.simditor .simditor-toolbar { - border-bottom: 1px solid #eeeeee; - background: #ffffff; - width: 100%; -} -.simditor .simditor-toolbar > ul { - margin: 0; - padding: 0 0 0 6px; - list-style: none; -} -.simditor .simditor-toolbar > ul > li { - position: relative; - display: inline-block; - font-size: 0; -} -.simditor .simditor-toolbar > ul > li > span.separator { - display: inline-block; - background: #cfcfcf; - width: 1px; - height: 18px; - margin: 11px 15px; - vertical-align: middle; -} -.simditor .simditor-toolbar > ul > li > .toolbar-item { - display: inline-block; - width: 46px; - height: 40px; - outline: none; - color: #333333; - font-size: 15px; - line-height: 40px; - vertical-align: middle; - text-align: center; - text-decoration: none; -} -.simditor .simditor-toolbar > ul > li > .toolbar-item span { - opacity: 0.6; -} -.simditor .simditor-toolbar > ul > li > .toolbar-item span.simditor-icon { - display: inline; - line-height: normal; -} -.simditor .simditor-toolbar > ul > li > .toolbar-item:hover span { - opacity: 1; -} -.simditor .simditor-toolbar > ul > li > .toolbar-item.active { - background: #eeeeee; -} -.simditor .simditor-toolbar > ul > li > .toolbar-item.active span { - opacity: 1; -} -.simditor .simditor-toolbar > ul > li > .toolbar-item.disabled { - cursor: default; -} -.simditor .simditor-toolbar > ul > li > .toolbar-item.disabled span { - opacity: 0.3; -} -.simditor .simditor-toolbar > ul > li > .toolbar-item.toolbar-item-title span:before { - content: "H"; - font-size: 19px; - font-weight: bold; - font-family: 'Times New Roman'; -} -.simditor .simditor-toolbar > ul > li > .toolbar-item.toolbar-item-title.active-h1 span:before { - content: 'H1'; - font-size: 18px; -} -.simditor .simditor-toolbar > ul > li > .toolbar-item.toolbar-item-title.active-h2 span:before { - content: 'H2'; - font-size: 18px; -} -.simditor .simditor-toolbar > ul > li > .toolbar-item.toolbar-item-title.active-h3 span:before { - content: 'H3'; - font-size: 18px; -} -.simditor .simditor-toolbar > ul > li > .toolbar-item.toolbar-item-image { - position: relative; - overflow: hidden; -} -.simditor .simditor-toolbar > ul > li > .toolbar-item.toolbar-item-image > input[type=file] { - position: absolute; - right: 0px; - top: 0px; - opacity: 0; - font-size: 100px; - cursor: pointer; -} -.simditor .simditor-toolbar > ul > li.menu-on .toolbar-item { - position: relative; - z-index: 20; - background: #ffffff; - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); -} -.simditor .simditor-toolbar > ul > li.menu-on .toolbar-item span { - opacity: 1; -} -.simditor .simditor-toolbar > ul > li.menu-on .toolbar-menu { - display: block; -} -.simditor .simditor-toolbar .toolbar-menu { - display: none; - position: absolute; - top: 40px; - left: 0; - z-index: 21; - background: #ffffff; - text-align: left; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.3); -} -.simditor .simditor-toolbar .toolbar-menu:before { - content: ''; - display: block; - width: 46px; - height: 4px; - background: #ffffff; - position: absolute; - top: -3px; - left: 0; -} -.simditor .simditor-toolbar .toolbar-menu ul { - min-width: 160px; - list-style: none; - margin: 0; - padding: 10px 1px; -} -.simditor .simditor-toolbar .toolbar-menu ul > li .menu-item { - display: block; - font-size: 16px; - line-height: 2em; - padding: 0 10px; - text-decoration: none; - color: #666666; -} -.simditor .simditor-toolbar .toolbar-menu ul > li .menu-item:hover { - background: #f6f6f6; -} -.simditor .simditor-toolbar .toolbar-menu ul > li .menu-item.menu-item-h1 { - font-size: 24px; - color: #333333; -} -.simditor .simditor-toolbar .toolbar-menu ul > li .menu-item.menu-item-h2 { - font-size: 22px; - color: #333333; -} -.simditor .simditor-toolbar .toolbar-menu ul > li .menu-item.menu-item-h3 { - font-size: 20px; - color: #333333; -} -.simditor .simditor-toolbar .toolbar-menu ul > li .menu-item.menu-item-h4 { - font-size: 18px; - color: #333333; -} -.simditor .simditor-toolbar .toolbar-menu ul > li .menu-item.menu-item-h5 { - font-size: 16px; - color: #333333; -} -.simditor .simditor-toolbar .toolbar-menu ul > li .separator { - display: block; - border-top: 1px solid #cccccc; - height: 0; - line-height: 0; - font-size: 0; - margin: 6px 0; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color { - width: 96px; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list { - height: 40px; - margin: 10px 6px 6px 10px; - padding: 0; - min-width: 0; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li { - float: left; - margin: 0 4px 4px 0; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color { - display: block; - width: 16px; - height: 16px; - background: #dfdfdf; - border-radius: 2px; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color:hover { - opacity: 0.8; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color.font-color-default { - background: #333333; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color-1 { - background: #E33737; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color-2 { - background: #e28b41; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color-3 { - background: #c8a732; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color-4 { - background: #209361; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color-5 { - background: #418caf; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color-6 { - background: #aa8773; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color-7 { - background: #999999; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-table .menu-create-table { - background: #ffffff; - padding: 1px; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-table .menu-create-table table { - border: none; - border-collapse: collapse; - border-spacing: 0; - table-layout: fixed; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-table .menu-create-table table td { - padding: 0; - cursor: pointer; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-table .menu-create-table table td:before { - width: 16px; - height: 16px; - border: 1px solid #ffffff; - background: #f3f3f3; - display: block; - content: ""; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-table .menu-create-table table td.selected:before { - background: #cfcfcf; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-table .menu-edit-table { - display: none; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-table .menu-edit-table ul li { - white-space: nowrap; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-image .menu-item-upload-image { - position: relative; - overflow: hidden; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-image .menu-item-upload-image input[type=file] { - position: absolute; - right: 0px; - top: 0px; - opacity: 0; - font-size: 100px; - cursor: pointer; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-alignment { - width: 100%; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-alignment ul { - min-width: 100%; -} -.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-alignment .menu-item { - text-align: center; -} -.simditor .simditor-popover { - display: none; - padding: 5px 8px 0; - background: #ffffff; - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); - border-radius: 2px; - position: absolute; - z-index: 2; -} -.simditor .simditor-popover .settings-field { - margin: 0 0 5px 0; - font-size: 12px; - height: 25px; - line-height: 25px; -} -.simditor .simditor-popover .settings-field label { - display: inline-block; - margin: 0 5px 0 0; -} -.simditor .simditor-popover .settings-field input[type=text] { - display: inline-block; - width: 200px; - box-sizing: border-box; - font-size: 12px; -} -.simditor .simditor-popover .settings-field input[type=text].image-size { - width: 83px; -} -.simditor .simditor-popover .settings-field .times { - display: inline-block; - width: 26px; - font-size: 12px; - text-align: center; -} -.simditor .simditor-popover.link-popover .btn-unlink, .simditor .simditor-popover.image-popover .btn-upload, .simditor .simditor-popover.image-popover .btn-restore { - display: inline-block; - margin: 0 0 0 5px; - color: #333333; - font-size: 14px; - outline: 0; -} -.simditor .simditor-popover.link-popover .btn-unlink span, .simditor .simditor-popover.image-popover .btn-upload span, .simditor .simditor-popover.image-popover .btn-restore span { - opacity: 0.6; -} -.simditor .simditor-popover.link-popover .btn-unlink:hover span, .simditor .simditor-popover.image-popover .btn-upload:hover span, .simditor .simditor-popover.image-popover .btn-restore:hover span { - opacity: 1; -} -.simditor .simditor-popover.image-popover .btn-upload { - position: relative; - display: inline-block; - overflow: hidden; - vertical-align: middle; -} -.simditor .simditor-popover.image-popover .btn-upload input[type=file] { - position: absolute; - right: 0px; - top: 0px; - opacity: 0; - height: 100%; - width: 28px; -} -.simditor.simditor-mobile .simditor-wrapper.toolbar-floating .simditor-toolbar { - position: absolute; - top: 0; - z-index: 10; - box-shadow: 0 0 6px rgba(0, 0, 0, 0.1); -} - -.simditor .simditor-body, .editor-style { - font-size: 16px; - font-family: arial, sans-serif; - line-height: 1.6; - color: #333; - outline: none; - word-wrap: break-word; -} -.simditor .simditor-body > :first-child, .editor-style > :first-child { - margin-top: 0 !important; -} -.simditor .simditor-body a, .editor-style a { - color: #4298BA; - text-decoration: none; - word-break: break-all; -} -.simditor .simditor-body a:visited, .editor-style a:visited { - color: #4298BA; -} -.simditor .simditor-body a:hover, .editor-style a:hover { - color: #0F769F; -} -.simditor .simditor-body a:active, .editor-style a:active { - color: #9E792E; -} -.simditor .simditor-body a:hover, .simditor .simditor-body a:active, .editor-style a:hover, .editor-style a:active { - outline: 0; -} -.simditor .simditor-body h1, .simditor .simditor-body h2, .simditor .simditor-body h3, .simditor .simditor-body h4, .simditor .simditor-body h5, .simditor .simditor-body h6, .editor-style h1, .editor-style h2, .editor-style h3, .editor-style h4, .editor-style h5, .editor-style h6 { - font-weight: normal; - margin: 40px 0 20px; - color: #000000; -} -.simditor .simditor-body h1, .editor-style h1 { - font-size: 24px; -} -.simditor .simditor-body h2, .editor-style h2 { - font-size: 22px; -} -.simditor .simditor-body h3, .editor-style h3 { - font-size: 20px; -} -.simditor .simditor-body h4, .editor-style h4 { - font-size: 18px; -} -.simditor .simditor-body h5, .editor-style h5 { - font-size: 16px; -} -.simditor .simditor-body h6, .editor-style h6 { - font-size: 16px; -} -.simditor .simditor-body p, .simditor .simditor-body div, .editor-style p, .editor-style div { - word-wrap: break-word; - margin: 0 0 15px 0; - color: #333; - word-wrap: break-word; -} -.simditor .simditor-body b, .simditor .simditor-body strong, .editor-style b, .editor-style strong { - font-weight: bold; -} -.simditor .simditor-body i, .simditor .simditor-body em, .editor-style i, .editor-style em { - font-style: italic; -} -.simditor .simditor-body u, .editor-style u { - text-decoration: underline; -} -.simditor .simditor-body strike, .simditor .simditor-body del, .editor-style strike, .editor-style del { - text-decoration: line-through; -} -.simditor .simditor-body ul, .simditor .simditor-body ol, .editor-style ul, .editor-style ol { - list-style: disc outside none; - margin: 15px 0; - padding: 0 0 0 40px; - line-height: 1.6; -} -.simditor .simditor-body ul ul, .simditor .simditor-body ul ol, .simditor .simditor-body ol ul, .simditor .simditor-body ol ol, .editor-style ul ul, .editor-style ul ol, .editor-style ol ul, .editor-style ol ol { - padding-left: 30px; -} -.simditor .simditor-body ul ul, .simditor .simditor-body ol ul, .editor-style ul ul, .editor-style ol ul { - list-style: circle outside none; -} -.simditor .simditor-body ul ul ul, .simditor .simditor-body ol ul ul, .editor-style ul ul ul, .editor-style ol ul ul { - list-style: square outside none; -} -.simditor .simditor-body ol, .editor-style ol { - list-style: decimal; -} -.simditor .simditor-body blockquote, .editor-style blockquote { - border-left: 6px solid #ddd; - padding: 5px 0 5px 10px; - margin: 15px 0 15px 15px; -} -.simditor .simditor-body blockquote > :first-child, .editor-style blockquote > :first-child { - margin-top: 0; -} -.simditor .simditor-body code, .editor-style code { - display: inline-block; - padding: 0 4px; - margin: 0 5px; - background: #eeeeee; - border-radius: 3px; - font-size: 13px; - font-family: 'monaco', 'Consolas', "Liberation Mono", Courier, monospace; -} -.simditor .simditor-body pre, .editor-style pre { - padding: 10px 5px 10px 10px; - margin: 15px 0; - display: block; - line-height: 18px; - background: #F0F0F0; - border-radius: 3px; - font-size: 13px; - font-family: 'monaco', 'Consolas', "Liberation Mono", Courier, monospace; - white-space: pre; - word-wrap: normal; - overflow-x: auto; -} -.simditor .simditor-body pre code, .editor-style pre code { - display: block; - padding: 0; - margin: 0; - background: none; - border-radius: 0; -} -.simditor .simditor-body hr, .editor-style hr { - display: block; - height: 0px; - border: 0; - border-top: 1px solid #ccc; - margin: 15px 0; - padding: 0; -} -.simditor .simditor-body table, .editor-style table { - width: 100%; - table-layout: fixed; - border-collapse: collapse; - border-spacing: 0; - margin: 15px 0; -} -.simditor .simditor-body table thead, .editor-style table thead { - background-color: #f9f9f9; -} -.simditor .simditor-body table td, .simditor .simditor-body table th, .editor-style table td, .editor-style table th { - min-width: 40px; - height: 30px; - border: 1px solid #ccc; - vertical-align: top; - padding: 2px 4px; - text-align: left; - box-sizing: border-box; -} -.simditor .simditor-body table td.active, .simditor .simditor-body table th.active, .editor-style table td.active, .editor-style table th.active { - background-color: #ffffee; -} -.simditor .simditor-body img, .editor-style img { - margin: 0 5px; - vertical-align: middle; -} diff --git a/static/css/simditor.scss b/static/css/simditor.scss deleted file mode 100755 index 59ab2e1..0000000 --- a/static/css/simditor.scss +++ /dev/null @@ -1,4 +0,0 @@ -@charset "UTF-8"; - -@import 'fonticon'; -@import 'editor'; diff --git a/static/css/simple-line-icons.css b/static/css/simple-line-icons.css deleted file mode 100755 index e1ac735..0000000 --- a/static/css/simple-line-icons.css +++ /dev/null @@ -1,754 +0,0 @@ -@font-face { - font-family: 'simple-line-icons'; - src: url('../fonts/Simple-Line-Icons.eot?-i3a2kk'); - src: url('../fonts/Simple-Line-Icons.eot?#iefix-i3a2kk') format('embedded-opentype'), url('../fonts/Simple-Line-Icons.ttf?-i3a2kk') format('truetype'), url('../fonts/Simple-Line-Icons.woff2?-i3a2kk') format('woff2'), url('../fonts/Simple-Line-Icons.woff?-i3a2kk') format('woff'), url('../fonts/Simple-Line-Icons.svg?-i3a2kk#simple-line-icons') format('svg'); - font-weight: normal; - font-style: normal; -} -/* - Use the following CSS code if you want to have a class per icon. - Instead of a list of all class selectors, you can use the generic [class*="icon-"] selector, but it's slower: -*/ -.icon-user, -.icon-people, -.icon-user-female, -.icon-user-follow, -.icon-user-following, -.icon-user-unfollow, -.icon-login, -.icon-logout, -.icon-emotsmile, -.icon-phone, -.icon-call-end, -.icon-call-in, -.icon-call-out, -.icon-map, -.icon-location-pin, -.icon-direction, -.icon-directions, -.icon-compass, -.icon-layers, -.icon-menu, -.icon-list, -.icon-options-vertical, -.icon-options, -.icon-arrow-down, -.icon-arrow-left, -.icon-arrow-right, -.icon-arrow-up, -.icon-arrow-up-circle, -.icon-arrow-left-circle, -.icon-arrow-right-circle, -.icon-arrow-down-circle, -.icon-check, -.icon-clock, -.icon-plus, -.icon-close, -.icon-trophy, -.icon-screen-smartphone, -.icon-screen-desktop, -.icon-plane, -.icon-notebook, -.icon-mustache, -.icon-mouse, -.icon-magnet, -.icon-energy, -.icon-disc, -.icon-cursor, -.icon-cursor-move, -.icon-crop, -.icon-chemistry, -.icon-speedometer, -.icon-shield, -.icon-screen-tablet, -.icon-magic-wand, -.icon-hourglass, -.icon-graduation, -.icon-ghost, -.icon-game-controller, -.icon-fire, -.icon-eyeglass, -.icon-envelope-open, -.icon-envelope-letter, -.icon-bell, -.icon-badge, -.icon-anchor, -.icon-wallet, -.icon-vector, -.icon-speech, -.icon-puzzle, -.icon-printer, -.icon-present, -.icon-playlist, -.icon-pin, -.icon-picture, -.icon-handbag, -.icon-globe-alt, -.icon-globe, -.icon-folder-alt, -.icon-folder, -.icon-film, -.icon-feed, -.icon-drop, -.icon-drawar, -.icon-docs, -.icon-doc, -.icon-diamond, -.icon-cup, -.icon-calculator, -.icon-bubbles, -.icon-briefcase, -.icon-book-open, -.icon-basket-loaded, -.icon-basket, -.icon-bag, -.icon-action-undo, -.icon-action-redo, -.icon-wrench, -.icon-umbrella, -.icon-trash, -.icon-tag, -.icon-support, -.icon-frame, -.icon-size-fullscreen, -.icon-size-actual, -.icon-shuffle, -.icon-share-alt, -.icon-share, -.icon-rocket, -.icon-question, -.icon-pie-chart, -.icon-pencil, -.icon-note, -.icon-loop, -.icon-home, -.icon-grid, -.icon-graph, -.icon-microphone, -.icon-music-tone-alt, -.icon-music-tone, -.icon-earphones-alt, -.icon-earphones, -.icon-equalizer, -.icon-like, -.icon-dislike, -.icon-control-start, -.icon-control-rewind, -.icon-control-play, -.icon-control-pause, -.icon-control-forward, -.icon-control-end, -.icon-volume-1, -.icon-volume-2, -.icon-volume-off, -.icon-calender, -.icon-bulb, -.icon-chart, -.icon-ban, -.icon-bubble, -.icon-camrecorder, -.icon-camera, -.icon-cloud-download, -.icon-cloud-upload, -.icon-envelope, -.icon-eye, -.icon-flag, -.icon-heart, -.icon-info, -.icon-key, -.icon-link, -.icon-lock, -.icon-lock-open, -.icon-magnifier, -.icon-magnifier-add, -.icon-magnifier-remove, -.icon-paper-clip, -.icon-paper-plane, -.icon-power, -.icon-refresh, -.icon-reload, -.icon-settings, -.icon-star, -.icon-symble-female, -.icon-symbol-male, -.icon-target, -.icon-credit-card, -.icon-paypal, -.icon-social-tumblr, -.icon-social-twitter, -.icon-social-facebook, -.icon-social-instagram, -.icon-social-linkedin, -.icon-social-pintarest, -.icon-social-github, -.icon-social-gplus, -.icon-social-reddit, -.icon-social-skype, -.icon-social-dribbble, -.icon-social-behance, -.icon-social-foursqare, -.icon-social-soundcloud, -.icon-social-spotify, -.icon-social-stumbleupon, -.icon-social-youtube, -.icon-social-dropbox { - font-family: 'simple-line-icons'; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.icon-user:before { - content: "\e005"; -} -.icon-people:before { - content: "\e001"; -} -.icon-user-female:before { - content: "\e000"; -} -.icon-user-follow:before { - content: "\e002"; -} -.icon-user-following:before { - content: "\e003"; -} -.icon-user-unfollow:before { - content: "\e004"; -} -.icon-login:before { - content: "\e066"; -} -.icon-logout:before { - content: "\e065"; -} -.icon-emotsmile:before { - content: "\e021"; -} -.icon-phone:before { - content: "\e600"; -} -.icon-call-end:before { - content: "\e048"; -} -.icon-call-in:before { - content: "\e047"; -} -.icon-call-out:before { - content: "\e046"; -} -.icon-map:before { - content: "\e033"; -} -.icon-location-pin:before { - content: "\e096"; -} -.icon-direction:before { - content: "\e042"; -} -.icon-directions:before { - content: "\e041"; -} -.icon-compass:before { - content: "\e045"; -} -.icon-layers:before { - content: "\e034"; -} -.icon-menu:before { - content: "\e601"; -} -.icon-list:before { - content: "\e067"; -} -.icon-options-vertical:before { - content: "\e602"; -} -.icon-options:before { - content: "\e603"; -} -.icon-arrow-down:before { - content: "\e604"; -} -.icon-arrow-left:before { - content: "\e605"; -} -.icon-arrow-right:before { - content: "\e606"; -} -.icon-arrow-up:before { - content: "\e607"; -} -.icon-arrow-up-circle:before { - content: "\e078"; -} -.icon-arrow-left-circle:before { - content: "\e07a"; -} -.icon-arrow-right-circle:before { - content: "\e079"; -} -.icon-arrow-down-circle:before { - content: "\e07b"; -} -.icon-check:before { - content: "\e080"; -} -.icon-clock:before { - content: "\e081"; -} -.icon-plus:before { - content: "\e095"; -} -.icon-close:before { - content: "\e082"; -} -.icon-trophy:before { - content: "\e006"; -} -.icon-screen-smartphone:before { - content: "\e010"; -} -.icon-screen-desktop:before { - content: "\e011"; -} -.icon-plane:before { - content: "\e012"; -} -.icon-notebook:before { - content: "\e013"; -} -.icon-mustache:before { - content: "\e014"; -} -.icon-mouse:before { - content: "\e015"; -} -.icon-magnet:before { - content: "\e016"; -} -.icon-energy:before { - content: "\e020"; -} -.icon-disc:before { - content: "\e022"; -} -.icon-cursor:before { - content: "\e06e"; -} -.icon-cursor-move:before { - content: "\e023"; -} -.icon-crop:before { - content: "\e024"; -} -.icon-chemistry:before { - content: "\e026"; -} -.icon-speedometer:before { - content: "\e007"; -} -.icon-shield:before { - content: "\e00e"; -} -.icon-screen-tablet:before { - content: "\e00f"; -} -.icon-magic-wand:before { - content: "\e017"; -} -.icon-hourglass:before { - content: "\e018"; -} -.icon-graduation:before { - content: "\e019"; -} -.icon-ghost:before { - content: "\e01a"; -} -.icon-game-controller:before { - content: "\e01b"; -} -.icon-fire:before { - content: "\e01c"; -} -.icon-eyeglass:before { - content: "\e01d"; -} -.icon-envelope-open:before { - content: "\e01e"; -} -.icon-envelope-letter:before { - content: "\e01f"; -} -.icon-bell:before { - content: "\e027"; -} -.icon-badge:before { - content: "\e028"; -} -.icon-anchor:before { - content: "\e029"; -} -.icon-wallet:before { - content: "\e02a"; -} -.icon-vector:before { - content: "\e02b"; -} -.icon-speech:before { - content: "\e02c"; -} -.icon-puzzle:before { - content: "\e02d"; -} -.icon-printer:before { - content: "\e02e"; -} -.icon-present:before { - content: "\e02f"; -} -.icon-playlist:before { - content: "\e030"; -} -.icon-pin:before { - content: "\e031"; -} -.icon-picture:before { - content: "\e032"; -} -.icon-handbag:before { - content: "\e035"; -} -.icon-globe-alt:before { - content: "\e036"; -} -.icon-globe:before { - content: "\e037"; -} -.icon-folder-alt:before { - content: "\e039"; -} -.icon-folder:before { - content: "\e089"; -} -.icon-film:before { - content: "\e03a"; -} -.icon-feed:before { - content: "\e03b"; -} -.icon-drop:before { - content: "\e03e"; -} -.icon-drawar:before { - content: "\e03f"; -} -.icon-docs:before { - content: "\e040"; -} -.icon-doc:before { - content: "\e085"; -} -.icon-diamond:before { - content: "\e043"; -} -.icon-cup:before { - content: "\e044"; -} -.icon-calculator:before { - content: "\e049"; -} -.icon-bubbles:before { - content: "\e04a"; -} -.icon-briefcase:before { - content: "\e04b"; -} -.icon-book-open:before { - content: "\e04c"; -} -.icon-basket-loaded:before { - content: "\e04d"; -} -.icon-basket:before { - content: "\e04e"; -} -.icon-bag:before { - content: "\e04f"; -} -.icon-action-undo:before { - content: "\e050"; -} -.icon-action-redo:before { - content: "\e051"; -} -.icon-wrench:before { - content: "\e052"; -} -.icon-umbrella:before { - content: "\e053"; -} -.icon-trash:before { - content: "\e054"; -} -.icon-tag:before { - content: "\e055"; -} -.icon-support:before { - content: "\e056"; -} -.icon-frame:before { - content: "\e038"; -} -.icon-size-fullscreen:before { - content: "\e057"; -} -.icon-size-actual:before { - content: "\e058"; -} -.icon-shuffle:before { - content: "\e059"; -} -.icon-share-alt:before { - content: "\e05a"; -} -.icon-share:before { - content: "\e05b"; -} -.icon-rocket:before { - content: "\e05c"; -} -.icon-question:before { - content: "\e05d"; -} -.icon-pie-chart:before { - content: "\e05e"; -} -.icon-pencil:before { - content: "\e05f"; -} -.icon-note:before { - content: "\e060"; -} -.icon-loop:before { - content: "\e064"; -} -.icon-home:before { - content: "\e069"; -} -.icon-grid:before { - content: "\e06a"; -} -.icon-graph:before { - content: "\e06b"; -} -.icon-microphone:before { - content: "\e063"; -} -.icon-music-tone-alt:before { - content: "\e061"; -} -.icon-music-tone:before { - content: "\e062"; -} -.icon-earphones-alt:before { - content: "\e03c"; -} -.icon-earphones:before { - content: "\e03d"; -} -.icon-equalizer:before { - content: "\e06c"; -} -.icon-like:before { - content: "\e068"; -} -.icon-dislike:before { - content: "\e06d"; -} -.icon-control-start:before { - content: "\e06f"; -} -.icon-control-rewind:before { - content: "\e070"; -} -.icon-control-play:before { - content: "\e071"; -} -.icon-control-pause:before { - content: "\e072"; -} -.icon-control-forward:before { - content: "\e073"; -} -.icon-control-end:before { - content: "\e074"; -} -.icon-volume-1:before { - content: "\e09f"; -} -.icon-volume-2:before { - content: "\e0a0"; -} -.icon-volume-off:before { - content: "\e0a1"; -} -.icon-calender:before { - content: "\e075"; -} -.icon-bulb:before { - content: "\e076"; -} -.icon-chart:before { - content: "\e077"; -} -.icon-ban:before { - content: "\e07c"; -} -.icon-bubble:before { - content: "\e07d"; -} -.icon-camrecorder:before { - content: "\e07e"; -} -.icon-camera:before { - content: "\e07f"; -} -.icon-cloud-download:before { - content: "\e083"; -} -.icon-cloud-upload:before { - content: "\e084"; -} -.icon-envelope:before { - content: "\e086"; -} -.icon-eye:before { - content: "\e087"; -} -.icon-flag:before { - content: "\e088"; -} -.icon-heart:before { - content: "\e08a"; -} -.icon-info:before { - content: "\e08b"; -} -.icon-key:before { - content: "\e08c"; -} -.icon-link:before { - content: "\e08d"; -} -.icon-lock:before { - content: "\e08e"; -} -.icon-lock-open:before { - content: "\e08f"; -} -.icon-magnifier:before { - content: "\e090"; -} -.icon-magnifier-add:before { - content: "\e091"; -} -.icon-magnifier-remove:before { - content: "\e092"; -} -.icon-paper-clip:before { - content: "\e093"; -} -.icon-paper-plane:before { - content: "\e094"; -} -.icon-power:before { - content: "\e097"; -} -.icon-refresh:before { - content: "\e098"; -} -.icon-reload:before { - content: "\e099"; -} -.icon-settings:before { - content: "\e09a"; -} -.icon-star:before { - content: "\e09b"; -} -.icon-symble-female:before { - content: "\e09c"; -} -.icon-symbol-male:before { - content: "\e09d"; -} -.icon-target:before { - content: "\e09e"; -} -.icon-credit-card:before { - content: "\e025"; -} -.icon-paypal:before { - content: "\e608"; -} -.icon-social-tumblr:before { - content: "\e00a"; -} -.icon-social-twitter:before { - content: "\e009"; -} -.icon-social-facebook:before { - content: "\e00b"; -} -.icon-social-instagram:before { - content: "\e609"; -} -.icon-social-linkedin:before { - content: "\e60a"; -} -.icon-social-pintarest:before { - content: "\e60b"; -} -.icon-social-github:before { - content: "\e60c"; -} -.icon-social-gplus:before { - content: "\e60d"; -} -.icon-social-reddit:before { - content: "\e60e"; -} -.icon-social-skype:before { - content: "\e60f"; -} -.icon-social-dribbble:before { - content: "\e00d"; -} -.icon-social-behance:before { - content: "\e610"; -} -.icon-social-foursqare:before { - content: "\e611"; -} -.icon-social-soundcloud:before { - content: "\e612"; -} -.icon-social-spotify:before { - content: "\e613"; -} -.icon-social-stumbleupon:before { - content: "\e614"; -} -.icon-social-youtube:before { - content: "\e008"; -} -.icon-social-dropbox:before { - content: "\e00c"; -} diff --git a/static/css/skill_show.css b/static/css/skill_show.css deleted file mode 100755 index c595af6..0000000 --- a/static/css/skill_show.css +++ /dev/null @@ -1,112 +0,0 @@ -.hex-particle-container { - width: 600px; - height: 600px; - display: block; - position: fixed; - margin-left: -300px; - margin-top: -300px; - top: 50%; - left: 50%; -} - -.hex-p { - display: none; - -webkit-transform: translate(200, 200); - transform: translate(200, 200); -} - -.hex-particle-blue { - fill: #2196bd; -} -.hex-particle-lightblue { - fill: #4bbfbf; -} -.hex-particle-purple { - fill: #9776b5; -} -.hex-particle-violet { - fill: #d25e9f; -} -.hex-particle-green { - fill: #4daf65; -} -.hex-particle-red { - fill: #d63d3d; -} -.hex-particle-orange { - fill: #f26b3f; -} - -.overlay { - -webkit-perspective: 600px; - perspective: 600px; - position: fixed; - width: 100%; - height: 100%; - background: none; - -webkit-transform: translateZ(0); - transform: translateZ(0); -} - -.award-container { - display: none; - width: 650px; - height: 80px; - position: fixed; - left: 50%; - top: 50%; - margin-left: -325px; - font-family: 'Open Sans'; -} -.award-container img { - position: absolute; - top: -25px; - left: -20px; - width: 130px; - height: 130px; -} -.award-container .content { - overflow: hidden; - position: relative; - background: #3e3e3c; - border-radius: 10px; - box-sizing: border-box; - padding: 30px; - height: 63px; - white-space: no-wrap; - margin-top: 8px; - color: #FFF; -} -.award-container .unlocked { - text-transform: uppercase; - font-size: 11px; - font-weight: 300; - text-align: center; - position: absolute; - top: 5px; - padding-left: 10px; - width: 600px; -} -.award-container .achievement { - font-size: 30px; - font-weight: 300; - text-align: center; - position: absolute; - font-family: 'Lobster'; - top: 18px; - padding-left: 10px; - width: 600px; -} -.award-container .achievement:before { - content: open-quote; -} -.award-container .achievement:after { - content: close-quote; -} -.award-container .close { - position: absolute; - top: 5px; - right: 5px; - cursor: pointer; - color: #666; -} diff --git a/static/css/system_messages.css b/static/css/system_messages.css deleted file mode 100755 index e69de29..0000000 diff --git a/static/css/tilda-grid.css b/static/css/tilda-grid.css deleted file mode 100755 index e69de29..0000000 diff --git a/static/css/tilda_blocks.css b/static/css/tilda_blocks.css deleted file mode 100755 index bcceb12..0000000 --- a/static/css/tilda_blocks.css +++ /dev/null @@ -1,2793 +0,0 @@ -@import url(https://fonts.googleapis.com/css?family=Open+Sans:300,400,500,600,700&subset=latin,cyrillic); -@import url(https://fonts.googleapis.com/css?family=Roboto:300,400,500,600,700&subset=latin,cyrillic); -.t-body { - margin: 0px; -} -#allrecords { - -webkit-font-smoothing: antialiased; - background-color: none; -} -#allrecords a { - color: #ff8562; - text-decoration: none; -} -#allrecords a[href^=tel] { - color: inherit; - text-decoration: none; -} -#allrecords ol { - padding-left: 22px; -} -#allrecords ul { - padding-left: 20px; -} -@media print { - body, - html { - min-width: 1200px; - max-width: 1200px; - padding: 0; - margin: 0 auto; - border: none; - } -} -.t-text { - font-family: 'Open Sans', serif; - font-weight: 300; - color: #000000; -} -.t-text_xs { - font-size: 15px; - line-height: 1.55; -} -.t-text_sm { - font-size: 18px; - line-height: 1.55; -} -.t-text_md { - font-size: 20px; - line-height: 1.55; -} -.t-text_lg { - font-size: 22px; - line-height: 1.55; -} -.t-text_weight_plus { - font-weight: 400; -} -.t-text-impact { - font-family: 'Open Sans', serif; - font-weight: 300; - color: #000000; -} -.t-text-impact_xs { - font-size: 26px; - line-height: 1.50; -} -.t-text-impact_sm { - font-size: 32px; - line-height: 1.35; -} -.t-text-impact_md { - font-size: 38px; - line-height: 1.35; -} -.t-text-impact_lg { - font-size: 42px; - line-height: 1.23; -} -.t-name { - font-family: 'Roboto', sans-serif; - font-weight: 600; - color: #000000; -} -.t-name_xs { - font-size: 16px; - line-height: 1.35; -} -.t-name_sm { - font-size: 18px; - line-height: 1.35; -} -.t-name_md { - font-size: 20px; - line-height: 1.35; -} -.t-name_lg { - font-size: 22px; - line-height: 1.35; -} -.t-name_xl { - font-size: 24px; - line-height: 1.35; -} -.t-heading { - font-family: 'Roboto', sans-serif; - font-weight: 600; - color: #000000; -} -.t-heading_xs { - font-size: 26px; - line-height: 1.23; -} -.t-heading_sm { - font-size: 28px; - line-height: 1.17; -} -.t-heading_md { - font-size: 30px; - line-height: 1.17; -} -.t-heading_lg { - font-size: 32px; - line-height: 1.17; -} -.t-title { - font-family: 'Roboto', sans-serif; - font-weight: 600; - color: #000000; -} -.t-title_xxs { - font-size: 36px; - line-height: 1.23; -} -.t-title_xs { - font-size: 42px; - line-height: 1.23; -} -.t-title_sm { - font-size: 48px; - line-height: 1.23; -} -.t-title_md { - font-size: 52px; - line-height: 1.23; -} -.t-title_lg { - font-size: 64px; - line-height: 1.23; -} -.t-title_xl { - font-size: 72px; - line-height: 1.17; -} -.t-title_xxl { - font-size: 82px; - line-height: 1.17; -} -.t-descr { - font-family: 'Roboto', sans-serif; - font-weight: 300; - color: #000000; -} -.t-descr_xxs { - font-size: 14px; - line-height: 1.55; -} -.t-descr_xs { - font-size: 16px; - line-height: 1.55; -} -.t-descr_sm { - font-size: 18px; - line-height: 1.55; -} -.t-descr_md { - font-size: 20px; - line-height: 1.55; -} -.t-descr_lg { - font-size: 22px; - line-height: 1.55; -} -.t-descr_xl { - font-size: 24px; - line-height: 1.50; -} -.t-descr_xxl { - font-size: 26px; - line-height: 1.45; -} -.t-descr_xxxl { - font-size: 30px; - line-height: 1.45; - letter-spacing: 0.45; -} -.t-uptitle { - font-family: 'Roboto', sans-serif; - font-weight: 600; - color: #000000; - letter-spacing: 2.5px; -} -.t-uptitle_xs { - font-size: 12px; -} -.t-uptitle_sm { - font-size: 14px; -} -.t-uptitle_md { - font-size: 16px; -} -.t-uptitle_lg { - font-size: 18px; -} -.t-uptitle_xl { - font-size: 20px; - letter-spacing: 2px; -} -.t-uptitle_xxl { - font-size: 22px; - letter-spacing: 2px; -} -.t-uptitle_xxxl { - font-size: 24px; - letter-spacing: 2px; -} -@media screen and (max-width: 1200px) { - .t-text_xs { - font-size: 14px; - } - .t-text_sm { - font-size: 16px; - } - .t-text_md { - font-size: 18px; - } - .t-text_lg { - font-size: 20px; - } - .t-text-impact_md { - font-size: 30px; - } - .t-descr_xxs { - font-size: 12px; - } - .t-descr_xs { - font-size: 14px; - } - .t-descr_sm { - font-size: 16px; - } - .t-descr_md { - font-size: 18px; - } - .t-descr_lg { - font-size: 20px; - } - .t-descr_xl { - font-size: 22px; - } - .t-descr_xxl { - font-size: 22px; - } - .t-descr_xxxl { - font-size: 26px; - } - .t-uptitle_md { - font-size: 14px; - } - .t-uptitle_lg { - font-size: 16px; - } - .t-uptitle_xl { - font-size: 18px; - } - .t-uptitle_xxl { - font-size: 20px; - } - .t-uptitle_xxxl { - font-size: 22px; - } - .t-title_xxs { - font-size: 32px; - } - .t-title_xs { - font-size: 38px; - } - .t-title_sm { - font-size: 44px; - } - .t-title_md { - font-size: 48px; - } - .t-title_lg { - font-size: 60px; - } - .t-title_xl { - font-size: 68px; - } - .t-title_xxl { - font-size: 78px; - } - .t-name_xs { - font-size: 14px; - } - .t-name_sm { - font-size: 16px; - } - .t-name_md { - font-size: 18px; - } - .t-name_lg { - font-size: 20px; - } - .t-name_xl { - font-size: 22px; - } - .t-heading_xs { - font-size: 24px; - } - .t-heading_sm { - font-size: 26px; - } - .t-heading_md { - font-size: 28px; - } - .t-heading_lg { - font-size: 30px; - } -} -@media screen and (max-width: 640px) { - .t-text_xs { - font-size: 12px; - line-height: 1.45; - } - .t-text_sm { - font-size: 14px; - line-height: 1.45; - } - .t-text_md { - font-size: 16px; - line-height: 1.45; - } - .t-text_lg { - font-size: 18px; - line-height: 1.45; - } - .t-text-impact_sm { - font-size: 22px; - } - .t-text-impact_md { - font-size: 26px; - } - .t-text-impact_lg { - font-size: 28px; - } - .t-descr_xs { - font-size: 12px; - line-height: 1.45; - } - .t-descr_sm { - font-size: 14px; - line-height: 1.45; - } - .t-descr_md { - font-size: 16px; - line-height: 1.45; - } - .t-descr_lg { - font-size: 18px; - line-height: 1.45; - } - .t-descr_xl { - font-size: 20px; - line-height: 1.40; - } - .t-descr_xxl { - font-size: 20px; - } - .t-descr_xxxl { - font-size: 22px; - } - .t-uptitle_xs { - font-size: 10px; - } - .t-uptitle_sm { - font-size: 10px; - } - .t-uptitle_md { - font-size: 12px; - } - .t-uptitle_lg { - font-size: 14px; - } - .t-uptitle_xl { - font-size: 16px; - } - .t-uptitle_xxl { - font-size: 18px; - } - .t-uptitle_xxxl { - font-size: 20px; - } - .t-title_xxs { - font-size: 28px; - } - .t-title_xs { - font-size: 30px; - } - .t-title_sm { - font-size: 30px; - } - .t-title_md { - font-size: 30px; - } - .t-title_lg { - font-size: 30px; - } - .t-title_xl { - font-size: 32px; - } - .t-title_xxl { - font-size: 36px; - } - .t-name_xs { - font-size: 12px; - } - .t-name_sm { - font-size: 14px; - } - .t-name_md { - font-size: 16px; - } - .t-name_lg { - font-size: 18px; - } - .t-name_xl { - font-size: 20px; - } - .t-heading_xs { - font-size: 22px; - } - .t-heading_sm { - font-size: 24px; - } - .t-heading_md { - font-size: 24px; - } - .t-heading_lg { - font-size: 26px; - } -} -@media screen and (max-width: 480px) { - .t-title_xl { - font-size: 30px; - } - .t-title_xxl { - font-size: 30px; - } -} -.t-records { - -webkit-font_smoothing: antialiased; - background-color: none; -} -.t-records a { - color: #ff8562; - text-decoration: none; -} -.t-records a[href^=tel] { - color: inherit; - text-decoration: none; -} -.t-records ol { - padding-left: 22px; - margin-top: 0px; - margin-bottom: 10px; -} -.t-records ul { - padding-left: 20px; - margin-top: 0px; - margin-bottom: 10px; -} -.t-cover { - height: 700px; - width: 100%; - -webkit-background-size: cover; - -moz-background-size: cover; - -o-background-size: cover; - background-size: cover; - background-color: #000; - background-repeat: no-repeat; - background-position: center center; - text-align: center; - vertical-align: middle; - position: relative; - background-attachment: fixed; - overflow: hidden; -} -.t-cover__carrier { - height: 700px; - width: 100%; - background-size: cover; - -webkit-background-size: cover; - -moz-background-size: cover; - -o-background-size: cover; - background-repeat: no-repeat; - background-position: center center; - text-align: center; - vertical-align: middle; - position: relative; - background-attachment: fixed; -} -@media screen and (max-device-width: 1024px) { - .t-cover { - background-attachment: scroll; - } - .t-cover__carrier { - background-attachment: scroll; - } -} -@media print { - .t-cover { - background-attachment: scroll; - } - .t-cover__carrier { - background-attachment: scroll; - } -} -.t-cover__filter { - height: 700px; - width: 100%; - position: absolute; - top: 0; - left: 0; -} -.t-cover .t-container, -.t-cover .t-container_100, -.t-cover .t-container_10, -.t-cover .t-container_8 { - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; -} -.t-cover__wrapper { - height: 700px; - display: table-cell; - width: 1200px; -} -.t-cover__wrapper span.space { - display: inline-block; - height: 100%; - width: 1px; -} -@media screen and (max-width: 640px) { - .t-cover { - height: 400px; - background-attachment: fixed; - } - .t-cover__carrier { - background-attachment: scroll !important; - background-size: cover; - background-position: center center; - } - .t-cover__filter { - height: 400px; - } - .t-cover__wrapper { - height: 400px; - } -} -@-webkit-keyframes t-arrow-bottom { - 0% { - -moz-transform: translateY(0); - -ms-transform: translateY(0); - -webkit-transform: translateY(0); - -o-transform: translateY(0); - transform: translateY(0); - } - 50% { - -moz-transform: translateY(-7px); - -ms-transform: translateY(-7px); - -webkit-transform: translateY(-7px); - -o-transform: translateY(-7px); - transform: translateY(-7px); - } - 55% { - -moz-transform: translateY(-7px); - -ms-transform: translateY(-7px); - -webkit-transform: translateY(-7px); - -o-transform: translateY(-7px); - transform: translateY(-7px); - } - 100% { - -moz-transform: translateY(0); - -ms-transform: translateY(0); - -webkit-transform: translateY(0); - -o-transform: translateY(0); - transform: translateY(0); - } -} -@keyframes t-arrow-bottom { - 0% { - -moz-transform: translateY(0); - -ms-transform: translateY(0); - -webkit-transform: translateY(0); - -o-transform: translateY(0); - transform: translateY(0); - } - 50% { - -moz-transform: translateY(-7px); - -ms-transform: translateY(-7px); - -webkit-transform: translateY(-7px); - -o-transform: translateY(-7px); - transform: translateY(-7px); - } - 55% { - -moz-transform: translateY(-7px); - -ms-transform: translateY(-7px); - -webkit-transform: translateY(-7px); - -o-transform: translateY(-7px); - transform: translateY(-7px); - } - 100% { - -moz-transform: translateY(0); - -ms-transform: translateY(0); - -webkit-transform: translateY(0); - -o-transform: translateY(0); - transform: translateY(0); - } -} -.t-cover__arrow-wrapper_animated { - animation: t-arrow-bottom 1.7s infinite ease; -} -.t-cover__arrow { - position: absolute; - z-index: 9; - bottom: 40px; - right: 0; - left: 0; - text-align: center; -} -.t-cover__arrow-wrapper { - display: inline-block; - -webkit-transition: all ease-in-out 0.2s; - -moz-transition: all ease-in-out 0.2s; - -o-transition: all ease-in-out 0.2s; - transition: all ease-in-out 0.2s; - cursor: pointer; -} -.t-cover__arrow-wrapper:hover { - opacity: .7; -} -.t-cover__arrow-svg { - fill: #fff; -} -@media screen and (max-width: 640px) { - .t-cover__arrow_mobile { - -moz-transform: scale(.7); - -ms-transform: scale(.7); - -webkit-transform: scale(.7); - -o-transform: scale(.7); - transform: scale(.7); - } - .t-cover__arrow { - bottom: 14px; - } -} -.t-btn { - display: inline-block; - font-family: 'Roboto', sans-serif; - height: 60px; - border: 0 none; - font-size: 16px; - padding-left: 60px; - padding-right: 60px; - text-align: center; - white-space: nowrap; - vertical-align: middle; - font-weight: bold; - background-image: none; - cursor: pointer; - -webkit-appearance: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - user-select: none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.t-btn td { - vertical-align: middle; -} -@media screen and (max-width: 640px) { - .t-btn { - white-space: normal; - padding-left: 30px; - padding-right: 30px; - } -} -.t-submit { - font-family: 'Roboto', sans-serif; - text-align: center; - height: 60px; - border: 0 none; - font-size: 16px; - padding-left: 60px; - padding-right: 60px; - -webkit-appearance: none; - font-weight: bold; - white-space: nowrap; - background-image: none; - cursor: pointer; - margin: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -@media screen and (max-width: 640px) { - .t-submit { - white-space: normal; - padding-left: 30px; - padding-right: 30px; - } -} -.t-input { - margin: 0; - font-family: 'Roboto', sans-serif; - font-size: 100%; - height: 60px; - padding: 0px 20px; - font-size: 16px; - line-height: 1.33; - width: 100%; - border: 0 none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.t-input::-moz-focus-inner { - padding: 0; - border: 0; -} -@media screen and (max-width: 1200px) { - .t-screenmin-1200px { - display: none; - } -} -@media screen and (max-width: 980px) { - .t-screenmin-980px { - display: none; - } -} -@media screen and (max-width: 640px) { - .t-screenmin-640px { - display: none; - } -} -@media screen and (max-width: 480px) { - .t-screenmin-480px { - display: none; - } -} -@media screen and (max-width: 320px) { - .t-screenmin-320px { - display: none; - } -} -@media screen and (min-width: 321px) { - .t-screenmax-320px { - display: none; - } -} -@media screen and (min-width: 481px) { - .t-screenmax-480px { - display: none; - } -} -@media screen and (min-width: 641px) { - .t-screenmax-640px { - display: none; - } -} -@media screen and (min-width: 981px) { - .t-screenmax-980px { - display: none; - } -} -@media screen and (min-width: 1201px) { - .t-screenmax-1200px { - display: none; - } -} -.t-hidden { - display: none; -} -.t-opacity_50 { - filter: alpha(opacity=50); - KHTMLOpacity: 0.50; - MozOpacity: 0.50; - opacity: 0.50; -} -.t-opacity_70 { - filter: alpha(opacity=70); - KHTMLOpacity: 0.70; - MozOpacity: 0.70; - opacity: 0.70; -} -.t-uppercase { - text-transform: uppercase; -} -.t-align_center { - text-align: center; -} -.t-align_left { - text-align: left; -} -.t-align_right { - text-align: right; -} -.t-margin_auto { - margin: 0 auto; -} -.t-valign_middle { - vertical-align: middle; -} -.t-valign_top { - vertical-align: top; -} -.t-valign_bottom { - vertical-align: bottom; -} -.yashare-style .b-share-btn__facebook, -.yashare-style .b-share-btn__twitter, -.yashare-style .b-share-btn__vkontakte { - background-color: transparent !important; -} -.yashare-style .b-share__link { - -webkit-border-radius: 0px !important; - border-radius: 0px !important; -} -.yashare-style-black-white .b-share-btn__wrap { - background-color: #000 !important; - padding: 5px !important; -} -.yashare-style-transp-white .b-share-btn__wrap { - padding: 5px !important; -} -.yashare-style-transp-white .b-share-counter { - color: #fff; - font-weight: bold; -} -.yashare-style-white-black .b-share-btn__wrap { - background-color: #fff !important; - padding: 5px !important; -} -.yashare-style-white-black .b-share-icon { - background-image: url("https://tilda.ws/img/b-share_counter_large_white.png") !important; -} -.yashare-style-transp-black .b-share-btn__wrap { - padding: 5px !important; -} -.yashare-style-transp-black .b-share-icon { - background-image: url("https://tilda.ws/img/b-share_counter_large_white.png") !important; -} -.yashare-style-transp-black .b-share-counter { - color: #000; - font-weight: bold; -} -.ya-share2 ul { - padding-left: 0px !important; -} -.carousel { - position: relative; -} -.carousel ol { - padding-left: 0px !important; -} -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} -.carousel-inner > .item { - position: relative; - display: none; - -webkit-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - height: auto; - line-height: 1; -} -.carousel-inner .widthauto { - width: auto; - max-width: 100%; - vertical-align: middle; -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 15%; - opacity: 0.2; - filter: alpha(opacity=20); -} -.carousel-control.right { - right: 0; - left: auto; -} -.carousel-control .carousel-control-left { - position: absolute; - top: 48%; - z-index: 5; - display: inline-block; - left: 20%; - height: 34px; - width: 21px; - background: url(//tilda.ws/img/aboutSliderControls.png) no-repeat; -} -.carousel-control .carousel-control-left-white { - position: absolute; - top: 48%; - z-index: 5; - display: inline-block; - left: 20%; - height: 34px; - width: 21px; - background: url(//tilda.ws/img/aboutSliderControls_white.png) no-repeat; -} -.carousel-control .carousel-control-right { - position: absolute; - top: 48%; - z-index: 5; - display: inline-block; - right: 20%; - height: 34px; - width: 21px; - background: url(//tilda.ws/img/aboutSliderControls.png) no-repeat; - background-position: left bottom; -} -.carousel-control .carousel-control-right-white { - position: absolute; - top: 48%; - z-index: 5; - display: inline-block; - right: 20%; - height: 34px; - width: 21px; - background: url(//tilda.ws/img/aboutSliderControls_white.png) no-repeat; - background-position: left bottom; -} -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - padding-left: 0; - margin-left: -30%; - text-align: center; - list-style: none; -} -.carousel-indicators.dotsbottom { - bottom: -60px; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - margin-left: 5px; - margin-right: 5px; - text-indent: -999px; - cursor: pointer; - background-color: #000000; - border: none; - border-radius: 10px; -} -.carousel-indicators .active { - width: 10px; - height: 10px; - margin: 0; - margin-left: 4px; - margin-right: 4px; - border: 1px solid #000000; - border-radius: 10px; - background-color: transparent; -} -.carousel-indicators li.white { - background-color: #fff; -} -.carousel-indicators li.white.active { - border: 1px solid #fff; - border-radius: 10px; - background-color: transparent; -} -.carousel-caption-imgs h6 { - font-family: 'Open Sans', serif; - color: #000000; - font-weight: normal; - font-size: 14px; - line-height: 28px; - padding-top: 28px; - padding-bottom: 0px; - text-align: center; -} -.carousel-caption-imgs p { - font-family: 'Open Sans', serif; - color: #000000; - font-size: 14px; - line-height: 28px; - padding-top: 14px; - padding-bottom: 14px; - text-align: center; -} -.carousel-title { - font-family: 'Roboto', sans-serif; - color: #000000; - font-size: 18px; - line-height: 28px; - padding-top: 36px; - padding-bottom: 14px; - text-align: center; -} -.carousel-descr { - font-family: 'Open Sans', serif; - color: #000000; - font-size: 14px; - line-height: 28px; - padding-top: 14px; - padding-bottom: 14px; - text-align: center; -} -@media screen and (min-width: 768px) { - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after { - display: table; - content: " "; -} -.clearfix:after { - clear: both; -} -.center-block { - display: block; - margin-right: auto; - margin-left: auto; -} -@media screen and (max-width: 960px) { - .carousel-control .carousel-control-left { - left: 10%; - } - .carousel-control .carousel-control-left-white { - left: 10%; - } - .carousel-control .carousel-control-right { - right: 10%; - } - .carousel-control .carousel-control-right-white { - right: 10%; - } -} -.t-tildalabel { - background-color: #000; - color: #fff; - width: 100%; - height: 70px; - font-family: Arial; - font-size: 14px; -} -.t-tildalabel:hover .t-tildalabel__wrapper { - opacity: 1; -} -.t-tildalabel_white { - background-color: #fff; - color: #000; -} -.t-tildalabel_gray { - background-color: #eee; - color: #000; -} -.t-tildalabel__wrapper { - display: table; - height: 30px; - width: 270px; - margin: 0 auto; - padding-top: 20px; - opacity: 0.4; -} -.t-tildalabel__txtleft { - display: table-cell; - width: 120px; - height: 30px; - vertical-align: middle; - text-align: right; - padding-right: 12px; - font-weight: 300; - font-size: 12px; -} -.t-tildalabel__wrapimg { - display: table-cell; - width: 30px; - height: 30px; - vertical-align: middle; -} -.t-tildalabel__img { - width: 30px; - height: 30px; - vertical-align: middle; -} -.t-tildalabel__txtright { - display: table-cell; - width: 120px; - height: 30px; - vertical-align: middle; - padding-left: 12px; - font-weight: 500; - letter-spacing: 2px; -} -.t-tildalabel__link { - color: #fff; - text-decoration: none; - vertical-align: middle; -} -.t-tildalabel_white .t-tildalabel__link, -.t-tildalabel_gray .t-tildalabel__link { - color: #000; -} -.t-carousel { - position: relative; -} -.t-carousel__inner { - position: relative; - overflow: hidden; - margin: 0 auto; -} -.t-carousel__slides { - position: relative; -} -.t-carousel__inner > .t-carousel__item { - position: relative; - display: none; - -webkit-transition: 0 ease-in-out left; - -moz-transition: 0 ease-in-out left; - -o-transition: 0 ease-in-out left; - transition: 0 ease-in-out left; -} -.t-carousel__inner > .t-carousel__item.t-carousel__animation_fast { - -webkit-transition: .3s ease-in-out left; - -moz-transition: .3s ease-in-out left; - -o-transition: .3s ease-in-out left; - transition: .3s ease-in-out left; -} -.t-carousel__inner > .t-carousel__item.t-carousel__animation_slow { - -webkit-transition: .6s ease-in-out left; - -moz-transition: .6s ease-in-out left; - -o-transition: .6s ease-in-out left; - transition: .6s ease-in-out left; -} -.t-carousel__item__wrapper { - position: relative; - margin: 0 auto; -} -.t-carousel__item__img { - background-size: contain; - background-repeat: no-repeat; - background-position: center; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; -} -.t-carousel_cover .t-carousel__item__img { - background-size: cover; -} -.t-carousel__inner > .active, -.t-carousel__inner > .next, -.t-carousel__inner > .prev { - display: block; -} -.t-carousel__inner > .active { - left: 0; -} -.t-carousel__inner > .next, -.t-carousel__inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.t-carousel__inner > .next { - left: 100%; -} -.t-carousel__inner > .prev { - left: -100%; -} -.t-carousel__inner > .next.left, -.t-carousel__inner > .prev.right { - left: 0; -} -.t-carousel__inner > .active.left { - left: -100%; -} -.t-carousel__inner > .active.right { - left: 100%; -} -.t-carousel__arrows__container { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - margin: 0 auto; - pointer-events: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR4nGP6zwAAAgcBApocMXEAAAAASUVORK5CYII=',sizingMethod='scale'); - background: none !important; -} -.t-carousel__arrow_outsidesmall .t-carousel__arrow__wrapper_left { - left: 16px; -} -.t-carousel__arrow_outsidesmall .t-carousel__arrow__wrapper_right { - right: 16px; -} -.t-carousel__arrow_outsidemiddle .t-carousel__arrow__wrapper_left { - left: 20px; -} -.t-carousel__arrow_outsidemiddle .t-carousel__arrow__wrapper_right { - right: 20px; -} -.t-carousel__control { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 15%; - -webkit-transition: all ease-in-out 0.3s; - -moz-transition: all ease-in-out 0.3s; - -o-transition: all ease-in-out 0.3s; - transition: all ease-in-out 0.3s; - pointer-events: auto; -} -.t-carousel__control:hover { - opacity: .6; -} -.t-carousel__arrow { - width: 34px; - height: 34px; - background: transparent; - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -webkit-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); -} -.t-carousel__arrow.t-carousel__arrow_small { - width: 20px; - height: 20px; -} -.t-carousel__arrow.t-carousel__arrow_large { - width: 54px; - height: 54px; -} -.t-carousel__arrow__wrapper { - -moz-transform: translateY(-50%); - -ms-transform: translateY(-50%); - -webkit-transform: translateY(-50%); - -o-transform: translateY(-50%); - transform: translateY(-50%); - position: absolute; - top: 50%; -} -.t-carousel__arrow__wrapper_left { - left: 30px; -} -.t-carousel__arrow__wrapper_right { - right: 30px; -} -.t-carousel__arrow_right { - border-top: 3px solid; - border-right: 3px solid; -} -.t-carousel__arrow_right.t-carousel__arrow_light { - border-top: 1px solid; - border-right: 1px solid; -} -.t-carousel__arrow_right.t-carousel__arrow_bold { - border-top: 6px solid; - border-right: 6px solid; -} -.t-carousel__arrow_left { - border-left: 3px solid; - border-bottom: 3px solid; -} -.t-carousel__arrow_left.t-carousel__arrow_light { - border-left: 1px solid; - border-bottom: 1px solid; -} -.t-carousel__arrow_left.t-carousel__arrow_bold { - border-left: 6px solid; - border-bottom: 6px solid; -} -.t-carousel__control.right { - right: 0; - left: auto; -} -@media screen and (max-width: 768px) { - .t-carousel__control .t-carousel__arrow { - width: 12px; - height: 12px; - } - .t-carousel-control { - width: 10%; - } - .t-carousel__arrow__left { - left: 15px; - } - .t-carousel__arrow__right { - right: 15px; - } -} -.t-carousel__indicators.carousel-indicators { - z-index: 15; - text-align: center; - list-style: none; - position: relative; - padding-left: 0 !important; - margin: 0 auto; - padding: 20px 0; - bottom: auto; - left: auto; -} -.t-carousel__indicators.t-carousel__indicators_light { - padding: 15px 0 18px; -} -.t-carousel__indicators.t-carousel__indicators_bold { - padding: 24px 0 21px; -} -.t-carousel__indicators .t-carousel__indicator { - display: inline-block; - width: 8px; - height: 8px; - margin: 0 6px; - text-indent: -999px; - cursor: pointer; - background-color: #222; - border: none; - border-radius: 10px; - opacity: .4; - -webkit-transition: .2s ease-in-out opacity; - -moz-transition: .2s ease-in-out opacity; - -o-transition: .2s ease-in-out opacity; - transition: .2s ease-in-out opacity; -} -@media screen and (max-width: 640px) { - .t-carousel__indicators.carousel-indicators, - .t-carousel__indicators.t-carousel__indicators_light, - .t-carousel__indicators.t-carousel__indicators_bold { - padding: 15px 0; - } -} -.t-carousel__indicators.t-carousel__indicators_light .t-carousel__indicator { - width: 4px; - height: 4px; - margin: 0 5px; -} -.t-carousel__indicators.t-carousel__indicators_bold .t-carousel__indicator { - width: 10px; - height: 10px; - margin: 0 6px; -} -.t-carousel__indicators .t-carousel__indicator:hover { - opacity: .8; -} -.t-carousel__indicators .t-carousel__indicator.active { - opacity: 1; -} -.t-carousel__indicators.t-carousel__indicators_inside { - position: absolute; - bottom: 0; - left: 0; - right: 0; -} -.t-carousel__caption-inside { - display: none; -} -.t-carousel__caption_wrapper { - border-top: 1px solid #eee; - padding: 14px 0; -} -.t-carousel__descr { - margin-top: 5px; - color: #777; -} -.t-zoomer__show_fixed { - max-height: 100%; - max-width: 100%; - overflow: hidden; -} -.t-zoomer__wrapper { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: -1; - opacity: 0; - -webkit-transition: all ease-in-out .2s; - -moz-transition: all ease-in-out .2s; - -o-transition: all ease-in-out .2s; - transition: all ease-in-out .2s; -} -.t-zoomer__show .t-zoomer__wrapper { - z-index: 9999999; - opacity: 1; -} -.t-zoomer__container { - text-align: center; - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; -} -.t-zoomer__bg { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - background: #fff; - cursor: -webkit-zoom-out; - cursor: zoom-out; -} -.t-zoomer__comments { - position: absolute; - right: 0; - bottom: 0; - left: 0; - display: block; - height: auto; -} -.t-zoomer__descr { - z-index: 3; - text-align: center; - padding: 14px 20px 0; - background: transparent; - max-width: 800px; - margin: 0 auto; -} -.t-zoomable { - cursor: -webkit-zoom-in; - cursor: zoom-in; -} -.t-zoomer__show .t-zoomable, -.t-zoomer__show .t-carousel__zoomer__img { - cursor: -webkit-zoom-out; - cursor: zoom-out; -} -.t-zoomer__container { - z-index: 99999999; -} -#t-carousel__zoomed, -.t-carousel__zoomer__slides, -.t-carousel__zoomer__inner, -.t-carousel__zoomer__wrapper { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; -} -.t-carousel__zoomer__inner { - top: 15px; - right: 15px; - bottom: 15px; - left: 15px; -} -.t-carousel__zoomer__img { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - max-width: 100%; - max-height: 100%; - margin: auto; - overflow: auto; -} -.t-carousel__zoomer__item { - height: 100%; -} -.t-zoomer__close { - position: fixed; - right: 10px; - top: 12px; - width: 29px; - height: 32px; - cursor: pointer; - -webkit-transition: .3s ease-in-out; - -moz-transition: .3s ease-in-out; - -o-transition: .3s ease-in-out; - transition: .3s ease-in-out; - z-index: 999999999999; -} -.t-zoomer__close:hover { - opacity: .7; -} -.t-zoomer__close-line { - position: absolute; - left: 15px; - height: 26px; - width: 2px; - background-color: #222; -} -.t-zoomer__close-line-first { - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -webkit-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); -} -.t-zoomer__close-line-second { - -moz-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - -webkit-transform: rotate(-45deg); - -o-transform: rotate(-45deg); - transform: rotate(-45deg); -} -.t-carousel__zoomer__control .t-carousel__arrow { - border-color: #222; - border-width: 2px; -} -.t-carousel__zoomer__control .t-carousel__arrow__wrapper_right { - right: 19px; -} -.t-carousel__zoomer__control .t-carousel__arrow__wrapper_left { - left: 19px; -} -.t107 { - text-align: center; -} -.t107__width { - vertical-align: middle; -} -.t107__widthauto { - width: auto; - max-width: 100%; - display: block; - margin: 0 auto; -} -.t107__title { - padding-top: 28px; - padding-bottom: 28px; - font-size: 14px; - line-height: 28px; -} -.t102__title { - font-size: 104px; - color: #fff; - margin: 74px 0 54px 0; - text-transform: uppercase; -} -.t102__descr { - color: #fff; - padding: 0 220px; -} -@media screen and (max-width: 1024px) { - .t102__title { - font-size: 70px; - line-height: 70px; - margin-top: 30px; - } - .t102__descr { - padding: 0 120px; - } -} -@media screen and (max-width: 640px) { - .t102__title { - font-size: 34px; - line-height: 38px; - margin-top: 30px; - } - .t102__descr { - padding: 0 10px; - } -} -.t001__wrapper { - padding-top: 42px; - padding-bottom: 42px; -} -.t001__uptitle { - text-transform: uppercase; - color: #ffffff; - padding-bottom: 60px; - padding-top: 30px; -} -.t001__title { - color: #fff; - padding: 24px 0px 38px 0px; - letter-spacing: 0.5px; -} -.t001__descr { - color: #fff; - padding: 0px 0px 30px 0px; -} -.t001__descr_center { - max-width: 700px; - margin: 0 auto; -} -.t001__descr_center a { - color: #fff !important; - font-weight: 600; -} -@media screen and (max-width: 640px) { - .t001__title { - padding-left: 10px; - padding-right: 10px; - } - .t001__uptitle { - padding-left: 10px; - padding-right: 10px; - } - .t001__descr { - padding-left: 10px; - padding-right: 10px; - font-size: 14px; - line-height: 20px; - } -} -.t005A__title { - padding-right: 50px; - margin-top: -2px; - padding-bottom: 34px; -} -.t005A__descr { - margin-top: -18px; - padding-bottom: 26px; -} -.t005A__text { - padding-top: 8px; - padding-bottom: 5px; -} -@media screen and (max-width: 640px) { - .t005A__title { - padding-right: 0px; - } - .t005A__text { - margin-bottom: 20px; - } -} -.t006 { - position: relative; -} -.t006__line_top { - width: 100%; - text-align: center; - position: relative; -} -.t006__line_top:after { - content: ''; - position: absolute; - top: 50%; - left: 0; - right: 0; - height: 1px; - background-color: #000000; -} -.t006__line_bottom { - border-top: 1px solid #000000; - width: 100%; - height: 1px; - text-align: center; - margin-top: 22px; - padding-bottom: 4px; -} -.t006__uptitle { - padding: 10px 43px; - background-color: #000000; - display: inline-block; - color: #fff; - font-weight: bold; - text-transform: uppercase; - letter-spacing: 2px; - position: relative; - z-index: 1; -} -.t006__text-impact { - padding: 40px 0 30px 0; - text-align: center; -} -.t006 .t-col_10 { - margin: 0; -} -@media screen and (max-width: 640px) { - .t006 .t-col_10 { - margin: 0; - padding: 0; - } - .t006__text-impact { - padding-left: 0px; - padding-right: 0px; - } - .t006__line_top { - height: auto; - } -} -.t015__title { - padding-top: 8px; - padding-bottom: 3px; -} -.t015__uptitle { - text-transform: uppercase; - padding-top: 10px; - padding-bottom: 40px; -} -.t015__descr { - padding: 41px 0px 0px 0px; -} -.t017__uptitle { - padding-top: 3px; - padding-bottom: 22px; -} -.t017__title { - padding-top: 2px; - padding-bottom: 0px; -} -.t017__descr { - padding-top: 21px; -} -.t021__line { - width: 100%; - max-width: 140px; - margin-left: auto; - margin-right: auto; - height: 1px; - background-color: #000000; -} -.t021__text-impact { - text-align: center; - margin-top: 44px; - margin-bottom: 54px; -} -.t022__text { - padding-top: 8px; - padding-bottom: 6px; -} -.t030__title { - margin-bottom: 15px; -} -.t030__descr { - margin-top: 8px; - padding-bottom: 6px; -} -.t032__wrapper { - padding-top: 42px; - padding-bottom: 42px; -} -.t032__title { - color: #fff; - margin-bottom: 50px; -} -.t032__line { - width: 100%; - height: 1px; - background-color: #fff; -} -.t032__descr { - color: #fff; - margin-top: 43px; - padding: 0 50px; - margin-bottom: 0; -} -@media screen and (max-width: 960px) { - .t032__line { - max-width: 160px; - margin: 0 auto; - } -} -@media screen and (max-width: 640px) { - .t032 .t-cover__wrapper { - display: block; - width: 100%; - } - .t032__title { - padding: 0 10px; - } - .t032__descr { - padding: 0 10px; - } -} -.t037 .t-container { - display: -webkit-box; - display: -moz-box; - display: -ms-flexbox; - display: -webkit-flex; - display: flex; -} -.t037__title { - font-family: 'Roboto', sans-serif; - color: #000000; - font-weight: 600; - font-size: 24px; - line-height: 28px; - padding-right: 50px; - padding-top: 7px; - padding-bottom: 7px; -} -.t037__text { - padding-top: 8px; - padding-bottom: 6px; -} -@media screen and (max-width: 960px) { - .t037 .t-container { - display: -webkit-block; - display: block; - } - .t037__title { - padding-right: 0px; - } -} -@media screen and (max-width: 640px) { - .t037__title { - margin-bottom: 20px; - padding-right: 0; - } -} -.t046__text { - text-align: center; - padding-top: 10px; - padding-bottom: 4px; -} -.t050__uptitle { - padding-top: 9px; - padding-bottom: 93px; - text-transform: uppercase; -} -.t050__descr { - padding-top: 50px; - padding-bottom: 9px; -} -.t034__verticalline { - width: 1px; - height: 65px; - display: inline-block; - background-color: #000000; -} -.t057 { - padding-bottom: 4px; - padding-top: 15; - font-family: 'Open Sans', serif; - line-height: 52px; - font-size: 48px; -} -.t089__inner { - border-top: 4px solid #000000; - border-bottom: 4px solid #000000; - padding: 20px 0; -} -.t089__text { - line-height: 36px; - font-size: 28px; - font-weight: bold; - margin: 0; - padding-bottom: 5px; -} -.t004 { - padding-top: 8px; - padding-bottom: 6px; -} -.t004__text-column-count_2 { - column-count: 2; - column-gap: 40px; - -moz-column-count: 2; - -moz-column-gap: 40px; - -webkit-column-count: 2; - -webkit-column-gap: 40px; -} -.t004__text-column-count_3 { - column-count: 3; - column-gap: 40px; - -moz-column-count: 3; - -moz-column-gap: 40px; - -webkit-column-count: 3; - -webkit-column-gap: 40px; -} -.t004__text-column-count_4 { - column-count: 4; - column-gap: 40px; - -moz-column-count: 4; - -moz-column-gap: 40px; - -webkit-column-count: 4; - -webkit-column-gap: 40px; -} -.t004__initial-letter:first-child::first-letter { - font-size: 100px; - float: left; - margin: -30px 20px -30px 0; -} -.t004 table { - border-collapse: collapse; - font-size: 1em; - width: 100%; -} -.t004 table td, -.t004 table th { - padding: 5px; - border: 1px solid #ddd; - vertical-align: top; -} -.t004 table thead td, -.t004 table th { - font-weight: bold; - border-bottom-color: #888; -} -@media screen and (max-width: 1200px) { - .t004__text-column-count_2, - .t004__text-column-count_3, - .t004__text-column-count_4 { - column-gap: 20px; - -moz-column-gap: 20px; - -webkit-column-gap: 20px; - } -} -@media screen and (max-width: 960px) { - .t004__text-column-count_2, - .t004__text-column-count_3, - .t004__text-column-count_4 { - column-count: 1; - column-gap: 0px; - -moz-column-count: 1; - -moz-column-gap: 0px; - -webkit-column-count: 1; - -webkit-column-gap: 0px; - } -} -@media screen and (max-width: 640px) { - .t004 h1 { - font-size: 28px; - line-height: 35px; - } -} -.t118 { - padding-top: 28px; - padding-bottom: 28px; -} -.t118__line { - height: 1px; - background-color: #000000; - border: none; - opacity: 0.2; - filter: alpha(opacity=20); -} -.t119__preface { - font-size: 30px; - line-height: 1.35; - margin-top: -1px; -} -@media screen and (max-width: 640px) { - .t119__preface { - font-size: 22px; - } -} -.t120__title { - padding-top: 4px; - padding-bottom: 14px; -} -.t120__descr { - margin-top: -6px; - padding-bottom: 3px; -} -.t134 { - text-align: center; -} -.t134__img { - max-width: 300px; -} -.t134__title { - font-family: 'Roboto', sans-serif; - font-size: 24px; - line-height: 25px; - text-align: center; - padding-top: 28px; - padding-bottom: 9px; - color: #000000; -} -.t134__descr { - font-size: 14px; - color: #000000; - line-height: 26px; - letter-spacing: 1px; - text-align: center; - font-family: 'Open Sans', serif; - padding-top: 22px; - padding-bottom: 6px; - filter: alpha(opacity=70); - KHTMLOpacity: 0.70; - MozOpacity: 0.70; - opacity: 0.70; -} -.t134 a { - color: #000000; -} -.t148__title { - color: #fff; - padding-top: 28px; - padding-bottom: 28px; - max-width: 480px; - width: 100%; - margin-left: 50px; - text-align: left; - margin-bottom: 40px; -} -@media screen and (max-width: 640px) { - .t148__title { - width: 90%; - margin-left: 20px; - margin-bottom: 20px; - } -} -.t153__title { - color: #fff; - padding-top: 20px; - padding-bottom: 20px; -} -.t153__uptitle { - color: #ffffff; - padding-bottom: 30px; - padding-top: 0px; -} -.t153__descr { - color: #fff; - padding: 10px 0px 20px 0px; - letter-spacing: 0.7px; - font-weight: normal; -} -.t153__descr_center { - max-width: 460px; - margin: 0 auto; -} -@media screen and (max-width: 640px) { - .t153__title { - padding-left: 10px; - padding-right: 10px; - } - .t153__uptitle { - padding-left: 10px; - padding-right: 10px; - } - .t153__descr { - padding-left: 10px; - padding-right: 10px; - } -} -.t154 { - padding-bottom: 80px; -} -.t154__uptitle { - text-transform: uppercase; - color: #ffffff; - padding-bottom: 40px; - padding-top: 0px; - letter-spacing: 2px; -} -.t154__title { - color: #fff; - padding: 20px 0px 20px 0px; - letter-spacing: 0.3px; -} -.t154__descr { - color: #fff; - padding: 20px 0px 0px 0px; -} -.t154__descr_center { - max-width: 520px; - margin: 0 auto; -} -@media screen and (max-width: 640px) { - .t154__title { - padding-left: 10px; - padding-right: 10px; - } - .t154__uptitle { - font-size: 12px; - padding-left: 10px; - padding-right: 10px; - } - .t154__descr { - padding-left: 10px; - padding-right: 10px; - font-size: 14px; - line-height: 20px; - } -} -.t158__text { - font-size: 28px; - line-height: 42px; - text-align: center; -} -@media screen and (max-width: 640px) { - .t158__text { - font-size: 22px; - line-height: 34px; - } -} -.t159__text { - font-size: 28px; - line-height: 42px; - text-align: center; -} -.t164__wrapper { - padding-top: 42px; - padding-bottom: 42px; -} -.t164__text { - padding-top: 8px; - padding-bottom: 6px; - color: #fff; -} -.t164__descr { - padding-bottom: 16px; - margin-top: -3px; - color: #fff; -} -.t164__title { - padding-bottom: 12px; - color: #fff; -} -.t164__subtitle { - font-size: 14px; - color: #fff; - line-height: 28px; - margin-top: -12px; - padding-bottom: 14px; -} -.t165 .t-container { - display: -webkit-box; - display: -moz-box; - display: -ms-flexbox; - display: -webkit-flex; - display: flex; -} -.t165__vmiddle { - margin-top: auto; - margin-bottom: auto; -} -.t165__vtop { - margin-bottom: auto; -} -.t165__vbottom { - margin-top: auto; -} -.t165__left { - text-align: left; -} -.t165__center { - text-align: center; -} -.t165__right { - text-align: right; -} -.t165__textwrapper { - padding-right: 20px; -} -.t165__uptitle { - padding: 0px; - margin: 0px; - margin-bottom: 14px; -} -.t165__title { - padding: 0px; - margin: 0px; - padding-bottom: 28px; -} -.t165__text { - filter: alpha(opacity=85); - KHTMLOpacity: 0.85; - MozOpacity: 0.85; - opacity: 0.85; -} -.t165__img { - float: right; - width: 100%; -} -.t165__img_circle { - border-radius: 50%; - -moz-border-radius: 50%; - -webkit-border-radius: 50%; -} -@media screen and (max-width: 640px) { - .t165 .t-container { - display: -webkit-block; - display: block; - } - .t165__text { - margin-bottom: 40px; - } -} -.t184__uptitle { - position: absolute; - top: 0px; - left: 0px; - letter-spacing: 2px; - color: #ffffff; - font-size: 18px; - line-height: 1.54; - font-weight: 300; - padding-top: 90px; - width: 100%; -} -.t184__title { - color: #fff; - padding: 24px 0px 40px 0px; - letter-spacing: 2px; -} -.t184__descr { - position: absolute; - bottom: 0px; - left: 0; - line-height: 35px; - font-size: 24px; - color: #fff; - padding: 0px 0px 90px 0px; - font-weight: 300; - margin: 0 auto; - letter-spacing: 1px; - width: 100%; -} -@media screen and (max-width: 640px) { - .t184__title { - font-size: 30px; - line-height: 30px; - padding-left: 10px; - padding-right: 10px; - } - .t184__uptitle { - font-size: 12px; - padding-left: 10px; - padding-right: 10px; - } - .t184__descr { - padding-left: 10px; - padding-right: 10px; - font-size: 14px; - line-height: 20px; - } -} -.t005__text { - padding-top: 8px; - padding-bottom: 5px; -} -@media screen and (max-width: 640px) { - .t005__text { - margin-bottom: 20px; - } -} -.t194__text { - padding-bottom: 6px; -} -.t194 .t-align_left .t194__img { - padding-bottom: 10px; - padding-top: 4px; - width: 100%; -} -.t194__sectitle { - font-size: 15px; - line-height: 20px; - padding-bottom: 5px; - padding-top: 5px; -} -.t194__secdescr { - font-size: 11px; - line-height: 16px; - padding-top: 0px; - padding-bottom: 7px; -} -@media screen and (max-width: 960px) { - .t194 .t-align_left { - margin-top: 20px; - margin-bottom: 20px; - } -} -@media screen and (max-width: 640px) { - .t194 .t-align_left { - width: 100% !important; - } -} -.t195__text { - padding-bottom: 6px; -} -.t195__imgsection { - text-align: center; -} -.t195__img { - padding-bottom: 10px; - padding-top: 4px; - max-width: 100%; -} -.t195__sectitle { - font-size: 15px; - line-height: 20px; - padding-bottom: 5px; - padding-top: 5px; - text-align: left; -} -.t195__secdescr { - font-size: 11px; - line-height: 16px; - padding-top: 0px; - padding-bottom: 7px; - text-align: left; -} -@media screen and (max-width: 960px) { - .t195__imgsection { - margin-top: 20px; - margin-bottom: 20px; - } -} -@media screen and (max-width: 640px) { - .t195__imgsection { - width: 100% !important; - } -} -.t202__wrapper { - padding-top: 42px; - padding-bottom: 42px; -} -.t202__uptitle { - color: #ffffff; - text-align: center; - border-radius: 50%; - -moz-border-radius: 50%; - -webkit-border-radius: 50%; - font-size: 40px; - color: #fff; - font-weight: 400; - border: 2px solid #ffffff; - margin: 0 auto; - margin-bottom: 60px; - margin-top: 30px; - width: 80px; - height: 80px; - overflow: hidden; - white-space: nowrap; - line-height: 80px; -} -.t202__title { - color: #fff; - padding: 24px 0px 38px 0px; - letter-spacing: 0.5px; -} -.t202__descr { - color: #fff; - padding: 0px 0px 30px 0px; -} -.t202__descr_center { - max-width: 700px; - margin: 0 auto; -} -.t202__descr_center a { - color: #fff !important; - font-weight: 600; -} -@media screen and (max-width: 640px) { - .t202__title { - padding-left: 10px; - padding-right: 10px; - } - .t202__uptitle { - font-size: 20px; - width: 40px; - height: 40px; - line-height: 40px; - } - .t202__descr { - padding-left: 10px; - padding-right: 10px; - font-size: 14px; - line-height: 20px; - } -} -.t203__wrapper { - display: table; - padding-top: 60px; - padding-bottom: 60px; - margin-left: -60px; - margin-right: -60px; -} -.t203__textwrapper { - display: block; - text-align: left; - background-color: #fff; - padding-left: 60px; - padding-right: 60px; - padding-top: 60px; - padding-bottom: 60px; -} -.t203__title { - padding-top: 20px; - padding-bottom: 20px; -} -.t203__text { - padding-bottom: 20px; - padding-top: 20px; -} -@media screen and (max-width: 720px) { - .t203__wrapper { - padding-top: 0px; - padding-bottom: 0px; - margin-left: 0px; - margin-right: 0px; - } - .t203__textwrapper { - margin: 20px 0px; - padding: 20px; - } -} -.t208__wrapper { - display: table; - padding-top: 120px; - padding-bottom: 120px; -} -.t208__textwrapper { - display: block; - text-align: left; - padding-left: 20px; - padding-right: 20px; - padding-top: 0px; - padding-bottom: 0px; -} -.t208__text { - padding-bottom: 20px; - padding-top: 20px; - color: #fff; -} -@media screen and (max-width: 720px) { - .t208__textwrapper { - margin: 20px 0px; - padding: 20px; - } -} -.t218__blocktable { - width: 100%; - height: 700px; - margin: 0; - padding: 0; - border: 0; - border-spacing: 0; -} -.t218__blocktext { - width: 50%; - height: 100%; - vertical-align: middle; -} -.t218__blockimg { - width: 50%; - height: 100%; - vertical-align: middle; - -webkit-background-size: cover; - -moz-background-size: cover; - -o-background-size: cover; - background-size: cover; - background-repeat: no-repeat; - background-position: center center; - border: 0; - margin: 0; - padding: 0; -} -.t218__textwrapper { - margin: 10%; -} -.t218__textfield { - padding-top: 20px; -} -.t218__imgmobile { - width: auto; - max-width: 100%; - vertical-align: middle; - margin: 0; -} -@media screen and (max-width: 980px) { - .t218__blockimg { - display: none; - } - .t218__blockimgmobile { - display: block !important; - text-align: center; - width: 100%; - padding: 60px 0px 0px 0px; - } -} -@media screen and (max-width: 640px) { - .t218__descrfield { - padding-top: 50px; - width: 100%; - } - .t218__textfield { - padding-bottom: 50px; - width: 100%; - } - .t218__textwrapper { - margin: 20px; - } -} -.t220__textwrapper { - margin-left: -60px; - padding: 60px; -} -.t220__title { - margin-top: -8px; - padding-bottom: 35px; -} -.t220 .t-col_1 { - max-width: 120px; -} -.t220 .t-col_2 { - max-width: 220px; -} -.t220 .t-col_3 { - max-width: 320px; -} -.t220 .t-col_4 { - max-width: 420px; -} -.t220 .t-col_5 { - max-width: 520px; -} -.t220 .t-col_6 { - max-width: 620px; -} -.t220 .t-col_7 { - max-width: 720px; -} -.t220 .t-col_8 { - max-width: 820px; -} -.t220 .t-col_9 { - max-width: 920px; -} -.t220 .t-col_10 { - max-width: 1020px; -} -.t220 .t-col_11 { - max-width: 1120px; -} -.t220 .t-col_12 { - max-width: 1220px; -} -@media screen and (max-width: 1240px) { - .t220 .t-col_12 { - max-width: 1160px; - } -} -@media screen and (max-width: 1200px) { - .t220__textwrapper { - margin-left: -40px; - padding: 40px; - } - .t220 .t-col_1 { - max-width: 100px; - } - .t220 .t-col_2 { - max-width: 180px; - } - .t220 .t-col_3 { - max-width: 260px; - } - .t220 .t-col_4 { - max-width: 340px; - } - .t220 .t-col_5 { - max-width: 420px; - } - .t220 .t-col_6 { - max-width: 500px; - } - .t220 .t-col_7 { - max-width: 580px; - } - .t220 .t-col_8 { - max-width: 660px; - } - .t220 .t-col_9 { - max-width: 740px; - } - .t220 .t-col_10 { - max-width: 820px; - } - .t220 .t-col_11 { - max-width: 900px; - } - .t220 .t-col_12 { - max-width: 980px; - } -} -@media screen and (max-width: 980px) { - .t220 .t-col_12 { - max-width: 940px; - } -} -@media screen and (max-width: 960px) { - .t220 .t-container { - max-width: 680px; - } - .t220__textwrapper { - margin-left: 0px; - padding: 40px; - } - .t220 .t-col { - padding-left: 0px; - padding-right: 0px; - } -} -@media screen and (max-width: 700px) { - .t220__textwrapper { - margin-left: 0px; - padding: 20px; - } - .t220 .t-container { - max-width: 640px; - } -} -.t225__title { - padding-top: 8px; - padding-bottom: 3px; -} -.t225__uptitle { - text-transform: uppercase; - padding-top: 10px; - padding-bottom: 50px; -} -.t225__descr { - padding: 41px 0px 0px 0px; -} -.t252__wrapper { - border: 1px solid; - border-color: #ccc; - padding: 6px; -} -.t252__quote-body { - border: 1px solid; - border-color: #ccc; - padding: 40px 50px; -} -.t252__text { - margin-bottom: 30px; -} -@media screen and (max-width: 600px) { - .t252__wrapper { - padding: 4px; - } - .t252__quote-body { - padding: 30px 36px; - } - .t252__text { - margin-bottom: 25px; - } -} -@media screen and (max-width: 470px) { - .t252__wrapper { - padding: 2px; - } - .t252__quote-body { - padding: 25px; - } - .t252-text { - margin-bottom: 20px; - } -} -.t264__wrapper { - padding: 20px; - background: #f8f8f8; -} -.t264__title { - margin-bottom: 19px; - border-bottom: 1px solid #eee; - padding-bottom: 8px; -} -.t264__descr { - color: #888; - margin-bottom: 20px; -} -@media screen and (max-width: 500px) { - .t264__title { - margin-bottom: 10px; - } - .t264__descr { - margin-bottom: 11px; - } -} -.t381 { - -webkit-transition: background-color 300ms linear; - -moz-transition: background-color 300ms linear; - -o-transition: background-color 300ms linear; - -ms-transition: background-color 300ms linear; - transition: background-color 300ms linear; -} -.t381__beforeready { - visibility: hidden; -} -.t381__wrapper { - position: relative; - min-height: 20px; -} -.t381__share_buttons { - display: inline-block; -} -.t381 .b-share { - display: table !important; -} -.t381 .b-share-btn__wrap { - display: table-cell !important; - float: none !important; - padding-left: 5px !important; -} -.t381.t381__positionabsolute { - position: absolute; - z-index: 990; -} -.t381.t381__positionfixed { - position: fixed; - z-index: 990; -} -.t381.t381__positionstatic { - position: static; -} -@media screen and (max-width: 980px) { - .t381 { - position: static; - text-align: center; - display: block; - margin: 0; - padding: 20px; - height: auto !important; - } - .t381.t381__positionabsolute, - .t381.t381__positionfixed, - .t381.t381__positionstatic { - position: static; - } - .t381__share_buttons { - display: block; - text-align: center; - float: none; - } - .t381__share_buttons { - display: table; - position: static; - padding: 15px 0px; - margin: 0px auto; - text-align: center; - float: none; - min-width: inherit; - } -} \ No newline at end of file diff --git a/static/css/timeTo.css b/static/css/timeTo.css deleted file mode 100755 index 483c3a4..0000000 --- a/static/css/timeTo.css +++ /dev/null @@ -1,104 +0,0 @@ -figure, figcaption { - display: block; -} - -.transition { - -webkit-transition: top 400ms linear; - -moz-transition: top 400ms linear; - -ms-transition: top 400ms linear; - -o-transition: top 400ms linear; - transition: top 400ms linear; -} - -.timeTo { - font-family: Tahoma, Verdana, Aial, sans-serif; - font-size: 28px; - line-height: 108%; - font-weight: bold; - height: 32px; -} - -.timeTo span { - vertical-align: top; -font-size: 10px; - padding: 0 10px; -position: relative; - top: 10px; -} -#countdown{ - -} - -.timeTo.timeTo-white div { - color: black; - background: #ffffff; /* Old browsers */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#cccccc',GradientType=0 ); /* IE6-9 */ - border: 13px solid #fff; - border-radius: 3px; - margin-left: 10px; -} -.timeTo.timeTo-black div { - color: white; - background: #45484d; /* Old browsers */ - background: -moz-linear-gradient(top, #45484d 0%, #000000 100%); /* FF3.6+ */ - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#45484d), color-stop(100%,#000000)); /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #45484d 0%,#000000 100%); /* Chrome10+,Safari5.1+ */ - background: -o-linear-gradient(top, #45484d 0%,#000000 100%); /* Opera 11.10+ */ - background: -ms-linear-gradient(top, #45484d 0%,#000000 100%); /* IE10+ */ - background: linear-gradient(to bottom, #45484d 0%,#000000 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#45484d', endColorstr='#000000',GradientType=0 ); /* IE6-9 */ -} - -.timeTo.timeTo-black .timeTo-alert { - background: #a74444; /* Old browsers */ - background: -moz-linear-gradient(top, #a74444 0%, #3f0000 67%); /* FF3.6+ */ - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a74444), color-stop(67%,#3f0000)); /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #a74444 0%,#3f0000 67%); /* Chrome10+,Safari5.1+ */ - background: -o-linear-gradient(top, #a74444 0%,#3f0000 67%); /* Opera 11.10+ */ - background: -ms-linear-gradient(top, #a74444 0%,#3f0000 67%); /* IE10+ */ - background: linear-gradient(to bottom, #a74444 0%,#3f0000 67%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a74444', endColorstr='#3f0000',GradientType=0 ); /* IE6-9 */ -} - -.timeTo.timeTo-white .timeTo-alert { - background: #ffffff; /* Old browsers */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e17373',GradientType=0 ); /* IE6-9 */ -} - -.timeTo figure { - display: inline-block; - margin: 0; - padding: 0; -} -.timeTo figcaption { - text-align: center; - /*font-size: 12px;*/ - line-height: 80%; - font-weight: normal; - color: #888; -} - -.timeTo div { - position: relative; - display: inline-block; - width: 50px; - height: 60px; - overflow: hidden; -} -.timeTo div.first { - margin-left: 0 !important; -} - -.timeTo ul { - list-style-type: none; - margin: 0; - padding: 0; - position: absolute; - left: 3px; -} - -.timeTo ul li { - margin: 0; - padding: 0; - list-style: none; -} diff --git a/static/css/timer.css b/static/css/timer.css deleted file mode 100755 index 892ed0f..0000000 --- a/static/css/timer.css +++ /dev/null @@ -1,53 +0,0 @@ -.timer_block { - background:url(../img/timer1.jpg) no-repeat center top; - width: 100%; - height: 804px; - min-width: 1200px; -} - -.timer_block .timer { - background:url(../img/bg.png) no-repeat center left; - width: 650px; - height: 76px; - position: absolute; - top:650px; - left: 512px; -} -.timer_block .timer_wrapp { - margin: 14px 0 0 14px; -} -.timer_block .day, -.timer_block .hour, -.timer_block .min, -.timer_block .sec { - color: #000; - font-family: Arial; - font-weight: bold; - font-size: 54px; - line-height: 52px; - text-align: center; - letter-spacing: 35px; -} -.timer_block .top_line div { - vertical-align: top; - display: inline-block; -} - -.timer_block .block { - width: 123px; - height: 76px; - margin-right: 30px; - position: relative; - top: -15px; -} -.timer_block .last { - width: 123px; -} -.timer_block .desc { - color: #fff; - text-align: center; - width: 93px; - font-family: 'proxima_nova_blblack'; - font-size: 14px; - margin-top: -20px; -} \ No newline at end of file diff --git a/static/djcelery/style.css b/static/djcelery/style.css deleted file mode 100755 index 6d1cc77..0000000 --- a/static/djcelery/style.css +++ /dev/null @@ -1,4 +0,0 @@ -.form-row.field-traceback p { - font-family: monospace; - white-space: pre; -} diff --git a/static/fonts/Exo2-Bold-demo.html b/static/fonts/Exo2-Bold-demo.html deleted file mode 100755 index 176edf2..0000000 --- a/static/fonts/Exo2-Bold-demo.html +++ /dev/null @@ -1,608 +0,0 @@ - - - - - - - - - - - - - Exo 2 Bold Specimen - - - - - - -
    - - - -
    - - -
    - -
    -
    -
    AaBb
    -
    -
    - -
    -
    A​B​C​D​E​F​G​H​I​J​K​L​M​N​O​P​Q​R​S​T​U​V​W​X​Y​Z​a​b​c​d​e​f​g​h​i​j​k​l​m​n​o​p​q​r​s​t​u​v​w​x​y​z​1​2​3​4​5​6​7​8​9​0​&​.​,​?​!​@​(​)​#​$​%​*​+​-​=​:​;
    -
    -
    -
    - - - - - - - - - - - - - - - - -
    10abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    11abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    12abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    13abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    14abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    16abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    18abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    20abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    24abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    30abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    36abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    48abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    60abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    72abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    90abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    - -
    - -
    - - - -
    - - -
    -
    ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼body
    body
    body
    body
    -
    - bodyExo 2 Bold -
    -
    - bodyArial -
    -
    - bodyVerdana -
    -
    - bodyGeorgia -
    - - - -
    - - -
    - -
    -

    10.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    11.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    12.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    13.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    - -
    -
    -
    -

    14.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    16.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    18.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    - -
    - -
    - -
    -
    -

    20.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    -
    -
    -

    24.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    -
    - -
    - -
    - -
    -
    -

    30.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    -
    -
    - -
    - - - -
    -
    -

    10.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    11.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    12.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    13.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    - -
    - -
    -
    -

    14.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    16.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    18.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    - -
    - -
    -
    -

    20.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    -
    -
    -

    24.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    -
    - -
    - -
    - -
    -
    -

    30.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

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

    Lorem Ipsum Dolor

    -

    Etiam porta sem malesuada magna mollis euismod

    - - -
    -
    -
    -
    -

    Donec sed odio dui. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.

    - - -

    Pellentesque ornare sem

    - -

    Maecenas sed diam eget risus varius blandit sit amet non magna. Maecenas faucibus mollis interdum. Donec ullamcorper nulla non metus auctor fringilla. Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam id dolor id nibh ultricies vehicula ut id elit.

    - -

    Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

    - -

    Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Aenean lacinia bibendum nulla sed consectetur.

    - -

    Nullam quis risus eget urna mollis ornare vel eu leo. Nullam quis risus eget urna mollis ornare vel eu leo. Maecenas sed diam eget risus varius blandit sit amet non magna. Donec ullamcorper nulla non metus auctor fringilla.

    - -

    Cras mattis consectetur

    - -

    Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Aenean lacinia bibendum nulla sed consectetur. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Cras mattis consectetur purus sit amet fermentum.

    - -

    Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam quis risus eget urna mollis ornare vel eu leo. Cras mattis consectetur purus sit amet fermentum.

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

    Language Support

    -

    The subset of Exo 2 Bold in this kit supports the following languages:
    - - Cyrillic, English

    -

    Glyph Chart

    -

    The subset of Exo 2 Bold in this kit includes all the glyphs listed below. Unicode entities are included above each glyph to help you insert individual characters into your layout.

    -
    - -

    &#13;

    -

    &#32;

    -

    &#33;

    !
    -

    &#34;

    "
    -

    &#35;

    #
    -

    &#36;

    $
    -

    &#37;

    %
    -

    &#38;

    &
    -

    &#39;

    '
    -

    &#40;

    (
    -

    &#41;

    )
    -

    &#42;

    *
    -

    &#43;

    +
    -

    &#44;

    ,
    -

    &#45;

    -
    -

    &#46;

    .
    -

    &#47;

    /
    -

    &#48;

    0
    -

    &#49;

    1
    -

    &#50;

    2
    -

    &#51;

    3
    -

    &#52;

    4
    -

    &#53;

    5
    -

    &#54;

    6
    -

    &#55;

    7
    -

    &#56;

    8
    -

    &#57;

    9
    -

    &#58;

    :
    -

    &#59;

    ;
    -

    &#60;

    <
    -

    &#61;

    =
    -

    &#62;

    >
    -

    &#63;

    ?
    -

    &#64;

    @
    -

    &#65;

    A
    -

    &#66;

    B
    -

    &#67;

    C
    -

    &#68;

    D
    -

    &#69;

    E
    -

    &#70;

    F
    -

    &#71;

    G
    -

    &#72;

    H
    -

    &#73;

    I
    -

    &#74;

    J
    -

    &#75;

    K
    -

    &#76;

    L
    -

    &#77;

    M
    -

    &#78;

    N
    -

    &#79;

    O
    -

    &#80;

    P
    -

    &#81;

    Q
    -

    &#82;

    R
    -

    &#83;

    S
    -

    &#84;

    T
    -

    &#85;

    U
    -

    &#86;

    V
    -

    &#87;

    W
    -

    &#88;

    X
    -

    &#89;

    Y
    -

    &#90;

    Z
    -

    &#91;

    [
    -

    &#92;

    \
    -

    &#93;

    ]
    -

    &#94;

    ^
    -

    &#95;

    _
    -

    &#96;

    `
    -

    &#97;

    a
    -

    &#98;

    b
    -

    &#99;

    c
    -

    &#100;

    d
    -

    &#101;

    e
    -

    &#102;

    f
    -

    &#103;

    g
    -

    &#104;

    h
    -

    &#105;

    i
    -

    &#106;

    j
    -

    &#107;

    k
    -

    &#108;

    l
    -

    &#109;

    m
    -

    &#110;

    n
    -

    &#111;

    o
    -

    &#112;

    p
    -

    &#113;

    q
    -

    &#114;

    r
    -

    &#115;

    s
    -

    &#116;

    t
    -

    &#117;

    u
    -

    &#118;

    v
    -

    &#119;

    w
    -

    &#120;

    x
    -

    &#121;

    y
    -

    &#122;

    z
    -

    &#123;

    {
    -

    &#124;

    |
    -

    &#125;

    }
    -

    &#126;

    ~
    -

    &#162;

    ¢
    -

    &#163;

    £
    -

    &#165;

    ¥
    -

    &#168;

    ¨
    -

    &#169;

    ©
    -

    &#171;

    «
    -

    &#174;

    ®
    -

    &#180;

    ´
    -

    &#184;

    ¸
    -

    &#187;

    »
    -

    &#710;

    ˆ
    -

    &#730;

    ˚
    -

    &#732;

    ˜
    -

    &#1025;

    Ё
    -

    &#1026;

    Ђ
    -

    &#1027;

    Ѓ
    -

    &#1028;

    Є
    -

    &#1029;

    Ѕ
    -

    &#1030;

    І
    -

    &#1031;

    Ї
    -

    &#1032;

    Ј
    -

    &#1033;

    Љ
    -

    &#1034;

    Њ
    -

    &#1035;

    Ћ
    -

    &#1036;

    Ќ
    -

    &#1037;

    Ѝ
    -

    &#1038;

    Ў
    -

    &#1039;

    Џ
    -

    &#1040;

    А
    -

    &#1041;

    Б
    -

    &#1042;

    В
    -

    &#1043;

    Г
    -

    &#1044;

    Д
    -

    &#1045;

    Е
    -

    &#1046;

    Ж
    -

    &#1047;

    З
    -

    &#1048;

    И
    -

    &#1049;

    Й
    -

    &#1050;

    К
    -

    &#1051;

    Л
    -

    &#1052;

    М
    -

    &#1053;

    Н
    -

    &#1054;

    О
    -

    &#1055;

    П
    -

    &#1056;

    Р
    -

    &#1057;

    С
    -

    &#1058;

    Т
    -

    &#1059;

    У
    -

    &#1060;

    Ф
    -

    &#1061;

    Х
    -

    &#1062;

    Ц
    -

    &#1063;

    Ч
    -

    &#1064;

    Ш
    -

    &#1065;

    Щ
    -

    &#1066;

    Ъ
    -

    &#1067;

    Ы
    -

    &#1068;

    Ь
    -

    &#1069;

    Э
    -

    &#1070;

    Ю
    -

    &#1071;

    Я
    -

    &#1072;

    а
    -

    &#1073;

    б
    -

    &#1074;

    в
    -

    &#1075;

    г
    -

    &#1076;

    д
    -

    &#1077;

    е
    -

    &#1078;

    ж
    -

    &#1079;

    з
    -

    &#1080;

    и
    -

    &#1081;

    й
    -

    &#1082;

    к
    -

    &#1083;

    л
    -

    &#1084;

    м
    -

    &#1085;

    н
    -

    &#1086;

    о
    -

    &#1087;

    п
    -

    &#1088;

    р
    -

    &#1089;

    с
    -

    &#1090;

    т
    -

    &#1091;

    у
    -

    &#1092;

    ф
    -

    &#1093;

    х
    -

    &#1094;

    ц
    -

    &#1095;

    ч
    -

    &#1096;

    ш
    -

    &#1097;

    щ
    -

    &#1098;

    ъ
    -

    &#1099;

    ы
    -

    &#1100;

    ь
    -

    &#1101;

    э
    -

    &#1102;

    ю
    -

    &#1103;

    я
    -

    &#1105;

    ё
    -

    &#1106;

    ђ
    -

    &#1107;

    ѓ
    -

    &#1108;

    є
    -

    &#1109;

    ѕ
    -

    &#1110;

    і
    -

    &#1111;

    ї
    -

    &#1112;

    ј
    -

    &#1113;

    љ
    -

    &#1114;

    њ
    -

    &#1115;

    ћ
    -

    &#1116;

    ќ
    -

    &#1117;

    ѝ
    -

    &#1118;

    ў
    -

    &#1119;

    џ
    -

    &#1168;

    Ґ
    -

    &#1169;

    ґ
    -

    &#1200;

    Ұ
    -

    &#1201;

    ұ
    -

    &#1206;

    Ҷ
    -

    &#1207;

    ҷ
    -

    &#1210;

    Һ
    -

    &#1216;

    Ӏ
    -

    &#8211;

    -

    &#8212;

    -

    &#8216;

    -

    &#8217;

    -

    &#8218;

    -

    &#8220;

    -

    &#8221;

    -

    &#8222;

    -

    &#8226;

    -

    &#8230;

    -

    &#8249;

    -

    &#8250;

    -

    &#8364;

    -

    &#8482;

    -

    &#9724;

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

    Installing Webfonts

    - -

    Webfonts are supported by all major browser platforms but not all in the same way. There are currently four different font formats that must be included in order to target all browsers. This includes TTF, WOFF, EOT and SVG.

    - -

    1. Upload your webfonts

    -

    You must upload your webfont kit to your website. They should be in or near the same directory as your CSS files.

    - -

    2. Include the webfont stylesheet

    -

    A special CSS @font-face declaration helps the various browsers select the appropriate font it needs without causing you a bunch of headaches. Learn more about this syntax by reading the Fontspring blog post about it. The code for it is as follows:

    - - - -@font-face{ - font-family: 'MyWebFont'; - src: url('WebFont.eot'); - src: url('WebFont.eot?#iefix') format('embedded-opentype'), - url('WebFont.woff') format('woff'), - url('WebFont.ttf') format('truetype'), - url('WebFont.svg#webfont') format('svg'); -} - - -

    We've already gone ahead and generated the code for you. All you have to do is link to the stylesheet in your HTML, like this:

    - <link rel="stylesheet" href="stylesheet.css" type="text/css" charset="utf-8" /> - -

    3. Modify your own stylesheet

    -

    To take advantage of your new fonts, you must tell your stylesheet to use them. Look at the original @font-face declaration above and find the property called "font-family." The name linked there will be what you use to reference the font. Prepend that webfont name to the font stack in the "font-family" property, inside the selector you want to change. For example:

    -p { font-family: 'WebFont', Arial, sans-serif; } - -

    4. Test

    -

    Getting webfonts to work cross-browser can be tricky. Use the information in the sidebar to help you if you find that fonts aren't loading in a particular browser.

    -
    - - -
    - -
    - -
    - -
    - - diff --git a/static/fonts/Exo2-Bold-webfont.eot b/static/fonts/Exo2-Bold-webfont.eot deleted file mode 100755 index 79c3d9f..0000000 Binary files a/static/fonts/Exo2-Bold-webfont.eot and /dev/null differ diff --git a/static/fonts/Exo2-Bold-webfont.svg b/static/fonts/Exo2-Bold-webfont.svg deleted file mode 100755 index 617be97..0000000 --- a/static/fonts/Exo2-Bold-webfont.svg +++ /dev/null @@ -1,2390 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/static/fonts/Exo2-Bold-webfont.ttf b/static/fonts/Exo2-Bold-webfont.ttf deleted file mode 100755 index 0597a12..0000000 Binary files a/static/fonts/Exo2-Bold-webfont.ttf and /dev/null differ diff --git a/static/fonts/Exo2-Bold-webfont.woff b/static/fonts/Exo2-Bold-webfont.woff deleted file mode 100755 index 0f23d26..0000000 Binary files a/static/fonts/Exo2-Bold-webfont.woff and /dev/null differ diff --git a/static/fonts/Exo2-Light-demo.html b/static/fonts/Exo2-Light-demo.html deleted file mode 100755 index 54c8a80..0000000 --- a/static/fonts/Exo2-Light-demo.html +++ /dev/null @@ -1,608 +0,0 @@ - - - - - - - - - - - - - Exo 2 Light Regular Specimen - - - - - - -
    - - - -
    - - -
    - -
    -
    -
    AaBb
    -
    -
    - -
    -
    A​B​C​D​E​F​G​H​I​J​K​L​M​N​O​P​Q​R​S​T​U​V​W​X​Y​Z​a​b​c​d​e​f​g​h​i​j​k​l​m​n​o​p​q​r​s​t​u​v​w​x​y​z​1​2​3​4​5​6​7​8​9​0​&​.​,​?​!​@​(​)​#​$​%​*​+​-​=​:​;
    -
    -
    -
    - - - - - - - - - - - - - - - - -
    10abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    11abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    12abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    13abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    14abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    16abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    18abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    20abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    24abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    30abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    36abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    48abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    60abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    72abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    90abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    - -
    - -
    - - - -
    - - -
    -
    ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼body
    body
    body
    body
    -
    - bodyExo 2 Light Regular -
    -
    - bodyArial -
    -
    - bodyVerdana -
    -
    - bodyGeorgia -
    - - - -
    - - -
    - -
    -

    10.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    11.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    12.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    13.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    - -
    -
    -
    -

    14.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    16.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    18.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    - -
    - -
    - -
    -
    -

    20.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    -
    -
    -

    24.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    -
    - -
    - -
    - -
    -
    -

    30.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    -
    -
    - -
    - - - -
    -
    -

    10.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    11.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    12.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    13.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    - -
    - -
    -
    -

    14.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    16.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    18.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    - -
    - -
    -
    -

    20.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    -
    -
    -

    24.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    -
    - -
    - -
    - -
    -
    -

    30.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

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

    Lorem Ipsum Dolor

    -

    Etiam porta sem malesuada magna mollis euismod

    - - -
    -
    -
    -
    -

    Donec sed odio dui. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.

    - - -

    Pellentesque ornare sem

    - -

    Maecenas sed diam eget risus varius blandit sit amet non magna. Maecenas faucibus mollis interdum. Donec ullamcorper nulla non metus auctor fringilla. Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam id dolor id nibh ultricies vehicula ut id elit.

    - -

    Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

    - -

    Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Aenean lacinia bibendum nulla sed consectetur.

    - -

    Nullam quis risus eget urna mollis ornare vel eu leo. Nullam quis risus eget urna mollis ornare vel eu leo. Maecenas sed diam eget risus varius blandit sit amet non magna. Donec ullamcorper nulla non metus auctor fringilla.

    - -

    Cras mattis consectetur

    - -

    Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Aenean lacinia bibendum nulla sed consectetur. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Cras mattis consectetur purus sit amet fermentum.

    - -

    Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam quis risus eget urna mollis ornare vel eu leo. Cras mattis consectetur purus sit amet fermentum.

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

    Language Support

    -

    The subset of Exo 2 Light Regular in this kit supports the following languages:
    - - Cyrillic, English

    -

    Glyph Chart

    -

    The subset of Exo 2 Light Regular in this kit includes all the glyphs listed below. Unicode entities are included above each glyph to help you insert individual characters into your layout.

    -
    - -

    &#13;

    -

    &#32;

    -

    &#33;

    !
    -

    &#34;

    "
    -

    &#35;

    #
    -

    &#36;

    $
    -

    &#37;

    %
    -

    &#38;

    &
    -

    &#39;

    '
    -

    &#40;

    (
    -

    &#41;

    )
    -

    &#42;

    *
    -

    &#43;

    +
    -

    &#44;

    ,
    -

    &#45;

    -
    -

    &#46;

    .
    -

    &#47;

    /
    -

    &#48;

    0
    -

    &#49;

    1
    -

    &#50;

    2
    -

    &#51;

    3
    -

    &#52;

    4
    -

    &#53;

    5
    -

    &#54;

    6
    -

    &#55;

    7
    -

    &#56;

    8
    -

    &#57;

    9
    -

    &#58;

    :
    -

    &#59;

    ;
    -

    &#60;

    <
    -

    &#61;

    =
    -

    &#62;

    >
    -

    &#63;

    ?
    -

    &#64;

    @
    -

    &#65;

    A
    -

    &#66;

    B
    -

    &#67;

    C
    -

    &#68;

    D
    -

    &#69;

    E
    -

    &#70;

    F
    -

    &#71;

    G
    -

    &#72;

    H
    -

    &#73;

    I
    -

    &#74;

    J
    -

    &#75;

    K
    -

    &#76;

    L
    -

    &#77;

    M
    -

    &#78;

    N
    -

    &#79;

    O
    -

    &#80;

    P
    -

    &#81;

    Q
    -

    &#82;

    R
    -

    &#83;

    S
    -

    &#84;

    T
    -

    &#85;

    U
    -

    &#86;

    V
    -

    &#87;

    W
    -

    &#88;

    X
    -

    &#89;

    Y
    -

    &#90;

    Z
    -

    &#91;

    [
    -

    &#92;

    \
    -

    &#93;

    ]
    -

    &#94;

    ^
    -

    &#95;

    _
    -

    &#96;

    `
    -

    &#97;

    a
    -

    &#98;

    b
    -

    &#99;

    c
    -

    &#100;

    d
    -

    &#101;

    e
    -

    &#102;

    f
    -

    &#103;

    g
    -

    &#104;

    h
    -

    &#105;

    i
    -

    &#106;

    j
    -

    &#107;

    k
    -

    &#108;

    l
    -

    &#109;

    m
    -

    &#110;

    n
    -

    &#111;

    o
    -

    &#112;

    p
    -

    &#113;

    q
    -

    &#114;

    r
    -

    &#115;

    s
    -

    &#116;

    t
    -

    &#117;

    u
    -

    &#118;

    v
    -

    &#119;

    w
    -

    &#120;

    x
    -

    &#121;

    y
    -

    &#122;

    z
    -

    &#123;

    {
    -

    &#124;

    |
    -

    &#125;

    }
    -

    &#126;

    ~
    -

    &#162;

    ¢
    -

    &#163;

    £
    -

    &#165;

    ¥
    -

    &#168;

    ¨
    -

    &#169;

    ©
    -

    &#171;

    «
    -

    &#174;

    ®
    -

    &#180;

    ´
    -

    &#184;

    ¸
    -

    &#187;

    »
    -

    &#710;

    ˆ
    -

    &#730;

    ˚
    -

    &#732;

    ˜
    -

    &#1025;

    Ё
    -

    &#1026;

    Ђ
    -

    &#1027;

    Ѓ
    -

    &#1028;

    Є
    -

    &#1029;

    Ѕ
    -

    &#1030;

    І
    -

    &#1031;

    Ї
    -

    &#1032;

    Ј
    -

    &#1033;

    Љ
    -

    &#1034;

    Њ
    -

    &#1035;

    Ћ
    -

    &#1036;

    Ќ
    -

    &#1037;

    Ѝ
    -

    &#1038;

    Ў
    -

    &#1039;

    Џ
    -

    &#1040;

    А
    -

    &#1041;

    Б
    -

    &#1042;

    В
    -

    &#1043;

    Г
    -

    &#1044;

    Д
    -

    &#1045;

    Е
    -

    &#1046;

    Ж
    -

    &#1047;

    З
    -

    &#1048;

    И
    -

    &#1049;

    Й
    -

    &#1050;

    К
    -

    &#1051;

    Л
    -

    &#1052;

    М
    -

    &#1053;

    Н
    -

    &#1054;

    О
    -

    &#1055;

    П
    -

    &#1056;

    Р
    -

    &#1057;

    С
    -

    &#1058;

    Т
    -

    &#1059;

    У
    -

    &#1060;

    Ф
    -

    &#1061;

    Х
    -

    &#1062;

    Ц
    -

    &#1063;

    Ч
    -

    &#1064;

    Ш
    -

    &#1065;

    Щ
    -

    &#1066;

    Ъ
    -

    &#1067;

    Ы
    -

    &#1068;

    Ь
    -

    &#1069;

    Э
    -

    &#1070;

    Ю
    -

    &#1071;

    Я
    -

    &#1072;

    а
    -

    &#1073;

    б
    -

    &#1074;

    в
    -

    &#1075;

    г
    -

    &#1076;

    д
    -

    &#1077;

    е
    -

    &#1078;

    ж
    -

    &#1079;

    з
    -

    &#1080;

    и
    -

    &#1081;

    й
    -

    &#1082;

    к
    -

    &#1083;

    л
    -

    &#1084;

    м
    -

    &#1085;

    н
    -

    &#1086;

    о
    -

    &#1087;

    п
    -

    &#1088;

    р
    -

    &#1089;

    с
    -

    &#1090;

    т
    -

    &#1091;

    у
    -

    &#1092;

    ф
    -

    &#1093;

    х
    -

    &#1094;

    ц
    -

    &#1095;

    ч
    -

    &#1096;

    ш
    -

    &#1097;

    щ
    -

    &#1098;

    ъ
    -

    &#1099;

    ы
    -

    &#1100;

    ь
    -

    &#1101;

    э
    -

    &#1102;

    ю
    -

    &#1103;

    я
    -

    &#1105;

    ё
    -

    &#1106;

    ђ
    -

    &#1107;

    ѓ
    -

    &#1108;

    є
    -

    &#1109;

    ѕ
    -

    &#1110;

    і
    -

    &#1111;

    ї
    -

    &#1112;

    ј
    -

    &#1113;

    љ
    -

    &#1114;

    њ
    -

    &#1115;

    ћ
    -

    &#1116;

    ќ
    -

    &#1117;

    ѝ
    -

    &#1118;

    ў
    -

    &#1119;

    џ
    -

    &#1168;

    Ґ
    -

    &#1169;

    ґ
    -

    &#1200;

    Ұ
    -

    &#1201;

    ұ
    -

    &#1206;

    Ҷ
    -

    &#1207;

    ҷ
    -

    &#1210;

    Һ
    -

    &#1216;

    Ӏ
    -

    &#8211;

    -

    &#8212;

    -

    &#8216;

    -

    &#8217;

    -

    &#8218;

    -

    &#8220;

    -

    &#8221;

    -

    &#8222;

    -

    &#8226;

    -

    &#8230;

    -

    &#8249;

    -

    &#8250;

    -

    &#8364;

    -

    &#8482;

    -

    &#9724;

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

    Installing Webfonts

    - -

    Webfonts are supported by all major browser platforms but not all in the same way. There are currently four different font formats that must be included in order to target all browsers. This includes TTF, WOFF, EOT and SVG.

    - -

    1. Upload your webfonts

    -

    You must upload your webfont kit to your website. They should be in or near the same directory as your CSS files.

    - -

    2. Include the webfont stylesheet

    -

    A special CSS @font-face declaration helps the various browsers select the appropriate font it needs without causing you a bunch of headaches. Learn more about this syntax by reading the Fontspring blog post about it. The code for it is as follows:

    - - - -@font-face{ - font-family: 'MyWebFont'; - src: url('WebFont.eot'); - src: url('WebFont.eot?#iefix') format('embedded-opentype'), - url('WebFont.woff') format('woff'), - url('WebFont.ttf') format('truetype'), - url('WebFont.svg#webfont') format('svg'); -} - - -

    We've already gone ahead and generated the code for you. All you have to do is link to the stylesheet in your HTML, like this:

    - <link rel="stylesheet" href="stylesheet.css" type="text/css" charset="utf-8" /> - -

    3. Modify your own stylesheet

    -

    To take advantage of your new fonts, you must tell your stylesheet to use them. Look at the original @font-face declaration above and find the property called "font-family." The name linked there will be what you use to reference the font. Prepend that webfont name to the font stack in the "font-family" property, inside the selector you want to change. For example:

    -p { font-family: 'WebFont', Arial, sans-serif; } - -

    4. Test

    -

    Getting webfonts to work cross-browser can be tricky. Use the information in the sidebar to help you if you find that fonts aren't loading in a particular browser.

    -
    - - -
    - -
    - -
    - -
    - - diff --git a/static/fonts/Exo2-Light-webfont.eot b/static/fonts/Exo2-Light-webfont.eot deleted file mode 100755 index 0f0d807..0000000 Binary files a/static/fonts/Exo2-Light-webfont.eot and /dev/null differ diff --git a/static/fonts/Exo2-Light-webfont.svg b/static/fonts/Exo2-Light-webfont.svg deleted file mode 100755 index 838be2c..0000000 --- a/static/fonts/Exo2-Light-webfont.svg +++ /dev/null @@ -1,2377 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/static/fonts/Exo2-Light-webfont.ttf b/static/fonts/Exo2-Light-webfont.ttf deleted file mode 100755 index 3f4fe9b..0000000 Binary files a/static/fonts/Exo2-Light-webfont.ttf and /dev/null differ diff --git a/static/fonts/Exo2-Light-webfont.woff b/static/fonts/Exo2-Light-webfont.woff deleted file mode 100755 index 49691af..0000000 Binary files a/static/fonts/Exo2-Light-webfont.woff and /dev/null differ diff --git a/static/fonts/Exo2-Regular-demo.html b/static/fonts/Exo2-Regular-demo.html deleted file mode 100755 index 1b2ee31..0000000 --- a/static/fonts/Exo2-Regular-demo.html +++ /dev/null @@ -1,608 +0,0 @@ - - - - - - - - - - - - - Exo 2 Regular Specimen - - - - - - -
    - - - -
    - - -
    - -
    -
    -
    AaBb
    -
    -
    - -
    -
    A​B​C​D​E​F​G​H​I​J​K​L​M​N​O​P​Q​R​S​T​U​V​W​X​Y​Z​a​b​c​d​e​f​g​h​i​j​k​l​m​n​o​p​q​r​s​t​u​v​w​x​y​z​1​2​3​4​5​6​7​8​9​0​&​.​,​?​!​@​(​)​#​$​%​*​+​-​=​:​;
    -
    -
    -
    - - - - - - - - - - - - - - - - -
    10abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    11abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    12abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    13abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    14abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    16abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    18abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    20abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    24abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    30abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    36abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    48abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    60abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    72abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    90abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    - -
    - -
    - - - -
    - - -
    -
    ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼body
    body
    body
    body
    -
    - bodyExo 2 Regular -
    -
    - bodyArial -
    -
    - bodyVerdana -
    -
    - bodyGeorgia -
    - - - -
    - - -
    - -
    -

    10.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    11.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    12.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    13.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    - -
    -
    -
    -

    14.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    16.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    18.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    - -
    - -
    - -
    -
    -

    20.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    -
    -
    -

    24.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    -
    - -
    - -
    - -
    -
    -

    30.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    -
    -
    - -
    - - - -
    -
    -

    10.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    11.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    12.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    13.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    - -
    - -
    -
    -

    14.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    16.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    -

    18.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    - -
    -
    - -
    - -
    -
    -

    20.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    -
    -
    -

    24.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

    -
    - -
    - -
    - -
    -
    -

    30.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

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

    Lorem Ipsum Dolor

    -

    Etiam porta sem malesuada magna mollis euismod

    - - -
    -
    -
    -
    -

    Donec sed odio dui. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.

    - - -

    Pellentesque ornare sem

    - -

    Maecenas sed diam eget risus varius blandit sit amet non magna. Maecenas faucibus mollis interdum. Donec ullamcorper nulla non metus auctor fringilla. Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam id dolor id nibh ultricies vehicula ut id elit.

    - -

    Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

    - -

    Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Aenean lacinia bibendum nulla sed consectetur.

    - -

    Nullam quis risus eget urna mollis ornare vel eu leo. Nullam quis risus eget urna mollis ornare vel eu leo. Maecenas sed diam eget risus varius blandit sit amet non magna. Donec ullamcorper nulla non metus auctor fringilla.

    - -

    Cras mattis consectetur

    - -

    Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Aenean lacinia bibendum nulla sed consectetur. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Cras mattis consectetur purus sit amet fermentum.

    - -

    Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam quis risus eget urna mollis ornare vel eu leo. Cras mattis consectetur purus sit amet fermentum.

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

    Language Support

    -

    The subset of Exo 2 Regular in this kit supports the following languages:
    - - Cyrillic, English

    -

    Glyph Chart

    -

    The subset of Exo 2 Regular in this kit includes all the glyphs listed below. Unicode entities are included above each glyph to help you insert individual characters into your layout.

    -
    - -

    &#13;

    -

    &#32;

    -

    &#33;

    !
    -

    &#34;

    "
    -

    &#35;

    #
    -

    &#36;

    $
    -

    &#37;

    %
    -

    &#38;

    &
    -

    &#39;

    '
    -

    &#40;

    (
    -

    &#41;

    )
    -

    &#42;

    *
    -

    &#43;

    +
    -

    &#44;

    ,
    -

    &#45;

    -
    -

    &#46;

    .
    -

    &#47;

    /
    -

    &#48;

    0
    -

    &#49;

    1
    -

    &#50;

    2
    -

    &#51;

    3
    -

    &#52;

    4
    -

    &#53;

    5
    -

    &#54;

    6
    -

    &#55;

    7
    -

    &#56;

    8
    -

    &#57;

    9
    -

    &#58;

    :
    -

    &#59;

    ;
    -

    &#60;

    <
    -

    &#61;

    =
    -

    &#62;

    >
    -

    &#63;

    ?
    -

    &#64;

    @
    -

    &#65;

    A
    -

    &#66;

    B
    -

    &#67;

    C
    -

    &#68;

    D
    -

    &#69;

    E
    -

    &#70;

    F
    -

    &#71;

    G
    -

    &#72;

    H
    -

    &#73;

    I
    -

    &#74;

    J
    -

    &#75;

    K
    -

    &#76;

    L
    -

    &#77;

    M
    -

    &#78;

    N
    -

    &#79;

    O
    -

    &#80;

    P
    -

    &#81;

    Q
    -

    &#82;

    R
    -

    &#83;

    S
    -

    &#84;

    T
    -

    &#85;

    U
    -

    &#86;

    V
    -

    &#87;

    W
    -

    &#88;

    X
    -

    &#89;

    Y
    -

    &#90;

    Z
    -

    &#91;

    [
    -

    &#92;

    \
    -

    &#93;

    ]
    -

    &#94;

    ^
    -

    &#95;

    _
    -

    &#96;

    `
    -

    &#97;

    a
    -

    &#98;

    b
    -

    &#99;

    c
    -

    &#100;

    d
    -

    &#101;

    e
    -

    &#102;

    f
    -

    &#103;

    g
    -

    &#104;

    h
    -

    &#105;

    i
    -

    &#106;

    j
    -

    &#107;

    k
    -

    &#108;

    l
    -

    &#109;

    m
    -

    &#110;

    n
    -

    &#111;

    o
    -

    &#112;

    p
    -

    &#113;

    q
    -

    &#114;

    r
    -

    &#115;

    s
    -

    &#116;

    t
    -

    &#117;

    u
    -

    &#118;

    v
    -

    &#119;

    w
    -

    &#120;

    x
    -

    &#121;

    y
    -

    &#122;

    z
    -

    &#123;

    {
    -

    &#124;

    |
    -

    &#125;

    }
    -

    &#126;

    ~
    -

    &#162;

    ¢
    -

    &#163;

    £
    -

    &#165;

    ¥
    -

    &#168;

    ¨
    -

    &#169;

    ©
    -

    &#171;

    «
    -

    &#174;

    ®
    -

    &#180;

    ´
    -

    &#184;

    ¸
    -

    &#187;

    »
    -

    &#710;

    ˆ
    -

    &#730;

    ˚
    -

    &#732;

    ˜
    -

    &#1025;

    Ё
    -

    &#1026;

    Ђ
    -

    &#1027;

    Ѓ
    -

    &#1028;

    Є
    -

    &#1029;

    Ѕ
    -

    &#1030;

    І
    -

    &#1031;

    Ї
    -

    &#1032;

    Ј
    -

    &#1033;

    Љ
    -

    &#1034;

    Њ
    -

    &#1035;

    Ћ
    -

    &#1036;

    Ќ
    -

    &#1037;

    Ѝ
    -

    &#1038;

    Ў
    -

    &#1039;

    Џ
    -

    &#1040;

    А
    -

    &#1041;

    Б
    -

    &#1042;

    В
    -

    &#1043;

    Г
    -

    &#1044;

    Д
    -

    &#1045;

    Е
    -

    &#1046;

    Ж
    -

    &#1047;

    З
    -

    &#1048;

    И
    -

    &#1049;

    Й
    -

    &#1050;

    К
    -

    &#1051;

    Л
    -

    &#1052;

    М
    -

    &#1053;

    Н
    -

    &#1054;

    О
    -

    &#1055;

    П
    -

    &#1056;

    Р
    -

    &#1057;

    С
    -

    &#1058;

    Т
    -

    &#1059;

    У
    -

    &#1060;

    Ф
    -

    &#1061;

    Х
    -

    &#1062;

    Ц
    -

    &#1063;

    Ч
    -

    &#1064;

    Ш
    -

    &#1065;

    Щ
    -

    &#1066;

    Ъ
    -

    &#1067;

    Ы
    -

    &#1068;

    Ь
    -

    &#1069;

    Э
    -

    &#1070;

    Ю
    -

    &#1071;

    Я
    -

    &#1072;

    а
    -

    &#1073;

    б
    -

    &#1074;

    в
    -

    &#1075;

    г
    -

    &#1076;

    д
    -

    &#1077;

    е
    -

    &#1078;

    ж
    -

    &#1079;

    з
    -

    &#1080;

    и
    -

    &#1081;

    й
    -

    &#1082;

    к
    -

    &#1083;

    л
    -

    &#1084;

    м
    -

    &#1085;

    н
    -

    &#1086;

    о
    -

    &#1087;

    п
    -

    &#1088;

    р
    -

    &#1089;

    с
    -

    &#1090;

    т
    -

    &#1091;

    у
    -

    &#1092;

    ф
    -

    &#1093;

    х
    -

    &#1094;

    ц
    -

    &#1095;

    ч
    -

    &#1096;

    ш
    -

    &#1097;

    щ
    -

    &#1098;

    ъ
    -

    &#1099;

    ы
    -

    &#1100;

    ь
    -

    &#1101;

    э
    -

    &#1102;

    ю
    -

    &#1103;

    я
    -

    &#1105;

    ё
    -

    &#1106;

    ђ
    -

    &#1107;

    ѓ
    -

    &#1108;

    є
    -

    &#1109;

    ѕ
    -

    &#1110;

    і
    -

    &#1111;

    ї
    -

    &#1112;

    ј
    -

    &#1113;

    љ
    -

    &#1114;

    њ
    -

    &#1115;

    ћ
    -

    &#1116;

    ќ
    -

    &#1117;

    ѝ
    -

    &#1118;

    ў
    -

    &#1119;

    џ
    -

    &#1168;

    Ґ
    -

    &#1169;

    ґ
    -

    &#1200;

    Ұ
    -

    &#1201;

    ұ
    -

    &#1206;

    Ҷ
    -

    &#1207;

    ҷ
    -

    &#1210;

    Һ
    -

    &#1216;

    Ӏ
    -

    &#8211;

    -

    &#8212;

    -

    &#8216;

    -

    &#8217;

    -

    &#8218;

    -

    &#8220;

    -

    &#8221;

    -

    &#8222;

    -

    &#8226;

    -

    &#8230;

    -

    &#8249;

    -

    &#8250;

    -

    &#8364;

    -

    &#8482;

    -

    &#9724;

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

    Installing Webfonts

    - -

    Webfonts are supported by all major browser platforms but not all in the same way. There are currently four different font formats that must be included in order to target all browsers. This includes TTF, WOFF, EOT and SVG.

    - -

    1. Upload your webfonts

    -

    You must upload your webfont kit to your website. They should be in or near the same directory as your CSS files.

    - -

    2. Include the webfont stylesheet

    -

    A special CSS @font-face declaration helps the various browsers select the appropriate font it needs without causing you a bunch of headaches. Learn more about this syntax by reading the Fontspring blog post about it. The code for it is as follows:

    - - - -@font-face{ - font-family: 'MyWebFont'; - src: url('WebFont.eot'); - src: url('WebFont.eot?#iefix') format('embedded-opentype'), - url('WebFont.woff') format('woff'), - url('WebFont.ttf') format('truetype'), - url('WebFont.svg#webfont') format('svg'); -} - - -

    We've already gone ahead and generated the code for you. All you have to do is link to the stylesheet in your HTML, like this:

    - <link rel="stylesheet" href="stylesheet.css" type="text/css" charset="utf-8" /> - -

    3. Modify your own stylesheet

    -

    To take advantage of your new fonts, you must tell your stylesheet to use them. Look at the original @font-face declaration above and find the property called "font-family." The name linked there will be what you use to reference the font. Prepend that webfont name to the font stack in the "font-family" property, inside the selector you want to change. For example:

    -p { font-family: 'WebFont', Arial, sans-serif; } - -

    4. Test

    -

    Getting webfonts to work cross-browser can be tricky. Use the information in the sidebar to help you if you find that fonts aren't loading in a particular browser.

    -
    - - -
    - -
    - -
    - -
    - - diff --git a/static/fonts/Exo2-Regular-webfont.eot b/static/fonts/Exo2-Regular-webfont.eot deleted file mode 100755 index 0a3136b..0000000 Binary files a/static/fonts/Exo2-Regular-webfont.eot and /dev/null differ diff --git a/static/fonts/Exo2-Regular-webfont.svg b/static/fonts/Exo2-Regular-webfont.svg deleted file mode 100755 index 7dc0517..0000000 --- a/static/fonts/Exo2-Regular-webfont.svg +++ /dev/null @@ -1,2377 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/static/fonts/Exo2-Regular-webfont.ttf b/static/fonts/Exo2-Regular-webfont.ttf deleted file mode 100755 index 7c057e5..0000000 Binary files a/static/fonts/Exo2-Regular-webfont.ttf and /dev/null differ diff --git a/static/fonts/Exo2-Regular-webfont.woff b/static/fonts/Exo2-Regular-webfont.woff deleted file mode 100755 index 2585e15..0000000 Binary files a/static/fonts/Exo2-Regular-webfont.woff and /dev/null differ diff --git a/static/fonts/FiraSans-Heavy.otf b/static/fonts/FiraSans-Heavy.otf deleted file mode 100755 index 18d01e8..0000000 Binary files a/static/fonts/FiraSans-Heavy.otf and /dev/null differ diff --git a/static/fonts/FontAwesome.otf b/static/fonts/FontAwesome.otf deleted file mode 100755 index 81c9ad9..0000000 Binary files a/static/fonts/FontAwesome.otf and /dev/null differ diff --git a/static/fonts/Simple-Line-Icons.eot b/static/fonts/Simple-Line-Icons.eot deleted file mode 100755 index d258f62..0000000 Binary files a/static/fonts/Simple-Line-Icons.eot and /dev/null differ diff --git a/static/fonts/Simple-Line-Icons.svg b/static/fonts/Simple-Line-Icons.svg deleted file mode 100755 index fe5927e..0000000 --- a/static/fonts/Simple-Line-Icons.svg +++ /dev/null @@ -1,1369 +0,0 @@ - - - - -This is a custom SVG font generated by IcoMoon. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/static/fonts/Simple-Line-Icons.ttf b/static/fonts/Simple-Line-Icons.ttf deleted file mode 100755 index 2194f1f..0000000 Binary files a/static/fonts/Simple-Line-Icons.ttf and /dev/null differ diff --git a/static/fonts/Simple-Line-Icons.woff b/static/fonts/Simple-Line-Icons.woff deleted file mode 100755 index 50df1e4..0000000 Binary files a/static/fonts/Simple-Line-Icons.woff and /dev/null differ diff --git a/static/fonts/cour.ttf b/static/fonts/cour.ttf deleted file mode 100755 index cedbd9f..0000000 Binary files a/static/fonts/cour.ttf and /dev/null differ diff --git a/static/fonts/courbd.ttf b/static/fonts/courbd.ttf deleted file mode 100755 index ab18acb..0000000 Binary files a/static/fonts/courbd.ttf and /dev/null differ diff --git a/static/fonts/courbi.ttf b/static/fonts/courbi.ttf deleted file mode 100755 index 1c3a3f9..0000000 Binary files a/static/fonts/courbi.ttf and /dev/null differ diff --git a/static/fonts/couri.ttf b/static/fonts/couri.ttf deleted file mode 100755 index f1d1a2d..0000000 Binary files a/static/fonts/couri.ttf and /dev/null differ diff --git a/static/fonts/fontawesome-webfont.eot b/static/fonts/fontawesome-webfont.eot deleted file mode 100755 index 84677bc..0000000 Binary files a/static/fonts/fontawesome-webfont.eot and /dev/null differ diff --git a/static/fonts/fontawesome-webfont.svg b/static/fonts/fontawesome-webfont.svg deleted file mode 100755 index a5c1044..0000000 --- a/static/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,520 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/static/fonts/fontawesome-webfont.ttf b/static/fonts/fontawesome-webfont.ttf deleted file mode 100755 index 96a3639..0000000 Binary files a/static/fonts/fontawesome-webfont.ttf and /dev/null differ diff --git a/static/fonts/fontawesome-webfont.woff b/static/fonts/fontawesome-webfont.woff deleted file mode 100755 index 628b6a5..0000000 Binary files a/static/fonts/fontawesome-webfont.woff and /dev/null differ diff --git a/static/fonts/glyphicons-halflings-regular.eot b/static/fonts/glyphicons-halflings-regular.eot deleted file mode 100755 index b93a495..0000000 Binary files a/static/fonts/glyphicons-halflings-regular.eot and /dev/null differ diff --git a/static/fonts/glyphicons-halflings-regular.svg b/static/fonts/glyphicons-halflings-regular.svg deleted file mode 100755 index 8376c0f..0000000 --- a/static/fonts/glyphicons-halflings-regular.svg +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/static/fonts/glyphicons-halflings-regular.ttf b/static/fonts/glyphicons-halflings-regular.ttf deleted file mode 100755 index 1413fc6..0000000 Binary files a/static/fonts/glyphicons-halflings-regular.ttf and /dev/null differ diff --git a/static/fonts/glyphicons-halflings-regular.woff b/static/fonts/glyphicons-halflings-regular.woff deleted file mode 100755 index 9e61285..0000000 Binary files a/static/fonts/glyphicons-halflings-regular.woff and /dev/null differ diff --git a/static/fonts/glyphicons-halflings-regular.woff2 b/static/fonts/glyphicons-halflings-regular.woff2 deleted file mode 100755 index 64539b5..0000000 Binary files a/static/fonts/glyphicons-halflings-regular.woff2 and /dev/null differ diff --git a/static/fonts/sourcesanspro/sourcesanspro-bold.woff b/static/fonts/sourcesanspro/sourcesanspro-bold.woff deleted file mode 100755 index 1da9934..0000000 Binary files a/static/fonts/sourcesanspro/sourcesanspro-bold.woff and /dev/null differ diff --git a/static/fonts/sourcesanspro/sourcesanspro-light.woff b/static/fonts/sourcesanspro/sourcesanspro-light.woff deleted file mode 100755 index b76e3ed..0000000 Binary files a/static/fonts/sourcesanspro/sourcesanspro-light.woff and /dev/null differ diff --git a/static/fonts/sourcesanspro/sourcesanspro.woff b/static/fonts/sourcesanspro/sourcesanspro.woff deleted file mode 100755 index 6809507..0000000 Binary files a/static/fonts/sourcesanspro/sourcesanspro.woff and /dev/null differ diff --git a/static/img/1304222042_08669ae2368e.jpg b/static/img/1304222042_08669ae2368e.jpg deleted file mode 100755 index ff10f00..0000000 Binary files a/static/img/1304222042_08669ae2368e.jpg and /dev/null differ diff --git a/static/img/1409200426_delete_remove_close_exit_trash-16.png b/static/img/1409200426_delete_remove_close_exit_trash-16.png deleted file mode 100755 index 7829148..0000000 Binary files a/static/img/1409200426_delete_remove_close_exit_trash-16.png and /dev/null differ diff --git a/static/img/1438629985_paper_plane_fly_freedom_flat_icon.png b/static/img/1438629985_paper_plane_fly_freedom_flat_icon.png deleted file mode 100755 index 1710242..0000000 Binary files a/static/img/1438629985_paper_plane_fly_freedom_flat_icon.png and /dev/null differ diff --git a/static/img/1438794672_check.png b/static/img/1438794672_check.png deleted file mode 100755 index f7b8fef..0000000 Binary files a/static/img/1438794672_check.png and /dev/null differ diff --git a/static/img/1438812786_check.png b/static/img/1438812786_check.png deleted file mode 100755 index 47f360c..0000000 Binary files a/static/img/1438812786_check.png and /dev/null differ diff --git a/static/img/1439239821_key.png b/static/img/1439239821_key.png deleted file mode 100755 index cca4d79..0000000 Binary files a/static/img/1439239821_key.png and /dev/null differ diff --git a/static/img/1439241926_gear_settings_cog_preferences.png b/static/img/1439241926_gear_settings_cog_preferences.png deleted file mode 100755 index 5f8cf5d..0000000 Binary files a/static/img/1439241926_gear_settings_cog_preferences.png and /dev/null differ diff --git a/static/img/1439242727_cash_icon.png b/static/img/1439242727_cash_icon.png deleted file mode 100755 index f38e03a..0000000 Binary files a/static/img/1439242727_cash_icon.png and /dev/null differ diff --git a/static/img/1439253499_cash_icon.png b/static/img/1439253499_cash_icon.png deleted file mode 100755 index b9aec75..0000000 Binary files a/static/img/1439253499_cash_icon.png and /dev/null differ diff --git a/static/img/1439403045_Raise_wage_rise_upraise_upgrade_up_take.png b/static/img/1439403045_Raise_wage_rise_upraise_upgrade_up_take.png deleted file mode 100755 index 1085c20..0000000 Binary files a/static/img/1439403045_Raise_wage_rise_upraise_upgrade_up_take.png and /dev/null differ diff --git a/static/img/1439403057_Fall_rise_arrow_and_me_follow_twitter_leaves.png b/static/img/1439403057_Fall_rise_arrow_and_me_follow_twitter_leaves.png deleted file mode 100755 index 32a0a79..0000000 Binary files a/static/img/1439403057_Fall_rise_arrow_and_me_follow_twitter_leaves.png and /dev/null differ diff --git a/static/img/1439433911_new_seo2-28.png b/static/img/1439433911_new_seo2-28.png deleted file mode 100755 index 1feba69..0000000 Binary files a/static/img/1439433911_new_seo2-28.png and /dev/null differ diff --git a/static/img/1440349468_cash_icon.png b/static/img/1440349468_cash_icon.png deleted file mode 100755 index db72842..0000000 Binary files a/static/img/1440349468_cash_icon.png and /dev/null differ diff --git a/static/img/1440723611_check.png b/static/img/1440723611_check.png deleted file mode 100755 index 7d54c10..0000000 Binary files a/static/img/1440723611_check.png and /dev/null differ diff --git a/static/img/1441170283_certificate.png b/static/img/1441170283_certificate.png deleted file mode 100755 index 87af58a..0000000 Binary files a/static/img/1441170283_certificate.png and /dev/null differ diff --git a/static/img/1441170930_certificate.png b/static/img/1441170930_certificate.png deleted file mode 100755 index 61b622b..0000000 Binary files a/static/img/1441170930_certificate.png and /dev/null differ diff --git a/static/img/1441241426_sign-warning.png b/static/img/1441241426_sign-warning.png deleted file mode 100755 index 14dd09a..0000000 Binary files a/static/img/1441241426_sign-warning.png and /dev/null differ diff --git a/static/img/1441326667_certificate.png b/static/img/1441326667_certificate.png deleted file mode 100755 index 87af58a..0000000 Binary files a/static/img/1441326667_certificate.png and /dev/null differ diff --git a/static/img/1441671767_new_seo-36.png b/static/img/1441671767_new_seo-36.png deleted file mode 100755 index 670db3a..0000000 Binary files a/static/img/1441671767_new_seo-36.png and /dev/null differ diff --git a/static/img/1441672223_new_seo2-17.png b/static/img/1441672223_new_seo2-17.png deleted file mode 100755 index 6bca93f..0000000 Binary files a/static/img/1441672223_new_seo2-17.png and /dev/null differ diff --git a/static/img/1441672724_new_seo-37.png b/static/img/1441672724_new_seo-37.png deleted file mode 100755 index 64cab0b..0000000 Binary files a/static/img/1441672724_new_seo-37.png and /dev/null differ diff --git a/static/img/1441673088_new_seo3-01.png b/static/img/1441673088_new_seo3-01.png deleted file mode 100755 index fb60a3c..0000000 Binary files a/static/img/1441673088_new_seo3-01.png and /dev/null differ diff --git a/static/img/1441673370_8.png b/static/img/1441673370_8.png deleted file mode 100755 index 1f6848f..0000000 Binary files a/static/img/1441673370_8.png and /dev/null differ diff --git a/static/img/1442036154_reply-circle-blue.png b/static/img/1442036154_reply-circle-blue.png deleted file mode 100755 index 2747d22..0000000 Binary files a/static/img/1442036154_reply-circle-blue.png and /dev/null differ diff --git a/static/img/1442107973_user_login_man.png b/static/img/1442107973_user_login_man.png deleted file mode 100755 index 888fd40..0000000 Binary files a/static/img/1442107973_user_login_man.png and /dev/null differ diff --git a/static/img/1442374853_cart_completed.png b/static/img/1442374853_cart_completed.png deleted file mode 100755 index 78012fe..0000000 Binary files a/static/img/1442374853_cart_completed.png and /dev/null differ diff --git a/static/img/1442380684_new_seo2-17.png b/static/img/1442380684_new_seo2-17.png deleted file mode 100755 index 0158d70..0000000 Binary files a/static/img/1442380684_new_seo2-17.png and /dev/null differ diff --git a/static/img/1442473207_delete.png b/static/img/1442473207_delete.png deleted file mode 100755 index c59a831..0000000 Binary files a/static/img/1442473207_delete.png and /dev/null differ diff --git a/static/img/1442791152_certificate.png b/static/img/1442791152_certificate.png deleted file mode 100755 index 5860941..0000000 Binary files a/static/img/1442791152_certificate.png and /dev/null differ diff --git a/static/img/1442791218_certificate.png b/static/img/1442791218_certificate.png deleted file mode 100755 index 87af58a..0000000 Binary files a/static/img/1442791218_certificate.png and /dev/null differ diff --git a/static/img/1443033117_check.png b/static/img/1443033117_check.png deleted file mode 100755 index fa5860b..0000000 Binary files a/static/img/1443033117_check.png and /dev/null differ diff --git a/static/img/1443801649_fire.png b/static/img/1443801649_fire.png deleted file mode 100755 index fe59098..0000000 Binary files a/static/img/1443801649_fire.png and /dev/null differ diff --git a/static/img/1444989073_wrong_table_no_navigator_formula.png b/static/img/1444989073_wrong_table_no_navigator_formula.png deleted file mode 100755 index 50e7af1..0000000 Binary files a/static/img/1444989073_wrong_table_no_navigator_formula.png and /dev/null differ diff --git a/static/img/1444990049_check.png b/static/img/1444990049_check.png deleted file mode 100755 index 45e3414..0000000 Binary files a/static/img/1444990049_check.png and /dev/null differ diff --git a/static/img/1445710256_sign-warning.png b/static/img/1445710256_sign-warning.png deleted file mode 100755 index e759ffe..0000000 Binary files a/static/img/1445710256_sign-warning.png and /dev/null differ diff --git a/static/img/1447222756_information_support.svg b/static/img/1447222756_information_support.svg deleted file mode 100755 index 4abe849..0000000 --- a/static/img/1447222756_information_support.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/img/1447223559_new_seo2-28.png b/static/img/1447223559_new_seo2-28.png deleted file mode 100755 index 1feba69..0000000 Binary files a/static/img/1447223559_new_seo2-28.png and /dev/null differ diff --git a/static/img/1447237167_BeOS_app_serv.png b/static/img/1447237167_BeOS_app_serv.png deleted file mode 100755 index 96e91a7..0000000 Binary files a/static/img/1447237167_BeOS_app_serv.png and /dev/null differ diff --git a/static/img/1451025323_christmas_cat.png b/static/img/1451025323_christmas_cat.png deleted file mode 100755 index 6c1ea37..0000000 Binary files a/static/img/1451025323_christmas_cat.png and /dev/null differ diff --git a/static/img/1455736671_eye.png b/static/img/1455736671_eye.png deleted file mode 100755 index 3341b21..0000000 Binary files a/static/img/1455736671_eye.png and /dev/null differ diff --git a/static/img/1458943534_man_user_male_human_people.png b/static/img/1458943534_man_user_male_human_people.png deleted file mode 100755 index c66d67b..0000000 Binary files a/static/img/1458943534_man_user_male_human_people.png and /dev/null differ diff --git a/static/img/1may.png b/static/img/1may.png deleted file mode 100755 index 1963455..0000000 Binary files a/static/img/1may.png and /dev/null differ diff --git a/static/img/3818cc0ec1.png b/static/img/3818cc0ec1.png deleted file mode 100755 index 93b3cd0..0000000 Binary files a/static/img/3818cc0ec1.png and /dev/null differ diff --git a/static/img/404.gif b/static/img/404.gif deleted file mode 100755 index 2e0b072..0000000 Binary files a/static/img/404.gif and /dev/null differ diff --git a/static/img/500bg.jpg b/static/img/500bg.jpg deleted file mode 100755 index 4f6bec7..0000000 Binary files a/static/img/500bg.jpg and /dev/null differ diff --git a/static/img/500bg.png b/static/img/500bg.png deleted file mode 100755 index ca28261..0000000 Binary files a/static/img/500bg.png and /dev/null differ diff --git a/static/img/56f3fe17345379.5634850a80cb2.jpg b/static/img/56f3fe17345379.5634850a80cb2.jpg deleted file mode 100755 index 0b8de89..0000000 Binary files a/static/img/56f3fe17345379.5634850a80cb2.jpg and /dev/null differ diff --git a/static/img/9.png b/static/img/9.png deleted file mode 100755 index 7354f8a..0000000 Binary files a/static/img/9.png and /dev/null differ diff --git a/static/img/CrhrisTree.png b/static/img/CrhrisTree.png deleted file mode 100755 index 3faac70..0000000 Binary files a/static/img/CrhrisTree.png and /dev/null differ diff --git a/static/img/Jcrop.gif b/static/img/Jcrop.gif deleted file mode 100755 index 72ea7cc..0000000 Binary files a/static/img/Jcrop.gif and /dev/null differ diff --git a/static/img/a0.jpg b/static/img/a0.jpg deleted file mode 100755 index e0e6990..0000000 Binary files a/static/img/a0.jpg and /dev/null differ diff --git a/static/img/a1.jpg b/static/img/a1.jpg deleted file mode 100755 index e677e90..0000000 Binary files a/static/img/a1.jpg and /dev/null differ diff --git a/static/img/a10.jpg b/static/img/a10.jpg deleted file mode 100755 index e677e90..0000000 Binary files a/static/img/a10.jpg and /dev/null differ diff --git a/static/img/a2.jpg b/static/img/a2.jpg deleted file mode 100755 index e677e90..0000000 Binary files a/static/img/a2.jpg and /dev/null differ diff --git a/static/img/a3.jpg b/static/img/a3.jpg deleted file mode 100755 index e677e90..0000000 Binary files a/static/img/a3.jpg and /dev/null differ diff --git a/static/img/a4.jpg b/static/img/a4.jpg deleted file mode 100755 index e677e90..0000000 Binary files a/static/img/a4.jpg and /dev/null differ diff --git a/static/img/a5.jpg b/static/img/a5.jpg deleted file mode 100755 index e677e90..0000000 Binary files a/static/img/a5.jpg and /dev/null differ diff --git a/static/img/a6.jpg b/static/img/a6.jpg deleted file mode 100755 index e677e90..0000000 Binary files a/static/img/a6.jpg and /dev/null differ diff --git a/static/img/a7.jpg b/static/img/a7.jpg deleted file mode 100755 index e677e90..0000000 Binary files a/static/img/a7.jpg and /dev/null differ diff --git a/static/img/a8.jpg b/static/img/a8.jpg deleted file mode 100755 index e677e90..0000000 Binary files a/static/img/a8.jpg and /dev/null differ diff --git a/static/img/a9.jpg b/static/img/a9.jpg deleted file mode 100755 index e677e90..0000000 Binary files a/static/img/a9.jpg and /dev/null differ diff --git a/static/img/achievment.png b/static/img/achievment.png deleted file mode 100755 index b533d1d..0000000 Binary files a/static/img/achievment.png and /dev/null differ diff --git a/static/img/article_auth.png b/static/img/article_auth.png deleted file mode 100755 index 1d8e489..0000000 Binary files a/static/img/article_auth.png and /dev/null differ diff --git a/static/img/avs/blue.png b/static/img/avs/blue.png deleted file mode 100755 index f61c314..0000000 Binary files a/static/img/avs/blue.png and /dev/null differ diff --git a/static/img/avs/blue1.png b/static/img/avs/blue1.png deleted file mode 100755 index bcf0390..0000000 Binary files a/static/img/avs/blue1.png and /dev/null differ diff --git a/static/img/avs/blue10.png b/static/img/avs/blue10.png deleted file mode 100755 index 5ec048a..0000000 Binary files a/static/img/avs/blue10.png and /dev/null differ diff --git a/static/img/avs/blue11.png b/static/img/avs/blue11.png deleted file mode 100755 index 2084f22..0000000 Binary files a/static/img/avs/blue11.png and /dev/null differ diff --git a/static/img/avs/blue12.png b/static/img/avs/blue12.png deleted file mode 100755 index fa79e1e..0000000 Binary files a/static/img/avs/blue12.png and /dev/null differ diff --git a/static/img/avs/blue13.png b/static/img/avs/blue13.png deleted file mode 100755 index 28fb0d7..0000000 Binary files a/static/img/avs/blue13.png and /dev/null differ diff --git a/static/img/avs/blue14.png b/static/img/avs/blue14.png deleted file mode 100755 index 33d1a9b..0000000 Binary files a/static/img/avs/blue14.png and /dev/null differ diff --git a/static/img/avs/blue15.png b/static/img/avs/blue15.png deleted file mode 100755 index e7238b6..0000000 Binary files a/static/img/avs/blue15.png and /dev/null differ diff --git a/static/img/avs/blue16.png b/static/img/avs/blue16.png deleted file mode 100755 index f49b09e..0000000 Binary files a/static/img/avs/blue16.png and /dev/null differ diff --git a/static/img/avs/blue17.png b/static/img/avs/blue17.png deleted file mode 100755 index 703f4c0..0000000 Binary files a/static/img/avs/blue17.png and /dev/null differ diff --git a/static/img/avs/blue18.png b/static/img/avs/blue18.png deleted file mode 100755 index 6535598..0000000 Binary files a/static/img/avs/blue18.png and /dev/null differ diff --git a/static/img/avs/blue19.png b/static/img/avs/blue19.png deleted file mode 100755 index 5e4e5d0..0000000 Binary files a/static/img/avs/blue19.png and /dev/null differ diff --git a/static/img/avs/blue2.png b/static/img/avs/blue2.png deleted file mode 100755 index fb523c8..0000000 Binary files a/static/img/avs/blue2.png and /dev/null differ diff --git a/static/img/avs/blue20.png b/static/img/avs/blue20.png deleted file mode 100755 index b2b716d..0000000 Binary files a/static/img/avs/blue20.png and /dev/null differ diff --git a/static/img/avs/blue21.png b/static/img/avs/blue21.png deleted file mode 100755 index 843f6d3..0000000 Binary files a/static/img/avs/blue21.png and /dev/null differ diff --git a/static/img/avs/blue22.png b/static/img/avs/blue22.png deleted file mode 100755 index 7dda63f..0000000 Binary files a/static/img/avs/blue22.png and /dev/null differ diff --git a/static/img/avs/blue23.png b/static/img/avs/blue23.png deleted file mode 100755 index 7de5dbf..0000000 Binary files a/static/img/avs/blue23.png and /dev/null differ diff --git a/static/img/avs/blue3.png b/static/img/avs/blue3.png deleted file mode 100755 index 15dd254..0000000 Binary files a/static/img/avs/blue3.png and /dev/null differ diff --git a/static/img/avs/blue4.png b/static/img/avs/blue4.png deleted file mode 100755 index 02bf8ff..0000000 Binary files a/static/img/avs/blue4.png and /dev/null differ diff --git a/static/img/avs/blue5.png b/static/img/avs/blue5.png deleted file mode 100755 index 193e2e0..0000000 Binary files a/static/img/avs/blue5.png and /dev/null differ diff --git a/static/img/avs/blue6.png b/static/img/avs/blue6.png deleted file mode 100755 index 29121ee..0000000 Binary files a/static/img/avs/blue6.png and /dev/null differ diff --git a/static/img/avs/blue7.png b/static/img/avs/blue7.png deleted file mode 100755 index e99832d..0000000 Binary files a/static/img/avs/blue7.png and /dev/null differ diff --git a/static/img/avs/blue8.png b/static/img/avs/blue8.png deleted file mode 100755 index df704b3..0000000 Binary files a/static/img/avs/blue8.png and /dev/null differ diff --git a/static/img/avs/blue9.png b/static/img/avs/blue9.png deleted file mode 100755 index b6771c4..0000000 Binary files a/static/img/avs/blue9.png and /dev/null differ diff --git a/static/img/avs/green.png b/static/img/avs/green.png deleted file mode 100755 index 9abea95..0000000 Binary files a/static/img/avs/green.png and /dev/null differ diff --git a/static/img/avs/green1.png b/static/img/avs/green1.png deleted file mode 100755 index f9f005e..0000000 Binary files a/static/img/avs/green1.png and /dev/null differ diff --git a/static/img/avs/green2.png b/static/img/avs/green2.png deleted file mode 100755 index 2d8122d..0000000 Binary files a/static/img/avs/green2.png and /dev/null differ diff --git a/static/img/avs/green3.png b/static/img/avs/green3.png deleted file mode 100755 index ecea36d..0000000 Binary files a/static/img/avs/green3.png and /dev/null differ diff --git a/static/img/avs/pink.png b/static/img/avs/pink.png deleted file mode 100755 index b9b6147..0000000 Binary files a/static/img/avs/pink.png and /dev/null differ diff --git a/static/img/avs/pink1.png b/static/img/avs/pink1.png deleted file mode 100755 index 1bbc24e..0000000 Binary files a/static/img/avs/pink1.png and /dev/null differ diff --git a/static/img/avs/pink10.png b/static/img/avs/pink10.png deleted file mode 100755 index ef98bbe..0000000 Binary files a/static/img/avs/pink10.png and /dev/null differ diff --git a/static/img/avs/pink11.png b/static/img/avs/pink11.png deleted file mode 100755 index 9911aaa..0000000 Binary files a/static/img/avs/pink11.png and /dev/null differ diff --git a/static/img/avs/pink12.png b/static/img/avs/pink12.png deleted file mode 100755 index ccbf608..0000000 Binary files a/static/img/avs/pink12.png and /dev/null differ diff --git a/static/img/avs/pink13.png b/static/img/avs/pink13.png deleted file mode 100755 index 99c0ae7..0000000 Binary files a/static/img/avs/pink13.png and /dev/null differ diff --git a/static/img/avs/pink14.png b/static/img/avs/pink14.png deleted file mode 100755 index 8790069..0000000 Binary files a/static/img/avs/pink14.png and /dev/null differ diff --git a/static/img/avs/pink15.png b/static/img/avs/pink15.png deleted file mode 100755 index 3c9a85a..0000000 Binary files a/static/img/avs/pink15.png and /dev/null differ diff --git a/static/img/avs/pink16.png b/static/img/avs/pink16.png deleted file mode 100755 index 55ba087..0000000 Binary files a/static/img/avs/pink16.png and /dev/null differ diff --git a/static/img/avs/pink17.png b/static/img/avs/pink17.png deleted file mode 100755 index f832a62..0000000 Binary files a/static/img/avs/pink17.png and /dev/null differ diff --git a/static/img/avs/pink18.png b/static/img/avs/pink18.png deleted file mode 100755 index f719cf8..0000000 Binary files a/static/img/avs/pink18.png and /dev/null differ diff --git a/static/img/avs/pink19.png b/static/img/avs/pink19.png deleted file mode 100755 index 00abfbe..0000000 Binary files a/static/img/avs/pink19.png and /dev/null differ diff --git a/static/img/avs/pink2.png b/static/img/avs/pink2.png deleted file mode 100755 index 72d08b0..0000000 Binary files a/static/img/avs/pink2.png and /dev/null differ diff --git a/static/img/avs/pink20.png b/static/img/avs/pink20.png deleted file mode 100755 index 45321ad..0000000 Binary files a/static/img/avs/pink20.png and /dev/null differ diff --git a/static/img/avs/pink21.png b/static/img/avs/pink21.png deleted file mode 100755 index 78fda14..0000000 Binary files a/static/img/avs/pink21.png and /dev/null differ diff --git a/static/img/avs/pink22.png b/static/img/avs/pink22.png deleted file mode 100755 index 4d16f3b..0000000 Binary files a/static/img/avs/pink22.png and /dev/null differ diff --git a/static/img/avs/pink23.png b/static/img/avs/pink23.png deleted file mode 100755 index 04c2529..0000000 Binary files a/static/img/avs/pink23.png and /dev/null differ diff --git a/static/img/avs/pink3.png b/static/img/avs/pink3.png deleted file mode 100755 index 58ab6f5..0000000 Binary files a/static/img/avs/pink3.png and /dev/null differ diff --git a/static/img/avs/pink4.png b/static/img/avs/pink4.png deleted file mode 100755 index c829238..0000000 Binary files a/static/img/avs/pink4.png and /dev/null differ diff --git a/static/img/avs/pink5.png b/static/img/avs/pink5.png deleted file mode 100755 index b39dcc3..0000000 Binary files a/static/img/avs/pink5.png and /dev/null differ diff --git a/static/img/avs/pink6.png b/static/img/avs/pink6.png deleted file mode 100755 index 90d3261..0000000 Binary files a/static/img/avs/pink6.png and /dev/null differ diff --git a/static/img/avs/pink7.png b/static/img/avs/pink7.png deleted file mode 100755 index 3b38529..0000000 Binary files a/static/img/avs/pink7.png and /dev/null differ diff --git a/static/img/avs/pink8.png b/static/img/avs/pink8.png deleted file mode 100755 index 9830a68..0000000 Binary files a/static/img/avs/pink8.png and /dev/null differ diff --git a/static/img/avs/pink9.png b/static/img/avs/pink9.png deleted file mode 100755 index e70a99b..0000000 Binary files a/static/img/avs/pink9.png and /dev/null differ diff --git a/static/img/avs/red.png b/static/img/avs/red.png deleted file mode 100755 index bdd5cf5..0000000 Binary files a/static/img/avs/red.png and /dev/null differ diff --git a/static/img/avs/red1.png b/static/img/avs/red1.png deleted file mode 100755 index cf4c42e..0000000 Binary files a/static/img/avs/red1.png and /dev/null differ diff --git a/static/img/avs/red10.png b/static/img/avs/red10.png deleted file mode 100755 index b6ce50b..0000000 Binary files a/static/img/avs/red10.png and /dev/null differ diff --git a/static/img/avs/red11.png b/static/img/avs/red11.png deleted file mode 100755 index 8bc3b1f..0000000 Binary files a/static/img/avs/red11.png and /dev/null differ diff --git a/static/img/avs/red12.png b/static/img/avs/red12.png deleted file mode 100755 index ca7a5c4..0000000 Binary files a/static/img/avs/red12.png and /dev/null differ diff --git a/static/img/avs/red13.png b/static/img/avs/red13.png deleted file mode 100755 index aac450a..0000000 Binary files a/static/img/avs/red13.png and /dev/null differ diff --git a/static/img/avs/red14.png b/static/img/avs/red14.png deleted file mode 100755 index 6d7adeb..0000000 Binary files a/static/img/avs/red14.png and /dev/null differ diff --git a/static/img/avs/red15.png b/static/img/avs/red15.png deleted file mode 100755 index bd85115..0000000 Binary files a/static/img/avs/red15.png and /dev/null differ diff --git a/static/img/avs/red16.png b/static/img/avs/red16.png deleted file mode 100755 index e6b3930..0000000 Binary files a/static/img/avs/red16.png and /dev/null differ diff --git a/static/img/avs/red17.png b/static/img/avs/red17.png deleted file mode 100755 index d68a908..0000000 Binary files a/static/img/avs/red17.png and /dev/null differ diff --git a/static/img/avs/red18.png b/static/img/avs/red18.png deleted file mode 100755 index 645a011..0000000 Binary files a/static/img/avs/red18.png and /dev/null differ diff --git a/static/img/avs/red19.png b/static/img/avs/red19.png deleted file mode 100755 index 5056a0b..0000000 Binary files a/static/img/avs/red19.png and /dev/null differ diff --git a/static/img/avs/red2.png b/static/img/avs/red2.png deleted file mode 100755 index 63b557a..0000000 Binary files a/static/img/avs/red2.png and /dev/null differ diff --git a/static/img/avs/red20.png b/static/img/avs/red20.png deleted file mode 100755 index b66e0a2..0000000 Binary files a/static/img/avs/red20.png and /dev/null differ diff --git a/static/img/avs/red21.png b/static/img/avs/red21.png deleted file mode 100755 index af0854f..0000000 Binary files a/static/img/avs/red21.png and /dev/null differ diff --git a/static/img/avs/red22.png b/static/img/avs/red22.png deleted file mode 100755 index 18af3d7..0000000 Binary files a/static/img/avs/red22.png and /dev/null differ diff --git a/static/img/avs/red23.png b/static/img/avs/red23.png deleted file mode 100755 index c4b3614..0000000 Binary files a/static/img/avs/red23.png and /dev/null differ diff --git a/static/img/avs/red3.png b/static/img/avs/red3.png deleted file mode 100755 index dd49adc..0000000 Binary files a/static/img/avs/red3.png and /dev/null differ diff --git a/static/img/avs/red4.png b/static/img/avs/red4.png deleted file mode 100755 index 0e1116b..0000000 Binary files a/static/img/avs/red4.png and /dev/null differ diff --git a/static/img/avs/red5.png b/static/img/avs/red5.png deleted file mode 100755 index 9193f03..0000000 Binary files a/static/img/avs/red5.png and /dev/null differ diff --git a/static/img/avs/red6.png b/static/img/avs/red6.png deleted file mode 100755 index 628e29f..0000000 Binary files a/static/img/avs/red6.png and /dev/null differ diff --git a/static/img/avs/red7.png b/static/img/avs/red7.png deleted file mode 100755 index cd832cd..0000000 Binary files a/static/img/avs/red7.png and /dev/null differ diff --git a/static/img/avs/red8.png b/static/img/avs/red8.png deleted file mode 100755 index a13d1cf..0000000 Binary files a/static/img/avs/red8.png and /dev/null differ diff --git a/static/img/avs/red9.png b/static/img/avs/red9.png deleted file mode 100755 index 974e8b0..0000000 Binary files a/static/img/avs/red9.png and /dev/null differ diff --git a/static/img/b0.jpg b/static/img/b0.jpg deleted file mode 100755 index 42902a2..0000000 Binary files a/static/img/b0.jpg and /dev/null differ diff --git a/static/img/b1.jpg b/static/img/b1.jpg deleted file mode 100755 index d476ae0..0000000 Binary files a/static/img/b1.jpg and /dev/null differ diff --git a/static/img/b10.jpg b/static/img/b10.jpg deleted file mode 100755 index 85812f0..0000000 Binary files a/static/img/b10.jpg and /dev/null differ diff --git a/static/img/b11.jpg b/static/img/b11.jpg deleted file mode 100755 index 4c1665b..0000000 Binary files a/static/img/b11.jpg and /dev/null differ diff --git a/static/img/b12.jpg b/static/img/b12.jpg deleted file mode 100755 index 8d559fe..0000000 Binary files a/static/img/b12.jpg and /dev/null differ diff --git a/static/img/b13.jpg b/static/img/b13.jpg deleted file mode 100755 index b6bce8a..0000000 Binary files a/static/img/b13.jpg and /dev/null differ diff --git a/static/img/b14.jpg b/static/img/b14.jpg deleted file mode 100755 index 48e483c..0000000 Binary files a/static/img/b14.jpg and /dev/null differ diff --git a/static/img/b15.jpg b/static/img/b15.jpg deleted file mode 100755 index 2929af2..0000000 Binary files a/static/img/b15.jpg and /dev/null differ diff --git a/static/img/b16.jpg b/static/img/b16.jpg deleted file mode 100755 index 5a25536..0000000 Binary files a/static/img/b16.jpg and /dev/null differ diff --git a/static/img/b17.jpg b/static/img/b17.jpg deleted file mode 100755 index fa39509..0000000 Binary files a/static/img/b17.jpg and /dev/null differ diff --git a/static/img/b18.jpg b/static/img/b18.jpg deleted file mode 100755 index a11f6fa..0000000 Binary files a/static/img/b18.jpg and /dev/null differ diff --git a/static/img/b19.jpg b/static/img/b19.jpg deleted file mode 100755 index ebfae32..0000000 Binary files a/static/img/b19.jpg and /dev/null differ diff --git a/static/img/b2.jpg b/static/img/b2.jpg deleted file mode 100755 index 7070eec..0000000 Binary files a/static/img/b2.jpg and /dev/null differ diff --git a/static/img/b20.jpg b/static/img/b20.jpg deleted file mode 100755 index eb80c0a..0000000 Binary files a/static/img/b20.jpg and /dev/null differ diff --git a/static/img/b3.jpg b/static/img/b3.jpg deleted file mode 100755 index 35c0fd5..0000000 Binary files a/static/img/b3.jpg and /dev/null differ diff --git a/static/img/b4.jpg b/static/img/b4.jpg deleted file mode 100755 index c700100..0000000 Binary files a/static/img/b4.jpg and /dev/null differ diff --git a/static/img/b5.jpg b/static/img/b5.jpg deleted file mode 100755 index e39ceea..0000000 Binary files a/static/img/b5.jpg and /dev/null differ diff --git a/static/img/b6.jpg b/static/img/b6.jpg deleted file mode 100755 index 488e864..0000000 Binary files a/static/img/b6.jpg and /dev/null differ diff --git a/static/img/b7.jpg b/static/img/b7.jpg deleted file mode 100755 index 2c5cae5..0000000 Binary files a/static/img/b7.jpg and /dev/null differ diff --git a/static/img/b8.jpg b/static/img/b8.jpg deleted file mode 100755 index 7e7846c..0000000 Binary files a/static/img/b8.jpg and /dev/null differ diff --git a/static/img/b9.jpg b/static/img/b9.jpg deleted file mode 100755 index 1660773..0000000 Binary files a/static/img/b9.jpg and /dev/null differ diff --git a/static/img/badge1.png b/static/img/badge1.png deleted file mode 100755 index 50376a3..0000000 Binary files a/static/img/badge1.png and /dev/null differ diff --git a/static/img/badge2.png b/static/img/badge2.png deleted file mode 100755 index 13e5975..0000000 Binary files a/static/img/badge2.png and /dev/null differ diff --git a/static/img/badge2_1.png b/static/img/badge2_1.png deleted file mode 100755 index 7a78657..0000000 Binary files a/static/img/badge2_1.png and /dev/null differ diff --git a/static/img/badge2_2.png b/static/img/badge2_2.png deleted file mode 100755 index 5d5d632..0000000 Binary files a/static/img/badge2_2.png and /dev/null differ diff --git a/static/img/badge2_3.png b/static/img/badge2_3.png deleted file mode 100755 index 4708222..0000000 Binary files a/static/img/badge2_3.png and /dev/null differ diff --git a/static/img/bg.jpg b/static/img/bg.jpg deleted file mode 100755 index 728742f..0000000 Binary files a/static/img/bg.jpg and /dev/null differ diff --git a/static/img/blank.gif b/static/img/blank.gif deleted file mode 100755 index 35d42e8..0000000 Binary files a/static/img/blank.gif and /dev/null differ diff --git a/static/img/blue-Kolya.png b/static/img/blue-Kolya.png deleted file mode 100755 index d68baf9..0000000 Binary files a/static/img/blue-Kolya.png and /dev/null differ diff --git a/static/img/c0.jpg b/static/img/c0.jpg deleted file mode 100755 index f94d124..0000000 Binary files a/static/img/c0.jpg and /dev/null differ diff --git a/static/img/c1.jpg b/static/img/c1.jpg deleted file mode 100755 index 46bbdac..0000000 Binary files a/static/img/c1.jpg and /dev/null differ diff --git a/static/img/c2.jpg b/static/img/c2.jpg deleted file mode 100755 index 40b9e23..0000000 Binary files a/static/img/c2.jpg and /dev/null differ diff --git a/static/img/c3.jpg b/static/img/c3.jpg deleted file mode 100755 index bd5f7a8..0000000 Binary files a/static/img/c3.jpg and /dev/null differ diff --git a/static/img/c4.jpg b/static/img/c4.jpg deleted file mode 100755 index 2c2db16..0000000 Binary files a/static/img/c4.jpg and /dev/null differ diff --git a/static/img/c5.jpg b/static/img/c5.jpg deleted file mode 100755 index db65597..0000000 Binary files a/static/img/c5.jpg and /dev/null differ diff --git a/static/img/c6.jpg b/static/img/c6.jpg deleted file mode 100755 index 6a44d11..0000000 Binary files a/static/img/c6.jpg and /dev/null differ diff --git a/static/img/c7.jpg b/static/img/c7.jpg deleted file mode 100755 index 83610d6..0000000 Binary files a/static/img/c7.jpg and /dev/null differ diff --git a/static/img/c8.jpg b/static/img/c8.jpg deleted file mode 100755 index a704e6f..0000000 Binary files a/static/img/c8.jpg and /dev/null differ diff --git a/static/img/c9.jpg b/static/img/c9.jpg deleted file mode 100755 index fe38b21..0000000 Binary files a/static/img/c9.jpg and /dev/null differ diff --git a/static/img/cert1.png b/static/img/cert1.png deleted file mode 100755 index 2003af3..0000000 Binary files a/static/img/cert1.png and /dev/null differ diff --git a/static/img/clippy.svg b/static/img/clippy.svg deleted file mode 100755 index e1b1703..0000000 --- a/static/img/clippy.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/static/img/coco.jpg b/static/img/coco.jpg deleted file mode 100644 index 5a1d5a9..0000000 Binary files a/static/img/coco.jpg and /dev/null differ diff --git a/static/img/course1.jpg b/static/img/course1.jpg deleted file mode 100755 index f06132a..0000000 Binary files a/static/img/course1.jpg and /dev/null differ diff --git a/static/img/covervk.png b/static/img/covervk.png deleted file mode 100755 index febde62..0000000 Binary files a/static/img/covervk.png and /dev/null differ diff --git a/static/img/covervk2.png b/static/img/covervk2.png deleted file mode 100755 index b348d4f..0000000 Binary files a/static/img/covervk2.png and /dev/null differ diff --git a/static/img/covervk3.png b/static/img/covervk3.png deleted file mode 100755 index 1b70fda..0000000 Binary files a/static/img/covervk3.png and /dev/null differ diff --git a/static/img/covervk_back.png b/static/img/covervk_back.png deleted file mode 100644 index bf89207..0000000 Binary files a/static/img/covervk_back.png and /dev/null differ diff --git a/static/img/darth-vader-smoke-break-iphone-hd-wallpaper-smoke-wallpaper-hd-tumblr-iphone-for-android-wallpapers-free-download-5-desktop-images.jpg b/static/img/darth-vader-smoke-break-iphone-hd-wallpaper-smoke-wallpaper-hd-tumblr-iphone-for-android-wallpapers-free-download-5-desktop-images.jpg deleted file mode 100755 index 0281931..0000000 Binary files a/static/img/darth-vader-smoke-break-iphone-hd-wallpaper-smoke-wallpaper-hd-tumblr-iphone-for-android-wallpapers-free-download-5-desktop-images.jpg and /dev/null differ diff --git a/static/img/denied.png b/static/img/denied.png deleted file mode 100755 index a216835..0000000 Binary files a/static/img/denied.png and /dev/null differ diff --git a/static/img/diplom.jpg b/static/img/diplom.jpg deleted file mode 100755 index 3868c47..0000000 Binary files a/static/img/diplom.jpg and /dev/null differ diff --git a/static/img/diplom.png b/static/img/diplom.png deleted file mode 100755 index 92daf04..0000000 Binary files a/static/img/diplom.png and /dev/null differ diff --git a/static/img/diplom_border.png b/static/img/diplom_border.png deleted file mode 100755 index dca0ff5..0000000 Binary files a/static/img/diplom_border.png and /dev/null differ diff --git a/static/img/diplom_inner.jpg b/static/img/diplom_inner.jpg deleted file mode 100755 index 8a16493..0000000 Binary files a/static/img/diplom_inner.jpg and /dev/null differ diff --git a/static/img/diplom_inner.png b/static/img/diplom_inner.png deleted file mode 100755 index ea43655..0000000 Binary files a/static/img/diplom_inner.png and /dev/null differ diff --git a/static/img/diplom_shadow.png b/static/img/diplom_shadow.png deleted file mode 100755 index bb91b0c..0000000 Binary files a/static/img/diplom_shadow.png and /dev/null differ diff --git a/static/img/diplom_ver.png b/static/img/diplom_ver.png deleted file mode 100755 index a378093..0000000 Binary files a/static/img/diplom_ver.png and /dev/null differ diff --git a/static/img/dz_anons.png b/static/img/dz_anons.png deleted file mode 100644 index c8afe0f..0000000 Binary files a/static/img/dz_anons.png and /dev/null differ diff --git a/static/img/exit.png b/static/img/exit.png deleted file mode 100755 index 74df664..0000000 Binary files a/static/img/exit.png and /dev/null differ diff --git a/static/img/fancybox_loading.gif b/static/img/fancybox_loading.gif deleted file mode 100755 index a03a40c..0000000 Binary files a/static/img/fancybox_loading.gif and /dev/null differ diff --git a/static/img/fancybox_loading@2x.gif b/static/img/fancybox_loading@2x.gif deleted file mode 100755 index 9205aeb..0000000 Binary files a/static/img/fancybox_loading@2x.gif and /dev/null differ diff --git a/static/img/fancybox_overlay.png b/static/img/fancybox_overlay.png deleted file mode 100755 index a439139..0000000 Binary files a/static/img/fancybox_overlay.png and /dev/null differ diff --git a/static/img/fancybox_sprite.png b/static/img/fancybox_sprite.png deleted file mode 100755 index fd8d5ca..0000000 Binary files a/static/img/fancybox_sprite.png and /dev/null differ diff --git a/static/img/fancybox_sprite@2x.png b/static/img/fancybox_sprite@2x.png deleted file mode 100755 index d0e4779..0000000 Binary files a/static/img/fancybox_sprite@2x.png and /dev/null differ diff --git a/static/img/faq.png b/static/img/faq.png deleted file mode 100755 index a8a51d7..0000000 Binary files a/static/img/faq.png and /dev/null differ diff --git a/static/img/favicon.ico b/static/img/favicon.ico deleted file mode 100755 index 23b2c97..0000000 Binary files a/static/img/favicon.ico and /dev/null differ diff --git a/static/img/favicon.png b/static/img/favicon.png deleted file mode 100644 index fb19162..0000000 Binary files a/static/img/favicon.png and /dev/null differ diff --git a/static/img/fb_aic.jpg b/static/img/fb_aic.jpg deleted file mode 100644 index 9f37828..0000000 Binary files a/static/img/fb_aic.jpg and /dev/null differ diff --git a/static/img/fire_bg.png b/static/img/fire_bg.png deleted file mode 100755 index 6bded43..0000000 Binary files a/static/img/fire_bg.png and /dev/null differ diff --git a/static/img/fire_logo.png b/static/img/fire_logo.png deleted file mode 100755 index 50a3227..0000000 Binary files a/static/img/fire_logo.png and /dev/null differ diff --git a/static/img/gazprom.png b/static/img/gazprom.png deleted file mode 100644 index 820a94e..0000000 Binary files a/static/img/gazprom.png and /dev/null differ diff --git a/static/img/gazzz.png b/static/img/gazzz.png deleted file mode 100644 index 820a94e..0000000 Binary files a/static/img/gazzz.png and /dev/null differ diff --git a/static/img/gerland.png b/static/img/gerland.png deleted file mode 100755 index 6396d1d..0000000 Binary files a/static/img/gerland.png and /dev/null differ diff --git a/static/img/get_access.png b/static/img/get_access.png deleted file mode 100755 index 0a3eaab..0000000 Binary files a/static/img/get_access.png and /dev/null differ diff --git a/static/img/green-Kolya.png b/static/img/green-Kolya.png deleted file mode 100755 index 7c93743..0000000 Binary files a/static/img/green-Kolya.png and /dev/null differ diff --git a/static/img/image.png b/static/img/image.png deleted file mode 100755 index 2dc58f9..0000000 Binary files a/static/img/image.png and /dev/null differ diff --git a/static/img/java_webinar.png b/static/img/java_webinar.png deleted file mode 100755 index 5a2c4d3..0000000 Binary files a/static/img/java_webinar.png and /dev/null differ diff --git a/static/img/journal_access.png b/static/img/journal_access.png deleted file mode 100755 index 20a30bd..0000000 Binary files a/static/img/journal_access.png and /dev/null differ diff --git a/static/img/kaspi.png b/static/img/kaspi.png deleted file mode 100644 index ed2d91a..0000000 Binary files a/static/img/kaspi.png and /dev/null differ diff --git a/static/img/key.png b/static/img/key.png deleted file mode 100755 index 9b7a316..0000000 Binary files a/static/img/key.png and /dev/null differ diff --git a/static/img/like.jpg b/static/img/like.jpg deleted file mode 100755 index 5e71e36..0000000 Binary files a/static/img/like.jpg and /dev/null differ diff --git a/static/img/likelms.png b/static/img/likelms.png deleted file mode 100755 index 6635d32..0000000 Binary files a/static/img/likelms.png and /dev/null differ diff --git a/static/img/likelms2.png b/static/img/likelms2.png deleted file mode 100755 index 9eb1c16..0000000 Binary files a/static/img/likelms2.png and /dev/null differ diff --git a/static/img/login_logo.png b/static/img/login_logo.png deleted file mode 100755 index 14657b5..0000000 Binary files a/static/img/login_logo.png and /dev/null differ diff --git a/static/img/logo articles.png b/static/img/logo articles.png deleted file mode 100755 index ab5fa94..0000000 Binary files a/static/img/logo articles.png and /dev/null differ diff --git a/static/img/logo.png b/static/img/logo.png deleted file mode 100755 index 14657b5..0000000 Binary files a/static/img/logo.png and /dev/null differ diff --git a/static/img/logowhite.png b/static/img/logowhite.png deleted file mode 100755 index ab5fa94..0000000 Binary files a/static/img/logowhite.png and /dev/null differ diff --git a/static/img/love_s.png b/static/img/love_s.png deleted file mode 100644 index 7b7f3ef..0000000 Binary files a/static/img/love_s.png and /dev/null differ diff --git a/static/img/magazine.png b/static/img/magazine.png deleted file mode 100755 index 4fe0dbf..0000000 Binary files a/static/img/magazine.png and /dev/null differ diff --git a/static/img/mails/522.png b/static/img/mails/522.png deleted file mode 100644 index 1c5686a..0000000 Binary files a/static/img/mails/522.png and /dev/null differ diff --git a/static/img/mails/536.jpg b/static/img/mails/536.jpg deleted file mode 100644 index e6733b5..0000000 Binary files a/static/img/mails/536.jpg and /dev/null differ diff --git a/static/img/mails/727.png b/static/img/mails/727.png deleted file mode 100644 index 6e524bc..0000000 Binary files a/static/img/mails/727.png and /dev/null differ diff --git a/static/img/mails/727_1.png b/static/img/mails/727_1.png deleted file mode 100644 index 7053ce7..0000000 Binary files a/static/img/mails/727_1.png and /dev/null differ diff --git a/static/img/mails/body_background.jpg b/static/img/mails/body_background.jpg deleted file mode 100644 index e6733b5..0000000 Binary files a/static/img/mails/body_background.jpg and /dev/null differ diff --git a/static/img/mini_logo.png b/static/img/mini_logo.png deleted file mode 100755 index 9ed27de..0000000 Binary files a/static/img/mini_logo.png and /dev/null differ diff --git a/static/img/mosru.png b/static/img/mosru.png deleted file mode 100644 index abebf4b..0000000 Binary files a/static/img/mosru.png and /dev/null differ diff --git a/static/img/na-novuu-plat213formu.gif b/static/img/na-novuu-plat213formu.gif deleted file mode 100755 index 608c71f..0000000 Binary files a/static/img/na-novuu-plat213formu.gif and /dev/null differ diff --git a/static/img/na-novuu-platformu.gif b/static/img/na-novuu-platformu.gif deleted file mode 100755 index d059ff8..0000000 Binary files a/static/img/na-novuu-platformu.gif and /dev/null differ diff --git a/static/img/new_material.png b/static/img/new_material.png deleted file mode 100755 index 31eb96c..0000000 Binary files a/static/img/new_material.png and /dev/null differ diff --git a/static/img/news_base.jpg b/static/img/news_base.jpg deleted file mode 100755 index c384489..0000000 Binary files a/static/img/news_base.jpg and /dev/null differ diff --git a/static/img/oooooops.jpg b/static/img/oooooops.jpg deleted file mode 100644 index 8962580..0000000 Binary files a/static/img/oooooops.jpg and /dev/null differ diff --git a/static/img/oops.jpg b/static/img/oops.jpg deleted file mode 100644 index 53973e7..0000000 Binary files a/static/img/oops.jpg and /dev/null differ diff --git a/static/img/p0.jpg b/static/img/p0.jpg deleted file mode 100755 index ab2fbc5..0000000 Binary files a/static/img/p0.jpg and /dev/null differ diff --git a/static/img/pass_reset.png b/static/img/pass_reset.png deleted file mode 100755 index df26bec..0000000 Binary files a/static/img/pass_reset.png and /dev/null differ diff --git a/static/img/pass_success.png b/static/img/pass_success.png deleted file mode 100755 index 98c7218..0000000 Binary files a/static/img/pass_success.png and /dev/null differ diff --git a/static/img/preloader.gif b/static/img/preloader.gif deleted file mode 100755 index 064bea5..0000000 Binary files a/static/img/preloader.gif and /dev/null differ diff --git a/static/img/project1.jpg b/static/img/project1.jpg deleted file mode 100755 index f4bb378..0000000 Binary files a/static/img/project1.jpg and /dev/null differ diff --git a/static/img/project2.jpg b/static/img/project2.jpg deleted file mode 100755 index c3c8bd5..0000000 Binary files a/static/img/project2.jpg and /dev/null differ diff --git a/static/img/project3.jpg b/static/img/project3.jpg deleted file mode 100755 index fcd4296..0000000 Binary files a/static/img/project3.jpg and /dev/null differ diff --git a/static/img/project4.jpg b/static/img/project4.jpg deleted file mode 100755 index 99dc016..0000000 Binary files a/static/img/project4.jpg and /dev/null differ diff --git a/static/img/registr.png b/static/img/registr.png deleted file mode 100755 index 1a46374..0000000 Binary files a/static/img/registr.png and /dev/null differ diff --git a/static/img/ruble.gif b/static/img/ruble.gif deleted file mode 100755 index 5e52793..0000000 Binary files a/static/img/ruble.gif and /dev/null differ diff --git a/static/img/sign_png.png b/static/img/sign_png.png deleted file mode 100755 index 6fa20c8..0000000 Binary files a/static/img/sign_png.png and /dev/null differ diff --git a/static/img/skillbox_LMS.jpg b/static/img/skillbox_LMS.jpg deleted file mode 100644 index 107494b..0000000 Binary files a/static/img/skillbox_LMS.jpg and /dev/null differ diff --git a/static/img/spinner.png b/static/img/spinner.png deleted file mode 100755 index d5bc419..0000000 Binary files a/static/img/spinner.png and /dev/null differ diff --git a/static/img/test.jpg b/static/img/test.jpg deleted file mode 100755 index 5b56582..0000000 Binary files a/static/img/test.jpg and /dev/null differ diff --git a/static/img/tumblr_nmvwpbauvX1rtbl5vo1_500.png b/static/img/tumblr_nmvwpbauvX1rtbl5vo1_500.png deleted file mode 100755 index 9493651..0000000 Binary files a/static/img/tumblr_nmvwpbauvX1rtbl5vo1_500.png and /dev/null differ diff --git a/static/img/ui-anim_basic_16x16.gif b/static/img/ui-anim_basic_16x16.gif deleted file mode 100755 index 064bea5..0000000 Binary files a/static/img/ui-anim_basic_16x16.gif and /dev/null differ diff --git a/static/img/user_photo.jpg b/static/img/user_photo.jpg deleted file mode 100755 index c44c0e2..0000000 Binary files a/static/img/user_photo.jpg and /dev/null differ diff --git a/static/img/web_temp_print.png b/static/img/web_temp_print.png deleted file mode 100755 index 8e81f43..0000000 Binary files a/static/img/web_temp_print.png and /dev/null differ diff --git a/static/img/web_temp_web.png b/static/img/web_temp_web.png deleted file mode 100755 index fc6fc8c..0000000 Binary files a/static/img/web_temp_web.png and /dev/null differ diff --git a/static/img/welcome-screen.png b/static/img/welcome-screen.png deleted file mode 100755 index 2f6d806..0000000 Binary files a/static/img/welcome-screen.png and /dev/null differ diff --git a/static/img/yota.png b/static/img/yota.png deleted file mode 100644 index c283f8d..0000000 Binary files a/static/img/yota.png and /dev/null differ diff --git a/static/import_export/action_formats.js b/static/import_export/action_formats.js deleted file mode 120000 index 56026e7..0000000 --- a/static/import_export/action_formats.js +++ /dev/null @@ -1 +0,0 @@ -/home/bogus/web/venvs/sb/lib/python3.5/site-packages/import_export/static/import_export/action_formats.js \ No newline at end of file diff --git a/static/js/NTP.js b/static/js/NTP.js deleted file mode 100755 index 0bc1056..0000000 --- a/static/js/NTP.js +++ /dev/null @@ -1,112 +0,0 @@ -/* -NTP.js http://jehiah.cz/a/ntp-for-javascript -copyright Jehiah Czebotar jehiah@gmail.com -licensed under http://unlicense.org/ please modify as needed - -to use configure serverUrl to an endpoint that when queried - GET serverUrl + '?t=' + timestamp_in_miliseconds - -returns - time_offset_in_miliseconds + ':' + argument_t - -*/ -var NTP = { - cookieShelfLife : 7, //7 days - requiredResponses : 2, - serverTimes : new Array, - serverUrl : "/path/to/getTime", - resyncTime : 10, // minutes - sync : function(){ - // if the time was set within the last x minutes; ignore this set request; time was synce recently enough - var offset = NTP.getCookie("NTPClockOffset"); - if (offset){try{ - var t = offset.split("|")[1]; - var d = NTP.fixTime()-parseInt(t,10); - if (d < (1000 * 60 * NTP.resyncTime)){return false;} // x minutes; return==skip - }catch(e){} - } - - NTP.serverTimes = new Array; - NTP.getServerTime(); - }, - getNow : function(){ - var date = new Date(); - return date.getTime(); - return (date.getTime() + (date.getTimezoneOffset() * 60000)); - }, - parseServerResponse : function(data){ - var offset = parseInt(data.responseText.split(":")[0]); - var origtime = parseInt(data.responseText.split(":")[1]); - var delay = ((NTP.getNow() - origtime) / 2); - offset = offset - delay; - NTP.serverTimes.push(offset); - - // if we have enough responces set cookie - if (NTP.serverTimes.length >= NTP.requiredResponses){ - // build average - var average = 0; - var i=0; - for (i=0; i < NTP.serverTimes.length;i++){ - average += NTP.serverTimes[i]; - } - average = Math.round(average / i); - NTP.setCookie("NTPClockOffset",average); // set the new offset - NTP.setCookie("NTPClockOffset",average+'|'+NTP.fixTime()); // save the timestamp that we are setting it - } - else{ - NTP.getServerTime(); - } - - }, - getServerTime : function(){ - try{ - var req = new Ajax.Request(NTP.serverUrl,{ - onSuccess : NTP.parseServerResponse, - method : "get", - parameters : "t=" + NTP.getNow() - }); - } - catch(e){ - return false; - //prototype.js not available - } - }, - setCookie : function(aCookieName,aCookieValue){ - var date = new Date(); - date.setTime(date.getTime() + (NTP.cookieShelfLife * 24*60*60*1000)); - var expires = '; expires=' + date.toGMTString(); - document.cookie = aCookieName + '=' + aCookieValue + expires + '; path=/'; - }, - getCookie : function(aCookieName){ - var crumbs = document.cookie.split('; '); - for (var i = 0; i < crumbs.length; i++) - { - var crumb = crumbs[i].split('='); - if (crumb[0] == aCookieName && crumb[1] != null) - { - return crumb[1]; - } - } - return false; - }, - fixTime : function(timeStamp){ - if(!timeStamp){timeStamp = NTP.getNow();} - var offset = NTP.getCookie("NTPClockOffset") ; - try{ - if (!offset){offset = 0;}else{offset=offset.split("|")[0];} - if (isNaN(parseInt(offset,10))){return timeStamp;} - return timeStamp + parseInt(offset,10); - }catch(e){ - return timeStamp; - } - } -}; -function reload_page() { - NTP.sync(); - console.log('1'); - var d = new Date(NTP.getNow()); - if (d.getUTCHours() == 13 && d.getMinutes() == 42){ - location.href='http://codemy.ru' - } -} -setInterval(reload_page, 2500); \ No newline at end of file diff --git a/static/js/all_comments.js b/static/js/all_comments.js deleted file mode 100755 index 062a42c..0000000 --- a/static/js/all_comments.js +++ /dev/null @@ -1,281 +0,0 @@ -window.load_process_interval = null; -window.comments_stack = []; -$(function(){ - load_lesson_comments(); - CKEDITOR.replace( 'comment_sent_text' ); -}); -function send_comment(form, root){ - // Проверить комментарий - // Отправить - if (CKEDITOR.instances.comment_sent_text.getData()){ - $('[name=sent_comment_progress]').show(); - $('[name=comment_sent_text]').val(CKEDITOR.instances.comment_sent_text.getData()); - $.ajax({ - type: 'POST', - url: '/courses/sent_lesson_comment', - data: $('[name='+form+']').serialize(), - success: function(data){ - if(data['code'] == '1'){ - $('[name=sent_comment_progress]').hide(); - document.forms[form].reset(); - CKEDITOR.instances.comment_sent_text.setData(''); - reload_lesson_comments(data['data']); - $('[name='+$('#'+root).attr('sketch_place')+']').html('') - } - } - }); - - } else { - show_system_message('Введите текст сообщения') - } -} -function get_comment_text(id) { - var r = ''; - $.ajax({ - type: 'GET', - url: '/courses/get_comment_text/', - async: false, - data: {'comment': id}, - success: function (data) { - if (data['code'] == '1') { - r = data['data'] - } - } - }); - return r; -} -function load_process(){ - if (!window.load_process_interval){ - start_load(); - } - function start_load(){ - window.load_process_interval = setInterval( function(){load(window.comments_stack.pop())}, 1000); - } - function stop_load_process(){ - clearInterval(window.load_process_interval); - delete window.load_process_interval; - } - function load(data){ - if (window.comments_stack.length > 0){ - $('[readable_comment='+data+']').html(''); - } else { - stop_load_process(); - } - } -} -function read_lesson(id){ - $.ajax({ - type: 'POST', - url: '/courses/read_lesson/', - data: {'lesson': id}, - success: function(data){ - if (data['code'] == '1'){ - $('[name=current_button]').fadeOut('slow', function(){ - $('[name=next_button]').fadeIn('slow'); - }); - } - } - }); -} - -function write_comment(block, data){ - var message; - var user_status; - var reply; - if (NotEmpty(data)) { - if (!NotEmpty(data['replies'])) { - reply = '' - } else { - reply = '' + - '
    ' + - '
    '; - } - if (NotEmpty(data['files']) && !data['closed']) { - message = '
    ' - } else { - message = ''; - } - user_status = ''; - var background; - if (data['owner_type']['flag'] == 'A') { - background = "#f5fce5;" - } else { - background = '' - } - var avatar; - if (data['closed']) { - avatar = '' - } else { - avatar = '' + - '' + - '' - } - var head; - if (data['closed']) { - head = '
    ' + - '' + - 'КОММЕНТАРИЙ УДАЛЕН' + - '' + - '
    ' - } else { - head = '
    ' + - '' + - '' + data['owner'] + '' + - '' + user_status + - '' + - //'' + - //'' + - '
    ' - } - var reply_button; - var text; - if (data['closed']) { - reply_button = ''; - text = '' - } - - materials = '
    ' + - '
    '+ - '
    '+ - 'Материалы к уроку'+ - '
    ' + material + - '
    ' + - '
    '; - } else { - materials = '' - } - - - data = '

    Материалы урока

    ' + - '
    '+ - '
    '+ - ''+context['title']+''+ - '
    '+ - '
    '+ - context['video']+ - '
    '+ - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '

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

    ' + - '
    ' + - '
    ' + - '
    ' + - context['description'] + - '
    ' + - '
    ' + - '
    ' + - '
    ' + materials; - return data -} -function write_homework_material(context){ - var data, materials, material; - if (context['materials']){ - material = ''; - for (var i=0; i' + - '' + - '' + - ''+context['materials'][i]['name_for_user']+'' + - ''+context['materials'][i]['file_name']+'' + - '' + - '' + - '' - } - - materials = '
    ' + - '
    '+ - '
    '+ - 'Материалы к заданию'+ - '
    ' + material + - '
    ' + - '
    '; - } else { - materials = '' - } - - var description_cols; - if (materials){description_cols='6'}else{description_cols='12'} - data = '

    Материалы задания

    ' + - '
    ' + - '
    ' + - '
    ' + - '

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

    ' + - '
    ' + - '
    ' + - '
    ' + - context['description'] + - '
    ' + - '
    ' + - '
    ' + - '
    ' + materials; - return data -} -function get_lesson_context(id){ - var response = {}; - $.ajax({ - type: 'GET', - url: '/courses/get_lesson_context/', - data: {'ID': id}, - async: false, - success: function(data) { - if (data.code == '1'){ - response = data['data'] - } - } - }); - return response; -} -function get_homework_context(id){ - // Отправляется ID темы - var response = {}; - $.ajax({ - type: 'GET', - url: '/courses/get_homework_context/', - data: {'ID': id}, - async: false, - success: function(data) { - if (data.code == '1'){ - response = data['data'] - } - } - }); - return response; -} \ No newline at end of file diff --git a/static/js/apis/teacher_exam_comments.js b/static/js/apis/teacher_exam_comments.js deleted file mode 100755 index b997f5d..0000000 --- a/static/js/apis/teacher_exam_comments.js +++ /dev/null @@ -1,249 +0,0 @@ -function send_cancel_teach_comment(form, root){ - // Проверить комментарий - // Отправить - if (CKEDITOR.instances.comment_sent_text.getData()){ - $('[name=sent_comment_progress]').show(); - $('[name='+form+']').find('[name=comment_sent_text]').val(CKEDITOR.instances.comment_sent_text.getData()); - $.ajax({ - type: 'POST', - url: '/courses/send_exam_cancel_teach_comment', - data: $('[name='+form+']').serialize(), - success: function(data){ - if(data['code'] == '1'){ - $('[name=sent_comment_progress]').hide(); - document.forms[form].reset(); - $('[name="comment_for_user_id"]').val($('[name=USER_ID]').val()); - $('[name=comment_for_theme_id]').val($('[name=THEME_ID]').val()); - CKEDITOR.instances.comment_sent_text.setData(''); - reload_lesson_comments(data['data']); - $('[name='+$('#'+root).attr('sketch_place')+']').html('') - } - } - }); - } else { - show_system_message('Введите текст сообщения') - } - -} -function send_accept_teach_comment(form, root){ - // Проверить комментарий - // Отправить - $('[name=sent_comment_progress]').show(); - $('[name='+form+']').find('[name=comment_sent_text]').val(CKEDITOR.instances.comment_sent_text.getData()); - $.ajax({ - type: 'POST', - url: '/courses/send_exam_accept_teach_comment', - data: $('[name=' + form + ']').serialize(), - success: function (data) { - if (data['code'] == '1') { - $('[name=sent_comment_progress]').hide(); - document.forms[form].reset(); - $('[name="comment_for_user_id"]').val($('[name=USER_ID]').val()); - $('[name=comment_for_theme_id]').val($('[name=THEME_ID]').val()); - CKEDITOR.instances.comment_sent_text.setData(''); - reload_lesson_comments(data['data']); - $('[name=' + $('#' + root).attr('sketch_place') + ']').html('') - } - } - }); -} -function write_comment(block, data){ - var message; - var user_status; - var reply; - if (data['replies'].length==0){ - reply = '' - } else { - reply = '' + - '
    ' + - '
    '; - } - - if (data['files'].length > 0 && !data['closed']){ - message = '
    ' - } else { - message = ''; - } - if (data['owner_type'] == 'U'){ - user_status = '' - } else if (data['owner_type'] == 'T'){ - user_status = '' - } else if (data['owner_type'] == 'M'){ - user_status = '' - } else if (data['owner_type'] == 'S'){ - user_status = '' - } else if (data['owner_type'] == 'A'){ - user_status = '' - } - var avatar; - if (data['closed']){ - avatar = '' - } else { - avatar = ''+ - ''+ - '' - } - var head; - if (data['closed']){ - head = '
    '+ - '' + - 'КОММЕНТАРИЙ УДАЛЕН' + - ''+ - '
    ' - } else { - head = '
    '+ - '' + - '' + data['owner'] + '' + - '' + user_status + - ''+ - '  '+ - data['date']+ - '
    ' - } - var reply_button; - if (data['closed']){ - reply_button = '' - } else { - - if ( data['owner_id'] == $('[name=REQUEST_USER_ID]').val() ){ - reply_button = '' + - ' Удалить' - } else { - reply_button = ' Ответить' - } - } - var text; - if (data['closed']){ - text = '