From 563e8c4c6254ef74ce5076c9cee210f6b055ee14 Mon Sep 17 00:00:00 2001 From: yaemiku Date: Mon, 5 Dec 2022 04:12:09 +0100 Subject: [PATCH] filter students --- README.md | 6 - app/admin.py | 52 +- .../0003_alter_announcement_content.py | 19 + app/migrations/0004_auto_20221205_0348.py | 33 + app/models.py | 38 +- app/templates/admin/edition_buttons.html | 2 +- app/templates/user/submission.html | 4 +- crispy_forms/LICENSE | 22 + crispy_forms/LICENSE.txt | 22 + crispy_forms/__init__.py | 1 + crispy_forms/base.py | 22 + crispy_forms/bootstrap.py | 1132 ++ crispy_forms/exceptions.py | 16 + crispy_forms/helper.py | 350 + crispy_forms/layout.py | 1002 ++ crispy_forms/layout_slice.py | 156 + .../templates/bootstrap3/accordion-group.html | 12 + .../templates/bootstrap3/accordion.html | 3 + .../templates/bootstrap3/betterform.html | 22 + .../templates/bootstrap3/display_form.html | 9 + crispy_forms/templates/bootstrap3/errors.html | 8 + .../templates/bootstrap3/errors_formset.html | 9 + crispy_forms/templates/bootstrap3/field.html | 52 + crispy_forms/templates/bootstrap3/inputs.html | 13 + .../templates/bootstrap3/layout/alert.html | 4 + .../templates/bootstrap3/layout/attrs.html | 1 + .../bootstrap3/layout/baseinput.html | 9 + .../templates/bootstrap3/layout/button.html | 1 + .../bootstrap3/layout/buttonholder.html | 4 + .../layout/checkboxselectmultiple.html | 21 + .../layout/checkboxselectmultiple_inline.html | 14 + .../templates/bootstrap3/layout/column.html | 3 + .../templates/bootstrap3/layout/div.html | 4 + .../bootstrap3/layout/field_errors.html | 5 + .../bootstrap3/layout/field_errors_block.html | 5 + .../bootstrap3/layout/field_with_buttons.html | 17 + .../templates/bootstrap3/layout/fieldset.html | 6 + .../bootstrap3/layout/formactions.html | 9 + .../bootstrap3/layout/help_text.html | 7 + .../layout/help_text_and_errors.html | 13 + .../bootstrap3/layout/inline_field.html | 21 + .../templates/bootstrap3/layout/modal.html | 15 + .../bootstrap3/layout/multifield.html | 25 + .../layout/prepended_appended_text.html | 24 + .../bootstrap3/layout/radioselect.html | 21 + .../bootstrap3/layout/radioselect_inline.html | 14 + .../templates/bootstrap3/layout/row.html | 3 + .../templates/bootstrap3/layout/tab-link.html | 1 + .../templates/bootstrap3/layout/tab.html | 6 + .../bootstrap3/layout/uneditable_input.html | 10 + .../templates/bootstrap3/multifield.html | 39 + .../bootstrap3/table_inline_formset.html | 57 + .../templates/bootstrap3/uni_form.html | 11 + .../templates/bootstrap3/uni_formset.html | 8 + .../templates/bootstrap3/whole_uni_form.html | 14 + .../bootstrap3/whole_uni_formset.html | 30 + .../templates/bootstrap4/accordion-group.html | 17 + .../templates/bootstrap4/accordion.html | 3 + .../templates/bootstrap4/betterform.html | 22 + .../templates/bootstrap4/display_form.html | 9 + crispy_forms/templates/bootstrap4/errors.html | 8 + .../templates/bootstrap4/errors_formset.html | 9 + crispy_forms/templates/bootstrap4/field.html | 81 + crispy_forms/templates/bootstrap4/inputs.html | 13 + .../templates/bootstrap4/layout/alert.html | 4 + .../templates/bootstrap4/layout/attrs.html | 1 + .../bootstrap4/layout/baseinput.html | 9 + .../templates/bootstrap4/layout/button.html | 1 + .../bootstrap4/layout/buttonholder.html | 4 + .../layout/checkboxselectmultiple.html | 29 + .../layout/checkboxselectmultiple_inline.html | 14 + .../templates/bootstrap4/layout/column.html | 6 + .../templates/bootstrap4/layout/div.html | 4 + .../bootstrap4/layout/field_errors.html | 5 + .../bootstrap4/layout/field_errors_block.html | 5 + .../bootstrap4/layout/field_file.html | 52 + .../bootstrap4/layout/field_with_buttons.html | 17 + .../templates/bootstrap4/layout/fieldset.html | 6 + .../bootstrap4/layout/formactions.html | 9 + .../bootstrap4/layout/help_text.html | 7 + .../layout/help_text_and_errors.html | 13 + .../bootstrap4/layout/inline_field.html | 29 + .../templates/bootstrap4/layout/modal.html | 15 + .../bootstrap4/layout/multifield.html | 27 + .../layout/prepended_appended_text.html | 51 + .../bootstrap4/layout/radioselect.html | 29 + .../bootstrap4/layout/radioselect_inline.html | 14 + .../templates/bootstrap4/layout/row.html | 3 + .../templates/bootstrap4/layout/tab-link.html | 1 + .../templates/bootstrap4/layout/tab.html | 6 + .../bootstrap4/layout/uneditable_input.html | 14 + .../bootstrap4/table_inline_formset.html | 57 + .../templates/bootstrap4/uni_form.html | 11 + .../templates/bootstrap4/uni_formset.html | 8 + .../templates/bootstrap4/whole_uni_form.html | 14 + .../bootstrap4/whole_uni_formset.html | 30 + crispy_forms/templatetags/__init__.py | 0 .../templatetags/crispy_forms_field.py | 168 + .../templatetags/crispy_forms_filters.py | 162 + .../templatetags/crispy_forms_tags.py | 267 + .../templatetags/crispy_forms_utils.py | 34 + crispy_forms/utils.py | 189 + puchar/settings.py | 21 +- puchar/urls.py | 3 +- requirements.txt | 1 - tinymce/LICENSE.txt | 19 + tinymce/__init__.py | 2 + tinymce/compressor.py | 151 + tinymce/models.py | 24 + tinymce/settings.py | 45 + tinymce/static/django_tinymce/init_tinymce.js | 77 + .../static/tinymce/icons/default/icons.min.js | 1 + tinymce/static/tinymce/jquery.tinymce.min.js | 91 + tinymce/static/tinymce/langs/ar.js | 420 + tinymce/static/tinymce/langs/bg_BG.js | 389 + tinymce/static/tinymce/langs/ca.js | 419 + tinymce/static/tinymce/langs/cs.js | 462 + tinymce/static/tinymce/langs/cs_CZ.js | 462 + tinymce/static/tinymce/langs/cy.js | 461 + tinymce/static/tinymce/langs/da.js | 462 + tinymce/static/tinymce/langs/de.js | 462 + tinymce/static/tinymce/langs/es.js | 389 + tinymce/static/tinymce/langs/es_419.js | 462 + tinymce/static/tinymce/langs/es_ES.js | 370 + tinymce/static/tinymce/langs/es_MX.js | 389 + tinymce/static/tinymce/langs/eu.js | 389 + tinymce/static/tinymce/langs/fa.js | 462 + tinymce/static/tinymce/langs/fa_IR.js | 390 + tinymce/static/tinymce/langs/fi.js | 389 + tinymce/static/tinymce/langs/fr_FR.js | 462 + tinymce/static/tinymce/langs/gl.js | 388 + tinymce/static/tinymce/langs/he_IL.js | 420 + tinymce/static/tinymce/langs/hr.js | 418 + tinymce/static/tinymce/langs/hu_HU.js | 462 + tinymce/static/tinymce/langs/id.js | 419 + tinymce/static/tinymce/langs/it.js | 389 + tinymce/static/tinymce/langs/it_IT.js | 370 + tinymce/static/tinymce/langs/ja.js | 462 + tinymce/static/tinymce/langs/kab.js | 419 + tinymce/static/tinymce/langs/kk.js | 388 + tinymce/static/tinymce/langs/ko_KR.js | 389 + tinymce/static/tinymce/langs/lt.js | 389 + tinymce/static/tinymce/langs/nb_NO.js | 462 + tinymce/static/tinymce/langs/nl.js | 462 + tinymce/static/tinymce/langs/nl_BE.js | 445 + tinymce/static/tinymce/langs/pl.js | 462 + tinymce/static/tinymce/langs/pt_BR.js | 462 + tinymce/static/tinymce/langs/pt_PT.js | 462 + tinymce/static/tinymce/langs/readme.md | 3 + tinymce/static/tinymce/langs/ro.js | 461 + tinymce/static/tinymce/langs/ro_RO.js | 370 + tinymce/static/tinymce/langs/ru.js | 462 + tinymce/static/tinymce/langs/ru_RU.js | 445 + tinymce/static/tinymce/langs/sk.js | 418 + tinymce/static/tinymce/langs/sl.js | 445 + tinymce/static/tinymce/langs/sl_SI.js | 388 + tinymce/static/tinymce/langs/sq.js | 219 + tinymce/static/tinymce/langs/sv_SE.js | 419 + tinymce/static/tinymce/langs/ta.js | 462 + tinymce/static/tinymce/langs/ta_IN.js | 462 + tinymce/static/tinymce/langs/th_TH.js | 462 + tinymce/static/tinymce/langs/tr.js | 419 + tinymce/static/tinymce/langs/tr_TR.js | 462 + tinymce/static/tinymce/langs/ug.js | 462 + tinymce/static/tinymce/langs/uk.js | 389 + tinymce/static/tinymce/langs/zh_CN.js | 462 + tinymce/static/tinymce/langs/zh_TW.js | 419 + tinymce/static/tinymce/license.txt | 504 + .../tinymce/plugins/advlist/plugin.min.js | 9 + .../tinymce/plugins/anchor/plugin.min.js | 9 + .../tinymce/plugins/autolink/plugin.min.js | 9 + .../tinymce/plugins/autoresize/plugin.min.js | 9 + .../tinymce/plugins/autosave/plugin.min.js | 9 + .../tinymce/plugins/bbcode/plugin.min.js | 9 + .../tinymce/plugins/charmap/plugin.min.js | 9 + .../static/tinymce/plugins/code/plugin.min.js | 9 + .../tinymce/plugins/codesample/plugin.min.js | 9 + .../tinymce/plugins/colorpicker/plugin.min.js | 9 + .../tinymce/plugins/contextmenu/plugin.min.js | 9 + .../plugins/directionality/plugin.min.js | 9 + .../plugins/emoticons/js/emojiimages.js | 9424 +++++++++++++++++ .../plugins/emoticons/js/emojiimages.min.js | 3 + .../tinymce/plugins/emoticons/js/emojis.js | 9423 ++++++++++++++++ .../plugins/emoticons/js/emojis.min.js | 2 + .../tinymce/plugins/emoticons/plugin.min.js | 9 + .../tinymce/plugins/fullpage/plugin.min.js | 9 + .../tinymce/plugins/fullscreen/plugin.min.js | 9 + .../static/tinymce/plugins/help/plugin.min.js | 9 + .../static/tinymce/plugins/hr/plugin.min.js | 9 + .../tinymce/plugins/image/plugin.min.js | 9 + .../tinymce/plugins/imagetools/plugin.min.js | 9 + .../tinymce/plugins/importcss/plugin.min.js | 9 + .../plugins/insertdatetime/plugin.min.js | 9 + .../plugins/legacyoutput/plugin.min.js | 9 + .../static/tinymce/plugins/link/plugin.min.js | 9 + .../tinymce/plugins/lists/plugin.min.js | 9 + .../tinymce/plugins/nonbreaking/plugin.min.js | 9 + .../tinymce/plugins/noneditable/plugin.min.js | 9 + .../tinymce/plugins/pagebreak/plugin.min.js | 9 + .../tinymce/plugins/paste/plugin.min.js | 9 + .../tinymce/plugins/preview/plugin.min.js | 9 + .../tinymce/plugins/print/plugin.min.js | 9 + .../tinymce/plugins/quickbars/plugin.min.js | 9 + .../static/tinymce/plugins/save/plugin.min.js | 9 + .../plugins/searchreplace/plugin.min.js | 9 + .../plugins/spellchecker/plugin.min.js | 9 + .../tinymce/plugins/tabfocus/plugin.min.js | 9 + .../tinymce/plugins/table/plugin.min.js | 9 + .../tinymce/plugins/template/plugin.min.js | 9 + .../tinymce/plugins/textcolor/plugin.min.js | 9 + .../tinymce/plugins/textpattern/plugin.min.js | 9 + .../static/tinymce/plugins/toc/plugin.min.js | 9 + .../plugins/visualblocks/plugin.min.js | 9 + .../tinymce/plugins/visualchars/plugin.min.js | 9 + .../tinymce/plugins/wordcount/plugin.min.js | 9 + .../skins/content/dark/content.min.css | 7 + .../skins/content/default/content.min.css | 7 + .../skins/content/document/content.min.css | 7 + .../skins/content/writer/content.min.css | 7 + .../ui/oxide-dark/content.inline.min.css | 7 + .../skins/ui/oxide-dark/content.min.css | 7 + .../ui/oxide-dark/content.mobile.min.css | 7 + .../ui/oxide-dark/fonts/tinymce-mobile.woff | Bin 0 -> 4624 bytes .../tinymce/skins/ui/oxide-dark/skin.min.css | 7 + .../skins/ui/oxide-dark/skin.mobile.min.css | 7 + .../ui/oxide-dark/skin.shadowdom.min.css | 7 + .../skins/ui/oxide/content.inline.min.css | 7 + .../tinymce/skins/ui/oxide/content.min.css | 7 + .../skins/ui/oxide/content.mobile.min.css | 7 + .../skins/ui/oxide/fonts/tinymce-mobile.woff | Bin 0 -> 4624 bytes .../tinymce/skins/ui/oxide/skin.min.css | 7 + .../skins/ui/oxide/skin.mobile.min.css | 7 + .../skins/ui/oxide/skin.shadowdom.min.css | 7 + .../static/tinymce/themes/mobile/theme.min.js | 9 + .../static/tinymce/themes/silver/theme.min.js | 9 + tinymce/static/tinymce/tinymce.d.ts | 3036 ++++++ tinymce/static/tinymce/tinymce.min.js | 9 + tinymce/templates/tinymce/filebrowser.js | 17 + tinymce/templates/tinymce/tiny_mce_gzip.js | 144 + tinymce/urls.py | 12 + tinymce/views.py | 118 + tinymce/widgets.py | 178 + 242 files changed, 51221 insertions(+), 41 deletions(-) create mode 100644 app/migrations/0003_alter_announcement_content.py create mode 100644 app/migrations/0004_auto_20221205_0348.py create mode 100644 crispy_forms/LICENSE create mode 100644 crispy_forms/LICENSE.txt create mode 100644 crispy_forms/__init__.py create mode 100644 crispy_forms/base.py create mode 100644 crispy_forms/bootstrap.py create mode 100644 crispy_forms/exceptions.py create mode 100644 crispy_forms/helper.py create mode 100644 crispy_forms/layout.py create mode 100644 crispy_forms/layout_slice.py create mode 100644 crispy_forms/templates/bootstrap3/accordion-group.html create mode 100644 crispy_forms/templates/bootstrap3/accordion.html create mode 100644 crispy_forms/templates/bootstrap3/betterform.html create mode 100644 crispy_forms/templates/bootstrap3/display_form.html create mode 100644 crispy_forms/templates/bootstrap3/errors.html create mode 100644 crispy_forms/templates/bootstrap3/errors_formset.html create mode 100644 crispy_forms/templates/bootstrap3/field.html create mode 100644 crispy_forms/templates/bootstrap3/inputs.html create mode 100644 crispy_forms/templates/bootstrap3/layout/alert.html create mode 100644 crispy_forms/templates/bootstrap3/layout/attrs.html create mode 100644 crispy_forms/templates/bootstrap3/layout/baseinput.html create mode 100644 crispy_forms/templates/bootstrap3/layout/button.html create mode 100644 crispy_forms/templates/bootstrap3/layout/buttonholder.html create mode 100644 crispy_forms/templates/bootstrap3/layout/checkboxselectmultiple.html create mode 100644 crispy_forms/templates/bootstrap3/layout/checkboxselectmultiple_inline.html create mode 100644 crispy_forms/templates/bootstrap3/layout/column.html create mode 100644 crispy_forms/templates/bootstrap3/layout/div.html create mode 100644 crispy_forms/templates/bootstrap3/layout/field_errors.html create mode 100644 crispy_forms/templates/bootstrap3/layout/field_errors_block.html create mode 100644 crispy_forms/templates/bootstrap3/layout/field_with_buttons.html create mode 100644 crispy_forms/templates/bootstrap3/layout/fieldset.html create mode 100644 crispy_forms/templates/bootstrap3/layout/formactions.html create mode 100644 crispy_forms/templates/bootstrap3/layout/help_text.html create mode 100644 crispy_forms/templates/bootstrap3/layout/help_text_and_errors.html create mode 100644 crispy_forms/templates/bootstrap3/layout/inline_field.html create mode 100644 crispy_forms/templates/bootstrap3/layout/modal.html create mode 100644 crispy_forms/templates/bootstrap3/layout/multifield.html create mode 100644 crispy_forms/templates/bootstrap3/layout/prepended_appended_text.html create mode 100644 crispy_forms/templates/bootstrap3/layout/radioselect.html create mode 100644 crispy_forms/templates/bootstrap3/layout/radioselect_inline.html create mode 100644 crispy_forms/templates/bootstrap3/layout/row.html create mode 100644 crispy_forms/templates/bootstrap3/layout/tab-link.html create mode 100644 crispy_forms/templates/bootstrap3/layout/tab.html create mode 100644 crispy_forms/templates/bootstrap3/layout/uneditable_input.html create mode 100644 crispy_forms/templates/bootstrap3/multifield.html create mode 100644 crispy_forms/templates/bootstrap3/table_inline_formset.html create mode 100644 crispy_forms/templates/bootstrap3/uni_form.html create mode 100644 crispy_forms/templates/bootstrap3/uni_formset.html create mode 100644 crispy_forms/templates/bootstrap3/whole_uni_form.html create mode 100644 crispy_forms/templates/bootstrap3/whole_uni_formset.html create mode 100644 crispy_forms/templates/bootstrap4/accordion-group.html create mode 100644 crispy_forms/templates/bootstrap4/accordion.html create mode 100644 crispy_forms/templates/bootstrap4/betterform.html create mode 100644 crispy_forms/templates/bootstrap4/display_form.html create mode 100644 crispy_forms/templates/bootstrap4/errors.html create mode 100644 crispy_forms/templates/bootstrap4/errors_formset.html create mode 100644 crispy_forms/templates/bootstrap4/field.html create mode 100644 crispy_forms/templates/bootstrap4/inputs.html create mode 100644 crispy_forms/templates/bootstrap4/layout/alert.html create mode 100644 crispy_forms/templates/bootstrap4/layout/attrs.html create mode 100644 crispy_forms/templates/bootstrap4/layout/baseinput.html create mode 100644 crispy_forms/templates/bootstrap4/layout/button.html create mode 100644 crispy_forms/templates/bootstrap4/layout/buttonholder.html create mode 100644 crispy_forms/templates/bootstrap4/layout/checkboxselectmultiple.html create mode 100644 crispy_forms/templates/bootstrap4/layout/checkboxselectmultiple_inline.html create mode 100644 crispy_forms/templates/bootstrap4/layout/column.html create mode 100644 crispy_forms/templates/bootstrap4/layout/div.html create mode 100644 crispy_forms/templates/bootstrap4/layout/field_errors.html create mode 100644 crispy_forms/templates/bootstrap4/layout/field_errors_block.html create mode 100644 crispy_forms/templates/bootstrap4/layout/field_file.html create mode 100644 crispy_forms/templates/bootstrap4/layout/field_with_buttons.html create mode 100644 crispy_forms/templates/bootstrap4/layout/fieldset.html create mode 100644 crispy_forms/templates/bootstrap4/layout/formactions.html create mode 100644 crispy_forms/templates/bootstrap4/layout/help_text.html create mode 100644 crispy_forms/templates/bootstrap4/layout/help_text_and_errors.html create mode 100644 crispy_forms/templates/bootstrap4/layout/inline_field.html create mode 100644 crispy_forms/templates/bootstrap4/layout/modal.html create mode 100644 crispy_forms/templates/bootstrap4/layout/multifield.html create mode 100644 crispy_forms/templates/bootstrap4/layout/prepended_appended_text.html create mode 100644 crispy_forms/templates/bootstrap4/layout/radioselect.html create mode 100644 crispy_forms/templates/bootstrap4/layout/radioselect_inline.html create mode 100644 crispy_forms/templates/bootstrap4/layout/row.html create mode 100644 crispy_forms/templates/bootstrap4/layout/tab-link.html create mode 100644 crispy_forms/templates/bootstrap4/layout/tab.html create mode 100644 crispy_forms/templates/bootstrap4/layout/uneditable_input.html create mode 100644 crispy_forms/templates/bootstrap4/table_inline_formset.html create mode 100644 crispy_forms/templates/bootstrap4/uni_form.html create mode 100644 crispy_forms/templates/bootstrap4/uni_formset.html create mode 100644 crispy_forms/templates/bootstrap4/whole_uni_form.html create mode 100644 crispy_forms/templates/bootstrap4/whole_uni_formset.html create mode 100644 crispy_forms/templatetags/__init__.py create mode 100644 crispy_forms/templatetags/crispy_forms_field.py create mode 100644 crispy_forms/templatetags/crispy_forms_filters.py create mode 100644 crispy_forms/templatetags/crispy_forms_tags.py create mode 100644 crispy_forms/templatetags/crispy_forms_utils.py create mode 100644 crispy_forms/utils.py create mode 100644 tinymce/LICENSE.txt create mode 100644 tinymce/__init__.py create mode 100644 tinymce/compressor.py create mode 100644 tinymce/models.py create mode 100644 tinymce/settings.py create mode 100644 tinymce/static/django_tinymce/init_tinymce.js create mode 100644 tinymce/static/tinymce/icons/default/icons.min.js create mode 100644 tinymce/static/tinymce/jquery.tinymce.min.js create mode 100644 tinymce/static/tinymce/langs/ar.js create mode 100644 tinymce/static/tinymce/langs/bg_BG.js create mode 100644 tinymce/static/tinymce/langs/ca.js create mode 100644 tinymce/static/tinymce/langs/cs.js create mode 100644 tinymce/static/tinymce/langs/cs_CZ.js create mode 100644 tinymce/static/tinymce/langs/cy.js create mode 100644 tinymce/static/tinymce/langs/da.js create mode 100644 tinymce/static/tinymce/langs/de.js create mode 100644 tinymce/static/tinymce/langs/es.js create mode 100644 tinymce/static/tinymce/langs/es_419.js create mode 100644 tinymce/static/tinymce/langs/es_ES.js create mode 100644 tinymce/static/tinymce/langs/es_MX.js create mode 100644 tinymce/static/tinymce/langs/eu.js create mode 100644 tinymce/static/tinymce/langs/fa.js create mode 100644 tinymce/static/tinymce/langs/fa_IR.js create mode 100644 tinymce/static/tinymce/langs/fi.js create mode 100644 tinymce/static/tinymce/langs/fr_FR.js create mode 100644 tinymce/static/tinymce/langs/gl.js create mode 100644 tinymce/static/tinymce/langs/he_IL.js create mode 100644 tinymce/static/tinymce/langs/hr.js create mode 100644 tinymce/static/tinymce/langs/hu_HU.js create mode 100644 tinymce/static/tinymce/langs/id.js create mode 100644 tinymce/static/tinymce/langs/it.js create mode 100644 tinymce/static/tinymce/langs/it_IT.js create mode 100644 tinymce/static/tinymce/langs/ja.js create mode 100644 tinymce/static/tinymce/langs/kab.js create mode 100644 tinymce/static/tinymce/langs/kk.js create mode 100644 tinymce/static/tinymce/langs/ko_KR.js create mode 100644 tinymce/static/tinymce/langs/lt.js create mode 100644 tinymce/static/tinymce/langs/nb_NO.js create mode 100644 tinymce/static/tinymce/langs/nl.js create mode 100644 tinymce/static/tinymce/langs/nl_BE.js create mode 100644 tinymce/static/tinymce/langs/pl.js create mode 100644 tinymce/static/tinymce/langs/pt_BR.js create mode 100644 tinymce/static/tinymce/langs/pt_PT.js create mode 100644 tinymce/static/tinymce/langs/readme.md create mode 100644 tinymce/static/tinymce/langs/ro.js create mode 100644 tinymce/static/tinymce/langs/ro_RO.js create mode 100644 tinymce/static/tinymce/langs/ru.js create mode 100644 tinymce/static/tinymce/langs/ru_RU.js create mode 100644 tinymce/static/tinymce/langs/sk.js create mode 100644 tinymce/static/tinymce/langs/sl.js create mode 100644 tinymce/static/tinymce/langs/sl_SI.js create mode 100644 tinymce/static/tinymce/langs/sq.js create mode 100644 tinymce/static/tinymce/langs/sv_SE.js create mode 100644 tinymce/static/tinymce/langs/ta.js create mode 100644 tinymce/static/tinymce/langs/ta_IN.js create mode 100644 tinymce/static/tinymce/langs/th_TH.js create mode 100644 tinymce/static/tinymce/langs/tr.js create mode 100644 tinymce/static/tinymce/langs/tr_TR.js create mode 100644 tinymce/static/tinymce/langs/ug.js create mode 100644 tinymce/static/tinymce/langs/uk.js create mode 100644 tinymce/static/tinymce/langs/zh_CN.js create mode 100644 tinymce/static/tinymce/langs/zh_TW.js create mode 100644 tinymce/static/tinymce/license.txt create mode 100644 tinymce/static/tinymce/plugins/advlist/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/anchor/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/autolink/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/autoresize/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/autosave/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/bbcode/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/charmap/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/code/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/codesample/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/colorpicker/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/contextmenu/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/directionality/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/emoticons/js/emojiimages.js create mode 100644 tinymce/static/tinymce/plugins/emoticons/js/emojiimages.min.js create mode 100644 tinymce/static/tinymce/plugins/emoticons/js/emojis.js create mode 100644 tinymce/static/tinymce/plugins/emoticons/js/emojis.min.js create mode 100644 tinymce/static/tinymce/plugins/emoticons/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/fullpage/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/fullscreen/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/help/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/hr/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/image/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/imagetools/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/importcss/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/insertdatetime/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/legacyoutput/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/link/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/lists/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/nonbreaking/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/noneditable/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/pagebreak/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/paste/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/preview/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/print/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/quickbars/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/save/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/searchreplace/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/spellchecker/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/tabfocus/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/table/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/template/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/textcolor/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/textpattern/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/toc/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/visualblocks/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/visualchars/plugin.min.js create mode 100644 tinymce/static/tinymce/plugins/wordcount/plugin.min.js create mode 100644 tinymce/static/tinymce/skins/content/dark/content.min.css create mode 100644 tinymce/static/tinymce/skins/content/default/content.min.css create mode 100644 tinymce/static/tinymce/skins/content/document/content.min.css create mode 100644 tinymce/static/tinymce/skins/content/writer/content.min.css create mode 100644 tinymce/static/tinymce/skins/ui/oxide-dark/content.inline.min.css create mode 100644 tinymce/static/tinymce/skins/ui/oxide-dark/content.min.css create mode 100644 tinymce/static/tinymce/skins/ui/oxide-dark/content.mobile.min.css create mode 100644 tinymce/static/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff create mode 100644 tinymce/static/tinymce/skins/ui/oxide-dark/skin.min.css create mode 100644 tinymce/static/tinymce/skins/ui/oxide-dark/skin.mobile.min.css create mode 100644 tinymce/static/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css create mode 100644 tinymce/static/tinymce/skins/ui/oxide/content.inline.min.css create mode 100644 tinymce/static/tinymce/skins/ui/oxide/content.min.css create mode 100644 tinymce/static/tinymce/skins/ui/oxide/content.mobile.min.css create mode 100644 tinymce/static/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff create mode 100644 tinymce/static/tinymce/skins/ui/oxide/skin.min.css create mode 100644 tinymce/static/tinymce/skins/ui/oxide/skin.mobile.min.css create mode 100644 tinymce/static/tinymce/skins/ui/oxide/skin.shadowdom.min.css create mode 100644 tinymce/static/tinymce/themes/mobile/theme.min.js create mode 100644 tinymce/static/tinymce/themes/silver/theme.min.js create mode 100644 tinymce/static/tinymce/tinymce.d.ts create mode 100644 tinymce/static/tinymce/tinymce.min.js create mode 100644 tinymce/templates/tinymce/filebrowser.js create mode 100644 tinymce/templates/tinymce/tiny_mce_gzip.js create mode 100644 tinymce/urls.py create mode 100644 tinymce/views.py create mode 100644 tinymce/widgets.py diff --git a/README.md b/README.md index f930a7f..d6c3147 100644 --- a/README.md +++ b/README.md @@ -36,9 +36,3 @@ DB_PASSWORD=... $ python manage.py migrate $ python manage.py runserver ``` - -### Problemy z instalacją - -Mogą pojawić się problemy związane z instalacją `django-crispy-forms==1.12.0`. -Najpierw trzeba zainstalować wszystkie pakiety, potem dokładnie wersję `1.12.0`. -Pomimo błędów ta wersja jest potrzebna do działania diff --git a/app/admin.py b/app/admin.py index 97f2122..11b1dcf 100644 --- a/app/admin.py +++ b/app/admin.py @@ -2,7 +2,6 @@ from django.apps import apps from django.contrib import admin from django.shortcuts import HttpResponse from django.contrib.admin.sites import AlreadyRegistered -from django_summernote.admin import SummernoteModelAdmin from .models import Announcement, Edition, School, Student from django.db import transaction @@ -10,10 +9,6 @@ from io import BytesIO import xlsxwriter -class AnnouncementModelAdmin(SummernoteModelAdmin): - summernote_fields = ['content'] - - class EditionModelAdmin(admin.ModelAdmin): list_display = ('__str__', 'active') ordering = ('-active', '-year') @@ -33,7 +28,8 @@ class EditionModelAdmin(admin.ModelAdmin): if index == 0: continue - Student.objects.filter(identifier=row[0]).update(score_first=row[1], score_second=row[2]) + Student.objects.filter(identifier=row[0]).update( + score_first=row[1], score_second=row[2]) if '_update-disable-submissions' in request.POST and obj.active and obj.submissions: if obj.active is True: @@ -49,7 +45,8 @@ class EditionModelAdmin(admin.ModelAdmin): if '_generate-student-list' in request.POST: year = obj.year students = Student.objects.filter(identifier__startswith=year) - schools_set = {int(student.identifier.split('-')[1]) for student in students} + schools_set = {int(student.identifier.split('-') + [1]) for student in students} output = BytesIO() workbook = xlsxwriter.Workbook(output) @@ -69,15 +66,21 @@ class EditionModelAdmin(admin.ModelAdmin): row = 1 for school_id in schools_set: for student in sorted(Student.objects.filter(identifier__startswith=f'{year}-{school_id}-'), key=lambda x: x.identifier.split('-')[2]): - worksheet.write(row, 0, student.identifier) # Identyfikator - worksheet.write(row, 1, student.score_first) # Wynik - eliminacje - worksheet.write(row, 2, student.score_second) # Wynik - finał + # Identyfikator + worksheet.write(row, 0, student.identifier) + # Wynik - eliminacje + worksheet.write(row, 1, student.score_first) + # Wynik - finał + worksheet.write(row, 2, student.score_second) worksheet.write(row, 3, student.name) # Imię worksheet.write(row, 4, student.surname) # Nazwisko worksheet.write(row, 5, student.grade) # Klasa - worksheet.write(row, 6, student.school_name) # Szkoła - nazwa - worksheet.write(row, 7, student.school_town) # Szkoła - miejscowość - worksheet.write(row, 8, student.school_address) # Szkoła - adres + # Szkoła - nazwa + worksheet.write(row, 6, student.school_name) + # Szkoła - miejscowość + worksheet.write(row, 7, student.school_town) + # Szkoła - adres + worksheet.write(row, 8, student.school_address) row += 1 @@ -93,14 +96,33 @@ class EditionModelAdmin(admin.ModelAdmin): return super().response_change(request, obj) +class StudentYearFilter(admin.SimpleListFilter): + title = 'aktualna edycja' + parameter_name = 'aktualna edycja' + + def lookups(self, request, model_admin): + return ( + ('Yes', 'Jedynie aktualna edycja'), + ) + + def queryset(self, request, queryset): + value = self.value() + year = Edition.current().year + + if value == 'Yes': + return queryset.filter(identifier__startswith=str(year)) + + return queryset + + class StudentModelAdmin(admin.ModelAdmin): list_display = ('identifier', '__str__', 'grade') search_fields = ('identifier', 'name', 'surname', 'grade') - ordering = ('identifier',) + ordering = ('-identifier',) + list_filter = (StudentYearFilter,) admin.site.register(Student, StudentModelAdmin) -admin.site.register(Announcement, AnnouncementModelAdmin) admin.site.register(Edition, EditionModelAdmin) diff --git a/app/migrations/0003_alter_announcement_content.py b/app/migrations/0003_alter_announcement_content.py new file mode 100644 index 0000000..df4f7b0 --- /dev/null +++ b/app/migrations/0003_alter_announcement_content.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.5 on 2022-12-05 02:41 + +from django.db import migrations +import tinymce.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0002_auto_20220420_1823'), + ] + + operations = [ + migrations.AlterField( + model_name='announcement', + name='content', + field=tinymce.models.HTMLField(verbose_name='Treść'), + ), + ] diff --git a/app/migrations/0004_auto_20221205_0348.py b/app/migrations/0004_auto_20221205_0348.py new file mode 100644 index 0000000..91bd3e4 --- /dev/null +++ b/app/migrations/0004_auto_20221205_0348.py @@ -0,0 +1,33 @@ +# Generated by Django 3.2.5 on 2022-12-05 02:48 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0003_alter_announcement_content'), + ] + + operations = [ + migrations.AlterField( + model_name='edition', + name='active', + field=models.BooleanField(default=False, verbose_name='Aktualna edycja'), + ), + migrations.AlterField( + model_name='edition', + name='scores_available', + field=models.BooleanField(default=False, verbose_name='Wyniki finałowe opublikowane'), + ), + migrations.AlterField( + model_name='edition', + name='scores_eliminations', + field=models.BooleanField(default=False, verbose_name='Wyniki z eliminacji opublikowane dla nauczycieli'), + ), + migrations.AlterField( + model_name='edition', + name='submissions', + field=models.BooleanField(default=False, verbose_name='Rejestracja drużyn'), + ), + ] diff --git a/app/models.py b/app/models.py index 16c75a3..2ad4f2e 100644 --- a/app/models.py +++ b/app/models.py @@ -1,26 +1,35 @@ from django.contrib.auth.models import PermissionsMixin from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager from django.db import models, transaction +from tinymce.models import HTMLField class Edition(models.Model): year = models.PositiveIntegerField('Rok', unique=True) roman = models.CharField('Nr. edycji', max_length=25) - active = models.BooleanField('Aktualna', default=False) - submissions = models.BooleanField('Możliwość zgłoszenia drużyny', default=False) + active = models.BooleanField('Aktualna edycja', default=False) + submissions = models.BooleanField( + 'Rejestracja drużyn', default=False) - scores_available = models.BooleanField('Wyniki dostępne dla wszystkich', default=False) - scores_eliminations = models.BooleanField('Wyniki z eliminacji dostępne dla nauczycieli', default=False) + scores_eliminations = models.BooleanField( + 'Wyniki z eliminacji opublikowane dla nauczycieli', default=False) + scores_available = models.BooleanField( + 'Wyniki finałowe opublikowane', default=False) - entry_threshold = models.IntegerField('Próg punkowy - wejście do finału', default=0) - award_threshold = models.IntegerField('Próg punktowy - wyróżnienie', default=0) - laureate_threshold = models.IntegerField('Próg punktowy - tytuł laureata', default=0) + entry_threshold = models.IntegerField( + 'Próg punkowy - wejście do finału', default=0) + award_threshold = models.IntegerField( + 'Próg punktowy - wyróżnienie', default=0) + laureate_threshold = models.IntegerField( + 'Próg punktowy - tytuł laureata', default=0) scores = models.FileField('Wyniki do wczytania', blank=True, upload_to='wyniki', help_text='Uwaga! Wyniki muszą być zawarte w pliku .csv. Kolumny po kolei to odpowiednio: identyfikator ucznia, wynik z eliminacji, wynik z finału.') - first_test = models.FileField('Zadania eliminacyjne', blank=True, upload_to='eliminacje') - second_test = models.FileField('Zadania finałowe', blank=True, upload_to='finaly') + first_test = models.FileField( + 'Zadania eliminacyjne', blank=True, upload_to='eliminacje') + second_test = models.FileField( + 'Zadania finałowe', blank=True, upload_to='finaly') def __str__(self): return f'Edycja {self.roman}' @@ -43,7 +52,8 @@ class Edition(models.Model): class Student(models.Model): name = models.CharField('Imię', max_length=50) surname = models.CharField('Nazwisko', max_length=50) - grade = models.PositiveIntegerField('Klasa', choices=map(lambda x: (x, x), range(1, 9))) + grade = models.PositiveIntegerField( + 'Klasa', choices=map(lambda x: (x, x), range(1, 9))) score_first = models.IntegerField('Wynik z eliminacji', default=0) score_second = models.IntegerField('Wynik z finału', default=0) @@ -65,7 +75,7 @@ class Student(models.Model): class Announcement(models.Model): title = models.CharField('Tytuł', max_length=250) - content = models.TextField('Treść') + content = HTMLField('Treść') created_at = models.DateTimeField(auto_now_add=True) def __str__(self): @@ -115,8 +125,10 @@ class School(AbstractBaseUser, PermissionsMixin): is_staff = models.BooleanField('Staff status', default=False) is_active = models.BooleanField('Active status', default=True) - request_notifications = models.BooleanField('Powiadomienia przy wysłaniu zgłoszenia', default=False) - email_notifications = models.BooleanField('Powiadomienia przy wysłaniu wiadomości email', default=False) + request_notifications = models.BooleanField( + 'Powiadomienia przy wysłaniu zgłoszenia', default=False) + email_notifications = models.BooleanField( + 'Powiadomienia przy wysłaniu wiadomości email', default=False) objects = UserManager() diff --git a/app/templates/admin/edition_buttons.html b/app/templates/admin/edition_buttons.html index 9bcd670..923673e 100644 --- a/app/templates/admin/edition_buttons.html +++ b/app/templates/admin/edition_buttons.html @@ -3,7 +3,7 @@
Liczba punktów zdobytych podczas eliminacji - {% if ongoing.entry_threshold > 0 %} + {% if ongoing.entry_threshold >= 0 %} Wynik eliminacji {% endif %} {% endif %} @@ -44,7 +44,7 @@ {% if ongoing.entry_threshold > 0 %} - {% if student.score_first > ongoing.entry_threshold %} + {% if student.score_first >= ongoing.entry_threshold %} Uczeń zakwalifikowany do finału {% else %} Uczeń niezakwalifikowany do finału diff --git a/crispy_forms/LICENSE b/crispy_forms/LICENSE new file mode 100644 index 0000000..c3b9ee5 --- /dev/null +++ b/crispy_forms/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2009 Daniel Greenfeld and 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. \ No newline at end of file diff --git a/crispy_forms/LICENSE.txt b/crispy_forms/LICENSE.txt new file mode 100644 index 0000000..c1c3cf8 --- /dev/null +++ b/crispy_forms/LICENSE.txt @@ -0,0 +1,22 @@ +Copyright (c) 2009-2021 Miguel Araujo, Daniel Feldroy and 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. diff --git a/crispy_forms/__init__.py b/crispy_forms/__init__.py new file mode 100644 index 0000000..b9f68ed --- /dev/null +++ b/crispy_forms/__init__.py @@ -0,0 +1 @@ +__version__ = "1.14.0" diff --git a/crispy_forms/base.py b/crispy_forms/base.py new file mode 100644 index 0000000..87c479a --- /dev/null +++ b/crispy_forms/base.py @@ -0,0 +1,22 @@ +class KeepContext: + """ + Context manager that receives a `django.template.Context` instance and a list of keys + + Once the context manager is exited, it removes `keys` from the context, to avoid + side effects in later layout objects that may use the same context variables. + + Layout objects should use `extra_context` to introduce context variables, never + touch context object themselves, that could introduce side effects. + """ + + def __init__(self, context, keys): + self.context = context + self.keys = keys + + def __enter__(self): + pass + + def __exit__(self, type, value, traceback): + for key in list(self.keys): + if key in self.context: + del self.context[key] diff --git a/crispy_forms/bootstrap.py b/crispy_forms/bootstrap.py new file mode 100644 index 0000000..aac501d --- /dev/null +++ b/crispy_forms/bootstrap.py @@ -0,0 +1,1132 @@ +from random import randint + +from django.template import Template +from django.template.loader import render_to_string +from django.utils.safestring import SafeString +from django.utils.text import slugify + +from .layout import Div, Field, LayoutObject, TemplateNameMixin +from .utils import TEMPLATE_PACK, flatatt, render_field + + +class PrependedAppendedText(Field): + """ + Layout object for rendering a field with prepended and appended text. + + Attributes + ---------- + template : str + The default template which this Layout Object will be rendered + with. + attrs : dict + Attributes to be applied to the field. These are converted into html + attributes. e.g. ``data_id: 'test'`` in the attrs dict will become + ``data-id='test'`` on the field's ````. + + Parameters + ---------- + field : str + The name of the field to be rendered. + prepended_text : str, optional + The prepended text, can be HTML like, by default None + appended_text : str, optional + The appended text, can be HTML like, by default None + input_size : str, optional + For Bootstrap4+ additional classes to customise the input-group size + e.g. ``input-group-sm``. By default None + active : bool + For Bootstrap3, a boolean to render the text active. By default + ``False``. + css_class : str, optional + CSS classes to be applied to the field. These are added to any classes + included in the ``attrs`` dict. By default ``None``. + wrapper_class: str, optional + CSS classes to be used when rendering the Field. This class is usually + applied to the ``
`` which wraps the Field's ``