Repository: Akash1362000/Django_Student_Management_System Branch: main Commit: dc09e6cd49f7 Files: 1948 Total size: 43.4 MB Directory structure: gitextract_xmbx1o6c/ ├── .dockerignore ├── .flake8 ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ └── tests.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .travis.yml ├── CODE_OF_CONDUCT.md ├── Dockerfile ├── LICENSE ├── Procfile ├── README.md ├── build.sh ├── docker-compose.yml ├── manage.py ├── requirements.dev.txt ├── requirements.txt ├── runtime.txt ├── static/ │ ├── admin/ │ │ ├── css/ │ │ │ ├── autocomplete.css │ │ │ ├── base.css │ │ │ ├── changelists.css │ │ │ ├── dashboard.css │ │ │ ├── fonts.css │ │ │ ├── forms.css │ │ │ ├── login.css │ │ │ ├── responsive.css │ │ │ ├── responsive_rtl.css │ │ │ ├── rtl.css │ │ │ ├── vendor/ │ │ │ │ └── select2/ │ │ │ │ ├── LICENSE-SELECT2.md │ │ │ │ └── select2.css │ │ │ └── widgets.css │ │ ├── fonts/ │ │ │ ├── LICENSE.txt │ │ │ └── README.txt │ │ ├── img/ │ │ │ ├── LICENSE │ │ │ └── README.txt │ │ └── js/ │ │ ├── SelectBox.js │ │ ├── SelectFilter2.js │ │ ├── actions.js │ │ ├── admin/ │ │ │ ├── DateTimeShortcuts.js │ │ │ └── RelatedObjectLookups.js │ │ ├── autocomplete.js │ │ ├── calendar.js │ │ ├── cancel.js │ │ ├── change_form.js │ │ ├── collapse.js │ │ ├── core.js │ │ ├── inlines.js │ │ ├── jquery.init.js │ │ ├── popup_response.js │ │ ├── prepopulate.js │ │ ├── prepopulate_init.js │ │ ├── timeparse.js │ │ ├── urlify.js │ │ └── vendor/ │ │ ├── jquery/ │ │ │ ├── LICENSE.txt │ │ │ └── jquery.js │ │ ├── select2/ │ │ │ ├── LICENSE.md │ │ │ ├── i18n/ │ │ │ │ ├── ar.js │ │ │ │ ├── az.js │ │ │ │ ├── bg.js │ │ │ │ ├── ca.js │ │ │ │ ├── cs.js │ │ │ │ ├── da.js │ │ │ │ ├── de.js │ │ │ │ ├── el.js │ │ │ │ ├── en.js │ │ │ │ ├── es.js │ │ │ │ ├── et.js │ │ │ │ ├── eu.js │ │ │ │ ├── fa.js │ │ │ │ ├── fi.js │ │ │ │ ├── fr.js │ │ │ │ ├── gl.js │ │ │ │ ├── he.js │ │ │ │ ├── hi.js │ │ │ │ ├── hr.js │ │ │ │ ├── hu.js │ │ │ │ ├── id.js │ │ │ │ ├── is.js │ │ │ │ ├── it.js │ │ │ │ ├── ja.js │ │ │ │ ├── km.js │ │ │ │ ├── ko.js │ │ │ │ ├── lt.js │ │ │ │ ├── lv.js │ │ │ │ ├── mk.js │ │ │ │ ├── ms.js │ │ │ │ ├── nb.js │ │ │ │ ├── nl.js │ │ │ │ ├── pl.js │ │ │ │ ├── pt-BR.js │ │ │ │ ├── pt.js │ │ │ │ ├── ro.js │ │ │ │ ├── ru.js │ │ │ │ ├── sk.js │ │ │ │ ├── sr-Cyrl.js │ │ │ │ ├── sr.js │ │ │ │ ├── sv.js │ │ │ │ ├── th.js │ │ │ │ ├── tr.js │ │ │ │ ├── uk.js │ │ │ │ ├── vi.js │ │ │ │ ├── zh-CN.js │ │ │ │ └── zh-TW.js │ │ │ └── select2.full.js │ │ └── xregexp/ │ │ ├── LICENSE.txt │ │ └── xregexp.js │ ├── bootstrap/ │ │ └── js/ │ │ ├── bootstrap.bundle.js │ │ └── bootstrap.js │ ├── bootstrap-colorpicker/ │ │ ├── css/ │ │ │ └── bootstrap-colorpicker.css │ │ └── js/ │ │ └── bootstrap-colorpicker.js │ ├── bootstrap-slider/ │ │ ├── bootstrap-slider.js │ │ └── css/ │ │ └── bootstrap-slider.css │ ├── bootstrap-switch/ │ │ ├── css/ │ │ │ ├── bootstrap2/ │ │ │ │ └── bootstrap-switch.css │ │ │ └── bootstrap3/ │ │ │ └── bootstrap-switch.css │ │ └── js/ │ │ └── bootstrap-switch.js │ ├── bootstrap4-duallistbox/ │ │ ├── bootstrap-duallistbox.css │ │ └── jquery.bootstrap-duallistbox.js │ ├── bs-custom-file-input/ │ │ └── bs-custom-file-input.js │ ├── chart.js/ │ │ ├── Chart.bundle.js │ │ ├── Chart.css │ │ └── Chart.js │ ├── datatables/ │ │ └── jquery.dataTables.js │ ├── datatables-autofill/ │ │ ├── css/ │ │ │ └── autoFill.bootstrap4.css │ │ └── js/ │ │ ├── autoFill.bootstrap4.js │ │ └── dataTables.autoFill.js │ ├── datatables-bs4/ │ │ ├── css/ │ │ │ └── dataTables.bootstrap4.css │ │ └── js/ │ │ └── dataTables.bootstrap4.js │ ├── datatables-buttons/ │ │ ├── css/ │ │ │ └── buttons.bootstrap4.css │ │ └── js/ │ │ ├── buttons.bootstrap4.js │ │ ├── buttons.colVis.js │ │ ├── buttons.flash.js │ │ ├── buttons.html5.js │ │ ├── buttons.print.js │ │ └── dataTables.buttons.js │ ├── datatables-colreorder/ │ │ ├── css/ │ │ │ └── colReorder.bootstrap4.css │ │ └── js/ │ │ ├── colReorder.bootstrap4.js │ │ └── dataTables.colReorder.js │ ├── datatables-fixedcolumns/ │ │ ├── css/ │ │ │ └── fixedColumns.bootstrap4.css │ │ └── js/ │ │ ├── dataTables.fixedColumns.js │ │ └── fixedColumns.bootstrap4.js │ ├── datatables-fixedheader/ │ │ ├── css/ │ │ │ └── fixedHeader.bootstrap4.css │ │ └── js/ │ │ ├── dataTables.fixedHeader.js │ │ └── fixedHeader.bootstrap4.js │ ├── datatables-keytable/ │ │ ├── css/ │ │ │ └── keyTable.bootstrap4.css │ │ └── js/ │ │ ├── dataTables.keyTable.js │ │ └── keyTable.bootstrap4.js │ ├── datatables-responsive/ │ │ ├── css/ │ │ │ └── responsive.bootstrap4.css │ │ └── js/ │ │ ├── dataTables.responsive.js │ │ └── responsive.bootstrap4.js │ ├── datatables-rowgroup/ │ │ ├── css/ │ │ │ └── rowGroup.bootstrap4.css │ │ └── js/ │ │ ├── dataTables.rowGroup.js │ │ └── rowGroup.bootstrap4.js │ ├── datatables-rowreorder/ │ │ ├── css/ │ │ │ └── rowReorder.bootstrap4.css │ │ └── js/ │ │ ├── dataTables.rowReorder.js │ │ └── rowReorder.bootstrap4.js │ ├── datatables-scroller/ │ │ ├── css/ │ │ │ └── scroller.bootstrap4.css │ │ └── js/ │ │ ├── dataTables.scroller.js │ │ └── scroller.bootstrap4.js │ ├── datatables-select/ │ │ ├── css/ │ │ │ └── select.bootstrap4.css │ │ └── js/ │ │ ├── dataTables.select.js │ │ └── select.bootstrap4.js │ ├── daterangepicker/ │ │ ├── bower.json │ │ ├── daterangepicker.css │ │ ├── daterangepicker.js │ │ ├── example/ │ │ │ ├── amd/ │ │ │ │ ├── index.html │ │ │ │ ├── main.js │ │ │ │ └── require.js │ │ │ └── browserify/ │ │ │ ├── README.md │ │ │ ├── bundle.js │ │ │ ├── index.html │ │ │ └── main.js │ │ ├── package.js │ │ ├── website/ │ │ │ ├── index.html │ │ │ ├── website.css │ │ │ └── website.js │ │ ├── website.css │ │ └── website.js │ ├── ekko-lightbox/ │ │ ├── ekko-lightbox.css │ │ └── ekko-lightbox.js │ ├── fastclick/ │ │ └── fastclick.js │ ├── filterizr/ │ │ ├── ActiveFilter.d.ts │ │ ├── BrowserWindow.d.ts │ │ ├── EventReceiver.d.ts │ │ ├── FilterContainer/ │ │ │ ├── FilterContainer.d.ts │ │ │ ├── StyledFilterContainer.d.ts │ │ │ ├── index.d.ts │ │ │ └── styles.d.ts │ │ ├── FilterContainer.d.ts │ │ ├── FilterControls.d.ts │ │ ├── FilterItem/ │ │ │ ├── FilterItem.d.ts │ │ │ ├── StyledFilterItem.d.ts │ │ │ ├── index.d.ts │ │ │ └── styles.d.ts │ │ ├── FilterItem.d.ts │ │ ├── FilterItems/ │ │ │ ├── FilterItems.d.ts │ │ │ ├── StyledFilterItems.d.ts │ │ │ └── index.d.ts │ │ ├── FilterItems.d.ts │ │ ├── Filterizr/ │ │ │ ├── Filterizr.d.ts │ │ │ ├── index.d.ts │ │ │ └── installAsJQueryPlugin.d.ts │ │ ├── Filterizr.d.ts │ │ ├── FilterizrElement.d.ts │ │ ├── FilterizrOptions/ │ │ │ ├── FilterizrOptions.d.ts │ │ │ ├── defaultOptions.d.ts │ │ │ └── index.d.ts │ │ ├── Spinner/ │ │ │ ├── Spinner.d.ts │ │ │ ├── StyledSpinner.d.ts │ │ │ ├── index.d.ts │ │ │ └── makeSpinner.d.ts │ │ ├── StyledFilterizrElement.d.ts │ │ ├── StyledFilterizrElements.d.ts │ │ ├── animate.d.ts │ │ ├── config/ │ │ │ ├── cssEasingValuesRegexp.d.ts │ │ │ ├── filterizrState.d.ts │ │ │ ├── index.d.ts │ │ │ └── layout.d.ts │ │ ├── getLayoutPositions.d.ts │ │ ├── index.d.ts │ │ ├── index.jquery.d.ts │ │ ├── installAsJQueryPlugin.d.ts │ │ ├── layouts/ │ │ │ ├── Packer.d.ts │ │ │ ├── getHorizontalLayoutPositions.d.ts │ │ │ ├── getPackedLayoutPositions.d.ts │ │ │ ├── getSameHeightLayoutPositions.d.ts │ │ │ ├── getSameSizeLayoutPosition.d.ts │ │ │ ├── getSameWidthLayoutPositions.d.ts │ │ │ └── getVerticalLayoutPositions.d.ts │ │ ├── makeLayoutPositions/ │ │ │ ├── Packer.d.ts │ │ │ ├── index.d.ts │ │ │ ├── makeHorizontalLayoutPositions.d.ts │ │ │ ├── makeLayoutPositions.d.ts │ │ │ ├── makePackedLayoutPositions.d.ts │ │ │ ├── makeSameHeightLayoutPositions.d.ts │ │ │ ├── makeSameSizeLayoutPosition.d.ts │ │ │ ├── makeSameWidthLayoutPositions.d.ts │ │ │ └── makeVerticalLayoutPositions.d.ts │ │ ├── types/ │ │ │ ├── index.d.ts │ │ │ └── interfaces/ │ │ │ ├── BaseOptions.d.ts │ │ │ ├── ContainerLayout.d.ts │ │ │ ├── Destructible.d.ts │ │ │ ├── Dictionary.d.ts │ │ │ ├── Dimensions.d.ts │ │ │ ├── Options.d.ts │ │ │ ├── Position.d.ts │ │ │ ├── RawOptions.d.ts │ │ │ ├── RawOptionsCallbacks.d.ts │ │ │ ├── Resizable.d.ts │ │ │ ├── SpinnerOptions.d.ts │ │ │ ├── Styleable.d.ts │ │ │ └── index.d.ts │ │ ├── utils/ │ │ │ ├── allStringsOfArray1InArray2.d.ts │ │ │ ├── checkOptionForErrors.d.ts │ │ │ ├── debounce.d.ts │ │ │ ├── filterItemArraysHaveSameSorting.d.ts │ │ │ ├── getDataAttributesOfHTMLNode.d.ts │ │ │ ├── getHTMLElement.d.ts │ │ │ ├── index.d.ts │ │ │ ├── intersection.d.ts │ │ │ ├── merge.d.ts │ │ │ ├── noop.d.ts │ │ │ ├── setStyles.d.ts │ │ │ ├── shuffle.d.ts │ │ │ └── sortBy.d.ts │ │ └── utils.d.ts │ ├── flag-icon-css/ │ │ └── css/ │ │ └── flag-icon.css │ ├── flot/ │ │ └── jquery.flot.js │ ├── flot-old/ │ │ ├── excanvas.js │ │ ├── jquery.colorhelpers.js │ │ ├── jquery.flot.canvas.js │ │ ├── jquery.flot.categories.js │ │ ├── jquery.flot.crosshair.js │ │ ├── jquery.flot.errorbars.js │ │ ├── jquery.flot.fillbetween.js │ │ ├── jquery.flot.image.js │ │ ├── jquery.flot.js │ │ ├── jquery.flot.navigate.js │ │ ├── jquery.flot.pie.js │ │ ├── jquery.flot.resize.js │ │ ├── jquery.flot.selection.js │ │ ├── jquery.flot.stack.js │ │ ├── jquery.flot.symbol.js │ │ ├── jquery.flot.threshold.js │ │ └── jquery.flot.time.js │ ├── fontawesome-free/ │ │ └── css/ │ │ ├── all.css │ │ ├── brands.css │ │ ├── fontawesome.css │ │ ├── regular.css │ │ ├── solid.css │ │ ├── svg-with-js.css │ │ └── v4-shims.css │ ├── fullcalendar/ │ │ ├── LICENSE.txt │ │ ├── locales/ │ │ │ ├── af.js │ │ │ ├── ar-dz.js │ │ │ ├── ar-kw.js │ │ │ ├── ar-ly.js │ │ │ ├── ar-ma.js │ │ │ ├── ar-sa.js │ │ │ ├── ar-tn.js │ │ │ ├── ar.js │ │ │ ├── bg.js │ │ │ ├── bs.js │ │ │ ├── ca.js │ │ │ ├── cs.js │ │ │ ├── da.js │ │ │ ├── de.js │ │ │ ├── el.js │ │ │ ├── en-au.js │ │ │ ├── en-gb.js │ │ │ ├── en-nz.js │ │ │ ├── es-us.js │ │ │ ├── es.js │ │ │ ├── et.js │ │ │ ├── eu.js │ │ │ ├── fa.js │ │ │ ├── fi.js │ │ │ ├── fr-ca.js │ │ │ ├── fr-ch.js │ │ │ ├── fr.js │ │ │ ├── gl.js │ │ │ ├── he.js │ │ │ ├── hi.js │ │ │ ├── hr.js │ │ │ ├── hu.js │ │ │ ├── id.js │ │ │ ├── is.js │ │ │ ├── it.js │ │ │ ├── ja.js │ │ │ ├── ka.js │ │ │ ├── kk.js │ │ │ ├── ko.js │ │ │ ├── lb.js │ │ │ ├── lt.js │ │ │ ├── lv.js │ │ │ ├── mk.js │ │ │ ├── ms.js │ │ │ ├── nb.js │ │ │ ├── nl.js │ │ │ ├── nn.js │ │ │ ├── pl.js │ │ │ ├── pt-br.js │ │ │ ├── pt.js │ │ │ ├── ro.js │ │ │ ├── ru.js │ │ │ ├── sk.js │ │ │ ├── sl.js │ │ │ ├── sq.js │ │ │ ├── sr-cyrl.js │ │ │ ├── sr.js │ │ │ ├── sv.js │ │ │ ├── th.js │ │ │ ├── tr.js │ │ │ ├── uk.js │ │ │ ├── vi.js │ │ │ ├── zh-cn.js │ │ │ └── zh-tw.js │ │ ├── locales-all.js │ │ ├── main.css │ │ ├── main.d.ts │ │ ├── main.esm.js │ │ └── main.js │ ├── fullcalendar-bootstrap/ │ │ ├── LICENSE.txt │ │ ├── main.css │ │ ├── main.d.ts │ │ ├── main.esm.js │ │ └── main.js │ ├── fullcalendar-daygrid/ │ │ ├── LICENSE.txt │ │ ├── main.css │ │ ├── main.d.ts │ │ ├── main.esm.js │ │ └── main.js │ ├── fullcalendar-interaction/ │ │ ├── LICENSE.txt │ │ ├── main.d.ts │ │ ├── main.esm.js │ │ └── main.js │ ├── fullcalendar-timegrid/ │ │ ├── LICENSE.txt │ │ ├── main.css │ │ ├── main.d.ts │ │ ├── main.esm.js │ │ └── main.js │ ├── icheck-bootstrap/ │ │ ├── LICENSE │ │ └── icheck-bootstrap.css │ ├── inputmask/ │ │ ├── inputmask/ │ │ │ ├── bindings/ │ │ │ │ └── inputmask.binding.js │ │ │ ├── dependencyLibs/ │ │ │ │ ├── inputmask.dependencyLib.jqlite.js │ │ │ │ ├── inputmask.dependencyLib.jquery.js │ │ │ │ └── inputmask.dependencyLib.js │ │ │ ├── global/ │ │ │ │ └── window.js │ │ │ ├── inputmask.date.extensions.js │ │ │ ├── inputmask.extensions.js │ │ │ ├── inputmask.js │ │ │ ├── inputmask.numeric.extensions.js │ │ │ └── jquery.inputmask.js │ │ └── jquery.inputmask.bundle.js │ ├── ion-rangeslider/ │ │ ├── css/ │ │ │ └── ion.rangeSlider.css │ │ ├── js/ │ │ │ └── ion.rangeSlider.js │ │ └── less/ │ │ ├── _base.less │ │ ├── _mixins.less │ │ ├── irs.less │ │ └── skins/ │ │ ├── big.less │ │ ├── flat.less │ │ ├── modern.less │ │ ├── round.less │ │ ├── sharp.less │ │ └── square.less │ ├── jquery/ │ │ ├── core.js │ │ ├── jquery.js │ │ └── jquery.slim.js │ ├── jquery-mapael/ │ │ ├── jquery.mapael.js │ │ └── maps/ │ │ ├── README.txt │ │ ├── france_departments.js │ │ ├── usa_states.js │ │ ├── world_countries.js │ │ ├── world_countries_mercator.js │ │ └── world_countries_miller.js │ ├── jquery-mousewheel/ │ │ ├── LICENSE.txt │ │ └── jquery.mousewheel.js │ ├── jquery-ui/ │ │ ├── AUTHORS.txt │ │ ├── LICENSE.txt │ │ ├── external/ │ │ │ └── jquery/ │ │ │ └── jquery.js │ │ ├── jquery-ui.css │ │ ├── jquery-ui.js │ │ ├── jquery-ui.structure.css │ │ └── jquery-ui.theme.css │ ├── jquery-validation/ │ │ ├── additional-methods.js │ │ ├── jquery.validate.js │ │ └── localization/ │ │ ├── messages_ar.js │ │ ├── messages_az.js │ │ ├── messages_bg.js │ │ ├── messages_bn_BD.js │ │ ├── messages_ca.js │ │ ├── messages_cs.js │ │ ├── messages_da.js │ │ ├── messages_de.js │ │ ├── messages_el.js │ │ ├── messages_es.js │ │ ├── messages_es_AR.js │ │ ├── messages_es_PE.js │ │ ├── messages_et.js │ │ ├── messages_eu.js │ │ ├── messages_fa.js │ │ ├── messages_fi.js │ │ ├── messages_fr.js │ │ ├── messages_ge.js │ │ ├── messages_gl.js │ │ ├── messages_he.js │ │ ├── messages_hr.js │ │ ├── messages_hu.js │ │ ├── messages_hy_AM.js │ │ ├── messages_id.js │ │ ├── messages_is.js │ │ ├── messages_it.js │ │ ├── messages_ja.js │ │ ├── messages_ka.js │ │ ├── messages_kk.js │ │ ├── messages_ko.js │ │ ├── messages_lt.js │ │ ├── messages_lv.js │ │ ├── messages_mk.js │ │ ├── messages_my.js │ │ ├── messages_nl.js │ │ ├── messages_no.js │ │ ├── messages_pl.js │ │ ├── messages_pt_BR.js │ │ ├── messages_pt_PT.js │ │ ├── messages_ro.js │ │ ├── messages_ru.js │ │ ├── messages_sd.js │ │ ├── messages_si.js │ │ ├── messages_sk.js │ │ ├── messages_sl.js │ │ ├── messages_sr.js │ │ ├── messages_sr_lat.js │ │ ├── messages_sv.js │ │ ├── messages_th.js │ │ ├── messages_tj.js │ │ ├── messages_tr.js │ │ ├── messages_uk.js │ │ ├── messages_ur.js │ │ ├── messages_vi.js │ │ ├── messages_zh.js │ │ ├── messages_zh_TW.js │ │ ├── methods_de.js │ │ ├── methods_es_CL.js │ │ ├── methods_fi.js │ │ ├── methods_it.js │ │ ├── methods_nl.js │ │ └── methods_pt.js │ ├── jqvmap/ │ │ ├── jquery.vmap.js │ │ ├── jqvmap.css │ │ └── maps/ │ │ ├── continents/ │ │ │ ├── jquery.vmap.africa.js │ │ │ ├── jquery.vmap.asia.js │ │ │ ├── jquery.vmap.australia.js │ │ │ ├── jquery.vmap.europe.js │ │ │ ├── jquery.vmap.north-america.js │ │ │ └── jquery.vmap.south-america.js │ │ ├── jquery.vmap.algeria.js │ │ ├── jquery.vmap.argentina.js │ │ ├── jquery.vmap.brazil.js │ │ ├── jquery.vmap.canada.js │ │ ├── jquery.vmap.croatia.js │ │ ├── jquery.vmap.europe.js │ │ ├── jquery.vmap.france.js │ │ ├── jquery.vmap.germany.js │ │ ├── jquery.vmap.greece.js │ │ ├── jquery.vmap.indonesia.js │ │ ├── jquery.vmap.iran.js │ │ ├── jquery.vmap.iraq.js │ │ ├── jquery.vmap.new_regions_france.js │ │ ├── jquery.vmap.russia.js │ │ ├── jquery.vmap.serbia.js │ │ ├── jquery.vmap.tunisia.js │ │ ├── jquery.vmap.turkey.js │ │ ├── jquery.vmap.ukraine.js │ │ ├── jquery.vmap.usa.counties.js │ │ ├── jquery.vmap.usa.districts.js │ │ ├── jquery.vmap.usa.js │ │ └── jquery.vmap.world.js │ ├── jsgrid/ │ │ ├── demos/ │ │ │ ├── basic.html │ │ │ ├── batch-delete.html │ │ │ ├── custom-grid-field.html │ │ │ ├── custom-load-indicator.html │ │ │ ├── custom-row-renderer.html │ │ │ ├── custom-view.html │ │ │ ├── data-manipulation.html │ │ │ ├── db.js │ │ │ ├── demos.css │ │ │ ├── external-pager.html │ │ │ ├── index.html │ │ │ ├── loading-by-page.html │ │ │ ├── localization.html │ │ │ ├── odata-service.html │ │ │ ├── rows-reordering.html │ │ │ ├── sorting.html │ │ │ ├── static-data.html │ │ │ └── validation.html │ │ ├── i18n/ │ │ │ ├── jsgrid-de.js │ │ │ ├── jsgrid-es.js │ │ │ ├── jsgrid-fr.js │ │ │ ├── jsgrid-he.js │ │ │ ├── jsgrid-ja.js │ │ │ ├── jsgrid-ka.js │ │ │ ├── jsgrid-pl.js │ │ │ ├── jsgrid-pt-br.js │ │ │ ├── jsgrid-pt.js │ │ │ ├── jsgrid-ru.js │ │ │ ├── jsgrid-tr.js │ │ │ ├── jsgrid-zh-cn.js │ │ │ └── jsgrid-zh-tw.js │ │ ├── jsgrid-theme.css │ │ ├── jsgrid.css │ │ └── jsgrid.js │ ├── jszip/ │ │ └── jszip.js │ ├── moment/ │ │ ├── locale/ │ │ │ ├── af.js │ │ │ ├── ar-dz.js │ │ │ ├── ar-kw.js │ │ │ ├── ar-ly.js │ │ │ ├── ar-ma.js │ │ │ ├── ar-sa.js │ │ │ ├── ar-tn.js │ │ │ ├── ar.js │ │ │ ├── az.js │ │ │ ├── be.js │ │ │ ├── bg.js │ │ │ ├── bm.js │ │ │ ├── bn.js │ │ │ ├── bo.js │ │ │ ├── br.js │ │ │ ├── bs.js │ │ │ ├── ca.js │ │ │ ├── cs.js │ │ │ ├── cv.js │ │ │ ├── cy.js │ │ │ ├── da.js │ │ │ ├── de-at.js │ │ │ ├── de-ch.js │ │ │ ├── de.js │ │ │ ├── dv.js │ │ │ ├── el.js │ │ │ ├── en-SG.js │ │ │ ├── en-au.js │ │ │ ├── en-ca.js │ │ │ ├── en-gb.js │ │ │ ├── en-ie.js │ │ │ ├── en-il.js │ │ │ ├── en-nz.js │ │ │ ├── eo.js │ │ │ ├── es-do.js │ │ │ ├── es-us.js │ │ │ ├── es.js │ │ │ ├── et.js │ │ │ ├── eu.js │ │ │ ├── fa.js │ │ │ ├── fi.js │ │ │ ├── fo.js │ │ │ ├── fr-ca.js │ │ │ ├── fr-ch.js │ │ │ ├── fr.js │ │ │ ├── fy.js │ │ │ ├── ga.js │ │ │ ├── gd.js │ │ │ ├── gl.js │ │ │ ├── gom-latn.js │ │ │ ├── gu.js │ │ │ ├── he.js │ │ │ ├── hi.js │ │ │ ├── hr.js │ │ │ ├── hu.js │ │ │ ├── hy-am.js │ │ │ ├── id.js │ │ │ ├── is.js │ │ │ ├── it-ch.js │ │ │ ├── it.js │ │ │ ├── ja.js │ │ │ ├── jv.js │ │ │ ├── ka.js │ │ │ ├── kk.js │ │ │ ├── km.js │ │ │ ├── kn.js │ │ │ ├── ko.js │ │ │ ├── ku.js │ │ │ ├── ky.js │ │ │ ├── lb.js │ │ │ ├── lo.js │ │ │ ├── lt.js │ │ │ ├── lv.js │ │ │ ├── me.js │ │ │ ├── mi.js │ │ │ ├── mk.js │ │ │ ├── ml.js │ │ │ ├── mn.js │ │ │ ├── mr.js │ │ │ ├── ms-my.js │ │ │ ├── ms.js │ │ │ ├── mt.js │ │ │ ├── my.js │ │ │ ├── nb.js │ │ │ ├── ne.js │ │ │ ├── nl-be.js │ │ │ ├── nl.js │ │ │ ├── nn.js │ │ │ ├── pa-in.js │ │ │ ├── pl.js │ │ │ ├── pt-br.js │ │ │ ├── pt.js │ │ │ ├── ro.js │ │ │ ├── ru.js │ │ │ ├── sd.js │ │ │ ├── se.js │ │ │ ├── si.js │ │ │ ├── sk.js │ │ │ ├── sl.js │ │ │ ├── sq.js │ │ │ ├── sr-cyrl.js │ │ │ ├── sr.js │ │ │ ├── ss.js │ │ │ ├── sv.js │ │ │ ├── sw.js │ │ │ ├── ta.js │ │ │ ├── te.js │ │ │ ├── tet.js │ │ │ ├── tg.js │ │ │ ├── th.js │ │ │ ├── tl-ph.js │ │ │ ├── tlh.js │ │ │ ├── tr.js │ │ │ ├── tzl.js │ │ │ ├── tzm-latn.js │ │ │ ├── tzm.js │ │ │ ├── ug-cn.js │ │ │ ├── uk.js │ │ │ ├── ur.js │ │ │ ├── uz-latn.js │ │ │ ├── uz.js │ │ │ ├── vi.js │ │ │ ├── x-pseudo.js │ │ │ ├── yo.js │ │ │ ├── zh-cn.js │ │ │ ├── zh-hk.js │ │ │ └── zh-tw.js │ │ ├── locales.js │ │ └── moment-with-locales.js │ ├── overlayScrollbars/ │ │ ├── css/ │ │ │ └── OverlayScrollbars.css │ │ └── js/ │ │ ├── OverlayScrollbars.js │ │ └── jquery.overlayScrollbars.js │ ├── pace-progress/ │ │ ├── pace.js │ │ └── themes/ │ │ ├── black/ │ │ │ ├── pace-theme-barber-shop.css │ │ │ ├── pace-theme-big-counter.css │ │ │ ├── pace-theme-bounce.css │ │ │ ├── pace-theme-center-atom.css │ │ │ ├── pace-theme-center-circle.css │ │ │ ├── pace-theme-center-radar.css │ │ │ ├── pace-theme-center-simple.css │ │ │ ├── pace-theme-corner-indicator.css │ │ │ ├── pace-theme-fill-left.css │ │ │ ├── pace-theme-flash.css │ │ │ ├── pace-theme-flat-top.css │ │ │ ├── pace-theme-loading-bar.css │ │ │ ├── pace-theme-mac-osx.css │ │ │ ├── pace-theme-material.css │ │ │ └── pace-theme-minimal.css │ │ ├── blue/ │ │ │ ├── pace-theme-barber-shop.css │ │ │ ├── pace-theme-big-counter.css │ │ │ ├── pace-theme-bounce.css │ │ │ ├── pace-theme-center-atom.css │ │ │ ├── pace-theme-center-circle.css │ │ │ ├── pace-theme-center-radar.css │ │ │ ├── pace-theme-center-simple.css │ │ │ ├── pace-theme-corner-indicator.css │ │ │ ├── pace-theme-fill-left.css │ │ │ ├── pace-theme-flash.css │ │ │ ├── pace-theme-flat-top.css │ │ │ ├── pace-theme-loading-bar.css │ │ │ ├── pace-theme-mac-osx.css │ │ │ ├── pace-theme-material.css │ │ │ └── pace-theme-minimal.css │ │ ├── green/ │ │ │ ├── pace-theme-barber-shop.css │ │ │ ├── pace-theme-big-counter.css │ │ │ ├── pace-theme-bounce.css │ │ │ ├── pace-theme-center-atom.css │ │ │ ├── pace-theme-center-circle.css │ │ │ ├── pace-theme-center-radar.css │ │ │ ├── pace-theme-center-simple.css │ │ │ ├── pace-theme-corner-indicator.css │ │ │ ├── pace-theme-fill-left.css │ │ │ ├── pace-theme-flash.css │ │ │ ├── pace-theme-flat-top.css │ │ │ ├── pace-theme-loading-bar.css │ │ │ ├── pace-theme-mac-osx.css │ │ │ ├── pace-theme-material.css │ │ │ └── pace-theme-minimal.css │ │ ├── orange/ │ │ │ ├── pace-theme-barber-shop.css │ │ │ ├── pace-theme-big-counter.css │ │ │ ├── pace-theme-bounce.css │ │ │ ├── pace-theme-center-atom.css │ │ │ ├── pace-theme-center-circle.css │ │ │ ├── pace-theme-center-radar.css │ │ │ ├── pace-theme-center-simple.css │ │ │ ├── pace-theme-corner-indicator.css │ │ │ ├── pace-theme-fill-left.css │ │ │ ├── pace-theme-flash.css │ │ │ ├── pace-theme-flat-top.css │ │ │ ├── pace-theme-loading-bar.css │ │ │ ├── pace-theme-mac-osx.css │ │ │ ├── pace-theme-material.css │ │ │ └── pace-theme-minimal.css │ │ ├── pink/ │ │ │ ├── pace-theme-barber-shop.css │ │ │ ├── pace-theme-big-counter.css │ │ │ ├── pace-theme-bounce.css │ │ │ ├── pace-theme-center-atom.css │ │ │ ├── pace-theme-center-circle.css │ │ │ ├── pace-theme-center-radar.css │ │ │ ├── pace-theme-center-simple.css │ │ │ ├── pace-theme-corner-indicator.css │ │ │ ├── pace-theme-fill-left.css │ │ │ ├── pace-theme-flash.css │ │ │ ├── pace-theme-flat-top.css │ │ │ ├── pace-theme-loading-bar.css │ │ │ ├── pace-theme-mac-osx.css │ │ │ ├── pace-theme-material.css │ │ │ └── pace-theme-minimal.css │ │ ├── purple/ │ │ │ ├── pace-theme-barber-shop.css │ │ │ ├── pace-theme-big-counter.css │ │ │ ├── pace-theme-bounce.css │ │ │ ├── pace-theme-center-atom.css │ │ │ ├── pace-theme-center-circle.css │ │ │ ├── pace-theme-center-radar.css │ │ │ ├── pace-theme-center-simple.css │ │ │ ├── pace-theme-corner-indicator.css │ │ │ ├── pace-theme-fill-left.css │ │ │ ├── pace-theme-flash.css │ │ │ ├── pace-theme-flat-top.css │ │ │ ├── pace-theme-loading-bar.css │ │ │ ├── pace-theme-mac-osx.css │ │ │ ├── pace-theme-material.css │ │ │ └── pace-theme-minimal.css │ │ ├── red/ │ │ │ ├── pace-theme-barber-shop.css │ │ │ ├── pace-theme-big-counter.css │ │ │ ├── pace-theme-bounce.css │ │ │ ├── pace-theme-center-atom.css │ │ │ ├── pace-theme-center-circle.css │ │ │ ├── pace-theme-center-radar.css │ │ │ ├── pace-theme-center-simple.css │ │ │ ├── pace-theme-corner-indicator.css │ │ │ ├── pace-theme-fill-left.css │ │ │ ├── pace-theme-flash.css │ │ │ ├── pace-theme-flat-top.css │ │ │ ├── pace-theme-loading-bar.css │ │ │ ├── pace-theme-mac-osx.css │ │ │ ├── pace-theme-material.css │ │ │ └── pace-theme-minimal.css │ │ ├── silver/ │ │ │ ├── pace-theme-barber-shop.css │ │ │ ├── pace-theme-big-counter.css │ │ │ ├── pace-theme-bounce.css │ │ │ ├── pace-theme-center-atom.css │ │ │ ├── pace-theme-center-circle.css │ │ │ ├── pace-theme-center-radar.css │ │ │ ├── pace-theme-center-simple.css │ │ │ ├── pace-theme-corner-indicator.css │ │ │ ├── pace-theme-fill-left.css │ │ │ ├── pace-theme-flash.css │ │ │ ├── pace-theme-flat-top.css │ │ │ ├── pace-theme-loading-bar.css │ │ │ ├── pace-theme-mac-osx.css │ │ │ ├── pace-theme-material.css │ │ │ └── pace-theme-minimal.css │ │ ├── white/ │ │ │ ├── pace-theme-barber-shop.css │ │ │ ├── pace-theme-big-counter.css │ │ │ ├── pace-theme-bounce.css │ │ │ ├── pace-theme-center-atom.css │ │ │ ├── pace-theme-center-circle.css │ │ │ ├── pace-theme-center-radar.css │ │ │ ├── pace-theme-center-simple.css │ │ │ ├── pace-theme-corner-indicator.css │ │ │ ├── pace-theme-fill-left.css │ │ │ ├── pace-theme-flash.css │ │ │ ├── pace-theme-flat-top.css │ │ │ ├── pace-theme-loading-bar.css │ │ │ ├── pace-theme-mac-osx.css │ │ │ ├── pace-theme-material.css │ │ │ └── pace-theme-minimal.css │ │ └── yellow/ │ │ ├── pace-theme-barber-shop.css │ │ ├── pace-theme-big-counter.css │ │ ├── pace-theme-bounce.css │ │ ├── pace-theme-center-atom.css │ │ ├── pace-theme-center-circle.css │ │ ├── pace-theme-center-radar.css │ │ ├── pace-theme-center-simple.css │ │ ├── pace-theme-corner-indicator.css │ │ ├── pace-theme-fill-left.css │ │ ├── pace-theme-flash.css │ │ ├── pace-theme-flat-top.css │ │ ├── pace-theme-loading-bar.css │ │ ├── pace-theme-mac-osx.css │ │ ├── pace-theme-material.css │ │ └── pace-theme-minimal.css │ ├── package.json │ ├── pdfmake/ │ │ ├── pdfmake.js │ │ └── vfs_fonts.js │ ├── popper/ │ │ ├── esm/ │ │ │ ├── popper-utils.js │ │ │ └── popper.js │ │ ├── popper-utils.js │ │ ├── popper.js │ │ └── umd/ │ │ ├── popper-utils.js │ │ ├── popper.js │ │ └── popper.js.flow │ ├── raphael/ │ │ ├── Gruntfile.js │ │ ├── bower.json │ │ ├── dev/ │ │ │ ├── banner.txt │ │ │ ├── raphael.amd.js │ │ │ ├── raphael.core.js │ │ │ ├── raphael.svg.js │ │ │ ├── raphael.vml.js │ │ │ ├── raphaelTest.html │ │ │ └── test/ │ │ │ ├── index.html │ │ │ ├── svg/ │ │ │ │ └── dom.js │ │ │ └── vml/ │ │ │ └── dom.js │ │ ├── license.txt │ │ ├── raphael.js │ │ ├── raphael.no-deps.js │ │ └── webpack.config.js │ ├── select2/ │ │ ├── css/ │ │ │ └── select2.css │ │ └── js/ │ │ ├── i18n/ │ │ │ ├── af.js │ │ │ ├── ar.js │ │ │ ├── az.js │ │ │ ├── bg.js │ │ │ ├── bn.js │ │ │ ├── bs.js │ │ │ ├── build.txt │ │ │ ├── ca.js │ │ │ ├── cs.js │ │ │ ├── da.js │ │ │ ├── de.js │ │ │ ├── dsb.js │ │ │ ├── el.js │ │ │ ├── en.js │ │ │ ├── es.js │ │ │ ├── et.js │ │ │ ├── eu.js │ │ │ ├── fa.js │ │ │ ├── fi.js │ │ │ ├── fr.js │ │ │ ├── gl.js │ │ │ ├── he.js │ │ │ ├── hi.js │ │ │ ├── hr.js │ │ │ ├── hsb.js │ │ │ ├── hu.js │ │ │ ├── hy.js │ │ │ ├── id.js │ │ │ ├── is.js │ │ │ ├── it.js │ │ │ ├── ja.js │ │ │ ├── ka.js │ │ │ ├── km.js │ │ │ ├── ko.js │ │ │ ├── lt.js │ │ │ ├── lv.js │ │ │ ├── mk.js │ │ │ ├── ms.js │ │ │ ├── nb.js │ │ │ ├── ne.js │ │ │ ├── nl.js │ │ │ ├── pl.js │ │ │ ├── ps.js │ │ │ ├── pt-BR.js │ │ │ ├── pt.js │ │ │ ├── ro.js │ │ │ ├── ru.js │ │ │ ├── sk.js │ │ │ ├── sl.js │ │ │ ├── sq.js │ │ │ ├── sr-Cyrl.js │ │ │ ├── sr.js │ │ │ ├── sv.js │ │ │ ├── th.js │ │ │ ├── tk.js │ │ │ ├── tr.js │ │ │ ├── uk.js │ │ │ ├── vi.js │ │ │ ├── zh-CN.js │ │ │ └── zh-TW.js │ │ ├── select2.full.js │ │ └── select2.js │ ├── select2-bootstrap4-theme/ │ │ └── select2-bootstrap4.css │ ├── sparklines/ │ │ └── sparkline.js │ ├── summernote/ │ │ ├── lang/ │ │ │ ├── summernote-ar-AR.js │ │ │ ├── summernote-bg-BG.js │ │ │ ├── summernote-ca-ES.js │ │ │ ├── summernote-cs-CZ.js │ │ │ ├── summernote-da-DK.js │ │ │ ├── summernote-de-DE.js │ │ │ ├── summernote-el-GR.js │ │ │ ├── summernote-es-ES.js │ │ │ ├── summernote-es-EU.js │ │ │ ├── summernote-fa-IR.js │ │ │ ├── summernote-fi-FI.js │ │ │ ├── summernote-fr-FR.js │ │ │ ├── summernote-gl-ES.js │ │ │ ├── summernote-he-IL.js │ │ │ ├── summernote-hr-HR.js │ │ │ ├── summernote-hu-HU.js │ │ │ ├── summernote-id-ID.js │ │ │ ├── summernote-it-IT.js │ │ │ ├── summernote-ja-JP.js │ │ │ ├── summernote-ko-KR.js │ │ │ ├── summernote-lt-LT.js │ │ │ ├── summernote-lt-LV.js │ │ │ ├── summernote-mn-MN.js │ │ │ ├── summernote-nb-NO.js │ │ │ ├── summernote-nl-NL.js │ │ │ ├── summernote-pl-PL.js │ │ │ ├── summernote-pt-BR.js │ │ │ ├── summernote-pt-PT.js │ │ │ ├── summernote-ro-RO.js │ │ │ ├── summernote-ru-RU.js │ │ │ ├── summernote-sk-SK.js │ │ │ ├── summernote-sl-SI.js │ │ │ ├── summernote-sr-RS-Latin.js │ │ │ ├── summernote-sr-RS.js │ │ │ ├── summernote-sv-SE.js │ │ │ ├── summernote-ta-IN.js │ │ │ ├── summernote-th-TH.js │ │ │ ├── summernote-tr-TR.js │ │ │ ├── summernote-uk-UA.js │ │ │ ├── summernote-uz-UZ.js │ │ │ ├── summernote-vi-VN.js │ │ │ ├── summernote-zh-CN.js │ │ │ └── summernote-zh-TW.js │ │ ├── summernote-bs4.css │ │ ├── summernote-bs4.js │ │ ├── summernote-lite.css │ │ ├── summernote-lite.js │ │ ├── summernote.css │ │ └── summernote.js │ ├── sweetalert2/ │ │ ├── sweetalert2.all.js │ │ ├── sweetalert2.css │ │ └── sweetalert2.js │ ├── sweetalert2-theme-bootstrap-4/ │ │ ├── bootstrap-4.css │ │ └── bootstrap-4.scss │ ├── tempusdominus-bootstrap-4/ │ │ ├── css/ │ │ │ └── tempusdominus-bootstrap-4.css │ │ └── js/ │ │ └── tempusdominus-bootstrap-4.js │ └── toastr/ │ └── toastr.css ├── student_management_app/ │ ├── EditResultVIewClass.py │ ├── EmailBackEnd.py │ ├── HodViews.py │ ├── LoginCheckMiddleWare.py │ ├── StaffViews.py │ ├── StudentViews.py │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── forms.py │ ├── migrations/ │ │ ├── 0001_initial.py │ │ ├── 0002_onlineclassroom.py │ │ ├── 0003_alter_customuser_first_name.py │ │ ├── 0004_alter_customuser_id.py │ │ └── __init__.py │ ├── models.py │ ├── static/ │ │ ├── others/ │ │ │ └── socket.io.js │ │ └── plugins/ │ │ ├── .npmignore │ │ ├── bootstrap/ │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ └── bootstrap.js │ │ ├── bootstrap-colorpicker/ │ │ │ ├── css/ │ │ │ │ └── bootstrap-colorpicker.css │ │ │ └── js/ │ │ │ └── bootstrap-colorpicker.js │ │ ├── bootstrap-slider/ │ │ │ ├── bootstrap-slider.js │ │ │ └── css/ │ │ │ └── bootstrap-slider.css │ │ ├── bootstrap-switch/ │ │ │ ├── css/ │ │ │ │ ├── bootstrap2/ │ │ │ │ │ └── bootstrap-switch.css │ │ │ │ └── bootstrap3/ │ │ │ │ └── bootstrap-switch.css │ │ │ └── js/ │ │ │ └── bootstrap-switch.js │ │ ├── bootstrap4-duallistbox/ │ │ │ ├── bootstrap-duallistbox.css │ │ │ └── jquery.bootstrap-duallistbox.js │ │ ├── bs-custom-file-input/ │ │ │ └── bs-custom-file-input.js │ │ ├── chart.js/ │ │ │ ├── Chart.bundle.js │ │ │ ├── Chart.css │ │ │ └── Chart.js │ │ ├── datatables/ │ │ │ └── jquery.dataTables.js │ │ ├── datatables-autofill/ │ │ │ ├── css/ │ │ │ │ └── autoFill.bootstrap4.css │ │ │ └── js/ │ │ │ ├── autoFill.bootstrap4.js │ │ │ └── dataTables.autoFill.js │ │ ├── datatables-bs4/ │ │ │ ├── css/ │ │ │ │ └── dataTables.bootstrap4.css │ │ │ └── js/ │ │ │ └── dataTables.bootstrap4.js │ │ ├── datatables-buttons/ │ │ │ ├── css/ │ │ │ │ └── buttons.bootstrap4.css │ │ │ └── js/ │ │ │ ├── buttons.bootstrap4.js │ │ │ ├── buttons.colVis.js │ │ │ ├── buttons.flash.js │ │ │ ├── buttons.html5.js │ │ │ ├── buttons.print.js │ │ │ └── dataTables.buttons.js │ │ ├── datatables-colreorder/ │ │ │ ├── css/ │ │ │ │ └── colReorder.bootstrap4.css │ │ │ └── js/ │ │ │ ├── colReorder.bootstrap4.js │ │ │ └── dataTables.colReorder.js │ │ ├── datatables-fixedcolumns/ │ │ │ ├── css/ │ │ │ │ └── fixedColumns.bootstrap4.css │ │ │ └── js/ │ │ │ ├── dataTables.fixedColumns.js │ │ │ └── fixedColumns.bootstrap4.js │ │ ├── datatables-fixedheader/ │ │ │ ├── css/ │ │ │ │ └── fixedHeader.bootstrap4.css │ │ │ └── js/ │ │ │ ├── dataTables.fixedHeader.js │ │ │ └── fixedHeader.bootstrap4.js │ │ ├── datatables-keytable/ │ │ │ ├── css/ │ │ │ │ └── keyTable.bootstrap4.css │ │ │ └── js/ │ │ │ ├── dataTables.keyTable.js │ │ │ └── keyTable.bootstrap4.js │ │ ├── datatables-responsive/ │ │ │ ├── css/ │ │ │ │ └── responsive.bootstrap4.css │ │ │ └── js/ │ │ │ ├── dataTables.responsive.js │ │ │ └── responsive.bootstrap4.js │ │ ├── datatables-rowgroup/ │ │ │ ├── css/ │ │ │ │ └── rowGroup.bootstrap4.css │ │ │ └── js/ │ │ │ ├── dataTables.rowGroup.js │ │ │ └── rowGroup.bootstrap4.js │ │ ├── datatables-rowreorder/ │ │ │ ├── css/ │ │ │ │ └── rowReorder.bootstrap4.css │ │ │ └── js/ │ │ │ ├── dataTables.rowReorder.js │ │ │ └── rowReorder.bootstrap4.js │ │ ├── datatables-scroller/ │ │ │ ├── css/ │ │ │ │ └── scroller.bootstrap4.css │ │ │ └── js/ │ │ │ ├── dataTables.scroller.js │ │ │ └── scroller.bootstrap4.js │ │ ├── datatables-select/ │ │ │ ├── css/ │ │ │ │ └── select.bootstrap4.css │ │ │ └── js/ │ │ │ ├── dataTables.select.js │ │ │ └── select.bootstrap4.js │ │ ├── daterangepicker/ │ │ │ ├── bower.json │ │ │ ├── daterangepicker.css │ │ │ ├── daterangepicker.js │ │ │ ├── example/ │ │ │ │ ├── amd/ │ │ │ │ │ ├── index.html │ │ │ │ │ ├── main.js │ │ │ │ │ └── require.js │ │ │ │ └── browserify/ │ │ │ │ ├── README.md │ │ │ │ ├── bundle.js │ │ │ │ ├── index.html │ │ │ │ └── main.js │ │ │ ├── package.js │ │ │ ├── website/ │ │ │ │ ├── index.html │ │ │ │ ├── website.css │ │ │ │ └── website.js │ │ │ ├── website.css │ │ │ └── website.js │ │ ├── ekko-lightbox/ │ │ │ ├── ekko-lightbox.css │ │ │ └── ekko-lightbox.js │ │ ├── fastclick/ │ │ │ └── fastclick.js │ │ ├── filterizr/ │ │ │ ├── ActiveFilter.d.ts │ │ │ ├── BrowserWindow.d.ts │ │ │ ├── EventReceiver.d.ts │ │ │ ├── FilterContainer/ │ │ │ │ ├── FilterContainer.d.ts │ │ │ │ ├── StyledFilterContainer.d.ts │ │ │ │ ├── index.d.ts │ │ │ │ └── styles.d.ts │ │ │ ├── FilterContainer.d.ts │ │ │ ├── FilterControls.d.ts │ │ │ ├── FilterItem/ │ │ │ │ ├── FilterItem.d.ts │ │ │ │ ├── StyledFilterItem.d.ts │ │ │ │ ├── index.d.ts │ │ │ │ └── styles.d.ts │ │ │ ├── FilterItem.d.ts │ │ │ ├── FilterItems/ │ │ │ │ ├── FilterItems.d.ts │ │ │ │ ├── StyledFilterItems.d.ts │ │ │ │ └── index.d.ts │ │ │ ├── FilterItems.d.ts │ │ │ ├── Filterizr/ │ │ │ │ ├── Filterizr.d.ts │ │ │ │ ├── index.d.ts │ │ │ │ └── installAsJQueryPlugin.d.ts │ │ │ ├── Filterizr.d.ts │ │ │ ├── FilterizrElement.d.ts │ │ │ ├── FilterizrOptions/ │ │ │ │ ├── FilterizrOptions.d.ts │ │ │ │ ├── defaultOptions.d.ts │ │ │ │ └── index.d.ts │ │ │ ├── Spinner/ │ │ │ │ ├── Spinner.d.ts │ │ │ │ ├── StyledSpinner.d.ts │ │ │ │ ├── index.d.ts │ │ │ │ └── makeSpinner.d.ts │ │ │ ├── StyledFilterizrElement.d.ts │ │ │ ├── StyledFilterizrElements.d.ts │ │ │ ├── animate.d.ts │ │ │ ├── config/ │ │ │ │ ├── cssEasingValuesRegexp.d.ts │ │ │ │ ├── filterizrState.d.ts │ │ │ │ ├── index.d.ts │ │ │ │ └── layout.d.ts │ │ │ ├── getLayoutPositions.d.ts │ │ │ ├── index.d.ts │ │ │ ├── index.jquery.d.ts │ │ │ ├── installAsJQueryPlugin.d.ts │ │ │ ├── layouts/ │ │ │ │ ├── Packer.d.ts │ │ │ │ ├── getHorizontalLayoutPositions.d.ts │ │ │ │ ├── getPackedLayoutPositions.d.ts │ │ │ │ ├── getSameHeightLayoutPositions.d.ts │ │ │ │ ├── getSameSizeLayoutPosition.d.ts │ │ │ │ ├── getSameWidthLayoutPositions.d.ts │ │ │ │ └── getVerticalLayoutPositions.d.ts │ │ │ ├── makeLayoutPositions/ │ │ │ │ ├── Packer.d.ts │ │ │ │ ├── index.d.ts │ │ │ │ ├── makeHorizontalLayoutPositions.d.ts │ │ │ │ ├── makeLayoutPositions.d.ts │ │ │ │ ├── makePackedLayoutPositions.d.ts │ │ │ │ ├── makeSameHeightLayoutPositions.d.ts │ │ │ │ ├── makeSameSizeLayoutPosition.d.ts │ │ │ │ ├── makeSameWidthLayoutPositions.d.ts │ │ │ │ └── makeVerticalLayoutPositions.d.ts │ │ │ ├── types/ │ │ │ │ ├── index.d.ts │ │ │ │ └── interfaces/ │ │ │ │ ├── BaseOptions.d.ts │ │ │ │ ├── ContainerLayout.d.ts │ │ │ │ ├── Destructible.d.ts │ │ │ │ ├── Dictionary.d.ts │ │ │ │ ├── Dimensions.d.ts │ │ │ │ ├── Options.d.ts │ │ │ │ ├── Position.d.ts │ │ │ │ ├── RawOptions.d.ts │ │ │ │ ├── RawOptionsCallbacks.d.ts │ │ │ │ ├── Resizable.d.ts │ │ │ │ ├── SpinnerOptions.d.ts │ │ │ │ ├── Styleable.d.ts │ │ │ │ └── index.d.ts │ │ │ ├── utils/ │ │ │ │ ├── allStringsOfArray1InArray2.d.ts │ │ │ │ ├── checkOptionForErrors.d.ts │ │ │ │ ├── debounce.d.ts │ │ │ │ ├── filterItemArraysHaveSameSorting.d.ts │ │ │ │ ├── getDataAttributesOfHTMLNode.d.ts │ │ │ │ ├── getHTMLElement.d.ts │ │ │ │ ├── index.d.ts │ │ │ │ ├── intersection.d.ts │ │ │ │ ├── merge.d.ts │ │ │ │ ├── noop.d.ts │ │ │ │ ├── setStyles.d.ts │ │ │ │ ├── shuffle.d.ts │ │ │ │ └── sortBy.d.ts │ │ │ └── utils.d.ts │ │ ├── flag-icon-css/ │ │ │ └── css/ │ │ │ └── flag-icon.css │ │ ├── flot/ │ │ │ └── jquery.flot.js │ │ ├── flot-old/ │ │ │ ├── excanvas.js │ │ │ ├── jquery.colorhelpers.js │ │ │ ├── jquery.flot.canvas.js │ │ │ ├── jquery.flot.categories.js │ │ │ ├── jquery.flot.crosshair.js │ │ │ ├── jquery.flot.errorbars.js │ │ │ ├── jquery.flot.fillbetween.js │ │ │ ├── jquery.flot.image.js │ │ │ ├── jquery.flot.js │ │ │ ├── jquery.flot.navigate.js │ │ │ ├── jquery.flot.pie.js │ │ │ ├── jquery.flot.resize.js │ │ │ ├── jquery.flot.selection.js │ │ │ ├── jquery.flot.stack.js │ │ │ ├── jquery.flot.symbol.js │ │ │ ├── jquery.flot.threshold.js │ │ │ └── jquery.flot.time.js │ │ ├── fontawesome-free/ │ │ │ └── css/ │ │ │ ├── all.css │ │ │ ├── brands.css │ │ │ ├── fontawesome.css │ │ │ ├── regular.css │ │ │ ├── solid.css │ │ │ ├── svg-with-js.css │ │ │ └── v4-shims.css │ │ ├── fullcalendar/ │ │ │ ├── LICENSE.txt │ │ │ ├── locales/ │ │ │ │ ├── af.js │ │ │ │ ├── ar-dz.js │ │ │ │ ├── ar-kw.js │ │ │ │ ├── ar-ly.js │ │ │ │ ├── ar-ma.js │ │ │ │ ├── ar-sa.js │ │ │ │ ├── ar-tn.js │ │ │ │ ├── ar.js │ │ │ │ ├── bg.js │ │ │ │ ├── bs.js │ │ │ │ ├── ca.js │ │ │ │ ├── cs.js │ │ │ │ ├── da.js │ │ │ │ ├── de.js │ │ │ │ ├── el.js │ │ │ │ ├── en-au.js │ │ │ │ ├── en-gb.js │ │ │ │ ├── en-nz.js │ │ │ │ ├── es-us.js │ │ │ │ ├── es.js │ │ │ │ ├── et.js │ │ │ │ ├── eu.js │ │ │ │ ├── fa.js │ │ │ │ ├── fi.js │ │ │ │ ├── fr-ca.js │ │ │ │ ├── fr-ch.js │ │ │ │ ├── fr.js │ │ │ │ ├── gl.js │ │ │ │ ├── he.js │ │ │ │ ├── hi.js │ │ │ │ ├── hr.js │ │ │ │ ├── hu.js │ │ │ │ ├── id.js │ │ │ │ ├── is.js │ │ │ │ ├── it.js │ │ │ │ ├── ja.js │ │ │ │ ├── ka.js │ │ │ │ ├── kk.js │ │ │ │ ├── ko.js │ │ │ │ ├── lb.js │ │ │ │ ├── lt.js │ │ │ │ ├── lv.js │ │ │ │ ├── mk.js │ │ │ │ ├── ms.js │ │ │ │ ├── nb.js │ │ │ │ ├── nl.js │ │ │ │ ├── nn.js │ │ │ │ ├── pl.js │ │ │ │ ├── pt-br.js │ │ │ │ ├── pt.js │ │ │ │ ├── ro.js │ │ │ │ ├── ru.js │ │ │ │ ├── sk.js │ │ │ │ ├── sl.js │ │ │ │ ├── sq.js │ │ │ │ ├── sr-cyrl.js │ │ │ │ ├── sr.js │ │ │ │ ├── sv.js │ │ │ │ ├── th.js │ │ │ │ ├── tr.js │ │ │ │ ├── uk.js │ │ │ │ ├── vi.js │ │ │ │ ├── zh-cn.js │ │ │ │ └── zh-tw.js │ │ │ ├── locales-all.js │ │ │ ├── main.css │ │ │ ├── main.d.ts │ │ │ ├── main.esm.js │ │ │ └── main.js │ │ ├── fullcalendar-bootstrap/ │ │ │ ├── LICENSE.txt │ │ │ ├── main.css │ │ │ ├── main.d.ts │ │ │ ├── main.esm.js │ │ │ └── main.js │ │ ├── fullcalendar-daygrid/ │ │ │ ├── LICENSE.txt │ │ │ ├── main.css │ │ │ ├── main.d.ts │ │ │ ├── main.esm.js │ │ │ └── main.js │ │ ├── fullcalendar-interaction/ │ │ │ ├── LICENSE.txt │ │ │ ├── main.d.ts │ │ │ ├── main.esm.js │ │ │ └── main.js │ │ ├── fullcalendar-timegrid/ │ │ │ ├── LICENSE.txt │ │ │ ├── main.css │ │ │ ├── main.d.ts │ │ │ ├── main.esm.js │ │ │ └── main.js │ │ ├── icheck-bootstrap/ │ │ │ ├── LICENSE │ │ │ └── icheck-bootstrap.css │ │ ├── inputmask/ │ │ │ ├── inputmask/ │ │ │ │ ├── bindings/ │ │ │ │ │ └── inputmask.binding.js │ │ │ │ ├── dependencyLibs/ │ │ │ │ │ ├── inputmask.dependencyLib.jqlite.js │ │ │ │ │ ├── inputmask.dependencyLib.jquery.js │ │ │ │ │ └── inputmask.dependencyLib.js │ │ │ │ ├── global/ │ │ │ │ │ └── window.js │ │ │ │ ├── inputmask.date.extensions.js │ │ │ │ ├── inputmask.extensions.js │ │ │ │ ├── inputmask.js │ │ │ │ ├── inputmask.numeric.extensions.js │ │ │ │ └── jquery.inputmask.js │ │ │ └── jquery.inputmask.bundle.js │ │ ├── ion-rangeslider/ │ │ │ ├── .editorconfig │ │ │ ├── css/ │ │ │ │ └── ion.rangeSlider.css │ │ │ ├── js/ │ │ │ │ └── ion.rangeSlider.js │ │ │ └── less/ │ │ │ ├── _base.less │ │ │ ├── _mixins.less │ │ │ ├── irs.less │ │ │ └── skins/ │ │ │ ├── big.less │ │ │ ├── flat.less │ │ │ ├── modern.less │ │ │ ├── round.less │ │ │ ├── sharp.less │ │ │ └── square.less │ │ ├── jquery/ │ │ │ ├── core.js │ │ │ ├── jquery.js │ │ │ └── jquery.slim.js │ │ ├── jquery-mapael/ │ │ │ ├── jquery.mapael.js │ │ │ └── maps/ │ │ │ ├── README.txt │ │ │ ├── france_departments.js │ │ │ ├── usa_states.js │ │ │ ├── world_countries.js │ │ │ ├── world_countries_mercator.js │ │ │ └── world_countries_miller.js │ │ ├── jquery-mousewheel/ │ │ │ ├── LICENSE.txt │ │ │ └── jquery.mousewheel.js │ │ ├── jquery-ui/ │ │ │ ├── AUTHORS.txt │ │ │ ├── LICENSE.txt │ │ │ ├── external/ │ │ │ │ └── jquery/ │ │ │ │ └── jquery.js │ │ │ ├── jquery-ui.css │ │ │ ├── jquery-ui.js │ │ │ ├── jquery-ui.structure.css │ │ │ └── jquery-ui.theme.css │ │ ├── jquery-validation/ │ │ │ ├── additional-methods.js │ │ │ ├── jquery.validate.js │ │ │ └── localization/ │ │ │ ├── messages_ar.js │ │ │ ├── messages_az.js │ │ │ ├── messages_bg.js │ │ │ ├── messages_bn_BD.js │ │ │ ├── messages_ca.js │ │ │ ├── messages_cs.js │ │ │ ├── messages_da.js │ │ │ ├── messages_de.js │ │ │ ├── messages_el.js │ │ │ ├── messages_es.js │ │ │ ├── messages_es_AR.js │ │ │ ├── messages_es_PE.js │ │ │ ├── messages_et.js │ │ │ ├── messages_eu.js │ │ │ ├── messages_fa.js │ │ │ ├── messages_fi.js │ │ │ ├── messages_fr.js │ │ │ ├── messages_ge.js │ │ │ ├── messages_gl.js │ │ │ ├── messages_he.js │ │ │ ├── messages_hr.js │ │ │ ├── messages_hu.js │ │ │ ├── messages_hy_AM.js │ │ │ ├── messages_id.js │ │ │ ├── messages_is.js │ │ │ ├── messages_it.js │ │ │ ├── messages_ja.js │ │ │ ├── messages_ka.js │ │ │ ├── messages_kk.js │ │ │ ├── messages_ko.js │ │ │ ├── messages_lt.js │ │ │ ├── messages_lv.js │ │ │ ├── messages_mk.js │ │ │ ├── messages_my.js │ │ │ ├── messages_nl.js │ │ │ ├── messages_no.js │ │ │ ├── messages_pl.js │ │ │ ├── messages_pt_BR.js │ │ │ ├── messages_pt_PT.js │ │ │ ├── messages_ro.js │ │ │ ├── messages_ru.js │ │ │ ├── messages_sd.js │ │ │ ├── messages_si.js │ │ │ ├── messages_sk.js │ │ │ ├── messages_sl.js │ │ │ ├── messages_sr.js │ │ │ ├── messages_sr_lat.js │ │ │ ├── messages_sv.js │ │ │ ├── messages_th.js │ │ │ ├── messages_tj.js │ │ │ ├── messages_tr.js │ │ │ ├── messages_uk.js │ │ │ ├── messages_ur.js │ │ │ ├── messages_vi.js │ │ │ ├── messages_zh.js │ │ │ ├── messages_zh_TW.js │ │ │ ├── methods_de.js │ │ │ ├── methods_es_CL.js │ │ │ ├── methods_fi.js │ │ │ ├── methods_it.js │ │ │ ├── methods_nl.js │ │ │ └── methods_pt.js │ │ ├── jqvmap/ │ │ │ ├── jquery.vmap.js │ │ │ ├── jqvmap.css │ │ │ └── maps/ │ │ │ ├── continents/ │ │ │ │ ├── jquery.vmap.africa.js │ │ │ │ ├── jquery.vmap.asia.js │ │ │ │ ├── jquery.vmap.australia.js │ │ │ │ ├── jquery.vmap.europe.js │ │ │ │ ├── jquery.vmap.north-america.js │ │ │ │ └── jquery.vmap.south-america.js │ │ │ ├── jquery.vmap.algeria.js │ │ │ ├── jquery.vmap.argentina.js │ │ │ ├── jquery.vmap.brazil.js │ │ │ ├── jquery.vmap.canada.js │ │ │ ├── jquery.vmap.croatia.js │ │ │ ├── jquery.vmap.europe.js │ │ │ ├── jquery.vmap.france.js │ │ │ ├── jquery.vmap.germany.js │ │ │ ├── jquery.vmap.greece.js │ │ │ ├── jquery.vmap.indonesia.js │ │ │ ├── jquery.vmap.iran.js │ │ │ ├── jquery.vmap.iraq.js │ │ │ ├── jquery.vmap.new_regions_france.js │ │ │ ├── jquery.vmap.russia.js │ │ │ ├── jquery.vmap.serbia.js │ │ │ ├── jquery.vmap.tunisia.js │ │ │ ├── jquery.vmap.turkey.js │ │ │ ├── jquery.vmap.ukraine.js │ │ │ ├── jquery.vmap.usa.counties.js │ │ │ ├── jquery.vmap.usa.districts.js │ │ │ ├── jquery.vmap.usa.js │ │ │ └── jquery.vmap.world.js │ │ ├── jsgrid/ │ │ │ ├── demos/ │ │ │ │ ├── basic.html │ │ │ │ ├── batch-delete.html │ │ │ │ ├── custom-grid-field.html │ │ │ │ ├── custom-load-indicator.html │ │ │ │ ├── custom-row-renderer.html │ │ │ │ ├── custom-view.html │ │ │ │ ├── data-manipulation.html │ │ │ │ ├── db.js │ │ │ │ ├── demos.css │ │ │ │ ├── external-pager.html │ │ │ │ ├── index.html │ │ │ │ ├── loading-by-page.html │ │ │ │ ├── localization.html │ │ │ │ ├── odata-service.html │ │ │ │ ├── rows-reordering.html │ │ │ │ ├── sorting.html │ │ │ │ ├── static-data.html │ │ │ │ └── validation.html │ │ │ ├── i18n/ │ │ │ │ ├── jsgrid-de.js │ │ │ │ ├── jsgrid-es.js │ │ │ │ ├── jsgrid-fr.js │ │ │ │ ├── jsgrid-he.js │ │ │ │ ├── jsgrid-ja.js │ │ │ │ ├── jsgrid-ka.js │ │ │ │ ├── jsgrid-pl.js │ │ │ │ ├── jsgrid-pt-br.js │ │ │ │ ├── jsgrid-pt.js │ │ │ │ ├── jsgrid-ru.js │ │ │ │ ├── jsgrid-tr.js │ │ │ │ ├── jsgrid-zh-cn.js │ │ │ │ └── jsgrid-zh-tw.js │ │ │ ├── jsgrid-theme.css │ │ │ ├── jsgrid.css │ │ │ └── jsgrid.js │ │ ├── jszip/ │ │ │ └── jszip.js │ │ ├── moment/ │ │ │ ├── locale/ │ │ │ │ ├── af.js │ │ │ │ ├── ar-dz.js │ │ │ │ ├── ar-kw.js │ │ │ │ ├── ar-ly.js │ │ │ │ ├── ar-ma.js │ │ │ │ ├── ar-sa.js │ │ │ │ ├── ar-tn.js │ │ │ │ ├── ar.js │ │ │ │ ├── az.js │ │ │ │ ├── be.js │ │ │ │ ├── bg.js │ │ │ │ ├── bm.js │ │ │ │ ├── bn.js │ │ │ │ ├── bo.js │ │ │ │ ├── br.js │ │ │ │ ├── bs.js │ │ │ │ ├── ca.js │ │ │ │ ├── cs.js │ │ │ │ ├── cv.js │ │ │ │ ├── cy.js │ │ │ │ ├── da.js │ │ │ │ ├── de-at.js │ │ │ │ ├── de-ch.js │ │ │ │ ├── de.js │ │ │ │ ├── dv.js │ │ │ │ ├── el.js │ │ │ │ ├── en-SG.js │ │ │ │ ├── en-au.js │ │ │ │ ├── en-ca.js │ │ │ │ ├── en-gb.js │ │ │ │ ├── en-ie.js │ │ │ │ ├── en-il.js │ │ │ │ ├── en-nz.js │ │ │ │ ├── eo.js │ │ │ │ ├── es-do.js │ │ │ │ ├── es-us.js │ │ │ │ ├── es.js │ │ │ │ ├── et.js │ │ │ │ ├── eu.js │ │ │ │ ├── fa.js │ │ │ │ ├── fi.js │ │ │ │ ├── fo.js │ │ │ │ ├── fr-ca.js │ │ │ │ ├── fr-ch.js │ │ │ │ ├── fr.js │ │ │ │ ├── fy.js │ │ │ │ ├── ga.js │ │ │ │ ├── gd.js │ │ │ │ ├── gl.js │ │ │ │ ├── gom-latn.js │ │ │ │ ├── gu.js │ │ │ │ ├── he.js │ │ │ │ ├── hi.js │ │ │ │ ├── hr.js │ │ │ │ ├── hu.js │ │ │ │ ├── hy-am.js │ │ │ │ ├── id.js │ │ │ │ ├── is.js │ │ │ │ ├── it-ch.js │ │ │ │ ├── it.js │ │ │ │ ├── ja.js │ │ │ │ ├── jv.js │ │ │ │ ├── ka.js │ │ │ │ ├── kk.js │ │ │ │ ├── km.js │ │ │ │ ├── kn.js │ │ │ │ ├── ko.js │ │ │ │ ├── ku.js │ │ │ │ ├── ky.js │ │ │ │ ├── lb.js │ │ │ │ ├── lo.js │ │ │ │ ├── lt.js │ │ │ │ ├── lv.js │ │ │ │ ├── me.js │ │ │ │ ├── mi.js │ │ │ │ ├── mk.js │ │ │ │ ├── ml.js │ │ │ │ ├── mn.js │ │ │ │ ├── mr.js │ │ │ │ ├── ms-my.js │ │ │ │ ├── ms.js │ │ │ │ ├── mt.js │ │ │ │ ├── my.js │ │ │ │ ├── nb.js │ │ │ │ ├── ne.js │ │ │ │ ├── nl-be.js │ │ │ │ ├── nl.js │ │ │ │ ├── nn.js │ │ │ │ ├── pa-in.js │ │ │ │ ├── pl.js │ │ │ │ ├── pt-br.js │ │ │ │ ├── pt.js │ │ │ │ ├── ro.js │ │ │ │ ├── ru.js │ │ │ │ ├── sd.js │ │ │ │ ├── se.js │ │ │ │ ├── si.js │ │ │ │ ├── sk.js │ │ │ │ ├── sl.js │ │ │ │ ├── sq.js │ │ │ │ ├── sr-cyrl.js │ │ │ │ ├── sr.js │ │ │ │ ├── ss.js │ │ │ │ ├── sv.js │ │ │ │ ├── sw.js │ │ │ │ ├── ta.js │ │ │ │ ├── te.js │ │ │ │ ├── tet.js │ │ │ │ ├── tg.js │ │ │ │ ├── th.js │ │ │ │ ├── tl-ph.js │ │ │ │ ├── tlh.js │ │ │ │ ├── tr.js │ │ │ │ ├── tzl.js │ │ │ │ ├── tzm-latn.js │ │ │ │ ├── tzm.js │ │ │ │ ├── ug-cn.js │ │ │ │ ├── uk.js │ │ │ │ ├── ur.js │ │ │ │ ├── uz-latn.js │ │ │ │ ├── uz.js │ │ │ │ ├── vi.js │ │ │ │ ├── x-pseudo.js │ │ │ │ ├── yo.js │ │ │ │ ├── zh-cn.js │ │ │ │ ├── zh-hk.js │ │ │ │ └── zh-tw.js │ │ │ ├── locales.js │ │ │ └── moment-with-locales.js │ │ ├── overlayScrollbars/ │ │ │ ├── css/ │ │ │ │ └── OverlayScrollbars.css │ │ │ └── js/ │ │ │ ├── OverlayScrollbars.js │ │ │ └── jquery.overlayScrollbars.js │ │ ├── pace-progress/ │ │ │ ├── pace.js │ │ │ └── themes/ │ │ │ ├── black/ │ │ │ │ ├── pace-theme-barber-shop.css │ │ │ │ ├── pace-theme-big-counter.css │ │ │ │ ├── pace-theme-bounce.css │ │ │ │ ├── pace-theme-center-atom.css │ │ │ │ ├── pace-theme-center-circle.css │ │ │ │ ├── pace-theme-center-radar.css │ │ │ │ ├── pace-theme-center-simple.css │ │ │ │ ├── pace-theme-corner-indicator.css │ │ │ │ ├── pace-theme-fill-left.css │ │ │ │ ├── pace-theme-flash.css │ │ │ │ ├── pace-theme-flat-top.css │ │ │ │ ├── pace-theme-loading-bar.css │ │ │ │ ├── pace-theme-mac-osx.css │ │ │ │ ├── pace-theme-material.css │ │ │ │ └── pace-theme-minimal.css │ │ │ ├── blue/ │ │ │ │ ├── pace-theme-barber-shop.css │ │ │ │ ├── pace-theme-big-counter.css │ │ │ │ ├── pace-theme-bounce.css │ │ │ │ ├── pace-theme-center-atom.css │ │ │ │ ├── pace-theme-center-circle.css │ │ │ │ ├── pace-theme-center-radar.css │ │ │ │ ├── pace-theme-center-simple.css │ │ │ │ ├── pace-theme-corner-indicator.css │ │ │ │ ├── pace-theme-fill-left.css │ │ │ │ ├── pace-theme-flash.css │ │ │ │ ├── pace-theme-flat-top.css │ │ │ │ ├── pace-theme-loading-bar.css │ │ │ │ ├── pace-theme-mac-osx.css │ │ │ │ ├── pace-theme-material.css │ │ │ │ └── pace-theme-minimal.css │ │ │ ├── green/ │ │ │ │ ├── pace-theme-barber-shop.css │ │ │ │ ├── pace-theme-big-counter.css │ │ │ │ ├── pace-theme-bounce.css │ │ │ │ ├── pace-theme-center-atom.css │ │ │ │ ├── pace-theme-center-circle.css │ │ │ │ ├── pace-theme-center-radar.css │ │ │ │ ├── pace-theme-center-simple.css │ │ │ │ ├── pace-theme-corner-indicator.css │ │ │ │ ├── pace-theme-fill-left.css │ │ │ │ ├── pace-theme-flash.css │ │ │ │ ├── pace-theme-flat-top.css │ │ │ │ ├── pace-theme-loading-bar.css │ │ │ │ ├── pace-theme-mac-osx.css │ │ │ │ ├── pace-theme-material.css │ │ │ │ └── pace-theme-minimal.css │ │ │ ├── orange/ │ │ │ │ ├── pace-theme-barber-shop.css │ │ │ │ ├── pace-theme-big-counter.css │ │ │ │ ├── pace-theme-bounce.css │ │ │ │ ├── pace-theme-center-atom.css │ │ │ │ ├── pace-theme-center-circle.css │ │ │ │ ├── pace-theme-center-radar.css │ │ │ │ ├── pace-theme-center-simple.css │ │ │ │ ├── pace-theme-corner-indicator.css │ │ │ │ ├── pace-theme-fill-left.css │ │ │ │ ├── pace-theme-flash.css │ │ │ │ ├── pace-theme-flat-top.css │ │ │ │ ├── pace-theme-loading-bar.css │ │ │ │ ├── pace-theme-mac-osx.css │ │ │ │ ├── pace-theme-material.css │ │ │ │ └── pace-theme-minimal.css │ │ │ ├── pink/ │ │ │ │ ├── pace-theme-barber-shop.css │ │ │ │ ├── pace-theme-big-counter.css │ │ │ │ ├── pace-theme-bounce.css │ │ │ │ ├── pace-theme-center-atom.css │ │ │ │ ├── pace-theme-center-circle.css │ │ │ │ ├── pace-theme-center-radar.css │ │ │ │ ├── pace-theme-center-simple.css │ │ │ │ ├── pace-theme-corner-indicator.css │ │ │ │ ├── pace-theme-fill-left.css │ │ │ │ ├── pace-theme-flash.css │ │ │ │ ├── pace-theme-flat-top.css │ │ │ │ ├── pace-theme-loading-bar.css │ │ │ │ ├── pace-theme-mac-osx.css │ │ │ │ ├── pace-theme-material.css │ │ │ │ └── pace-theme-minimal.css │ │ │ ├── purple/ │ │ │ │ ├── pace-theme-barber-shop.css │ │ │ │ ├── pace-theme-big-counter.css │ │ │ │ ├── pace-theme-bounce.css │ │ │ │ ├── pace-theme-center-atom.css │ │ │ │ ├── pace-theme-center-circle.css │ │ │ │ ├── pace-theme-center-radar.css │ │ │ │ ├── pace-theme-center-simple.css │ │ │ │ ├── pace-theme-corner-indicator.css │ │ │ │ ├── pace-theme-fill-left.css │ │ │ │ ├── pace-theme-flash.css │ │ │ │ ├── pace-theme-flat-top.css │ │ │ │ ├── pace-theme-loading-bar.css │ │ │ │ ├── pace-theme-mac-osx.css │ │ │ │ ├── pace-theme-material.css │ │ │ │ └── pace-theme-minimal.css │ │ │ ├── red/ │ │ │ │ ├── pace-theme-barber-shop.css │ │ │ │ ├── pace-theme-big-counter.css │ │ │ │ ├── pace-theme-bounce.css │ │ │ │ ├── pace-theme-center-atom.css │ │ │ │ ├── pace-theme-center-circle.css │ │ │ │ ├── pace-theme-center-radar.css │ │ │ │ ├── pace-theme-center-simple.css │ │ │ │ ├── pace-theme-corner-indicator.css │ │ │ │ ├── pace-theme-fill-left.css │ │ │ │ ├── pace-theme-flash.css │ │ │ │ ├── pace-theme-flat-top.css │ │ │ │ ├── pace-theme-loading-bar.css │ │ │ │ ├── pace-theme-mac-osx.css │ │ │ │ ├── pace-theme-material.css │ │ │ │ └── pace-theme-minimal.css │ │ │ ├── silver/ │ │ │ │ ├── pace-theme-barber-shop.css │ │ │ │ ├── pace-theme-big-counter.css │ │ │ │ ├── pace-theme-bounce.css │ │ │ │ ├── pace-theme-center-atom.css │ │ │ │ ├── pace-theme-center-circle.css │ │ │ │ ├── pace-theme-center-radar.css │ │ │ │ ├── pace-theme-center-simple.css │ │ │ │ ├── pace-theme-corner-indicator.css │ │ │ │ ├── pace-theme-fill-left.css │ │ │ │ ├── pace-theme-flash.css │ │ │ │ ├── pace-theme-flat-top.css │ │ │ │ ├── pace-theme-loading-bar.css │ │ │ │ ├── pace-theme-mac-osx.css │ │ │ │ ├── pace-theme-material.css │ │ │ │ └── pace-theme-minimal.css │ │ │ ├── white/ │ │ │ │ ├── pace-theme-barber-shop.css │ │ │ │ ├── pace-theme-big-counter.css │ │ │ │ ├── pace-theme-bounce.css │ │ │ │ ├── pace-theme-center-atom.css │ │ │ │ ├── pace-theme-center-circle.css │ │ │ │ ├── pace-theme-center-radar.css │ │ │ │ ├── pace-theme-center-simple.css │ │ │ │ ├── pace-theme-corner-indicator.css │ │ │ │ ├── pace-theme-fill-left.css │ │ │ │ ├── pace-theme-flash.css │ │ │ │ ├── pace-theme-flat-top.css │ │ │ │ ├── pace-theme-loading-bar.css │ │ │ │ ├── pace-theme-mac-osx.css │ │ │ │ ├── pace-theme-material.css │ │ │ │ └── pace-theme-minimal.css │ │ │ └── yellow/ │ │ │ ├── pace-theme-barber-shop.css │ │ │ ├── pace-theme-big-counter.css │ │ │ ├── pace-theme-bounce.css │ │ │ ├── pace-theme-center-atom.css │ │ │ ├── pace-theme-center-circle.css │ │ │ ├── pace-theme-center-radar.css │ │ │ ├── pace-theme-center-simple.css │ │ │ ├── pace-theme-corner-indicator.css │ │ │ ├── pace-theme-fill-left.css │ │ │ ├── pace-theme-flash.css │ │ │ ├── pace-theme-flat-top.css │ │ │ ├── pace-theme-loading-bar.css │ │ │ ├── pace-theme-mac-osx.css │ │ │ ├── pace-theme-material.css │ │ │ └── pace-theme-minimal.css │ │ ├── pdfmake/ │ │ │ ├── pdfmake.js │ │ │ └── vfs_fonts.js │ │ ├── popper/ │ │ │ ├── esm/ │ │ │ │ ├── popper-utils.js │ │ │ │ └── popper.js │ │ │ ├── popper-utils.js │ │ │ ├── popper.js │ │ │ └── umd/ │ │ │ ├── popper-utils.js │ │ │ ├── popper.js │ │ │ └── popper.js.flow │ │ ├── raphael/ │ │ │ ├── .eslintrc.js │ │ │ ├── Gruntfile.js │ │ │ ├── bower.json │ │ │ ├── dev/ │ │ │ │ ├── banner.txt │ │ │ │ ├── raphael.amd.js │ │ │ │ ├── raphael.core.js │ │ │ │ ├── raphael.svg.js │ │ │ │ ├── raphael.vml.js │ │ │ │ ├── raphaelTest.html │ │ │ │ └── test/ │ │ │ │ ├── index.html │ │ │ │ ├── svg/ │ │ │ │ │ └── dom.js │ │ │ │ └── vml/ │ │ │ │ └── dom.js │ │ │ ├── license.txt │ │ │ ├── raphael.js │ │ │ ├── raphael.no-deps.js │ │ │ └── webpack.config.js │ │ ├── select2/ │ │ │ ├── css/ │ │ │ │ └── select2.css │ │ │ └── js/ │ │ │ ├── i18n/ │ │ │ │ ├── af.js │ │ │ │ ├── ar.js │ │ │ │ ├── az.js │ │ │ │ ├── bg.js │ │ │ │ ├── bn.js │ │ │ │ ├── bs.js │ │ │ │ ├── build.txt │ │ │ │ ├── ca.js │ │ │ │ ├── cs.js │ │ │ │ ├── da.js │ │ │ │ ├── de.js │ │ │ │ ├── dsb.js │ │ │ │ ├── el.js │ │ │ │ ├── en.js │ │ │ │ ├── es.js │ │ │ │ ├── et.js │ │ │ │ ├── eu.js │ │ │ │ ├── fa.js │ │ │ │ ├── fi.js │ │ │ │ ├── fr.js │ │ │ │ ├── gl.js │ │ │ │ ├── he.js │ │ │ │ ├── hi.js │ │ │ │ ├── hr.js │ │ │ │ ├── hsb.js │ │ │ │ ├── hu.js │ │ │ │ ├── hy.js │ │ │ │ ├── id.js │ │ │ │ ├── is.js │ │ │ │ ├── it.js │ │ │ │ ├── ja.js │ │ │ │ ├── ka.js │ │ │ │ ├── km.js │ │ │ │ ├── ko.js │ │ │ │ ├── lt.js │ │ │ │ ├── lv.js │ │ │ │ ├── mk.js │ │ │ │ ├── ms.js │ │ │ │ ├── nb.js │ │ │ │ ├── ne.js │ │ │ │ ├── nl.js │ │ │ │ ├── pl.js │ │ │ │ ├── ps.js │ │ │ │ ├── pt-BR.js │ │ │ │ ├── pt.js │ │ │ │ ├── ro.js │ │ │ │ ├── ru.js │ │ │ │ ├── sk.js │ │ │ │ ├── sl.js │ │ │ │ ├── sq.js │ │ │ │ ├── sr-Cyrl.js │ │ │ │ ├── sr.js │ │ │ │ ├── sv.js │ │ │ │ ├── th.js │ │ │ │ ├── tk.js │ │ │ │ ├── tr.js │ │ │ │ ├── uk.js │ │ │ │ ├── vi.js │ │ │ │ ├── zh-CN.js │ │ │ │ └── zh-TW.js │ │ │ ├── select2.full.js │ │ │ └── select2.js │ │ ├── select2-bootstrap4-theme/ │ │ │ └── select2-bootstrap4.css │ │ ├── sparklines/ │ │ │ └── sparkline.js │ │ ├── summernote/ │ │ │ ├── lang/ │ │ │ │ ├── summernote-ar-AR.js │ │ │ │ ├── summernote-bg-BG.js │ │ │ │ ├── summernote-ca-ES.js │ │ │ │ ├── summernote-cs-CZ.js │ │ │ │ ├── summernote-da-DK.js │ │ │ │ ├── summernote-de-DE.js │ │ │ │ ├── summernote-el-GR.js │ │ │ │ ├── summernote-es-ES.js │ │ │ │ ├── summernote-es-EU.js │ │ │ │ ├── summernote-fa-IR.js │ │ │ │ ├── summernote-fi-FI.js │ │ │ │ ├── summernote-fr-FR.js │ │ │ │ ├── summernote-gl-ES.js │ │ │ │ ├── summernote-he-IL.js │ │ │ │ ├── summernote-hr-HR.js │ │ │ │ ├── summernote-hu-HU.js │ │ │ │ ├── summernote-id-ID.js │ │ │ │ ├── summernote-it-IT.js │ │ │ │ ├── summernote-ja-JP.js │ │ │ │ ├── summernote-ko-KR.js │ │ │ │ ├── summernote-lt-LT.js │ │ │ │ ├── summernote-lt-LV.js │ │ │ │ ├── summernote-mn-MN.js │ │ │ │ ├── summernote-nb-NO.js │ │ │ │ ├── summernote-nl-NL.js │ │ │ │ ├── summernote-pl-PL.js │ │ │ │ ├── summernote-pt-BR.js │ │ │ │ ├── summernote-pt-PT.js │ │ │ │ ├── summernote-ro-RO.js │ │ │ │ ├── summernote-ru-RU.js │ │ │ │ ├── summernote-sk-SK.js │ │ │ │ ├── summernote-sl-SI.js │ │ │ │ ├── summernote-sr-RS-Latin.js │ │ │ │ ├── summernote-sr-RS.js │ │ │ │ ├── summernote-sv-SE.js │ │ │ │ ├── summernote-ta-IN.js │ │ │ │ ├── summernote-th-TH.js │ │ │ │ ├── summernote-tr-TR.js │ │ │ │ ├── summernote-uk-UA.js │ │ │ │ ├── summernote-uz-UZ.js │ │ │ │ ├── summernote-vi-VN.js │ │ │ │ ├── summernote-zh-CN.js │ │ │ │ └── summernote-zh-TW.js │ │ │ ├── summernote-bs4.css │ │ │ ├── summernote-bs4.js │ │ │ ├── summernote-lite.css │ │ │ ├── summernote-lite.js │ │ │ ├── summernote.css │ │ │ └── summernote.js │ │ ├── sweetalert2/ │ │ │ ├── sweetalert2.all.js │ │ │ ├── sweetalert2.css │ │ │ └── sweetalert2.js │ │ ├── sweetalert2-theme-bootstrap-4/ │ │ │ ├── bootstrap-4.css │ │ │ └── bootstrap-4.scss │ │ ├── tempusdominus-bootstrap-4/ │ │ │ ├── css/ │ │ │ │ └── tempusdominus-bootstrap-4.css │ │ │ └── js/ │ │ │ └── tempusdominus-bootstrap-4.js │ │ └── toastr/ │ │ └── toastr.css │ ├── templates/ │ │ ├── demo.html │ │ ├── hod_template/ │ │ │ ├── add_course_template.html │ │ │ ├── add_staff_template.html │ │ │ ├── add_student_template.html │ │ │ ├── add_subject_template.html │ │ │ ├── admin_profile.html │ │ │ ├── admin_view_attendance.html │ │ │ ├── base_template.html │ │ │ ├── edit_course_template.html │ │ │ ├── edit_staff_template.html │ │ │ ├── edit_student_template.html │ │ │ ├── edit_subject_template.html │ │ │ ├── footer.html │ │ │ ├── form_template.html │ │ │ ├── home_content.html │ │ │ ├── manage_course_template.html │ │ │ ├── manage_session_template.html │ │ │ ├── manage_staff_template.html │ │ │ ├── manage_student_template.html │ │ │ ├── manage_subject_template.html │ │ │ ├── sidebar_template.html │ │ │ ├── staff_feedback_template.html │ │ │ ├── staff_leave_view.html │ │ │ ├── staff_notification.html │ │ │ ├── student_feedback_template.html │ │ │ ├── student_leave_view.html │ │ │ └── student_notification.html │ │ ├── login_page.html │ │ ├── registration/ │ │ │ ├── base.html │ │ │ ├── password_reset_complete.html │ │ │ ├── password_reset_confirm.html │ │ │ ├── password_reset_done.html │ │ │ ├── password_reset_email.html │ │ │ └── password_reset_form.html │ │ ├── signup_admin_page.html │ │ ├── signup_staff_page.html │ │ ├── signup_student_page.html │ │ ├── staff_template/ │ │ │ ├── all_notification.html │ │ │ ├── base_template.html │ │ │ ├── edit_student_result.html │ │ │ ├── footer.html │ │ │ ├── live_class_room_start.html │ │ │ ├── sidebar_template.html │ │ │ ├── staff_add_result.html │ │ │ ├── staff_apply_leave.html │ │ │ ├── staff_feedback.html │ │ │ ├── staff_home_template.html │ │ │ ├── staff_profile.html │ │ │ ├── staff_take_attendance.html │ │ │ ├── staff_update_attendance.html │ │ │ └── start_live_classroom.html │ │ ├── student_template/ │ │ │ ├── all_notification.html │ │ │ ├── base_template.html │ │ │ ├── footer.html │ │ │ ├── join_class_room_start.html │ │ │ ├── sidebar_template.html │ │ │ ├── student_apply_leave.html │ │ │ ├── student_attendance_data.html │ │ │ ├── student_feedback.html │ │ │ ├── student_home_template.html │ │ │ ├── student_profile.html │ │ │ ├── student_result.html │ │ │ └── student_view_attendance.html │ │ ├── widget.html │ │ └── widget_student.html │ ├── tests.py │ └── views.py └── student_management_system/ ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py ================================================ FILE CONTENTS ================================================ ================================================ FILE: .dockerignore ================================================ *.pyc *.pyo *.mo *.db *.css.map *.egg-info *.sql.gz .cache .project .idea .pydevproject .idea/workspace.xml .DS_Store .git/ .sass-cache .vagrant/ __pycache__ dist docs env venv logs src/{{ project_name }}/settings/local.py src/node_modules web/media web/static/CACHE stats Dockerfile ================================================ FILE: .flake8 ================================================ [flake8] exclude = migrations, __pycache__, manage.py, settings.py, wsgi.py, venv/ ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] patreon: shrivastava136 open_collective: # Replace with a single Open Collective username ko_fi: # Replace with a single Ko-fi username tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry custom: ['https://www.paypal.com/paypalme/akash1362'] ================================================ FILE: .github/workflows/tests.yml ================================================ name: Tests on: push: branches: - '*' pull_request: branches: - '*' jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: ['3.11.3'] steps: - uses: actions/checkout@v2 - name: Set up Python 🐍 ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | pip install --upgrade pip pip install -r requirements.txt pip install -r requirements.dev.txt - name: Run Unit Tests ⚒ env: DEBUG: False SECRET_KEY: "RANDOM_KEY" DATABASE_URL: "postgres://postgres:user@localhost:5432/db_name" CAPTCHA_SECRET: "RANDOM_KEY" run: | python manage.py collectstatic --no-input python manage.py test ================================================ FILE: .gitignore ================================================ # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ pip-wheel-metadata/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # Editor .vscode # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .nox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover *.py,cover .hypothesis/ .pytest_cache/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder target/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # pyenv .python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # However, in case of collaboration, if having platform-specific dependencies or dependencies # having no cross-platform support, pipenv may install dependencies that don't work, or not # install all needed dependencies. #Pipfile.lock # PEP 582; used by e.g. github.com/David-OConnor/pyflow __pypackages__/ # Celery stuff celerybeat-schedule celerybeat.pid # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ .dmypy.json dmypy.json # Pyre type checker .pyre/ staticfiles/ ================================================ FILE: .pre-commit-config.yaml ================================================ exclude: 'static' repos: - repo: https://github.com/pycqa/isort rev: 5.12.0 hooks: - id: isort name: isort-py - repo: https://github.com/ambv/black rev: 23.3.0 hooks: - id: black name: black-py - repo: https://github.com/asottile/pyupgrade rev: v3.3.2 hooks: - id: pyupgrade name: pyupgrade-py - repo: https://github.com/pre-commit/pre-commit-hooks rev: v2.3.0 hooks: - id: end-of-file-fixer - id: trailing-whitespace ================================================ FILE: .travis.yml ================================================ language: python python: - "3.8.2" install: - pip install -r requirements.txt script: - python manage.py test ================================================ FILE: CODE_OF_CONDUCT.md ================================================ # Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at akash.shrivastava136@gmail.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq ================================================ FILE: Dockerfile ================================================ FROM python:3.11-slim-buster ENV PYTHONBUFFERED=1 WORKDIR /student_management_system COPY requirements.txt requirements.txt RUN pip3 install -r requirements.txt ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2020 Akash Shrivastava Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: Procfile ================================================ web: python manage.py migrate && gunicorn 'student_management_system.wsgi' ================================================ FILE: README.md ================================================ # Django Student Management System 👨‍🎓 A modern Student Management System 👨‍🎓 with features like Interactive Dashboard 🤩 Attendance Management 🏫Provide Feedback ✍ Result Generation 📜 Leave Application 🍂 ![SMS_Banner](https://github.com/Akash1362000/akash1362000.github.io/blob/master/styles/images/Django%20Student%20Management%20System%20Banner.jpg) [![Website shields.io](https://img.shields.io/website-up-down-green-red/http/shields.io.svg)](https://student-management-webapp.herokuapp.com/) [![travis-ci](https://api.travis-ci.com/Akash1362000/Django_Student_Management_System.svg?token=nv6BYq1BY3w4kf8uZuGj&branch=main)](https://travis-ci.com/github/Akash1362000/Django_Student_Management_System/) [![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2FAkash1362000%2FDjango_Student_Management_System%2F&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false)](https://hits.seeyoufarm.com) [![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/Akash1362000/Django_Student_Management_System/graphs/commit-activity) Checkout the live Website [here](https://student-management-system-4jym.onrender.com/)! Find the detailed project report [here](https://drive.google.com/file/d/1DTqbRJBoFuCHJdtb0SJwdiLgE6iOgjUG/view?usp=sharing)! 📜 ### Meet the Developers ✨🌟

