├── interface ├── __init__.py ├── migrations │ └── __init__.py ├── tests.py ├── apps.py ├── tasks.py └── serializers.py ├── static ├── xadmin │ ├── vendor │ │ ├── bootstrap-multiselect │ │ │ └── css │ │ │ │ └── bootstrap-multiselect.css │ │ ├── select2 │ │ │ ├── select2.png │ │ │ ├── select2x2.png │ │ │ ├── select2-spinner.gif │ │ │ ├── select2_locale_zh-CN.js │ │ │ ├── select2_locale_zh-hans.js │ │ │ ├── select2_locale_hu.js │ │ │ ├── select2_locale_de.js │ │ │ ├── select2_locale_tr.js │ │ │ ├── select2_locale_en.js │ │ │ ├── select2_locale_nl.js │ │ │ ├── select2_locale_sv.js │ │ │ ├── select2_locale_es.js │ │ │ ├── select2_locale_it.js │ │ │ ├── select2_locale_pt-BR.js │ │ │ ├── select2_locale_pt-PT.js │ │ │ ├── select2_locale_ro.js │ │ │ ├── select2_locale_fr.js │ │ │ ├── select2_locale_ru.js │ │ │ ├── select2_locale_ua.js │ │ │ ├── select2_locale_eu.js │ │ │ ├── select2_locale_hr.js │ │ │ └── select2_locale_sk.js │ │ ├── bootstrap-modal │ │ │ └── img │ │ │ │ └── ajax-loader.gif │ │ ├── font-awesome │ │ │ └── fonts │ │ │ │ ├── FontAwesome.otf │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ └── fontawesome-webfont.woff │ │ ├── bootstrap-image-gallery │ │ │ └── img │ │ │ │ └── loading.gif │ │ ├── bootstrap │ │ │ └── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ └── glyphicons-halflings-regular.woff │ │ ├── bootstrap-datepicker │ │ │ └── js │ │ │ │ └── locales │ │ │ │ ├── bootstrap-datepicker.kr.js │ │ │ │ ├── bootstrap-datepicker.zh-TW.js │ │ │ │ ├── bootstrap-datepicker.ja.js │ │ │ │ ├── bootstrap-datepicker.zh-CN.js │ │ │ │ ├── bootstrap-datepicker.hr.js │ │ │ │ ├── bootstrap-datepicker.id.js │ │ │ │ ├── bootstrap-datepicker.he.js │ │ │ │ ├── bootstrap-datepicker.ms.js │ │ │ │ ├── bootstrap-datepicker.ca.js │ │ │ │ ├── bootstrap-datepicker.da.js │ │ │ │ ├── bootstrap-datepicker.rs.js │ │ │ │ ├── bootstrap-datepicker.sv.js │ │ │ │ ├── bootstrap-datepicker.th.js │ │ │ │ ├── bootstrap-datepicker.tr.js │ │ │ │ ├── bootstrap-datepicker.bg.js │ │ │ │ ├── bootstrap-datepicker.es.js │ │ │ │ ├── bootstrap-datepicker.nl.js │ │ │ │ ├── bootstrap-datepicker.pt-BR.js │ │ │ │ ├── bootstrap-datepicker.rs-latin.js │ │ │ │ ├── bootstrap-datepicker.sl.js │ │ │ │ ├── bootstrap-datepicker.el.js │ │ │ │ ├── bootstrap-datepicker.nb.js │ │ │ │ ├── bootstrap-datepicker.ru.js │ │ │ │ ├── bootstrap-datepicker.uk.js │ │ │ │ ├── bootstrap-datepicker.ro.js │ │ │ │ ├── bootstrap-datepicker.cs.js │ │ │ │ ├── bootstrap-datepicker.is.js │ │ │ │ ├── bootstrap-datepicker.pt.js │ │ │ │ ├── bootstrap-datepicker.fi.js │ │ │ │ ├── bootstrap-datepicker.sk.js │ │ │ │ ├── bootstrap-datepicker.de.js │ │ │ │ ├── bootstrap-datepicker.fr.js │ │ │ │ ├── bootstrap-datepicker.hu.js │ │ │ │ ├── bootstrap-datepicker.it.js │ │ │ │ ├── bootstrap-datepicker.lv.js │ │ │ │ ├── bootstrap-datepicker.lt.js │ │ │ │ ├── bootstrap-datepicker.pl.js │ │ │ │ └── bootstrap-datepicker.sw.js │ │ ├── snapjs │ │ │ └── snap.css │ │ └── load-image │ │ │ └── load-image.min.js │ ├── css │ │ ├── xadmin.plugin.aggregation.css │ │ ├── xadmin.plugins.css │ │ ├── xadmin.plugin.quickfilter.css │ │ ├── xadmin.plugin.importexport.css │ │ ├── xadmin.page.dashboard.css │ │ ├── xadmin.widget.editable.css │ │ ├── xadmin.plugin.formset.css │ │ ├── xadmin.mobile.css │ │ └── themes │ │ │ └── bootstrap-xadmin.css │ └── js │ │ ├── xadmin.widget.multiselect.js │ │ ├── xadmin.plugin.batch.js │ │ ├── xadmin.plugin.refresh.js │ │ ├── xadmin.plugin.importexport.js │ │ ├── xadmin.plugin.bookmark.js │ │ ├── xadmin.plugin.revision.js │ │ ├── xadmin.plugin.portal.js │ │ ├── xadmin.page.list.js │ │ ├── xadmin.widget.select.js │ │ ├── xadmin.plugin.quickfilter.js │ │ ├── xadmin.plugin.sortablelist.js │ │ ├── xadmin.page.form.js │ │ ├── xadmin.plugin.filters.js │ │ └── xadmin.plugin.charts.js ├── debug_toolbar │ ├── css │ │ └── print.css │ ├── js │ │ └── redirect.js │ └── img │ │ ├── back.png │ │ ├── close.png │ │ ├── back_hover.png │ │ ├── indicator.png │ │ ├── ajax-loader.gif │ │ ├── close_hover.png │ │ └── djdt_vertical.png ├── img │ ├── home.gif │ ├── login.gif │ └── pycharm.png ├── silk │ ├── filter.png │ ├── filter2.png │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── fonts │ │ ├── fira │ │ │ ├── FiraSans-Bold.woff │ │ │ ├── FiraSans-Light.woff │ │ │ ├── FiraSans-Medium.woff │ │ │ ├── FiraSans-Regular.woff │ │ │ ├── FiraSans-BoldItalic.woff │ │ │ ├── FiraSans-LightItalic.woff │ │ │ ├── FiraSans-MediumItalic.woff │ │ │ └── FiraSans-RegularItalic.woff │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ ├── glyphicons-halflings-regular.woff2 │ │ └── fantasque │ │ │ ├── FantasqueSansMono-Bold.woff │ │ │ ├── FantasqueSansMono-Regular.woff │ │ │ ├── FantasqueSansMono-BoldItalic.woff │ │ │ └── FantasqueSansMono-RegItalic.woff │ ├── css │ │ ├── numeric.css │ │ ├── colors.css │ │ ├── heading.css │ │ ├── summary.css │ │ ├── cell.css │ │ └── fonts.css │ └── js │ │ ├── cell.js │ │ └── filters.js ├── rest_framework │ ├── img │ │ ├── grid.png │ │ ├── glyphicons-halflings.png │ │ └── glyphicons-halflings-white.png │ ├── docs │ │ ├── img │ │ │ ├── grid.png │ │ │ └── favicon.ico │ │ └── css │ │ │ ├── jquery.json-view.min.css │ │ │ └── highlight.css │ ├── fonts │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ ├── css │ │ ├── prettify.css │ │ └── default.css │ └── js │ │ ├── default.js │ │ └── csrf.js ├── drf-yasg │ ├── redoc │ │ └── redoc-logo.png │ ├── swagger-ui-dist │ │ ├── favicon-32x32.png │ │ ├── absolute-path.js │ │ └── index.js │ ├── style.css │ └── insQ.min.js ├── admin │ ├── fonts │ │ ├── Roboto-Bold-webfont.woff │ │ ├── Roboto-Light-webfont.woff │ │ ├── Roboto-Regular-webfont.woff │ │ └── README.txt │ ├── img │ │ ├── tooltag-arrowright.svg │ │ ├── README.txt │ │ ├── icon-addlink.svg │ │ ├── tooltag-add.svg │ │ ├── icon-changelink.svg │ │ ├── icon-deletelink.svg │ │ ├── icon-yes.svg │ │ ├── search.svg │ │ ├── icon-alert.svg │ │ ├── icon-no.svg │ │ ├── inline-delete.svg │ │ ├── icon-viewlink.svg │ │ ├── icon-unknown.svg │ │ ├── icon-unknown-alt.svg │ │ ├── icon-clock.svg │ │ ├── gis │ │ │ ├── move_vertex_on.svg │ │ │ └── move_vertex_off.svg │ │ ├── icon-calendar.svg │ │ ├── calendar-icons.svg │ │ ├── LICENSE │ │ └── sorting-icons.svg │ ├── js │ │ ├── prepopulate.min.js │ │ ├── jquery.init.js │ │ ├── cancel.js │ │ ├── prepopulate_init.js │ │ ├── popup_response.js │ │ ├── vendor │ │ │ ├── select2 │ │ │ │ ├── i18n │ │ │ │ │ ├── zh-TW.js │ │ │ │ │ ├── zh-CN.js │ │ │ │ │ ├── az.js │ │ │ │ │ ├── fi.js │ │ │ │ │ ├── ja.js │ │ │ │ │ ├── hu.js │ │ │ │ │ ├── tr.js │ │ │ │ │ ├── ko.js │ │ │ │ │ ├── th.js │ │ │ │ │ ├── id.js │ │ │ │ │ ├── vi.js │ │ │ │ │ ├── is.js │ │ │ │ │ ├── ar.js │ │ │ │ │ ├── de.js │ │ │ │ │ ├── et.js │ │ │ │ │ ├── sv.js │ │ │ │ │ ├── bg.js │ │ │ │ │ ├── km.js │ │ │ │ │ ├── nb.js │ │ │ │ │ ├── ms.js │ │ │ │ │ ├── gl.js │ │ │ │ │ ├── da.js │ │ │ │ │ ├── en.js │ │ │ │ │ ├── he.js │ │ │ │ │ ├── hi.js │ │ │ │ │ ├── fa.js │ │ │ │ │ ├── hr.js │ │ │ │ │ ├── mk.js │ │ │ │ │ ├── eu.js │ │ │ │ │ ├── pt-BR.js │ │ │ │ │ ├── pt.js │ │ │ │ │ ├── lv.js │ │ │ │ │ ├── es.js │ │ │ │ │ ├── ca.js │ │ │ │ │ ├── it.js │ │ │ │ │ ├── fr.js │ │ │ │ │ ├── ro.js │ │ │ │ │ ├── nl.js │ │ │ │ │ ├── lt.js │ │ │ │ │ ├── pl.js │ │ │ │ │ ├── el.js │ │ │ │ │ ├── sr.js │ │ │ │ │ ├── uk.js │ │ │ │ │ ├── sr-Cyrl.js │ │ │ │ │ ├── ru.js │ │ │ │ │ ├── sk.js │ │ │ │ │ └── cs.js │ │ │ │ └── LICENSE.md │ │ │ ├── xregexp │ │ │ │ └── LICENSE.txt │ │ │ └── jquery │ │ │ │ └── LICENSE.txt │ │ ├── change_form.js │ │ ├── collapse.min.js │ │ ├── autocomplete.js │ │ └── prepopulate.js │ └── css │ │ ├── fonts.css │ │ ├── dashboard.css │ │ ├── vendor │ │ └── select2 │ │ │ └── LICENSE-SELECT2.md │ │ ├── login.css │ │ └── responsive_rtl.css └── import_export │ ├── action_formats.js │ └── import.css ├── .gitattributes ├── dapi ├── __init__.py ├── wsgi.py └── celery.py ├── requirements.txt ├── deploy_conf ├── nginx-app.conf ├── uwsgi.ini └── supervisor-app.conf ├── manage.py ├── Dockerfile └── README.md /interface/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /interface/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-multiselect/css/bootstrap-multiselect.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/debug_toolbar/css/print.css: -------------------------------------------------------------------------------- 1 | #djDebug { 2 | display: none !important; 3 | } 4 | -------------------------------------------------------------------------------- /static/debug_toolbar/js/redirect.js: -------------------------------------------------------------------------------- 1 | document.getElementById('redirect_to').focus(); 2 | -------------------------------------------------------------------------------- /static/img/home.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/img/home.gif -------------------------------------------------------------------------------- /interface/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /static/img/login.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/img/login.gif -------------------------------------------------------------------------------- /static/img/pycharm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/img/pycharm.png -------------------------------------------------------------------------------- /static/silk/filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/filter.png -------------------------------------------------------------------------------- /static/silk/filter2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/filter2.png -------------------------------------------------------------------------------- /static/silk/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/favicon-16x16.png -------------------------------------------------------------------------------- /static/silk/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/favicon-32x32.png -------------------------------------------------------------------------------- /static/debug_toolbar/img/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/debug_toolbar/img/back.png -------------------------------------------------------------------------------- /static/debug_toolbar/img/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/debug_toolbar/img/close.png -------------------------------------------------------------------------------- /static/rest_framework/img/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/rest_framework/img/grid.png -------------------------------------------------------------------------------- /static/drf-yasg/redoc/redoc-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/drf-yasg/redoc/redoc-logo.png -------------------------------------------------------------------------------- /static/debug_toolbar/img/back_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/debug_toolbar/img/back_hover.png -------------------------------------------------------------------------------- /static/debug_toolbar/img/indicator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/debug_toolbar/img/indicator.png -------------------------------------------------------------------------------- /static/rest_framework/docs/img/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/rest_framework/docs/img/grid.png -------------------------------------------------------------------------------- /static/debug_toolbar/img/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/debug_toolbar/img/ajax-loader.gif -------------------------------------------------------------------------------- /static/debug_toolbar/img/close_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/debug_toolbar/img/close_hover.png -------------------------------------------------------------------------------- /static/silk/fonts/fira/FiraSans-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/fonts/fira/FiraSans-Bold.woff -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/xadmin/vendor/select2/select2.png -------------------------------------------------------------------------------- /static/admin/fonts/Roboto-Bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/admin/fonts/Roboto-Bold-webfont.woff -------------------------------------------------------------------------------- /static/admin/fonts/Roboto-Light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/admin/fonts/Roboto-Light-webfont.woff -------------------------------------------------------------------------------- /static/debug_toolbar/img/djdt_vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/debug_toolbar/img/djdt_vertical.png -------------------------------------------------------------------------------- /static/rest_framework/docs/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/rest_framework/docs/img/favicon.ico -------------------------------------------------------------------------------- /static/silk/fonts/fira/FiraSans-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/fonts/fira/FiraSans-Light.woff -------------------------------------------------------------------------------- /static/silk/fonts/fira/FiraSans-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/fonts/fira/FiraSans-Medium.woff -------------------------------------------------------------------------------- /static/silk/fonts/fira/FiraSans-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/fonts/fira/FiraSans-Regular.woff -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/xadmin/vendor/select2/select2x2.png -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.js linguist-language=Python 2 | *.css linguist-language=Python 3 | *.html linguist-language=Python 4 | # 设置仓库显示的语言为Python 5 | -------------------------------------------------------------------------------- /static/admin/fonts/Roboto-Regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/admin/fonts/Roboto-Regular-webfont.woff -------------------------------------------------------------------------------- /static/drf-yasg/swagger-ui-dist/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/drf-yasg/swagger-ui-dist/favicon-32x32.png -------------------------------------------------------------------------------- /static/silk/fonts/fira/FiraSans-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/fonts/fira/FiraSans-BoldItalic.woff -------------------------------------------------------------------------------- /static/silk/fonts/fira/FiraSans-LightItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/fonts/fira/FiraSans-LightItalic.woff -------------------------------------------------------------------------------- /static/silk/fonts/fira/FiraSans-MediumItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/fonts/fira/FiraSans-MediumItalic.woff -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2-spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/xadmin/vendor/select2/select2-spinner.gif -------------------------------------------------------------------------------- /static/rest_framework/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/rest_framework/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /static/rest_framework/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/rest_framework/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /static/rest_framework/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/rest_framework/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /static/silk/fonts/fira/FiraSans-RegularItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/fonts/fira/FiraSans-RegularItalic.woff -------------------------------------------------------------------------------- /static/silk/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /static/silk/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /static/silk/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /static/rest_framework/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/rest_framework/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /static/silk/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /interface/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class InterfaceConfig(AppConfig): 5 | name = 'interface' 6 | verbose_name = '接口管理' 7 | -------------------------------------------------------------------------------- /static/rest_framework/img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/rest_framework/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /static/silk/fonts/fantasque/FantasqueSansMono-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/fonts/fantasque/FantasqueSansMono-Bold.woff -------------------------------------------------------------------------------- /static/xadmin/css/xadmin.plugin.aggregation.css: -------------------------------------------------------------------------------- 1 | td.aggregate { 2 | font-weight: bold; 3 | } 4 | td.aggregate span.aggregate_title { 5 | float: right; 6 | } -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-modal/img/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/xadmin/vendor/bootstrap-modal/img/ajax-loader.gif -------------------------------------------------------------------------------- /static/xadmin/vendor/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/xadmin/vendor/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /static/silk/fonts/fantasque/FantasqueSansMono-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/fonts/fantasque/FantasqueSansMono-Regular.woff -------------------------------------------------------------------------------- /static/rest_framework/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/rest_framework/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /static/rest_framework/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/rest_framework/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /static/rest_framework/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/rest_framework/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /static/silk/fonts/fantasque/FantasqueSansMono-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/fonts/fantasque/FantasqueSansMono-BoldItalic.woff -------------------------------------------------------------------------------- /static/silk/fonts/fantasque/FantasqueSansMono-RegItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/silk/fonts/fantasque/FantasqueSansMono-RegItalic.woff -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-image-gallery/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/xadmin/vendor/bootstrap-image-gallery/img/loading.gif -------------------------------------------------------------------------------- /static/rest_framework/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/rest_framework/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /static/xadmin/vendor/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/xadmin/vendor/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /static/xadmin/vendor/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/xadmin/vendor/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /static/xadmin/vendor/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/xadmin/vendor/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/xadmin/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/xadmin/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjlch1016/dapi/HEAD/static/xadmin/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /static/silk/css/numeric.css: -------------------------------------------------------------------------------- 1 | .numeric { 2 | font-weight: normal; } 3 | 4 | .unit { 5 | font-weight: normal; } 6 | 7 | .numeric .unit { 8 | font-size: 12px; } 9 | 10 | .numeric { 11 | font-size: 20px; } 12 | -------------------------------------------------------------------------------- /dapi/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, unicode_literals 2 | from dapi.celery import app as celery_app 3 | import pymysql 4 | 5 | __all__ = ('celery_app',) 6 | 7 | pymysql.install_as_MySQLdb() 8 | # PyMySQL初始化 9 | -------------------------------------------------------------------------------- /static/admin/fonts/README.txt: -------------------------------------------------------------------------------- 1 | Roboto webfont source: https://www.google.com/fonts/specimen/Roboto 2 | WOFF files extracted using https://github.com/majodev/google-webfonts-helper 3 | Weights used in this project: Light (300), Regular (400), Bold (700) 4 | -------------------------------------------------------------------------------- /static/xadmin/css/xadmin.plugins.css: -------------------------------------------------------------------------------- 1 | /** Action **/ 2 | .action-checkbox-column { 3 | width: 14px; 4 | } 5 | 6 | /** quick-form **/ 7 | .quick-form .modal-body { 8 | padding-bottom: 0px; 9 | } 10 | .quick-form .modal-footer { 11 | margin-top: 0px; 12 | } -------------------------------------------------------------------------------- /static/xadmin/js/xadmin.widget.multiselect.js: -------------------------------------------------------------------------------- 1 | 2 | ;(function($){ 3 | 4 | $.fn.exform.renders.push(function(f){ 5 | if($.fn.multiselect){ 6 | f.find('.selectmultiple.selectdropdown').multiselect({ 7 | 8 | }); 9 | } 10 | }); 11 | 12 | })(jQuery) -------------------------------------------------------------------------------- /interface/tasks.py: -------------------------------------------------------------------------------- 1 | # Create your tasks here 2 | from __future__ import absolute_import, unicode_literals 3 | 4 | from dapi.celery import app 5 | 6 | 7 | @app.task 8 | def debug_1(): 9 | print("调试_1已运行!") 10 | 11 | 12 | @app.task 13 | def debug_2(): 14 | print("调试_2已运行!") 15 | -------------------------------------------------------------------------------- /static/silk/css/colors.css: -------------------------------------------------------------------------------- 1 | .very-good-font-color { 2 | color: #bac54b; } 3 | 4 | .good-font-color { 5 | color: #c3a948; } 6 | 7 | .ok-font-color { 8 | color: #c08245; } 9 | 10 | .bad-font-color { 11 | color: #be5b43; } 12 | 13 | .very-bad-font-color { 14 | color: #b9424f; } 15 | -------------------------------------------------------------------------------- /static/admin/img/tooltag-arrowright.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | djangorestframework==3.11.0 2 | drf-yasg==1.17.1 3 | django-redis==4.12.1 4 | django-import-export==2.2.0 5 | django-silk==4.0.1 6 | django-debug-toolbar==2.2 7 | requests==2.23.0 8 | demjson==2.2.4 9 | celery==4.3.0 10 | django-celery-beat==1.5.0 11 | django-celery-results==1.1.2 12 | redis==3.2.1 13 | pyecharts==1.8.1 -------------------------------------------------------------------------------- /static/silk/css/heading.css: -------------------------------------------------------------------------------- 1 | .heading { 2 | width: 100%; 3 | background-color: transparent; 4 | height: 30px; 5 | display: table; 6 | font-weight: bold; 7 | margin-top: 20px; } 8 | .heading .inner-heading { 9 | display: table-cell; 10 | text-align: left; 11 | padding: 0; 12 | vertical-align: middle; } 13 | -------------------------------------------------------------------------------- /static/silk/css/summary.css: -------------------------------------------------------------------------------- 1 | #error-div { 2 | margin: 10px; } 3 | 4 | #query-div { 5 | margin: auto; 6 | width: 960px; 7 | text-align: center; } 8 | 9 | #code { 10 | text-align: left; } 11 | 12 | .name-div { 13 | margin-top: 20px; 14 | margin-bottom: 15px; 15 | font-weight: bold; } 16 | 17 | .description { 18 | text-align: left; } 19 | -------------------------------------------------------------------------------- /static/admin/img/README.txt: -------------------------------------------------------------------------------- 1 | All icons are taken from Font Awesome (http://fontawesome.io/) project. 2 | The Font Awesome font is licensed under the SIL OFL 1.1: 3 | - https://scripts.sil.org/OFL 4 | 5 | SVG icons source: https://github.com/encharm/Font-Awesome-SVG-PNG 6 | Font-Awesome-SVG-PNG is licensed under the MIT license (see file license 7 | in current folder). 8 | -------------------------------------------------------------------------------- /static/admin/img/icon-addlink.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/admin/img/tooltag-add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/xadmin/css/xadmin.plugin.quickfilter.css: -------------------------------------------------------------------------------- 1 | .nav-quickfilter .filter-item { 2 | white-space: nowrap; 3 | overflow: hidden; 4 | padding: 5px; 5 | } 6 | 7 | .nav-quickfilter .filter-col-1 { 8 | margin: 3px 2px 0 -2px; 9 | float: left; 10 | } 11 | 12 | .nav-quickfilter .filter-col-2 { 13 | } 14 | 15 | .nav-quickfilter .nav-expand { 16 | z-index:100; 17 | } -------------------------------------------------------------------------------- /static/admin/js/prepopulate.min.js: -------------------------------------------------------------------------------- 1 | (function(b){b.fn.prepopulate=function(d,f,g){return this.each(function(){var a=b(this),h=function(){if(!a.data("_changed")){var e=[];b.each(d,function(a,c){c=b(c);0 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/admin/js/jquery.init.js: -------------------------------------------------------------------------------- 1 | /*global django:true, jQuery:false*/ 2 | /* Puts the included jQuery into our own namespace using noConflict and passing 3 | * it 'true'. This ensures that the included jQuery doesn't pollute the global 4 | * namespace (i.e. this preserves pre-existing values for both window.$ and 5 | * window.jQuery). 6 | */ 7 | var django = django || {}; 8 | django.jQuery = jQuery.noConflict(true); 9 | -------------------------------------------------------------------------------- /static/admin/img/icon-deletelink.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dapi/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for dapi project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dapi.settings') 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /static/admin/img/icon-yes.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/xadmin/css/xadmin.plugin.importexport.css: -------------------------------------------------------------------------------- 1 | /* FORM ROWS */ 2 | 3 | .form-row { 4 | overflow: hidden; 5 | padding: 10px; 6 | font-size: 13px; 7 | border-bottom: 1px solid #eee; 8 | } 9 | 10 | .form-row img, .form-row input { 11 | vertical-align: middle; 12 | } 13 | 14 | .form-row label input[type="checkbox"] { 15 | margin-top: 0; 16 | vertical-align: 0; 17 | } 18 | 19 | form .form-row p { 20 | padding-left: 0; 21 | } 22 | -------------------------------------------------------------------------------- /static/admin/img/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/admin/js/cancel.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 'use strict'; 3 | $(function() { 4 | $('.cancel-link').on('click', function(e) { 5 | e.preventDefault(); 6 | if (window.location.search.indexOf('&_popup=1') === -1) { 7 | window.history.back(); // Go back if not a popup. 8 | } else { 9 | window.close(); // Otherwise, close the popup. 10 | } 11 | }); 12 | }); 13 | })(django.jQuery); 14 | -------------------------------------------------------------------------------- /static/xadmin/js/xadmin.plugin.batch.js: -------------------------------------------------------------------------------- 1 | 2 | ;(function($){ 3 | 4 | $('.batch-field-checkbox').bind('click', function(event){ 5 | if (!event) { var event = window.event; } 6 | var target = event.target ? event.target : event.srcElement; 7 | 8 | var wrap = $(this).parent().parent().find('.control-wrap'); 9 | if(target.checked){ 10 | wrap.show('fast'); 11 | } else { 12 | wrap.hide('fast'); 13 | } 14 | }); 15 | 16 | })(jQuery) 17 | -------------------------------------------------------------------------------- /static/admin/img/icon-alert.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/admin/css/fonts.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Roboto'; 3 | src: url('../fonts/Roboto-Bold-webfont.woff'); 4 | font-weight: 700; 5 | font-style: normal; 6 | } 7 | 8 | @font-face { 9 | font-family: 'Roboto'; 10 | src: url('../fonts/Roboto-Regular-webfont.woff'); 11 | font-weight: 400; 12 | font-style: normal; 13 | } 14 | 15 | @font-face { 16 | font-family: 'Roboto'; 17 | src: url('../fonts/Roboto-Light-webfont.woff'); 18 | font-weight: 300; 19 | font-style: normal; 20 | } 21 | -------------------------------------------------------------------------------- /deploy_conf/nginx-app.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80 default_server; 3 | server_name localhost; 4 | charset utf-8; 5 | 6 | client_max_body_size 75M; 7 | 8 | location / { 9 | uwsgi_pass 127.0.0.1:3031; 10 | include uwsgi_params; 11 | } 12 | 13 | location /supervisor/ { 14 | proxy_pass http://127.0.0.1:9001/; 15 | } 16 | 17 | location /static { 18 | alias /django/dapi/static; 19 | } 20 | 21 | location /media { 22 | alias /django/dapi/media; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /static/admin/css/dashboard.css: -------------------------------------------------------------------------------- 1 | /* DASHBOARD */ 2 | 3 | .dashboard .module table th { 4 | width: 100%; 5 | } 6 | 7 | .dashboard .module table td { 8 | white-space: nowrap; 9 | } 10 | 11 | .dashboard .module table td a { 12 | display: block; 13 | padding-right: .6em; 14 | } 15 | 16 | /* RECENT ACTIONS MODULE */ 17 | 18 | .module ul.actionlist { 19 | margin-left: 0; 20 | } 21 | 22 | ul.actionlist li { 23 | list-style-type: none; 24 | overflow: hidden; 25 | text-overflow: ellipsis; 26 | -o-text-overflow: ellipsis; 27 | } 28 | -------------------------------------------------------------------------------- /static/admin/js/prepopulate_init.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 'use strict'; 3 | var fields = $('#django-admin-prepopulated-fields-constants').data('prepopulatedFields'); 4 | $.each(fields, function(index, field) { 5 | $('.empty-form .form-row .field-' + field.name + ', .empty-form.form-row .field-' + field.name).addClass('prepopulated_field'); 6 | $(field.id).data('dependency_list', field.dependency_list).prepopulate( 7 | field.dependency_ids, field.maxLength, field.allowUnicode 8 | ); 9 | }); 10 | })(django.jQuery); 11 | -------------------------------------------------------------------------------- /static/xadmin/js/xadmin.plugin.refresh.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 3 | $.dofresh = function(){ 4 | var refresh_el = $('#refresh_time'); 5 | var time = parseInt(refresh_el.text()); 6 | if(time == 1){ 7 | refresh_el.text(0); 8 | window.location.reload(); 9 | } else { 10 | refresh_el.text(time-1); 11 | setTimeout("$.dofresh()",1000) 12 | } 13 | }; 14 | 15 | $(function(){ 16 | var refresh_el = $('#refresh_time'); 17 | if(refresh_el){ 18 | setTimeout("$.dofresh()",1000) 19 | } 20 | }); 21 | 22 | })(jQuery); -------------------------------------------------------------------------------- /static/xadmin/js/xadmin.plugin.importexport.js: -------------------------------------------------------------------------------- 1 | $("#export-menu").click(function () { 2 | $("input[name='_select_across']").val($("input[name='select_across']").val()); 3 | if (0 == $("input[name='select_across']").val()) { 4 | var selectedRecords = []; 5 | $.each($('.action-select'), function () { 6 | if (true == $(this).prop('checked')) { 7 | selectedRecords.push($(this).val()); 8 | } 9 | }); 10 | $("input[name='_selected_actions']").val(selectedRecords.join(',')); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /static/admin/img/icon-no.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/admin/img/inline-delete.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dapi/celery.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, unicode_literals 2 | import os 3 | from celery import Celery, platforms 4 | from django.utils.datetime_safe import datetime 5 | 6 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dapi.settings') 7 | # 设置默认celery命令行的环境变量 8 | 9 | app = Celery('dapi') 10 | # 实例化celery 11 | 12 | app.now = datetime.now 13 | # 解决时区问题 14 | 15 | app.config_from_object('django.conf:settings', namespace='CELERY') 16 | # 直接从Django设置中配置Celery 17 | 18 | app.autodiscover_tasks() 19 | # 从所有应用中加载任务模块tasks.py 20 | 21 | platforms.C_FORCE_ROOT = True 22 | # 解决celery不能root用户启动的问题 23 | -------------------------------------------------------------------------------- /static/admin/img/icon-viewlink.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/drf-yasg/swagger-ui-dist/absolute-path.js: -------------------------------------------------------------------------------- 1 | /* 2 | * getAbsoluteFSPath 3 | * @return {string} When run in NodeJS env, returns the absolute path to the current directory 4 | * When run outside of NodeJS, will return an error message 5 | */ 6 | const getAbsoluteFSPath = function () { 7 | // detect whether we are running in a browser or nodejs 8 | if (typeof module !== "undefined" && module.exports) { 9 | return require("path").resolve(__dirname) 10 | } 11 | throw new Error('getAbsoluteFSPath can only be called within a Nodejs environment'); 12 | } 13 | 14 | module.exports = getAbsoluteFSPath 15 | -------------------------------------------------------------------------------- /static/xadmin/js/xadmin.plugin.bookmark.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 3 | $(function(){ 4 | $('#bookmark_form').each(function(){ 5 | var f = $(this); 6 | f.submit(function(e){ 7 | f.find('button[type=submit]').button('loading'); 8 | $.post(f.attr('action'), f.serialize(), function(data){ 9 | $('#bookmark-menu .add-bookmark').remove(); 10 | $('#bookmark-menu').append('
  • '+ data.title +'
  • '); 11 | }, 'json'); 12 | return false; 13 | }); 14 | }); 15 | }); 16 | 17 | })(jQuery); -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.kr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Korean translation for bootstrap-datepicker 3 | * Gu Youn 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['kr'] = { 7 | days: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"], 8 | daysShort: ["일", "월", "화", "수", "목", "금", "토", "일"], 9 | daysMin: ["일", "월", "화", "수", "목", "금", "토", "일"], 10 | months: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"], 11 | monthsShort: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"] 12 | }; 13 | }(jQuery)); 14 | -------------------------------------------------------------------------------- /static/admin/js/popup_response.js: -------------------------------------------------------------------------------- 1 | /*global opener */ 2 | (function() { 3 | 'use strict'; 4 | var initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse); 5 | switch(initData.action) { 6 | case 'change': 7 | opener.dismissChangeRelatedObjectPopup(window, initData.value, initData.obj, initData.new_value); 8 | break; 9 | case 'delete': 10 | opener.dismissDeleteRelatedObjectPopup(window, initData.value); 11 | break; 12 | default: 13 | opener.dismissAddRelatedObjectPopup(window, initData.value, initData.obj); 14 | break; 15 | } 16 | })(); 17 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/zh-TW.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="請刪掉"+t+"個字元";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="請再輸入"+t+"個字元";return n},loadingMore:function(){return"載入中…"},maximumSelected:function(e){var t="你只能選擇最多"+e.maximum+"項";return t},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-TW.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Traditional Chinese translation for bootstrap-datepicker 3 | * Rung-Sheng Jang 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['zh-TW'] = { 7 | days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"], 8 | daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"], 9 | daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"], 10 | months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], 11 | monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"] 12 | }; 13 | }(jQuery)); 14 | -------------------------------------------------------------------------------- /static/admin/img/icon-unknown.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/admin/img/icon-unknown-alt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.ja.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Japanese translation for bootstrap-datepicker 3 | * Norio Suzuki 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['ja'] = { 7 | days: ["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜", "日曜"], 8 | daysShort: ["日", "月", "火", "水", "木", "金", "土", "日"], 9 | daysMin: ["日", "月", "火", "水", "木", "金", "土", "日"], 10 | months: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], 11 | monthsShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], 12 | today: "今日", 13 | format: "yyyy/mm/dd" 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-CN.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Simplified Chinese translation for bootstrap-datepicker 3 | * Yuan Cheung 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['zh-CN'] = { 7 | days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"], 8 | daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"], 9 | daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"], 10 | months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], 11 | monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], 12 | today: "今日" 13 | }; 14 | }(jQuery)); 15 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/zh-CN.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="请删除"+t+"个字符";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="请再输入至少"+t+"个字符";return n},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(e){var t="最多只能选择"+e.maximum+"个项目";return t},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/az.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/az",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return t+" simvol silin"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(e){return"Sadəcə "+e.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.hr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Croatian localisation 3 | */ 4 | ;(function($){ 5 | $.fn.datepicker.dates['hr'] = { 6 | days: ["Nedjelja", "Ponedjelja", "Utorak", "Srijeda", "Četrtak", "Petak", "Subota", "Nedjelja"], 7 | daysShort: ["Ned", "Pon", "Uto", "Srr", "Čet", "Pet", "Sub", "Ned"], 8 | daysMin: ["Ne", "Po", "Ut", "Sr", "Če", "Pe", "Su", "Ne"], 9 | months: ["Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac"], 10 | monthsShort: ["Sije", "Velj", "Ožu", "Tra", "Svi", "Lip", "Jul", "Kol", "Ruj", "Lis", "Stu", "Pro"], 11 | today: "Danas" 12 | }; 13 | }(jQuery)); 14 | -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """Django's command-line utility for administrative tasks.""" 3 | import os 4 | import sys 5 | 6 | 7 | def main(): 8 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dapi.settings') 9 | try: 10 | from django.core.management import execute_from_command_line 11 | except ImportError as exc: 12 | raise ImportError( 13 | "Couldn't import Django. Are you sure it's installed and " 14 | "available on your PYTHONPATH environment variable? Did you " 15 | "forget to activate a virtual environment?" 16 | ) from exc 17 | execute_from_command_line(sys.argv) 18 | 19 | 20 | if __name__ == '__main__': 21 | main() 22 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/fi.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Ole hyvä ja anna "+t+" merkkiä vähemmän"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Ole hyvä ja anna "+t+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(e){return"Voit valita ainoastaan "+e.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/ja.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ja",[],function(){return{errorLoading:function(){return"結果が読み込まれませんでした"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" 文字を削除してください";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="少なくとも "+t+" 文字を入力してください";return n},loadingMore:function(){return"読み込み中…"},maximumSelected:function(e){var t=e.maximum+" 件しか選択できません";return t},noResults:function(){return"対象が見つかりません"},searching:function(){return"検索しています…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/silk/css/cell.css: -------------------------------------------------------------------------------- 1 | .cell { 2 | display: inline-block; 3 | background-color: transparent; 4 | padding: 10px; 5 | margin-left: 10px; 6 | margin-top: 10px; 7 | border-radius: 4px; 8 | transition: background-color 0.15s ease, color 0.15s ease; } 9 | .cell div { 10 | margin: 2px; } 11 | .cell .timestamp-div { 12 | margin-bottom: 15px; 13 | font-size: 13px; } 14 | .cell .meta { 15 | font-size: 12px; 16 | color: #be5b43; } 17 | .cell .meta .unit { 18 | font-size: 9px; 19 | font-weight: lighter !important; } 20 | .cell .method-div { 21 | font-weight: bold; 22 | font-size: 20px; } 23 | .cell .path-div { 24 | font-size: 18px; 25 | margin-bottom: 15px; } 26 | -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_zh-CN.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Chinese translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | $.extend($.fn.select2.defaults, { 7 | formatNoMatches: function () { return "没有找到匹配项"; }, 8 | formatInputTooShort: function (input, min) { var n = min - input.length; return "请再输入" + n + "个字符";}, 9 | formatInputTooLong: function (input, max) { var n = input.length - max; return "请删掉" + n + "个字符";}, 10 | formatSelectionTooBig: function (limit) { return "你只能选择最多" + limit + "项"; }, 11 | formatLoadMore: function (pageNumber) { return "加载结果中..."; }, 12 | formatSearching: function () { return "搜索中..."; } 13 | }); 14 | })(jQuery); 15 | -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_zh-hans.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Chinese translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | $.extend($.fn.select2.defaults, { 7 | formatNoMatches: function () { return "没有找到匹配项"; }, 8 | formatInputTooShort: function (input, min) { var n = min - input.length; return "请再输入" + n + "个字符";}, 9 | formatInputTooLong: function (input, max) { var n = input.length - max; return "请删掉" + n + "个字符";}, 10 | formatSelectionTooBig: function (limit) { return "你只能选择最多" + limit + "项"; }, 11 | formatLoadMore: function (pageNumber) { return "加载结果中..."; }, 12 | formatSearching: function () { return "搜索中..."; } 13 | }); 14 | })(jQuery); 15 | -------------------------------------------------------------------------------- /static/admin/img/icon-clock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.id.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Bahasa translation for bootstrap-datepicker 3 | * Azwar Akbar 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['id'] = { 7 | days: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"], 8 | daysShort: ["Mgu", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab", "Mgu"], 9 | daysMin: ["Mg", "Sn", "Sl", "Ra", "Ka", "Ju", "Sa", "Mg"], 10 | months: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"], 11 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ags", "Sep", "Okt", "Nov", "Des"] 12 | }; 13 | }(jQuery)); 14 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/hu.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Túl hosszú. "+t+" karakterrel több, mint kellene."},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Túl rövid. Még "+t+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/tr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tr",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" karakter daha girmelisiniz";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="En az "+t+" karakter daha girmelisiniz";return n},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(e){var t="Sadece "+e.maximum+" seçim yapabilirsiniz";return t},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/ko.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="너무 깁니다. "+t+" 글자 지워주세요.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="너무 짧습니다. "+t+" 글자 더 입력해주세요.";return n},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(e){var t="최대 "+e.maximum+"개까지만 선택 가능합니다.";return t},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/th.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/th",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="โปรดลบออก "+t+" ตัวอักษร";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="โปรดพิมพ์เพิ่มอีก "+t+" ตัวอักษร";return n},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(e){var t="คุณสามารถเลือกได้ไม่เกิน "+e.maximum+" รายการ";return t},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.he.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Hebrew translation for bootstrap-datepicker 3 | * Sagie Maoz 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['he'] = { 7 | days: ["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת", "ראשון"], 8 | daysShort: ["א", "ב", "ג", "ד", "ה", "ו", "ש", "א"], 9 | daysMin: ["א", "ב", "ג", "ד", "ה", "ו", "ש", "א"], 10 | months: ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"], 11 | monthsShort: ["ינו", "פבר", "מרץ", "אפר", "מאי", "יונ", "יול", "אוג", "ספט", "אוק", "נוב", "דצמ"], 12 | today: "היום", 13 | rtl: true 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.ms.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Malay translation for bootstrap-datepicker 3 | * Ateman Faiz 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['ms'] = { 7 | days: ["Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu", "Ahad"], 8 | daysShort: ["Aha", "Isn", "Sel", "Rab", "Kha", "Jum", "Sab", "Aha"], 9 | daysMin: ["Ah", "Is", "Se", "Ra", "Kh", "Ju", "Sa", "Ah"], 10 | months: ["Januari", "Februari", "Mac", "April", "Mei", "Jun", "Julai", "Ogos", "September", "Oktober", "November", "Disember"], 11 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis"], 12 | today: "Hari Ini" 13 | }; 14 | }(jQuery)); 15 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.ca.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Catalan translation for bootstrap-datepicker 3 | * J. Garcia 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['ca'] = { 7 | days: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte", "Diumenge"], 8 | daysShort: ["Diu", "Dil", "Dmt", "Dmc", "Dij", "Div", "Dis", "Diu"], 9 | daysMin: ["dg", "dl", "dt", "dc", "dj", "dv", "ds", "dg"], 10 | months: ["Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"], 11 | monthsShort: ["Gen", "Feb", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Oct", "Nov", "Des"], 12 | today: "Avui" 13 | }; 14 | }(jQuery)); 15 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.da.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Danish translation for bootstrap-datepicker 3 | * Christian Pedersen 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['da'] = { 7 | days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"], 8 | daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"], 9 | daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"], 10 | months: ["Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"], 11 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"], 12 | today: "I Dag" 13 | }; 14 | }(jQuery)); -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Serbian cyrillic translation for bootstrap-datepicker 3 | * Bojan Milosavlević 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['rs'] = { 7 | days: ["Недеља","Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота", "Недеља"], 8 | daysShort: ["Нед", "Пон", "Уто", "Сре", "Чет", "Пет", "Суб", "Нед"], 9 | daysMin: ["Н", "По", "У", "Ср", "Ч", "Пе", "Су", "Н"], 10 | months: ["Јануар", "Фебруар", "Март", "Април", "Мај", "Јун", "Јул", "Август", "Септембар", "Октобар", "Новембар", "Децембар"], 11 | monthsShort: ["Јан", "Феб", "Мар", "Апр", "Мај", "Јун", "Јул", "Авг", "Сеп", "Окт", "Нов", "Дец"], 12 | today: "Данас" 13 | }; 14 | }(jQuery)); 15 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.sv.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Swedish translation for bootstrap-datepicker 3 | * Patrik Ragnarsson 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['sv'] = { 7 | days: ["Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag", "Söndag"], 8 | daysShort: ["Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör", "Sön"], 9 | daysMin: ["Sö", "Må", "Ti", "On", "To", "Fr", "Lö", "Sö"], 10 | months: ["Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"], 11 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"], 12 | today: "I Dag" 13 | }; 14 | }(jQuery)); 15 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.th.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Thai translation for bootstrap-datepicker 3 | * Suchau Jiraprapot 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['th'] = { 7 | days: ["อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัส", "ศุกร์", "เสาร์", "อาทิตย์"], 8 | daysShort: ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"], 9 | daysMin: ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"], 10 | months: ["มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"], 11 | monthsShort: ["ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."], 12 | today: "วันนี้" 13 | }; 14 | }(jQuery)); 15 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.tr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Turkish translation for bootstrap-datepicker 3 | * Serkan Algur 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['tr'] = { 7 | days: ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar"], 8 | daysShort: ["Pz", "Pzt", "Sal", "Çrş", "Prş", "Cu", "Cts", "Pz"], 9 | daysMin: ["Pz", "Pzt", "Sa", "Çr", "Pr", "Cu", "Ct", "Pz"], 10 | months: ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"], 11 | monthsShort: ["Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara"], 12 | today: "Bugün" 13 | }; 14 | }(jQuery)); 15 | 16 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.bg.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Bulgarian translation for bootstrap-datepicker 3 | * Apostol Apostolov 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['bg'] = { 7 | days: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота", "Неделя"], 8 | daysShort: ["Нед", "Пон", "Вто", "Сря", "Чет", "Пет", "Съб", "Нед"], 9 | daysMin: ["Н", "П", "В", "С", "Ч", "П", "С", "Н"], 10 | months: ["Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"], 11 | monthsShort: ["Ян", "Фев", "Мар", "Апр", "Май", "Юни", "Юли", "Авг", "Сеп", "Окт", "Ное", "Дек"], 12 | today: "днес" 13 | }; 14 | }(jQuery)); 15 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.es.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Spanish translation for bootstrap-datepicker 3 | * Bruno Bonamin 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['es'] = { 7 | days: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"], 8 | daysShort: ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb", "Dom"], 9 | daysMin: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa", "Do"], 10 | months: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"], 11 | monthsShort: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"], 12 | today: "Hoy" 13 | }; 14 | }(jQuery)); 15 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Dutch translation for bootstrap-datepicker 3 | * Reinier Goltstein 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['nl'] = { 7 | days: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag", "Zondag"], 8 | daysShort: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"], 9 | daysMin: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"], 10 | months: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"], 11 | monthsShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"], 12 | today: "Vandaag" 13 | }; 14 | }(jQuery)); 15 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt-BR.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Brazilian translation for bootstrap-datepicker 3 | * Cauan Cabral 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['pt-BR'] = { 7 | days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"], 8 | daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"], 9 | daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"], 10 | months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"], 11 | monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"], 12 | today: "Hoje" 13 | }; 14 | }(jQuery)); 15 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs-latin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Serbian latin translation for bootstrap-datepicker 3 | * Bojan Milosavlević 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['rs'] = { 7 | days: ["Nedelja","Ponedeljak", "Utorak", "Sreda", "Četvrtak", "Petak", "Subota", "Nedelja"], 8 | daysShort: ["Ned", "Pon", "Uto", "Sre", "Čet", "Pet", "Sub", "Ned"], 9 | daysMin: ["N", "Po", "U", "Sr", "Č", "Pe", "Su", "N"], 10 | months: ["Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"], 11 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"], 12 | today: "Danas" 13 | }; 14 | }(jQuery)); 15 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.sl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Slovene translation for bootstrap-datepicker 3 | * Gregor Rudolf 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['sl'] = { 7 | days: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "Četrtek", "Petek", "Sobota", "Nedelja"], 8 | daysShort: ["Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob", "Ned"], 9 | daysMin: ["Ne", "Po", "To", "Sr", "Če", "Pe", "So", "Ne"], 10 | months: ["Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"], 11 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"], 12 | today: "Danes" 13 | }; 14 | }(jQuery)); 15 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/id.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Hapuskan "+t+" huruf"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Masukkan "+t+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(e){return"Anda hanya dapat memilih "+e.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/vi.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/vi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vui lòng nhập ít hơn "+t+" ký tự";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vui lòng nhập nhiều hơn "+t+' ký tự"';return n},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(e){var t="Chỉ có thể chọn được "+e.maximum+" lựa chọn";return t},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.el.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Greek translation for bootstrap-datepicker 3 | */ 4 | ;(function($){ 5 | $.fn.datepicker.dates['el'] = { 6 | days: ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο", "Κυριακή"], 7 | daysShort: ["Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ", "Κυρ"], 8 | daysMin: ["Κυ", "Δε", "Τρ", "Τε", "Πε", "Πα", "Σα", "Κυ"], 9 | months: ["Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"], 10 | monthsShort: ["Ιαν", "Φεβ", "Μαρ", "Απρ", "Μάι", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ"], 11 | today: "Σήμερα" 12 | }; 13 | }(jQuery)); -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.nb.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Norwegian (bokmål) translation for bootstrap-datepicker 3 | * Fredrik Sundmyhr 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['nb'] = { 7 | days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"], 8 | daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"], 9 | daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"], 10 | months: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"], 11 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"], 12 | today: "I Dag" 13 | }; 14 | }(jQuery)); -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.ru.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Russian translation for bootstrap-datepicker 3 | * Victor Taranenko 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['ru'] = { 7 | days: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"], 8 | daysShort: ["Вск", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб", "Вск"], 9 | daysMin: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"], 10 | months: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"], 11 | monthsShort: ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"], 12 | today: "Сегодня" 13 | }; 14 | }(jQuery)); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/is.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/is",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vinsamlegast styttið texta um "+t+" staf";return t<=1?n:n+"i"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vinsamlegast skrifið "+t+" staf";return t>1&&(n+="i"),n+=" í viðbót",n},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(e){return"Þú getur aðeins valið "+e.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.uk.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Ukrainian translation for bootstrap-datepicker 3 | * Andrey Vityuk 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['uk'] = { 7 | days: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота", "Неділя"], 8 | daysShort: ["Нед", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб", "Нед"], 9 | daysMin: ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Нд"], 10 | months: ["Січень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"], 11 | monthsShort: ["Січ", "Лют", "Бер", "Кві", "Тра", "Чер", "Лип", "Сер", "Вер", "Жов", "Лис", "Гру"], 12 | today: "Сьогодні" 13 | }; 14 | }(jQuery)); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/ar.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="الرجاء حذف "+t+" عناصر";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="الرجاء إضافة "+t+" عناصر";return n},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(e){var t="تستطيع إختيار "+e.maximum+" بنود فقط";return t},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/de.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/de",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Bitte "+t+" Zeichen weniger eingeben"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Bitte "+t+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var t="Sie können nur "+e.maximum+" Eintr";return e.maximum===1?t+="ag":t+="äge",t+=" auswählen",t},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/et.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" vähem",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" rohkem",n},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var t="Saad vaid "+e.maximum+" tulemus";return e.maximum==1?t+="e":t+="t",t+=" valida",t},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.ro.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Romanian translation for bootstrap-datepicker 3 | * Cristian Vasile 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['ro'] = { 7 | days: ["Duminică", "Luni", "Marţi", "Miercuri", "Joi", "Vineri", "Sâmbătă", "Duminică"], 8 | daysShort: ["Dum", "Lun", "Mar", "Mie", "Joi", "Vin", "Sâm", "Dum"], 9 | daysMin: ["Du", "Lu", "Ma", "Mi", "Jo", "Vi", "Sâ", "Du"], 10 | months: ["Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"], 11 | monthsShort: ["Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Nov", "Dec"], 12 | today: "Astăzi", 13 | weekStart: 1 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/sv.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vänligen sudda ut "+t+" tecken";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vänligen skriv in "+t+" eller fler tecken";return n},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(e){var t="Du kan max välja "+e.maximum+" element";return t},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.cs.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Czech translation for bootstrap-datepicker 3 | * Matěj Koubík 4 | * Fixes by Michal Remiš 5 | */ 6 | ;(function($){ 7 | $.fn.datepicker.dates['cs'] = { 8 | days: ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota", "Neděle"], 9 | daysShort: ["Ned", "Pon", "Úte", "Stř", "Čtv", "Pát", "Sob", "Ned"], 10 | daysMin: ["Ne", "Po", "Út", "St", "Čt", "Pá", "So", "Ne"], 11 | months: ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"], 12 | monthsShort: ["Led", "Úno", "Bře", "Dub", "Kvě", "Čer", "Čnc", "Srp", "Zář", "Říj", "Lis", "Pro"], 13 | today: "Dnes" 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.is.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Icelandic translation for bootstrap-datepicker 3 | * Hinrik Örn Sigurðsson 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['is'] = { 7 | days: ["Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur", "Sunnudagur"], 8 | daysShort: ["Sun", "Mán", "Þri", "Mið", "Fim", "Fös", "Lau", "Sun"], 9 | daysMin: ["Su", "Má", "Þr", "Mi", "Fi", "Fö", "La", "Su"], 10 | months: ["Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember"], 11 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maí", "Jún", "Júl", "Ágú", "Sep", "Okt", "Nóv", "Des"], 12 | today: "Í Dag" 13 | }; 14 | }(jQuery)); 15 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Portuguese translation for bootstrap-datepicker 3 | * Original code: Cauan Cabral 4 | * Tiago Melo 5 | */ 6 | ;(function($){ 7 | $.fn.datepicker.dates['pt'] = { 8 | days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"], 9 | daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"], 10 | daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"], 11 | months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"], 12 | monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"] 13 | }; 14 | }(jQuery)); 15 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/bg.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bg",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Моля въведете с "+t+" по-малко символ";return t>1&&(n+="a"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Моля въведете още "+t+" символ";return t>1&&(n+="a"),n},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(e){var t="Можете да направите до "+e.maximum+" ";return e.maximum>1?t+="избора":t+="избор",t},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/km.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="សូមលុបចេញ "+t+" អក្សរ";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="សូមបញ្ចូល"+t+" អក្សរ រឺ ច្រើនជាងនេះ";return n},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(e){var t="អ្នកអាចជ្រើសរើសបានតែ "+e.maximum+" ជម្រើសប៉ុណ្ណោះ";return t},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/nb.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Vennligst fjern "+t+" tegn"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vennligst skriv inn ";return t>1?n+=" flere tegn":n+=" tegn til",n},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.fi.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Finnish translation for bootstrap-datepicker 3 | * Jaakko Salonen 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['fi'] = { 7 | days: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai", "sunnuntai"], 8 | daysShort: ["sun", "maa", "tii", "kes", "tor", "per", "lau", "sun"], 9 | daysMin: ["su", "ma", "ti", "ke", "to", "pe", "la", "su"], 10 | months: ["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kesäkuu", "heinäkuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"], 11 | monthsShort: ["tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mar", "jou"], 12 | today: "tänään" 13 | }; 14 | }(jQuery)); 15 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.sk.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Slovak translation for bootstrap-datepicker 3 | * Marek Lichtner 4 | * Fixes by Michal Remiš 5 | */ 6 | ;(function($){ 7 | $.fn.datepicker.dates["sk"] = { 8 | days: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota", "Nedeľa"], 9 | daysShort: ["Ned", "Pon", "Uto", "Str", "Štv", "Pia", "Sob", "Ned"], 10 | daysMin: ["Ne", "Po", "Ut", "St", "Št", "Pia", "So", "Ne"], 11 | months: ["Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"], 12 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Máj", "Jún", "Júl", "Aug", "Sep", "Okt", "Nov", "Dec"], 13 | today: "Dnes" 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/ms.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Sila hapuskan "+t+" aksara"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Sila masukkan "+t+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(e){return"Anda hanya boleh memilih "+e.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.de.js: -------------------------------------------------------------------------------- 1 | /** 2 | * German translation for bootstrap-datepicker 3 | * Sam Zurcher 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['de'] = { 7 | days: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"], 8 | daysShort: ["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam", "Son"], 9 | daysMin: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"], 10 | months: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], 11 | monthsShort: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"], 12 | today: "Heute", 13 | weekStart: 1, 14 | format: "dd.mm.yyyy" 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.fr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * French translation for bootstrap-datepicker 3 | * Nico Mollet 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['fr'] = { 7 | days: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"], 8 | daysShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim"], 9 | daysMin: ["D", "L", "Ma", "Me", "J", "V", "S", "D"], 10 | months: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"], 11 | monthsShort: ["Jan", "Fev", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Dec"], 12 | today: "Aujourd'hui", 13 | weekStart: 1, 14 | format: "dd/mm/yyyy" 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /static/admin/js/change_form.js: -------------------------------------------------------------------------------- 1 | /*global showAddAnotherPopup, showRelatedObjectLookupPopup showRelatedObjectPopup updateRelatedObjectLinks*/ 2 | 3 | (function($) { 4 | 'use strict'; 5 | $(document).ready(function() { 6 | var modelName = $('#django-admin-form-add-constants').data('modelName'); 7 | $('body').on('click', '.add-another', function(e) { 8 | e.preventDefault(); 9 | var event = $.Event('django:add-another-related'); 10 | $(this).trigger(event); 11 | if (!event.isDefaultPrevented()) { 12 | showAddAnotherPopup(this); 13 | } 14 | }); 15 | 16 | if (modelName) { 17 | $('form#' + modelName + '_form :input:visible:enabled:first').focus(); 18 | } 19 | }); 20 | })(django.jQuery); 21 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/gl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/gl",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Elimine ";return t===1?n+="un carácter":n+=t+" caracteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Engada ";return t===1?n+="un carácter":n+=t+" caracteres",n},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){var t="Só pode ";return e.maximum===1?t+="un elemento":t+=e.maximum+" elementos",t},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.hu.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Hungarian translation for bootstrap-datepicker 3 | * Sotus László 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['hu'] = { 7 | days: ["Vasárnap", "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat", "Vasárnap"], 8 | daysShort: ["Vas", "Hét", "Ked", "Sze", "Csü", "Pén", "Szo", "Vas"], 9 | daysMin: ["Va", "Hé", "Ke", "Sz", "Cs", "Pé", "Sz", "Va"], 10 | months: ["Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"], 11 | monthsShort: ["Jan", "Feb", "Már", "Ápr", "Máj", "Jún", "Júl", "Aug", "Sze", "Okt", "Nov", "Dec"], 12 | today: "Ma", 13 | weekStart: 1, 14 | format: "yyyy.mm.dd" 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.it.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Italian translation for bootstrap-datepicker 3 | * Enrico Rubboli 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['it'] = { 7 | days: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato", "Domenica"], 8 | daysShort: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"], 9 | daysMin: ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa", "Do"], 10 | months: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"], 11 | monthsShort: ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"], 12 | today: "Oggi", 13 | weekStart: 1, 14 | format: "dd/mm/yyyy" 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_hu.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Hungarian translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Nincs találat."; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Túl rövid. Még " + n + " karakter hiányzik."; }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Túl hosszú. " + n + " kerekterrel több mint kellene."; }, 11 | formatSelectionTooBig: function (limit) { return "Csak " + limit + " elemet lehet kiválasztani."; }, 12 | formatLoadMore: function (pageNumber) { return "Töltés..."; }, 13 | formatSearching: function () { return "Keresés..."; } 14 | }); 15 | })(jQuery); 16 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/da.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Angiv venligst "+t+" tegn mindre";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Angiv venligst "+t+" tegn mere";return n},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var t="Du kan kun vælge "+e.maximum+" emne";return e.maximum!=1&&(t+="r"),t},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/silk/js/cell.js: -------------------------------------------------------------------------------- 1 | function configureSpanFontColors(selector, okValue, badValue) { 2 | selector.each(function () { 3 | var val = parseFloat($(this).text()); 4 | if (val < okValue) { 5 | $(this).addClass('very-good-font-color'); 6 | } 7 | else if (val < badValue) { 8 | $(this).addClass('ok-font-color'); 9 | } 10 | else { 11 | $(this).addClass('very-bad-font-color'); 12 | } 13 | }); 14 | } 15 | 16 | function configureFontColors() { 17 | configureSpanFontColors($('.time-taken-div .numeric'), 200, 500); 18 | configureSpanFontColors($('.time-taken-queries-div .numeric'), 50, 200); 19 | configureSpanFontColors($('.num-queries-div .numeric'), 10, 50); 20 | } 21 | 22 | $(document).ready(function () { 23 | configureFontColors(); 24 | }); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/en.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Please enter "+t+" or more characters";return n},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/he.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="נא למחוק ";return t===1?n+="תו אחד":n+=t+" תווים",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="נא להכניס ";return t===1?n+="תו אחד":n+=t+" תווים",n+=" או יותר",n},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(e){var t="באפשרותך לבחור עד ";return e.maximum===1?t+="פריט אחד":t+=e.maximum+" פריטים",t},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/hi.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" अक्षर को हटा दें";return t>1&&(n=t+" अक्षरों को हटा दें "),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="कृपया "+t+" या अधिक अक्षर दर्ज करें";return n},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(e){var t="आप केवल "+e.maximum+" आइटम का चयन कर सकते हैं";return t},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.lv.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Latvian translation for bootstrap-datepicker 3 | * Artis Avotins 4 | */ 5 | 6 | ;(function($){ 7 | $.fn.datepicker.dates['lv'] = { 8 | days: ["Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena", "Svētdiena"], 9 | daysShort: ["Sv", "P", "O", "T", "C", "Pk", "S", "Sv"], 10 | daysMin: ["Sv", "Pr", "Ot", "Tr", "Ce", "Pk", "St", "Sv"], 11 | months: ["Janvāris", "Februāris", "Marts", "Aprīlis", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"], 12 | monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jūn", "Jūl", "Aug", "Sep", "Okt", "Nov", "Dec."], 13 | today: "Šodien", 14 | weekStart: 1 15 | }; 16 | }(jQuery)); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/fa.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="لطفاً "+t+" کاراکتر را حذف نمایید";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لطفاً تعداد "+t+" کاراکتر یا بیشتر وارد نمایید";return n},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(e){var t="شما تنها می‌توانید "+e.maximum+" آیتم را انتخاب نمایید";return t},noResults:function(){return"هیچ نتیجه‌ای یافت نشد"},searching:function(){return"در حال جستجو..."}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/hr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hr",[],function(){function e(e){var t=" "+e+" znak";return e%10<5&&e%10>0&&(e%100<5||e%100>19)?e%10>1&&(t+="a"):t+="ova",t}return{errorLoading:function(){return"Preuzimanje nije uspjelo."},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Unesite "+e(n)},inputTooShort:function(t){var n=t.minimum-t.input.length;return"Unesite još "+e(n)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(e){return"Maksimalan broj odabranih stavki je "+e.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/mk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/mk",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Ве молиме внесете "+e.maximum+" помалку карактер";return e.maximum!==1&&(n+="и"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ве молиме внесете уште "+e.maximum+" карактер";return e.maximum!==1&&(n+="и"),n},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(e){var t="Можете да изберете само "+e.maximum+" ставк";return e.maximum===1?t+="а":t+="и",t},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/eu.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gutxiago",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gehiago",n},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return e.maximum===1?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_de.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 German translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Keine Übereinstimmungen gefunden"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Bitte " + n + " Zeichen mehr eingeben"; }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Bitte " + n + " Zeichen weniger eingeben"; }, 11 | formatSelectionTooBig: function (limit) { return "Sie können nur " + limit + " Eintr" + (limit === 1 ? "ag" : "äge") + " auswählen"; }, 12 | formatLoadMore: function (pageNumber) { return "Lade mehr Ergebnisse..."; }, 13 | formatSearching: function () { return "Suche..."; } 14 | }); 15 | })(jQuery); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/pt-BR.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Apague "+t+" caracter";return t!=1&&(n+="es"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Digite "+t+" ou mais caracteres";return n},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var t="Você só pode selecionar "+e.maximum+" ite";return e.maximum==1?t+="m":t+="ns",t},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_tr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Turkish translation. 3 | * 4 | * Author: Salim KAYABAŞI 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "Sonuç bulunamadı"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "En az " + n + " karakter daha girmelisiniz"; }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return n + " karakter azaltmalısınız"; }, 13 | formatSelectionTooBig: function (limit) { return "Sadece " + limit + " seçim yapabilirsiniz"; }, 14 | formatLoadMore: function (pageNumber) { return "Daha fazla ..."; }, 15 | formatSearching: function () { return "Aranıyor..."; } 16 | }); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/pt.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor apague "+t+" ";return n+=t!=1?"caracteres":"carácter",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Introduza "+t+" ou mais caracteres";return n},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var t="Apenas pode seleccionar "+e.maximum+" ";return t+=e.maximum!=1?"itens":"item",t},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_en.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 English translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "No matches found"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " more character" + (n == 1 ? "" : "s"); }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1 ? "" : "s"); }, 11 | formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); }, 12 | formatLoadMore: function (pageNumber) { return "Loading more results..."; }, 13 | formatSearching: function () { return "Searching..."; } 14 | }); 15 | })(jQuery); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/lv.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lv",[],function(){function e(e,t,n,r){return e===11?t:e%10===1?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Lūdzu ievadiet par "+n;return r+=" simbol"+e(n,"iem","u","iem"),r+" mazāk"},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Lūdzu ievadiet vēl "+n;return r+=" simbol"+e(n,"us","u","us"),r},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(t){var n="Jūs varat izvēlēties ne vairāk kā "+t.maximum;return n+=" element"+e(t.maximum,"us","u","us"),n},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/es.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"La carga falló"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor, elimine "+t+" car";return t==1?n+="ácter":n+="acteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Por favor, introduzca "+t+" car";return t==1?n+="ácter":n+="acteres",n},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var t="Sólo puede seleccionar "+e.maximum+" elemento";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.lt.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Lithuanian translation for bootstrap-datepicker 3 | * Šarūnas Gliebus 4 | */ 5 | 6 | ;(function($){ 7 | $.fn.datepicker.dates['lt'] = { 8 | days: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis", "Sekmadienis"], 9 | daysShort: ["S", "Pr", "A", "T", "K", "Pn", "Š", "S"], 10 | daysMin: ["Sk", "Pr", "An", "Tr", "Ke", "Pn", "Št", "Sk"], 11 | months: ["Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", "Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis", "Gruodis"], 12 | monthsShort: ["Sau", "Vas", "Kov", "Bal", "Geg", "Bir", "Lie", "Rugp", "Rugs", "Spa", "Lap", "Gru"], 13 | today: "Šiandien", 14 | weekStart: 1 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_nl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Dutch translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Geen resultaten gevonden"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Vul " + n + " karakter" + (n == 1? "" : "s") + " meer in"; }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Vul " + n + " karakter" + (n == 1? "" : "s") + " minder in"; }, 11 | formatSelectionTooBig: function (limit) { return "Maximaal " + limit + " item" + (limit == 1 ? "" : "s") + " toegestaan"; }, 12 | formatLoadMore: function (pageNumber) { return "Meer resultaten laden..."; }, 13 | formatSearching: function () { return "Zoeken..."; }, 14 | }); 15 | })(jQuery); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/ca.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Si us plau, elimina "+t+" car";return t==1?n+="àcter":n+="àcters",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Si us plau, introdueix "+t+" car";return t==1?n+="àcter":n+="àcters",n},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var t="Només es pot seleccionar "+e.maximum+" element";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/import_export/action_formats.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | $(document).ready(function() { 3 | var $actionsSelect, $formatsElement; 4 | if ($('body').hasClass('grp-change-list')) { 5 | // using grappelli 6 | $actionsSelect = $('#grp-changelist-form select[name="action"]'); 7 | $formatsElement = $('#grp-changelist-form select[name="file_format"]'); 8 | } else { 9 | // using default admin 10 | $actionsSelect = $('#changelist-form select[name="action"]'); 11 | $formatsElement = $('#changelist-form select[name="file_format"]').parent(); 12 | } 13 | $actionsSelect.change(function() { 14 | if ($(this).val() === 'export_admin_action') { 15 | $formatsElement.show(); 16 | } else { 17 | $formatsElement.hide(); 18 | } 19 | }); 20 | $actionsSelect.change(); 21 | }); 22 | })(django.jQuery); 23 | -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_sv.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Swedish translation. 3 | * 4 | * Author: Jens Rantil 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "Inga träffar"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Var god skriv in " + n + (n>1 ? " till tecken" : " tecken till"); }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Var god sudda ut " + n + " tecken"; }, 13 | formatSelectionTooBig: function (limit) { return "Du kan max välja " + limit + " element"; }, 14 | formatLoadMore: function (pageNumber) { return "Laddar fler resultat..."; }, 15 | formatSearching: function () { return "Söker..."; } 16 | }); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/it.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Per favore cancella "+t+" caratter";return t!==1?n+="i":n+="e",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Per favore inserisci "+t+" o più caratteri";return n},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var t="Puoi selezionare solo "+e.maximum+" element";return e.maximum!==1?t+="i":t+="o",t},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.pl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Polish translation for bootstrap-datepicker 3 | * Robert 4 | */ 5 | ;(function($){ 6 | $.fn.datepicker.dates['pl'] = { 7 | days: ["Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"], 8 | daysShort: ["Nie", "Pn", "Wt", "Śr", "Czw", "Pt", "So", "Nie"], 9 | daysMin: ["N", "Pn", "Wt", "Śr", "Cz", "Pt", "So", "N"], 10 | months: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"], 11 | monthsShort: ["Sty", "Lu", "Mar", "Kw", "Maj", "Cze", "Lip", "Sie", "Wrz", "Pa", "Lis", "Gru"], 12 | today: "Dzisiaj", 13 | weekStart: 1 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /static/xadmin/vendor/bootstrap-datepicker/js/locales/bootstrap-datepicker.sw.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Swahili translation for bootstrap-datepicker 3 | * Edwin Mugendi 4 | * Source: http://scriptsource.org/cms/scripts/page.php?item_id=entry_detail&uid=xnfaqyzcku 5 | */ 6 | ;(function($){ 7 | $.fn.datepicker.dates['sw'] = { 8 | days: ["Jumapili", "Jumatatu", "Jumanne", "Jumatano", "Alhamisi", "Ijumaa", "Jumamosi", "Jumapili"], 9 | daysShort: ["J2", "J3", "J4", "J5", "Alh", "Ij", "J1", "J2"], 10 | daysMin: ["2", "3", "4", "5", "A", "I", "1", "2"], 11 | months: ["Januari", "Februari", "Machi", "Aprili", "Mei", "Juni", "Julai", "Agosti", "Septemba", "Oktoba", "Novemba", "Desemba"], 12 | monthsShort: ["Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des"], 13 | today: "Leo" 14 | }; 15 | }(jQuery)); 16 | -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_es.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Spanish translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "No se encontraron resultados"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Por favor adicione " + n + " caracter" + (n == 1? "" : "es"); }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Por favor elimine " + n + " caracter" + (n == 1? "" : "es"); }, 11 | formatSelectionTooBig: function (limit) { return "Solo puede seleccionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, 12 | formatLoadMore: function (pageNumber) { return "Cargando más resultados..."; }, 13 | formatSearching: function () { return "Buscando..."; } 14 | }); 15 | })(jQuery); -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_it.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Italian translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Nessuna corrispondenza trovata"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Inserisci ancora " + n + " caratter" + (n == 1? "e" : "i"); }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Inserisci " + n + " caratter" + (n == 1? "e" : "i") + " in meno"; }, 11 | formatSelectionTooBig: function (limit) { return "Puoi selezionare solo " + limit + " element" + (limit == 1 ? "o" : "i"); }, 12 | formatLoadMore: function (pageNumber) { return "Caricamento in corso..."; }, 13 | formatSearching: function () { return "Ricerca..."; } 14 | }); 15 | })(jQuery); -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_pt-BR.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Brazilian Portuguese translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Nenhum resultado encontrado"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Informe " + n + " caracter" + (n == 1? "" : "es"); }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " caracter" + (n == 1? "" : "es"); }, 11 | formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, 12 | formatLoadMore: function (pageNumber) { return "Carregando mais resultados..."; }, 13 | formatSearching: function () { return "Buscando..."; } 14 | }); 15 | })(jQuery); 16 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/fr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Supprimez "+t+" caractère";return t!==1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Saisissez "+t+" caractère";return t!==1&&(n+="s"),n},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){var t="Vous pouvez seulement sélectionner "+e.maximum+" élément";return e.maximum!==1&&(t+="s"),t},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/ro.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ro",[],function(){return{errorLoading:function(){return"Rezultatele nu au putut fi incărcate."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să ștergeți"+t+" caracter";return t!==1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vă rugăm să introduceți "+t+"sau mai multe caractere";return n},loadingMore:function(){return"Se încarcă mai multe rezultate…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",e.maximum!==1&&(t+="e"),t},noResults:function(){return"Nu au fost găsite rezultate"},searching:function(){return"Căutare…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_pt-PT.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Portuguese (Portugal) translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Nenhum resultado encontrado"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduza " + n + " caracter" + (n == 1 ? "" : "es"); }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " caracter" + (n == 1 ? "" : "es"); }, 11 | formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, 12 | formatLoadMore: function (pageNumber) { return "A carregar mais resultados..."; }, 13 | formatSearching: function () { return "A pesquisar..."; } 14 | }); 15 | })(jQuery); 16 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/nl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Gelieve "+t+" karakters te verwijderen";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Gelieve "+t+" of meer karakters in te voeren";return n},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var t=e.maximum==1?"kan":"kunnen",n="Er "+t+" maar "+e.maximum+" item";return e.maximum!=1&&(n+="s"),n+=" worden geselecteerd",n},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/drf-yasg/swagger-ui-dist/index.js: -------------------------------------------------------------------------------- 1 | try { 2 | module.exports.SwaggerUIBundle = require("./swagger-ui-bundle.js") 3 | module.exports.SwaggerUIStandalonePreset = require("./swagger-ui-standalone-preset.js") 4 | } catch(e) { 5 | // swallow the error if there's a problem loading the assets. 6 | // allows this module to support providing the assets for browserish contexts, 7 | // without exploding in a Node context. 8 | // 9 | // see https://github.com/swagger-api/swagger-ui/issues/3291#issuecomment-311195388 10 | // for more information. 11 | } 12 | 13 | // `absolutePath` and `getAbsoluteFSPath` are both here because at one point, 14 | // we documented having one and actually implemented the other. 15 | // They were both retained so we don't break anyone's code. 16 | module.exports.absolutePath = require("./absolute-path.js") 17 | module.exports.getAbsoluteFSPath = require("./absolute-path.js") 18 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/lt.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lt",[],function(){function e(e,t,n,r){return e%10===1&&(e%100<11||e%100>19)?t:e%10>=2&&e%10<=9&&(e%100<11||e%100>19)?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Pašalinkite "+n+" simbol";return r+=e(n,"į","ius","ių"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Įrašykite dar "+n+" simbol";return r+=e(n,"į","ius","ių"),r},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(t){var n="Jūs galite pasirinkti tik "+t.maximum+" element";return n+=e(t.maximum,"ą","us","ų"),n},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_ro.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Romanian translation. 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Nu a fost găsit nimic"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Vă rugăm să introduceți incă " + n + " caracter" + (n == 1 ? "" : "e"); }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Vă rugăm să introduceți mai puțin de " + n + " caracter" + (n == 1? "" : "e"); }, 11 | formatSelectionTooBig: function (limit) { return "Aveți voie să selectați cel mult " + limit + " element" + (limit == 1 ? "" : "e"); }, 12 | formatLoadMore: function (pageNumber) { return "Se încarcă..."; }, 13 | formatSearching: function () { return "Căutare..."; } 14 | }); 15 | })(jQuery); 16 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/pl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pl",[],function(){var e=["znak","znaki","znaków"],t=["element","elementy","elementów"],n=function(t,n){if(t===1)return n[0];if(t>1&&t<=4)return n[1];if(t>=5)return n[2]};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Usuń "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Podaj przynajmniej "+r+" "+n(r,e)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(e){return"Możesz zaznaczyć tylko "+e.maximum+" "+n(e.maximum,t)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/el.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/el",[],function(){return{errorLoading:function(){return"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Παρακαλώ διαγράψτε "+t+" χαρακτήρ";return t==1&&(n+="α"),t!=1&&(n+="ες"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Παρακαλώ συμπληρώστε "+t+" ή περισσότερους χαρακτήρες";return n},loadingMore:function(){return"Φόρτωση περισσότερων αποτελεσμάτων…"},maximumSelected:function(e){var t="Μπορείτε να επιλέξετε μόνο "+e.maximum+" επιλογ";return e.maximum==1&&(t+="ή"),e.maximum!=1&&(t+="ές"),t},noResults:function(){return"Δεν βρέθηκαν αποτελέσματα"},searching:function(){return"Αναζήτηση…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/sr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Preuzimanje nije uspelo."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/uk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/uk",[],function(){function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<5?n:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Будь ласка, видаліть "+n+" "+e(t.maximum,"літеру","літери","літер")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Будь ласка, введіть "+t+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(t){return"Ви можете вибрати лише "+t.maximum+" "+e(t.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_fr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 French translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Aucun résultat trouvé"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Merci de saisir " + n + " caractère" + (n == 1? "" : "s") + " de plus"; }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Merci de saisir " + n + " caractère" + (n == 1? "" : "s") + " de moins"; }, 11 | formatSelectionTooBig: function (limit) { return "Vous pouvez seulement sélectionner " + limit + " élément" + (limit == 1 ? "" : "s"); }, 12 | formatLoadMore: function (pageNumber) { return "Chargement de résultats supplémentaires..."; }, 13 | formatSearching: function () { return "Recherche en cours..."; } 14 | }); 15 | })(jQuery); 16 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/sr-Cyrl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr-Cyrl",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Преузимање није успело."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Обришите "+n+" симбол";return r+=e(n,"","а","а"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Укуцајте бар још "+n+" симбол";return r+=e(n,"","а","а"),r},loadingMore:function(){return"Преузимање још резултата…"},maximumSelected:function(t){var n="Можете изабрати само "+t.maximum+" ставк";return n+=e(t.maximum,"у","е","и"),n},noResults:function(){return"Ништа није пронађено"},searching:function(){return"Претрага…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/rest_framework/css/prettify.css: -------------------------------------------------------------------------------- 1 | .com { color: #93a1a1; } 2 | .lit { color: #195f91; } 3 | .pun, .opn, .clo { color: #93a1a1; } 4 | .fun { color: #dc322f; } 5 | .str, .atv { color: #D14; } 6 | .kwd, .prettyprint .tag { color: #1e347b; } 7 | .typ, .atn, .dec, .var { color: teal; } 8 | .pln { color: #48484c; } 9 | 10 | .prettyprint { 11 | padding: 8px; 12 | background-color: #f7f7f9; 13 | border: 1px solid #e1e1e8; 14 | } 15 | .prettyprint.linenums { 16 | -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 17 | -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 18 | box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 19 | } 20 | 21 | /* Specify class=linenums on a pre to get line numbering */ 22 | ol.linenums { 23 | margin: 0 0 0 33px; /* IE indents via margin-left */ 24 | } 25 | ol.linenums li { 26 | padding-left: 12px; 27 | color: #bebec5; 28 | line-height: 20px; 29 | text-shadow: 0 1px 0 #fff; 30 | } -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/ru.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ru",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Пожалуйста, введите на "+n+" символ";return r+=e(n,"","a","ов"),r+=" меньше",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Пожалуйста, введите еще хотя бы "+n+" символ";return r+=e(n,"","a","ов"),r},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(t){var n="Вы можете выбрать не более "+t.maximum+" элемент";return n+=e(t.maximum,"","a","ов"),n},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_ru.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Russian translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Совпадений не найдено"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Пожалуйста, введите еще " + n + " символ" + (n == 1 ? "" : ((n > 1)&&(n < 5) ? "а" : "ов")); }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Пожалуйста, введите на " + n + " символ" + (n == 1 ? "" : ((n > 1)&&(n < 5)? "а" : "ов")) + " меньше"; }, 11 | formatSelectionTooBig: function (limit) { return "Вы можете выбрать не более " + limit + " элемент" + (limit == 1 ? "" : ((limit > 1)&&(limit < 5)? "а" : "ов")); }, 12 | formatLoadMore: function (pageNumber) { return "Загрузка данных..."; }, 13 | formatSearching: function () { return "Поиск..."; } 14 | }); 15 | })(jQuery); 16 | -------------------------------------------------------------------------------- /static/xadmin/css/xadmin.page.dashboard.css: -------------------------------------------------------------------------------- 1 | 2 | .dashboard.container-fluid { 3 | padding-left: 0px; 4 | } 5 | .dashboard .column{ 6 | min-height: 60px; 7 | } 8 | 9 | .widget { 10 | } 11 | .widget_options { 12 | } 13 | 14 | /* Quick Buttons 15 | =================================================================== */ 16 | .qbutton .panel-body { 17 | padding-top: 5px; 18 | } 19 | .btn-quick { 20 | margin-top: 10px; 21 | padding: 20px 0px 0px 0px; 22 | font-size: 15px; 23 | display:block; 24 | text-align: center; 25 | cursor: pointer; 26 | position: relative; 27 | } 28 | .btn-quick i { 29 | font-size: 32px; 30 | } 31 | 32 | /* Quick Buttons Small 33 | =================================================================== */ 34 | 35 | .btn-quick-small { 36 | border-radius: 3px; 37 | padding: 15px 0px 0px 0px; 38 | font-size: 10px; 39 | display:block; 40 | text-align: center; 41 | cursor: pointer; 42 | position: relative; 43 | } 44 | 45 | .btn-quick-small i { 46 | font-size: 20px; 47 | } -------------------------------------------------------------------------------- /static/xadmin/js/xadmin.plugin.revision.js: -------------------------------------------------------------------------------- 1 | jQuery(function($){ 2 | $('.diff_field').each(function(){ 3 | var el = $(this); 4 | var textarea = el.find('textarea.org-data'); 5 | var title = el.data('org-data') || el.attr('title'); 6 | if(textarea.length){ 7 | title = textarea.val(); 8 | } 9 | el.find('.controls').tooltip({ 10 | title: title, 11 | html: true 12 | }) 13 | }); 14 | 15 | $('.formset-content .formset-row').each(function(){ 16 | var row = $(this); 17 | var del = row.find('input[id $= "-DELETE"]'); 18 | if(del.val() == 'on' || del.val() == 'True'){ 19 | row.addClass('row-deleted'); 20 | del.val('on'); 21 | } 22 | var idinput = row.find('input[id $= "-id"]'); 23 | if(idinput.val() == '' || idinput.val() == undefined){ 24 | row.addClass('row-added'); 25 | row.find('.formset-num').html(gettext('New Item')); 26 | } 27 | }); 28 | }); -------------------------------------------------------------------------------- /static/admin/js/collapse.min.js: -------------------------------------------------------------------------------- 1 | (function(){var e=function(b,a){return b.nodeName===a.toUpperCase()?b:"BODY"===b.parentNode.nodeName?null:b.parentNode&&e(b.parentNode,a)};window.addEventListener("load",function(){for(var b=document.querySelectorAll("fieldset.collapse"),a=0;a轻量级测试平台

    雷达

    ' /usr/local/lib/python3.6/dist-packages/xadmin/templates/xadmin/views/login.html && \ 15 | sed -i '30,31c ' /usr/local/lib/python3.6/dist-packages/xadmin/templates/xadmin/base.html 16 | # 修改Django源码 17 | 18 | RUN mkdir /django/dapi/media/ 19 | # 创建/django/dapi/media目录 20 | 21 | EXPOSE 80 22 | # 暴露80端口 23 | 24 | ENTRYPOINT ["supervisord", "-c", "/etc/supervisor/supervisord.conf"] 25 | # 启动supervisor并加载配置文件 26 | -------------------------------------------------------------------------------- /deploy_conf/uwsgi.ini: -------------------------------------------------------------------------------- 1 | [uwsgi] 2 | socket = 127.0.0.1:3031 3 | ;Socket套接字 4 | socket-timeout = 60 5 | ;连接超时时间 6 | 7 | chdir = /django/dapi 8 | ;工程的绝对路径 9 | wsgi-file = dapi/wsgi.py 10 | ;wsgi.py的相对路径 11 | 12 | master = true 13 | ;启用主进程 14 | enable-threads = true 15 | ;启用线程支持 16 | processes = 4 17 | ;4个线程,每个进程有2个线程 18 | threads = 2 19 | ;2个进程 20 | ;uWSGI默认单个进程和单个线程 21 | harakiri = 60 22 | ;销毁被阻止超过60秒的进程 23 | harakiri-verbose = true 24 | ;记录harakiri日志 25 | 26 | uid = root 27 | gid = root 28 | ;启动uwsgi的用户名和用户组 29 | 30 | buffer-size = 65535 31 | ;内部缓存区大小为64k,默认4k 32 | max-​​​​requests = 65535 33 | ;每个进程的最大请求数 34 | 35 | stats = 127.0.0.1:9191 36 | ;stats子系统将uWSGI的内部统计信息导出为JSON 37 | memory-report = true 38 | ;开启内存使用情况报告 39 | 40 | pidfile = %(chdir)/uwsgi.pid​​​​​​ 41 | ;pid文件 42 | 43 | vacuum = true 44 | ;当服务停止的时候,自动清理Unix Socket和pid文件 45 | 46 | disable-logging = true 47 | ;不记录请求日志 48 | ;logto = %(chdir)/uwsgi.log 49 | ;将日志打到指定的日志文件 50 | ;daemonize = %(chdir)/uwsgi.log 51 | ;使进程在后台运行 52 | ;log-maxsize = 20971520 53 | ;设置日志文件最大为20M 54 | 55 | pythonpath = /usr/local/lib/python3.6/dist-packages 56 | ;指定python3库的环境,操作系统是Ubuntu18.04 57 | -------------------------------------------------------------------------------- /static/admin/img/gis/move_vertex_on.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/admin/img/icon-calendar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /static/admin/img/gis/move_vertex_off.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/xadmin/js/xadmin.plugin.portal.js: -------------------------------------------------------------------------------- 1 | jQuery(function() { 2 | $( ".column" ).sortable({ 3 | connectWith: ".column", 4 | handle: '.panel-heading', 5 | forcePlaceholderSize: true, 6 | cursor: "move", 7 | cancel: ".unsort, .tab-content", 8 | stop: function( event, ui ) { 9 | var pos = []; 10 | $('.column').each(function(){ 11 | var col = []; 12 | $(this).find('.panel').each(function(){ 13 | col.push($(this).attr('id')); 14 | }); 15 | pos.push(col.join(',')); 16 | }); 17 | var pos_val = pos.join('|'); 18 | var key = $('#_portal_key').val(); 19 | $.save_user_settings(key, pos_val, function(){ 20 | //alert('success'); 21 | }); 22 | } 23 | }); 24 | 25 | $( ".panel-heading .icon.chevron" ).click(function() { 26 | $( this ).toggleClass( "fa fa-chevron-up" ).toggleClass( "fa fa-chevron-down" ); 27 | $( this ).parents( ".panel:first" ).find( ".panel-body" ).toggle('fast'); 28 | }); 29 | 30 | }); -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/sk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sk",[],function(){var e={2:function(e){return e?"dva":"dve"},3:function(){return"tri"},4:function(){return"štyri"}};return{inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím, zadajte o jeden znak menej":n>=2&&n<=4?"Prosím, zadajte o "+e[n](!0)+" znaky menej":"Prosím, zadajte o "+n+" znakov menej"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím, zadajte ešte jeden znak":n<=4?"Prosím, zadajte ešte ďalšie "+e[n](!0)+" znaky":"Prosím, zadajte ešte ďalších "+n+" znakov"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(t){return t.maximum==1?"Môžete zvoliť len jednu položku":t.maximum>=2&&t.maximum<=4?"Môžete zvoliť najviac "+e[t.maximum](!1)+" položky":"Môžete zvoliť najviac "+t.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/img/calendar-icons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /static/admin/img/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Code Charm Ltd 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_ua.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 translation. 3 | * 4 | * Author: bigmihail 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "Нічого не знайдено"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length, s = ["", "и", "ів"], p = [2,0,1,1,1,2]; return "Введіть буль ласка ще " + n + " символ" + s[ (n%100>4 && n%100<=20)? 2 : p[Math.min(n%10, 5)] ]; }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max, s = ["", "и", "ів"], p = [2,0,1,1,1,2]; return "Введіть буль ласка на " + n + " символ" + s[ (n%100>4 && n%100<=20)? 2 : p[Math.min(n%10, 5)] ] + " менше"; }, 13 | formatSelectionTooBig: function (limit) {var s = ["", "и", "ів"], p = [2,0,1,1,1,2]; return "Ви можете вибрати лише " + limit + " елемент" + s[ (limit%100>4 && limit%100<=20)? 2 : p[Math.min(limit%10, 5)] ]; }, 14 | formatLoadMore: function (pageNumber) { return "Завантаження даних..."; }, 15 | formatSearching: function () { return "Пошук..."; } 16 | }); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /static/admin/img/sorting-icons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/i18n/cs.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/cs",[],function(){function e(e,t){switch(e){case 2:return t?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím zadejte o jeden znak méně":n<=4?"Prosím zadejte o "+e(n,!0)+" znaky méně":"Prosím zadejte o "+n+" znaků méně"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím zadejte ještě jeden znak":n<=4?"Prosím zadejte ještě další "+e(n,!0)+" znaky":"Prosím zadejte ještě dalších "+n+" znaků"},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(t){var n=t.maximum;return n==1?"Můžete zvolit jen jednu položku":n<=4?"Můžete zvolit maximálně "+e(n,!1)+" položky":"Můžete zvolit maximálně "+n+" položek"},noResults:function(){return"Nenalezeny žádné položky"},searching:function(){return"Vyhledávání…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /static/admin/js/vendor/xregexp/LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2007-2012 Steven Levithan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /static/admin/js/vendor/select2/LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2012-2015 Kevin Brown, Igor Vaynberg, and Select2 contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /static/admin/css/vendor/select2/LICENSE-SELECT2.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2012-2015 Kevin Brown, Igor Vaynberg, and Select2 contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /static/xadmin/js/xadmin.page.list.js: -------------------------------------------------------------------------------- 1 | jQuery(function($){ 2 | //full screen btn 3 | $('.layout-btns .layout-full').click(function(e){ 4 | var icon = $(this).find('i') 5 | if($(this).hasClass('active')){ 6 | // reset 7 | $('#left-side, ul.breadcrumb').show('fast'); 8 | $('#content-block').removeClass('col-md-12 col-sm-12 full-content').addClass('col-sm-11 col-md-10'); 9 | icon.removeClass('fa-compress').addClass('fa-expand'); 10 | $(window).trigger('resize'); 11 | } else { 12 | // full screen 13 | $('#left-side, ul.breadcrumb').hide('fast', function(){ 14 | $('#content-block').removeClass('col-sm-11 col-md-10').addClass('col-md-12 col-sm-12 full-content'); 15 | icon.removeClass('fa-expand').addClass('fa-compress'); 16 | $(window).trigger('resize'); 17 | }); 18 | } 19 | }); 20 | 21 | $('.layout-btns .layout-normal').click(function(e){ 22 | $('.results table').removeClass('table-condensed'); 23 | }); 24 | 25 | $('.layout-btns .layout-condensed').click(function(e){ 26 | $('.results table').addClass('table-condensed'); 27 | }); 28 | 29 | }); -------------------------------------------------------------------------------- /static/admin/js/autocomplete.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 'use strict'; 3 | var init = function($element, options) { 4 | var settings = $.extend({ 5 | ajax: { 6 | data: function(params) { 7 | return { 8 | term: params.term, 9 | page: params.page 10 | }; 11 | } 12 | } 13 | }, options); 14 | $element.select2(settings); 15 | }; 16 | 17 | $.fn.djangoAdminSelect2 = function(options) { 18 | var settings = $.extend({}, options); 19 | $.each(this, function(i, element) { 20 | var $element = $(element); 21 | init($element, settings); 22 | }); 23 | return this; 24 | }; 25 | 26 | $(function() { 27 | // Initialize all autocomplete widgets except the one in the template 28 | // form used when a new formset is added. 29 | $('.admin-autocomplete').not('[name*=__prefix__]').djangoAdminSelect2(); 30 | }); 31 | 32 | $(document).on('formset:added', (function() { 33 | return function(event, $newFormset) { 34 | return $newFormset.find('.admin-autocomplete').djangoAdminSelect2(); 35 | }; 36 | })(this)); 37 | }(django.jQuery)); 38 | -------------------------------------------------------------------------------- /static/rest_framework/docs/css/jquery.json-view.min.css: -------------------------------------------------------------------------------- 1 | .json-view{position:relative} 2 | .json-view .collapser{width:20px;height:18px;display:block;position:absolute;left:-1.7em;top:-.2em;z-index:5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpiYGBgOADE%2F3Hgw0DM4IRHgSsDFOzFInmMAQnY49ONzZRjDFiADT7dMLALiE8y4AGW6LoBAgwAuIkf%2F%2FB7O9sAAAAASUVORK5CYII%3D);background-repeat:no-repeat;background-position:center center;opacity:.5;cursor:pointer} 3 | .json-view .collapsed{-ms-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-khtml-transform:rotate(-90deg);-webkit-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)} 4 | .json-view .bl{display:block;padding-left:20px;margin-left:-20px;position:relative} 5 | .json-view{font-family:monospace} 6 | .json-view ul{list-style-type:none;padding-left:2em;border-left:1px dotted;margin:.3em} 7 | .json-view ul li{position:relative} 8 | .json-view .comments,.json-view .dots{display:none;-moz-user-select:none;-ms-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none} 9 | .json-view .comments{padding-left:.8em;font-style:italic;color:#888} 10 | .json-view .bool,.json-view .null,.json-view .num,.json-view .undef{font-weight:700;color:#1A01CC} 11 | .json-view .str{color:#800} -------------------------------------------------------------------------------- /static/drf-yasg/style.css: -------------------------------------------------------------------------------- 1 | html { 2 | box-sizing: border-box; 3 | overflow: -moz-scrollbars-vertical; 4 | overflow-y: scroll; 5 | } 6 | 7 | *, 8 | *:before, 9 | *:after { 10 | box-sizing: inherit; 11 | } 12 | 13 | body { 14 | margin: 0; 15 | padding: 0; 16 | } 17 | 18 | body.swagger-body { 19 | background: #fafafa; 20 | } 21 | 22 | .hidden { 23 | display: none; 24 | } 25 | 26 | #django-session-auth > div { 27 | display: inline-block; 28 | } 29 | 30 | #django-session-auth .btn.authorize { 31 | padding: 10px 23px; 32 | } 33 | 34 | #django-session-auth .btn.authorize a { 35 | color: #49cc90; 36 | text-decoration: none; 37 | } 38 | 39 | #django-session-auth .hello { 40 | margin-right: 5px; 41 | } 42 | 43 | #django-session-auth .hello .django-session { 44 | font-weight: bold; 45 | } 46 | 47 | .label { 48 | display: inline; 49 | padding: .2em .6em .3em; 50 | font-weight: 700; 51 | line-height: 1; 52 | color: #fff; 53 | text-align: center; 54 | white-space: nowrap; 55 | vertical-align: baseline; 56 | border-radius: .25em; 57 | } 58 | 59 | .label-primary { 60 | background-color: #337ab7; 61 | } 62 | 63 | .divider { 64 | margin-right: 8px; 65 | background: #16222c44; 66 | width: 2px; 67 | } 68 | 69 | svg.swagger-defs { 70 | position: absolute; 71 | width: 0; 72 | height: 0; 73 | } 74 | -------------------------------------------------------------------------------- /static/admin/js/vendor/jquery/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright jQuery Foundation and other contributors, https://jquery.org/ 2 | 3 | This software consists of voluntary contributions made by many 4 | individuals. For exact contribution history, see the revision history 5 | available at https://github.com/jquery/jquery 6 | 7 | ==== 8 | 9 | Permission is hereby granted, free of charge, to any person obtaining 10 | a copy of this software and associated documentation files (the 11 | "Software"), to deal in the Software without restriction, including 12 | without limitation the rights to use, copy, modify, merge, publish, 13 | distribute, sublicense, and/or sell copies of the Software, and to 14 | permit persons to whom the Software is furnished to do so, subject to 15 | the following conditions: 16 | 17 | The above copyright notice and this permission notice shall be 18 | included in all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 21 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 22 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 23 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 24 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 25 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 26 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 27 | -------------------------------------------------------------------------------- /static/xadmin/css/xadmin.widget.editable.css: -------------------------------------------------------------------------------- 1 | .editable-handler .popover{ 2 | width: auto; 3 | } 4 | .editable .popover-title{ 5 | white-space:nowrap; 6 | } 7 | .editable .popover-title .close { 8 | margin: -4px 0px 0px 10px; 9 | } 10 | .editable form .btn-ajax{ 11 | display: none; 12 | } 13 | .editable form .control-wrap{ 14 | padding-right: 0px; 15 | } 16 | .editable form{ 17 | margin-bottom: 0px; 18 | } 19 | .editable form .controls{ 20 | margin: 0px; 21 | padding: 0px !important; 22 | border: 0px; 23 | } 24 | .editable form .form-group { 25 | margin: 0px 0px 10px !important; 26 | } 27 | .editable form .control-label{ 28 | display: none; 29 | } 30 | .editable form .controls label { 31 | white-space:nowrap; 32 | } 33 | 34 | @media (min-width: 768px) { 35 | .editable form .text-field, 36 | .editable form .textinput { 37 | width: 200px; 38 | } 39 | .editable form .int-field { 40 | width: 150px; 41 | } 42 | .editable form .textarea-field{ 43 | width: 250px; 44 | height: 50px; 45 | } 46 | 47 | .editable form select, 48 | .editable form .select2-container { 49 | max-width: 200px; 50 | min-width: 100px; 51 | width: 100%; 52 | } 53 | } 54 | @media (max-width: 767px) { 55 | .popover.editpop{ 56 | position: fixed; 57 | top: 30px !important; 58 | left: 10px !important; 59 | right: 10px !important; 60 | z-index: 1040; 61 | max-width: none; 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /static/xadmin/css/xadmin.plugin.formset.css: -------------------------------------------------------------------------------- 1 | 2 | .empty-form { 3 | display: none; 4 | } 5 | .formset:not(.one) > .panel-body { 6 | padding-top: 0px !important; 7 | } 8 | .formset .row-deleted{ 9 | background: #fff0f0 !important; 10 | } 11 | .formset .row-added { 12 | background: #d1ffdd !important; 13 | } 14 | .formset .formset-heading{ 15 | padding: 10px; 16 | border-bottom: 1px solid #EEE; 17 | } 18 | .formset .row-deleted .formset-form { 19 | display: none; 20 | } 21 | .formset .box-content.accordion { 22 | margin: 0px; 23 | padding: 5px 5px 3px; 24 | } 25 | .formset .formset-form { 26 | padding-left: 15px; 27 | padding-right: 15px; 28 | } 29 | .formset .accordion-heading .delete-row { 30 | float: right; 31 | margin: 8px; 32 | } 33 | .formset .nav{ 34 | margin-bottom: 5px; 35 | } 36 | .formset .nav.nav-tabs{ 37 | padding: 10px 10px 0px; 38 | } 39 | .formset .panel-body.tabs { 40 | padding-left: 0px; 41 | padding-right: 0px; 42 | } 43 | .formset .box-content.tabs{ 44 | padding: 5px 0px 0px; 45 | } 46 | .formset .tabs .tab-content{ 47 | overflow: hidden; 48 | } 49 | .formset .tabs .delete-row{ 50 | float: right; 51 | margin: 8px 8px; 52 | } 53 | .formset .table{ 54 | margin-bottom: 0px; 55 | } 56 | .formset .table td{ 57 | padding: 4px; 58 | } 59 | 60 | .formset .table td .delete-row{ 61 | margin-top: 4px; 62 | display: block; 63 | } 64 | -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_eu.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Basque translation. 3 | * 4 | * Author: Julen Ruiz Aizpuru 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { 11 | return "Ez da bat datorrenik aurkitu"; 12 | }, 13 | formatInputTooShort: function (input, min) { 14 | var n = min - input.length; 15 | if (n === 1) { 16 | return "Idatzi karaktere bat gehiago"; 17 | } else { 18 | return "Idatzi " + n + " karaktere gehiago"; 19 | } 20 | }, 21 | formatInputTooLong: function (input, max) { 22 | var n = input.length - max; 23 | if (n === 1) { 24 | return "Idatzi karaktere bat gutxiago"; 25 | } else { 26 | return "Idatzi " + n + " karaktere gutxiago"; 27 | } 28 | }, 29 | formatSelectionTooBig: function (limit) { 30 | if (limit === 1 ) { 31 | return "Elementu bakarra hauta dezakezu"; 32 | } else { 33 | return limit + " elementu hauta ditzakezu soilik"; 34 | } 35 | }, 36 | formatLoadMore: function (pageNumber) { 37 | return "Emaitza gehiago kargatzen..."; 38 | }, 39 | formatSearching: function () { 40 | return "Bilatzen..."; 41 | } 42 | }); 43 | })(jQuery); 44 | -------------------------------------------------------------------------------- /static/rest_framework/js/default.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | // JSON highlighting. 3 | prettyPrint(); 4 | 5 | // Bootstrap tooltips. 6 | $('.js-tooltip').tooltip({ 7 | delay: 1000, 8 | container: 'body' 9 | }); 10 | 11 | // Deal with rounded tab styling after tab clicks. 12 | $('a[data-toggle="tab"]:first').on('shown', function(e) { 13 | $(e.target).parents('.tabbable').addClass('first-tab-active'); 14 | }); 15 | 16 | $('a[data-toggle="tab"]:not(:first)').on('shown', function(e) { 17 | $(e.target).parents('.tabbable').removeClass('first-tab-active'); 18 | }); 19 | 20 | $('a[data-toggle="tab"]').click(function() { 21 | document.cookie = "tabstyle=" + this.name + "; path=/"; 22 | }); 23 | 24 | // Store tab preference in cookies & display appropriate tab on load. 25 | var selectedTab = null; 26 | var selectedTabName = getCookie('tabstyle'); 27 | 28 | if (selectedTabName) { 29 | selectedTabName = selectedTabName.replace(/[^a-z-]/g, ''); 30 | } 31 | 32 | if (selectedTabName) { 33 | selectedTab = $('.form-switcher a[name=' + selectedTabName + ']'); 34 | } 35 | 36 | if (selectedTab && selectedTab.length > 0) { 37 | // Display whichever tab is selected. 38 | selectedTab.tab('show'); 39 | } else { 40 | // If no tab selected, display rightmost tab. 41 | $('.form-switcher a:first').tab('show'); 42 | } 43 | 44 | $(window).on('load', function() { 45 | $('#errorModal').modal('show'); 46 | }); 47 | }); 48 | -------------------------------------------------------------------------------- /static/xadmin/vendor/snapjs/snap.css: -------------------------------------------------------------------------------- 1 | 2 | .snap-content { 3 | position: absolute; 4 | top: 0; 5 | right: 0; 6 | bottom: 0; 7 | left: 0; 8 | width: auto; 9 | height: auto; 10 | z-index: 2; 11 | overflow: auto; 12 | -webkit-overflow-scrolling: touch; 13 | -webkit-transform: translate3d(0, 0, 0); 14 | -moz-transform: translate3d(0, 0, 0); 15 | -ms-transform: translate3d(0, 0, 0); 16 | -o-transform: translate3d(0, 0, 0); 17 | transform: translate3d(0, 0, 0); 18 | } 19 | 20 | .snap-drawers { 21 | position: absolute; 22 | top: 0; 23 | right: 0; 24 | bottom: 0; 25 | left: 0; 26 | width: auto; 27 | height: auto; 28 | } 29 | 30 | .snap-drawer { 31 | position: absolute; 32 | top: 0; 33 | right: auto; 34 | bottom: 0; 35 | left: auto; 36 | width: 265px; 37 | height: auto; 38 | overflow: auto; 39 | -webkit-overflow-scrolling: touch; 40 | -webkit-transition: width 0.3s ease; 41 | -moz-transition: width 0.3s ease; 42 | -ms-transition: width 0.3s ease; 43 | -o-transition: width 0.3s ease; 44 | transition: width 0.3s ease; 45 | } 46 | 47 | .snap-drawer-left { 48 | left: 0; 49 | z-index: 1; 50 | } 51 | 52 | .snap-drawer-right { 53 | right: 0; 54 | z-index: 1; 55 | } 56 | 57 | .snapjs-left .snap-drawer-right, 58 | .snapjs-right .snap-drawer-left { 59 | display: none; 60 | } 61 | 62 | .snapjs-expand-left .snap-drawer-left, 63 | .snapjs-expand-right .snap-drawer-right { 64 | width: 100%; 65 | } 66 | -------------------------------------------------------------------------------- /static/xadmin/js/xadmin.widget.select.js: -------------------------------------------------------------------------------- 1 | ;(function($){ 2 | // add select render 3 | $.fn.exform.renders.push(function(f){ 4 | if($.fn.selectize){ 5 | f.find('select:not(.select-search):not([multiple=multiple])').selectize(); 6 | f.find('.select-search').each(function(){ 7 | var $el = $(this); 8 | var preload = $el.hasClass('select-preload'); 9 | $el.selectize({ 10 | valueField: 'id', 11 | labelField: '__str__', 12 | searchField: '__str__', 13 | create: false, 14 | maxItems: 1, 15 | preload: preload, 16 | load: function(query, callback) { 17 | if(!preload && !query.length) return callback(); 18 | $.ajax({ 19 | url: $el.data('search-url')+$el.data('choices'), 20 | dataType: 'json', 21 | data: { 22 | '_q_' : query, 23 | '_cols': 'id.__str__' 24 | }, 25 | type: 'GET', 26 | error: function() { 27 | callback(); 28 | }, 29 | success: function(res) { 30 | callback(res.objects); 31 | } 32 | }); 33 | } 34 | }); 35 | }) 36 | }}); 37 | })(jQuery) 38 | 39 | -------------------------------------------------------------------------------- /static/rest_framework/css/default.css: -------------------------------------------------------------------------------- 1 | /* The navbar is fixed at >= 980px wide, so add padding to the body to prevent 2 | content running up underneath it. */ 3 | 4 | h1 { 5 | font-weight: 300; 6 | } 7 | 8 | h2, h3 { 9 | font-weight: 300; 10 | } 11 | 12 | .resource-description, .response-info { 13 | margin-bottom: 2em; 14 | } 15 | 16 | .version:before { 17 | content: "v"; 18 | opacity: 0.6; 19 | padding-right: 0.25em; 20 | } 21 | 22 | .version { 23 | font-size: 70%; 24 | } 25 | 26 | .format-option { 27 | font-family: Menlo, Consolas, "Andale Mono", "Lucida Console", monospace; 28 | } 29 | 30 | .button-form { 31 | float: right; 32 | margin-right: 1em; 33 | } 34 | 35 | td.nested { 36 | padding: 0 !important; 37 | } 38 | 39 | td.nested > table { 40 | margin: 0; 41 | } 42 | 43 | form select, form input, form textarea { 44 | width: 90%; 45 | } 46 | 47 | form select[multiple] { 48 | height: 150px; 49 | } 50 | 51 | /* To allow tooltips to work on disabled elements */ 52 | .disabled-tooltip-shield { 53 | position: absolute; 54 | top: 0; 55 | right: 0; 56 | bottom: 0; 57 | left: 0; 58 | } 59 | 60 | .errorlist { 61 | margin-top: 0.5em; 62 | } 63 | 64 | pre { 65 | overflow: auto; 66 | word-wrap: normal; 67 | white-space: pre; 68 | font-size: 12px; 69 | } 70 | 71 | .page-header { 72 | border-bottom: none; 73 | padding-bottom: 0px; 74 | } 75 | 76 | #filtersModal form input[type=submit] { 77 | width: auto; 78 | } 79 | 80 | #filtersModal .modal-body h2 { 81 | margin-top: 0 82 | } 83 | -------------------------------------------------------------------------------- /static/silk/js/filters.js: -------------------------------------------------------------------------------- 1 | 2 | function configureResizingInputs() { 3 | var $inputs = $('.resizing-input'); 4 | 5 | function resizeForText(text) { 6 | var $this = $(this); 7 | if (!text.trim()) { 8 | text = $this.attr('placeholder').trim(); 9 | } 10 | var $span = $this.parent().find('span'); 11 | $span.text(text); 12 | var $inputSize = $span.width(); 13 | $this.css("width", $inputSize); 14 | } 15 | 16 | $inputs.find('input').keypress(function (e) { 17 | if (e.which && e.charCode) { 18 | var c = String.fromCharCode(e.keyCode | e.charCode); 19 | var $this = $(this); 20 | resizeForText.call($this, $this.val() + c); 21 | } 22 | }); 23 | 24 | $inputs.find('input').keyup(function (e) { // Backspace event only fires for keyup 25 | if (e.keyCode === 8 || e.keyCode === 46) { 26 | resizeForText.call($(this), $(this).val()); 27 | } 28 | }); 29 | 30 | $inputs.find('input').each(function () { 31 | var $this = $(this); 32 | resizeForText.call($this, $this.val()) 33 | }); 34 | 35 | 36 | $('.resizing-input .datetimepicker').datetimepicker({ 37 | step: 10, 38 | onChangeDateTime: function (dp, $input) { 39 | resizeForText.call($input, $input.val()) 40 | } 41 | }); 42 | 43 | } 44 | 45 | /** 46 | * Entry point for filter initialisation. 47 | */ 48 | function initFilters() { 49 | configureResizingInputs(); 50 | } -------------------------------------------------------------------------------- /deploy_conf/supervisor-app.conf: -------------------------------------------------------------------------------- 1 | [supervisord] 2 | nodaemon=true 3 | 4 | [program:nginx-app] 5 | command = /usr/sbin/nginx -g 'daemon off;' 6 | autostart = true 7 | startsecs = 5 8 | autorestart = true 9 | startretries = 3 10 | user = root 11 | stdout_logfile = /etc/supervisor/nginx-app.log 12 | stderr_logfile = /etc/supervisor/nginx-app-err.log 13 | 14 | [program:redis-app] 15 | command = /usr/bin/redis-server 16 | autostart = true 17 | startsecs = 5 18 | autorestart = true 19 | startretries = 3 20 | user = root 21 | stdout_logfile = /dev/stdout 22 | stdout_logfile_maxbytes = 0 23 | redirect_stderr = true 24 | 25 | [program:uwsgi-app] 26 | directory = /django/dapi/ 27 | command = /usr/local/bin/uwsgi --ini /django/dapi/deploy_conf/uwsgi.ini 28 | autostart = true 29 | startsecs = 5 30 | autorestart = true 31 | startretries = 3 32 | user = root 33 | stdout_logfile = /dev/stdout 34 | stdout_logfile_maxbytes = 0 35 | redirect_stderr = true 36 | 37 | [program:celery-worker-app] 38 | directory = /django/dapi/ 39 | command = /usr/local/bin/celery -A dapi worker -l info 40 | autostart = true 41 | startsecs = 5 42 | autorestart = true 43 | startretries = 3 44 | user = root 45 | stdout_logfile = /dev/stdout 46 | stdout_logfile_maxbytes = 0 47 | redirect_stderr = true 48 | 49 | [program:celery-beat-app] 50 | directory = /django/dapi/ 51 | command = /usr/local/bin/celery -A dapi beat -l info 52 | autostart = true 53 | startsecs = 5 54 | autorestart = true 55 | startretries = 3 56 | user = root 57 | stdout_logfile = /dev/stdout 58 | stdout_logfile_maxbytes = 0 59 | redirect_stderr = true 60 | -------------------------------------------------------------------------------- /static/admin/css/login.css: -------------------------------------------------------------------------------- 1 | /* LOGIN FORM */ 2 | 3 | body.login { 4 | background: #f8f8f8; 5 | } 6 | 7 | .login #header { 8 | height: auto; 9 | padding: 15px 16px; 10 | justify-content: center; 11 | } 12 | 13 | .login #header h1 { 14 | font-size: 18px; 15 | } 16 | 17 | .login #header h1 a { 18 | color: #fff; 19 | } 20 | 21 | .login #content { 22 | padding: 20px 20px 0; 23 | } 24 | 25 | .login #container { 26 | background: #fff; 27 | border: 1px solid #eaeaea; 28 | border-radius: 4px; 29 | overflow: hidden; 30 | width: 28em; 31 | min-width: 300px; 32 | margin: 100px auto; 33 | } 34 | 35 | .login #content-main { 36 | width: 100%; 37 | } 38 | 39 | .login .form-row { 40 | padding: 4px 0; 41 | float: left; 42 | width: 100%; 43 | border-bottom: none; 44 | } 45 | 46 | .login .form-row label { 47 | padding-right: 0.5em; 48 | line-height: 2em; 49 | font-size: 1em; 50 | clear: both; 51 | color: #333; 52 | } 53 | 54 | .login .form-row #id_username, .login .form-row #id_password { 55 | clear: both; 56 | padding: 8px; 57 | width: 100%; 58 | -webkit-box-sizing: border-box; 59 | -moz-box-sizing: border-box; 60 | box-sizing: border-box; 61 | } 62 | 63 | .login span.help { 64 | font-size: 10px; 65 | display: block; 66 | } 67 | 68 | .login .submit-row { 69 | clear: both; 70 | padding: 1em 0 0 9.4em; 71 | margin: 0; 72 | border: none; 73 | background: none; 74 | text-align: left; 75 | } 76 | 77 | .login .password-reset-link { 78 | text-align: center; 79 | } 80 | -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_hr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Croatian translation. 3 | * 4 | * Author: Edi Modrić 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | var specialNumbers = { 10 | 1: function(n) { return (n % 100 != 11 ? "znak" : "znakova"); }, 11 | 2: function(n) { return (n % 100 != 12 ? "znaka" : "znakova"); }, 12 | 3: function(n) { return (n % 100 != 13 ? "znaka" : "znakova"); }, 13 | 4: function(n) { return (n % 100 != 14 ? "znaka" : "znakova"); } 14 | }; 15 | 16 | $.extend($.fn.select2.defaults, { 17 | formatNoMatches: function () { return "Nema rezultata"; }, 18 | formatInputTooShort: function (input, min) { 19 | var n = min - input.length; 20 | var nMod10 = n % 10; 21 | 22 | if (nMod10 > 0 && nMod10 < 5) { 23 | return "Unesite još " + n + " " + specialNumbers[nMod10](n); 24 | } 25 | 26 | return "Unesite još " + n + " znakova"; 27 | }, 28 | formatInputTooLong: function (input, max) { 29 | var n = input.length - max; 30 | var nMod10 = n % 10; 31 | 32 | if (nMod10 > 0 && nMod10 < 5) { 33 | return "Unesite " + n + " " + specialNumbers[nMod10](n) + " manje"; 34 | } 35 | 36 | return "Unesite " + n + " znakova manje"; 37 | }, 38 | formatSelectionTooBig: function (limit) { return "Maksimalan broj odabranih stavki je " + limit; }, 39 | formatLoadMore: function (pageNumber) { return "Učitavanje rezultata..."; }, 40 | formatSearching: function () { return "Pretraga..."; } 41 | }); 42 | })(jQuery); 43 | -------------------------------------------------------------------------------- /static/admin/js/prepopulate.js: -------------------------------------------------------------------------------- 1 | /*global URLify*/ 2 | (function($) { 3 | 'use strict'; 4 | $.fn.prepopulate = function(dependencies, maxLength, allowUnicode) { 5 | /* 6 | Depends on urlify.js 7 | Populates a selected field with the values of the dependent fields, 8 | URLifies and shortens the string. 9 | dependencies - array of dependent fields ids 10 | maxLength - maximum length of the URLify'd string 11 | allowUnicode - Unicode support of the URLify'd string 12 | */ 13 | return this.each(function() { 14 | var prepopulatedField = $(this); 15 | 16 | var populate = function() { 17 | // Bail if the field's value has been changed by the user 18 | if (prepopulatedField.data('_changed')) { 19 | return; 20 | } 21 | 22 | var values = []; 23 | $.each(dependencies, function(i, field) { 24 | field = $(field); 25 | if (field.val().length > 0) { 26 | values.push(field.val()); 27 | } 28 | }); 29 | prepopulatedField.val(URLify(values.join(' '), maxLength, allowUnicode)); 30 | }; 31 | 32 | prepopulatedField.data('_changed', false); 33 | prepopulatedField.on('change', function() { 34 | prepopulatedField.data('_changed', true); 35 | }); 36 | 37 | if (!prepopulatedField.val()) { 38 | $(dependencies.join(',')).on('keyup change focus', populate); 39 | } 40 | }); 41 | }; 42 | })(django.jQuery); 43 | -------------------------------------------------------------------------------- /static/import_export/import.css: -------------------------------------------------------------------------------- 1 | .import-preview .errors { 2 | position: relative; 3 | } 4 | 5 | .validation-error-count { 6 | display: inline-block; 7 | background-color: #e40000; 8 | border-radius: 6px; 9 | color: white; 10 | font-size: 0.9em; 11 | position: relative; 12 | font-weight: bold; 13 | margin-top: -2px; 14 | padding: 0.2em 0.4em; 15 | } 16 | 17 | .validation-error-container { 18 | position: absolute; 19 | opacity: 0; 20 | pointer-events: none; 21 | background-color: #ffc1c1; 22 | padding: 14px 15px 10px; 23 | top: 25px; 24 | margin: 0 0 20px 0; 25 | width: 200px; 26 | z-index: 2; 27 | } 28 | 29 | table.import-preview tr.skip { 30 | background-color: #d2d2d2; 31 | } 32 | 33 | table.import-preview tr.new { 34 | background-color: #bdd8b2; 35 | } 36 | 37 | table.import-preview tr.delete { 38 | background-color: #f9bebf; 39 | } 40 | 41 | table.import-preview tr.update { 42 | background-color: #fdfdcf; 43 | } 44 | 45 | .import-preview td:hover .validation-error-count { 46 | z-index: 3; 47 | } 48 | .import-preview td:hover .validation-error-container { 49 | opacity: 1; 50 | pointer-events: auto; 51 | } 52 | 53 | .validation-error-list { 54 | margin: 0; 55 | padding: 0; 56 | } 57 | 58 | .validation-error-list li { 59 | list-style: none; 60 | margin: 0; 61 | } 62 | 63 | .validation-error-list > li > ul { 64 | margin: 8px 0; 65 | padding: 0; 66 | } 67 | 68 | .validation-error-list > li > ul > li { 69 | padding: 0; 70 | margin: 0 0 10px; 71 | line-height: 1.28em; 72 | } 73 | 74 | .validation-error-field-label { 75 | display: block; 76 | border-bottom: 1px solid #e40000; 77 | color: #e40000; 78 | text-transform: uppercase; 79 | font-weight: bold; 80 | font-size: 0.85em; 81 | } 82 | -------------------------------------------------------------------------------- /static/silk/css/fonts.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Fira Sans 3 | */ 4 | @font-face { 5 | font-family: FiraSans; 6 | src: url(../fonts/fira/FiraSans-Regular.woff); 7 | font-weight: normal; } 8 | 9 | @font-face { 10 | font-family: FiraSans; 11 | src: url(../fonts/fira/FiraSans-Medium.woff); 12 | font-weight: bold; } 13 | 14 | @font-face { 15 | font-family: FiraSans; 16 | src: url(../fonts/fira/FiraSans-Bold.woff); 17 | font-weight: bolder; } 18 | 19 | @font-face { 20 | font-family: FiraSans; 21 | src: url(../fonts/fira/FiraSans-Light.woff); 22 | font-weight: lighter; } 23 | 24 | @font-face { 25 | font-family: FiraSans; 26 | src: url(../fonts/fira/FiraSans-RegularItalic.woff); 27 | font-weight: normal; 28 | font-style: italic; } 29 | 30 | @font-face { 31 | font-family: FiraSans; 32 | src: url(../fonts/fira/FiraSans-MediumItalic.woff); 33 | font-weight: bold; 34 | font-style: italic; } 35 | 36 | @font-face { 37 | font-family: FiraSans; 38 | src: url(../fonts/fira/FiraSans-BoldItalic.woff); 39 | font-weight: bolder; 40 | font-style: italic; } 41 | 42 | @font-face { 43 | font-family: FiraSans; 44 | src: url(../fonts/fira/FiraSans-LightItalic.woff); 45 | font-weight: lighter; 46 | font-style: italic; } 47 | 48 | /** 49 | * Fantasque 50 | */ 51 | @font-face { 52 | font-family: Fantasque; 53 | src: url(../fonts/fantasque/FantasqueSansMono-Regular.woff); 54 | font-weight: normal; } 55 | 56 | @font-face { 57 | font-family: Fantasque; 58 | src: url(../fonts/fantasque/FantasqueSansMono-Bold.woff); 59 | font-weight: bold; } 60 | 61 | @font-face { 62 | font-family: Fantasque; 63 | src: url(../fonts/fantasque/FantasqueSansMono-RegItalic.woff); 64 | font-weight: normal; 65 | font-style: italic; } 66 | 67 | @font-face { 68 | font-family: Fantasque; 69 | src: url(../fonts/fantasque/FantasqueSansMono-BoldItalic.woff); 70 | font-weight: bold; 71 | font-style: italic; } 72 | -------------------------------------------------------------------------------- /static/rest_framework/js/csrf.js: -------------------------------------------------------------------------------- 1 | function getCookie(name) { 2 | var cookieValue = null; 3 | 4 | if (document.cookie && document.cookie != '') { 5 | var cookies = document.cookie.split(';'); 6 | 7 | for (var i = 0; i < cookies.length; i++) { 8 | var cookie = jQuery.trim(cookies[i]); 9 | 10 | // Does this cookie string begin with the name we want? 11 | if (cookie.substring(0, name.length + 1) == (name + '=')) { 12 | cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); 13 | break; 14 | } 15 | } 16 | } 17 | 18 | return cookieValue; 19 | } 20 | 21 | function csrfSafeMethod(method) { 22 | // these HTTP methods do not require CSRF protection 23 | return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); 24 | } 25 | 26 | function sameOrigin(url) { 27 | // test that a given url is a same-origin URL 28 | // url could be relative or scheme relative or absolute 29 | var host = document.location.host; // host + port 30 | var protocol = document.location.protocol; 31 | var sr_origin = '//' + host; 32 | var origin = protocol + sr_origin; 33 | 34 | // Allow absolute or scheme relative URLs to same origin 35 | return (url == origin || url.slice(0, origin.length + 1) == origin + '/') || 36 | (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + '/') || 37 | // or any other URL that isn't scheme relative or absolute i.e relative. 38 | !(/^(\/\/|http:|https:).*/.test(url)); 39 | } 40 | 41 | var csrftoken = window.drf.csrfToken; 42 | 43 | $.ajaxSetup({ 44 | beforeSend: function(xhr, settings) { 45 | if (!csrfSafeMethod(settings.type) && sameOrigin(settings.url)) { 46 | // Send the token to same-origin, relative URLs only. 47 | // Send the token only if the method warrants CSRF protection 48 | // Using the CSRFToken value acquired earlier 49 | xhr.setRequestHeader(window.drf.csrfHeaderName, csrftoken); 50 | } 51 | } 52 | }); 53 | -------------------------------------------------------------------------------- /static/xadmin/vendor/select2/select2_locale_sk.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Slovak translation. 3 | * 4 | * Author: David Vallner 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | // use text for the numbers 2 through 4 9 | var smallNumbers = { 10 | 2: function(masc) { return (masc ? "dva" : "dve"); }, 11 | 3: function() { return "tri"; }, 12 | 4: function() { return "štyri"; } 13 | } 14 | $.extend($.fn.select2.defaults, { 15 | formatNoMatches: function () { return "Nenašli sa žiadne položky"; }, 16 | formatInputTooShort: function (input, min) { 17 | var n = min - input.length; 18 | if (n == 1) { 19 | return "Prosím zadajte ešte jeden znak"; 20 | } else if (n <= 4) { 21 | return "Prosím zadajte ešte ďalšie "+smallNumbers[n](true)+" znaky"; 22 | } else { 23 | return "Prosím zadajte ešte ďalších "+n+" znakov"; 24 | } 25 | }, 26 | formatInputTooLong: function (input, max) { 27 | var n = input.length - max; 28 | if (n == 1) { 29 | return "Prosím zadajte o jeden znak menej"; 30 | } else if (n <= 4) { 31 | return "Prosím zadajte o "+smallNumbers[n](true)+" znaky menej"; 32 | } else { 33 | return "Prosím zadajte o "+n+" znakov menej"; 34 | } 35 | }, 36 | formatSelectionTooBig: function (limit) { 37 | if (limit == 1) { 38 | return "Môžete zvoliť len jednu položku"; 39 | } else if (limit <= 4) { 40 | return "Môžete zvoliť najviac "+smallNumbers[limit](false)+" položky"; 41 | } else { 42 | return "Môžete zvoliť najviac "+limit+" položiek"; 43 | } 44 | }, 45 | formatLoadMore: function (pageNumber) { return "Načítavajú sa ďalšie výsledky..."; }, 46 | formatSearching: function () { return "Vyhľadávanie..."; } 47 | }); 48 | })(jQuery); 49 | -------------------------------------------------------------------------------- /interface/serializers.py: -------------------------------------------------------------------------------- 1 | from rest_framework import serializers 2 | 3 | from interface.models import InterfaceInfo, ProductInfo, CaseGroupInfo, ModuleInfo 4 | 5 | 6 | class ProductInfoSerializer(serializers.HyperlinkedModelSerializer): 7 | # 产品线序列化 8 | 9 | class Meta: 10 | model = ProductInfo 11 | fields = "__all__" 12 | 13 | 14 | class ModuleInfoSerializer(serializers.HyperlinkedModelSerializer): 15 | # 模块序列化 16 | 17 | product_name = serializers.ReadOnlyField(source='module_group.product_name') 18 | 19 | # 外键序列化 20 | 21 | class Meta: 22 | model = ModuleInfo 23 | fields = ( 24 | 'id', 25 | 'module_group', 26 | 'product_name', 27 | 'module_name', 28 | 'module_describe', 29 | 'create_time', 30 | 'update_time', 31 | ) 32 | 33 | 34 | class CaseGroupInfoSerializer(serializers.HyperlinkedModelSerializer): 35 | # 用例组序列化 36 | 37 | class Meta: 38 | model = CaseGroupInfo 39 | fields = "__all__" 40 | 41 | 42 | class InterfaceInfoSerializer(serializers.HyperlinkedModelSerializer): 43 | # 用例序列化 44 | 45 | case_group_name = serializers.ReadOnlyField(source='case_group.case_group_name') 46 | 47 | # 外键序列化 48 | 49 | class Meta: 50 | model = InterfaceInfo 51 | fields = ( 52 | 'id', 53 | 'case_group', 54 | 'case_group_name', 55 | 'case_name', 56 | 'interface_url', 57 | 'request_mode', 58 | 'request_parameter', 59 | 'request_head', 60 | 'body_type', 61 | 'request_body', 62 | 'expected_result', 63 | 'response_assert', 64 | 'wait_time', 65 | 'regular_expression', 66 | 'regular_variable', 67 | 'regular_template', 68 | 'response_code', 69 | 'actual_result', 70 | 'pass_status', 71 | 'create_time', 72 | 'update_time', 73 | ) 74 | -------------------------------------------------------------------------------- /static/xadmin/css/xadmin.mobile.css: -------------------------------------------------------------------------------- 1 | #body-content { 2 | margin-top: 50px; 3 | padding-top: 10px; 4 | } 5 | #top-nav, #footer, .breadcrumb { 6 | display: none; 7 | } 8 | 9 | #top-nav .breadcrumb { 10 | margin-top: 20px; 11 | } 12 | #left-side { 13 | min-height: 0px; 14 | position: fixed; 15 | padding: 0px; 16 | top: 50px; 17 | left: 0px; 18 | right: 0px; 19 | bottom: 0px; 20 | background: #FFF; 21 | z-index: 999; 22 | overflow: auto; 23 | } 24 | #left-side .well { 25 | border: 0px; 26 | } 27 | #changelist-form { 28 | clear: both; 29 | } 30 | .navbar-brand { 31 | max-width: 300px; 32 | } 33 | 34 | .panel-content.nopadding { 35 | margin: -15px; 36 | } 37 | 38 | .panel-content.nopadding .table { 39 | margin-bottom: 0; 40 | } 41 | 42 | .col { 43 | padding-right: 10px; 44 | padding-left: 10px; 45 | } 46 | .row { 47 | margin-right: -10px; 48 | margin-left: -10px; 49 | } 50 | 51 | .results { 52 | width: 100%; 53 | overflow-x: auto; 54 | } 55 | 56 | .form-actions { 57 | margin-bottom: 0px; 58 | padding: 10px; 59 | position:fixed; 60 | bottom:0px; 61 | z-index:295; 62 | width: 100%; 63 | margin-right: -10px; 64 | margin-left: -10px; 65 | } 66 | .form-actions .more-btns input:first-child{ 67 | margin-top: 10px; 68 | } 69 | .change-form #body-content { 70 | padding-bottom: 60px; 71 | } 72 | .model_ul { 73 | margin-left: 0px; 74 | margin-right: 0px; 75 | } 76 | 77 | .navbar-inverse .navbar-toggle{ 78 | color: white; 79 | top: 7px; 80 | padding: 7px 12px; 81 | } 82 | .navbar.tools-navbar { 83 | height: 50px; 84 | margin-top: -10px; 85 | text-align: right; 86 | } 87 | .navbar-btns .btn span{ 88 | display: none; 89 | } 90 | .navbar-btns { 91 | position: absolute; 92 | top: 1px; 93 | right: 10px; 94 | } 95 | .nav-back { 96 | left: 10px; 97 | right: auto; 98 | } 99 | 100 | .layout-btns { 101 | display: none; 102 | } 103 | .pagination.pagination-small{ 104 | display: none; 105 | } 106 | 107 | -------------------------------------------------------------------------------- /static/drf-yasg/insQ.min.js: -------------------------------------------------------------------------------- 1 | // insertion-query v1.0.3 (2016-01-20) 2 | // license:MIT 3 | // Zbyszek Tenerowicz (http://naugtur.pl/) 4 | var insertionQ=function(){"use strict";function a(a,b){var d,e="insQ_"+g++,f=function(a){(a.animationName===e||a[i]===e)&&(c(a.target)||b(a.target))};d=document.createElement("style"),d.innerHTML="@"+j+"keyframes "+e+" { from { outline: 1px solid transparent } to { outline: 0px solid transparent } }\n"+a+" { animation-duration: 0.001s; animation-name: "+e+"; "+j+"animation-duration: 0.001s; "+j+"animation-name: "+e+"; } ",document.head.appendChild(d);var h=setTimeout(function(){document.addEventListener("animationstart",f,!1),document.addEventListener("MSAnimationStart",f,!1),document.addEventListener("webkitAnimationStart",f,!1)},n.timeout);return{destroy:function(){clearTimeout(h),d&&(document.head.removeChild(d),d=null),document.removeEventListener("animationstart",f),document.removeEventListener("MSAnimationStart",f),document.removeEventListener("webkitAnimationStart",f)}}}function b(a){a.QinsQ=!0}function c(a){return n.strictlyNew&&a.QinsQ===!0}function d(a){return c(a.parentNode)?a:d(a.parentNode)}function e(a){for(b(a),a=a.firstChild;a;a=a.nextSibling)void 0!==a&&1===a.nodeType&&e(a)}function f(f,g){var h=[],i=function(){var a;return function(){clearTimeout(a),a=setTimeout(function(){h.forEach(e),g(h),h=[]},10)}}();return a(f,function(a){if(!c(a)){b(a);var e=d(a);h.indexOf(e)<0&&h.push(e),i()}})}var g=100,h=!1,i="animationName",j="",k="Webkit Moz O ms Khtml".split(" "),l="",m=document.createElement("div"),n={strictlyNew:!0,timeout:20};if(m.style.animationName&&(h=!0),h===!1)for(var o=0;oShow more').click(function(e){ 8 | e.preventDefault(); 9 | e.stopPropagation(); 10 | $(v).nextUntil('li.nav-header').show(); 11 | $(v).nextUntil('li.nav-header').last().remove(); 12 | addShowLess($,v); 13 | }) 14 | ); 15 | $(v).nextUntil('li.nav-header').last().show(); 16 | } 17 | 18 | function addShowLess($,v){ 19 | $(v).nextUntil('li.nav-header').last().after( 20 | $('
  • Show less
  • ').click(function(e){ 21 | e.preventDefault(); 22 | e.stopPropagation(); 23 | $(v).nextUntil('li.nav-header').filter(function(i){return !$(this).find('input').is(':checked');}).slice(max).hide(); 24 | $(v).nextUntil('li.nav-header').last().remove(); 25 | $(v).scrollMinimal(3000); 26 | addShowMore($,v); 27 | }) 28 | ); 29 | $(v).nextUntil('li.nav-header').last().show(); 30 | } 31 | 32 | $.each($('.nav-quickfilter li.nav-header'),function(i,v){ 33 | if ($(v).nextUntil('li.nav-header').size()>max) { 34 | $(v).nextUntil('li.nav-header').filter(function(i){return !$(this).find('input').is(':checked');}).slice(max).hide(); 35 | addShowMore($,v); 36 | } 37 | }); 38 | 39 | $('.nav-quickfilter li.nav-header').on('click',function(e) { 40 | e.preventDefault(); 41 | e.stopPropagation(); 42 | $('.nav-quickfilter li.nav-header i').toggleClass('icon-chevron-right'); 43 | $('.nav-quickfilter li.nav-header i').toggleClass('icon-chevron-left'); 44 | $('#left-side').toggleClass('col-md-2'); 45 | $('#left-side').toggleClass('col-md-4'); 46 | $('#content-block').toggleClass('col-md-10'); 47 | $('#content-block').toggleClass('col-md-8'); 48 | }); 49 | })(jQuery) -------------------------------------------------------------------------------- /static/xadmin/js/xadmin.plugin.sortablelist.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | $(function() { 3 | $.ajaxSetup({ 4 | beforeSend: function(xhr, settings) { 5 | function getCookie(name) { 6 | var cookieValue = null; 7 | if (document.cookie && document.cookie != '') { 8 | var cookies = document.cookie.split(';'); 9 | for (var i = 0; i < cookies.length; i++) { 10 | var cookie = jQuery.trim(cookies[i]); 11 | // Does this cookie string begin with the name we want? 12 | if (cookie.substring(0, name.length + 1) == (name + '=')) { 13 | cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); 14 | break; 15 | } 16 | } 17 | } 18 | return cookieValue; 19 | } 20 | if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) { 21 | // Only send the token to relative URLs i.e. locally. 22 | xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')); 23 | } 24 | } 25 | }); 26 | 27 | $(".results table tbody").sortable({ 28 | axis: 'y', 29 | items: 'tr', 30 | cursor: 'move', 31 | opacity: 0.8, 32 | update: function(event, ui) { 33 | var $rows = $(this); 34 | $("#save-order").on("click", function(e) { 35 | $.ajax({ 36 | url: $(this).attr('post-url'), 37 | method: 'POST', 38 | data: $rows.sortable('serialize', { 39 | attribute: 'order-key', 40 | expression: (/(.+)_(.+)/), 41 | }) 42 | }); 43 | location.reload(); 44 | }).show(); 45 | } 46 | }); 47 | }); 48 | 49 | })(jQuery); 50 | -------------------------------------------------------------------------------- /static/xadmin/css/themes/bootstrap-xadmin.css: -------------------------------------------------------------------------------- 1 | 2 | /* results table */ 3 | .table th { 4 | background-color: #FAFAFA; 5 | background-image: -moz-linear-gradient(top, white, #F2F2F2); 6 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(white), to(#F2F2F2)); 7 | background-image: -webkit-linear-gradient(top, white, #F2F2F2); 8 | background-image: -o-linear-gradient(top, white, #F2F2F2); 9 | background-image: linear-gradient(to bottom, white, #F2F2F2); 10 | background-repeat: repeat-x; 11 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); 12 | -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); 13 | -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); 14 | box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); 15 | border-bottom-width: 1px !important; 16 | } 17 | 18 | /** panel **/ 19 | .panel-default { 20 | border-radius: 2px; 21 | } 22 | .panel-default > .panel-heading { 23 | background-color: #F8F8F8; 24 | background-image: -moz-linear-gradient(top, #FDFDFD, #F6F6F6); 25 | background-image: -ms-linear-gradient(top, #FDFDFD, #F6F6F6); 26 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#FDFDFD), to(#F6F6F6)); 27 | background-image: -webkit-linear-gradient(top, #FDFDFD, #F6F6F6); 28 | background-image: -o-linear-gradient(top, #FDFDFD, #F6F6F6); 29 | background-image: linear-gradient(top, #FDFDFD, #F6F6F6); 30 | } 31 | 32 | .form-group { 33 | border-bottom: 1px solid #EEE; 34 | background-color: #FBFBFB; 35 | margin-top: 0px !important; 36 | margin-bottom: 0px !important; 37 | } 38 | .controls { 39 | background-color: white; 40 | padding: 15px !important; 41 | } 42 | .control-label { 43 | margin-bottom: 0px !important; 44 | } 45 | .fieldset .panel-body { 46 | padding-top: 0px !important; 47 | padding-bottom: 0px !important; 48 | } 49 | .form-inline .form-group { 50 | background: transparent; 51 | border: none; 52 | } 53 | 54 | /** fieldset **/ 55 | @media (min-width: 768px) { 56 | .form-horizontal .controls{ 57 | border-left: 1px solid #EEE; 58 | } 59 | .form-horizontal .control-label { 60 | padding-top: 22px !important; 61 | } 62 | } -------------------------------------------------------------------------------- /static/xadmin/js/xadmin.page.form.js: -------------------------------------------------------------------------------- 1 | ;(function($){ 2 | $(function() { 3 | var action_bar = $('.form-actions'); 4 | if(action_bar.length){ 5 | var height=action_bar[0].offsetTop + action_bar.outerHeight(); 6 | var onchange = function(){ 7 | var s=(document.body.scrollTop||document.documentElement.scrollTop) + window.innerHeight; 8 | if(s 0){ 28 | var first_activated = false; 29 | exform.find('.error').each(function(){ 30 | if (!first_activated){ 31 | var parent = $(this); 32 | while (!(parent.html() == exform.html())){ 33 | if (parent.hasClass('tab-pane')){ 34 | parent.addClass('active'); 35 | parent.siblings().removeClass('active'); 36 | var menu_tab = $('a[href="#' + parent.attr('id') + '"]'); 37 | menu_tab.parent().addClass('active'); 38 | menu_tab.parent().siblings().removeClass('active'); 39 | first_activated = true; 40 | 41 | } 42 | if (parent.hasClass('box-content')){ 43 | parent.show(); 44 | } 45 | parent = parent.parent(); 46 | } 47 | } 48 | }); 49 | } 50 | })(jQuery) 51 | 52 | -------------------------------------------------------------------------------- /static/xadmin/js/xadmin.plugin.filters.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 3 | $(function(){ 4 | 5 | // filter 6 | $('.filter-multiselect input[type=checkbox]').click(function(e){ 7 | window.location.href = $(this).parent().attr('href'); 8 | }); 9 | 10 | // menber filter 11 | $('.filter-number .remove').click(function(e){ 12 | $(this).parent().parent().find('input[type="number"]').val(''); 13 | }); 14 | 15 | $('.filter-number .toggle').click(function(e){ 16 | var new_name = $(this).hasClass('active') ? $(this).attr('data-off-name') : $(this).attr('data-on-name'); 17 | $(this).parent().parent().find('input[type="number"]').attr('name', new_name); 18 | }); 19 | 20 | $('#filter-menu form').submit(function(){ 21 | $(this).find('input[type="text"],input[type="number"]').each(function(e){ 22 | if(!$(this).val()) $(this).attr('name', ''); 23 | }); 24 | return true; 25 | }); 26 | 27 | $('.menu-date-range form').each(function(){ 28 | var el = $(this); 29 | var start_date = el.find('.calendar.date-start').datepicker({format: 'yyyy-mm-dd', language: 'xadmin'}); 30 | var end_date = el.find('.calendar.date-end').datepicker({format: 'yyyy-mm-dd', language: 'xadmin'}); 31 | 32 | var checkAvailable = function(){ 33 | if(start_date.data('datepicker').getDate().valueOf() <= end_date.data('datepicker').getDate().valueOf()){ 34 | el.find('button[type=submit]').removeAttr('disabled'); 35 | } else { 36 | el.find('button[type=submit]').attr('disabled', 'disabled'); 37 | } 38 | } 39 | 40 | start_date.on('changeDate', function(ev){ 41 | var startdate = start_date.data('date'); 42 | el.find('.start_input').val(startdate); 43 | end_date.data('datepicker').setStartDate(startdate); 44 | checkAvailable(); 45 | }); 46 | end_date.on('changeDate', function(ev){ 47 | var enddate = end_date.data('date'); 48 | el.find('.end_input').val(enddate); 49 | start_date.data('datepicker').setEndDate(enddate); 50 | checkAvailable(); 51 | }); 52 | 53 | checkAvailable(); 54 | }); 55 | }); 56 | 57 | })(jQuery); -------------------------------------------------------------------------------- /static/admin/css/responsive_rtl.css: -------------------------------------------------------------------------------- 1 | /* TABLETS */ 2 | 3 | @media (max-width: 1024px) { 4 | [dir="rtl"] .colMS { 5 | margin-right: 0; 6 | } 7 | 8 | [dir="rtl"] #user-tools { 9 | text-align: right; 10 | } 11 | 12 | [dir="rtl"] #changelist .actions label { 13 | padding-left: 10px; 14 | padding-right: 0; 15 | } 16 | 17 | [dir="rtl"] #changelist .actions select { 18 | margin-left: 0; 19 | margin-right: 15px; 20 | } 21 | 22 | [dir="rtl"] .change-list .filtered .results, 23 | [dir="rtl"] .change-list .filtered .paginator, 24 | [dir="rtl"] .filtered #toolbar, 25 | [dir="rtl"] .filtered div.xfull, 26 | [dir="rtl"] .filtered .actions { 27 | margin-right: 0; 28 | margin-left: 230px; 29 | } 30 | 31 | [dir="rtl"] .inline-group ul.tools a.add, 32 | [dir="rtl"] .inline-group div.add-row a, 33 | [dir="rtl"] .inline-group .tabular tr.add-row td a { 34 | padding: 8px 26px 8px 10px; 35 | background-position: calc(100% - 8px) 9px; 36 | } 37 | 38 | [dir="rtl"] .related-widget-wrapper-link + .selector { 39 | margin-right: 0; 40 | margin-left: 15px; 41 | } 42 | 43 | [dir="rtl"] .selector .selector-filter label { 44 | margin-right: 0; 45 | margin-left: 8px; 46 | } 47 | 48 | [dir="rtl"] .object-tools li { 49 | float: right; 50 | } 51 | 52 | [dir="rtl"] .object-tools li + li { 53 | margin-left: 0; 54 | margin-right: 15px; 55 | } 56 | 57 | [dir="rtl"] .dashboard .module table td a { 58 | padding-left: 0; 59 | padding-right: 16px; 60 | } 61 | } 62 | 63 | /* MOBILE */ 64 | 65 | @media (max-width: 767px) { 66 | [dir="rtl"] .change-list .filtered .results, 67 | [dir="rtl"] .change-list .filtered .paginator, 68 | [dir="rtl"] .filtered #toolbar, 69 | [dir="rtl"] .filtered div.xfull, 70 | [dir="rtl"] .filtered .actions { 71 | margin-left: 0; 72 | } 73 | 74 | [dir="rtl"] .aligned .add-another, 75 | [dir="rtl"] .aligned .related-lookup, 76 | [dir="rtl"] .aligned .datetimeshortcuts { 77 | margin-left: 0; 78 | margin-right: 15px; 79 | } 80 | 81 | [dir="rtl"] .aligned ul { 82 | margin-right: 0; 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # dapi 2 | 基于Django的轻量级接口测试平台 3 | dapi:即Django+API测试的缩写 4 | QQ群:529063263 5 | [部署文档](https://www.cnblogs.com/yjlch1016/category/1653648.html) 6 | 7 | 8 | *** 9 | # PyCharm图片 10 | ![pycharm图片](https://github.com/yjlch1016/dapi/blob/master/static/img/pycharm.png) 11 | 12 | 13 | *** 14 | # 设计思想 15 | 1、 模拟性能测试工具JMeter的思路,实现接口测试与性能测试的Web化; 16 | 2、 计划有产品模块、接口测试用例模块、性能测试用例模块、任务队列模块、测试报告模块等; 17 | 3、 前期采用Django+Bootstrap前后端不分离的模式实现功能,后期再严格按照RESTful的风格来编程。 18 | 19 | 20 | *** 21 | # 模型 22 | 6张表 23 | 产品线信息表一对多模块信息表 24 | 用例组信息表一对多用例信息表 25 | 压测信息表一对多压测结果表 26 | 27 | | 表 | 字段 | 28 | | ---- | ---- | 29 | | 产品线信息表 | 产品线名称、产品描述、产品经理、开发人员、测试人员、创建时间、修改时间 | 30 | | 模块信息表 | 外键、模块名称、模块描述、创建时间、修改时间 | 31 | | 用例组信息表 | 用例组名称、用例组描述、创建时间、修改时间 | 32 | | 用例信息表 | 外键、用例名称、接口地址、请求方式、请求参数、请求头、请求体类型、请求体、预期结果、响应断言方式、等待时间、正则、变量名、模板、响应代码、实际结果、是否通过、创建时间、修改时间 | 33 | | 压测信息表 | 脚本简介、相对路径、请求数、持续时间、创建时间、修改时间 | 34 | | 压测结果表 | 外键、测试报告、jtl文件、Dashboard Report、运行时间 | 35 | 36 | 37 | *** 38 | # 本地调试 39 | `python manage.py collectstatic` 40 | 复制xadmin静态文件 41 | 42 | `python manage.py makemigrations` 43 | 激活模型 44 | 45 | `python manage.py migrate` 46 | 迁移 47 | 48 | `python manage.py createsuperuser` 49 | 创建超级管理员账号 50 | 输入账号:admin 51 | 输入邮箱:123456789@qq.com 52 | 输入密码:test123456 53 | 二次确认 54 | 55 | `python manage.py runserver` 56 | 启动服务 57 | 58 | 后台 59 | http://127.0.0.1:8000/admin/ 60 | 用户名:admin 61 | 密码:test123456 62 | 63 | 前台 64 | http://127.0.0.1:8000 65 | 用户名:admin 66 | 密码:test123456 67 | 68 | 69 | *** 70 | # 本地打包 71 | `docker build -t dapi .` 72 | dapi为镜像名称,随便取 73 | 74 | `docker run -d --name dapi2020 -p 80:80 mock:latest` 75 | 启动容器 76 | 后台运行 77 | 给容器取个别名dapi2020 78 | 映射80端口 79 | 80 | 后台 81 | http://x.x.x.x/admin/ 82 | 宿主机的IP地址 83 | 账号:admin 84 | 密码:test123456 85 | 86 | 前台 87 | http://x.x.x.x/ 88 | 宿主机的IP地址 89 | 账号:admin 90 | 密码:test123456 91 | 92 | `docker exec -it dapi2020 /bin/bash` 93 | 进入容器内部 94 | 95 | `exit` 96 | 退出容器内部 97 | 98 | `docker stop dapi2020` 99 | 停止容器 100 | 101 | `docker rm dapi2020` 102 | 删除容器 103 | 104 | 105 | *** 106 | # API 107 | http://127.0.0.1:8000/api/ 108 | http://127.0.0.1:8000/redoc/ 109 | http://127.0.0.1:8000/swagger/ 110 | -------------------------------------------------------------------------------- /static/xadmin/vendor/load-image/load-image.min.js: -------------------------------------------------------------------------------- 1 | (function(e){"use strict";var t=function(e,a,n){var r,i,c=document.createElement("img");if(c.onerror=a,c.onload=function(){!i||n&&n.noRevoke||t.revokeObjectURL(i),a&&a(t.scale(c,n))},t.isInstanceOf("Blob",e)||t.isInstanceOf("File",e))r=i=t.createObjectURL(e),c._type=e.type;else{if("string"!=typeof e)return!1;r=e,n&&n.crossOrigin&&(c.crossOrigin=n.crossOrigin)}return r?(c.src=r,c):t.readFile(e,function(e){var t=e.target;t&&t.result?c.src=t.result:a&&a(e)})},a=window.createObjectURL&&window||window.URL&&URL.revokeObjectURL&&URL||window.webkitURL&&webkitURL;t.isInstanceOf=function(e,t){return Object.prototype.toString.call(t)==="[object "+e+"]"},t.detectSubsampling=function(e){var t,a,n=e.width,r=e.height;return n*r>1048576?(t=document.createElement("canvas"),t.width=t.height=1,a=t.getContext("2d"),a.drawImage(e,-n+1,0),0===a.getImageData(0,0,1,1).data[3]):!1},t.detectVerticalSquash=function(e,t){var a,n,r,i,c,o=document.createElement("canvas"),d=o.getContext("2d");for(o.width=1,o.height=t,d.drawImage(e,0,0),a=d.getImageData(0,0,1,t).data,n=0,r=t,i=t;i>n;)c=a[4*(i-1)+3],0===c?r=i:n=i,i=r+n>>1;return i/t||1},t.renderImageToCanvas=function(e,a,n,r){var i,c,o,d,g,h,s,u,l=e.width,m=e.height,f=a.getContext("2d"),w=1024,v=document.createElement("canvas");for(f.save(),t.detectSubsampling(e)&&(l/=2,m/=2),i=t.detectVerticalSquash(e,m),v.width=v.height=w,c=v.getContext("2d"),o=Math.ceil(w*n/l),d=Math.ceil(w*r/m/i),h=0,u=0;m>u;){for(g=0,s=0;l>s;)c.clearRect(0,0,w,w),c.drawImage(e,-s,-u),f.drawImage(v,0,0,w,w,g,h,o,d),s+=w,g+=o;u+=w,h+=d}f.restore(),v=c=null},t.scale=function(e,a){a=a||{};var n=document.createElement("canvas"),r=e.width,i=e.height,c=Math.max((a.minWidth||r)/r,(a.minHeight||i)/i);return c>1&&(r=Math.ceil(r*c),i=Math.ceil(i*c)),c=Math.min((a.maxWidth||r)/r,(a.maxHeight||i)/i),1>c&&(r=Math.ceil(r*c),i=Math.ceil(i*c)),e.getContext||a.canvas&&n.getContext?(n.width=r,n.height=i,"image/jpeg"===e._type?t.renderImageToCanvas(e,n,r,i):n.getContext("2d").drawImage(e,0,0,r,i),n):(e.width=r,e.height=i,e)},t.createObjectURL=function(e){return a?a.createObjectURL(e):!1},t.revokeObjectURL=function(e){return a?a.revokeObjectURL(e):!1},t.readFile=function(e,t){if(window.FileReader&&FileReader.prototype.readAsDataURL){var a=new FileReader;return a.onload=a.onerror=t,a.readAsDataURL(e),a}return!1},"function"==typeof define&&define.amd?define(function(){return t}):e.loadImage=t})(this); -------------------------------------------------------------------------------- /static/xadmin/js/xadmin.plugin.charts.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | 3 | function showTooltip(x, y, contents) { 4 | $('
    ' + contents + '
    ').css( { 5 | position: 'absolute', 6 | display: 'none', 7 | top: y + 5, 8 | left: x + 5 9 | }).appendTo("body").fadeIn(200); 10 | } 11 | 12 | $.fn.chart = function(){ 13 | $(this).each(function(){ 14 | var $chart = $(this); 15 | 16 | if($chart.data('chart-obj')) return; 17 | 18 | $chart.html(' Loading chart...'); 19 | 20 | $.getJSON($chart.data('chart-url'), function(data){ 21 | var chart = $.plot($chart, data.data, data.option); 22 | var previousPoint = null; 23 | $chart.bind("plothover", function (event, pos, item) { 24 | if (item) { 25 | if (previousPoint != item.dataIndex) { 26 | previousPoint = item.dataIndex; 27 | 28 | $("#chart-tooltip").remove(); 29 | var x = item.series.xaxis.tickFormatter(item.datapoint[0], item.series.xaxis), 30 | y = item.series.yaxis.tickFormatter(item.datapoint[1], item.series.yaxis); 31 | if (item.series.xaxis.options.mode=="categories") { 32 | x = item.series.data[item.dataIndex][0]; 33 | } 34 | if (item.series.yaxis.options.mode=="categories") { 35 | y = item.series.data[item.dataIndex][1]; 36 | } 37 | showTooltip(item.pageX, item.pageY, 38 | item.series.label + " :
    (" + x + " , " + y+")"); 39 | } 40 | } else { 41 | $("#chart-tooltip").remove(); 42 | previousPoint = null; 43 | } 44 | }); 45 | $chart.data('chart-obj', chart); 46 | }); 47 | }) 48 | } 49 | 50 | $('.chart-tab a').click(function(e){ 51 | e.preventDefault(); 52 | $(this).tab('show'); 53 | 54 | $($(this).attr('href')).chart(); 55 | }); 56 | $('.chart-tab a:first').click(); 57 | $('.chart.init').chart(); 58 | }); -------------------------------------------------------------------------------- /static/rest_framework/docs/css/highlight.css: -------------------------------------------------------------------------------- 1 | /* 2 | This is the GitHub theme for highlight.js 3 | 4 | github.com style (c) Vasily Polovnyov 5 | 6 | */ 7 | 8 | .hljs { 9 | display: block; 10 | overflow-x: auto; 11 | padding: 0.5em; 12 | color: #333; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-comment, 17 | .diff .hljs-header, 18 | .hljs-javadoc { 19 | color: #998; 20 | font-style: italic; 21 | } 22 | 23 | .hljs-keyword, 24 | .css .rule .hljs-keyword, 25 | .hljs-winutils, 26 | .nginx .hljs-title, 27 | .hljs-subst, 28 | .hljs-request, 29 | .hljs-status { 30 | color: #333; 31 | font-weight: bold; 32 | } 33 | 34 | .hljs-number, 35 | .hljs-hexcolor, 36 | .ruby .hljs-constant { 37 | color: #008080; 38 | } 39 | 40 | .hljs-string, 41 | .hljs-tag .hljs-value, 42 | .hljs-phpdoc, 43 | .hljs-dartdoc, 44 | .tex .hljs-formula { 45 | color: #d14; 46 | } 47 | 48 | .hljs-title, 49 | .hljs-id, 50 | .scss .hljs-preprocessor { 51 | color: #900; 52 | font-weight: bold; 53 | } 54 | 55 | .hljs-list .hljs-keyword, 56 | .hljs-subst { 57 | font-weight: normal; 58 | } 59 | 60 | .hljs-class .hljs-title, 61 | .hljs-type, 62 | .vhdl .hljs-literal, 63 | .tex .hljs-command { 64 | color: #458; 65 | font-weight: bold; 66 | } 67 | 68 | .hljs-tag, 69 | .hljs-tag .hljs-title, 70 | .hljs-rule .hljs-property, 71 | .django .hljs-tag .hljs-keyword { 72 | color: #000080; 73 | font-weight: normal; 74 | } 75 | 76 | .hljs-attribute, 77 | .hljs-variable, 78 | .lisp .hljs-body, 79 | .hljs-name { 80 | color: #008080; 81 | } 82 | 83 | .hljs-regexp { 84 | color: #009926; 85 | } 86 | 87 | .hljs-symbol, 88 | .ruby .hljs-symbol .hljs-string, 89 | .lisp .hljs-keyword, 90 | .clojure .hljs-keyword, 91 | .scheme .hljs-keyword, 92 | .tex .hljs-special, 93 | .hljs-prompt { 94 | color: #990073; 95 | } 96 | 97 | .hljs-built_in { 98 | color: #0086b3; 99 | } 100 | 101 | .hljs-preprocessor, 102 | .hljs-pragma, 103 | .hljs-pi, 104 | .hljs-doctype, 105 | .hljs-shebang, 106 | .hljs-cdata { 107 | color: #999; 108 | font-weight: bold; 109 | } 110 | 111 | .hljs-deletion { 112 | background: #fdd; 113 | } 114 | 115 | .hljs-addition { 116 | background: #dfd; 117 | } 118 | 119 | .diff .hljs-change { 120 | background: #0086b3; 121 | } 122 | 123 | .hljs-chunk { 124 | color: #aaa; 125 | } 126 | --------------------------------------------------------------------------------