From 58750c88b5114c00d5f2e65d229f0071e6accdc8 Mon Sep 17 00:00:00 2001 From: Baryshnikov Nikolay Date: Fri, 3 Feb 2017 18:57:28 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BA=D0=B8=D0=BD=D1=83=D0=BB=20=D0=B2?= =?UTF-8?q?=D1=81=D0=B5=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=B4=D0=B0=20=D0=B2=201=20-=20=D0=B2=20=D1=81=D0=B0?= =?UTF-8?q?=D0=BC=D0=BE=D0=BC=20=D0=BD=D0=B8=D0=B7=D1=83=20=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D1=81=D0=B8=D1=8F=20=D0=BE=D1=82=20bramabrama?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 18 +- _utils/1.txt | 140 +- _utils/2.txt | 232 +- _utils/check_journals.py | 10 +- _utils/check_lesson_open_near_homework.py | 30 +- _utils/lessons_comments_hc.xml | 72 +- _utils/open_lesson.py | 2 +- access/__init__.py | 0 access/admin.py | 6 +- access/api.py | 988 +- access/forms.py | 74 +- access/migrations/0001_initial.py | 180 +- access/migrations/0002_auto_20160405_2045.py | 40 +- access/migrations/0003_user_delay.py | 40 +- access/migrations/0004_auto_20160412_2152.py | 52 +- access/migrations/0005_auto_20160414_1527.py | 40 +- access/migrations/0006_user_delay_date.py | 42 +- access/migrations/0007_auto_20160414_1543.py | 42 +- access/migrations/0008_auto_20160414_1547.py | 42 +- access/migrations/0009_auto_20160414_1941.py | 42 +- access/migrations/0010_auto_20160414_1944.py | 42 +- access/migrations/0011_auto_20160420_1749.py | 42 +- access/migrations/0012_auto_20160420_1819.py | 42 +- access/migrations/0013_auto_20160421_1808.py | 52 +- access/migrations/0014_auto_20160421_1824.py | 42 +- access/migrations/0015_auto_20160421_1829.py | 42 +- access/migrations/0016_auto_20160421_2009.py | 52 +- access/migrations/0017_auto_20160421_2135.py | 52 +- access/migrations/0018_auto_20160422_1555.py | 52 +- access/migrations/0019_auto_20160424_1646.py | 52 +- access/migrations/0020_auto_20160506_1303.py | 42 +- access/migrations/0021_auto_20160509_1331.py | 62 +- access/migrations/0022_auto_20160509_1401.py | 82 +- access/migrations/0023_auto_20160509_1408.py | 76 +- access/migrations/0024_auto_20160509_1537.py | 122 +- access/migrations/0025_auto_20160509_1539.py | 52 +- access/migrations/0026_auto_20160509_1803.py | 52 +- access/migrations/0027_auto_20160510_1823.py | 92 +- access/migrations/0028_auto_20160526_1427.py | 122 +- access/migrations/0029_auto_20160526_1435.py | 76 +- access/migrations/0030_auto_20160526_1727.py | 52 +- access/migrations/0031_auto_20160531_1240.py | 52 +- access/migrations/0032_auto_20160601_1256.py | 42 +- access/migrations/0033_auto_20160607_1614.py | 42 +- access/migrations/0034_auto_20160607_2002.py | 42 +- access/migrations/0035_auto_20160607_2034.py | 42 +- access/migrations/0036_auto_20160607_2051.py | 42 +- access/migrations/0037_auto_20160608_1700.py | 42 +- access/migrations/0038_auto_20160608_1705.py | 42 +- access/migrations/0039_auto_20160608_1804.py | 42 +- access/migrations/0040_auto_20160608_1841.py | 42 +- access/migrations/0041_auto_20160609_1429.py | 42 +- access/migrations/0042_auto_20160609_1442.py | 42 +- access/migrations/0043_auto_20160609_1534.py | 42 +- access/migrations/0044_auto_20160609_1536.py | 42 +- access/migrations/0045_auto_20160609_1536.py | 42 +- access/migrations/0046_auto_20160609_1546.py | 42 +- access/migrations/0047_auto_20160609_1627.py | 42 +- access/migrations/0048_auto_20160609_2224.py | 42 +- access/migrations/0049_auto_20160628_1731.py | 42 +- access/migrations/0050_auto_20160711_1518.py | 42 +- access/migrations/0051_auto_20160713_2038.py | 42 +- access/migrations/0052_auto_20160718_1714.py | 42 +- access/migrations/0053_auto_20160718_1714.py | 42 +- access/migrations/0054_auto_20160725_1551.py | 62 +- access/migrations/0055_auto_20160809_1653.py | 72 +- access/migrations/0056_auto_20160809_1659.py | 52 +- access/migrations/0057_auto_20160810_1234.py | 42 +- access/migrations/0058_auto_20160814_1736.py | 42 +- access/migrations/0059_auto_20160815_1853.py | 396 +- access/migrations/0060_auto_20160815_1855.py | 52 +- access/migrations/__init__.py | 0 access/models.py | 4 + access/out_api.py | 896 +- access/tasks.py | 80 +- access/teach_urls.py | 22 +- access/teach_views.py | 280 +- access/urls.py | 86 +- access/views.py | 468 +- configs/celery.conf | 80 +- configs/codemy_ssl/privat.key | 102 +- configs/codemy_ssl/public.pem | 168 +- configs/packs | 32 +- configs/skillbox_ssl/private.key | 102 +- configs/skillbox_ssl/request.csr | 56 +- configs/supervisor.conf | 14 +- configs/uwsgi.ini | 30 +- courses/__init__.py | 0 courses/admin.py | 240 +- courses/api.py | 1818 +- courses/migrations/0001_initial.py | 398 +- courses/migrations/0002_achievementsmap.py | 58 +- courses/migrations/0003_auto_20160322_1852.py | 38 +- courses/migrations/0004_lesson_video_id.py | 40 +- courses/migrations/0005_auto_20160331_2030.py | 40 +- courses/migrations/0006_auto_20160407_2006.py | 50 +- courses/migrations/0007_lesson_video_date.py | 40 +- courses/migrations/0008_coursetheme_block.py | 40 +- .../0009_remove_coursetheme_block.py | 38 +- ...10_remove_coursetheme_empty_description.py | 38 +- courses/migrations/0011_auto_20160425_1550.py | 50 +- courses/migrations/0012_course_diploma_key.py | 40 +- courses/migrations/0013_auto_20160425_1720.py | 84 +- courses/migrations/0014_diploma.py | 70 +- courses/migrations/0015_auto_20160425_1750.py | 90 +- courses/migrations/0016_auto_20160425_1752.py | 60 +- courses/migrations/0017_auto_20160426_1240.py | 78 +- courses/migrations/0018_remove_exam_icon.py | 38 +- courses/migrations/0019_remove_exam_title.py | 38 +- courses/migrations/0020_auto_20160426_1243.py | 54 +- courses/migrations/0021_auto_20160426_1447.py | 150 +- courses/migrations/0022_auto_20160426_1526.py | 120 +- courses/migrations/0023_auto_20160426_1729.py | 110 +- courses/migrations/0024_auto_20160505_1748.py | 60 +- courses/migrations/0025_auto_20160506_1303.py | 62 +- courses/migrations/0026_auto_20160506_1838.py | 60 +- courses/migrations/__init__.py | 0 courses/models.py | 143 +- courses/templates.py | 606 +- courses/tools.py | 886 +- courses/urls.py | 90 +- courses/views.py | 504 +- finance/__init__.py | 0 finance/admin.py | 232 +- finance/amo.py | 36 +- finance/api.py | 0 finance/migrations/0001_initial.py | 250 +- finance/migrations/0002_bill_description.py | 40 +- .../0003_selfbillrequest_company.py | 40 +- finance/migrations/0004_auto_20160414_1700.py | 60 +- finance/migrations/0005_selfbilldesign.py | 56 +- finance/migrations/0006_auto_20160414_1930.py | 50 +- finance/migrations/0007_auto_20160414_1941.py | 50 +- .../migrations/0008_selfbilldesign_users.py | 44 +- .../0009_selfbillhistory_new_sent.py | 40 +- .../migrations/0010_selfbilldesign_pay_id.py | 40 +- finance/migrations/0011_auto_20160505_1748.py | 52 +- finance/migrations/0012_auto_20160505_2009.py | 50 +- finance/migrations/0013_auto_20160505_2035.py | 40 +- finance/migrations/0014_auto_20160506_1303.py | 40 +- finance/migrations/0015_price_key.py | 40 +- finance/migrations/0016_auto_20160524_1255.py | 50 +- finance/migrations/0017_remove_price_flex.py | 38 +- finance/migrations/0018_auto_20160531_1256.py | 234 +- finance/migrations/0019_price_url.py | 40 +- finance/migrations/0020_auto_20160531_1303.py | 40 +- finance/migrations/0021_auto_20160601_1309.py | 68 +- finance/migrations/0022_auto_20160601_1320.py | 56 +- finance/migrations/0023_bill_source_key.py | 40 +- finance/migrations/0024_auto_20160607_2002.py | 70 +- finance/migrations/0025_auto_20160607_2034.py | 60 +- .../migrations/0026_servicerequest__type.py | 40 +- finance/migrations/0027_price_modals.py | 42 +- finance/migrations/0028_auto_20160610_0003.py | 60 +- finance/migrations/0029_bill_modals_show.py | 40 +- finance/migrations/0030_bill_admitad_uid.py | 40 +- finance/migrations/0031_auto_20160727_1453.py | 40 +- finance/migrations/__init__.py | 0 finance/models.py | 103 +- finance/pay.py | 0 finance/tasks.py | 70 +- finance/tools.py | 116 +- finance/urls.py | 0 finance/views.py | 72 +- journals/__init__.py | 0 journals/admin.py | 500 +- journals/api.py | 322 +- journals/migrations/0001_initial.py | 382 +- .../migrations/0002_auto_20160318_1909.py | 44 +- .../migrations/0003_auto_20160322_1359.py | 70 +- journals/migrations/0004_teacherj_opens.py | 42 +- .../migrations/0005_auto_20160329_1930.py | 62 +- .../migrations/0006_auto_20160331_2030.py | 84 +- .../migrations/0007_auto_20160405_2045.py | 62 +- .../migrations/0008_auto_20160407_1741.py | 42 +- .../migrations/0009_auto_20160407_2006.py | 42 +- .../migrations/0010_auto_20160413_0207.py | 86 +- .../migrations/0011_auto_20160413_0214.py | 74 +- .../migrations/0012_auto_20160413_0215.py | 76 +- .../migrations/0013_auto_20160414_1652.py | 52 +- .../migrations/0014_auto_20160414_1941.py | 52 +- .../migrations/0015_auto_20160414_1944.py | 52 +- .../migrations/0016_auto_20160419_1109.py | 74 +- .../migrations/0017_auto_20160419_1426.py | 62 +- .../migrations/0018_auto_20160420_1749.py | 62 +- .../migrations/0019_auto_20160420_1819.py | 60 +- .../migrations/0020_auto_20160425_1656.py | 92 +- .../migrations/0021_auto_20160425_1737.py | 74 +- .../migrations/0022_auto_20160426_1119.py | 60 +- .../migrations/0023_auto_20160426_1240.py | 88 +- .../migrations/0024_auto_20160426_1340.py | 52 +- .../migrations/0025_auto_20160426_1342.py | 68 +- .../migrations/0026_auto_20160426_1711.py | 82 +- .../migrations/0027_auto_20160428_1531.py | 90 +- .../migrations/0028_auto_20160428_1554.py | 52 +- .../migrations/0029_auto_20160428_1556.py | 62 +- .../migrations/0030_auto_20160428_1633.py | 62 +- .../migrations/0031_auto_20160506_1303.py | 52 +- .../migrations/0032_auto_20160530_0820.py | 80 +- .../migrations/0033_auto_20160530_1320.py | 86 +- .../migrations/0034_auto_20160530_1405.py | 56 +- .../migrations/0035_auto_20160607_1613.py | 60 +- .../migrations/0036_auto_20160607_1614.py | 42 +- .../migrations/0037_auto_20160607_2002.py | 42 +- .../migrations/0038_auto_20160607_2034.py | 42 +- .../migrations/0039_auto_20160607_2051.py | 42 +- .../migrations/0040_auto_20160608_1700.py | 42 +- .../migrations/0041_auto_20160608_1705.py | 42 +- .../migrations/0042_auto_20160608_1804.py | 42 +- .../migrations/0043_auto_20160608_1841.py | 42 +- .../migrations/0044_auto_20160609_1429.py | 42 +- .../migrations/0045_auto_20160609_1442.py | 42 +- .../migrations/0046_auto_20160609_1534.py | 42 +- .../migrations/0047_auto_20160609_1536.py | 42 +- .../migrations/0048_auto_20160609_1536.py | 42 +- .../migrations/0049_auto_20160609_1546.py | 42 +- .../migrations/0050_auto_20160609_1627.py | 42 +- .../migrations/0051_auto_20160609_2224.py | 42 +- .../migrations/0052_auto_20160628_1731.py | 42 +- .../migrations/0053_auto_20160711_1518.py | 42 +- .../migrations/0054_auto_20160713_2038.py | 42 +- .../migrations/0055_auto_20160729_1215.py | 58 +- .../migrations/0056_auto_20160729_1308.py | 58 +- .../migrations/0057_auto_20160814_1736.py | 42 +- journals/migrations/__init__.py | 0 journals/models.py | 0 journals/tasks.py | 0 journals/urls.py | 22 +- library/__init__.py | 0 library/admin.py | 48 +- library/api.py | 330 +- library/models.py | 318 +- library/urls.py | 40 +- library/views.py | 44 +- lms/create_comments_bbtext.py | 3 +- lms/decors.py | 6 + lms/settings.py | 338 +- lms/urls.py | 1 + manage.py | 20 +- management/__init__.py | 0 management/admin.py | 208 +- management/api.py | 0 management/comments.py | 34 +- management/letters.py | 21 + management/mails.py | 34 +- management/migrations/0001_initial.py | 182 +- management/migrations/0002_sms.py | 60 +- management/migrations/0003_sms_date.py | 42 +- .../migrations/0004_auto_20160331_2017.py | 72 +- .../migrations/0005_auto_20160331_2017.py | 52 +- .../migrations/0006_auto_20160331_2030.py | 62 +- .../migrations/0007_auto_20160405_2045.py | 52 +- .../migrations/0008_auto_20160407_1741.py | 42 +- .../migrations/0009_auto_20160407_2006.py | 42 +- .../migrations/0010_auto_20160412_1529.py | 96 +- .../migrations/0011_auto_20160412_1943.py | 54 +- .../migrations/0012_auto_20160412_1946.py | 60 +- .../migrations/0013_auto_20160412_1956.py | 64 +- .../migrations/0014_auto_20160412_2003.py | 64 +- .../migrations/0015_auto_20160412_2004.py | 42 +- .../migrations/0016_auto_20160412_2145.py | 42 +- .../migrations/0017_auto_20160414_1941.py | 42 +- .../migrations/0018_auto_20160414_1944.py | 42 +- .../migrations/0019_auto_20160420_1749.py | 42 +- .../migrations/0020_auto_20160420_1819.py | 42 +- .../migrations/0021_auto_20160506_1303.py | 42 +- .../migrations/0022_auto_20160521_1849.py | 72 +- .../migrations/0023_auto_20160521_1919.py | 52 +- .../migrations/0024_auto_20160521_2257.py | 42 +- .../migrations/0025_auto_20160607_1614.py | 42 +- .../migrations/0026_modals_modalstack.py | 88 +- .../migrations/0027_remove_modals_date.py | 38 +- .../migrations/0028_auto_20160608_1705.py | 40 +- .../migrations/0029_auto_20160608_1804.py | 148 +- .../migrations/0030_auto_20160608_1841.py | 50 +- .../migrations/0031_auto_20160609_1429.py | 50 +- .../migrations/0032_auto_20160609_1442.py | 48 +- management/migrations/0033_modalstack_show.py | 40 +- management/migrations/0034_modals__type.py | 40 +- management/migrations/0035_modals_timer.py | 40 +- .../migrations/0036_modals_set_timer.py | 40 +- .../migrations/0037_auto_20160609_2224.py | 72 +- .../migrations/0038_auto_20160609_2322.py | 62 +- .../migrations/0039_auto_20160609_2351.py | 42 +- .../migrations/0040_auto_20160628_1731.py | 42 +- .../migrations/0041_auto_20160706_1910.py | 52 +- .../migrations/0042_auto_20160706_1914.py | 60 +- .../migrations/0043_auto_20160711_1518.py | 42 +- .../migrations/0044_auto_20160711_1714.py | 42 +- .../migrations/0045_auto_20160713_2038.py | 42 +- .../migrations/0046_auto_20160714_2015.py | 62 +- .../migrations/0047_auto_20160714_2018.py | 54 +- .../migrations/0048_auto_20160715_0104.py | 74 +- .../migrations/0049_auto_20160715_1444.py | 108 +- .../migrations/0050_auto_20160718_1715.py | 62 +- .../migrations/0051_auto_20160718_1721.py | 52 +- .../migrations/0052_auto_20160725_1348.py | 168 +- .../migrations/0053_auto_20160725_1551.py | 42 +- .../migrations/0054_auto_20160725_1551.py | 76 +- .../migrations/0055_auto_20160725_1554.py | 76 +- .../migrations/0056_auto_20160725_1601.py | 56 +- .../migrations/0057_auto_20160814_1736.py | 42 +- management/migrations/__init__.py | 0 management/models.py | 980 +- management/reports.py | 676 +- management/tools.py | 0 management/urls.py | 0 management/views.py | 0 practice/api.py | 2 +- practice/tasks.py | 22 +- practice/urls.py | 14 +- practice/views.py | 1 + service/__init__.py | 0 service/admin.py | 50 +- service/migrations/0001_initial.py | 102 +- service/migrations/0002_auto_20160523_1258.py | 62 +- service/migrations/0003_auto_20160523_1420.py | 54 +- service/migrations/0004_auto_20160523_1423.py | 64 +- service/migrations/0005_auto_20160523_1427.py | 64 +- service/migrations/0006_auto_20160523_1525.py | 42 +- service/migrations/0007_mailbox_custom.py | 40 +- service/migrations/__init__.py | 0 service/models.py | 380 +- service/tasks.py | 0 service/tools.py | 40 +- service/views.py | 6 +- static/admin/fonts/LICENSE.txt | 404 +- static/admin/js/admin/DateTimeShortcuts.js | 4 +- static/admin/js/core.js | 5 +- static/css/404.css | 720 +- static/css/animate.min.css | 10 +- static/css/app.css | 12714 +++++------ static/css/app.min.css | 44 +- static/css/aside.css | 244 +- static/css/bootstrap-datepicker.min.css | 0 .../bootstrap-datepicker.standalone.min.css | 0 static/css/bootstrap.min.css | 8 +- static/css/component.css | 0 static/css/csshake.min.css | 0 static/css/editor.scss | 0 static/css/flickity.css | 0 static/css/font-awesome.min.css | 8 +- static/css/font.css | 102 +- static/css/fonticon.scss | 0 static/css/hupercomment.css | 3 - static/css/jqiuery_dialogs.css | 232 +- static/css/jquery-ui.min.css | 0 static/css/jquery-ui.structure.min.css | 0 static/css/jquery.Jcrop.css | 340 +- static/css/jquery.fancybox.css | 546 +- static/css/kladr.min.css | 0 static/css/pie_chart.css | 76 +- static/css/simditor.css | 0 static/css/simditor.scss | 0 static/css/simple-line-icons.css | 1508 +- static/css/skill_show.css | 224 +- static/css/system_messages.css | 0 static/css/tilda-grid.css | 0 static/css/tilda_blocks.css | 5584 ++--- static/css/timeTo.css | 208 +- static/css/timer.css | 104 +- static/djcelery/style.css | 8 +- static/fonts/Exo2-Bold-demo.html | 1216 +- static/fonts/Exo2-Bold-webfont.eot | Bin static/fonts/Exo2-Bold-webfont.svg | 4778 ++-- static/fonts/Exo2-Bold-webfont.ttf | Bin static/fonts/Exo2-Bold-webfont.woff | Bin static/fonts/Exo2-Light-demo.html | 1216 +- static/fonts/Exo2-Light-webfont.eot | Bin static/fonts/Exo2-Light-webfont.svg | 4752 ++-- static/fonts/Exo2-Light-webfont.ttf | Bin static/fonts/Exo2-Light-webfont.woff | Bin static/fonts/Exo2-Regular-demo.html | 1216 +- static/fonts/Exo2-Regular-webfont.eot | Bin static/fonts/Exo2-Regular-webfont.svg | 4752 ++-- static/fonts/Exo2-Regular-webfont.ttf | Bin static/fonts/Exo2-Regular-webfont.woff | Bin static/fonts/FiraSans-Heavy.otf | Bin static/fonts/FontAwesome.otf | Bin static/fonts/Simple-Line-Icons.eot | Bin static/fonts/Simple-Line-Icons.svg | 2736 +-- static/fonts/Simple-Line-Icons.ttf | Bin static/fonts/Simple-Line-Icons.woff | Bin static/fonts/cour.ttf | Bin static/fonts/courbd.ttf | Bin static/fonts/courbi.ttf | Bin static/fonts/couri.ttf | Bin static/fonts/fontawesome-webfont.eot | Bin static/fonts/fontawesome-webfont.svg | 1038 +- static/fonts/fontawesome-webfont.ttf | Bin static/fonts/fontawesome-webfont.woff | Bin static/fonts/glyphicons-halflings-regular.eot | Bin static/fonts/glyphicons-halflings-regular.svg | 574 +- static/fonts/glyphicons-halflings-regular.ttf | Bin .../fonts/glyphicons-halflings-regular.woff | Bin .../fonts/glyphicons-halflings-regular.woff2 | Bin .../sourcesanspro/sourcesanspro-bold.woff | Bin .../sourcesanspro/sourcesanspro-light.woff | Bin static/fonts/sourcesanspro/sourcesanspro.woff | Bin static/img/1447222756_information_support.svg | 0 static/img/clippy.svg | 0 static/img/favicon.ico | Bin static/import_export/action_formats.js | 0 static/js/NTP.js | 222 +- static/js/all_comments.js | 560 +- static/js/apis/access.js | 716 +- static/js/apis/achievements.js | 110 +- static/js/apis/activation.js | 172 +- static/js/apis/comments.js | 112 +- static/js/apis/course.js | 28 +- static/js/apis/files_loader.js | 260 +- static/js/apis/image_loader.js | 572 +- static/js/apis/inputmask.min.js | 18 +- static/js/apis/jquery.inputmask.min.js | 14 +- static/js/apis/kladr.min.js | 0 static/js/apis/management.js | 0 static/js/apis/progress.js | 398 +- static/js/apis/teacher.js | 402 +- static/js/apis/teacher_exam_comments.js | 498 +- static/js/apis/teacher_homework_comments.js | 500 +- static/js/apis/teacher_lesson_comments.js | 452 +- static/js/apis/teacher_refresh.js | 72 +- static/js/articles_sort.js | 246 +- static/js/bill.js | 0 static/js/bill_request.js | 146 +- static/js/bootstrap-datepicker.js | 0 static/js/bootstrap-datepicker.min.js | 0 static/js/bootstrap-datepicker.ru.min.js | 0 static/js/bootstrap.min.js | 12 +- static/js/circle.js | 174 +- static/js/ckeditor/CHANGES.md | 2368 +- static/js/ckeditor/LICENSE.md | 2840 +-- static/js/ckeditor/build-config.js | 102 +- static/js/ckeditor/contents.css | 416 +- static/js/ckeditor/lang/en.js | 6 +- static/js/ckeditor/lang/ru.js | 6 +- static/js/ckeditor/samples/css/samples.css | 3264 +-- static/js/ckeditor/samples/index.html | 256 +- static/js/ckeditor/samples/js/sample.js | 106 +- static/js/ckeditor/samples/old/ajax.html | 170 +- static/js/ckeditor/samples/old/api.html | 420 +- static/js/ckeditor/samples/old/appendto.html | 118 +- .../old/assets/outputxhtml/outputxhtml.css | 408 +- .../samples/old/assets/posteddata.php | 118 +- .../ckeditor/samples/old/datafiltering.html | 1016 +- .../samples/old/dialog/assets/my_dialog.js | 96 +- .../ckeditor/samples/old/dialog/dialog.html | 380 +- .../js/ckeditor/samples/old/divreplace.html | 288 +- .../samples/old/enterkey/enterkey.html | 212 +- static/js/ckeditor/samples/old/index.html | 218 +- static/js/ckeditor/samples/old/inlineall.html | 628 +- .../js/ckeditor/samples/old/inlinebycode.html | 248 +- .../ckeditor/samples/old/inlinetextarea.html | 226 +- static/js/ckeditor/samples/old/jquery.html | 206 +- static/js/ckeditor/samples/old/readonly.html | 152 +- .../ckeditor/samples/old/replacebyclass.html | 120 +- .../ckeditor/samples/old/replacebycode.html | 118 +- static/js/ckeditor/samples/old/sample.css | 714 +- static/js/ckeditor/samples/old/sample.js | 100 +- .../samples/old/sample_posteddata.php | 32 +- static/js/ckeditor/samples/old/tabindex.html | 156 +- .../ckeditor/samples/old/toolbar/toolbar.html | 470 +- static/js/ckeditor/samples/old/uicolor.html | 144 +- .../js/ckeditor/samples/old/uilanguages.html | 244 +- .../samples/old/wysiwygarea/fullpage.html | 160 +- .../js/ckeditor/samples/old/xhtmlstyle.html | 468 +- .../toolbarconfigurator/css/fontello.css | 110 +- .../toolbarconfigurator/font/LICENSE.txt | 20 +- .../samples/toolbarconfigurator/index.html | 892 +- static/js/ckeditor/styles.js | 274 +- static/js/clipboard.min.js | 0 static/js/element_actions.js | 206 +- static/js/exam.js | 476 +- static/js/fancy.js | 2 +- static/js/flickity.pkgd.min.js | 0 static/js/homework.js | 490 +- static/js/hotkeys.js | 0 static/js/hotkeys.min.js | 0 static/js/isotope.pkgd.min.js | 0 static/js/jquery-ui.min.css | 0 static/js/jquery-ui.min.js | 0 static/js/jquery-ui.structure.min.css | 0 static/js/jquery.Jcrop.min.js | 42 +- static/js/jquery.easypiechart.min.js | 16 +- static/js/jquery.maskedinput.min.js | 12 +- static/js/jquery.min.js | 0 static/js/jquery.time-to.min.js | 0 static/js/lendos_bill.js | 172 +- static/js/lendos_helper.js | 84 +- static/js/lesson.js | 560 +- static/js/library.js | 934 +- static/js/modals.js | 76 +- static/js/modernizr.custom.js | 0 static/js/module.js | 0 static/js/module.min.js | 0 static/js/news.js | 42 +- static/js/pie_chart.js | 442 +- static/js/profile.js | 28 +- static/js/radarChart.js | 542 +- static/js/regex_check.js | 98 +- static/js/reports.js | 316 +- static/js/reports/process.js | 300 +- static/js/salvattore.min.js | 12 +- static/js/simditor.js | 0 static/js/simditor.min.js | 0 static/js/skill_show.js | 618 +- static/js/theater.min.js | 0 static/js/tilda-blocks.js | 110 +- static/js/tilda-scripts.js | 3288 +-- static/js/tools.js | 216 +- static/js/uploader.js | 0 static/js/uploader.min.js | 0 static/js/video_reloader.js | 32 +- static/js/wysibb/lang/de.js | 150 +- static/js/wysibb/lang/fr.js | 142 +- static/js/wysibb/lang/tr.js | 134 +- static/js/wysibb/lang/vn.js | 140 +- static/js/wysibb/preset/phpbb3.js | 302 +- .../wysibb/theme/fonts/wysibbiconfont-wb.eot | Bin 4057 -> 0 bytes .../wysibb/theme/fonts/wysibbiconfont-wb.ttf | Bin 6752 -> 0 bytes .../wysibb/theme/fonts/wysibbiconfont-wb.woff | Bin 4732 -> 0 bytes static/redactor/css/django_admin.css | 62 +- static/redactor/css/docstyle.css | 252 +- static/redactor/css/redactor.css | 1886 +- static/redactor/css/redactor.less | 2000 +- static/redactor/css/style.css | 244 +- static/redactor/css/wym.css | 276 +- static/redactor/jquery.redactor.init.js | 78 +- static/redactor/langs/ar.js | 148 +- static/redactor/langs/az.js | 146 +- static/redactor/langs/ba.js | 156 +- static/redactor/langs/bg.js | 152 +- static/redactor/langs/by.js | 150 +- static/redactor/langs/ca.js | 148 +- static/redactor/langs/cs.js | 170 +- static/redactor/langs/da.js | 148 +- static/redactor/langs/de.js | 156 +- static/redactor/langs/el.js | 150 +- static/redactor/langs/en.js | 148 +- static/redactor/langs/eo.js | 150 +- static/redactor/langs/es.js | 146 +- static/redactor/langs/es_ar.js | 150 +- static/redactor/langs/fa.js | 150 +- static/redactor/langs/fi.js | 148 +- static/redactor/langs/fr.js | 146 +- static/redactor/langs/ge.js | 148 +- static/redactor/langs/he.js | 148 +- static/redactor/langs/hr.js | 148 +- static/redactor/langs/hu.js | 152 +- static/redactor/langs/id.js | 150 +- static/redactor/langs/it.js | 154 +- static/redactor/langs/ja.js | 150 +- static/redactor/langs/ko.js | 148 +- static/redactor/langs/lt.js | 148 +- static/redactor/langs/lv.js | 146 +- static/redactor/langs/mk.js | 148 +- static/redactor/langs/nl.js | 158 +- static/redactor/langs/no_NB.js | 146 +- static/redactor/langs/pl.js | 148 +- static/redactor/langs/pt_br.js | 164 +- static/redactor/langs/pt_pt.js | 148 +- static/redactor/langs/ro.js | 150 +- static/redactor/langs/ru.js | 150 +- static/redactor/langs/sk.js | 150 +- static/redactor/langs/sl.js | 156 +- static/redactor/langs/sq.js | 156 +- static/redactor/langs/sr-cir.js | 156 +- static/redactor/langs/sr-lat.js | 156 +- static/redactor/langs/sv.js | 152 +- static/redactor/langs/th.js | 148 +- static/redactor/langs/tr.js | 150 +- static/redactor/langs/ua.js | 150 +- static/redactor/langs/vi.js | 148 +- static/redactor/langs/zh_cn.js | 150 +- static/redactor/langs/zh_tw.js | 148 +- static/redactor/redactor.js | 18898 ++++++++-------- static/redactor/redactor.min.js | 22 +- static/redactor/toolbars/default.js | 426 +- static/redactor/toolbars/mini.js | 204 +- static/video/404.ogv | Bin static/video/404.webm | Bin static/video/500.ogv | Bin static/video/500.webm | Bin storage/__init__.py | 0 storage/admin.py | 46 +- storage/files_api.py | 484 +- storage/migrations/0001_initial.py | 142 +- storage/migrations/__init__.py | 0 storage/models.py | 0 storage/urls.py | 26 +- templates/404.html | 558 +- templates/500.html | 580 +- templates/access_error.html | 146 +- templates/activation.html | 730 +- templates/admin_profile.html | 280 +- templates/all_actions.html | 68 +- templates/all_articles.html | 232 +- templates/all_comments.html | 486 +- templates/articles.html | 238 +- templates/auth_error.html | 68 +- templates/auth_modals.html | 1248 +- templates/base_index.html | 0 templates/by_error.html | 68 +- templates/comment_one.html | 31 +- templates/contacts.html | 84 +- templates/course.html | 657 +- templates/everyone_modals.html | 330 +- templates/exam.html | 664 +- templates/fail_pay.html | 368 +- templates/faq.html | 220 +- templates/faq_one.html | 48 +- templates/freeweek_more.html | 110 +- templates/good_pay.html | 368 +- templates/homework.html | 670 +- templates/index.html | 0 templates/index_menu.html | 270 +- templates/lesson.html | 494 +- templates/mails/sent_order.html | 2 +- templates/manager_account.html | 202 +- templates/manager_history.html | 0 templates/manager_profile.html | 270 +- templates/manager_servicerequest.html | 590 +- templates/menu.html | 92 +- templates/new_reports.html | 138 +- templates/news_one.html | 132 +- templates/no_auth_modals.html | 525 +- templates/profile.html | 882 +- templates/progress_report.html | 170 +- templates/reports.html | 108 +- templates/reports/base_index.html | 444 +- templates/reports/bills.html | 162 +- templates/reports/freeweek.html | 298 +- templates/reports/hw_process_pp.html | 234 +- templates/reports/hw_process_pt.html | 278 +- templates/reports/mails.html | 224 +- templates/reports/menu.html | 92 +- templates/reports/progress.html | 208 +- templates/self_bill_result.html | 144 +- templates/selfbill.html | 156 +- templates/simplepayresult.xml | 16 +- templates/student_matrix.html | 68 +- templates/super_history.html | 0 templates/super_profile.html | 360 +- templates/super_servicerequest.html | 688 +- templates/teach_profile.html | 488 +- templates/teacher_comments.html | 474 +- templates/teacher_exams.html | 230 +- templates/teacher_homeworks.html | 230 +- templates/teacher_materials.html | 362 +- templates/test.html | 0 templates/traffic_map.html | 122 +- templates/wallet.html | 220 +- templates/workshop_exam.html | 402 +- templates/workshop_homework.html | 406 +- templates/zendesk.html | 58 +- 655 files changed, 79008 insertions(+), 78997 deletions(-) mode change 100755 => 100644 access/__init__.py mode change 100755 => 100644 access/admin.py mode change 100755 => 100644 access/api.py mode change 100755 => 100644 access/forms.py mode change 100755 => 100644 access/migrations/0001_initial.py mode change 100755 => 100644 access/migrations/0002_auto_20160405_2045.py mode change 100755 => 100644 access/migrations/0003_user_delay.py mode change 100755 => 100644 access/migrations/0004_auto_20160412_2152.py mode change 100755 => 100644 access/migrations/0005_auto_20160414_1527.py mode change 100755 => 100644 access/migrations/0006_user_delay_date.py mode change 100755 => 100644 access/migrations/0007_auto_20160414_1543.py mode change 100755 => 100644 access/migrations/0008_auto_20160414_1547.py mode change 100755 => 100644 access/migrations/0009_auto_20160414_1941.py mode change 100755 => 100644 access/migrations/0010_auto_20160414_1944.py mode change 100755 => 100644 access/migrations/0011_auto_20160420_1749.py mode change 100755 => 100644 access/migrations/0012_auto_20160420_1819.py mode change 100755 => 100644 access/migrations/0013_auto_20160421_1808.py mode change 100755 => 100644 access/migrations/0014_auto_20160421_1824.py mode change 100755 => 100644 access/migrations/0015_auto_20160421_1829.py mode change 100755 => 100644 access/migrations/0016_auto_20160421_2009.py mode change 100755 => 100644 access/migrations/0017_auto_20160421_2135.py mode change 100755 => 100644 access/migrations/0018_auto_20160422_1555.py mode change 100755 => 100644 access/migrations/0019_auto_20160424_1646.py mode change 100755 => 100644 access/migrations/0020_auto_20160506_1303.py mode change 100755 => 100644 access/migrations/0021_auto_20160509_1331.py mode change 100755 => 100644 access/migrations/0022_auto_20160509_1401.py mode change 100755 => 100644 access/migrations/0023_auto_20160509_1408.py mode change 100755 => 100644 access/migrations/0024_auto_20160509_1537.py mode change 100755 => 100644 access/migrations/0025_auto_20160509_1539.py mode change 100755 => 100644 access/migrations/0026_auto_20160509_1803.py mode change 100755 => 100644 access/migrations/0027_auto_20160510_1823.py mode change 100755 => 100644 access/migrations/0028_auto_20160526_1427.py mode change 100755 => 100644 access/migrations/0029_auto_20160526_1435.py mode change 100755 => 100644 access/migrations/0030_auto_20160526_1727.py mode change 100755 => 100644 access/migrations/0031_auto_20160531_1240.py mode change 100755 => 100644 access/migrations/0032_auto_20160601_1256.py mode change 100755 => 100644 access/migrations/0033_auto_20160607_1614.py mode change 100755 => 100644 access/migrations/0034_auto_20160607_2002.py mode change 100755 => 100644 access/migrations/0035_auto_20160607_2034.py mode change 100755 => 100644 access/migrations/0036_auto_20160607_2051.py mode change 100755 => 100644 access/migrations/0037_auto_20160608_1700.py mode change 100755 => 100644 access/migrations/0038_auto_20160608_1705.py mode change 100755 => 100644 access/migrations/0039_auto_20160608_1804.py mode change 100755 => 100644 access/migrations/0040_auto_20160608_1841.py mode change 100755 => 100644 access/migrations/0041_auto_20160609_1429.py mode change 100755 => 100644 access/migrations/0042_auto_20160609_1442.py mode change 100755 => 100644 access/migrations/0043_auto_20160609_1534.py mode change 100755 => 100644 access/migrations/0044_auto_20160609_1536.py mode change 100755 => 100644 access/migrations/0045_auto_20160609_1536.py mode change 100755 => 100644 access/migrations/0046_auto_20160609_1546.py mode change 100755 => 100644 access/migrations/0047_auto_20160609_1627.py mode change 100755 => 100644 access/migrations/0048_auto_20160609_2224.py mode change 100755 => 100644 access/migrations/0049_auto_20160628_1731.py mode change 100755 => 100644 access/migrations/0050_auto_20160711_1518.py mode change 100755 => 100644 access/migrations/0051_auto_20160713_2038.py mode change 100755 => 100644 access/migrations/0052_auto_20160718_1714.py mode change 100755 => 100644 access/migrations/0053_auto_20160718_1714.py mode change 100755 => 100644 access/migrations/0054_auto_20160725_1551.py mode change 100755 => 100644 access/migrations/0055_auto_20160809_1653.py mode change 100755 => 100644 access/migrations/0056_auto_20160809_1659.py mode change 100755 => 100644 access/migrations/0057_auto_20160810_1234.py mode change 100755 => 100644 access/migrations/0058_auto_20160814_1736.py mode change 100755 => 100644 access/migrations/0059_auto_20160815_1853.py mode change 100755 => 100644 access/migrations/0060_auto_20160815_1855.py mode change 100755 => 100644 access/migrations/__init__.py mode change 100755 => 100644 access/models.py mode change 100755 => 100644 access/out_api.py mode change 100755 => 100644 access/tasks.py mode change 100755 => 100644 access/teach_urls.py mode change 100755 => 100644 access/teach_views.py mode change 100755 => 100644 access/urls.py mode change 100755 => 100644 access/views.py mode change 100755 => 100644 courses/__init__.py mode change 100755 => 100644 courses/admin.py mode change 100755 => 100644 courses/api.py mode change 100755 => 100644 courses/migrations/0001_initial.py mode change 100755 => 100644 courses/migrations/0002_achievementsmap.py mode change 100755 => 100644 courses/migrations/0003_auto_20160322_1852.py mode change 100755 => 100644 courses/migrations/0004_lesson_video_id.py mode change 100755 => 100644 courses/migrations/0005_auto_20160331_2030.py mode change 100755 => 100644 courses/migrations/0006_auto_20160407_2006.py mode change 100755 => 100644 courses/migrations/0007_lesson_video_date.py mode change 100755 => 100644 courses/migrations/0008_coursetheme_block.py mode change 100755 => 100644 courses/migrations/0009_remove_coursetheme_block.py mode change 100755 => 100644 courses/migrations/0010_remove_coursetheme_empty_description.py mode change 100755 => 100644 courses/migrations/0011_auto_20160425_1550.py mode change 100755 => 100644 courses/migrations/0012_course_diploma_key.py mode change 100755 => 100644 courses/migrations/0013_auto_20160425_1720.py mode change 100755 => 100644 courses/migrations/0014_diploma.py mode change 100755 => 100644 courses/migrations/0015_auto_20160425_1750.py mode change 100755 => 100644 courses/migrations/0016_auto_20160425_1752.py mode change 100755 => 100644 courses/migrations/0017_auto_20160426_1240.py mode change 100755 => 100644 courses/migrations/0018_remove_exam_icon.py mode change 100755 => 100644 courses/migrations/0019_remove_exam_title.py mode change 100755 => 100644 courses/migrations/0020_auto_20160426_1243.py mode change 100755 => 100644 courses/migrations/0021_auto_20160426_1447.py mode change 100755 => 100644 courses/migrations/0022_auto_20160426_1526.py mode change 100755 => 100644 courses/migrations/0023_auto_20160426_1729.py mode change 100755 => 100644 courses/migrations/0024_auto_20160505_1748.py mode change 100755 => 100644 courses/migrations/0025_auto_20160506_1303.py mode change 100755 => 100644 courses/migrations/0026_auto_20160506_1838.py mode change 100755 => 100644 courses/migrations/__init__.py mode change 100755 => 100644 courses/models.py mode change 100755 => 100644 courses/templates.py mode change 100755 => 100644 courses/tools.py mode change 100755 => 100644 courses/urls.py mode change 100755 => 100644 courses/views.py mode change 100755 => 100644 finance/__init__.py mode change 100755 => 100644 finance/admin.py mode change 100755 => 100644 finance/api.py mode change 100755 => 100644 finance/migrations/0001_initial.py mode change 100755 => 100644 finance/migrations/0002_bill_description.py mode change 100755 => 100644 finance/migrations/0003_selfbillrequest_company.py mode change 100755 => 100644 finance/migrations/0004_auto_20160414_1700.py mode change 100755 => 100644 finance/migrations/0005_selfbilldesign.py mode change 100755 => 100644 finance/migrations/0006_auto_20160414_1930.py mode change 100755 => 100644 finance/migrations/0007_auto_20160414_1941.py mode change 100755 => 100644 finance/migrations/0008_selfbilldesign_users.py mode change 100755 => 100644 finance/migrations/0009_selfbillhistory_new_sent.py mode change 100755 => 100644 finance/migrations/0010_selfbilldesign_pay_id.py mode change 100755 => 100644 finance/migrations/0011_auto_20160505_1748.py mode change 100755 => 100644 finance/migrations/0012_auto_20160505_2009.py mode change 100755 => 100644 finance/migrations/0013_auto_20160505_2035.py mode change 100755 => 100644 finance/migrations/0014_auto_20160506_1303.py mode change 100755 => 100644 finance/migrations/0015_price_key.py mode change 100755 => 100644 finance/migrations/0016_auto_20160524_1255.py mode change 100755 => 100644 finance/migrations/0017_remove_price_flex.py mode change 100755 => 100644 finance/migrations/0018_auto_20160531_1256.py mode change 100755 => 100644 finance/migrations/0019_price_url.py mode change 100755 => 100644 finance/migrations/0020_auto_20160531_1303.py mode change 100755 => 100644 finance/migrations/0021_auto_20160601_1309.py mode change 100755 => 100644 finance/migrations/0022_auto_20160601_1320.py mode change 100755 => 100644 finance/migrations/0023_bill_source_key.py mode change 100755 => 100644 finance/migrations/0024_auto_20160607_2002.py mode change 100755 => 100644 finance/migrations/0025_auto_20160607_2034.py mode change 100755 => 100644 finance/migrations/0026_servicerequest__type.py mode change 100755 => 100644 finance/migrations/0027_price_modals.py mode change 100755 => 100644 finance/migrations/0028_auto_20160610_0003.py mode change 100755 => 100644 finance/migrations/0029_bill_modals_show.py mode change 100755 => 100644 finance/migrations/0030_bill_admitad_uid.py mode change 100755 => 100644 finance/migrations/0031_auto_20160727_1453.py mode change 100755 => 100644 finance/migrations/__init__.py mode change 100755 => 100644 finance/models.py mode change 100755 => 100644 finance/pay.py mode change 100755 => 100644 finance/tasks.py mode change 100755 => 100644 finance/tools.py mode change 100755 => 100644 finance/urls.py mode change 100755 => 100644 finance/views.py mode change 100755 => 100644 journals/__init__.py mode change 100755 => 100644 journals/admin.py mode change 100755 => 100644 journals/api.py mode change 100755 => 100644 journals/migrations/0001_initial.py mode change 100755 => 100644 journals/migrations/0002_auto_20160318_1909.py mode change 100755 => 100644 journals/migrations/0003_auto_20160322_1359.py mode change 100755 => 100644 journals/migrations/0004_teacherj_opens.py mode change 100755 => 100644 journals/migrations/0005_auto_20160329_1930.py mode change 100755 => 100644 journals/migrations/0006_auto_20160331_2030.py mode change 100755 => 100644 journals/migrations/0007_auto_20160405_2045.py mode change 100755 => 100644 journals/migrations/0008_auto_20160407_1741.py mode change 100755 => 100644 journals/migrations/0009_auto_20160407_2006.py mode change 100755 => 100644 journals/migrations/0010_auto_20160413_0207.py mode change 100755 => 100644 journals/migrations/0011_auto_20160413_0214.py mode change 100755 => 100644 journals/migrations/0012_auto_20160413_0215.py mode change 100755 => 100644 journals/migrations/0013_auto_20160414_1652.py mode change 100755 => 100644 journals/migrations/0014_auto_20160414_1941.py mode change 100755 => 100644 journals/migrations/0015_auto_20160414_1944.py mode change 100755 => 100644 journals/migrations/0016_auto_20160419_1109.py mode change 100755 => 100644 journals/migrations/0017_auto_20160419_1426.py mode change 100755 => 100644 journals/migrations/0018_auto_20160420_1749.py mode change 100755 => 100644 journals/migrations/0019_auto_20160420_1819.py mode change 100755 => 100644 journals/migrations/0020_auto_20160425_1656.py mode change 100755 => 100644 journals/migrations/0021_auto_20160425_1737.py mode change 100755 => 100644 journals/migrations/0022_auto_20160426_1119.py mode change 100755 => 100644 journals/migrations/0023_auto_20160426_1240.py mode change 100755 => 100644 journals/migrations/0024_auto_20160426_1340.py mode change 100755 => 100644 journals/migrations/0025_auto_20160426_1342.py mode change 100755 => 100644 journals/migrations/0026_auto_20160426_1711.py mode change 100755 => 100644 journals/migrations/0027_auto_20160428_1531.py mode change 100755 => 100644 journals/migrations/0028_auto_20160428_1554.py mode change 100755 => 100644 journals/migrations/0029_auto_20160428_1556.py mode change 100755 => 100644 journals/migrations/0030_auto_20160428_1633.py mode change 100755 => 100644 journals/migrations/0031_auto_20160506_1303.py mode change 100755 => 100644 journals/migrations/0032_auto_20160530_0820.py mode change 100755 => 100644 journals/migrations/0033_auto_20160530_1320.py mode change 100755 => 100644 journals/migrations/0034_auto_20160530_1405.py mode change 100755 => 100644 journals/migrations/0035_auto_20160607_1613.py mode change 100755 => 100644 journals/migrations/0036_auto_20160607_1614.py mode change 100755 => 100644 journals/migrations/0037_auto_20160607_2002.py mode change 100755 => 100644 journals/migrations/0038_auto_20160607_2034.py mode change 100755 => 100644 journals/migrations/0039_auto_20160607_2051.py mode change 100755 => 100644 journals/migrations/0040_auto_20160608_1700.py mode change 100755 => 100644 journals/migrations/0041_auto_20160608_1705.py mode change 100755 => 100644 journals/migrations/0042_auto_20160608_1804.py mode change 100755 => 100644 journals/migrations/0043_auto_20160608_1841.py mode change 100755 => 100644 journals/migrations/0044_auto_20160609_1429.py mode change 100755 => 100644 journals/migrations/0045_auto_20160609_1442.py mode change 100755 => 100644 journals/migrations/0046_auto_20160609_1534.py mode change 100755 => 100644 journals/migrations/0047_auto_20160609_1536.py mode change 100755 => 100644 journals/migrations/0048_auto_20160609_1536.py mode change 100755 => 100644 journals/migrations/0049_auto_20160609_1546.py mode change 100755 => 100644 journals/migrations/0050_auto_20160609_1627.py mode change 100755 => 100644 journals/migrations/0051_auto_20160609_2224.py mode change 100755 => 100644 journals/migrations/0052_auto_20160628_1731.py mode change 100755 => 100644 journals/migrations/0053_auto_20160711_1518.py mode change 100755 => 100644 journals/migrations/0054_auto_20160713_2038.py mode change 100755 => 100644 journals/migrations/0055_auto_20160729_1215.py mode change 100755 => 100644 journals/migrations/0056_auto_20160729_1308.py mode change 100755 => 100644 journals/migrations/0057_auto_20160814_1736.py mode change 100755 => 100644 journals/migrations/__init__.py mode change 100755 => 100644 journals/models.py mode change 100755 => 100644 journals/tasks.py mode change 100755 => 100644 journals/urls.py mode change 100755 => 100644 library/__init__.py mode change 100755 => 100644 library/admin.py mode change 100755 => 100644 library/api.py mode change 100755 => 100644 library/models.py mode change 100755 => 100644 library/urls.py mode change 100755 => 100644 library/views.py mode change 100755 => 100644 manage.py mode change 100755 => 100644 management/__init__.py mode change 100755 => 100644 management/admin.py mode change 100755 => 100644 management/api.py mode change 100755 => 100644 management/comments.py mode change 100755 => 100644 management/letters.py mode change 100755 => 100644 management/mails.py mode change 100755 => 100644 management/migrations/0001_initial.py mode change 100755 => 100644 management/migrations/0002_sms.py mode change 100755 => 100644 management/migrations/0003_sms_date.py mode change 100755 => 100644 management/migrations/0004_auto_20160331_2017.py mode change 100755 => 100644 management/migrations/0005_auto_20160331_2017.py mode change 100755 => 100644 management/migrations/0006_auto_20160331_2030.py mode change 100755 => 100644 management/migrations/0007_auto_20160405_2045.py mode change 100755 => 100644 management/migrations/0008_auto_20160407_1741.py mode change 100755 => 100644 management/migrations/0009_auto_20160407_2006.py mode change 100755 => 100644 management/migrations/0010_auto_20160412_1529.py mode change 100755 => 100644 management/migrations/0011_auto_20160412_1943.py mode change 100755 => 100644 management/migrations/0012_auto_20160412_1946.py mode change 100755 => 100644 management/migrations/0013_auto_20160412_1956.py mode change 100755 => 100644 management/migrations/0014_auto_20160412_2003.py mode change 100755 => 100644 management/migrations/0015_auto_20160412_2004.py mode change 100755 => 100644 management/migrations/0016_auto_20160412_2145.py mode change 100755 => 100644 management/migrations/0017_auto_20160414_1941.py mode change 100755 => 100644 management/migrations/0018_auto_20160414_1944.py mode change 100755 => 100644 management/migrations/0019_auto_20160420_1749.py mode change 100755 => 100644 management/migrations/0020_auto_20160420_1819.py mode change 100755 => 100644 management/migrations/0021_auto_20160506_1303.py mode change 100755 => 100644 management/migrations/0022_auto_20160521_1849.py mode change 100755 => 100644 management/migrations/0023_auto_20160521_1919.py mode change 100755 => 100644 management/migrations/0024_auto_20160521_2257.py mode change 100755 => 100644 management/migrations/0025_auto_20160607_1614.py mode change 100755 => 100644 management/migrations/0026_modals_modalstack.py mode change 100755 => 100644 management/migrations/0027_remove_modals_date.py mode change 100755 => 100644 management/migrations/0028_auto_20160608_1705.py mode change 100755 => 100644 management/migrations/0029_auto_20160608_1804.py mode change 100755 => 100644 management/migrations/0030_auto_20160608_1841.py mode change 100755 => 100644 management/migrations/0031_auto_20160609_1429.py mode change 100755 => 100644 management/migrations/0032_auto_20160609_1442.py mode change 100755 => 100644 management/migrations/0033_modalstack_show.py mode change 100755 => 100644 management/migrations/0034_modals__type.py mode change 100755 => 100644 management/migrations/0035_modals_timer.py mode change 100755 => 100644 management/migrations/0036_modals_set_timer.py mode change 100755 => 100644 management/migrations/0037_auto_20160609_2224.py mode change 100755 => 100644 management/migrations/0038_auto_20160609_2322.py mode change 100755 => 100644 management/migrations/0039_auto_20160609_2351.py mode change 100755 => 100644 management/migrations/0040_auto_20160628_1731.py mode change 100755 => 100644 management/migrations/0041_auto_20160706_1910.py mode change 100755 => 100644 management/migrations/0042_auto_20160706_1914.py mode change 100755 => 100644 management/migrations/0043_auto_20160711_1518.py mode change 100755 => 100644 management/migrations/0044_auto_20160711_1714.py mode change 100755 => 100644 management/migrations/0045_auto_20160713_2038.py mode change 100755 => 100644 management/migrations/0046_auto_20160714_2015.py mode change 100755 => 100644 management/migrations/0047_auto_20160714_2018.py mode change 100755 => 100644 management/migrations/0048_auto_20160715_0104.py mode change 100755 => 100644 management/migrations/0049_auto_20160715_1444.py mode change 100755 => 100644 management/migrations/0050_auto_20160718_1715.py mode change 100755 => 100644 management/migrations/0051_auto_20160718_1721.py mode change 100755 => 100644 management/migrations/0052_auto_20160725_1348.py mode change 100755 => 100644 management/migrations/0053_auto_20160725_1551.py mode change 100755 => 100644 management/migrations/0054_auto_20160725_1551.py mode change 100755 => 100644 management/migrations/0055_auto_20160725_1554.py mode change 100755 => 100644 management/migrations/0056_auto_20160725_1601.py mode change 100755 => 100644 management/migrations/0057_auto_20160814_1736.py mode change 100755 => 100644 management/migrations/__init__.py mode change 100755 => 100644 management/models.py mode change 100755 => 100644 management/reports.py mode change 100755 => 100644 management/tools.py mode change 100755 => 100644 management/urls.py mode change 100755 => 100644 management/views.py mode change 100755 => 100644 service/__init__.py mode change 100755 => 100644 service/admin.py mode change 100755 => 100644 service/migrations/0001_initial.py mode change 100755 => 100644 service/migrations/0002_auto_20160523_1258.py mode change 100755 => 100644 service/migrations/0003_auto_20160523_1420.py mode change 100755 => 100644 service/migrations/0004_auto_20160523_1423.py mode change 100755 => 100644 service/migrations/0005_auto_20160523_1427.py mode change 100755 => 100644 service/migrations/0006_auto_20160523_1525.py mode change 100755 => 100644 service/migrations/0007_mailbox_custom.py mode change 100755 => 100644 service/migrations/__init__.py mode change 100755 => 100644 service/models.py mode change 100755 => 100644 service/tasks.py mode change 100755 => 100644 service/tools.py mode change 100755 => 100644 service/views.py mode change 100755 => 100644 static/css/404.css mode change 100755 => 100644 static/css/animate.min.css mode change 100755 => 100644 static/css/app.css mode change 100755 => 100644 static/css/app.min.css mode change 100755 => 100644 static/css/aside.css mode change 100755 => 100644 static/css/bootstrap-datepicker.min.css mode change 100755 => 100644 static/css/bootstrap-datepicker.standalone.min.css mode change 100755 => 100644 static/css/bootstrap.min.css mode change 100755 => 100644 static/css/component.css mode change 100755 => 100644 static/css/csshake.min.css mode change 100755 => 100644 static/css/editor.scss mode change 100755 => 100644 static/css/flickity.css mode change 100755 => 100644 static/css/font-awesome.min.css mode change 100755 => 100644 static/css/font.css mode change 100755 => 100644 static/css/fonticon.scss mode change 100755 => 100644 static/css/jqiuery_dialogs.css mode change 100755 => 100644 static/css/jquery-ui.min.css mode change 100755 => 100644 static/css/jquery-ui.structure.min.css mode change 100755 => 100644 static/css/jquery.Jcrop.css mode change 100755 => 100644 static/css/jquery.fancybox.css mode change 100755 => 100644 static/css/kladr.min.css mode change 100755 => 100644 static/css/pie_chart.css mode change 100755 => 100644 static/css/simditor.css mode change 100755 => 100644 static/css/simditor.scss mode change 100755 => 100644 static/css/simple-line-icons.css mode change 100755 => 100644 static/css/skill_show.css mode change 100755 => 100644 static/css/system_messages.css mode change 100755 => 100644 static/css/tilda-grid.css mode change 100755 => 100644 static/css/tilda_blocks.css mode change 100755 => 100644 static/css/timeTo.css mode change 100755 => 100644 static/css/timer.css mode change 100755 => 100644 static/djcelery/style.css mode change 100755 => 100644 static/fonts/Exo2-Bold-demo.html mode change 100755 => 100644 static/fonts/Exo2-Bold-webfont.eot mode change 100755 => 100644 static/fonts/Exo2-Bold-webfont.svg mode change 100755 => 100644 static/fonts/Exo2-Bold-webfont.ttf mode change 100755 => 100644 static/fonts/Exo2-Bold-webfont.woff mode change 100755 => 100644 static/fonts/Exo2-Light-demo.html mode change 100755 => 100644 static/fonts/Exo2-Light-webfont.eot mode change 100755 => 100644 static/fonts/Exo2-Light-webfont.svg mode change 100755 => 100644 static/fonts/Exo2-Light-webfont.ttf mode change 100755 => 100644 static/fonts/Exo2-Light-webfont.woff mode change 100755 => 100644 static/fonts/Exo2-Regular-demo.html mode change 100755 => 100644 static/fonts/Exo2-Regular-webfont.eot mode change 100755 => 100644 static/fonts/Exo2-Regular-webfont.svg mode change 100755 => 100644 static/fonts/Exo2-Regular-webfont.ttf mode change 100755 => 100644 static/fonts/Exo2-Regular-webfont.woff mode change 100755 => 100644 static/fonts/FiraSans-Heavy.otf mode change 100755 => 100644 static/fonts/FontAwesome.otf mode change 100755 => 100644 static/fonts/Simple-Line-Icons.eot mode change 100755 => 100644 static/fonts/Simple-Line-Icons.svg mode change 100755 => 100644 static/fonts/Simple-Line-Icons.ttf mode change 100755 => 100644 static/fonts/Simple-Line-Icons.woff mode change 100755 => 100644 static/fonts/cour.ttf mode change 100755 => 100644 static/fonts/courbd.ttf mode change 100755 => 100644 static/fonts/courbi.ttf mode change 100755 => 100644 static/fonts/couri.ttf mode change 100755 => 100644 static/fonts/fontawesome-webfont.eot mode change 100755 => 100644 static/fonts/fontawesome-webfont.svg mode change 100755 => 100644 static/fonts/fontawesome-webfont.ttf mode change 100755 => 100644 static/fonts/fontawesome-webfont.woff mode change 100755 => 100644 static/fonts/glyphicons-halflings-regular.eot mode change 100755 => 100644 static/fonts/glyphicons-halflings-regular.svg mode change 100755 => 100644 static/fonts/glyphicons-halflings-regular.ttf mode change 100755 => 100644 static/fonts/glyphicons-halflings-regular.woff mode change 100755 => 100644 static/fonts/glyphicons-halflings-regular.woff2 mode change 100755 => 100644 static/fonts/sourcesanspro/sourcesanspro-bold.woff mode change 100755 => 100644 static/fonts/sourcesanspro/sourcesanspro-light.woff mode change 100755 => 100644 static/fonts/sourcesanspro/sourcesanspro.woff mode change 100755 => 100644 static/img/1447222756_information_support.svg mode change 100755 => 100644 static/img/clippy.svg mode change 100755 => 100644 static/img/favicon.ico mode change 100755 => 100644 static/import_export/action_formats.js mode change 100755 => 100644 static/js/NTP.js mode change 100755 => 100644 static/js/all_comments.js mode change 100755 => 100644 static/js/apis/access.js mode change 100755 => 100644 static/js/apis/achievements.js mode change 100755 => 100644 static/js/apis/activation.js mode change 100755 => 100644 static/js/apis/comments.js mode change 100755 => 100644 static/js/apis/course.js mode change 100755 => 100644 static/js/apis/files_loader.js mode change 100755 => 100644 static/js/apis/image_loader.js mode change 100755 => 100644 static/js/apis/inputmask.min.js mode change 100755 => 100644 static/js/apis/jquery.inputmask.min.js mode change 100755 => 100644 static/js/apis/kladr.min.js mode change 100755 => 100644 static/js/apis/management.js mode change 100755 => 100644 static/js/apis/progress.js mode change 100755 => 100644 static/js/apis/teacher.js mode change 100755 => 100644 static/js/apis/teacher_exam_comments.js mode change 100755 => 100644 static/js/apis/teacher_homework_comments.js mode change 100755 => 100644 static/js/apis/teacher_lesson_comments.js mode change 100755 => 100644 static/js/apis/teacher_refresh.js mode change 100755 => 100644 static/js/articles_sort.js mode change 100755 => 100644 static/js/bill.js mode change 100755 => 100644 static/js/bill_request.js mode change 100755 => 100644 static/js/bootstrap-datepicker.js mode change 100755 => 100644 static/js/bootstrap-datepicker.min.js mode change 100755 => 100644 static/js/bootstrap-datepicker.ru.min.js mode change 100755 => 100644 static/js/bootstrap.min.js mode change 100755 => 100644 static/js/circle.js mode change 100755 => 100644 static/js/clipboard.min.js mode change 100755 => 100644 static/js/element_actions.js mode change 100755 => 100644 static/js/exam.js mode change 100755 => 100644 static/js/fancy.js mode change 100755 => 100644 static/js/flickity.pkgd.min.js mode change 100755 => 100644 static/js/homework.js mode change 100755 => 100644 static/js/hotkeys.js mode change 100755 => 100644 static/js/hotkeys.min.js mode change 100755 => 100644 static/js/isotope.pkgd.min.js mode change 100755 => 100644 static/js/jquery-ui.min.css mode change 100755 => 100644 static/js/jquery-ui.min.js mode change 100755 => 100644 static/js/jquery-ui.structure.min.css mode change 100755 => 100644 static/js/jquery.Jcrop.min.js mode change 100755 => 100644 static/js/jquery.easypiechart.min.js mode change 100755 => 100644 static/js/jquery.maskedinput.min.js mode change 100755 => 100644 static/js/jquery.min.js mode change 100755 => 100644 static/js/jquery.time-to.min.js mode change 100755 => 100644 static/js/lendos_bill.js mode change 100755 => 100644 static/js/lendos_helper.js mode change 100755 => 100644 static/js/lesson.js mode change 100755 => 100644 static/js/library.js mode change 100755 => 100644 static/js/modals.js mode change 100755 => 100644 static/js/modernizr.custom.js mode change 100755 => 100644 static/js/module.js mode change 100755 => 100644 static/js/module.min.js mode change 100755 => 100644 static/js/news.js mode change 100755 => 100644 static/js/pie_chart.js mode change 100755 => 100644 static/js/profile.js mode change 100755 => 100644 static/js/radarChart.js mode change 100755 => 100644 static/js/regex_check.js mode change 100755 => 100644 static/js/reports.js mode change 100755 => 100644 static/js/reports/process.js mode change 100755 => 100644 static/js/salvattore.min.js mode change 100755 => 100644 static/js/simditor.js mode change 100755 => 100644 static/js/simditor.min.js mode change 100755 => 100644 static/js/skill_show.js mode change 100755 => 100644 static/js/theater.min.js mode change 100755 => 100644 static/js/tilda-blocks.js mode change 100755 => 100644 static/js/tilda-scripts.js mode change 100755 => 100644 static/js/tools.js mode change 100755 => 100644 static/js/uploader.js mode change 100755 => 100644 static/js/uploader.min.js mode change 100755 => 100644 static/js/video_reloader.js mode change 100755 => 100644 static/redactor/css/django_admin.css mode change 100755 => 100644 static/redactor/css/docstyle.css mode change 100755 => 100644 static/redactor/css/redactor.css mode change 100755 => 100644 static/redactor/css/redactor.less mode change 100755 => 100644 static/redactor/css/style.css mode change 100755 => 100644 static/redactor/css/wym.css mode change 100755 => 100644 static/redactor/jquery.redactor.init.js mode change 100755 => 100644 static/redactor/langs/ar.js mode change 100755 => 100644 static/redactor/langs/az.js mode change 100755 => 100644 static/redactor/langs/ba.js mode change 100755 => 100644 static/redactor/langs/bg.js mode change 100755 => 100644 static/redactor/langs/by.js mode change 100755 => 100644 static/redactor/langs/ca.js mode change 100755 => 100644 static/redactor/langs/cs.js mode change 100755 => 100644 static/redactor/langs/da.js mode change 100755 => 100644 static/redactor/langs/de.js mode change 100755 => 100644 static/redactor/langs/el.js mode change 100755 => 100644 static/redactor/langs/en.js mode change 100755 => 100644 static/redactor/langs/eo.js mode change 100755 => 100644 static/redactor/langs/es.js mode change 100755 => 100644 static/redactor/langs/es_ar.js mode change 100755 => 100644 static/redactor/langs/fa.js mode change 100755 => 100644 static/redactor/langs/fi.js mode change 100755 => 100644 static/redactor/langs/fr.js mode change 100755 => 100644 static/redactor/langs/ge.js mode change 100755 => 100644 static/redactor/langs/he.js mode change 100755 => 100644 static/redactor/langs/hr.js mode change 100755 => 100644 static/redactor/langs/hu.js mode change 100755 => 100644 static/redactor/langs/id.js mode change 100755 => 100644 static/redactor/langs/it.js mode change 100755 => 100644 static/redactor/langs/ja.js mode change 100755 => 100644 static/redactor/langs/ko.js mode change 100755 => 100644 static/redactor/langs/lt.js mode change 100755 => 100644 static/redactor/langs/lv.js mode change 100755 => 100644 static/redactor/langs/mk.js mode change 100755 => 100644 static/redactor/langs/nl.js mode change 100755 => 100644 static/redactor/langs/no_NB.js mode change 100755 => 100644 static/redactor/langs/pl.js mode change 100755 => 100644 static/redactor/langs/pt_br.js mode change 100755 => 100644 static/redactor/langs/pt_pt.js mode change 100755 => 100644 static/redactor/langs/ro.js mode change 100755 => 100644 static/redactor/langs/ru.js mode change 100755 => 100644 static/redactor/langs/sk.js mode change 100755 => 100644 static/redactor/langs/sl.js mode change 100755 => 100644 static/redactor/langs/sq.js mode change 100755 => 100644 static/redactor/langs/sr-cir.js mode change 100755 => 100644 static/redactor/langs/sr-lat.js mode change 100755 => 100644 static/redactor/langs/sv.js mode change 100755 => 100644 static/redactor/langs/th.js mode change 100755 => 100644 static/redactor/langs/tr.js mode change 100755 => 100644 static/redactor/langs/ua.js mode change 100755 => 100644 static/redactor/langs/vi.js mode change 100755 => 100644 static/redactor/langs/zh_cn.js mode change 100755 => 100644 static/redactor/langs/zh_tw.js mode change 100755 => 100644 static/redactor/redactor.js mode change 100755 => 100644 static/redactor/redactor.min.js mode change 100755 => 100644 static/redactor/toolbars/default.js mode change 100755 => 100644 static/redactor/toolbars/mini.js mode change 100755 => 100644 static/video/404.ogv mode change 100755 => 100644 static/video/404.webm mode change 100755 => 100644 static/video/500.ogv mode change 100755 => 100644 static/video/500.webm mode change 100755 => 100644 storage/__init__.py mode change 100755 => 100644 storage/admin.py mode change 100755 => 100644 storage/files_api.py mode change 100755 => 100644 storage/migrations/0001_initial.py mode change 100755 => 100644 storage/migrations/__init__.py mode change 100755 => 100644 storage/models.py mode change 100755 => 100644 storage/urls.py mode change 100755 => 100644 templates/404.html mode change 100755 => 100644 templates/500.html mode change 100755 => 100644 templates/access_error.html mode change 100755 => 100644 templates/activation.html mode change 100755 => 100644 templates/admin_profile.html mode change 100755 => 100644 templates/all_actions.html mode change 100755 => 100644 templates/all_articles.html mode change 100755 => 100644 templates/all_comments.html mode change 100755 => 100644 templates/articles.html mode change 100755 => 100644 templates/auth_error.html mode change 100755 => 100644 templates/auth_modals.html mode change 100755 => 100644 templates/base_index.html mode change 100755 => 100644 templates/by_error.html mode change 100755 => 100644 templates/contacts.html mode change 100755 => 100644 templates/course.html mode change 100755 => 100644 templates/everyone_modals.html mode change 100755 => 100644 templates/exam.html mode change 100755 => 100644 templates/fail_pay.html mode change 100755 => 100644 templates/faq.html mode change 100755 => 100644 templates/faq_one.html mode change 100755 => 100644 templates/freeweek_more.html mode change 100755 => 100644 templates/good_pay.html mode change 100755 => 100644 templates/homework.html mode change 100755 => 100644 templates/index.html mode change 100755 => 100644 templates/index_menu.html mode change 100755 => 100644 templates/lesson.html mode change 100755 => 100644 templates/manager_account.html mode change 100755 => 100644 templates/manager_history.html mode change 100755 => 100644 templates/manager_profile.html mode change 100755 => 100644 templates/manager_servicerequest.html mode change 100755 => 100644 templates/new_reports.html mode change 100755 => 100644 templates/news_one.html mode change 100755 => 100644 templates/no_auth_modals.html mode change 100755 => 100644 templates/profile.html mode change 100755 => 100644 templates/progress_report.html mode change 100755 => 100644 templates/reports.html mode change 100755 => 100644 templates/reports/base_index.html mode change 100755 => 100644 templates/reports/bills.html mode change 100755 => 100644 templates/reports/freeweek.html mode change 100755 => 100644 templates/reports/hw_process_pp.html mode change 100755 => 100644 templates/reports/hw_process_pt.html mode change 100755 => 100644 templates/reports/mails.html mode change 100755 => 100644 templates/reports/menu.html mode change 100755 => 100644 templates/reports/progress.html mode change 100755 => 100644 templates/self_bill_result.html mode change 100755 => 100644 templates/selfbill.html mode change 100755 => 100644 templates/simplepayresult.xml mode change 100755 => 100644 templates/student_matrix.html mode change 100755 => 100644 templates/super_history.html mode change 100755 => 100644 templates/super_profile.html mode change 100755 => 100644 templates/super_servicerequest.html mode change 100755 => 100644 templates/teach_profile.html mode change 100755 => 100644 templates/teacher_comments.html mode change 100755 => 100644 templates/teacher_exams.html mode change 100755 => 100644 templates/teacher_homeworks.html mode change 100755 => 100644 templates/teacher_materials.html mode change 100755 => 100644 templates/test.html mode change 100755 => 100644 templates/traffic_map.html mode change 100755 => 100644 templates/wallet.html mode change 100755 => 100644 templates/workshop_exam.html mode change 100755 => 100644 templates/workshop_homework.html mode change 100755 => 100644 templates/zendesk.html diff --git a/README.md b/README.md index 4873e6b..2f54ff1 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,8 @@ -## Правила для разработчика +#**INDIGO** +RLMS ( Real Learning Management System ) -- Разрабока ведется в отдельном брэнче -- После комита изменений можно проверить свою работу по следующему адресу: .lms.test.spicycms.com -- После проверки тестового сайта по имени брэнча, брэнч помечается к мерж реквесту -- Ответсвенный инженер производит код ревью и запускает/отклоняет мерж -- Если сайт запустился на демо сайте, код в ручом режиме можно обновить на продакшен сервере +[http://go.skillbox.ru](http://go.skillbox.ru) -### Замечания +Барышников Н.Р. -- Мерж реквест лучше производить в ветку develop(чтобы исключить случайного обновления кода на демо сайте) -- Внимание! Разработчик обязан проверить работоспособность тестового сайта по имени созданного брэнча .lms.test.spicycms.com -- Если необходимы тестовые данные разработчик их подготавливает дополнительно -- Если нет возможности добавить тестовые данные в авто режиме, разработчик добавляет инструкцию в README файл по запуску необходимых команд - -(Под тестовыми данными подразумеваются фикстуры) +**Наша задача** - построить гибкую систему обучения, предоставляющую возможность эффективно подстраиваться под нужны конкретного проекта обучения. Хранить и обрабатывать информацию об аудитории. Давать конструктивную и максимально приближенную к реальности оценку процессов проводимых в системе. Предоставлять возможность проведения экспериментов в обучении без ущерба для самого процесса. Необходимо реализовать в полной мере принцип модульности частей системы. Все процессы, проходимые через систему должны подчиняться общей политике безопасности. Административный интерфейс должен быть максимально упрощен, для быстрого и эффективного доступа к данным. Максимально интегрироваться с готовыми решениями имеющими косвенную выгоду для обучения непосредственно. Четко соблюдать прицип MVC при любых объемах. Контролировать полноценно работу на всех 3х уровнях. Собирать и хранить всю поступающую, уникальную информацию. 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/check_journals.py b/_utils/check_journals.py index 278383e..ca31d2e 100644 --- a/_utils/check_journals.py +++ b/_utils/check_journals.py @@ -3,16 +3,20 @@ import os import django import sys import datetime - +import os start = datetime.datetime.now() sys.path.append("/var/www/projects/codemy/") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") django.setup() - +os.system('python check_course_map.py') +os.system('python check_prices.py') from lms.settings import BASE_DIR from journals.models import TeacherJ, check_journal from lms.tools import show_progress + +os.system('python clean_twice_journals.py') + all = TeacherJ.objects.filter(progress__gt=0).count() print('Количество журналов на проверку: %s' % all) @@ -29,6 +33,6 @@ for i in TeacherJ.objects.filter(progress__gt=0).order_by('-id'): f = open(os.path.join(BASE_DIR, 'journals/check_switch'), 'w') f.write('0\n') f.close() - +os.system('python open_lesson.py') finish = datetime.datetime.now() print('\nTIME: %s seconds' % (finish-start).seconds) diff --git a/_utils/check_lesson_open_near_homework.py b/_utils/check_lesson_open_near_homework.py index 8965481..1c000b4 100644 --- a/_utils/check_lesson_open_near_homework.py +++ b/_utils/check_lesson_open_near_homework.py @@ -3,45 +3,33 @@ import os import django import sys import datetime -print(1) + start = datetime.datetime.now() sys.path.append("/var/www/projects/codemy/") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") django.setup() -print(2) from courses.models import CourseMap from journals.models import TeacherJ, LessonJ, HomeworkJ, HomeworkTry, CourseThemeJ -# Получить все журналы, где начато обучение -print(3) -last = TeacherJ.objects.filter(status='W').order_by('-id').last().id -print(4) -for journal in TeacherJ.objects.filter(id=26933).order_by('-id'): - print(journal.id) - if HomeworkTry.objects.filter(material__course__id=journal.course.id, student__id=journal.student.id).exists(): - print('4a') +# Получить все журналы, где начато обучение +for journal in TeacherJ.objects.filter(status='W').order_by('-id'): + if HomeworkTry.objects.filter(parent__parent__parent=journal).exists(): hw = int(CourseMap.objects.get( homework=HomeworkTry.objects.filter(parent__parent__parent=journal).order_by('id').last().material).sort) - print(hw) + before = [] for i in LessonJ.objects.filter(parent__parent=journal): - if int(CourseMap.objects.get(lesson=i.material).sort) > hw: + if int(CourseMap.objects.get(lesson=i.material).sort): i.date = None i.f_date = None i.success = False i.save() else: - try: - i.saw_this() - except Exception as e: - print(e) - print(i) - + i.saw_this() for ct in CourseThemeJ.objects.filter(parent=journal): if LessonJ.objects.filter(parent=ct).count() == LessonJ.objects.filter(parent=ct, date=None).count(): ct.date = None ct.save() -print(5) -#for i in HomeworkJ.objects.filter(f_date=None).exclude(date=None): -# i.open_next() +for i in HomeworkJ.objects.filter(f_date=None).exclude(date=None): + i.open_next() 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 -

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