Akash Shrivastava
👨‍💻🚴‍♂️📸

Akanksha Tamboli
💻🎨

Shreejit Nair
🎓🏏📱

Samiksha Naik
💃📸
## Development 👨‍💻 Note : Make sure you have Python version 3.8+ Environment Setup 🚀 `$ git clone https://github.com/Akash1362000/Django_Student_Management_System.git` `$ cd Django_Student_Management_System/` Create `.env` file (refer `.env.example` file) Generate `SECRET_KEY` from [here](https://djecrety.ir/) Generate your `CAPTCHA_SECRET` from [here](http://www.google.com/recaptcha/admin) Copy your `SITE KEY` after generating `CAPTCHA_SECRET` and paste it in `data-sitekey` in `student_management_app/templates/login_page.html` (replace the current key with your key) ## Database Setup Install Postgres Latest version from [here](https://www.postgresql.org/download/) Install pgAdmin from [here](https://www.pgadmin.org/download/) Create a Database using pgAdmin by following the steps mentioned [here](https://www.tutorialsteacher.com/postgresql/create-database) Update your `DATABASE_URL` in `.env` with your DB details like `USER`, `PASSWORD` and `DB_NAME` --- If virtualenv is not installed [(What is virtualenv?)](https://www.youtube.com/watch?v=N5vscPTWKOk&t=313s): `$ pip install virtualenv` Create a virtual environment `$ virtualenv venv` Activate the environment everytime you open the project `$ source venv/Scripts/activate` Install requirements 🛠 `$ pip install -r requirements.txt` `$ pre-commit install` Run migrations for Database `$ python manage.py migrate` Create superuser for Admin Login 🔐 `$ python manage.py createsuperuser` Enter your desired username, email and password. Make sure you remember them as you'll need them in future. eg. Username: admin Email: admin@admin.com Password: HighlyConfidentialPassword All Set! 🤩 Now you can run the server to see your application up & running 🚀 `$ python manage.py runserver` To exit the environment ❎ `$ deactivate` Every time you want to open the application in browser, make sure you run: `$ source venv/Scripts/activate` `$ python manage.py runserver` --- ## Docker Setup (Optional) ![](https://skillicons.dev/icons?i=docker) If you want to use Docker to run this project, you need to do the following steps: - Install Docker for your OS from [here](https://www.docker.com/products/docker-desktop/) - Run `docker --version` and `docker compose --version` [In Windows, you need to run `docker-compose --version` to check the version] - If you see both the versions, then Docker is successfully installed on your system and you can follow along - If you don't see the version, check with your Docker installation - Open `docker-compose.yml` file and update the value of `CAPTCHA_SECRET` with your generated key. You can generate it from [here](http://www.google.com/recaptcha/admin) - Run `docker compose up -d` - Run `docker exec -it student_management_system sh -c "python manage.py createsuperuser"` to create a new superuser - Access the app at [http://localhost:8000](http://localhost:8000) - To stop the container, run `docker compose stop` from the project root - To restart the container, run `docker compose start` from the project root - To delete the container, run `docker compose down` from the project root --- ## A Glimpse of the Dashboard 😍 ![Dashboard](https://i.imgur.com/vN530l3.png) ## Stargazers [![Stargazers](https://reporoster.com/stars/Akash1362000/Django_Student_Management_System)](https://github.com/Akash1362000/Django_Student_Management_System/stargazers) Liked our work? 🤔 Do star [this](https://github.com/Akash1362000/Django_Student_Management_System) repository ⭐ It'll motivate us more 😁 --- ### License ✍ ``` MIT License Copyright (c) 2020 Akash Shrivastava Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` ================================================ FILE: build.sh ================================================ #!/usr/bin/env bash set -o errexit # exit on error pip install -r requirements.txt python manage.py collectstatic --no-input python manage.py migrate ================================================ FILE: docker-compose.yml ================================================ version: '3.8' services: app: build: . volumes: - .:/student_management_system ports: - 8000:8000 image: student_management_system:django container_name: student_management_system command: - /bin/bash - -c - | python3 ./manage.py migrate python3 ./manage.py collectstatic --noinput python3 ./manage.py runserver 0.0.0.0:8000 environment: - DEBUG=True - SECRET_KEY=0l5agg-yx+4+&^ti&p*nm&^=s2l8awa8o4=%+9@98$*(vv9bo4 - DATABASE_URL=postgres://postgres:postgres@db:5432/postgres - CAPTCHA_SECRET=your_captcha_secret depends_on: - db db: image: postgres volumes: - ./data/db:/var/lib/postgresql/data ports: - 5440:5432 environment: - POSTGRES_DB=postgres - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres container_name: student_management_system_db ================================================ FILE: manage.py ================================================ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" import os import sys def main(): os.environ.setdefault( "DJANGO_SETTINGS_MODULE", "student_management_system.settings" ) try: from django.core.management import execute_from_command_line except ImportError as exc: raise ImportError( "Couldn't import Django. Are you sure it's installed and " "available on your PYTHONPATH environment variable? Did you " "forget to activate a virtual environment?" ) from exc execute_from_command_line(sys.argv) if __name__ == "__main__": main() ================================================ FILE: requirements.dev.txt ================================================ flake8==6.0.0 black==23.1.0 pre-commit==3.3.1 isort==5.12.0 ================================================ FILE: requirements.txt ================================================ dj-database-url==1.2.0 Django==4.1.13 gunicorn==20.1.0 requests==2.31.0 psycopg2-binary==2.9.5 python-dotenv==1.0.0 whitenoise==6.4.0 psutil==5.9.5 django-health-check==3.17.0 ================================================ FILE: runtime.txt ================================================ python-3.10.6 ================================================ FILE: static/admin/css/autocomplete.css ================================================ select.admin-autocomplete { width: 20em; } .select2-container--admin-autocomplete.select2-container { min-height: 30px; } .select2-container--admin-autocomplete .select2-selection--single, .select2-container--admin-autocomplete .select2-selection--multiple { min-height: 30px; padding: 0; } .select2-container--admin-autocomplete.select2-container--focus .select2-selection, .select2-container--admin-autocomplete.select2-container--open .select2-selection { border-color: #999; min-height: 30px; } .select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--single, .select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--single { padding: 0; } .select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--multiple, .select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--multiple { padding: 0; } .select2-container--admin-autocomplete .select2-selection--single { background-color: #fff; border: 1px solid #ccc; border-radius: 4px; } .select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered { color: #444; line-height: 30px; } .select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear { cursor: pointer; float: right; font-weight: bold; } .select2-container--admin-autocomplete .select2-selection--single .select2-selection__placeholder { color: #999; } .select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow { height: 26px; position: absolute; top: 1px; right: 1px; width: 20px; } .select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow b { border-color: #888 transparent transparent transparent; border-style: solid; border-width: 5px 4px 0 4px; height: 0; left: 50%; margin-left: -4px; margin-top: -2px; position: absolute; top: 50%; width: 0; } .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__clear { float: left; } .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__arrow { left: 1px; right: auto; } .select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single { background-color: #eee; cursor: default; } .select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single .select2-selection__clear { display: none; } .select2-container--admin-autocomplete.select2-container--open .select2-selection--single .select2-selection__arrow b { border-color: transparent transparent #888 transparent; border-width: 0 4px 5px 4px; } .select2-container--admin-autocomplete .select2-selection--multiple { background-color: white; border: 1px solid #ccc; border-radius: 4px; cursor: text; } .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered { box-sizing: border-box; list-style: none; margin: 0; padding: 0 5px; width: 100%; } .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered li { list-style: none; } .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__placeholder { color: #999; margin-top: 5px; float: left; } .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear { cursor: pointer; float: right; font-weight: bold; margin: 5px; } .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice { background-color: #e4e4e4; border: 1px solid #ccc; border-radius: 4px; cursor: default; float: left; margin-right: 5px; margin-top: 5px; padding: 0 5px; } .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove { color: #999; cursor: pointer; display: inline-block; font-weight: bold; margin-right: 2px; } .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove:hover { color: #333; } .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-search--inline { float: right; } .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice { margin-left: 5px; margin-right: auto; } .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { margin-left: 2px; margin-right: auto; } .select2-container--admin-autocomplete.select2-container--focus .select2-selection--multiple { border: solid #999 1px; outline: 0; } .select2-container--admin-autocomplete.select2-container--disabled .select2-selection--multiple { background-color: #eee; cursor: default; } .select2-container--admin-autocomplete.select2-container--disabled .select2-selection__choice__remove { display: none; } .select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--multiple { border-top-left-radius: 0; border-top-right-radius: 0; } .select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--multiple { border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field { border: 1px solid #ccc; } .select2-container--admin-autocomplete .select2-search--inline .select2-search__field { background: transparent; border: none; outline: 0; box-shadow: none; -webkit-appearance: textfield; } .select2-container--admin-autocomplete .select2-results > .select2-results__options { max-height: 200px; overflow-y: auto; } .select2-container--admin-autocomplete .select2-results__option[role=group] { padding: 0; } .select2-container--admin-autocomplete .select2-results__option[aria-disabled=true] { color: #999; } .select2-container--admin-autocomplete .select2-results__option[aria-selected=true] { background-color: #ddd; } .select2-container--admin-autocomplete .select2-results__option .select2-results__option { padding-left: 1em; } .select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__group { padding-left: 0; } .select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option { margin-left: -1em; padding-left: 2em; } .select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -2em; padding-left: 3em; } .select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -3em; padding-left: 4em; } .select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -4em; padding-left: 5em; } .select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -5em; padding-left: 6em; } .select2-container--admin-autocomplete .select2-results__option--highlighted[aria-selected] { background-color: #79aec8; color: white; } .select2-container--admin-autocomplete .select2-results__group { cursor: default; display: block; padding: 6px; } ================================================ FILE: static/admin/css/base.css ================================================ /* DJANGO Admin styles */ @import url(fonts.css); body { margin: 0; padding: 0; font-size: 14px; font-family: "Roboto","Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif; color: #333; background: #fff; } /* LINKS */ a:link, a:visited { color: #447e9b; text-decoration: none; } a:focus, a:hover { color: #036; } a:focus { text-decoration: underline; } a img { border: none; } a.section:link, a.section:visited { color: #fff; text-decoration: none; } a.section:focus, a.section:hover { text-decoration: underline; } /* GLOBAL DEFAULTS */ p, ol, ul, dl { margin: .2em 0 .8em 0; } p { padding: 0; line-height: 140%; } h1,h2,h3,h4,h5 { font-weight: bold; } h1 { margin: 0 0 20px; font-weight: 300; font-size: 20px; color: #666; } h2 { font-size: 16px; margin: 1em 0 .5em 0; } h2.subhead { font-weight: normal; margin-top: 0; } h3 { font-size: 14px; margin: .8em 0 .3em 0; color: #666; font-weight: bold; } h4 { font-size: 12px; margin: 1em 0 .8em 0; padding-bottom: 3px; } h5 { font-size: 10px; margin: 1.5em 0 .5em 0; color: #666; text-transform: uppercase; letter-spacing: 1px; } ul li { list-style-type: square; padding: 1px 0; } li ul { margin-bottom: 0; } li, dt, dd { font-size: 13px; line-height: 20px; } dt { font-weight: bold; margin-top: 4px; } dd { margin-left: 0; } form { margin: 0; padding: 0; } fieldset { margin: 0; padding: 0; border: none; border-top: 1px solid #eee; } blockquote { font-size: 11px; color: #777; margin-left: 2px; padding-left: 10px; border-left: 5px solid #ddd; } code, pre { font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace; color: #666; font-size: 12px; } pre.literal-block { margin: 10px; background: #eee; padding: 6px 8px; } code strong { color: #930; } hr { clear: both; color: #eee; background-color: #eee; height: 1px; border: none; margin: 0; padding: 0; font-size: 1px; line-height: 1px; } /* TEXT STYLES & MODIFIERS */ .small { font-size: 11px; } .tiny { font-size: 10px; } p.tiny { margin-top: -2px; } .mini { font-size: 10px; } p.mini { margin-top: -3px; } .help, p.help, form p.help, div.help, form div.help, div.help li { font-size: 11px; color: #999; } div.help ul { margin-bottom: 0; } .help-tooltip { cursor: help; } p img, h1 img, h2 img, h3 img, h4 img, td img { vertical-align: middle; } .quiet, a.quiet:link, a.quiet:visited { color: #999; font-weight: normal; } .float-right { float: right; } .float-left { float: left; } .clear { clear: both; } .align-left { text-align: left; } .align-right { text-align: right; } .example { margin: 10px 0; padding: 5px 10px; background: #efefef; } .nowrap { white-space: nowrap; } /* TABLES */ table { border-collapse: collapse; border-color: #ccc; } td, th { font-size: 13px; line-height: 16px; border-bottom: 1px solid #eee; vertical-align: top; padding: 8px; font-family: "Roboto", "Lucida Grande", Verdana, Arial, sans-serif; } th { font-weight: 600; text-align: left; } thead th, tfoot td { color: #666; padding: 5px 10px; font-size: 11px; background: #fff; border: none; border-top: 1px solid #eee; border-bottom: 1px solid #eee; } tfoot td { border-bottom: none; border-top: 1px solid #eee; } thead th.required { color: #000; } tr.alt { background: #f6f6f6; } .row1 { background: #fff; } .row2 { background: #f9f9f9; } /* SORTABLE TABLES */ thead th { padding: 5px 10px; line-height: normal; text-transform: uppercase; background: #f6f6f6; } thead th a:link, thead th a:visited { color: #666; } thead th.sorted { background: #eee; } thead th.sorted .text { padding-right: 42px; } table thead th .text span { padding: 8px 10px; display: block; } table thead th .text a { display: block; cursor: pointer; padding: 8px 10px; } table thead th .text a:focus, table thead th .text a:hover { background: #eee; } thead th.sorted a.sortremove { visibility: hidden; } table thead th.sorted:hover a.sortremove { visibility: visible; } table thead th.sorted .sortoptions { display: block; padding: 9px 5px 0 5px; float: right; text-align: right; } table thead th.sorted .sortpriority { font-size: .8em; min-width: 12px; text-align: center; vertical-align: 3px; margin-left: 2px; margin-right: 2px; } table thead th.sorted .sortoptions a { position: relative; width: 14px; height: 14px; display: inline-block; background: url(../img/sorting-icons.svg) 0 0 no-repeat; background-size: 14px auto; } table thead th.sorted .sortoptions a.sortremove { background-position: 0 0; } table thead th.sorted .sortoptions a.sortremove:after { content: '\\'; position: absolute; top: -6px; left: 3px; font-weight: 200; font-size: 18px; color: #999; } table thead th.sorted .sortoptions a.sortremove:focus:after, table thead th.sorted .sortoptions a.sortremove:hover:after { color: #447e9b; } table thead th.sorted .sortoptions a.sortremove:focus, table thead th.sorted .sortoptions a.sortremove:hover { background-position: 0 -14px; } table thead th.sorted .sortoptions a.ascending { background-position: 0 -28px; } table thead th.sorted .sortoptions a.ascending:focus, table thead th.sorted .sortoptions a.ascending:hover { background-position: 0 -42px; } table thead th.sorted .sortoptions a.descending { top: 1px; background-position: 0 -56px; } table thead th.sorted .sortoptions a.descending:focus, table thead th.sorted .sortoptions a.descending:hover { background-position: 0 -70px; } /* FORM DEFAULTS */ input, textarea, select, .form-row p, form .button { margin: 2px 0; padding: 2px 3px; vertical-align: middle; font-family: "Roboto", "Lucida Grande", Verdana, Arial, sans-serif; font-weight: normal; font-size: 13px; } .form-row div.help { padding: 2px 3px; } textarea { vertical-align: top; } input[type=text], input[type=password], input[type=email], input[type=url], input[type=number], input[type=tel], textarea, select, .vTextField { border: 1px solid #ccc; border-radius: 4px; padding: 5px 6px; margin-top: 0; } input[type=text]:focus, input[type=password]:focus, input[type=email]:focus, input[type=url]:focus, input[type=number]:focus, input[type=tel]:focus, textarea:focus, select:focus, .vTextField:focus { border-color: #999; } select { height: 30px; } select[multiple] { /* Allow HTML size attribute to override the height in the rule above. */ height: auto; min-height: 150px; } /* FORM BUTTONS */ .button, input[type=submit], input[type=button], .submit-row input, a.button { background: #79aec8; padding: 10px 15px; border: none; border-radius: 4px; color: #fff; cursor: pointer; } a.button { padding: 4px 5px; } .button:active, input[type=submit]:active, input[type=button]:active, .button:focus, input[type=submit]:focus, input[type=button]:focus, .button:hover, input[type=submit]:hover, input[type=button]:hover { background: #609ab6; } .button[disabled], input[type=submit][disabled], input[type=button][disabled] { opacity: 0.4; } .button.default, input[type=submit].default, .submit-row input.default { float: right; border: none; font-weight: 400; background: #417690; } .button.default:active, input[type=submit].default:active, .button.default:focus, input[type=submit].default:focus, .button.default:hover, input[type=submit].default:hover { background: #205067; } .button[disabled].default, input[type=submit][disabled].default, input[type=button][disabled].default { opacity: 0.4; } /* MODULES */ .module { border: none; margin-bottom: 30px; background: #fff; } .module p, .module ul, .module h3, .module h4, .module dl, .module pre { padding-left: 10px; padding-right: 10px; } .module blockquote { margin-left: 12px; } .module ul, .module ol { margin-left: 1.5em; } .module h3 { margin-top: .6em; } .module h2, .module caption, .inline-group h2 { margin: 0; padding: 8px; font-weight: 400; font-size: 13px; text-align: left; background: #79aec8; color: #fff; } .module caption, .inline-group h2 { font-size: 12px; letter-spacing: 0.5px; text-transform: uppercase; } .module table { border-collapse: collapse; } /* MESSAGES & ERRORS */ ul.messagelist { padding: 0; margin: 0; } ul.messagelist li { display: block; font-weight: 400; font-size: 13px; padding: 10px 10px 10px 65px; margin: 0 0 10px 0; background: #dfd url(../img/icon-yes.svg) 40px 12px no-repeat; background-size: 16px auto; color: #333; } ul.messagelist li.warning { background: #ffc url(../img/icon-alert.svg) 40px 14px no-repeat; background-size: 14px auto; } ul.messagelist li.error { background: #ffefef url(../img/icon-no.svg) 40px 12px no-repeat; background-size: 16px auto; } .errornote { font-size: 14px; font-weight: 700; display: block; padding: 10px 12px; margin: 0 0 10px 0; color: #ba2121; border: 1px solid #ba2121; border-radius: 4px; background-color: #fff; background-position: 5px 12px; } ul.errorlist { margin: 0 0 4px; padding: 0; color: #ba2121; background: #fff; } ul.errorlist li { font-size: 13px; display: block; margin-bottom: 4px; } ul.errorlist li:first-child { margin-top: 0; } ul.errorlist li a { color: inherit; text-decoration: underline; } td ul.errorlist { margin: 0; padding: 0; } td ul.errorlist li { margin: 0; } .form-row.errors { margin: 0; border: none; border-bottom: 1px solid #eee; background: none; } .form-row.errors ul.errorlist li { padding-left: 0; } .errors input, .errors select, .errors textarea { border: 1px solid #ba2121; } div.system-message { background: #ffc; margin: 10px; padding: 6px 8px; font-size: .8em; } div.system-message p.system-message-title { padding: 4px 5px 4px 25px; margin: 0; color: #c11; background: #ffefef url(../img/icon-no.svg) 5px 5px no-repeat; } .description { font-size: 12px; padding: 5px 0 0 12px; } /* BREADCRUMBS */ div.breadcrumbs { background: #79aec8; padding: 10px 40px; border: none; font-size: 14px; color: #c4dce8; text-align: left; } div.breadcrumbs a { color: #fff; } div.breadcrumbs a:focus, div.breadcrumbs a:hover { color: #c4dce8; } /* ACTION ICONS */ .viewlink, .inlineviewlink { padding-left: 16px; background: url(../img/icon-viewlink.svg) 0 1px no-repeat; } .addlink { padding-left: 16px; background: url(../img/icon-addlink.svg) 0 1px no-repeat; } .changelink, .inlinechangelink { padding-left: 16px; background: url(../img/icon-changelink.svg) 0 1px no-repeat; } .deletelink { padding-left: 16px; background: url(../img/icon-deletelink.svg) 0 1px no-repeat; } a.deletelink:link, a.deletelink:visited { color: #CC3434; } a.deletelink:focus, a.deletelink:hover { color: #993333; text-decoration: none; } /* OBJECT TOOLS */ .object-tools { font-size: 10px; font-weight: bold; padding-left: 0; float: right; position: relative; margin-top: -48px; } .form-row .object-tools { margin-top: 5px; margin-bottom: 5px; float: none; height: 2em; padding-left: 3.5em; } .object-tools li { display: block; float: left; margin-left: 5px; height: 16px; } .object-tools a { border-radius: 15px; } .object-tools a:link, .object-tools a:visited { display: block; float: left; padding: 3px 12px; background: #999; font-weight: 400; font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px; color: #fff; } .object-tools a:focus, .object-tools a:hover { background-color: #417690; } .object-tools a:focus{ text-decoration: none; } .object-tools a.viewsitelink, .object-tools a.golink,.object-tools a.addlink { background-repeat: no-repeat; background-position: right 7px center; padding-right: 26px; } .object-tools a.viewsitelink, .object-tools a.golink { background-image: url(../img/tooltag-arrowright.svg); } .object-tools a.addlink { background-image: url(../img/tooltag-add.svg); } /* OBJECT HISTORY */ table#change-history { width: 100%; } table#change-history tbody th { width: 16em; } /* PAGE STRUCTURE */ #container { position: relative; width: 100%; min-width: 980px; padding: 0; } #content { padding: 20px 40px; } .dashboard #content { width: 600px; } #content-main { float: left; width: 100%; } #content-related { float: right; width: 260px; position: relative; margin-right: -300px; } #footer { clear: both; padding: 10px; } /* COLUMN TYPES */ .colMS { margin-right: 300px; } .colSM { margin-left: 300px; } .colSM #content-related { float: left; margin-right: 0; margin-left: -300px; } .colSM #content-main { float: right; } .popup .colM { width: auto; } /* HEADER */ #header { width: auto; height: auto; display: flex; justify-content: space-between; align-items: center; padding: 10px 40px; background: #417690; color: #ffc; overflow: hidden; } #header a:link, #header a:visited { color: #fff; } #header a:focus , #header a:hover { text-decoration: underline; } #branding { float: left; } #branding h1 { padding: 0; margin: 0 20px 0 0; font-weight: 300; font-size: 24px; color: #f5dd5d; } #branding h1, #branding h1 a:link, #branding h1 a:visited { color: #f5dd5d; } #branding h2 { padding: 0 10px; font-size: 14px; margin: -8px 0 8px 0; font-weight: normal; color: #ffc; } #branding a:hover { text-decoration: none; } #user-tools { float: right; padding: 0; margin: 0 0 0 20px; font-weight: 300; font-size: 11px; letter-spacing: 0.5px; text-transform: uppercase; text-align: right; } #user-tools a { border-bottom: 1px solid rgba(255, 255, 255, 0.25); } #user-tools a:focus, #user-tools a:hover { text-decoration: none; border-bottom-color: #79aec8; color: #79aec8; } /* SIDEBAR */ #content-related { background: #f8f8f8; } #content-related .module { background: none; } #content-related h3 { font-size: 14px; color: #666; padding: 0 16px; margin: 0 0 16px; } #content-related h4 { font-size: 13px; } #content-related p { padding-left: 16px; padding-right: 16px; } #content-related .actionlist { padding: 0; margin: 16px; } #content-related .actionlist li { line-height: 1.2; margin-bottom: 10px; padding-left: 18px; } #content-related .module h2 { background: none; padding: 16px; margin-bottom: 16px; border-bottom: 1px solid #eaeaea; font-size: 18px; color: #333; } .delete-confirmation form input[type="submit"] { background: #ba2121; border-radius: 4px; padding: 10px 15px; color: #fff; } .delete-confirmation form input[type="submit"]:active, .delete-confirmation form input[type="submit"]:focus, .delete-confirmation form input[type="submit"]:hover { background: #a41515; } .delete-confirmation form .cancel-link { display: inline-block; vertical-align: middle; height: 15px; line-height: 15px; background: #ddd; border-radius: 4px; padding: 10px 15px; color: #333; margin: 0 0 0 10px; } .delete-confirmation form .cancel-link:active, .delete-confirmation form .cancel-link:focus, .delete-confirmation form .cancel-link:hover { background: #ccc; } /* POPUP */ .popup #content { padding: 20px; } .popup #container { min-width: 0; } .popup #header { padding: 10px 20px; } ================================================ FILE: static/admin/css/changelists.css ================================================ /* CHANGELISTS */ #changelist { position: relative; width: 100%; } #changelist table { width: 100%; } .change-list .hiddenfields { display:none; } .change-list .filtered table { border-right: none; } .change-list .filtered { min-height: 400px; } .change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull { margin-right: 280px; width: auto; } .change-list .filtered table tbody th { padding-right: 1em; } #changelist-form .results { overflow-x: auto; } #changelist .toplinks { border-bottom: 1px solid #ddd; } #changelist .paginator { color: #666; border-bottom: 1px solid #eee; background: #fff; overflow: hidden; } /* CHANGELIST TABLES */ #changelist table thead th { padding: 0; white-space: nowrap; vertical-align: middle; } #changelist table thead th.action-checkbox-column { width: 1.5em; text-align: center; } #changelist table tbody td.action-checkbox { text-align: center; } #changelist table tfoot { color: #666; } /* TOOLBAR */ #changelist #toolbar { padding: 8px 10px; margin-bottom: 15px; border-top: 1px solid #eee; border-bottom: 1px solid #eee; background: #f8f8f8; color: #666; } #changelist #toolbar form input { border-radius: 4px; font-size: 14px; padding: 5px; color: #333; } #changelist #toolbar form #searchbar { height: 19px; border: 1px solid #ccc; padding: 2px 5px; margin: 0; vertical-align: top; font-size: 13px; } #changelist #toolbar form #searchbar:focus { border-color: #999; } #changelist #toolbar form input[type="submit"] { border: 1px solid #ccc; padding: 2px 10px; margin: 0; vertical-align: middle; background: #fff; box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; cursor: pointer; color: #333; } #changelist #toolbar form input[type="submit"]:focus, #changelist #toolbar form input[type="submit"]:hover { border-color: #999; } #changelist #changelist-search img { vertical-align: middle; margin-right: 4px; } /* FILTER COLUMN */ #changelist-filter { position: absolute; top: 0; right: 0; z-index: 1000; width: 240px; background: #f8f8f8; border-left: none; margin: 0; } #changelist-filter h2 { font-size: 14px; text-transform: uppercase; letter-spacing: 0.5px; padding: 5px 15px; margin-bottom: 12px; border-bottom: none; } #changelist-filter h3 { font-weight: 400; font-size: 14px; padding: 0 15px; margin-bottom: 10px; } #changelist-filter ul { margin: 5px 0; padding: 0 15px 15px; border-bottom: 1px solid #eaeaea; } #changelist-filter ul:last-child { border-bottom: none; padding-bottom: none; } #changelist-filter li { list-style-type: none; margin-left: 0; padding-left: 0; } #changelist-filter a { display: block; color: #999; text-overflow: ellipsis; overflow-x: hidden; } #changelist-filter li.selected { border-left: 5px solid #eaeaea; padding-left: 10px; margin-left: -15px; } #changelist-filter li.selected a { color: #5b80b2; } #changelist-filter a:focus, #changelist-filter a:hover, #changelist-filter li.selected a:focus, #changelist-filter li.selected a:hover { color: #036; } /* DATE DRILLDOWN */ .change-list ul.toplinks { display: block; float: left; padding: 0; margin: 0; width: 100%; } .change-list ul.toplinks li { padding: 3px 6px; font-weight: bold; list-style-type: none; display: inline-block; } .change-list ul.toplinks .date-back a { color: #999; } .change-list ul.toplinks .date-back a:focus, .change-list ul.toplinks .date-back a:hover { color: #036; } /* PAGINATOR */ .paginator { font-size: 13px; padding-top: 10px; padding-bottom: 10px; line-height: 22px; margin: 0; border-top: 1px solid #ddd; } .paginator a:link, .paginator a:visited { padding: 2px 6px; background: #79aec8; text-decoration: none; color: #fff; } .paginator a.showall { padding: 0; border: none; background: none; color: #5b80b2; } .paginator a.showall:focus, .paginator a.showall:hover { background: none; color: #036; } .paginator .end { margin-right: 6px; } .paginator .this-page { padding: 2px 6px; font-weight: bold; font-size: 13px; vertical-align: top; } .paginator a:focus, .paginator a:hover { color: white; background: #036; } /* ACTIONS */ .filtered .actions { margin-right: 280px; border-right: none; } #changelist table input { margin: 0; vertical-align: baseline; } #changelist table tbody tr.selected { background-color: #FFFFCC; } #changelist .actions { padding: 10px; background: #fff; border-top: none; border-bottom: none; line-height: 24px; color: #999; } #changelist .actions.selected { background: #fffccf; border-top: 1px solid #fffee8; border-bottom: 1px solid #edecd6; } #changelist .actions span.all, #changelist .actions span.action-counter, #changelist .actions span.clear, #changelist .actions span.question { font-size: 13px; margin: 0 0.5em; display: none; } #changelist .actions:last-child { border-bottom: none; } #changelist .actions select { vertical-align: top; height: 24px; background: none; color: #000; border: 1px solid #ccc; border-radius: 4px; font-size: 14px; padding: 0 0 0 4px; margin: 0; margin-left: 10px; } #changelist .actions select:focus { border-color: #999; } #changelist .actions label { display: inline-block; vertical-align: middle; font-size: 13px; } #changelist .actions .button { font-size: 13px; border: 1px solid #ccc; border-radius: 4px; background: #fff; box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; cursor: pointer; height: 24px; line-height: 1; padding: 4px 8px; margin: 0; color: #333; } #changelist .actions .button:focus, #changelist .actions .button:hover { border-color: #999; } ================================================ FILE: static/admin/css/dashboard.css ================================================ /* DASHBOARD */ .dashboard .module table th { width: 100%; } .dashboard .module table td { white-space: nowrap; } .dashboard .module table td a { display: block; padding-right: .6em; } /* RECENT ACTIONS MODULE */ .module ul.actionlist { margin-left: 0; } ul.actionlist li { list-style-type: none; overflow: hidden; text-overflow: ellipsis; -o-text-overflow: ellipsis; } ================================================ FILE: static/admin/css/fonts.css ================================================ @font-face { font-family: 'Roboto'; src: url('../fonts/Roboto-Bold-webfont.woff'); font-weight: 700; font-style: normal; } @font-face { font-family: 'Roboto'; src: url('../fonts/Roboto-Regular-webfont.woff'); font-weight: 400; font-style: normal; } @font-face { font-family: 'Roboto'; src: url('../fonts/Roboto-Light-webfont.woff'); font-weight: 300; font-style: normal; } ================================================ FILE: static/admin/css/forms.css ================================================ @import url('widgets.css'); /* FORM ROWS */ .form-row { overflow: hidden; padding: 10px; font-size: 13px; border-bottom: 1px solid #eee; } .form-row img, .form-row input { vertical-align: middle; } .form-row label input[type="checkbox"] { margin-top: 0; vertical-align: 0; } form .form-row p { padding-left: 0; } .hidden { display: none; } /* FORM LABELS */ label { font-weight: normal; color: #666; font-size: 13px; } .required label, label.required { font-weight: bold; color: #333; } /* RADIO BUTTONS */ form ul.radiolist li { list-style-type: none; } form ul.radiolist label { float: none; display: inline; } form ul.radiolist input[type="radio"] { margin: -2px 4px 0 0; padding: 0; } form ul.inline { margin-left: 0; padding: 0; } form ul.inline li { float: left; padding-right: 7px; } /* ALIGNED FIELDSETS */ .aligned label { display: block; padding: 4px 10px 0 0; float: left; width: 160px; word-wrap: break-word; line-height: 1; } .aligned label:not(.vCheckboxLabel):after { content: ''; display: inline-block; vertical-align: middle; height: 26px; } .aligned label + p, .aligned label + div.help, .aligned label + div.readonly { padding: 6px 0; margin-top: 0; margin-bottom: 0; margin-left: 170px; } .aligned ul label { display: inline; float: none; width: auto; } .aligned .form-row input { margin-bottom: 0; } .colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField { width: 350px; } form .aligned ul { margin-left: 160px; padding-left: 10px; } form .aligned ul.radiolist { display: inline-block; margin: 0; padding: 0; } form .aligned p.help, form .aligned div.help { clear: left; margin-top: 0; margin-left: 160px; padding-left: 10px; } form .aligned label + p.help, form .aligned label + div.help { margin-left: 0; padding-left: 0; } form .aligned p.help:last-child, form .aligned div.help:last-child { margin-bottom: 0; padding-bottom: 0; } form .aligned input + p.help, form .aligned textarea + p.help, form .aligned select + p.help, form .aligned input + div.help, form .aligned textarea + div.help, form .aligned select + div.help { margin-left: 160px; padding-left: 10px; } form .aligned ul li { list-style: none; } form .aligned table p { margin-left: 0; padding-left: 0; } .aligned .vCheckboxLabel { float: none; width: auto; display: inline-block; vertical-align: -3px; padding: 0 0 5px 5px; } .aligned .vCheckboxLabel + p.help, .aligned .vCheckboxLabel + div.help { margin-top: -4px; } .colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { width: 610px; } .checkbox-row p.help, .checkbox-row div.help { margin-left: 0; padding-left: 0; } fieldset .fieldBox { float: left; margin-right: 20px; } /* WIDE FIELDSETS */ .wide label { width: 200px; } form .wide p, form .wide input + p.help, form .wide input + div.help { margin-left: 200px; } form .wide p.help, form .wide div.help { padding-left: 38px; } form div.help ul { padding-left: 0; margin-left: 0; } .colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField { width: 450px; } /* COLLAPSED FIELDSETS */ fieldset.collapsed * { display: none; } fieldset.collapsed h2, fieldset.collapsed { display: block; } fieldset.collapsed { border: 1px solid #eee; border-radius: 4px; overflow: hidden; } fieldset.collapsed h2 { background: #f8f8f8; color: #666; } fieldset .collapse-toggle { color: #fff; } fieldset.collapsed .collapse-toggle { background: transparent; display: inline; color: #447e9b; } /* MONOSPACE TEXTAREAS */ fieldset.monospace textarea { font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace; } /* SUBMIT ROW */ .submit-row { padding: 12px 14px; margin: 0 0 20px; background: #f8f8f8; border: 1px solid #eee; border-radius: 4px; text-align: right; overflow: hidden; } body.popup .submit-row { overflow: auto; } .submit-row input { height: 35px; line-height: 15px; margin: 0 0 0 5px; } .submit-row input.default { margin: 0 0 0 8px; text-transform: uppercase; } .submit-row p { margin: 0.3em; } .submit-row p.deletelink-box { float: left; margin: 0; } .submit-row a.deletelink { display: block; background: #ba2121; border-radius: 4px; padding: 10px 15px; height: 15px; line-height: 15px; color: #fff; } .submit-row a.closelink { display: inline-block; background: #bbbbbb; border-radius: 4px; padding: 10px 15px; height: 15px; line-height: 15px; margin: 0 0 0 5px; color: #fff; } .submit-row a.deletelink:focus, .submit-row a.deletelink:hover, .submit-row a.deletelink:active { background: #a41515; } .submit-row a.closelink:focus, .submit-row a.closelink:hover, .submit-row a.closelink:active { background: #aaaaaa; } /* CUSTOM FORM FIELDS */ .vSelectMultipleField { vertical-align: top; } .vCheckboxField { border: none; } .vDateField, .vTimeField { margin-right: 2px; margin-bottom: 4px; } .vDateField { min-width: 6.85em; } .vTimeField { min-width: 4.7em; } .vURLField { width: 30em; } .vLargeTextField, .vXMLLargeTextField { width: 48em; } .flatpages-flatpage #id_content { height: 40.2em; } .module table .vPositiveSmallIntegerField { width: 2.2em; } .vTextField, .vUUIDField { width: 20em; } .vIntegerField { width: 5em; } .vBigIntegerField { width: 10em; } .vForeignKeyRawIdAdminField { width: 5em; } /* INLINES */ .inline-group { padding: 0; margin: 0 0 30px; } .inline-group thead th { padding: 8px 10px; } .inline-group .aligned label { width: 160px; } .inline-related { position: relative; } .inline-related h3 { margin: 0; color: #666; padding: 5px; font-size: 13px; background: #f8f8f8; border-top: 1px solid #eee; border-bottom: 1px solid #eee; } .inline-related h3 span.delete { float: right; } .inline-related h3 span.delete label { margin-left: 2px; font-size: 11px; } .inline-related fieldset { margin: 0; background: #fff; border: none; width: 100%; } .inline-related fieldset.module h3 { margin: 0; padding: 2px 5px 3px 5px; font-size: 11px; text-align: left; font-weight: bold; background: #bcd; color: #fff; } .inline-group .tabular fieldset.module { border: none; } .inline-related.tabular fieldset.module table { width: 100%; } .last-related fieldset { border: none; } .inline-group .tabular tr.has_original td { padding-top: 2em; } .inline-group .tabular tr td.original { padding: 2px 0 0 0; width: 0; _position: relative; } .inline-group .tabular th.original { width: 0px; padding: 0; } .inline-group .tabular td.original p { position: absolute; left: 0; height: 1.1em; padding: 2px 9px; overflow: hidden; font-size: 9px; font-weight: bold; color: #666; _width: 700px; } .inline-group ul.tools { padding: 0; margin: 0; list-style: none; } .inline-group ul.tools li { display: inline; padding: 0 5px; } .inline-group div.add-row, .inline-group .tabular tr.add-row td { color: #666; background: #f8f8f8; padding: 8px 10px; border-bottom: 1px solid #eee; } .inline-group .tabular tr.add-row td { padding: 8px 10px; border-bottom: 1px solid #eee; } .inline-group ul.tools a.add, .inline-group div.add-row a, .inline-group .tabular tr.add-row td a { background: url(../img/icon-addlink.svg) 0 1px no-repeat; padding-left: 16px; font-size: 12px; } .empty-form { display: none; } /* RELATED FIELD ADD ONE / LOOKUP */ .add-another, .related-lookup { margin-left: 5px; display: inline-block; vertical-align: middle; background-repeat: no-repeat; background-size: 14px; } .add-another { width: 16px; height: 16px; background-image: url(../img/icon-addlink.svg); } .related-lookup { width: 16px; height: 16px; background-image: url(../img/search.svg); } form .related-widget-wrapper ul { display: inline-block; margin-left: 0; padding-left: 0; } .clearable-file-input input { margin-top: 0; } ================================================ FILE: static/admin/css/login.css ================================================ /* LOGIN FORM */ body.login { background: #f8f8f8; } .login #header { height: auto; padding: 15px 16px; justify-content: center; } .login #header h1 { font-size: 18px; } .login #header h1 a { color: #fff; } .login #content { padding: 20px 20px 0; } .login #container { background: #fff; border: 1px solid #eaeaea; border-radius: 4px; overflow: hidden; width: 28em; min-width: 300px; margin: 100px auto; } .login #content-main { width: 100%; } .login .form-row { padding: 4px 0; float: left; width: 100%; border-bottom: none; } .login .form-row label { padding-right: 0.5em; line-height: 2em; font-size: 1em; clear: both; color: #333; } .login .form-row #id_username, .login .form-row #id_password { clear: both; padding: 8px; width: 100%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .login span.help { font-size: 10px; display: block; } .login .submit-row { clear: both; padding: 1em 0 0 9.4em; margin: 0; border: none; background: none; text-align: left; } .login .password-reset-link { text-align: center; } ================================================ FILE: static/admin/css/responsive.css ================================================ /* Tablets */ input[type="submit"], button { -webkit-appearance: none; appearance: none; } @media (max-width: 1024px) { /* Basic */ html { -webkit-text-size-adjust: 100%; } td, th { padding: 10px; font-size: 14px; } .small { font-size: 12px; } /* Layout */ #container { min-width: 0; } #content { padding: 20px 30px 30px; } div.breadcrumbs { padding: 10px 30px; } /* Header */ #header { flex-direction: column; padding: 15px 30px; justify-content: flex-start; } #branding h1 { margin: 0 0 8px; font-size: 20px; line-height: 1.2; } #user-tools { margin: 0; font-weight: 400; line-height: 1.85; text-align: left; } #user-tools a { display: inline-block; line-height: 1.4; } /* Dashboard */ .dashboard #content { width: auto; } #content-related { margin-right: -290px; } .colSM #content-related { margin-left: -290px; } .colMS { margin-right: 290px; } .colSM { margin-left: 290px; } .dashboard .module table td a { padding-right: 0; } td .changelink, td .addlink { font-size: 13px; } /* Changelist */ #changelist #toolbar { border: none; padding: 15px; } #changelist-search > div { display: -webkit-flex; display: flex; -webkit-flex-wrap: wrap; flex-wrap: wrap; max-width: 480px; } #changelist-search label { line-height: 22px; } #changelist #toolbar form #searchbar { -webkit-flex: 1 0 auto; flex: 1 0 auto; width: 0; height: 22px; margin: 0 10px 0 6px; } #changelist-search .quiet { width: 100%; margin: 5px 0 0 25px; } #changelist .actions { display: flex; flex-wrap: wrap; padding: 15px 0; } #changelist .actions.selected { border: none; } #changelist .actions label { display: flex; } #changelist .actions select { background: #fff; } #changelist .actions .button { min-width: 48px; margin: 0 10px; } #changelist .actions span.all, #changelist .actions span.clear, #changelist .actions span.question, #changelist .actions span.action-counter { font-size: 11px; margin: 0 10px 0 0; } #changelist-filter { width: 200px; } .change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered .actions, .filtered div.xfull { margin-right: 230px; } #changelist .paginator { border-top-color: #eee; } #changelist .results + .paginator { border-top: none; } /* Forms */ label { font-size: 14px; } .form-row input[type=text], .form-row input[type=password], .form-row input[type=email], .form-row input[type=url], .form-row input[type=tel], .form-row input[type=number], .form-row textarea, .form-row select, .form-row .vTextField { box-sizing: border-box; margin: 0; padding: 6px 8px; min-height: 36px; font-size: 14px; } .form-row select { height: 36px; } .form-row select[multiple] { height: auto; min-height: 0; } fieldset .fieldBox { float: none; margin: 0 -10px; padding: 0 10px; } fieldset .fieldBox + .fieldBox { margin-top: 10px; padding-top: 10px; border-top: 1px solid #eee; } textarea { max-width: 518px; max-height: 120px; } .aligned label { padding-top: 6px; } .aligned .add-another, .aligned .related-lookup, .aligned .datetimeshortcuts, .aligned .related-lookup + strong { align-self: center; margin-left: 15px; } form .aligned ul.radiolist { margin-left: 2px; } /* Related widget */ .related-widget-wrapper { float: none; } .related-widget-wrapper-link + .selector { max-width: calc(100% - 30px); margin-right: 15px; } select + .related-widget-wrapper-link, .related-widget-wrapper-link + .related-widget-wrapper-link { margin-left: 10px; } /* Selector */ .selector { display: flex; width: 100%; } .selector .selector-filter { display: flex; align-items: center; } .selector .selector-filter label { margin: 0 8px 0 0; } .selector .selector-filter input { width: auto; min-height: 0; flex: 1 1; } .selector-available, .selector-chosen { width: auto; flex: 1 1; display: flex; flex-direction: column; } .selector select { width: 100%; flex: 1 0 auto; margin-bottom: 5px; } .selector ul.selector-chooser { width: 26px; height: 52px; padding: 2px 0; margin: auto 15px; border-radius: 20px; transform: translateY(-10px); } .selector-add, .selector-remove { width: 20px; height: 20px; background-size: 20px auto; } .selector-add { background-position: 0 -120px; } .selector-remove { background-position: 0 -80px; } a.selector-chooseall, a.selector-clearall { align-self: center; } .stacked { flex-direction: column; max-width: 480px; } .stacked > * { flex: 0 1 auto; } .stacked select { margin-bottom: 0; } .stacked .selector-available, .stacked .selector-chosen { width: auto; } .stacked ul.selector-chooser { width: 52px; height: 26px; padding: 0 2px; margin: 15px auto; transform: none; } .stacked .selector-chooser li { padding: 3px; } .stacked .selector-add, .stacked .selector-remove { background-size: 20px auto; } .stacked .selector-add { background-position: 0 -40px; } .stacked .active.selector-add { background-position: 0 -60px; } .stacked .selector-remove { background-position: 0 0; } .stacked .active.selector-remove { background-position: 0 -20px; } .help-tooltip, .selector .help-icon { display: none; } form .form-row p.datetime { width: 100%; } .datetime input { width: 50%; max-width: 120px; } .datetime span { font-size: 13px; } .datetime .timezonewarning { display: block; font-size: 11px; color: #999; } .datetimeshortcuts { color: #ccc; } .inline-group { overflow: auto; } /* Messages */ ul.messagelist li { padding-left: 55px; background-position: 30px 12px; } ul.messagelist li.error { background-position: 30px 12px; } ul.messagelist li.warning { background-position: 30px 14px; } /* Login */ .login #header { padding: 15px 20px; } .login #branding h1 { margin: 0; } /* GIS */ div.olMap { max-width: calc(100vw - 30px); max-height: 300px; } .olMap + .clear_features { display: block; margin-top: 10px; } /* Docs */ .module table.xfull { width: 100%; } pre.literal-block { overflow: auto; } } /* Mobile */ @media (max-width: 767px) { /* Layout */ #header, #content, #footer { padding: 15px; } #footer:empty { padding: 0; } div.breadcrumbs { padding: 10px 15px; } /* Dashboard */ .colMS, .colSM { margin: 0; } #content-related, .colSM #content-related { width: 100%; margin: 0; } #content-related .module { margin-bottom: 0; } #content-related .module h2 { padding: 10px 15px; font-size: 16px; } /* Changelist */ #changelist { display: flex; flex-direction: column; } #changelist #toolbar { order: 1; padding: 10px; } #changelist .xfull { order: 2; } #changelist-form { order: 3; } #changelist-filter { order: 4; } #changelist .actions label { flex: 1 1; } #changelist .actions select { flex: 1 0; width: 100%; } #changelist .actions span { flex: 1 0 100%; } .change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered .actions, .filtered div.xfull { margin-right: 0; } #changelist-filter { position: static; width: auto; margin-top: 30px; } .object-tools { float: none; margin: 0 0 15px; padding: 0; overflow: hidden; } .object-tools li { height: auto; margin-left: 0; } .object-tools li + li { margin-left: 15px; } /* Forms */ .form-row { padding: 15px 0; } .aligned .form-row, .aligned .form-row > div { display: flex; flex-wrap: wrap; max-width: 100vw; } .aligned .form-row > div { width: calc(100vw - 30px); } textarea { max-width: none; } .vURLField { width: auto; } fieldset .fieldBox + .fieldBox { margin-top: 15px; padding-top: 15px; } fieldset.collapsed .form-row { display: none; } .aligned label { width: 100%; padding: 0 0 10px; } .aligned label:after { max-height: 0; } .aligned .form-row input, .aligned .form-row select, .aligned .form-row textarea { flex: 1 1 auto; max-width: 100%; } .aligned .checkbox-row { align-items: center; } .aligned .checkbox-row input { flex: 0 1 auto; margin: 0; } .aligned .vCheckboxLabel { flex: 1 0; padding: 1px 0 0 5px; } .aligned label + p, .aligned label + div.help, .aligned label + div.readonly { padding: 0; margin-left: 0; } .aligned p.file-upload { margin-left: 0; font-size: 13px; } span.clearable-file-input { margin-left: 15px; } span.clearable-file-input label { font-size: 13px; padding-bottom: 0; } .aligned .timezonewarning { flex: 1 0 100%; margin-top: 5px; } form .aligned .form-row div.help { width: 100%; margin: 5px 0 0; padding: 0; } form .aligned ul { margin-left: 0; padding-left: 0; } form .aligned ul.radiolist { margin-right: 15px; margin-bottom: -3px; } form .aligned ul.radiolist li + li { margin-top: 5px; } /* Related widget */ .related-widget-wrapper { width: 100%; display: flex; align-items: flex-start; } .related-widget-wrapper .selector { order: 1; } .related-widget-wrapper > a { order: 2; } .related-widget-wrapper .radiolist ~ a { align-self: flex-end; } .related-widget-wrapper > select ~ a { align-self: center; } select + .related-widget-wrapper-link, .related-widget-wrapper-link + .related-widget-wrapper-link { margin-left: 15px; } /* Selector */ .selector { flex-direction: column; } .selector > * { float: none; } .selector-available, .selector-chosen { margin-bottom: 0; flex: 1 1 auto; } .selector select { max-height: 96px; } .selector ul.selector-chooser { display: block; float: none; width: 52px; height: 26px; padding: 0 2px; margin: 15px auto 20px; transform: none; } .selector ul.selector-chooser li { float: left; } .selector-remove { background-position: 0 0; } .selector-add { background-position: 0 -40px; } /* Inlines */ .inline-group[data-inline-type="stacked"] .inline-related { border: 2px solid #eee; border-radius: 4px; margin-top: 15px; overflow: auto; } .inline-group[data-inline-type="stacked"] .inline-related > * { box-sizing: border-box; } .inline-group[data-inline-type="stacked"] .inline-related + .inline-related { margin-top: 30px; } .inline-group[data-inline-type="stacked"] .inline-related .module { padding: 0 10px; } .inline-group[data-inline-type="stacked"] .inline-related .module .form-row:last-child { border-bottom: none; } .inline-group[data-inline-type="stacked"] .inline-related h3 { padding: 10px; border-top-width: 0; border-bottom-width: 2px; display: flex; flex-wrap: wrap; align-items: center; } .inline-group[data-inline-type="stacked"] .inline-related h3 .inline_label { margin-right: auto; } .inline-group[data-inline-type="stacked"] .inline-related h3 span.delete { float: none; flex: 1 1 100%; margin-top: 5px; } .inline-group[data-inline-type="stacked"] .aligned .form-row > div:not([class]) { width: 100%; } .inline-group[data-inline-type="stacked"] .aligned label { width: 100%; } .inline-group[data-inline-type="stacked"] div.add-row { margin-top: 15px; border: 1px solid #eee; border-radius: 4px; } .inline-group div.add-row, .inline-group .tabular tr.add-row td { padding: 0; } .inline-group div.add-row a, .inline-group .tabular tr.add-row td a { display: block; padding: 8px 10px 8px 26px; background-position: 8px 9px; } /* Submit row */ .submit-row { padding: 10px 10px 0; margin: 0 0 15px; display: flex; flex-direction: column; } .submit-row > * { width: 100%; } .submit-row input, .submit-row input.default, .submit-row a, .submit-row a.closelink { float: none; margin: 0 0 10px; text-align: center; } .submit-row a.closelink { padding: 10px 0; } .submit-row p.deletelink-box { order: 4; } /* Messages */ ul.messagelist li { padding-left: 40px; background-position: 15px 12px; } ul.messagelist li.error { background-position: 15px 12px; } ul.messagelist li.warning { background-position: 15px 14px; } /* Paginator */ .paginator .this-page, .paginator a:link, .paginator a:visited { padding: 4px 10px; } /* Login */ body.login { padding: 0 15px; } .login #container { width: auto; max-width: 480px; margin: 50px auto; } .login #header, .login #content { padding: 15px; } .login #content-main { float: none; } .login .form-row { padding: 0; } .login .form-row + .form-row { margin-top: 15px; } .login .form-row label { display: block; margin: 0 0 5px; padding: 0; line-height: 1.2; } .login .submit-row { padding: 15px 0 0; } .login br, .login .submit-row label { display: none; } .login .submit-row input { margin: 0; text-transform: uppercase; } .errornote { margin: 0 0 20px; padding: 8px 12px; font-size: 13px; } /* Calendar and clock */ .calendarbox, .clockbox { position: fixed !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%); margin: 0; border: none; overflow: visible; } .calendarbox:before, .clockbox:before { content: ''; position: fixed; top: 50%; left: 50%; width: 100vw; height: 100vh; background: rgba(0, 0, 0, 0.75); transform: translate(-50%, -50%); } .calendarbox > *, .clockbox > * { position: relative; z-index: 1; } .calendarbox > div:first-child { z-index: 2; } .calendarbox .calendar, .clockbox h2 { border-radius: 4px 4px 0 0; overflow: hidden; } .calendarbox .calendar-cancel, .clockbox .calendar-cancel { border-radius: 0 0 4px 4px; overflow: hidden; } .calendar-shortcuts { padding: 10px 0; font-size: 12px; line-height: 12px; } .calendar-shortcuts a { margin: 0 4px; } .timelist a { background: #fff; padding: 4px; } .calendar-cancel { padding: 8px 10px; } .clockbox h2 { padding: 8px 15px; } .calendar caption { padding: 10px; } .calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { z-index: 1; top: 10px; } /* History */ table#change-history tbody th, table#change-history tbody td { font-size: 13px; word-break: break-word; } table#change-history tbody th { width: auto; } /* Docs */ table.model tbody th, table.model tbody td { font-size: 13px; word-break: break-word; } } ================================================ FILE: static/admin/css/responsive_rtl.css ================================================ /* TABLETS */ @media (max-width: 1024px) { [dir="rtl"] .colMS { margin-right: 0; } [dir="rtl"] #user-tools { text-align: right; } [dir="rtl"] #changelist .actions label { padding-left: 10px; padding-right: 0; } [dir="rtl"] #changelist .actions select { margin-left: 0; margin-right: 15px; } [dir="rtl"] .change-list .filtered .results, [dir="rtl"] .change-list .filtered .paginator, [dir="rtl"] .filtered #toolbar, [dir="rtl"] .filtered div.xfull, [dir="rtl"] .filtered .actions { margin-right: 0; margin-left: 230px; } [dir="rtl"] .inline-group ul.tools a.add, [dir="rtl"] .inline-group div.add-row a, [dir="rtl"] .inline-group .tabular tr.add-row td a { padding: 8px 26px 8px 10px; background-position: calc(100% - 8px) 9px; } [dir="rtl"] .related-widget-wrapper-link + .selector { margin-right: 0; margin-left: 15px; } [dir="rtl"] .selector .selector-filter label { margin-right: 0; margin-left: 8px; } [dir="rtl"] .object-tools li { float: right; } [dir="rtl"] .object-tools li + li { margin-left: 0; margin-right: 15px; } [dir="rtl"] .dashboard .module table td a { padding-left: 0; padding-right: 16px; } } /* MOBILE */ @media (max-width: 767px) { [dir="rtl"] .change-list .filtered .results, [dir="rtl"] .change-list .filtered .paginator, [dir="rtl"] .filtered #toolbar, [dir="rtl"] .filtered div.xfull, [dir="rtl"] .filtered .actions { margin-left: 0; } [dir="rtl"] .aligned .add-another, [dir="rtl"] .aligned .related-lookup, [dir="rtl"] .aligned .datetimeshortcuts { margin-left: 0; margin-right: 15px; } [dir="rtl"] .aligned ul { margin-right: 0; } } ================================================ FILE: static/admin/css/rtl.css ================================================ body { direction: rtl; } /* LOGIN */ .login .form-row { float: right; } .login .form-row label { float: right; padding-left: 0.5em; padding-right: 0; text-align: left; } .login .submit-row { clear: both; padding: 1em 9.4em 0 0; } /* GLOBAL */ th { text-align: right; } .module h2, .module caption { text-align: right; } .module ul, .module ol { margin-left: 0; margin-right: 1.5em; } .viewlink, .addlink, .changelink { padding-left: 0; padding-right: 16px; background-position: 100% 1px; } .deletelink { padding-left: 0; padding-right: 16px; background-position: 100% 1px; } .object-tools { float: left; } thead th:first-child, tfoot td:first-child { border-left: none; } /* LAYOUT */ #user-tools { right: auto; left: 0; text-align: left; } div.breadcrumbs { text-align: right; } #content-main { float: right; } #content-related { float: left; margin-left: -300px; margin-right: auto; } .colMS { margin-left: 300px; margin-right: 0; } /* SORTABLE TABLES */ table thead th.sorted .sortoptions { float: left; } thead th.sorted .text { padding-right: 0; padding-left: 42px; } /* dashboard styles */ .dashboard .module table td a { padding-left: .6em; padding-right: 16px; } /* changelists styles */ .change-list .filtered table { border-left: none; border-right: 0px none; } #changelist-filter { right: auto; left: 0; border-left: none; border-right: none; } .change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull { margin-right: 0; margin-left: 280px; } #changelist-filter li.selected { border-left: none; padding-left: 10px; margin-left: 0; border-right: 5px solid #eaeaea; padding-right: 10px; margin-right: -15px; } .filtered .actions { margin-left: 280px; margin-right: 0; } #changelist table tbody td:first-child, #changelist table tbody th:first-child { border-right: none; border-left: none; } /* FORMS */ .aligned label { padding: 0 0 3px 1em; float: right; } .submit-row { text-align: left } .submit-row p.deletelink-box { float: right; } .submit-row input.default { margin-left: 0; } .vDateField, .vTimeField { margin-left: 2px; } .aligned .form-row input { margin-left: 5px; } form .aligned p.help, form .aligned div.help { clear: right; } form .aligned ul { margin-right: 163px; margin-left: 0; } form ul.inline li { float: right; padding-right: 0; padding-left: 7px; } input[type=submit].default, .submit-row input.default { float: left; } fieldset .fieldBox { float: right; margin-left: 20px; margin-right: 0; } .errorlist li { background-position: 100% 12px; padding: 0; } .errornote { background-position: 100% 12px; padding: 10px 12px; } /* WIDGETS */ .calendarnav-previous { top: 0; left: auto; right: 10px; } .calendarnav-next { top: 0; right: auto; left: 10px; } .calendar caption, .calendarbox h2 { text-align: center; } .selector { float: right; } .selector .selector-filter { text-align: right; } .inline-deletelink { float: left; } form .form-row p.datetime { overflow: hidden; } .related-widget-wrapper { float: right; } /* MISC */ .inline-related h2, .inline-group h2 { text-align: right } .inline-related h3 span.delete { padding-right: 20px; padding-left: inherit; left: 10px; right: inherit; float:left; } .inline-related h3 span.delete label { margin-left: inherit; margin-right: 2px; } /* IE7 specific bug fixes */ div.colM { position: relative; } .submit-row input { float: left; } ================================================ FILE: static/admin/css/vendor/select2/LICENSE-SELECT2.md ================================================ The MIT License (MIT) Copyright (c) 2012-2015 Kevin Brown, Igor Vaynberg, and Select2 contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: static/admin/css/vendor/select2/select2.css ================================================ .select2-container { box-sizing: border-box; display: inline-block; margin: 0; position: relative; vertical-align: middle; } .select2-container .select2-selection--single { box-sizing: border-box; cursor: pointer; display: block; height: 28px; user-select: none; -webkit-user-select: none; } .select2-container .select2-selection--single .select2-selection__rendered { display: block; padding-left: 8px; padding-right: 20px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .select2-container .select2-selection--single .select2-selection__clear { position: relative; } .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { padding-right: 8px; padding-left: 20px; } .select2-container .select2-selection--multiple { box-sizing: border-box; cursor: pointer; display: block; min-height: 32px; user-select: none; -webkit-user-select: none; } .select2-container .select2-selection--multiple .select2-selection__rendered { display: inline-block; overflow: hidden; padding-left: 8px; text-overflow: ellipsis; white-space: nowrap; } .select2-container .select2-search--inline { float: left; } .select2-container .select2-search--inline .select2-search__field { box-sizing: border-box; border: none; font-size: 100%; margin-top: 5px; padding: 0; } .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { -webkit-appearance: none; } .select2-dropdown { background-color: white; border: 1px solid #aaa; border-radius: 4px; box-sizing: border-box; display: block; position: absolute; left: -100000px; width: 100%; z-index: 1051; } .select2-results { display: block; } .select2-results__options { list-style: none; margin: 0; padding: 0; } .select2-results__option { padding: 6px; user-select: none; -webkit-user-select: none; } .select2-results__option[aria-selected] { cursor: pointer; } .select2-container--open .select2-dropdown { left: 0; } .select2-container--open .select2-dropdown--above { border-bottom: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .select2-container--open .select2-dropdown--below { border-top: none; border-top-left-radius: 0; border-top-right-radius: 0; } .select2-search--dropdown { display: block; padding: 4px; } .select2-search--dropdown .select2-search__field { padding: 4px; width: 100%; box-sizing: border-box; } .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { -webkit-appearance: none; } .select2-search--dropdown.select2-search--hide { display: none; } .select2-close-mask { border: 0; margin: 0; padding: 0; display: block; position: fixed; left: 0; top: 0; min-height: 100%; min-width: 100%; height: auto; width: auto; opacity: 0; z-index: 99; background-color: #fff; filter: alpha(opacity=0); } .select2-hidden-accessible { border: 0 !important; clip: rect(0 0 0 0) !important; height: 1px !important; margin: -1px !important; overflow: hidden !important; padding: 0 !important; position: absolute !important; width: 1px !important; } .select2-container--default .select2-selection--single { background-color: #fff; border: 1px solid #aaa; border-radius: 4px; } .select2-container--default .select2-selection--single .select2-selection__rendered { color: #444; line-height: 28px; } .select2-container--default .select2-selection--single .select2-selection__clear { cursor: pointer; float: right; font-weight: bold; } .select2-container--default .select2-selection--single .select2-selection__placeholder { color: #999; } .select2-container--default .select2-selection--single .select2-selection__arrow { height: 26px; position: absolute; top: 1px; right: 1px; width: 20px; } .select2-container--default .select2-selection--single .select2-selection__arrow b { border-color: #888 transparent transparent transparent; border-style: solid; border-width: 5px 4px 0 4px; height: 0; left: 50%; margin-left: -4px; margin-top: -2px; position: absolute; top: 50%; width: 0; } .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { float: left; } .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { left: 1px; right: auto; } .select2-container--default.select2-container--disabled .select2-selection--single { background-color: #eee; cursor: default; } .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { display: none; } .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { border-color: transparent transparent #888 transparent; border-width: 0 4px 5px 4px; } .select2-container--default .select2-selection--multiple { background-color: white; border: 1px solid #aaa; border-radius: 4px; cursor: text; } .select2-container--default .select2-selection--multiple .select2-selection__rendered { box-sizing: border-box; list-style: none; margin: 0; padding: 0 5px; width: 100%; } .select2-container--default .select2-selection--multiple .select2-selection__rendered li { list-style: none; } .select2-container--default .select2-selection--multiple .select2-selection__placeholder { color: #999; margin-top: 5px; float: left; } .select2-container--default .select2-selection--multiple .select2-selection__clear { cursor: pointer; float: right; font-weight: bold; margin-top: 5px; margin-right: 10px; } .select2-container--default .select2-selection--multiple .select2-selection__choice { background-color: #e4e4e4; border: 1px solid #aaa; border-radius: 4px; cursor: default; float: left; margin-right: 5px; margin-top: 5px; padding: 0 5px; } .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { color: #999; cursor: pointer; display: inline-block; font-weight: bold; margin-right: 2px; } .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { color: #333; } .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { float: right; } .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { margin-left: 5px; margin-right: auto; } .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { margin-left: 2px; margin-right: auto; } .select2-container--default.select2-container--focus .select2-selection--multiple { border: solid black 1px; outline: 0; } .select2-container--default.select2-container--disabled .select2-selection--multiple { background-color: #eee; cursor: default; } .select2-container--default.select2-container--disabled .select2-selection__choice__remove { display: none; } .select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { border-top-left-radius: 0; border-top-right-radius: 0; } .select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .select2-container--default .select2-search--dropdown .select2-search__field { border: 1px solid #aaa; } .select2-container--default .select2-search--inline .select2-search__field { background: transparent; border: none; outline: 0; box-shadow: none; -webkit-appearance: textfield; } .select2-container--default .select2-results > .select2-results__options { max-height: 200px; overflow-y: auto; } .select2-container--default .select2-results__option[role=group] { padding: 0; } .select2-container--default .select2-results__option[aria-disabled=true] { color: #999; } .select2-container--default .select2-results__option[aria-selected=true] { background-color: #ddd; } .select2-container--default .select2-results__option .select2-results__option { padding-left: 1em; } .select2-container--default .select2-results__option .select2-results__option .select2-results__group { padding-left: 0; } .select2-container--default .select2-results__option .select2-results__option .select2-results__option { margin-left: -1em; padding-left: 2em; } .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -2em; padding-left: 3em; } .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -3em; padding-left: 4em; } .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -4em; padding-left: 5em; } .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -5em; padding-left: 6em; } .select2-container--default .select2-results__option--highlighted[aria-selected] { background-color: #5897fb; color: white; } .select2-container--default .select2-results__group { cursor: default; display: block; padding: 6px; } .select2-container--classic .select2-selection--single { background-color: #f7f7f7; border: 1px solid #aaa; border-radius: 4px; outline: 0; background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%); background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } .select2-container--classic .select2-selection--single:focus { border: 1px solid #5897fb; } .select2-container--classic .select2-selection--single .select2-selection__rendered { color: #444; line-height: 28px; } .select2-container--classic .select2-selection--single .select2-selection__clear { cursor: pointer; float: right; font-weight: bold; margin-right: 10px; } .select2-container--classic .select2-selection--single .select2-selection__placeholder { color: #999; } .select2-container--classic .select2-selection--single .select2-selection__arrow { background-color: #ddd; border: none; border-left: 1px solid #aaa; border-top-right-radius: 4px; border-bottom-right-radius: 4px; height: 26px; position: absolute; top: 1px; right: 1px; width: 20px; background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); } .select2-container--classic .select2-selection--single .select2-selection__arrow b { border-color: #888 transparent transparent transparent; border-style: solid; border-width: 5px 4px 0 4px; height: 0; left: 50%; margin-left: -4px; margin-top: -2px; position: absolute; top: 50%; width: 0; } .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { float: left; } .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { border: none; border-right: 1px solid #aaa; border-radius: 0; border-top-left-radius: 4px; border-bottom-left-radius: 4px; left: 1px; right: auto; } .select2-container--classic.select2-container--open .select2-selection--single { border: 1px solid #5897fb; } .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { background: transparent; border: none; } .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { border-color: transparent transparent #888 transparent; border-width: 0 4px 5px 4px; } .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { border-top: none; border-top-left-radius: 0; border-top-right-radius: 0; background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%); background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { border-bottom: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%); background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); } .select2-container--classic .select2-selection--multiple { background-color: white; border: 1px solid #aaa; border-radius: 4px; cursor: text; outline: 0; } .select2-container--classic .select2-selection--multiple:focus { border: 1px solid #5897fb; } .select2-container--classic .select2-selection--multiple .select2-selection__rendered { list-style: none; margin: 0; padding: 0 5px; } .select2-container--classic .select2-selection--multiple .select2-selection__clear { display: none; } .select2-container--classic .select2-selection--multiple .select2-selection__choice { background-color: #e4e4e4; border: 1px solid #aaa; border-radius: 4px; cursor: default; float: left; margin-right: 5px; margin-top: 5px; padding: 0 5px; } .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { color: #888; cursor: pointer; display: inline-block; font-weight: bold; margin-right: 2px; } .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { color: #555; } .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { float: right; } .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { margin-left: 5px; margin-right: auto; } .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { margin-left: 2px; margin-right: auto; } .select2-container--classic.select2-container--open .select2-selection--multiple { border: 1px solid #5897fb; } .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { border-top: none; border-top-left-radius: 0; border-top-right-radius: 0; } .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { border-bottom: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .select2-container--classic .select2-search--dropdown .select2-search__field { border: 1px solid #aaa; outline: 0; } .select2-container--classic .select2-search--inline .select2-search__field { outline: 0; box-shadow: none; } .select2-container--classic .select2-dropdown { background-color: white; border: 1px solid transparent; } .select2-container--classic .select2-dropdown--above { border-bottom: none; } .select2-container--classic .select2-dropdown--below { border-top: none; } .select2-container--classic .select2-results > .select2-results__options { max-height: 200px; overflow-y: auto; } .select2-container--classic .select2-results__option[role=group] { padding: 0; } .select2-container--classic .select2-results__option[aria-disabled=true] { color: grey; } .select2-container--classic .select2-results__option--highlighted[aria-selected] { background-color: #3875d7; color: white; } .select2-container--classic .select2-results__group { cursor: default; display: block; padding: 6px; } .select2-container--classic.select2-container--open .select2-dropdown { border-color: #5897fb; } ================================================ FILE: static/admin/css/widgets.css ================================================ /* SELECTOR (FILTER INTERFACE) */ .selector { width: 800px; float: left; } .selector select { width: 380px; height: 17.2em; } .selector-available, .selector-chosen { float: left; width: 380px; text-align: center; margin-bottom: 5px; } .selector-chosen select { border-top: none; } .selector-available h2, .selector-chosen h2 { border: 1px solid #ccc; border-radius: 4px 4px 0 0; } .selector-chosen h2 { background: #79aec8; color: #fff; } .selector .selector-available h2 { background: #f8f8f8; color: #666; } .selector .selector-filter { background: white; border: 1px solid #ccc; border-width: 0 1px; padding: 8px; color: #999; font-size: 10px; margin: 0; text-align: left; } .selector .selector-filter label, .inline-group .aligned .selector .selector-filter label { float: left; margin: 7px 0 0; width: 18px; height: 18px; padding: 0; overflow: hidden; line-height: 1; } .selector .selector-available input { width: 320px; margin-left: 8px; } .selector ul.selector-chooser { float: left; width: 22px; background-color: #eee; border-radius: 10px; margin: 10em 5px 0 5px; padding: 0; } .selector-chooser li { margin: 0; padding: 3px; list-style-type: none; } .selector select { padding: 0 10px; margin: 0 0 10px; border-radius: 0 0 4px 4px; } .selector-add, .selector-remove { width: 16px; height: 16px; display: block; text-indent: -3000px; overflow: hidden; cursor: default; opacity: 0.3; } .active.selector-add, .active.selector-remove { opacity: 1; } .active.selector-add:hover, .active.selector-remove:hover { cursor: pointer; } .selector-add { background: url(../img/selector-icons.svg) 0 -96px no-repeat; } .active.selector-add:focus, .active.selector-add:hover { background-position: 0 -112px; } .selector-remove { background: url(../img/selector-icons.svg) 0 -64px no-repeat; } .active.selector-remove:focus, .active.selector-remove:hover { background-position: 0 -80px; } a.selector-chooseall, a.selector-clearall { display: inline-block; height: 16px; text-align: left; margin: 1px auto 3px; overflow: hidden; font-weight: bold; line-height: 16px; color: #666; text-decoration: none; opacity: 0.3; } a.active.selector-chooseall:focus, a.active.selector-clearall:focus, a.active.selector-chooseall:hover, a.active.selector-clearall:hover { color: #447e9b; } a.active.selector-chooseall, a.active.selector-clearall { opacity: 1; } a.active.selector-chooseall:hover, a.active.selector-clearall:hover { cursor: pointer; } a.selector-chooseall { padding: 0 18px 0 0; background: url(../img/selector-icons.svg) right -160px no-repeat; cursor: default; } a.active.selector-chooseall:focus, a.active.selector-chooseall:hover { background-position: 100% -176px; } a.selector-clearall { padding: 0 0 0 18px; background: url(../img/selector-icons.svg) 0 -128px no-repeat; cursor: default; } a.active.selector-clearall:focus, a.active.selector-clearall:hover { background-position: 0 -144px; } /* STACKED SELECTORS */ .stacked { float: left; width: 490px; } .stacked select { width: 480px; height: 10.1em; } .stacked .selector-available, .stacked .selector-chosen { width: 480px; } .stacked .selector-available { margin-bottom: 0; } .stacked .selector-available input { width: 422px; } .stacked ul.selector-chooser { height: 22px; width: 50px; margin: 0 0 10px 40%; background-color: #eee; border-radius: 10px; } .stacked .selector-chooser li { float: left; padding: 3px 3px 3px 5px; } .stacked .selector-chooseall, .stacked .selector-clearall { display: none; } .stacked .selector-add { background: url(../img/selector-icons.svg) 0 -32px no-repeat; cursor: default; } .stacked .active.selector-add { background-position: 0 -48px; cursor: pointer; } .stacked .selector-remove { background: url(../img/selector-icons.svg) 0 0 no-repeat; cursor: default; } .stacked .active.selector-remove { background-position: 0 -16px; cursor: pointer; } .selector .help-icon { background: url(../img/icon-unknown.svg) 0 0 no-repeat; display: inline-block; vertical-align: middle; margin: -2px 0 0 2px; width: 13px; height: 13px; } .selector .selector-chosen .help-icon { background: url(../img/icon-unknown-alt.svg) 0 0 no-repeat; } .selector .search-label-icon { background: url(../img/search.svg) 0 0 no-repeat; display: inline-block; height: 18px; width: 18px; } /* DATE AND TIME */ p.datetime { line-height: 20px; margin: 0; padding: 0; color: #666; font-weight: bold; } .datetime span { white-space: nowrap; font-weight: normal; font-size: 11px; color: #ccc; } .datetime input, .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField { min-width: 0; margin-left: 5px; margin-bottom: 4px; } table p.datetime { font-size: 11px; margin-left: 0; padding-left: 0; } .datetimeshortcuts .clock-icon, .datetimeshortcuts .date-icon { position: relative; display: inline-block; vertical-align: middle; height: 16px; width: 16px; overflow: hidden; } .datetimeshortcuts .clock-icon { background: url(../img/icon-clock.svg) 0 0 no-repeat; } .datetimeshortcuts a:focus .clock-icon, .datetimeshortcuts a:hover .clock-icon { background-position: 0 -16px; } .datetimeshortcuts .date-icon { background: url(../img/icon-calendar.svg) 0 0 no-repeat; top: -1px; } .datetimeshortcuts a:focus .date-icon, .datetimeshortcuts a:hover .date-icon { background-position: 0 -16px; } .timezonewarning { font-size: 11px; color: #999; } /* URL */ p.url { line-height: 20px; margin: 0; padding: 0; color: #666; font-size: 11px; font-weight: bold; } .url a { font-weight: normal; } /* FILE UPLOADS */ p.file-upload { line-height: 20px; margin: 0; padding: 0; color: #666; font-size: 11px; font-weight: bold; } .aligned p.file-upload { margin-left: 170px; } .file-upload a { font-weight: normal; } .file-upload .deletelink { margin-left: 5px; } span.clearable-file-input label { color: #333; font-size: 11px; display: inline; float: none; } /* CALENDARS & CLOCKS */ .calendarbox, .clockbox { margin: 5px auto; font-size: 12px; width: 19em; text-align: center; background: white; border: 1px solid #ddd; border-radius: 4px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); overflow: hidden; position: relative; } .clockbox { width: auto; } .calendar { margin: 0; padding: 0; } .calendar table { margin: 0; padding: 0; border-collapse: collapse; background: white; width: 100%; } .calendar caption, .calendarbox h2 { margin: 0; text-align: center; border-top: none; background: #f5dd5d; font-weight: 700; font-size: 12px; color: #333; } .calendar th { padding: 8px 5px; background: #f8f8f8; border-bottom: 1px solid #ddd; font-weight: 400; font-size: 12px; text-align: center; color: #666; } .calendar td { font-weight: 400; font-size: 12px; text-align: center; padding: 0; border-top: 1px solid #eee; border-bottom: none; } .calendar td.selected a { background: #79aec8; color: #fff; } .calendar td.nonday { background: #f8f8f8; } .calendar td.today a { font-weight: 700; } .calendar td a, .timelist a { display: block; font-weight: 400; padding: 6px; text-decoration: none; color: #444; } .calendar td a:focus, .timelist a:focus, .calendar td a:hover, .timelist a:hover { background: #79aec8; color: white; } .calendar td a:active, .timelist a:active { background: #417690; color: white; } .calendarnav { font-size: 10px; text-align: center; color: #ccc; margin: 0; padding: 1px 3px; } .calendarnav a:link, #calendarnav a:visited, #calendarnav a:focus, #calendarnav a:hover { color: #999; } .calendar-shortcuts { background: white; font-size: 11px; line-height: 11px; border-top: 1px solid #eee; padding: 8px 0; color: #ccc; } .calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { display: block; position: absolute; top: 8px; width: 15px; height: 15px; text-indent: -9999px; padding: 0; } .calendarnav-previous { left: 10px; background: url(../img/calendar-icons.svg) 0 0 no-repeat; } .calendarbox .calendarnav-previous:focus, .calendarbox .calendarnav-previous:hover { background-position: 0 -15px; } .calendarnav-next { right: 10px; background: url(../img/calendar-icons.svg) 0 -30px no-repeat; } .calendarbox .calendarnav-next:focus, .calendarbox .calendarnav-next:hover { background-position: 0 -45px; } .calendar-cancel { margin: 0; padding: 4px 0; font-size: 12px; background: #eee; border-top: 1px solid #ddd; color: #333; } .calendar-cancel:focus, .calendar-cancel:hover { background: #ddd; } .calendar-cancel a { color: black; display: block; } ul.timelist, .timelist li { list-style-type: none; margin: 0; padding: 0; } .timelist a { padding: 2px; } /* EDIT INLINE */ .inline-deletelink { float: right; text-indent: -9999px; background: url(../img/inline-delete.svg) 0 0 no-repeat; width: 16px; height: 16px; border: 0px none; } .inline-deletelink:focus, .inline-deletelink:hover { cursor: pointer; } /* RELATED WIDGET WRAPPER */ .related-widget-wrapper { float: left; /* display properly in form rows with multiple fields */ overflow: hidden; /* clear floated contents */ } .related-widget-wrapper-link { opacity: 0.3; } .related-widget-wrapper-link:link { opacity: .8; } .related-widget-wrapper-link:link:focus, .related-widget-wrapper-link:link:hover { opacity: 1; } select + .related-widget-wrapper-link, .related-widget-wrapper-link + .related-widget-wrapper-link { margin-left: 7px; } ================================================ FILE: static/admin/fonts/LICENSE.txt ================================================ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ================================================ FILE: static/admin/fonts/README.txt ================================================ Roboto webfont source: https://www.google.com/fonts/specimen/Roboto WOFF files extracted using https://github.com/majodev/google-webfonts-helper Weights used in this project: Light (300), Regular (400), Bold (700) ================================================ FILE: static/admin/img/LICENSE ================================================ The MIT License (MIT) Copyright (c) 2014 Code Charm Ltd Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: static/admin/img/README.txt ================================================ All icons are taken from Font Awesome (http://fontawesome.io/) project. The Font Awesome font is licensed under the SIL OFL 1.1: - https://scripts.sil.org/OFL SVG icons source: https://github.com/encharm/Font-Awesome-SVG-PNG Font-Awesome-SVG-PNG is licensed under the MIT license (see file license in current folder). ================================================ FILE: static/admin/js/SelectBox.js ================================================ (function($) { 'use strict'; var SelectBox = { cache: {}, init: function(id) { var box = document.getElementById(id); var node; SelectBox.cache[id] = []; var cache = SelectBox.cache[id]; var boxOptions = box.options; var boxOptionsLength = boxOptions.length; for (var i = 0, j = boxOptionsLength; i < j; i++) { node = boxOptions[i]; cache.push({value: node.value, text: node.text, displayed: 1}); } }, redisplay: function(id) { // Repopulate HTML select box from cache var box = document.getElementById(id); var node; $(box).empty(); // clear all options var new_options = box.outerHTML.slice(0, -9); // grab just the opening tag var cache = SelectBox.cache[id]; for (var i = 0, j = cache.length; i < j; i++) { node = cache[i]; if (node.displayed) { var new_option = new Option(node.text, node.value, false, false); // Shows a tooltip when hovering over the option new_option.setAttribute("title", node.text); new_options += new_option.outerHTML; } } new_options += ''; box.outerHTML = new_options; }, filter: function(id, text) { // Redisplay the HTML select box, displaying only the choices containing ALL // the words in text. (It's an AND search.) var tokens = text.toLowerCase().split(/\s+/); var node, token; var cache = SelectBox.cache[id]; for (var i = 0, j = cache.length; i < j; i++) { node = cache[i]; node.displayed = 1; var node_text = node.text.toLowerCase(); var numTokens = tokens.length; for (var k = 0; k < numTokens; k++) { token = tokens[k]; if (node_text.indexOf(token) === -1) { node.displayed = 0; break; // Once the first token isn't found we're done } } } SelectBox.redisplay(id); }, delete_from_cache: function(id, value) { var node, delete_index = null; var cache = SelectBox.cache[id]; for (var i = 0, j = cache.length; i < j; i++) { node = cache[i]; if (node.value === value) { delete_index = i; break; } } cache.splice(delete_index, 1); }, add_to_cache: function(id, option) { SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1}); }, cache_contains: function(id, value) { // Check if an item is contained in the cache var node; var cache = SelectBox.cache[id]; for (var i = 0, j = cache.length; i < j; i++) { node = cache[i]; if (node.value === value) { return true; } } return false; }, move: function(from, to) { var from_box = document.getElementById(from); var option; var boxOptions = from_box.options; var boxOptionsLength = boxOptions.length; for (var i = 0, j = boxOptionsLength; i < j; i++) { option = boxOptions[i]; var option_value = option.value; if (option.selected && SelectBox.cache_contains(from, option_value)) { SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1}); SelectBox.delete_from_cache(from, option_value); } } SelectBox.redisplay(from); SelectBox.redisplay(to); }, move_all: function(from, to) { var from_box = document.getElementById(from); var option; var boxOptions = from_box.options; var boxOptionsLength = boxOptions.length; for (var i = 0, j = boxOptionsLength; i < j; i++) { option = boxOptions[i]; var option_value = option.value; if (SelectBox.cache_contains(from, option_value)) { SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1}); SelectBox.delete_from_cache(from, option_value); } } SelectBox.redisplay(from); SelectBox.redisplay(to); }, sort: function(id) { SelectBox.cache[id].sort(function(a, b) { a = a.text.toLowerCase(); b = b.text.toLowerCase(); try { if (a > b) { return 1; } if (a < b) { return -1; } } catch (e) { // silently fail on IE 'unknown' exception } return 0; } ); }, select_all: function(id) { var box = document.getElementById(id); var boxOptions = box.options; var boxOptionsLength = boxOptions.length; for (var i = 0; i < boxOptionsLength; i++) { boxOptions[i].selected = 'selected'; } } }; window.SelectBox = SelectBox; })(django.jQuery); ================================================ FILE: static/admin/js/SelectFilter2.js ================================================ /*global SelectBox, gettext, interpolate, quickElement, SelectFilter*/ /* SelectFilter2 - Turns a multiple-select box into a filter interface. Requires jQuery, core.js, and SelectBox.js. */ (function($) { 'use strict'; function findForm(node) { // returns the node of the form containing the given node if (node.tagName.toLowerCase() !== 'form') { return findForm(node.parentNode); } return node; } window.SelectFilter = { init: function(field_id, field_name, is_stacked) { if (field_id.match(/__prefix__/)) { // Don't initialize on empty forms. return; } var from_box = document.getElementById(field_id); from_box.id += '_from'; // change its ID from_box.className = 'filtered'; var ps = from_box.parentNode.getElementsByTagName('p'); for (var i = 0; i < ps.length; i++) { if (ps[i].className.indexOf("info") !== -1) { // Remove