- -

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

- -
    -
  • Вопросы кроссбраузерности – логика введения новых компонентнов Javascript ведущими браузерами
  • -
  • Практическая сторона процесса стандартизации,
  • -
- -

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

+

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

+ +

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

+ +
    +
  • Вопросы кроссбраузерности – логика введения новых компонентнов Javascript ведущими браузерами
  • +
  • Практическая сторона процесса стандартизации,
  • +
+ +

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

Михаил @@ -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/_utils/open_lesson.py b/_utils/open_lesson.py index 94dfac0..eb15e85 100644 --- a/_utils/open_lesson.py +++ b/_utils/open_lesson.py @@ -11,7 +11,7 @@ django.setup() from journals.models import CourseMap, LessonJ, TeacherJ, HomeworkTry from lms.tools import show_progress -_NEED_OPEN = None#LessonJ.objects.get(material__id='684', student__email='alexandersvinin@gmail.com') +_NEED_OPEN = LessonJ.objects.get(material__id='79', student__email='agar10@yandex.ru') _TEACHERJ_FILTER = {'progress__gte': 0} _TEACHERJ_EXCLUDE = {'teacher': None} 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 index dde29f8..acc4fb8 --- a/access/admin.py +++ b/access/admin.py @@ -49,17 +49,13 @@ class DocumentAdmin(admin.ModelAdmin): class UserRequestAdmin(admin.ModelAdmin): list_display = ('ip', 'user', 'count', 'date', ) list_filter = ['date'] - search_fields = ('ip', 'user__email', 'user__fname', 'user__name', 'user__oname',) + search_fields = ('ip', 'user__email', 'user__fname', 'user__name', 'user__oname', 'user__id',) class UserRequestDataAdmin(admin.ModelAdmin): search_fields = ('row__ip', ) -#class UserSyncAdmin(admin.ModelAdmin): -# list_display = ('user', 'source', 'dist', 'date', 'f_date', 'result',) - -#admin.site.register(UserSync, UserSyncAdmin) admin.site.register(UserRequest, UserRequestAdmin) admin.site.register(UserRequestData, UserRequestDataAdmin) admin.site.register(Document, DocumentAdmin) diff --git a/access/api.py b/access/api.py old mode 100755 new mode 100644 index 094d87e..121902a --- a/access/api.py +++ b/access/api.py @@ -1,491 +1,497 @@ -# coding=utf-8 -import datetime -from django.contrib import auth -from django.http import Http404 -from access.models import User, Subscription, sent_registration -from lms.decors import api_decor -from lms.regex import check_email -from lms.tools import condition_factory, check_set_password -from management.letters import sent_active_new_email, sent_good_activation, sent_accept_forgot - - -@api_decor(without_auth=True) -def search_user(request, context): - context['code'] = '0' - if request.user.is_authenticated(): - if request.GET.get('user'): - context['code'] = '1' if User.objects.filter(email=request.GET.get('user')).exists() else '0' - - return context - - -@api_decor(without_auth=False) -def find_user(request, context): - if request.user.is_authenticated() and request.user.in_role in ['T', 'S2', 'A']: - if request.GET.get('user'): - context['code'] = '1' - context['data'] = [{'str': str(user), 'ava': user.get_image_url(), 'email': user.email, 'id': user.id} for user in User.objects.filter(email__icontains=request.GET['user'])] - else: - context['response'] = u'Параметры не переданы' - context['code'] = '0' - return context - else: - raise Http404 - - -@api_decor(without_auth=False) -def change_private(request, context): - if 'type' in request.POST: - request.user.private = request.POST['type'] - request.user.save() - return context - - -@api_decor(without_auth=False) -def resent_active_email(request, context): - sent_registration(request.user, title=u'Повторное письмо активации') - context['code'] = '1' - return context - - -@api_decor(without_auth=True) -def check_auth(request, context): - if request.user.is_authenticated(): - context['code'] = '0' - else: - context['code'] = '1' - - return context - - -@api_decor(without_auth=True) -def logout(request, context): - if request.user.is_authenticated(): - context['code'] = '0' - else: - context['code'] = '1' - - return context - - -@api_decor(without_auth=False) -def send_settings_data(request, context): - # Изменение данных пользователя - context['code'] = '0' - request.user.oname = request.POST['user_settings_oname'] - request.user.avatar = request.POST['avatar_code'] - request.user.city = request.POST['user_settings_city'] - if request.POST.get('user_settings_bday'): - try: - request.user.b_day = datetime.datetime.strptime(request.POST['user_settings_bday'], '%d.%m.%Y').date() - except ValueError: - context['response'] = u'Дата рождения указана в неверном формате. Пример: 18.11.1990' - return context - - if request.POST.get('user_settings_fname'): - request.user.fname = request.POST['user_settings_fname'] - else: - context['response'] = u'Укажите вашу фамилию' - return context - - if request.POST.get('user_settings_name'): - request.user.name = request.POST['user_settings_name'] - else: - context['response'] = u'Укажите ваше имя' - return context - - if request.POST.get('user_settings_phone'): - if request.user.phone != request.POST['user_settings_phone']: - request.user.back_phone = request.user.phone - request.user.phone = request.POST['user_settings_phone'] - else: - context['response'] = u'Укажите ваш телефон' - return context - - if request.POST.get('user_settings_email') and check_email(request.POST['user_settings_email']): - if request.POST['user_settings_email'].lower() != request.user.email: - email = request.POST['user_settings_email'].lower() - if not User.objects.filter(email=email).exists(): - request.user.changed_email = request.POST['user_settings_email'].lower() - request.user.change_token() - sent_active_new_email(request.user) - context['response'] = u'Данные изменены. Для изменения поля email, необходимо подтвердить владение ' \ - u'им. На указанный почтовый ящик выслано письмо активации.' - else: - context['response'] = u'Пользователь с таким email уже существует' - return context - - else: - context['response'] = u'Укажите ваш email' - return context - - context['code'] = '1' - request.user.save() - return context - - -@api_decor(without_auth=False) -def get_settings_data(request, context): - # Отправка данных пользователя - context['code'] = '1' - context['data'] = { - 'short_name': request.user.get_short_name(), - 'avatar_code': request.user.avatar, - 'avatar': request.user.get_image_url(type_in='big'), - 'fname': request.user.fname, - 'name': request.user.name, - 'oname': request.user.oname, - 'phone': request.user.get_phone(), - 'email': request.user.email, - 'city': request.user.city, - 'bday': '' - } - if request.user.b_day: - context['data']['bday'] = '{0}.{1}.{2}'.format(request.user.b_day.day, request.user.b_day.month, request.user.b_day.year) - - return context - - -@api_decor(without_auth=False) -def send_subscription_data(request, context): - # Сохранение выбора подписок - context['code'] = '1' - subscription = Subscription.objects.get(owner=request.user) - right_map = subscription.right_map(None) - context['data'] = [] - for i, x in right_map.items(): - if 'subscription_{0}'.format(i) in request.POST: - if not x: - subscription.set_right(i, True) - else: - if x: - subscription.set_right(i, False) - - return context - - -@api_decor(without_auth=False) -def get_subscription_data(request, context): - # Получение подписок пользователя - context['code'] = '1' - context['data'] = {} - subscription, c = Subscription.objects.get_or_create(owner=request.user) - for i, n in subscription.right_map(None).items(): - context['data'][i] = n - return context - - -@api_decor(without_auth=False) -def change_password(request, context): - # Изменение данных о профиле - context['data'] = [] - if request.POST.get('old_password'): - old_password = request.POST['old_password'] - if request.user.check_password(old_password): - if request.POST.get('password1'): - password1 = request.POST['password1'] - ps, ms = check_set_password(request.POST['password1']) - if not ps: - context['response'] = ms - context['code'] = '0' - else: - if request.POST.get('password2'): - password2 = request.POST['password2'] - if password1 == password2: - user = User.objects.get(id=request.user.id) - user.set_password(password1) - user.save() - user._set_to_sync() - context['response'] = u'Пароль изменен. Авторизуйтесь используя новый пароль.' - context['code'] = '1' - else: - context['response'] = u'Новые пароли не совпадают' - context['code'] = '0' - else: - context['response'] = u'Повторите введеный пароль' - context['code'] = '0' - else: - context['response'] = u'Поле нового пароля не заполнено' - context['code'] = '0' - else: - context['response'] = u'Старый пароль введен не верно' - context['code'] = '0' - else: - context['response'] = u'Поле старого пароля не заполнено' - context['code'] = '0' - return context - - -@api_decor(without_auth=False, need_keys=['id'], method='GET', check_request=True) -def get_user_role(request, context): - # Получение роли пользователя для руководителя в его профиле - # TODO: Убрать изменение ролей из профиля пользователя - if request.user.in_role == 'S' or request.user.in_role == 'A': - try: - user = User.objects.get(id=request.GET['id']) - except User.DoesNotExist: - context['code'] = '0' - else: - context['code'] = '1' - context['data'] = user.in_role - else: - raise Http404 - return context - - -@api_decor(without_auth=False, need_keys=['new_role_user_id', 'new_role_name'], method='GET', check_request=True) -def new_role(request, context): - # Присвоение роли в профиле руководителя - # TODO: Убрать присвоение - if request.user.in_role == 'S' or request.user.in_role == 'A': - try: - user = User.objects.get(id=request.GET['new_role_user_id']) - except User.DoesNotExist: - raise Http404 - else: - user.in_role = request.GET['new_role_name'] - user.save() - context['code'] = '1' - else: - raise Http404 - return context - - -@api_decor(without_auth=True) -def check_active(request, context): - # Проверка статуса активации пользователя - # Используется для доступов - if request.user.is_active and request.user.reg_status == '4': - context['code'] = '1' - else: - context['code'] = '0' - return context - - -@api_decor(without_auth=True) -def reg_step(request, context): - # Процедура активации пользователя - condition = condition_factory([ - {'condition': request.POST.get('email'), 'error': u'Не верно передан email'}, - {'condition': request.POST.get('token'), 'error': u'Не верно передан токен'}, - {'condition': request.POST.get('step'), 'error': u'Не верно передн этап'}, ]) - context['data'] = {} - if condition['code'] == '1': - try: - email = request.POST['email'].lower() - user = User.objects.get(email=email, token=request.POST['token']) - except User.DoesNotExist: - context['code'] = '0' - context['data']['message'] = u'Запрашиваемый пользователь не найден' - else: - context['code'] = '0' - if request.POST['step'] == '1': - # Проверка пароля - if request.POST.get('password1'): - if request.POST.get('password2'): - if request.POST['password1'] == request.POST['password2']: - ps, ms = check_set_password(request.POST['password1']) - if not ps: - context['data']['message'] = ms - context['data']['inputs'] = ['password1', 'password2'] - context['code'] = '0' - else: - user.set_password(request.POST['password1']) - user.reg_status = '2' - user.save() - context['code'] = '1' - else: - context['data']['message'] = u'Введеные пароли не совпадают' - context['data']['inputs'] = ['password1', 'password2'] - else: - context['data']['message'] = u'Повторите введеный пароль' - context['data']['inputs'] = ['password2'] - else: - context['data']['message'] = u'Введите пароль' - context['data']['inputs'] = ['password1'] - - return context - - elif request.POST['step'] == '2': - # Проверка Телефона - if request.POST.get('fname'): - if request.POST.get('name'): - if request.POST.get('phone'): - user.phone = request.POST['phone'] - user.name = request.POST['name'] - user.fname = request.POST['fname'] - user.city = request.POST['city'] - if request.POST.get('bday'): - try: - user.b_day = datetime.datetime.strptime(request.POST['bday'], '%d.%m.%Y').date() - except ValueError: - user.b_day = datetime.datetime.strptime(request.POST['bday'], '%d.%m.%y').date() - user.reg_status = '3' - user.save() - context['code'] = '1' - else: - context['data']['message'] = u'Введите Телефон' - context['data']['inputs'] = ['phone'] - else: - context['data']['message'] = u'Введите Имя' - context['data']['inputs'] = ['name'] - else: - context['data']['message'] = u'Введите Фамилию' - context['data']['inputs'] = ['fname'] - - elif request.POST['step'] == '3': - # Проверка фотографии - if request.POST.get('avatar_code'): - user.avatar = request.POST['avatar_code'] - user.reg_status = '4' - user.is_active = True - user.save() - user._set_to_sync() - sent_good_activation(user) - context['code'] = '1' - - else: - context['code'] = '0' - context['data']['message'] = u'Этап активации указан не верно' - else: - context['data']['message'] = condition['response'] - context['code'] = '0' - return context - - -@api_decor(without_auth=True) -def registration(request, context): - # Форма стандартногоз аведения пользователя - condition = condition_factory([ - {'condition': request.POST.get('email'), 'error': u'Вы не ввели email'}]) - - if condition['code'] == '1': - try: - email = request.POST['email'].lower() - user = User.objects.get(email=email) - except User.DoesNotExist: - if request.POST.get('password1'): - if request.POST.get('password2'): - if request.POST['password1'] == request.POST['password2']: - ps, ms = check_set_password(request.POST['password1']) - if not ps: - context['response'] = ms - context['code'] = '0' - else: - email = request.POST['email'].lower() - user = User.objects.create_user(email=email) - user.set_password(request.POST['password1']) - user.reg_status = '2' - user.save() - context['code'] = '1' - else: - context['response'] = u'Введеные пароли не совпадают' - context['code'] = '0' - else: - context['response'] = u'Повторите введеный пароль' - context['code'] = '0' - else: - context['response'] = u'Введите пароль' - context['code'] = '0' - else: - if user.is_active and user.reg_status == '4': - context['code'] = '0' - context[ - 'response'] = u'Пользователь с таким email уже существует и активен. ' \ - u'Авторизуйтесь или попробуйте восстановить пароль.' - else: - context['code'] = '0' - sent_registration(user, title=u'Повторное письмо активации') - context[ - 'response'] = u'Пользователь с таким email уже существует, но не был активирован. ' \ - u'Вам было выслано повторное письмо активации.' - else: - context['response'] = condition['response'] - context['code'] = '0' - return context - - -@api_decor(without_auth=True) -def auth_in(request, context): - # Авторизация - condition = condition_factory([ - {'condition': request.POST.get('email'), 'error': u'Вы не ввели email'}, - {'condition': request.POST.get('password'), 'error': u'Вы не ввели пароль'} - ]) - if condition['code'] == '1': - email = request.POST['email'].lower() - user = auth.authenticate(email=email, password=request.POST.get('password')) - - if user is not None: - context['code'] = '1' - auth.login(request, user) - user.set_request_data(request) - - elif user is None: - context['response'] = u'По введенным данным пользователь не найден' - context['code'] = '0' - - else: - context['response'] = u"Не верные данные. Повторите попытку" - context['code'] = '0' - else: - context['response'] = condition['response'] - context['code'] = '0' - return context - - -@api_decor(without_auth=True) -def auth_from_admin(request, context): - # Авторизация - condition = condition_factory([ - {'condition': request.POST.get('email'), 'error': u'Вы не ввели email'}, - {'condition': request.POST.get('password'), 'error': u'Вы не ввели пароль'}, - {'condition': request.POST.get('token'), 'error': u'Вы не ввели свой токен'}, - {'condition': request.user.is_staff and request.user.is_admin, 'error': u'У вас нет прав'} - ]) - if condition['code'] == '1': - email = request.POST['email'].lower() - user = auth.authenticate(email=email, - password=request.POST.get('password'), - token=request.POST.get('token')) - - if user is not None: - context['code'] = '1' - auth.login(request, user) - request.user.change_token() - - elif user is None: - context['response'] = u'По введенным данным пользователь не найден' - context['code'] = '0' - - else: - context['response'] = u"Не верные данные. Повторите попытку" - context['code'] = '0' - else: - context['response'] = condition['response'] - context['code'] = '0' - return context - - -@api_decor(without_auth=True) -def forgot(request, context): - # Форма восстановления пароля - condition = condition_factory([ - {'condition': request.GET.get('email'), 'error': u'Email не указан'}, - {'condition': check_email(request.GET['email']), 'error': u'Email введен не верно'} - ]) - if condition['code'] == '1': - try: - email = request.GET['email'].lower() - user = User.objects.get(email=email) - except User.DoesNotExist: - context['response'] = u'Пользователя с таким email не существует.' - context['code'] = '0' - else: - user.change_token() - sent_accept_forgot(user) - context['code'] = '1' - else: - context['response'] = condition['response'] - context['code'] = '0' - return context +# coding=utf-8 +import datetime +from django.contrib import auth +from django.http import Http404 +from access.models import User, Subscription, sent_registration, UserRequest +from lms.decors import api_decor +from lms.regex import check_email +from lms.tools import condition_factory, check_set_password +from management.letters import sent_active_new_email, sent_good_activation, sent_accept_forgot + + +@api_decor(without_auth=True) +def search_user(request, context): + context['code'] = '0' + if request.user.is_authenticated(): + if request.GET.get('user'): + context['code'] = '1' if User.objects.filter(email=request.GET.get('user')).exists() else '0' + + return context + + +@api_decor(without_auth=False) +def find_user(request, context): + if request.user.is_authenticated() and request.user.in_role in ['T', 'S2', 'A']: + if request.GET.get('user'): + context['code'] = '1' + context['data'] = [{'str': str(user), 'ava': user.get_image_url(), 'email': user.email, 'id': user.id} for user in User.objects.filter(email__icontains=request.GET['user'])] + else: + context['response'] = u'Параметры не переданы' + context['code'] = '0' + return context + else: + raise Http404 + + +@api_decor(without_auth=False) +def change_private(request, context): + if 'type' in request.POST: + request.user.private = request.POST['type'] + request.user.save() + return context + + +@api_decor(without_auth=False) +def resent_active_email(request, context): + sent_registration(request.user, title=u'Повторное письмо активации') + context['code'] = '1' + return context + + +@api_decor(without_auth=True) +def check_auth(request, context): + if request.user.is_authenticated(): + context['code'] = '0' + else: + context['code'] = '1' + + return context + + +@api_decor(without_auth=True) +def logout(request, context): + if request.user.is_authenticated(): + context['code'] = '0' + else: + context['code'] = '1' + + return context + + +@api_decor(without_auth=False) +def send_settings_data(request, context): + # Изменение данных пользователя + context['code'] = '0' + request.user.oname = request.POST['user_settings_oname'] + request.user.avatar = request.POST['avatar_code'] + request.user.city = request.POST['user_settings_city'] + if request.POST.get('user_settings_bday'): + try: + request.user.b_day = datetime.datetime.strptime(request.POST['user_settings_bday'], '%d.%m.%Y').date() + except ValueError: + context['response'] = u'Дата рождения указана в неверном формате. Пример: 18.11.1990' + return context + + if request.POST.get('user_settings_fname'): + request.user.fname = request.POST['user_settings_fname'] + else: + context['response'] = u'Укажите вашу фамилию' + return context + + if request.POST.get('user_settings_name'): + request.user.name = request.POST['user_settings_name'] + else: + context['response'] = u'Укажите ваше имя' + return context + + if request.POST.get('user_settings_phone'): + if request.user.phone != request.POST['user_settings_phone']: + request.user.back_phone = request.user.phone + request.user.phone = request.POST['user_settings_phone'] + else: + context['response'] = u'Укажите ваш телефон' + return context + + if request.POST.get('user_settings_email') and check_email(request.POST['user_settings_email']): + if request.POST['user_settings_email'].lower() != request.user.email: + email = request.POST['user_settings_email'].lower() + if not User.objects.filter(email=email).exists(): + request.user.changed_email = request.POST['user_settings_email'].lower() + request.user.change_token() + sent_active_new_email(request.user) + context['response'] = u'Данные изменены. Для изменения поля email, необходимо подтвердить владение ' \ + u'им. На указанный почтовый ящик выслано письмо активации.' + else: + context['response'] = u'Пользователь с таким email уже существует' + return context + + else: + context['response'] = u'Укажите ваш email' + return context + + context['code'] = '1' + request.user.save() + return context + + +@api_decor(without_auth=False) +def get_settings_data(request, context): + # Отправка данных пользователя + context['code'] = '1' + context['data'] = { + 'short_name': request.user.get_short_name(), + 'avatar_code': request.user.avatar, + 'avatar': request.user.get_image_url(type_in='big'), + 'fname': request.user.fname, + 'name': request.user.name, + 'oname': request.user.oname, + 'phone': request.user.get_phone(), + 'email': request.user.email, + 'city': request.user.city, + 'bday': '' + } + if request.user.b_day: + context['data']['bday'] = '{0}.{1}.{2}'.format(request.user.b_day.day, request.user.b_day.month, request.user.b_day.year) + + return context + + +@api_decor(without_auth=False) +def send_subscription_data(request, context): + # Сохранение выбора подписок + context['code'] = '1' + subscription = Subscription.objects.get(owner=request.user) + right_map = subscription.right_map(None) + context['data'] = [] + for i, x in right_map.items(): + if 'subscription_{0}'.format(i) in request.POST: + if not x: + subscription.set_right(i, True) + else: + if x: + subscription.set_right(i, False) + + return context + + +@api_decor(without_auth=False) +def get_subscription_data(request, context): + # Получение подписок пользователя + context['code'] = '1' + context['data'] = {} + subscription, c = Subscription.objects.get_or_create(owner=request.user) + for i, n in subscription.right_map(None).items(): + context['data'][i] = n + return context + + +@api_decor(without_auth=False) +def change_password(request, context): + # Изменение данных о профиле + context['data'] = [] + if request.POST.get('old_password'): + old_password = request.POST['old_password'] + if request.user.check_password(old_password): + if request.POST.get('password1'): + password1 = request.POST['password1'] + ps, ms = check_set_password(request.POST['password1']) + if not ps: + context['response'] = ms + context['code'] = '0' + else: + if request.POST.get('password2'): + password2 = request.POST['password2'] + if password1 == password2: + user = User.objects.get(id=request.user.id) + user.set_password(password1) + user.save() + context['response'] = u'Пароль изменен. Авторизуйтесь используя новый пароль.' + context['code'] = '1' + else: + context['response'] = u'Новые пароли не совпадают' + context['code'] = '0' + else: + context['response'] = u'Повторите введеный пароль' + context['code'] = '0' + else: + context['response'] = u'Поле нового пароля не заполнено' + context['code'] = '0' + else: + context['response'] = u'Старый пароль введен не верно' + context['code'] = '0' + else: + context['response'] = u'Поле старого пароля не заполнено' + context['code'] = '0' + return context + + +@api_decor(without_auth=False, need_keys=['id'], method='GET', check_request=True) +def get_user_role(request, context): + # Получение роли пользователя для руководителя в его профиле + # TODO: Убрать изменение ролей из профиля пользователя + if request.user.in_role == 'S' or request.user.in_role == 'A': + try: + user = User.objects.get(id=request.GET['id']) + except User.DoesNotExist: + context['code'] = '0' + else: + context['code'] = '1' + context['data'] = user.in_role + else: + raise Http404 + return context + + +@api_decor(without_auth=False, need_keys=['new_role_user_id', 'new_role_name'], method='GET', check_request=True) +def new_role(request, context): + # Присвоение роли в профиле руководителя + # TODO: Убрать присвоение + if request.user.in_role == 'S' or request.user.in_role == 'A': + try: + user = User.objects.get(id=request.GET['new_role_user_id']) + except User.DoesNotExist: + raise Http404 + else: + user.in_role = request.GET['new_role_name'] + user.save() + context['code'] = '1' + else: + raise Http404 + return context + + +@api_decor(without_auth=True) +def check_active(request, context): + # Проверка статуса активации пользователя + # Используется для доступов + if request.user.is_active and request.user.reg_status == '4': + context['code'] = '1' + else: + context['code'] = '0' + return context + + +@api_decor(without_auth=True) +def reg_step(request, context): + # Процедура активации пользователя + condition = condition_factory([ + {'condition': request.POST.get('email'), 'error': u'Не верно передан email'}, + {'condition': request.POST.get('token'), 'error': u'Не верно передан токен'}, + {'condition': request.POST.get('step'), 'error': u'Не верно передн этап'}, ]) + context['data'] = {} + if condition['code'] == '1': + try: + email = request.POST['email'].lower() + user = User.objects.get(email=email, token=request.POST['token']) + except User.DoesNotExist: + context['code'] = '0' + context['data']['message'] = u'Запрашиваемый пользователь не найден' + else: + context['code'] = '0' + if request.POST['step'] == '1': + # Проверка пароля + if request.POST.get('password1'): + if request.POST.get('password2'): + if request.POST['password1'] == request.POST['password2']: + ps, ms = check_set_password(request.POST['password1']) + if not ps: + context['data']['message'] = ms + context['data']['inputs'] = ['password1', 'password2'] + context['code'] = '0' + else: + user.set_password(request.POST['password1']) + user.reg_status = '2' + user.save() + context['code'] = '1' + else: + context['data']['message'] = u'Введеные пароли не совпадают' + context['data']['inputs'] = ['password1', 'password2'] + else: + context['data']['message'] = u'Повторите введеный пароль' + context['data']['inputs'] = ['password2'] + else: + context['data']['message'] = u'Введите пароль' + context['data']['inputs'] = ['password1'] + + return context + + elif request.POST['step'] == '2': + # Проверка Телефона + if request.POST.get('fname'): + if request.POST.get('name'): + if request.POST.get('phone'): + user.phone = request.POST['phone'] + user.name = request.POST['name'] + user.fname = request.POST['fname'] + user.city = request.POST['city'] + if request.POST.get('bday'): + try: + user.b_day = datetime.datetime.strptime(request.POST['bday'], '%d.%m.%Y').date() + except ValueError: + user.b_day = datetime.datetime.strptime(request.POST['bday'], '%d.%m.%y').date() + user.reg_status = '3' + user.save() + context['code'] = '1' + else: + context['data']['message'] = u'Введите Телефон' + context['data']['inputs'] = ['phone'] + else: + context['data']['message'] = u'Введите Имя' + context['data']['inputs'] = ['name'] + else: + context['data']['message'] = u'Введите Фамилию' + context['data']['inputs'] = ['fname'] + + elif request.POST['step'] == '3': + # Проверка фотографии + if request.POST.get('avatar_code'): + user.avatar = request.POST['avatar_code'] + user.reg_status = '4' + user.is_active = True + user.save() + user._set_to_sync() + sent_good_activation(user) + context['code'] = '1' + + else: + context['code'] = '0' + context['data']['message'] = u'Этап активации указан не верно' + else: + context['data']['message'] = condition['response'] + context['code'] = '0' + return context + + +@api_decor(without_auth=True) +def registration(request, context): + # Форма стандартногоз аведения пользователя + condition = condition_factory([ + {'condition': request.POST.get('email'), 'error': u'Вы не ввели email'}]) + + if condition['code'] == '1': + try: + email = request.POST['email'].lower() + user = User.objects.get(email=email) + except User.DoesNotExist: + if request.POST.get('password1'): + if request.POST.get('password2'): + if request.POST['password1'] == request.POST['password2']: + ps, ms = check_set_password(request.POST['password1']) + if not ps: + context['response'] = ms + context['code'] = '0' + else: + email = request.POST['email'].lower() + user = User.objects.create_user(email=email) + user.set_password(request.POST['password1']) + user.reg_status = '2' + user.save() + context['code'] = '1' + else: + context['response'] = u'Введеные пароли не совпадают' + context['code'] = '0' + else: + context['response'] = u'Повторите введеный пароль' + context['code'] = '0' + else: + context['response'] = u'Введите пароль' + context['code'] = '0' + else: + if user.is_active and user.reg_status == '4': + context['code'] = '0' + context[ + 'response'] = u'Пользователь с таким email уже существует и активен. ' \ + u'Авторизуйтесь или попробуйте восстановить пароль.' + else: + context['code'] = '0' + sent_registration(user, title=u'Повторное письмо активации') + context[ + 'response'] = u'Пользователь с таким email уже существует, но не был активирован. ' \ + u'Вам было выслано повторное письмо активации.' + else: + context['response'] = condition['response'] + context['code'] = '0' + return context + + +@api_decor(without_auth=True) +def auth_in(request, context): + # Авторизация + condition = condition_factory([ + {'condition': request.POST.get('email'), 'error': u'Вы не ввели email'}, + {'condition': request.POST.get('password'), 'error': u'Вы не ввели пароль'} + ]) + if condition['code'] == '1': + email = request.POST['email'].lower() + user = auth.authenticate(email=email, password=request.POST.get('password')) + + if user is not None: + if user.block: + context['code'] = '0' + context['data'] = [] + context['data']['ERROR'] = 'BLOCK' + context['data']['data'] = UserRequest.objects.filter(user__email=email).count() + + else: + context['code'] = '1' + auth.login(request, user) + user.set_request_data(request) + + elif user is None: + context['response'] = u'По введенным данным пользователь не найден' + context['code'] = '0' + + else: + context['response'] = u"Не верные данные. Повторите попытку" + context['code'] = '0' + else: + context['response'] = condition['response'] + context['code'] = '0' + return context + + +@api_decor(without_auth=True) +def auth_from_admin(request, context): + # Авторизация + condition = condition_factory([ + {'condition': request.POST.get('email'), 'error': u'Вы не ввели email'}, + {'condition': request.POST.get('password'), 'error': u'Вы не ввели пароль'}, + {'condition': request.POST.get('token'), 'error': u'Вы не ввели свой токен'}, + {'condition': request.user.is_staff and request.user.is_admin, 'error': u'У вас нет прав'} + ]) + if condition['code'] == '1': + email = request.POST['email'].lower() + user = auth.authenticate(email=email, + password=request.POST.get('password'), + token=request.POST.get('token')) + + if user is not None: + context['code'] = '1' + auth.login(request, user) + request.user.change_token() + + elif user is None: + context['response'] = u'По введенным данным пользователь не найден' + context['code'] = '0' + + else: + context['response'] = u"Не верные данные. Повторите попытку" + context['code'] = '0' + else: + context['response'] = condition['response'] + context['code'] = '0' + return context + + +@api_decor(without_auth=True) +def forgot(request, context): + # Форма восстановления пароля + condition = condition_factory([ + {'condition': request.GET.get('email'), 'error': u'Email не указан'}, + {'condition': check_email(request.GET['email']), 'error': u'Email введен не верно'} + ]) + if condition['code'] == '1': + try: + email = request.GET['email'].lower() + user = User.objects.get(email=email) + except User.DoesNotExist: + context['response'] = u'Пользователя с таким email не существует.' + context['code'] = '0' + else: + user.change_token() + sent_accept_forgot(user) + context['code'] = '1' + else: + context['response'] = condition['response'] + context['code'] = '0' + return context 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 index 749efa6..392f836 --- a/access/models.py +++ b/access/models.py @@ -122,6 +122,7 @@ class User(AbstractBaseUser): ) #sync = models.BooleanField(verbose_name=u'Синхронизирован', default=False) #sync_date = models.DateTimeField(verbose_name=u'Дата постановки на синхронизацию', blank=True, null=True) + block = models.BooleanField(verbose_name=u'Заблокировать', default=False) refer = models.CharField(verbose_name=u'Источник', max_length=1, choices=SOURCE, default='S', null=True) refer_source = models.CharField(verbose_name=u'Источник пользователя', blank=True, max_length=255, default='') traf_source = models.ForeignKey('TrafHistory', verbose_name=u'Обращение', blank=True, null=True) @@ -180,6 +181,9 @@ class User(AbstractBaseUser): super(User, self).save(*args, **kwargs) + def get_ip_len(self): + UserRequest.objects.filter(user=self).count() + def set_request_data(self, request): ip = get_client_ip(request) try: 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 8e60a7b..1b258b1 --- a/access/teach_urls.py +++ b/access/teach_urls.py @@ -1,12 +1,12 @@ -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) +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) ] \ 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 6d797d7..fc337f9 --- a/access/teach_views.py +++ b/access/teach_views.py @@ -1,140 +1,140 @@ -# 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 +# 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 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/packs b/configs/packs index 3923a17..a2a04eb 100644 --- a/configs/packs +++ b/configs/packs @@ -1,17 +1,17 @@ django==1.9.3 -Pillow -psycopg2 -simplejson -celery -django-celery -django-wysiwyg-redactor -raven -uwsgi -flower -django-import-export -python-dateutil -requests -ipython -django-precise-bbcode -html2bbcode -markdown \ No newline at end of file +Pillow==3.3.0 +psycopg2==2.6.2 +simplejson==3.8.2 +celery==3.1.23 +django-celery==3.1.17 +django-wysiwyg-redactor==0.4.9 +raven==5.24.3 +uwsgi==2.0.13.1 +flower==0.9.1 +django-import-export==0.4.5 +python-dateutil==2.5.3 +requests==2.11.0 +ipython==5.1.0 +django-precise-bbcode==1.2.6 +html2bbcode==2.3.2 +markdown==2.6.7 \ No newline at end of file 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/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 19515c0..acd1d41 --- a/courses/admin.py +++ b/courses/admin.py @@ -1,120 +1,120 @@ -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 - - -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) +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 + + +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) diff --git a/courses/api.py b/courses/api.py old mode 100755 new mode 100644 index 3d1d33d..a9ee014 --- a/courses/api.py +++ b/courses/api.py @@ -1,909 +1,909 @@ -# 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() - 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() + 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 index ea96fcb..4a12ea5 --- a/courses/models.py +++ b/courses/models.py @@ -1,14 +1,16 @@ # -*- coding: utf-8 -*- from django.db import models +from redactor.fields import RedactorField + from access.models import User +from courses.templates import search_in_collection, LEVELS_COLLECTION, MATERIAL_TYPE_COLLECTION, material_fabric, \ + comment_fabric from library.models import Tags +from lms.CourseBuilder import CourseBuilder from lms.settings import DOMAIN from lms.tools import random_string, translit -from courses.templates import search_in_collection, LEVELS_COLLECTION, MATERIAL_TYPE_COLLECTION, material_fabric, \ - comment_fabric from management.models import Comment from storage.models import Storage -from redactor.fields import RedactorField MATERIALS_TYPE = ( ('B', u'Базовый материал'), @@ -789,141 +791,6 @@ class Diploma(models.Model): verbose_name_plural = u'Дипломы' -class CourseBuilder: - def __init__(self, course, material=None): - self.course = course - self.course_public = self.course.public - self.material = material # Вернуть токен вызвавшего материала - self.ready = [] - self.materials = [] - self.token = '' - - def append_in_price(self, map): - # Добавить карту в счета, куда включены все карты курса в типе, исключая текущий - #Price.objects.filter(included=map.get_befor) - pass - - def rebuild_map(self): - sort = 0 - for theme in CourseTheme.objects.filter(course=self.course): - for lesson in Lesson.objects.filter(theme=theme): - must_save = False - try: - token = '{0}#{1}'.format(self.course.id, sort) - tmp = CourseMap.objects.get(token=token) - except CourseMap.DoesNotExist: - tmp = CourseMap.objects.create(lesson=lesson, sort=sort, course=self.course) - self.append_in_price(tmp) - - if tmp.homework: - tmp.homework = None - must_save = True - - if tmp.exam: - tmp.exam = None - must_save = True - - if tmp.lesson != lesson: - tmp.lesson = lesson - must_save = True - - if lesson.token != token: - lesson.token = token - lesson.save() - - if must_save: tmp.save() - - if lesson == self.material: - self.token = tmp.token - self.materials.append(tmp.id) - sort += 1 - - for homework in Homework.objects.filter(theme=theme): - must_save = False - try: - token = '{0}#{1}'.format(self.course.id, sort) - tmp = CourseMap.objects.get(token=token) - except CourseMap.DoesNotExist: - tmp = CourseMap.objects.create(homework=homework, sort=sort, course=self.course) - self.append_in_price(tmp) - - if tmp.homework != homework: - tmp.homework = homework - must_save = True - - if tmp.exam: - tmp.exam = None - must_save = True - - if tmp.lesson: - tmp.lesson = None - must_save = True - - if homework.token != token: - homework.token = token - homework.save() - - if must_save: tmp.save() - - if homework == self.material: - self.token = tmp.token - - self.materials.append(tmp.id) - sort += 1 - - for exam in Exam.objects.filter(theme=theme): - must_save = False - try: - token = '{0}#{1}'.format(self.course.id, sort) - tmp = CourseMap.objects.get(token=token) - except CourseMap.DoesNotExist: - tmp = CourseMap.objects.create(exam=exam, sort=sort, course=self.course) - self.append_in_price(tmp) - - if tmp.exam != exam: - tmp.exam = exam - must_save = True - - if tmp.homework: - tmp.homework = None - must_save = True - - if tmp.lesson: - tmp.lesson = None - must_save = True - - if exam.token != token: - exam.token = token - exam.save() - - if must_save: tmp.save() - - if exam == self.material: - self.token = tmp.token - self.materials.append(tmp.id) - sort += 1 - - if sort != CourseMap.objects.filter(course=self.course).count(): - CourseMap.objects.filter(course=self.course).exclude(id__in=self.materials).delete() - - def course_switcher(self): - # Блокировка курса на время обработки - if self.course_public: - if self.course.public: - self.course.public = False - else: - self.course.public = True - self.course.save() - - def main(self): - self.course_switcher() - ## - self.rebuild_map() - ## - self.course_switcher() - return self.token if self.material else None # Вернуть токен для материала если он есть - - def gen_vzaar_bb(id): try: int(id) diff --git a/courses/templates.py b/courses/templates.py old mode 100755 new mode 100644 index 2c9a6ab..404340e --- 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/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 20dfc7a..94e7839 --- a/courses/views.py +++ b/courses/views.py @@ -1,250 +1,254 @@ -# 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() - j = HomeworkJ.objects.get(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() - - waiting_materials = [] - if journal.waiting.exists(): - for n in journal.waiting.all(): - _obj = n.get_obj() - __type = n.get_type() - _type = None - if __type == 'L': - _type = 'lesson' - elif __type == 'H': - _type = 'homework' - elif __type == 'E': - _type = 'exam' - - waiting_materials.append({'obj': _obj, 'type': _type}) - return {'course': journal.get_face(user_fabric(request.user)), 'user': user_fabric(request.user), 'waiting_materials': waiting_materials} - - -@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) - - waiting_materials = [] - if lj.parent.parent.waiting.exists(): - for n in lj.parent.parent.waiting.all(): - _obj = n.get_obj() - __type = n.get_type() - _type = None - if __type == 'L': - _type = 'lesson' - elif __type == 'H': - _type = 'homework' - elif __type == 'E': - _type = 'exam' - - waiting_materials.append({'obj': _obj, 'type': _type}) - - 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, 'waiting_materials': waiting_materials} - - 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, 'waiting_materials': waiting_materials} - - -@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) - - waiting_materials = [] - if hj.parent.parent.waiting.exists(): - for n in hj.parent.parent.waiting.all(): - _obj = n.get_obj() - __type = n.get_type() - _type = None - if __type == 'L': - _type = 'lesson' - elif __type == 'H': - _type = 'homework' - elif __type == 'E': - _type = 'exam' - - waiting_materials.append({'obj': _obj, 'type': _type}) - - 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))}, - 'waiting_materials': waiting_materials} - - 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))}, - 'waiting_materials': waiting_materials} - - -@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) - - waiting_materials = [] - if exam.parent.parent.waiting.all().exists(): - for n in exam.parent.parent.waiting.all(): - _obj = n.get_obj() - __type = n.get_type() - _type = None - if __type == 'L': - _type = 'lesson' - elif __type == 'H': - _type = 'homework' - elif __type == 'E': - _type = 'exam' - - waiting_materials.append({'obj': _obj, 'type': _type}) - - 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()}, - 'waiting_materials': waiting_materials} - - 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()}, 'waiting_materials': waiting_materials} - - -@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() + j = HomeworkJ.objects.get(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() + + waiting_materials = [] + if journal.waiting.exists(): + for n in journal.waiting.all(): + _obj = n.get_obj() + __type = n.get_type() + _type = None + if __type == 'L': + _type = 'lesson' + elif __type == 'H': + _type = 'homework' + elif __type == 'E': + _type = 'exam' + + waiting_materials.append({'obj': _obj, 'type': _type}) + return { + 'course': journal.get_face(user_fabric(request.user)), + 'user': user_fabric(request.user), + 'waiting_materials': waiting_materials + } + + +@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) + + waiting_materials = [] + if lj.parent.parent.waiting.exists(): + for n in lj.parent.parent.waiting.all(): + _obj = n.get_obj() + __type = n.get_type() + _type = None + if __type == 'L': + _type = 'lesson' + elif __type == 'H': + _type = 'homework' + elif __type == 'E': + _type = 'exam' + + waiting_materials.append({'obj': _obj, 'type': _type}) + + 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, 'waiting_materials': waiting_materials} + + 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, 'waiting_materials': waiting_materials} + + +@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) + + waiting_materials = [] + if hj.parent.parent.waiting.exists(): + for n in hj.parent.parent.waiting.all(): + _obj = n.get_obj() + __type = n.get_type() + _type = None + if __type == 'L': + _type = 'lesson' + elif __type == 'H': + _type = 'homework' + elif __type == 'E': + _type = 'exam' + + waiting_materials.append({'obj': _obj, 'type': _type}) + + 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))}, + 'waiting_materials': waiting_materials} + + 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))}, + 'waiting_materials': waiting_materials} + + +@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) + + waiting_materials = [] + if exam.parent.parent.waiting.all().exists(): + for n in exam.parent.parent.waiting.all(): + _obj = n.get_obj() + __type = n.get_type() + _type = None + if __type == 'L': + _type = 'lesson' + elif __type == 'H': + _type = 'homework' + elif __type == 'E': + _type = 'exam' + + waiting_materials.append({'obj': _obj, 'type': _type}) + + 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()}, + 'waiting_materials': waiting_materials} + + 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()}, 'waiting_materials': waiting_materials} + + +@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/__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 index 911f955..323fedf --- a/finance/admin.py +++ b/finance/admin.py @@ -1,113 +1,121 @@ -from django.contrib import admin -from django.http import HttpResponse - -from access.models import User -from finance.models import Bill, ServiceRequest, Price, Installment, YandexKassaHistory - -from import_export.admin import ImportExportModelAdmin - -from lms.tools import out_date_format - - -def export_bills(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"№", 3000), - (u"Дата платежа", 6000), - (u"Продукт", 8000), - (u'ФИО', 6000), - (u'Сумма', 8000), - (u'Сумма минус комиссия', 1000), - (u"Комиссия", 4000), - (u"№ Транзакции", 1000), - (u'ID в системе', 1000), - (u'Email', 3000), - (u"Телефон", 3000) - ] - - 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) - 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 = [ - row_num, - out_date_format(obj.status_changed), - obj.service.get_name() if obj.service else '-', - obj.user.get_name(), - obj.price, - obj.real_price if obj.user.phone else '-', - str(float(obj.price) - float(obj.real_price)) if obj.real_price else '-', - obj.out_id if obj.out_id else '-', - obj.id, - obj.user.email, - obj.user.phone if obj.user.phone 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_bills.short_description = u"Отчет по поступлениям" - - -class BillAdmin(ImportExportModelAdmin): - list_display = ('user', 'status', 'manager', 'opener', '_method', 'service', 'price', 'real_price', 'date', 'status_changed', 'traf_source', 'gen_pay_link') - raw_id_fields = ['user'] - search_fields = ['user__email', 'id'] - list_filter = ['date', 'status_changed', 'status', 'user__in_role', '_method', 'created_sent', 'service'] - actions = [export_bills] - - def formfield_for_foreignkey(self, db_field, request=None, **kwargs): - if db_field.name == "opener": - kwargs["queryset"] = User.objects.filter(is_admin=True) - return super(BillAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) - -admin.site.register(Bill, BillAdmin) - - -class ServiceRequestAdmin(admin.ModelAdmin): - list_display = ('get_lead_name', 'get_client_name', 'date', 'amo',) - list_filter = ('amo', 'company', 'service') - search_fields = ['lead_name', 'email', 'phone', 'name'] - -admin.site.register(ServiceRequest, ServiceRequestAdmin) - - -class PriceAdmin(admin.ModelAdmin): - list_display = ('title', 'course', 'cost', 'public', 'key', 'url', 'freepay', ) - filter_horizontal = ['included'] - list_filter = ['freepay'] - -admin.site.register(Price, PriceAdmin) - - -class InstallmentAdmin(admin.ModelAdmin): - list_display = ('user', 'price', 'first_price', 'period', 'date', 'f_date', 'rest', 'wait', 'expired') - list_filter = ['expired'] - raw_id_fields = ['user'] - search_fields = ['user__email', 'user__fname', 'user__name', 'price', 'first_price'] - -admin.site.register(Installment, InstallmentAdmin) - - -class YandexKassaHistoryAdmin(admin.ModelAdmin): - list_display = ('date', '_type', 'result', ) - +from django.contrib import admin +from django.http import HttpResponse + +from access.models import User +from finance.models import Bill, ServiceRequest, Price, Installment, YandexKassaHistory, RequestAlert + +from import_export.admin import ImportExportModelAdmin + +from lms.tools import out_date_format + + +def export_bills(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"№", 3000), + (u"Дата платежа", 6000), + (u"Продукт", 8000), + (u'ФИО', 6000), + (u'Сумма', 8000), + (u'Сумма минус комиссия', 1000), + (u"Комиссия", 4000), + (u"№ Транзакции", 1000), + (u'ID в системе', 1000), + (u'Email', 3000), + (u"Телефон", 3000) + ] + + 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) + 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 = [ + row_num, + out_date_format(obj.status_changed), + obj.service.get_name() if obj.service else '-', + obj.user.get_name(), + obj.price, + obj.real_price if obj.user.phone else '-', + str(float(obj.price) - float(obj.real_price)) if obj.real_price else '-', + obj.out_id if obj.out_id else '-', + obj.id, + obj.user.email, + obj.user.phone if obj.user.phone 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_bills.short_description = u"Отчет по поступлениям" + + +class BillAdmin(ImportExportModelAdmin): + list_display = ('user', 'status', 'manager', 'opener', '_method', 'service', 'price', 'real_price', 'date', 'status_changed', 'traf_source', 'gen_pay_link') + raw_id_fields = ['user'] + search_fields = ['user__email', 'id'] + list_filter = ['date', 'status_changed', 'status', 'user__in_role', '_method', 'created_sent', 'service', 'date'] + actions = [export_bills] + + def formfield_for_foreignkey(self, db_field, request=None, **kwargs): + if db_field.name == "opener": + kwargs["queryset"] = User.objects.filter(is_admin=True) + return super(BillAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) + +admin.site.register(Bill, BillAdmin) + + +class ServiceRequestAdmin(admin.ModelAdmin): + list_display = ('get_lead_name', 'get_client_name', 'date', 'send', 'send_date', 'host', ) + list_filter = ('send', 'company', 'service', 'host', ) + search_fields = ['lead_name', 'email', 'phone', 'name', 'host'] + +admin.site.register(ServiceRequest, ServiceRequestAdmin) + + +class PriceAdmin(admin.ModelAdmin): + list_display = ('title', 'course', 'cost', 'public', 'key', 'url', 'freepay', ) + filter_horizontal = ['included'] + list_filter = ['freepay'] + +admin.site.register(Price, PriceAdmin) + + +class InstallmentAdmin(admin.ModelAdmin): + list_display = ('user', 'price', 'first_price', 'period', 'date', 'f_date', 'rest', 'wait', 'expired') + list_filter = ['expired'] + raw_id_fields = ['user'] + search_fields = ['user__email', 'user__fname', 'user__name', 'price', 'first_price'] + +admin.site.register(Installment, InstallmentAdmin) + + +class RequestAlertAdmin(admin.ModelAdmin): + list_display = ('title', '_count', 'date', 'f_date', ) + list_filter = ['title', 'date', 'f_date'] + search_fields = ('mails', 'title', ) + +admin.site.register(RequestAlert, RequestAlertAdmin) + + +class YandexKassaHistoryAdmin(admin.ModelAdmin): + list_display = ('date', '_type', 'result', ) + admin.site.register(YandexKassaHistory, YandexKassaHistoryAdmin) \ No newline at end of file diff --git a/finance/amo.py b/finance/amo.py index dc57cce..4bfc1e9 100644 --- a/finance/amo.py +++ b/finance/amo.py @@ -1,22 +1,42 @@ -from finance.models import ServiceRequest +import urllib + +import datetime + +from finance.models import ServiceRequest, RequestAlert from lms.decors import out_api_decor @out_api_decor(without_auth=True, method='POST', need_keys=['lead_name']) def new_request(request, context): - s = ServiceRequest.objects.create(lead_name=request.POST['lead_name']) - s.data = str(request.POST.items) - try: - s.company, s.product, s.service = request.POST['lead_name'].split(' | ') + date = datetime.datetime.now() + last = ServiceRequest.objects.filter(send=False).order_by('date').last() + if last and last.send_date: + if last.send_date > datetime.datetime.now(): + date = last.send_date + datetime.timedelta(minutes=1) + + s = ServiceRequest.objects.create( + lead_name=urllib.parse.unquote(request.POST['lead_name'], encoding='utf8').replace("+", " "), + send_date=date, + data=str({i: urllib.parse.unquote(n, encoding='utf8').replace("+", " ") for i, n in request.POST.items()}) + ) + if request.META.get('HTTP_REFERER'): + s.host = request.META.get('HTTP_REFERER') + s.save() + + r, c = RequestAlert.objects.get_or_create(title=s.lead_name) + if not c: + r.up_count(s) + + try: if request.POST.get('name'): - s.name = request.POST.get('name') + s.name = urllib.parse.unquote(request.POST.get('name').replace("+", " "), encoding='utf8') if request.POST.get('phone'): - s.phone = request.POST.get('phone') + s.phone = urllib.parse.unquote(request.POST.get('phone'), encoding='utf8') if request.POST.get('email'): - s.email = request.POST.get('email') + s.email = urllib.parse.unquote(request.POST.get('email'), encoding='utf8') finally: s.save() 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 index f992ad1..bf1435d --- a/finance/models.py +++ b/finance/models.py @@ -1,14 +1,15 @@ # coding=utf-8 +import json import urllib import datetime from django.db import models import django.utils.timezone from access.models import User, TrafHistory -from lms.settings import BILL_URL, BILL_LOGIN, BILL_KEY, DOMAIN, YANDEX_SHOP_ID, YANDEX_scid +from lms.settings import BILL_URL, BILL_LOGIN, DOMAIN, YANDEX_SHOP_ID, YANDEX_scid from lms.tools import random_string, gen_pay_sig, out_uri, out_date_format from courses.models import Course, MATERIALS_TYPE, CourseMap -from management.letters import sent_new_service_request, sent_created_my_self_bill, sent_new_my_self_bill, new_student, \ - pay_no_public_course +from management.letters import sent_created_my_self_bill, sent_new_my_self_bill, new_student, \ + pay_no_public_course, sent_new_service_request_to_out from service.models import MailBox @@ -106,13 +107,19 @@ class Bill(models.Model): ('H', u'Сгорел') ) BILL_METHOD = ( + ('C', u'Наличные'), ('H', u'JustClick'), + ('B', u'Банковский перевод'), + ('G', u'На расчетный счет'), + ('A', u'Альфа-Банк'), + ('P', u'PayPal'), + ('W', u'WebMoney'), ('S', u'SimplePay'), ('Y', u'YandexKassa') ) gift = models.BooleanField(verbose_name=u'Подарок', default=False) status = models.CharField(verbose_name=u'Статус', max_length=1, default='W', choices=BILL_STATUSES) - _method = models.CharField(verbose_name=u'Способ оплаты', max_length=2, default='H', choices=BILL_METHOD) + _method = models.CharField(verbose_name=u'Способ оплаты', max_length=2, default='Y', choices=BILL_METHOD) price = models.CharField(verbose_name=u'Сумма', max_length=255, null=True, blank=True) real_price = models.CharField(verbose_name=u'Полученная сумма', max_length=255, null=True, blank=True, help_text=u'Сумма, минус комиссия') @@ -305,7 +312,6 @@ class ServiceRequest(models.Model): ('S', 'Органично'), ('B', 'Привлечен') ) - amo = models.BooleanField(verbose_name=u'Отправлен в AMO', default=False, editable=False) company = models.CharField(verbose_name=u'Компания продавец', max_length=255, blank=True, default='') product = models.CharField(verbose_name=u'Продукт', max_length=255, blank=True, default='') service = models.CharField(verbose_name=u'Услуга', max_length=255, blank=True, default='') @@ -314,7 +320,7 @@ class ServiceRequest(models.Model): phone = models.CharField(verbose_name=u'phone', max_length=255, blank=True, default='') lead_name = models.CharField(verbose_name=u'Метка amo', max_length=255, blank=True, default='') data = models.TextField(verbose_name=u'Данные', help_text=u'Словарь упаковывается в строку', default='') - + host = models.CharField(verbose_name=u'Источник запроса', default='', editable=False, max_length=255) _type = models.CharField(verbose_name=u'Тип запроса', max_length=1, choices=BY_TYPE, default='S') status = models.CharField(verbose_name=u'Статус', max_length=1, choices=SERVICE_REQUEST_STATUS, default='S') student = models.ForeignKey(User, verbose_name=u'Студент', related_name='student_user', blank=True, null=True) @@ -324,7 +330,8 @@ class ServiceRequest(models.Model): charge = models.TextField(verbose_name=u'Поручение', default='', blank=True) date = models.DateTimeField(verbose_name=u'Дата заказа', default=datetime.datetime.now) f_date = models.DateTimeField(verbose_name=u'Дата обаботки', blank=True, null=True) - send = models.BooleanField(verbose_name=u'Отправлено', default=False) + send = models.BooleanField(verbose_name=u'Отправлен в AMO', default=False, editable=False) + send_date = models.DateTimeField(verbose_name=u'Время отправки', default=datetime.datetime.now, editable=False) def get_name(self): if self.course: @@ -343,7 +350,7 @@ class ServiceRequest(models.Model): def get_lead_name(self): if self.lead_name: - _name = self.name + _name = self.lead_name else: _product = '' @@ -359,8 +366,41 @@ class ServiceRequest(models.Model): return u'%s' % _name def sent_to_amo(self): - #file_get_contents("http://skill-box.ru/amocrm/CreateLead.php?name=".urlencode($name)."&phone=".urlencode($phone)."&email=".urlencode($email)."&roistat=".urlencode($roistat)."&lead_name=".urlencode($subject)); - pass + if self.data: + data = json.loads(self.data.replace("'", "\"")) + else: + name = '' + phone = '' + email = '' + + if self.name: + name = self.name + elif self.student: + name = self.student.get_full_name() + + if self.phone: + phone = self.phone + elif self.student: + phone = self.student.get_phone() + + if self.email: + email = self.email + elif self.student: + email = self.student.email + + data = { + 'name': name, + 'phone': phone, + 'email': email, + 'lead_name': self.get_lead_name() + } + + urllib.request.urlopen(out_uri('https://skill-box.ru/amocrm/CreateLead.php', data)) + if not self.send: + data['host'] = self.host + self.send = True + self.save() + self.send_alert(data) def __unicode__(self): return u'%s %s' % (self.status, self.student) @@ -368,6 +408,18 @@ class ServiceRequest(models.Model): def __str__(self): return u'%s %s' % (self.status, self.student) + def send_alert(self, data): + # Отправка оповещений + # Получить почты + try: + r = RequestAlert.objects.get(title=self.lead_name) + except RequestAlert.DoesNotExists: + pass + else: + # Отправить письма + for i in r.get_mails(): + sent_new_service_request_to_out(self.lead_name, data, i) + def save(self, *args, **kwargs): super(ServiceRequest, self).save(*args, **kwargs) @@ -376,6 +428,37 @@ class ServiceRequest(models.Model): verbose_name_plural = u'Запросы на прокупки' +class RequestAlert(models.Model): + title = models.CharField(verbose_name=u'Классификатор', max_length=255, editable=False) + requests = models.ManyToManyField(ServiceRequest, verbose_name=u'Количество заявок', blank=True, null=True, editable=False) + mails = models.TextField(verbose_name=u'Список почт', blank=True, + help_text=u'Кому разослать дубли заявки. ЧЕРЕЗ ТОЧКУ С ЗАПЯТОЙ') + date = models.DateTimeField(verbose_name=u'Начало заявок', default=datetime.datetime.now, editable=False) + f_date = models.DateTimeField(verbose_name=u'Последняя заявка', default=datetime.datetime.now, editable=False) + + def __unicode__(self): + return u'%s' % self.title + + def __str__(self): + return u'%s' % self.title + + def _count(self): + return self.requests.filter(date__gte=self.date).count() + + def up_count(self, request): + # Увеличение счетчика + self.requests.add(request) + self.f_date = datetime.datetime.now() + self.save() + + def get_mails(self): + return map(lambda x: x.replace(" ", ""), str(self.mails).split(';')) if self.mails else None + + class Meta: + verbose_name = u'Оповещение о новых заявках' + verbose_name_plural = u'Оповещения о новых заявках' + + class YandexKassaHistory(models.Model): _type = models.CharField(verbose_name=u'Тип запроса', max_length=255, default='') date = models.DateTimeField(verbose_name=u'Дата', default=datetime.datetime.now) 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 8c56765..febb53d --- a/finance/tasks.py +++ b/finance/tasks.py @@ -1,33 +1,37 @@ -# coding=utf-8 -from celery.task import periodic_task -from datetime import timedelta, datetime -from finance.models import Price, Bill -from courses.models import CourseMap -from access.models import User -from management.letters import free_week_end - - -@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() - +# coding=utf-8 +from celery.task import periodic_task +from datetime import timedelta, datetime +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(name='TEST').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..a43ac78 --- 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/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 87bd39f..68a1200 --- a/journals/admin.py +++ b/journals/admin.py @@ -1,250 +1,250 @@ -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) +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 0dbc18f..2f4d4ee --- a/journals/api.py +++ b/journals/api.py @@ -1,161 +1,161 @@ -# 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 - w = journal.first().parent.parent.waiting - if w.exists(): - if w.first().token != journal.first().material.token: - if w.first().token > journal.first().material.token: - context['code'] = '1' - return context - context['code'] = '0' - 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 + w = journal.first().parent.parent.waiting + if w.exists(): + if w.first().token != journal.first().material.token: + if w.first().token > journal.first().material.token: + context['code'] = '1' + return context + context['code'] = '0' + 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/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/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/models.py b/library/models.py old mode 100755 new mode 100644 index 94bad25..71901ca --- 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, null=True) - likes = models.ManyToManyField(User, verbose_name=u'Лайки', max_length=255, null=True, 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'Комментарии', null=True, blank=True, editable=False) - favorite = models.ManyToManyField(User, verbose_name=u'В фаворитах', blank=True, null=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, null=True) + likes = models.ManyToManyField(User, verbose_name=u'Лайки', max_length=255, null=True, 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'Комментарии', null=True, blank=True, editable=False) + favorite = models.ManyToManyField(User, verbose_name=u'В фаворитах', blank=True, null=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/lms/create_comments_bbtext.py b/lms/create_comments_bbtext.py index 191cbc6..6886789 100644 --- a/lms/create_comments_bbtext.py +++ b/lms/create_comments_bbtext.py @@ -2,11 +2,10 @@ import os import django import sys - - sys.path.append("/var/www/projects/codemy/") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") django.setup() + from management.models import Comment from lms.tools import convert_html_to_bb diff --git a/lms/decors.py b/lms/decors.py index 57cd4e7..4326032 100644 --- a/lms/decors.py +++ b/lms/decors.py @@ -10,6 +10,8 @@ from django.template import RequestContext from django.views.decorators.csrf import csrf_exempt from django.shortcuts import render_to_response, redirect import simplejson + +from django.contrib.auth import logout from finance.models import Bill from access.models import ActionJ, User from lms.settings import DOMAIN, NAME, SUPPORT, SUPPORT_PHONE, SUPPORT_TIME, ADDRESS, COMMENT_SECRET @@ -88,6 +90,10 @@ def response_decor(template, without_auth=False, description=''): # Обслуживание стандартного запроса http def wrap_response(func): def _render_json(request, *args, **kwargs): + if request.user.is_authenticated() and request.user.block: + block_len = request.user.get_ip_len() + logout(request) + return redirect('/?userblocked={0}'.format(block_len)) if request.user.is_authenticated() or without_auth: parameters = func(request, *args, **kwargs) parameters['DOMAIN'] = DOMAIN diff --git a/lms/settings.py b/lms/settings.py index 3a5ae7a..df9e639 100644 --- a/lms/settings.py +++ b/lms/settings.py @@ -1,169 +1,169 @@ -# coding=utf-8 -import os -import raven -# Build paths inside the project like this: os.path.join(BASE_DIR, ...) -BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/1.9/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = '!eiquy7_+2#vn3z%zfp51$m-=tmvtcv*cj*@x$!v(_9btq0w=$' -COMMENT_SECRET = 'ntyy70()&^&%)_^%#++i[k,q4jnb' - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True -TESTING = False -TEST_EMAIL = 'bez.b.unix@gmail.com' -TEACHER = 't@skillbox.ru' -SUPERVISOR = 's@skillbox.ru' -MANAGER = 'm@skillbox.ru' -SUPPORT = 'hello@skillbox.ru' -SUPPORT_PHONE = '+7 (495) 984-41-77' -SUPPORT_TIME = '(с 10 до 19 по Москве)' -ADDRESS = 'Москва, ул. Бауманская, д. 11' -AUTH_USER_MODEL = 'access.User' -VZAAR = 'f1e965defc6fbaa92c544cf84267e830' -SMS = '5ED9C6BB-41E8-C760-10FA-F8A310D88952' -ALLOWED_HOSTS = ['*'] -DOMAIN = 'https://go.skillbox.ru' -NAME = u'SkillBox - обучающая платформа' - -BROKER_URL = 'amqp://guest:guest@localhost:5672//' -CELERY_ACCEPT_CONTENT = ['json'] -CELERY_TASK_SERIALIZER = 'json' -CELERY_RESULT_SERIALIZER = 'json' -CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' -BILL_LOGIN = '1501' -BILL_URL = 'https://api.simplepay.pro/sp/payment' -BILL_KEY = u'848360a6b0b8cdfaca3603ede75e4d8b' -BILL_RESULT_KEY = u'82a513fc6a0bd9cb087e0df4be5520f6' -BILL_TOKEN = u'c63fc7fdc74de318e1f9b078b6d4406a3e62f522b00fb305afe61c0ead238eb9c88dcab6b324727537fe5c1631cba3a9bcb76955364aa269334b42fb4099d236' -AMO_USER_LOGIN = 'baryshnikov@mokselle.com' -AMO_USER_HASH = 'd639c26c1c1900e5a8cee66cd3395bdc' -AMO_SUBDOMAIN = 'mokselle' -EMAIL_HOST = 'smtp.yandex.ru' -EMAIL_HOST_PASSWORD = 'nu5Xefise' -EMAIL_HOST_USER = 'robo@skill-box.ru' -EMAIL_PORT = '587' -EMAIL_USE_TLS = True -DEFAULT_FROM_EMAIL = 'robo@skill-box.ru' -YANDEX_MONEY_SHOP_PASSWORD = 'nu5Xefise' -YANDEX_SHOP_ID = '84348' -YANDEX_scid = '78309' -# Application definition - -INSTALLED_APPS = [ - #'jet.dashboard', - #'jet', - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'access', - 'courses', - 'storage', - 'management', - 'finance', - 'djcelery', - 'redactor', - 'raven.contrib.django.raven_compat', - 'journals', - 'service', - 'import_export', - 'library', - 'practice', - 'precise_bbcode', -] - -MIDDLEWARE_CLASSES = [ - 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', -] - -ROOT_URLCONF = 'lms.urls' - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [os.path.join(BASE_DIR, 'templates')] - , - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - }, - }, -] - -WSGI_APPLICATION = 'lms.wsgi.application' - - -# Database -# https://docs.djangoproject.com/en/1.9/ref/settings/#databases - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql_psycopg2', - 'NAME': os.environ.get('DB_NAME', 'codemy'), - 'USER': os.environ.get('PG_ENV_POSTGRES_USER', 'team'), - 'PASSWORD': os.environ.get('PG_ENV_POSTGRES_PASSWORD', 'nu5Xefise'), - 'HOST': os.environ.get('PG_PORT_5432_TCP_ADDR', '77.244.221.176'), - 'PORT': os.environ.get('PG_PORT_5432_TCP_PORT', '5432'), - }, - } - -# Password validation -# https://docs.djangoproject.com/en/1.9/ref/settings/#auth-password-validators -AUTHENTICATION_BACKENDS = ['lms.CUSTOM_AUTH.ModelBackend'] -AUTH_PASSWORD_VALIDATORS = [ - { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', - }, -] - - -# Internationalization -# https://docs.djangoproject.com/en/1.9/topics/i18n/ - -LANGUAGE_CODE = 'ru' -TIME_ZONE = 'Europe/Moscow' -USE_I18N = True -USE_L10N = True -USE_TZ = False - - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/1.9/howto/static-files/ -MEDIA_ROOT = os.path.join(BASE_DIR, 'media/') -MEDIA_URL = '/media/' -STATIC_ROOT = os.path.join(BASE_DIR, 'static/') -STATIC_URL = '/static/' -REDACTOR_OPTIONS = {'lang': 'ru'} -REDACTOR_UPLOAD = 'uploads/' - -RAVEN_CONFIG = { - 'dsn': 'http://56855e5263f04dbda3e97fb9c950cb45:02ceda8b67bc45fb800754958bca7883@s.codemy.ru/2' -} +# coding=utf-8 +import os +import raven +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/1.9/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = '!eiquy7_+2#vn3z%zfp51$m-=tmvtcv*cj*@x$!v(_9btq0w=$' +COMMENT_SECRET = 'ntyy70()&^&%)_^%#++i[k,q4jnb' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = False +TESTING = False +TEST_EMAIL = 'bez.b.unix@gmail.com' +TEACHER = 't@skillbox.ru' +SUPERVISOR = 's@skillbox.ru' +MANAGER = 'm@skillbox.ru' +SUPPORT = 'hello@skillbox.ru' +SUPPORT_PHONE = '+7 (495) 984-41-77' +SUPPORT_TIME = '(с 10 до 19 по Москве)' +ADDRESS = 'Москва, ул. Бауманская, д. 11' +AUTH_USER_MODEL = 'access.User' +VZAAR = 'f1e965defc6fbaa92c544cf84267e830' +SMS = '5ED9C6BB-41E8-C760-10FA-F8A310D88952' +ALLOWED_HOSTS = ['*'] +DOMAIN = 'https://go.skillbox.ru' +NAME = u'SkillBox - обучающая платформа' + +BROKER_URL = 'amqp://guest:guest@localhost:5672//' +CELERY_ACCEPT_CONTENT = ['json'] +CELERY_TASK_SERIALIZER = 'json' +CELERY_RESULT_SERIALIZER = 'json' +CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' +BILL_LOGIN = '1501' +BILL_URL = 'https://api.simplepay.pro/sp/payment' +BILL_KEY = u'848360a6b0b8cdfaca3603ede75e4d8b' +BILL_RESULT_KEY = u'82a513fc6a0bd9cb087e0df4be5520f6' +BILL_TOKEN = u'c63fc7fdc74de318e1f9b078b6d4406a3e62f522b00fb305afe61c0ead238eb9c88dcab6b324727537fe5c1631cba3a9bcb76955364aa269334b42fb4099d236' +AMO_USER_LOGIN = 'baryshnikov@mokselle.com' +AMO_USER_HASH = 'd639c26c1c1900e5a8cee66cd3395bdc' +AMO_SUBDOMAIN = 'mokselle' +EMAIL_HOST = 'smtp.yandex.ru' +EMAIL_HOST_PASSWORD = 'nu5Xefise' +EMAIL_HOST_USER = 'robo@skill-box.ru' +EMAIL_PORT = '587' +EMAIL_USE_TLS = True +DEFAULT_FROM_EMAIL = 'robo@skill-box.ru' +YANDEX_MONEY_SHOP_PASSWORD = 'nu5Xefise' +YANDEX_SHOP_ID = '84348' +YANDEX_scid = '78309' +# Application definition + +INSTALLED_APPS = [ + #'jet.dashboard', + #'jet', + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'access', + 'courses', + 'storage', + 'management', + 'finance', + 'djcelery', + 'redactor', + 'raven.contrib.django.raven_compat', + 'journals', + 'service', + 'import_export', + 'library', + 'practice', + 'precise_bbcode', +] + +MIDDLEWARE_CLASSES = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'lms.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [os.path.join(BASE_DIR, 'templates')] + , + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'lms.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/1.9/ref/settings/#databases + +DATABASES = { + 'default': { + 'HOST': '192.168.0.2', + 'ENGINE': 'django.db.backends.postgresql_psycopg2', + 'NAME': 'codemy', + 'USER': 'team', + 'PASSWORD': 'nu5Xefise' + } + } + + +# Password validation +# https://docs.djangoproject.com/en/1.9/ref/settings/#auth-password-validators +AUTHENTICATION_BACKENDS = ['lms.CUSTOM_AUTH.ModelBackend'] +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/1.9/topics/i18n/ + +LANGUAGE_CODE = 'ru-ru' +TIME_ZONE = 'Europe/Moscow' +USE_I18N = True +USE_L10N = True +USE_TZ = False + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/1.9/howto/static-files/ +MEDIA_ROOT = os.path.join(BASE_DIR, 'media/') +MEDIA_URL = '/media/' +STATIC_ROOT = os.path.join(BASE_DIR, 'static/') +STATIC_URL = '/static/' +REDACTOR_OPTIONS = {'lang': 'ru'} +REDACTOR_UPLOAD = 'uploads/' + +RAVEN_CONFIG = { + 'dsn': 'http://56855e5263f04dbda3e97fb9c950cb45:02ceda8b67bc45fb800754958bca7883@s.codemy.ru/2' +} diff --git a/lms/urls.py b/lms/urls.py index 759d374..fec0be9 100644 --- a/lms/urls.py +++ b/lms/urls.py @@ -25,6 +25,7 @@ urlpatterns = ( url(r'^journals/', include('journals.urls')), url(r'^library/', include('library.urls')), url(r'^forum/', include('management.forum_urls')), + url(r'^service/', include('service.urls')), url(r'^redactor/', include('redactor.urls')), #url(r'^jet/', include('jet.urls', 'jet')), #url(r'^jet/dashboard/', include('jet.dashboard.urls', 'jet-dashboard')), 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 index 3c83a78..d379860 --- a/management/letters.py +++ b/management/letters.py @@ -36,6 +36,27 @@ def sent_new_service_request(request, email): return data +@letter_decor() +def sent_new_service_request_to_out(title, request, email): + context = { + 'TITLE': title, + 'USER_NAME': request.get('name'), + 'PHONE': request.get('phone'), + 'EMAIL': request.get('email'), + 'HOST': request.get('host'), + 'DOMAIN': DOMAIN, + 'NAME': NAME + } + data = { + 'title': title, + 'text': '', + 'email': email, + 'type': 'Оповещения', + 'result': get_template('mails/sent_out_order.html').render(context) + } + return data + + @letter_decor() def sent_new_self_bill(request, email): data = { diff --git a/management/mails.py b/management/mails.py old mode 100755 new mode 100644 index ab6b88f..aa55fd3 --- a/management/mails.py +++ b/management/mails.py @@ -1,17 +1,17 @@ -# 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 3333cec..089101c --- 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, null=True, related_name='all_text_response', editable=False) - answers = models.ManyToManyField('self', verbose_name=u'Форумные ответы', blank=True, null=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, null=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, null=True, related_name='all_text_response', editable=False) + answers = models.ManyToManyField('self', verbose_name=u'Форумные ответы', blank=True, null=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, null=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..307bb5e --- 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/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/api.py b/practice/api.py index 4cb801f..07f0851 100644 --- a/practice/api.py +++ b/practice/api.py @@ -1,5 +1,5 @@ +# -*- coding: utf-8 -*- from django.http import Http404 - from lms.decors import api_decor from practice.models import DataSheet 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/practice/views.py b/practice/views.py index d1e9942..4d2b4ec 100644 --- a/practice/views.py +++ b/practice/views.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- from django.http import Http404 from lms.decors import response_decor from practice.models import 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 82d12a0..2faa716 --- a/service/models.py +++ b/service/models.py @@ -1,190 +1,190 @@ -# 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 - 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 + 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/admin/fonts/LICENSE.txt b/static/admin/fonts/LICENSE.txt index 75b5248..d645695 100644 --- a/static/admin/fonts/LICENSE.txt +++ b/static/admin/fonts/LICENSE.txt @@ -1,202 +1,202 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/static/admin/js/admin/DateTimeShortcuts.js b/static/admin/js/admin/DateTimeShortcuts.js index 1943935..bc7e187 100644 --- a/static/admin/js/admin/DateTimeShortcuts.js +++ b/static/admin/js/admin/DateTimeShortcuts.js @@ -297,8 +297,8 @@ if (inp.value) { var format = get_format('DATE_INPUT_FORMATS')[0]; var selected = inp.value.strptime(format); - var year = selected.getUTCFullYear(); - var month = selected.getUTCMonth() + 1; + var year = selected.getFullYear(); + var month = selected.getMonth() + 1; var re = /\d{4}/; if (re.test(year.toString()) && month >= 1 && month <= 12) { DateTimeShortcuts.calendars[num].drawDate(month, year, selected); diff --git a/static/admin/js/core.js b/static/admin/js/core.js index 1840948..34f9926 100644 --- a/static/admin/js/core.js +++ b/static/admin/js/core.js @@ -240,10 +240,7 @@ function findPosY(obj) { } ++i; } - // Create Date object from UTC since the parsed value is supposed to be - // in UTC, not local time. Also, the calendar uses UTC functions for - // date extraction. - return new Date(Date.UTC(year, month, day)); + return new Date(year, month, day); }; })(); diff --git a/static/css/404.css b/static/css/404.css old mode 100755 new mode 100644 index c2b641c..2909e88 --- a/static/css/404.css +++ b/static/css/404.css @@ -1,360 +1,360 @@ -#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); } ; -} +#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 old mode 100755 new mode 100644 index 78c0a38..0b6a47d --- a/static/css/animate.min.css +++ b/static/css/animate.min.css @@ -1,6 +1,6 @@ -@charset "UTF-8";/*! -Animate.css - http://daneden.me/animate -Licensed under the MIT license - http://opensource.org/licenses/MIT - -Copyright (c) 2015 Daniel Eden +@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 old mode 100755 new mode 100644 index eb6e545..b0d53b8 --- a/static/css/app.css +++ b/static/css/app.css @@ -1,6358 +1,6358 @@ -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; +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; } \ No newline at end of file diff --git a/static/css/app.min.css b/static/css/app.min.css old mode 100755 new mode 100644 index e30a0e3..9a671b5 --- a/static/css/app.min.css +++ b/static/css/app.min.css @@ -1,23 +1,23 @@ -/*! - * 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}} - +/*! + * 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 old mode 100755 new mode 100644 index d756bf8..3c61e6b --- a/static/css/aside.css +++ b/static/css/aside.css @@ -1,123 +1,123 @@ -@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; - } +@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 old mode 100755 new mode 100644 diff --git a/static/css/bootstrap-datepicker.standalone.min.css b/static/css/bootstrap-datepicker.standalone.min.css old mode 100755 new mode 100644 diff --git a/static/css/bootstrap.min.css b/static/css/bootstrap.min.css old mode 100755 new mode 100644 index a5620a1..9ccd00b --- a/static/css/bootstrap.min.css +++ b/static/css/bootstrap.min.css @@ -1,5 +1,5 @@ -/*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) +/*! + * 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 old mode 100755 new mode 100644 diff --git a/static/css/csshake.min.css b/static/css/csshake.min.css old mode 100755 new mode 100644 diff --git a/static/css/editor.scss b/static/css/editor.scss old mode 100755 new mode 100644 diff --git a/static/css/flickity.css b/static/css/flickity.css old mode 100755 new mode 100644 diff --git a/static/css/font-awesome.min.css b/static/css/font-awesome.min.css old mode 100755 new mode 100644 index aae88c4..ee4e978 --- a/static/css/font-awesome.min.css +++ b/static/css/font-awesome.min.css @@ -1,4 +1,4 @@ -/*! - * 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"} +/*! + * 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 old mode 100755 new mode 100644 index 00d6931..5f81967 --- a/static/css/font.css +++ b/static/css/font.css @@ -1,52 +1,52 @@ -@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; +@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 old mode 100755 new mode 100644 diff --git a/static/css/hupercomment.css b/static/css/hupercomment.css index 56c2cca..961f3aa 100644 --- a/static/css/hupercomment.css +++ b/static/css/hupercomment.css @@ -4,8 +4,5 @@ .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 old mode 100755 new mode 100644 index ae096dd..2ec84d4 --- a/static/css/jqiuery_dialogs.css +++ b/static/css/jqiuery_dialogs.css @@ -1,117 +1,117 @@ -.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; +.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 old mode 100755 new mode 100644 diff --git a/static/css/jquery-ui.structure.min.css b/static/css/jquery-ui.structure.min.css old mode 100755 new mode 100644 diff --git a/static/css/jquery.Jcrop.css b/static/css/jquery.Jcrop.css old mode 100755 new mode 100644 index 9a5dccf..788e03e --- a/static/css/jquery.Jcrop.css +++ b/static/css/jquery.Jcrop.css @@ -1,171 +1,171 @@ -/* 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; +/* 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 old mode 100755 new mode 100644 index 7497ba7..e90553e --- a/static/css/jquery.fancybox.css +++ b/static/css/jquery.fancybox.css @@ -1,274 +1,274 @@ -/*! 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*/ - } +/*! 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 old mode 100755 new mode 100644 diff --git a/static/css/pie_chart.css b/static/css/pie_chart.css old mode 100755 new mode 100644 index b30b0c5..dc47626 --- a/static/css/pie_chart.css +++ b/static/css/pie_chart.css @@ -1,39 +1,39 @@ -.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 { +} +.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 old mode 100755 new mode 100644 diff --git a/static/css/simditor.scss b/static/css/simditor.scss old mode 100755 new mode 100644 diff --git a/static/css/simple-line-icons.css b/static/css/simple-line-icons.css old mode 100755 new mode 100644 index e1ac735..d2d6733 --- a/static/css/simple-line-icons.css +++ b/static/css/simple-line-icons.css @@ -1,754 +1,754 @@ -@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"; -} +@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 old mode 100755 new mode 100644 index c595af6..99affe2 --- a/static/css/skill_show.css +++ b/static/css/skill_show.css @@ -1,112 +1,112 @@ -.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; -} +.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 old mode 100755 new mode 100644 diff --git a/static/css/tilda-grid.css b/static/css/tilda-grid.css old mode 100755 new mode 100644 diff --git a/static/css/tilda_blocks.css b/static/css/tilda_blocks.css old mode 100755 new mode 100644 index bcceb12..62a2784 --- a/static/css/tilda_blocks.css +++ b/static/css/tilda_blocks.css @@ -1,2793 +1,2793 @@ -@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; - } +@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 old mode 100755 new mode 100644 index 483c3a4..83eed19 --- a/static/css/timeTo.css +++ b/static/css/timeTo.css @@ -1,104 +1,104 @@ -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; -} +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 old mode 100755 new mode 100644 index 892ed0f..8e5d143 --- a/static/css/timer.css +++ b/static/css/timer.css @@ -1,53 +1,53 @@ -.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; +.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 old mode 100755 new mode 100644 index 6d1cc77..b4f4c6a --- a/static/djcelery/style.css +++ b/static/djcelery/style.css @@ -1,4 +1,4 @@ -.form-row.field-traceback p { - font-family: monospace; - white-space: pre; -} +.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 old mode 100755 new mode 100644 index 176edf2..cf3753e --- a/static/fonts/Exo2-Bold-demo.html +++ b/static/fonts/Exo2-Bold-demo.html @@ -1,608 +1,608 @@ - - - - - - - - - - - - - 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.

    -
    - - -
    - -
    - -
    - -
    - - + + + + + + + + + + + + + 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 old mode 100755 new mode 100644 diff --git a/static/fonts/Exo2-Bold-webfont.svg b/static/fonts/Exo2-Bold-webfont.svg old mode 100755 new mode 100644 index 617be97..46c930b --- a/static/fonts/Exo2-Bold-webfont.svg +++ b/static/fonts/Exo2-Bold-webfont.svg @@ -1,2390 +1,2390 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/fonts/Exo2-Bold-webfont.ttf b/static/fonts/Exo2-Bold-webfont.ttf old mode 100755 new mode 100644 diff --git a/static/fonts/Exo2-Bold-webfont.woff b/static/fonts/Exo2-Bold-webfont.woff old mode 100755 new mode 100644 diff --git a/static/fonts/Exo2-Light-demo.html b/static/fonts/Exo2-Light-demo.html old mode 100755 new mode 100644 index 54c8a80..f8e479d --- a/static/fonts/Exo2-Light-demo.html +++ b/static/fonts/Exo2-Light-demo.html @@ -1,608 +1,608 @@ - - - - - - - - - - - - - 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.

    -
    - - -
    - -
    - -
    - -
    - - + + + + + + + + + + + + + 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 old mode 100755 new mode 100644 diff --git a/static/fonts/Exo2-Light-webfont.svg b/static/fonts/Exo2-Light-webfont.svg old mode 100755 new mode 100644 index 838be2c..6a1c8da --- a/static/fonts/Exo2-Light-webfont.svg +++ b/static/fonts/Exo2-Light-webfont.svg @@ -1,2377 +1,2377 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/fonts/Exo2-Light-webfont.ttf b/static/fonts/Exo2-Light-webfont.ttf old mode 100755 new mode 100644 diff --git a/static/fonts/Exo2-Light-webfont.woff b/static/fonts/Exo2-Light-webfont.woff old mode 100755 new mode 100644 diff --git a/static/fonts/Exo2-Regular-demo.html b/static/fonts/Exo2-Regular-demo.html old mode 100755 new mode 100644 index 1b2ee31..4c1e6b7 --- a/static/fonts/Exo2-Regular-demo.html +++ b/static/fonts/Exo2-Regular-demo.html @@ -1,608 +1,608 @@ - - - - - - - - - - - - - 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.

    -
    - - -
    - -
    - -
    - -
    - - + + + + + + + + + + + + + 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 old mode 100755 new mode 100644 diff --git a/static/fonts/Exo2-Regular-webfont.svg b/static/fonts/Exo2-Regular-webfont.svg old mode 100755 new mode 100644 index 7dc0517..efbbdf0 --- a/static/fonts/Exo2-Regular-webfont.svg +++ b/static/fonts/Exo2-Regular-webfont.svg @@ -1,2377 +1,2377 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/fonts/Exo2-Regular-webfont.ttf b/static/fonts/Exo2-Regular-webfont.ttf old mode 100755 new mode 100644 diff --git a/static/fonts/Exo2-Regular-webfont.woff b/static/fonts/Exo2-Regular-webfont.woff old mode 100755 new mode 100644 diff --git a/static/fonts/FiraSans-Heavy.otf b/static/fonts/FiraSans-Heavy.otf old mode 100755 new mode 100644 diff --git a/static/fonts/FontAwesome.otf b/static/fonts/FontAwesome.otf old mode 100755 new mode 100644 diff --git a/static/fonts/Simple-Line-Icons.eot b/static/fonts/Simple-Line-Icons.eot old mode 100755 new mode 100644 diff --git a/static/fonts/Simple-Line-Icons.svg b/static/fonts/Simple-Line-Icons.svg old mode 100755 new mode 100644 index fe5927e..6c9f7c5 --- a/static/fonts/Simple-Line-Icons.svg +++ b/static/fonts/Simple-Line-Icons.svg @@ -1,1369 +1,1369 @@ - - - - -This is a custom SVG font generated by IcoMoon. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +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 old mode 100755 new mode 100644 diff --git a/static/fonts/Simple-Line-Icons.woff b/static/fonts/Simple-Line-Icons.woff old mode 100755 new mode 100644 diff --git a/static/fonts/cour.ttf b/static/fonts/cour.ttf old mode 100755 new mode 100644 diff --git a/static/fonts/courbd.ttf b/static/fonts/courbd.ttf old mode 100755 new mode 100644 diff --git a/static/fonts/courbi.ttf b/static/fonts/courbi.ttf old mode 100755 new mode 100644 diff --git a/static/fonts/couri.ttf b/static/fonts/couri.ttf old mode 100755 new mode 100644 diff --git a/static/fonts/fontawesome-webfont.eot b/static/fonts/fontawesome-webfont.eot old mode 100755 new mode 100644 diff --git a/static/fonts/fontawesome-webfont.svg b/static/fonts/fontawesome-webfont.svg old mode 100755 new mode 100644 index a5c1044..d907b25 --- a/static/fonts/fontawesome-webfont.svg +++ b/static/fonts/fontawesome-webfont.svg @@ -1,520 +1,520 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/fonts/fontawesome-webfont.ttf b/static/fonts/fontawesome-webfont.ttf old mode 100755 new mode 100644 diff --git a/static/fonts/fontawesome-webfont.woff b/static/fonts/fontawesome-webfont.woff old mode 100755 new mode 100644 diff --git a/static/fonts/glyphicons-halflings-regular.eot b/static/fonts/glyphicons-halflings-regular.eot old mode 100755 new mode 100644 diff --git a/static/fonts/glyphicons-halflings-regular.svg b/static/fonts/glyphicons-halflings-regular.svg old mode 100755 new mode 100644 index 8376c0f..94fb549 --- a/static/fonts/glyphicons-halflings-regular.svg +++ b/static/fonts/glyphicons-halflings-regular.svg @@ -1,288 +1,288 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/fonts/glyphicons-halflings-regular.ttf b/static/fonts/glyphicons-halflings-regular.ttf old mode 100755 new mode 100644 diff --git a/static/fonts/glyphicons-halflings-regular.woff b/static/fonts/glyphicons-halflings-regular.woff old mode 100755 new mode 100644 diff --git a/static/fonts/glyphicons-halflings-regular.woff2 b/static/fonts/glyphicons-halflings-regular.woff2 old mode 100755 new mode 100644 diff --git a/static/fonts/sourcesanspro/sourcesanspro-bold.woff b/static/fonts/sourcesanspro/sourcesanspro-bold.woff old mode 100755 new mode 100644 diff --git a/static/fonts/sourcesanspro/sourcesanspro-light.woff b/static/fonts/sourcesanspro/sourcesanspro-light.woff old mode 100755 new mode 100644 diff --git a/static/fonts/sourcesanspro/sourcesanspro.woff b/static/fonts/sourcesanspro/sourcesanspro.woff old mode 100755 new mode 100644 diff --git a/static/img/1447222756_information_support.svg b/static/img/1447222756_information_support.svg old mode 100755 new mode 100644 diff --git a/static/img/clippy.svg b/static/img/clippy.svg old mode 100755 new mode 100644 diff --git a/static/img/favicon.ico b/static/img/favicon.ico old mode 100755 new mode 100644 diff --git a/static/import_export/action_formats.js b/static/import_export/action_formats.js old mode 100755 new mode 100644 diff --git a/static/js/NTP.js b/static/js/NTP.js old mode 100755 new mode 100644 index 0bc1056..96fc42b --- a/static/js/NTP.js +++ b/static/js/NTP.js @@ -1,112 +1,112 @@ -/* -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' - } -} +/* +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 old mode 100755 new mode 100644 index ca4536a..4db1240 --- a/static/js/all_comments.js +++ b/static/js/all_comments.js @@ -1,281 +1,281 @@ -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 = '' - } - - 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; +function show_theme_materials(id){ + $('[name=theme_materials_button]').attr('class', 'b-a list-group-item'); + $('[name=theme_materials_button][id='+id+']').attr('class', 'b-a list-group-item active'); + $('[name=theme_listing]').hide(); + $('[name=theme_listing][id='+id+']').fadeIn(1000); +} +function show_lesson_materials(id){ + $('[name=lesson_materials_button]').attr('class', 'b-a list-group-item'); + $('[name=lesson_materials_button][id='+id+']').attr('class', 'b-a list-group-item active'); + $('[name=lesson_materials]').html(''); + $('[name=lesson_materials]').html(write_lesson_material(get_lesson_context(id))); +} +function show_homework_materials(id){ + $('[name=lesson_materials_button]').attr('class', 'b-a list-group-item'); + $('[name=lesson_materials_button][id=homework_'+id+']').attr('class', 'b-a list-group-item active'); + $('[name=lesson_materials]').html(''); + $('[name=lesson_materials]').html(write_homework_material(get_homework_context(id))); +} +function show_one_lesson_materials(id){ + $('[name=theme_listing]').hide(); + $('[name=theme_materials_button]').attr('class', 'b-a list-group-item'); + $('[name=theme_materials_button][id='+id+']').attr('class', 'b-a list-group-item active'); + $('[name=lesson_materials]').html(''); + $('[name=lesson_materials]').html(write_lesson_material(get_lesson_context(id))); +} +function show_homework_students(id){ + $('[name=homework_students_button]').attr('class', 'b-a list-group-item'); + $('[name=homework_students_button][id='+id+']').attr('class', 'b-a list-group-item active'); + $('[name=homework_students]').hide(); + $('[name=student_dialog]').hide(); + $('[name=big_lesson_block]').hide(); + $('[name=homework_students][id='+id+']').fadeIn(1000) +} +function show_homework_student_dialog(id){ + if (typeof(id) != 'string'){ + var block = $(id); + $('[name=student_dialog_button]').attr('class', 'b-a list-group-item'); + $('[name=student_dialog_button][id='+block.attr('student_id')+']').attr('class', 'b-a list-group-item active'); + $('[name=lesson_comments_block]').attr('lesson_id', block.attr('theme_id')); + $('[name=USER_ID]').val(block.attr('student_id')); + $('[name=THEME_ID]').val(block.attr('theme_id')); + $('[name=comment_for_user_id]').val(block.attr('student_id')); + $('[name=comment_for_theme_id]').val(block.attr('theme_id')); + $('[name=student_dialog]').hide(); + $('[name=big_lesson_block]').show(); + reload_lesson_comments() + } else { + $('[name=student_dialog_button]').attr('class', 'b-a list-group-item'); + $('[name=student_dialog_button][id='+id+']').attr('class', 'b-a list-group-item active'); + $('[name=big_lesson_block]').hide(); + $('[name=student_dialog]').hide(); + $('[name=student_dialog][id='+id+']').fadeIn(1000) + } + +} +function show_one_lesson_comments(id){ + $('[name=theme_listing]').hide(); + $('[name=theme_materials_button]').attr('class', 'b-a list-group-item'); + $('[name=theme_materials_button][id='+id+']').attr('class', 'b-a list-group-item active'); + $('[name=lesson_comments_block]').attr('lesson_id', id); + $('[name=LESSON_ID]').val(id); + $('[name=comment_for_lesson_id]').val(id); + $('[name=big_lesson_block]').show(); + reload_lesson_comments() +} +function show_lesson_comments(id){ + $('[name=lesson_materials_button]').attr('class', 'b-a list-group-item'); + $('[name=lesson_materials_button][id='+id+']').attr('class', 'b-a list-group-item active'); + $('[name=lesson_comments_block]').attr('lesson_id', id); + $('[name=LESSON_ID]').val(id); + $('[name=comment_for_lesson_id]').val(id); + $('[name=big_lesson_block]').show(); + reload_lesson_comments() +} +function write_lesson_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 = '' + } + + + 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 old mode 100755 new mode 100644 index 7409458..96b7e8c --- a/static/js/apis/teacher_exam_comments.js +++ b/static/js/apis/teacher_exam_comments.js @@ -1,249 +1,249 @@ -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 = ' -
    - - {% if request.user.is_authenticated %} -
    - -
    Последняя активность
    -
    -
    -
    -
    минуту назад
    Курс «Профессия веб-разработчик», занятие 6
    -

    Ваше домашнее задание одобрено преподавателем.

    -
    -
    -
    -
    -
    23:30
    Курс «Профессия веб-разработчик», занятие 6.
    -

    Ваше домашнее задание проверено преподавателем. Вам необходимо провести работу над ошибками

    -
    -
    -
    -
    -
    понедельник, 03.02.2015
    Курс «Профессия веб-разработчик», занятие 6.
    -

    Преподаватель оставил комментарий

    -
    -
    -
    - -
    - {% endif %} -
    +{% include 'right_site.html' %} {% endblock %} \ No newline at end of file diff --git a/templates/contacts.html b/templates/contacts.html old mode 100755 new mode 100644 index becaade..376d822 --- a/templates/contacts.html +++ b/templates/contacts.html @@ -1,43 +1,43 @@ -{% extends 'base_index.html' %} -{% block title %}Контакты компании{% endblock %} -{% block page_title %}Контакты компании{% endblock %} -{% block content %} -
    -
    -
    -
    -

    - Контакты компании -

    - -
    -
    -
    - - -
    - Наш офис
    -

    Россия, Москва
    Бауманская улица, 11с8

    -
    -
    - Юридическая информация
    -

    ИП Коропов Игорь Валентинович
    ИНН 504793474705
    ОГРНИП 314504727900026

    -
    -
    - Контакты
    -

    Общие вопросы:
    -{{ SUPPORT }}
    -Тех вопросы:
    -{{ SUPPORT }}

    -
    -
    - -
    -
    - -
    -
    +{% extends 'base_index.html' %} +{% block title %}Контакты компании{% endblock %} +{% block page_title %}Контакты компании{% endblock %} +{% block content %} +
    +
    +
    +
    +

    + Контакты компании +

    + +
    +
    +
    + + +
    + Наш офис
    +

    Россия, Москва
    Бауманская улица, 11с8

    +
    +
    + Юридическая информация
    +

    ИП Коропов Игорь Валентинович
    ИНН 504793474705
    ОГРНИП 314504727900026

    +
    +
    + Контакты
    +

    Общие вопросы:
    +{{ SUPPORT }}
    +Тех вопросы:
    +{{ SUPPORT }}

    +
    +
    + +
    +
    + +
    +
    {% endblock %} \ No newline at end of file diff --git a/templates/course.html b/templates/course.html old mode 100755 new mode 100644 index f2593c7..564dcf7 --- a/templates/course.html +++ b/templates/course.html @@ -1,324 +1,333 @@ -{% extends 'base_index.html' %} -{% load course_filter %} -{% block title %}Курс {{ course.head.title }}{% endblock %} -{% block content %} - -
    -
    - -
    -
    -
    -
    -
    -
    -
    - {{ course.head.level.title }} уровень -
    -
    - - {{ course.head.title }} - -
    - {% if course.head.skills %} -
    - Приобретаемые навыки: - {% for skill in course.head.skills %} - {% if skill.mini_icon %}{% endif %}{{ skill }} - {% endfor %} -
    - {% endif %} -
    - {{ course.head.lessons }} урока(-ов) -
    -
    -
    -
    - {% if course.head.progress != 0 %} -
    - {{ course.head.progress }}% -
    - {% endif %} -
    -
    -
    -
    - -
    -
    -
    - -
      -

      -  Просмотрено   -  Доступно   -  Не доступно   -

      -
    • -
      Старт
      -
    • - - {% for i in course.themes %} - - {% if i.head.status.flag == 'A' %} - - {% endif %} - - - -
    • -
      - - {% if i.head.lessons_length > 0 %} - - {% else %} - {% for h in i.homework %} - - {% endfor %} - {% endif %} - - - Тема {{ i.head.sort }}
      - -
      -
      - -
      - - - -
      - - {% if i.head.lessons_length > 0 %} - - {% else %} - - {% for h in i.homework %} - - {% endfor %} - {% endif %} - {{ i.head.title|safe }} - - - {% if i.head.status.flag != 'N' %} - {{ i.head.status.title }} - {% endif %} - - - - {% if i.head.lessons_length > 1 %} -
      Уроков: {{ i.head.lessons_length }}
      - {% endif %} -
      - -
      - {% if i.head.skills %} -
      - Приобретаемые навыки: - {% for n in i.head.skills %} - {% if n.mini_icon %}{% endif %}{{ n }} - {% endfor %} -
      - {% endif %} - - {% if i.head.lessons_length > 1 %} - - {% else %} - {% if i.head.lessons_length == 1 %} - {% for les in i.lessons %} - {% if les.status.flag != 'N' %} -
      -

      - Статус урока: - - {{ les.status.title|safe }} - -

      -
      - {% endif %} - {% endfor %} - - {% if i.head.description %} -

      Описание:

      - - {% endif %} - {% else %} - {% if i.head.description %} -

      Описание:

      - - {% endif %} - {% endif %} - - {% endif %} - - {% if i.homeworks_length != 0 %} - - {% for h in i.homework %} - {% if i.head.lessons_length == 0 %} -
      -

      - {{ h.description|safe }} - - - {{ h.status.title|safe }} - {% if h.status.flag == 'T' or h.status.flag == 'A' %} - {% if h.delay.status %} -
      Могут быть незначительные задержки с проверкой{% if h.delay.description %}: "{{ h.delay.description|safe }}"{% endif %} - {% endif %} - {% endif %} -
      -

      -
      - {% else %} -
      -

      -   Домашнее задание: - - - {{ h.status.title|safe }} - {% if h.status.flag == 'T' or h.status.flag == 'A' %} - {% if h.delay.status %} -
      Могут быть незначительные задержки с проверкой{% if h.delay.description %}: "{{ h.delay.description|safe }}"{% endif %} - {% endif %} - {% endif %} -
      -

      -
      - {% endif %} - {% endfor %} - {% endif %} - - {% if i.head.status.flag != 'N' %} - {% if i.head.button %} - - {% endif %} - {% endif %} - -
      -
      -
      -
    • - {% endfor %} -
    • -
      Финиш
      -
    • -
    -
    -
    - - -
    - - -{% include 'right_site.html' %} - -{% endblock %} -{% block js %} - - -{% endblock %} +{% extends 'base_index.html' %} +{% load course_filter %} +{% block title %}Курс {{ course.head.title }}{% endblock %} +{% block content %} + +
    +
    + +
    +
    +
    +
    +
    +
    +
    + {{ course.head.level.title }} уровень +
    +
    + + {{ course.head.title }} + +
    + {% if course.head.skills %} +
    + Приобретаемые навыки: + {% for skill in course.head.skills %} + {% if skill.mini_icon %}{% endif %}{{ skill }} + {% endfor %} +
    + {% endif %} +
    + {{ course.head.lessons }} урока(-ов) +
    +
    +
    +
    + {% if course.head.progress != 0 %} +
    + {{ course.head.progress }}% +
    + {% endif %} +
    +
    +
    +
    + +
    +
    +
    + +
      +

      +  Просмотрено   +  Доступно   +  Не доступно   +

      +
    • +
      Старт
      +
    • + + {% for i in course.themes %} + + {% if i.head.status.flag == 'A' %} + + {% endif %} + + + +
    • +
      + {% if i.head.lessons_length > 0 %} + {% if i.head.button %} + + {% else %} + + {% endif %} + {% else %} + {% for h in i.homework %} + + {% endfor %} + {% endif %} + + + Тема {{ i.head.sort }}
      + +
      +
      + +
      + + + +
      + + {% if i.head.lessons_length > 0 %} + {% if i.head.button %} + + {% else %} + + {% endif %} + {% else %} + + {% for h in i.homework %} + + {% endfor %} + {% endif %} + {{ i.head.title|safe }} + + + {% if i.head.status.flag != 'N' %} + + {{ i.head.status.title }} + + {% endif %} + + + + {% if i.head.lessons_length > 1 %} +
      Уроков: {{ i.head.lessons_length }}
      + {% endif %} +
      + +
      + {% if i.head.skills %} +
      + Приобретаемые навыки: + {% for n in i.head.skills %} + {% if n.mini_icon %}{% endif %}{{ n }} + {% endfor %} +
      + {% endif %} + + {% if i.head.lessons_length > 1 %} + + {% else %} + {% if i.head.lessons_length == 1 %} + {% for les in i.lessons %} + {% if les.status.flag != 'N' %} +
      +

      + Статус урока: + + {{ les.status.title|safe }} + +

      +
      + {% endif %} + {% endfor %} + + {% if i.head.description %} +

      Описание:

      + + {% endif %} + {% else %} + {% if i.head.description %} +

      Описание:

      + + {% endif %} + {% endif %} + + {% endif %} + + {% if i.homeworks_length != 0 %} + + {% for h in i.homework %} + {% if i.head.lessons_length == 0 %} +
      +

      + {{ h.description|safe }} + + + {{ h.status.title|safe }} + {% if h.status.flag == 'T' or h.status.flag == 'A' %} + {% if h.delay.status %} +
      Могут быть незначительные задержки с проверкой{% if h.delay.description %}: "{{ h.delay.description|safe }}"{% endif %} + {% endif %} + {% endif %} +
      +

      +
      + {% else %} +
      +

      +   Домашнее задание: + + + {{ h.status.title|safe }} + {% if h.status.flag == 'T' or h.status.flag == 'A' %} + {% if h.delay.status %} +
      Могут быть незначительные задержки с проверкой{% if h.delay.description %}: "{{ h.delay.description|safe }}"{% endif %} + {% endif %} + {% endif %} +
      +

      +
      + {% endif %} + {% endfor %} + {% endif %} + + {% if i.head.status.flag != 'N' %} + {% if i.head.button %} + + {% endif %} + {% endif %} + +
      +
      +
      +
    • + {% endfor %} +
    • +
      Финиш
      +
    • +
    +
    +
    + + +
    + + +{% include 'right_site.html' %} + +{% endblock %} +{% block js %} + + +{% endblock %} diff --git a/templates/everyone_modals.html b/templates/everyone_modals.html old mode 100755 new mode 100644 index 787405a..9d632a3 --- a/templates/everyone_modals.html +++ b/templates/everyone_modals.html @@ -1,165 +1,165 @@ - - - - - - - - -{% if request.GET.success_pay %} - - - - - -{% endif %} - -{% if request.GET.fail_pay %} - - - - -{% endif %} + + + + + + + + +{% if request.GET.success_pay %} + + + + + +{% endif %} + +{% if request.GET.fail_pay %} + + + + +{% endif %} diff --git a/templates/exam.html b/templates/exam.html old mode 100755 new mode 100644 index 0c384be..e7844e5 --- a/templates/exam.html +++ b/templates/exam.html @@ -1,333 +1,333 @@ -{% extends 'base_index.html' %} -{% block head %} - - -{% endblock %} -{% block title %}{{ course.head.title }} / Домашнее задание{% endblock %} - - -{% block content %} - - {% if exam.heaad.status == 'T' %} - - {% endif %} - -
    - -
    -
    -
    -
    -
    -
    -
    - {{ course.level.title }} уровень -
    -
    - - {{ course.head.title }} - -
    -
    - Приобретаемые навыки: - {% for skill in course.head.skills %} - {% if skill.mini_icon %}{% endif %}{{ skill }} - {% endfor %} -
    -
    - {{ course.head.lessons }} урока(-ов) -
    -
    -
    -
    - {% if course.head.progress != 0 %} -
    - {{ course.head.progress }}% -
    - {% endif %} -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -

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

    -
    - {{ exam.head.description|safe }} -
    -
    -
    -
    -
    - {% if exam.materials %} -
    -
    -
    - Материалы к заданию -
    - {% for i in exam.materials %} - - {% endfor %} -
    -
    - {% endif %} -
    -
    -
    - -
    - - - {% if exam.tries %} -

     Попыток: ({{ exam.tries|length }}) :

    - {% endif %} -
    - {% if exam.tries %} - {% for try in exam.tries %} -
    -
    - - -
    -
    - - LMS: ~# - - Попытка №{{ forloop.counter }} - - - - - - - - - - - - - - - -
    -
    - -
    - {% for comment in try.comments %} - -
    - - -
    -
    - - {{ comment.owner }} - - - {{ comment.date }} -
    -
    -
    {{ comment.text|safe }}
    - {% for file in comment.files %} - - {% endfor %} -
    -
    - -
    - - {% endfor %} -
    - {% endfor %} - {% endif %} - {% if request.user.is_authenticated %} - {% if exam.head.status.flag != 'N' and exam.head.status.flag != 'F' %} - - -
    -

     ОСТАВИТЬ СООБЩЕНИЕ :

    -
    - {% if request.user.is_authenticated and resuqest.user.in_role == 'Ts' or request.user.in_role == 'A' %} - - Просто отправить - Заставить одобрить - Заставить отказать - {% endif %} -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - -
    -
    - -
    - -
    -
    -
    - - - -
    - - - -
    - -
    - {% endif %} - {% else %} -

    Для работы с домашним заданием, авторизуйтесь.

    - {% endif %} -
    -
    -
    -
    - - - -{% include 'right_site.html' %} - - - -{% endblock %} - -{% block js %} - - - +{% extends 'base_index.html' %} +{% block head %} + + +{% endblock %} +{% block title %}{{ course.head.title }} / Домашнее задание{% endblock %} + + +{% block content %} + + {% if exam.heaad.status == 'T' %} + + {% endif %} + +
    + +
    +
    +
    +
    +
    +
    +
    + {{ course.level.title }} уровень +
    +
    + + {{ course.head.title }} + +
    +
    + Приобретаемые навыки: + {% for skill in course.head.skills %} + {% if skill.mini_icon %}{% endif %}{{ skill }} + {% endfor %} +
    +
    + {{ course.head.lessons }} урока(-ов) +
    +
    +
    +
    + {% if course.head.progress != 0 %} +
    + {{ course.head.progress }}% +
    + {% endif %} +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +

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

    +
    + {{ exam.head.description|safe }} +
    +
    +
    +
    +
    + {% if exam.materials %} +
    +
    +
    + Материалы к заданию +
    + {% for i in exam.materials %} + + {% endfor %} +
    +
    + {% endif %} +
    +
    +
    + +
    + + + {% if exam.tries %} +

     Попыток: ({{ exam.tries|length }}) :

    + {% endif %} +
    + {% if exam.tries %} + {% for try in exam.tries %} +
    +
    + + +
    +
    + + LMS: ~# + + Попытка №{{ forloop.counter }} + + + + + + + + + + + + + + + +
    +
    + +
    + {% for comment in try.comments %} + +
    + + +
    +
    + + {{ comment.owner }} + + + {{ comment.date }} +
    +
    +
    {{ comment.text|safe }}
    + {% for file in comment.files %} + + {% endfor %} +
    +
    + +
    + + {% endfor %} +
    + {% endfor %} + {% endif %} + {% if request.user.is_authenticated %} + {% if exam.head.status.flag != 'N' and exam.head.status.flag != 'F' %} + + +
    +

     ОСТАВИТЬ СООБЩЕНИЕ :

    +
    + {% if request.user.is_authenticated and resuqest.user.in_role == 'Ts' or request.user.in_role == 'A' %} + + Просто отправить + Заставить одобрить + Заставить отказать + {% endif %} +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + +
    +
    + +
    + +
    +
    +
    + + + +
    + + + +
    + +
    + {% endif %} + {% else %} +

    Для работы с домашним заданием, авторизуйтесь.

    + {% endif %} +
    +
    +
    +
    + + + +{% include 'right_site.html' %} + + + +{% endblock %} + +{% block js %} + + + {% endblock %} \ No newline at end of file diff --git a/templates/fail_pay.html b/templates/fail_pay.html old mode 100755 new mode 100644 index 3eab4a7..115ba5c --- a/templates/fail_pay.html +++ b/templates/fail_pay.html @@ -1,185 +1,185 @@ -{% extends 'base_index.html' %} -{% load static %} -{% load course_filter %} -{% block page_title %}Доступные курсы{% endblock %} -{% block head %} -{% endblock %} -{% block content %} -
    -
    -
    -
    -

    - Доступные курсы -

    -
    -
    -
    -
    - - {% for i in courses %} -
    - -
    - {% if i.level == 'B' %} -
    - {{ i.get_level_display }} уровень -
    - {% else %} - {% if i.level == 'A' %} -
    - {{ i.get_level_display }} уровень -
    - {% else %} - {% if i.level == 'E' %} -
    - {{ i.get_level_display }} уровень -
    - {% endif %} - {% endif %} - {% endif %} -
    -
    - {% if i.id|get_progress_persent:request.user.id != 0 %} -
    - {{ i.id|get_progress_persent:request.user.id }}% -
    - {% endif %} -
    {{ i.title }}
    - {{ i.lessons_length }} урока(-ов) -
    - {% for skill in i.get_skills %} - {{ skill.skill }} - {% endfor %} -
    -
    -
    - {% for n in i.skills %} - {{ i.skill }} - {% endfor %} -
    -
    - - - -
    - -
    - {% endfor %} - -
    -
    -
    - -{% if request.user.is_authenticated %} - {% if actions %} -
    - -
    Последняя активность

    ВСЯ ИСТОРИЯ

    -
    - {% for i in actions %} -
    -
    -
    {{ i.date }}
    {{ i.place }}
    -

    {{ i.text|safe }}

    -
    -
    - {% endfor %} -
    - -
    - {% endif %} - {% endif %} - - -
    -
    -
    - - Chat -
    -
    -
    -
    - -
    - ... -
    -
    - -

    Hi John, What's up...

    -
    - 2 minutes ago -
    -
    -
    - ... -
    -
    - -

    Lorem ipsum dolor :)

    -
    - 1 minutes ago -
    -
    -
    - ... -
    -
    - -

    Great!

    -
    - Just Now -
    -
    - -
    -
    -
    -
    -
    -
    - - - - -
    -
    -
    -
    -
    - - -
    -{% endblock %} - -{% block js %} - - +{% extends 'base_index.html' %} +{% load static %} +{% load course_filter %} +{% block page_title %}Доступные курсы{% endblock %} +{% block head %} +{% endblock %} +{% block content %} +
    +
    +
    +
    +

    + Доступные курсы +

    +
    +
    +
    +
    + + {% for i in courses %} +
    + +
    + {% if i.level == 'B' %} +
    + {{ i.get_level_display }} уровень +
    + {% else %} + {% if i.level == 'A' %} +
    + {{ i.get_level_display }} уровень +
    + {% else %} + {% if i.level == 'E' %} +
    + {{ i.get_level_display }} уровень +
    + {% endif %} + {% endif %} + {% endif %} +
    +
    + {% if i.id|get_progress_persent:request.user.id != 0 %} +
    + {{ i.id|get_progress_persent:request.user.id }}% +
    + {% endif %} +
    {{ i.title }}
    + {{ i.lessons_length }} урока(-ов) +
    + {% for skill in i.get_skills %} + {{ skill.skill }} + {% endfor %} +
    +
    +
    + {% for n in i.skills %} + {{ i.skill }} + {% endfor %} +
    +
    + + + +
    + +
    + {% endfor %} + +
    +
    +
    + +{% if request.user.is_authenticated %} + {% if actions %} +
    + +
    Последняя активность

    ВСЯ ИСТОРИЯ

    +
    + {% for i in actions %} +
    +
    +
    {{ i.date }}
    {{ i.place }}
    +

    {{ i.text|safe }}

    +
    +
    + {% endfor %} +
    + +
    + {% endif %} + {% endif %} + + +
    +
    +
    + + Chat +
    +
    +
    +
    + +
    + ... +
    +
    + +

    Hi John, What's up...

    +
    + 2 minutes ago +
    +
    +
    + ... +
    +
    + +

    Lorem ipsum dolor :)

    +
    + 1 minutes ago +
    +
    +
    + ... +
    +
    + +

    Great!

    +
    + Just Now +
    +
    + +
    +
    +
    +
    +
    +
    + + + + +
    +
    +
    +
    +
    + + +
    +{% endblock %} + +{% block js %} + + {% endblock %} \ No newline at end of file diff --git a/templates/faq.html b/templates/faq.html old mode 100755 new mode 100644 index a9a02ed..71a8321 --- a/templates/faq.html +++ b/templates/faq.html @@ -1,111 +1,111 @@ -{% extends 'base_index.html' %} -{% block title %}Часто задаваемые вопросы{% endblock %} -{% block content %} -
    -
    -
    -
    -

    - {% if admin %}Внутренняя Ф@ка{% else %}Помощь в системе{% endif %} -

    -
    -
    -
    -
    - {% if a_faqs %} -
    - {% for i in a_faqs %} -
    - -
    -
    - -
    -
    -
    - {% endfor %} -
    -
    -
    -
    -

    - {% if admin %}Пользовательская Ф@ка{% endif %} -

    -
    -
    -
    - {% endif %} - -
    -
    - - - {% for i in faqs %} - - {% endfor %} -
    -
    - {% include 'right_site.html' %} -{% endblock %} -{% block js %} - +{% extends 'base_index.html' %} +{% block title %}Часто задаваемые вопросы{% endblock %} +{% block content %} +
    +
    +
    +
    +

    + {% if admin %}Внутренняя Ф@ка{% else %}Помощь в системе{% endif %} +

    +
    +
    +
    +
    + {% if a_faqs %} +
    + {% for i in a_faqs %} +
    + +
    +
    + +
    +
    +
    + {% endfor %} +
    +
    +
    +
    +

    + {% if admin %}Пользовательская Ф@ка{% endif %} +

    +
    +
    +
    + {% endif %} + +
    +
    + + + {% for i in faqs %} + + {% endfor %} +
    +
    + {% include 'right_site.html' %} +{% endblock %} +{% block js %} + {% endblock %} \ No newline at end of file diff --git a/templates/faq_one.html b/templates/faq_one.html old mode 100755 new mode 100644 index d775651..7fb4a83 --- a/templates/faq_one.html +++ b/templates/faq_one.html @@ -1,25 +1,25 @@ -{% extends 'base_index.html' %} -{% block title %}Часто задаваемые вопросы{% endblock %} -{% block content %} -
    -
    -
    -
    -

    - Назад - {{ faq.question }} - {% if request.user.is_authenticated and request.user.is_admin %} - - {% endif %} -

    -
    -
    -
    -
    {{ faq.answer|safe }}
    -
    - {% include 'right_site.html' %} +{% extends 'base_index.html' %} +{% block title %}Часто задаваемые вопросы{% endblock %} +{% block content %} +
    +
    +
    +
    +

    + Назад + {{ faq.question }} + {% if request.user.is_authenticated and request.user.is_admin %} + + {% endif %} +

    +
    +
    +
    +
    {{ faq.answer|safe }}
    +
    + {% include 'right_site.html' %} {% endblock %} \ No newline at end of file diff --git a/templates/freeweek_more.html b/templates/freeweek_more.html old mode 100755 new mode 100644 index 4a3d68b..78bc911 --- a/templates/freeweek_more.html +++ b/templates/freeweek_more.html @@ -1,55 +1,55 @@ -{% extends 'reports/base_index.html' %} -{% load course_filter %} -{% block title %}Бесплатная неделя{% endblock %} -{% block page_title %}Бесплатная неделя{% endblock %} -{% block head %} -{% endblock %} -{% block content %} -

    - {{ title }} -

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    Всего пользователейПрошли активациюJava [ {{ java.all }} ]Web [ {{ web.all }} ]Android [ {{ android.all }} ]C# [ {{ csh.all }} ]
    {{ all }}{{ active.count }} [{{ active.persent }}%] - Проходят обучение: {{ java.in.count }}
    - Получили домашку: {{ java.in_hw }}
    - Сдали домашку: {{ java.out_hw }}
    -
    - Проходят обучение: {{ web.in.count }}
    - Получили домашку: {{ web.in_hw }}
    - Сдали домашку: {{ web.out_hw }}
    -
    - Проходят обучение: {{ android.in.count }}
    - Получили домашку: {{ android.in_hw }}
    - Сдали домашку: {{ android.out_hw }}
    -
    - Проходят обучение: {{ csh.in.count }}
    - Получили домашку: {{ csh.in_hw }}
    - Сдали домашку: {{ csh.out_hw }}
    -
    Открыть конкретикуОткрыть конкретикуОткрыть конкретикуОткрыть конкретику
    -{% endblock %} -{% block js %} -{% endblock %} +{% extends 'reports/base_index.html' %} +{% load course_filter %} +{% block title %}Бесплатная неделя{% endblock %} +{% block page_title %}Бесплатная неделя{% endblock %} +{% block head %} +{% endblock %} +{% block content %} +

    + {{ title }} +

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Всего пользователейПрошли активациюJava [ {{ java.all }} ]Web [ {{ web.all }} ]Android [ {{ android.all }} ]C# [ {{ csh.all }} ]
    {{ all }}{{ active.count }} [{{ active.persent }}%] + Проходят обучение: {{ java.in.count }}
    + Получили домашку: {{ java.in_hw }}
    + Сдали домашку: {{ java.out_hw }}
    +
    + Проходят обучение: {{ web.in.count }}
    + Получили домашку: {{ web.in_hw }}
    + Сдали домашку: {{ web.out_hw }}
    +
    + Проходят обучение: {{ android.in.count }}
    + Получили домашку: {{ android.in_hw }}
    + Сдали домашку: {{ android.out_hw }}
    +
    + Проходят обучение: {{ csh.in.count }}
    + Получили домашку: {{ csh.in_hw }}
    + Сдали домашку: {{ csh.out_hw }}
    +
    Открыть конкретикуОткрыть конкретикуОткрыть конкретикуОткрыть конкретику
    +{% endblock %} +{% block js %} +{% endblock %} diff --git a/templates/good_pay.html b/templates/good_pay.html old mode 100755 new mode 100644 index 3eab4a7..115ba5c --- a/templates/good_pay.html +++ b/templates/good_pay.html @@ -1,185 +1,185 @@ -{% extends 'base_index.html' %} -{% load static %} -{% load course_filter %} -{% block page_title %}Доступные курсы{% endblock %} -{% block head %} -{% endblock %} -{% block content %} -
    -
    -
    -
    -

    - Доступные курсы -

    -
    -
    -
    -
    - - {% for i in courses %} -
    - -
    - {% if i.level == 'B' %} -
    - {{ i.get_level_display }} уровень -
    - {% else %} - {% if i.level == 'A' %} -
    - {{ i.get_level_display }} уровень -
    - {% else %} - {% if i.level == 'E' %} -
    - {{ i.get_level_display }} уровень -
    - {% endif %} - {% endif %} - {% endif %} -
    -
    - {% if i.id|get_progress_persent:request.user.id != 0 %} -
    - {{ i.id|get_progress_persent:request.user.id }}% -
    - {% endif %} -
    {{ i.title }}
    - {{ i.lessons_length }} урока(-ов) -
    - {% for skill in i.get_skills %} - {{ skill.skill }} - {% endfor %} -
    -
    -
    - {% for n in i.skills %} - {{ i.skill }} - {% endfor %} -
    -
    - - - -
    - -
    - {% endfor %} - -
    -
    -
    - -{% if request.user.is_authenticated %} - {% if actions %} -
    - -
    Последняя активность

    ВСЯ ИСТОРИЯ

    -
    - {% for i in actions %} -
    -
    -
    {{ i.date }}
    {{ i.place }}
    -

    {{ i.text|safe }}

    -
    -
    - {% endfor %} -
    - -
    - {% endif %} - {% endif %} - - -
    -
    -
    - - Chat -
    -
    -
    -
    - -
    - ... -
    -
    - -

    Hi John, What's up...

    -
    - 2 minutes ago -
    -
    -
    - ... -
    -
    - -

    Lorem ipsum dolor :)

    -
    - 1 minutes ago -
    -
    -
    - ... -
    -
    - -

    Great!

    -
    - Just Now -
    -
    - -
    -
    -
    -
    -
    -
    - - - - -
    -
    -
    -
    -
    - - -
    -{% endblock %} - -{% block js %} - - +{% extends 'base_index.html' %} +{% load static %} +{% load course_filter %} +{% block page_title %}Доступные курсы{% endblock %} +{% block head %} +{% endblock %} +{% block content %} +
    +
    +
    +
    +

    + Доступные курсы +

    +
    +
    +
    +
    + + {% for i in courses %} +
    + +
    + {% if i.level == 'B' %} +
    + {{ i.get_level_display }} уровень +
    + {% else %} + {% if i.level == 'A' %} +
    + {{ i.get_level_display }} уровень +
    + {% else %} + {% if i.level == 'E' %} +
    + {{ i.get_level_display }} уровень +
    + {% endif %} + {% endif %} + {% endif %} +
    +
    + {% if i.id|get_progress_persent:request.user.id != 0 %} +
    + {{ i.id|get_progress_persent:request.user.id }}% +
    + {% endif %} +
    {{ i.title }}
    + {{ i.lessons_length }} урока(-ов) +
    + {% for skill in i.get_skills %} + {{ skill.skill }} + {% endfor %} +
    +
    +
    + {% for n in i.skills %} + {{ i.skill }} + {% endfor %} +
    +
    + + + +
    + +
    + {% endfor %} + +
    +
    +
    + +{% if request.user.is_authenticated %} + {% if actions %} +
    + +
    Последняя активность

    ВСЯ ИСТОРИЯ

    +
    + {% for i in actions %} +
    +
    +
    {{ i.date }}
    {{ i.place }}
    +

    {{ i.text|safe }}

    +
    +
    + {% endfor %} +
    + +
    + {% endif %} + {% endif %} + + +
    +
    +
    + + Chat +
    +
    +
    +
    + +
    + ... +
    +
    + +

    Hi John, What's up...

    +
    + 2 minutes ago +
    +
    +
    + ... +
    +
    + +

    Lorem ipsum dolor :)

    +
    + 1 minutes ago +
    +
    +
    + ... +
    +
    + +

    Great!

    +
    + Just Now +
    +
    + +
    +
    +
    +
    +
    +
    + + + + +
    +
    +
    +
    +
    + + +
    +{% endblock %} + +{% block js %} + + {% endblock %} \ No newline at end of file diff --git a/templates/homework.html b/templates/homework.html old mode 100755 new mode 100644 index 915f2aa..8de6d43 --- a/templates/homework.html +++ b/templates/homework.html @@ -1,336 +1,336 @@ -{% extends 'base_index.html' %} -{% block head %} - - -{% endblock %} -{% block title %}{{ course.head.title }} / Домашнее задание{% endblock %} - -{% block content %} - - {% if homework.heaad.status == 'T' %} - - {% endif %} - -
    - -
    -
    -
    -
    -
    -
    -
    - {{ course.level.title }} уровень -
    -
    - - {{ course.head.title }} - -
    -
    - Приобретаемые навыки: - {% for skill in course.head.skills %} - {% if skill.mini_icon %}{% endif %}{{ skill }} - {% endfor %} -
    -
    - {{ course.head.lessons }} урока(-ов) -
    -
    -
    -
    - {% if course.head.progress != 0 %} -
    - {{ course.head.progress }}% -
    - {% endif %} -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -

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

    -
    - {{ homework.head.description|safe }} -
    -
    -
    -
    -
    - {% if homework.materials %} -
    -
    -
    - Материалы к заданию -
    - {% for i in homework.materials %} - - {% endfor %} -
    -
    - {% endif %} -
    -
    -
    -
    - - - {% if homework.tries %} -

     Попыток: ({{ homework.tries|length }}) - {% if homework.head.status.flag == 'T' or homework.head.status.flag == 'A' %} - {% if homework.head.delay.status %} - Могут быть незначительные задержки с проверкой{% if homework.head.delay.description %}: "{{ homework.head.delay.description|safe }}"{% endif %} - {% endif %} - {% endif %} -

    - {% endif %} -
    - {% if homework.tries %} - {% for try in homework.tries %} -
    -
    - - -
    -
    - - LMS: ~# - - Попытка №{{ forloop.counter }} - - - - - - - - - - - - - - - -
    -
    - -
    - {% for comment in try.comments %} - -
    - - -
    -
    - - {{ comment.owner }} - - - {{ comment.date }} -
    -
    -
    {{ comment.text|safe }}
    - {% for file in comment.files %} - - {% endfor %} -
    -
    - -
    - - {% endfor %} -
    - {% endfor %} - {% endif %} - {% if request.user.is_authenticated %} - {% if homework.head.status.flag != 'N' and homework.head.status.flag != 'F' %} - - -
    -

    Оставить сообщение  :

    -
    - {% if request.user.is_authenticated and resuqest.user.in_role == 'Ts' or request.user.in_role == 'A' %} - - Просто отправить - Заставить одобрить - Заставить отказать - {% endif %} -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - -
    -
    - -
    - -
    -
    -
    - - - -
    - - - -
    - -
    - {% endif %} - {% else %} -

    Для работы с домашним заданием, авторизуйтесь.

    - {% endif %} -
    -
    -
    -
    - - - -{% include 'right_site.html' %} - -{% endblock %} - -{% block js %} - - - +{% extends 'base_index.html' %} +{% block head %} + + +{% endblock %} +{% block title %}{{ course.head.title }} / Домашнее задание{% endblock %} + +{% block content %} + + {% if homework.heaad.status == 'T' %} + + {% endif %} + +
    + +
    +
    +
    +
    +
    +
    +
    + {{ course.level.title }} уровень +
    +
    + + {{ course.head.title }} + +
    +
    + Приобретаемые навыки: + {% for skill in course.head.skills %} + {% if skill.mini_icon %}{% endif %}{{ skill }} + {% endfor %} +
    +
    + {{ course.head.lessons }} урока(-ов) +
    +
    +
    +
    + {% if course.head.progress != 0 %} +
    + {{ course.head.progress }}% +
    + {% endif %} +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +

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

    +
    + {{ homework.head.description|safe }} +
    +
    +
    +
    +
    + {% if homework.materials %} +
    +
    +
    + Материалы к заданию +
    + {% for i in homework.materials %} + + {% endfor %} +
    +
    + {% endif %} +
    +
    +
    +
    + + + {% if homework.tries %} +

     Попыток: ({{ homework.tries|length }}) + {% if homework.head.status.flag == 'T' or homework.head.status.flag == 'A' %} + {% if homework.head.delay.status %} + Могут быть незначительные задержки с проверкой{% if homework.head.delay.description %}: "{{ homework.head.delay.description|safe }}"{% endif %} + {% endif %} + {% endif %} +

    + {% endif %} +
    + {% if homework.tries %} + {% for try in homework.tries %} +
    +
    + + +
    +
    + + LMS: ~# + + Попытка №{{ forloop.counter }} + + + + + + + + + + + + + + + +
    +
    + +
    + {% for comment in try.comments %} + +
    + + +
    +
    + + {{ comment.owner }} + + + {{ comment.date }} +
    +
    +
    {{ comment.text|safe }}
    + {% for file in comment.files %} + + {% endfor %} +
    +
    + +
    + + {% endfor %} +
    + {% endfor %} + {% endif %} + {% if request.user.is_authenticated %} + {% if homework.head.status.flag != 'N' and homework.head.status.flag != 'F' %} + + +
    +

    Оставить сообщение  :

    +
    + {% if request.user.is_authenticated and resuqest.user.in_role == 'Ts' or request.user.in_role == 'A' %} + + Просто отправить + Заставить одобрить + Заставить отказать + {% endif %} +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + +
    +
    + +
    + +
    +
    +
    + + + +
    + + + +
    + +
    + {% endif %} + {% else %} +

    Для работы с домашним заданием, авторизуйтесь.

    + {% endif %} +
    +
    +
    +
    + + + +{% include 'right_site.html' %} + +{% endblock %} + +{% block js %} + + + {% endblock %} \ No newline at end of file diff --git a/templates/index.html b/templates/index.html old mode 100755 new mode 100644 diff --git a/templates/index_menu.html b/templates/index_menu.html old mode 100755 new mode 100644 index f793934..80e484f --- a/templates/index_menu.html +++ b/templates/index_menu.html @@ -1,136 +1,136 @@ -