, because it just gets in the way. from_box.parentNode.removeChild(ps[i]); } else if (ps[i].className.indexOf("help") !== -1) { // Move help text up to the top so it isn't below the select // boxes or wrapped off on the side to the right of the add // button: from_box.parentNode.insertBefore(ps[i], from_box.parentNode.firstChild); } } //

or
var selector_div = quickElement('div', from_box.parentNode); selector_div.className = is_stacked ? 'selector stacked' : 'selector'; //
var selector_available = quickElement('div', selector_div); selector_available.className = 'selector-available'; var title_available = quickElement('h2', selector_available, interpolate(gettext('Available %s') + ' ', [field_name])); quickElement( 'span', title_available, '', 'class', 'help help-tooltip help-icon', 'title', interpolate( gettext( 'This is the list of available %s. You may choose some by ' + 'selecting them in the box below and then clicking the ' + '"Choose" arrow between the two boxes.' ), [field_name] ) ); var filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter'); filter_p.className = 'selector-filter'; var search_filter_label = quickElement('label', filter_p, '', 'for', field_id + '_input'); quickElement( 'span', search_filter_label, '', 'class', 'help-tooltip search-label-icon', 'title', interpolate(gettext("Type into this box to filter down the list of available %s."), [field_name]) ); filter_p.appendChild(document.createTextNode(' ')); var filter_input = quickElement('input', filter_p, '', 'type', 'text', 'placeholder', gettext("Filter")); filter_input.id = field_id + '_input'; selector_available.appendChild(from_box); var choose_all = quickElement('a', selector_available, gettext('Choose all'), 'title', interpolate(gettext('Click to choose all %s at once.'), [field_name]), 'href', '#', 'id', field_id + '_add_all_link'); choose_all.className = 'selector-chooseall'; //