From f2f4f9057d65f8e5b330194e1ceea342a183d25f Mon Sep 17 00:00:00 2001 From: Thomas Aglassinger Date: Tue, 24 Oct 2023 19:31:06 +0200 Subject: [PATCH 1/2] #73 Restart site with Django 4 --- .gitignore | 15 +- .idea/misc.xml | 2 +- .idea/pygraz_website.iml | 2 +- .pre-commit-config.yaml | 12 +- .python-version | 1 - .travis.yml | 13 - Makefile | 5 - ansible/hosts | 2 - ansible/playbooks/deploy.yml | 46 - {pygraz_website/apps => core}/__init__.py | 0 core/admin.py | 3 + core/apps.py | 6 + .../accounts => core/migrations}/__init__.py | 0 core/models.py | 3 + core/tests.py | 3 + core/views.py | 3 + manage-dev.py | 10 - manage-live.py | 10 - manage-stage.py | 10 - manage-testing.py | 10 - manage.py | 21 +- poetry.lock | 81 + production-exclude.lst | 10 - pygraz_website/apps/accounts/contents.py | 64 - pygraz_website/apps/accounts/forms.py | 86 - .../apps/accounts/migrations/0001_initial.py | 52 - ..._options_alter_profile_privacy_and_more.py | 43 - .../apps/accounts/migrations/__init__.py | 0 pygraz_website/apps/accounts/models.py | 17 - .../accounts/south_migrations/0001_initial.py | 106 - .../accounts/south_migrations/__init__.py | 0 .../accounts/contents/company_items.html | 5 - .../accounts/contents/session_items.html | 5 - .../templates/accounts/my_contents.html | 11 - pygraz_website/apps/accounts/urls.py | 80 - pygraz_website/apps/accounts/views.py | 17 - pygraz_website/apps/companies/__init__.py | 0 pygraz_website/apps/companies/admin.py | 13 - pygraz_website/apps/companies/emails.py | 6 - pygraz_website/apps/companies/forms.py | 38 - .../apps/companies/migrations/0001_initial.py | 39 - .../migrations/0002_contact_email_length.py | 15 - ...r_company_country_alter_company_editors.py | 24 - .../apps/companies/migrations/__init__.py | 0 pygraz_website/apps/companies/models.py | 48 - .../south_migrations/0001_initial.py | 134 - .../0002_auto__add_field_company_pub_date.py | 113 - .../companies/south_migrations/__init__.py | 0 .../companies/templates/companies/base.html | 2 - .../templates/companies/company_detail.html | 55 - .../templates/companies/company_form.html | 21 - .../templates/companies/company_list.html | 43 - .../companies/emails/admin_approval.txt | 5 - pygraz_website/apps/companies/tests.py | 146 - pygraz_website/apps/companies/urls.py | 21 - pygraz_website/apps/companies/views.py | 62 - pygraz_website/apps/core/__init__.py | 0 .../apps/core/migrations/__init__.py | 0 .../apps/core/templatetags/__init__.py | 0 .../apps/core/templatetags/markdown_tags.py | 17 - pygraz_website/apps/core/tests.py | 14 - pygraz_website/apps/meetups/__init__.py | 0 pygraz_website/apps/meetups/admin.py | 128 - pygraz_website/apps/meetups/decorators.py | 13 - pygraz_website/apps/meetups/emails.py | 20 - pygraz_website/apps/meetups/forms.py | 115 - .../apps/meetups/management/__init__.py | 0 .../meetups/management/commands/__init__.py | 0 .../management/commands/fetch_rsvps.py | 56 - .../apps/meetups/migrations/0001_initial.py | 159 - .../migrations/0002_rsvp_refactoring.py | 12 - .../meetups/migrations/0003_field_lengths.py | 25 - ...tup_location_alter_rsvp_meetup_and_more.py | 112 - .../migrations/0005_location_map_image.py | 17 - .../apps/meetups/migrations/__init__.py | 0 pygraz_website/apps/meetups/models.py | 218 - .../meetups/south_migrations/0001_initial.py | 178 - .../south_migrations/0002_speaker_email.py | 134 - .../0003_extended_session_info.py | 151 - .../south_migrations/0004_meetupcom_field.py | 145 - .../south_migrations/0005_meetup_notes.py | 146 - .../south_migrations/0006_auto__add_rsvp.py | 178 - .../0007_auto__add_field_meetup_gplus_id.py | 172 - ...8_auto__add_field_meetup_attendee_count.py | 173 - ...add_sessiontype__add_field_session_type.py | 202 - ...sion_type__add_field_meetup_description.py | 203 - .../apps/meetups/south_migrations/__init__.py | 0 .../apps/meetups/templates/meetups/404.html | 5 - .../apps/meetups/templates/meetups/500.html | 10 - .../apps/meetups/templates/meetups/base.html | 2 - .../templates/meetups/base_original.html | 63 - .../templates/meetups/emails/new_session.txt | 6 - .../apps/meetups/templates/meetups/index.html | 58 - .../templates/meetups/meetup-data.html | 85 - .../templates/meetups/meetup_detail.html | 22 - .../meetups/session_confirm_delete.html | 9 - .../templates/meetups/session_detail.html | 50 - .../templates/meetups/session_form.html | 7 - .../templates/userena/base_userena.html | 4 - .../meetups/templates/userena/email_form.html | 9 - .../emails/activation_email_message.txt | 11 - .../emails/activation_email_subject.txt | 2 - .../emails/confirmation_email_message_new.txt | 10 - .../emails/confirmation_email_message_old.txt | 7 - .../emails/confirmation_email_subject_new.txt | 2 - .../emails/confirmation_email_subject_old.txt | 2 - .../userena/emails/password_reset_message.txt | 13 - .../templates/userena/password_form.html | 8 - .../userena/password_reset_confirm_form.html | 8 - .../userena/password_reset_form.html | 8 - .../templates/userena/profile_form.html | 7 - .../templates/userena/signin_form.html | 9 - .../templates/userena/signup_form.html | 11 - pygraz_website/apps/meetups/tests/__init__.py | 0 .../apps/meetups/tests/test_calendar.py | 31 - .../apps/meetups/tests/test_commands.py | 64 - .../apps/meetups/tests/test_models.py | 108 - .../apps/meetups/tests/test_views.py | 169 - pygraz_website/apps/meetups/urls.py | 26 - pygraz_website/apps/meetups/views.py | 209 - pygraz_website/asgi.py | 16 + pygraz_website/context_processors.py | 16 - .../locale/de/LC_MESSAGES/django.po | 252 - pygraz_website/settings.py | 123 + pygraz_website/settings/__init__.py | 0 pygraz_website/settings/base.py | 213 - pygraz_website/settings/development.py | 17 - pygraz_website/settings/secrets.py | 5 - pygraz_website/settings/testing.py | 17 - pygraz_website/static/config.rb | 12 - pygraz_website/static/css/_fonts.scss | 77 - pygraz_website/static/css/_forms.scss | 110 - pygraz_website/static/css/icomoon/_style.scss | 51 - pygraz_website/static/css/screen.scss | 639 -- .../static/fonts/League_Gothic-webfont.eot | Bin 45426 -> 0 bytes .../fonts/League_Gothic-webfont.license.txt | 105 - .../static/fonts/League_Gothic-webfont.svg | 235 - .../static/fonts/League_Gothic-webfont.ttf | Bin 45212 -> 0 bytes .../static/fonts/League_Gothic-webfont.woff | Bin 23940 -> 0 bytes .../static/fonts/PTC55F-webfont.eot | Bin 27716 -> 0 bytes .../static/fonts/PTC55F-webfont.svg | 154 - .../static/fonts/PTC55F-webfont.ttf | Bin 27500 -> 0 bytes .../static/fonts/PTC55F-webfont.woff | Bin 18252 -> 0 bytes .../static/fonts/PTC75F-webfont.eot | Bin 26512 -> 0 bytes .../static/fonts/PTC75F-webfont.svg | 154 - .../static/fonts/PTC75F-webfont.ttf | Bin 26308 -> 0 bytes .../static/fonts/PTC75F-webfont.woff | Bin 17716 -> 0 bytes .../static/fonts/PTN57F-webfont.eot | Bin 25908 -> 0 bytes .../static/fonts/PTN57F-webfont.svg | 154 - .../static/fonts/PTN57F-webfont.ttf | Bin 25696 -> 0 bytes .../static/fonts/PTN57F-webfont.woff | Bin 17084 -> 0 bytes .../static/fonts/PTN77F-webfont.eot | Bin 25028 -> 0 bytes .../static/fonts/PTN77F-webfont.svg | 157 - .../static/fonts/PTN77F-webfont.ttf | Bin 24828 -> 0 bytes .../static/fonts/PTN77F-webfont.woff | Bin 16620 -> 0 bytes .../static/fonts/PTS55F-webfont.eot | Bin 26928 -> 0 bytes .../static/fonts/PTS55F-webfont.svg | 153 - .../static/fonts/PTS55F-webfont.ttf | Bin 26744 -> 0 bytes .../static/fonts/PTS55F-webfont.woff | Bin 17592 -> 0 bytes .../static/fonts/PTS56F-webfont.eot | Bin 30512 -> 0 bytes .../static/fonts/PTS56F-webfont.svg | 153 - .../static/fonts/PTS56F-webfont.ttf | Bin 30332 -> 0 bytes .../static/fonts/PTS56F-webfont.woff | Bin 19640 -> 0 bytes .../static/fonts/PTS75F-webfont.eot | Bin 25456 -> 0 bytes .../static/fonts/PTS75F-webfont.svg | 157 - .../static/fonts/PTS75F-webfont.ttf | Bin 25284 -> 0 bytes .../static/fonts/PTS75F-webfont.woff | Bin 16964 -> 0 bytes .../static/fonts/PTS76F-webfont.eot | Bin 29352 -> 0 bytes .../static/fonts/PTS76F-webfont.svg | 157 - .../static/fonts/PTS76F-webfont.ttf | Bin 29152 -> 0 bytes .../static/fonts/PTS76F-webfont.woff | Bin 19196 -> 0 bytes .../Paratype PT Sans Free Font License.txt | 26 - pygraz_website/static/imgs/base-bg.jpg | Bin 112623 -> 0 bytes pygraz_website/static/imgs/gplus-64.png | Bin 3217 -> 0 bytes pygraz_website/static/imgs/logo.png | Bin 7137 -> 0 bytes pygraz_website/static/imgs/meetup-logo.png | Bin 5234 -> 0 bytes pygraz_website/static/imgs/toparrow-bg.png | Bin 323 -> 0 bytes pygraz_website/static/imgs/toparrow-bg.pxm | Bin 20868 -> 0 bytes pygraz_website/static/js/jquery-1.7.2.min.js | 5405 ----------------- pygraz_website/urls.py | 32 +- pygraz_website/views.py | 36 - pygraz_website/wsgi.py | 25 +- pyproject.toml | 17 +- requirements/base.txt | 16 - requirements/development.txt | 4 - requirements/live.txt | 4 - requirements/stage.txt | 3 - requirements/testing.txt | 8 - tox.ini | 12 - 189 files changed, 305 insertions(+), 13572 deletions(-) delete mode 100644 .python-version delete mode 100644 .travis.yml delete mode 100644 Makefile delete mode 100644 ansible/hosts delete mode 100644 ansible/playbooks/deploy.yml rename {pygraz_website/apps => core}/__init__.py (100%) create mode 100644 core/admin.py create mode 100644 core/apps.py rename {pygraz_website/apps/accounts => core/migrations}/__init__.py (100%) create mode 100644 core/models.py create mode 100644 core/tests.py create mode 100644 core/views.py delete mode 100755 manage-dev.py delete mode 100755 manage-live.py delete mode 100755 manage-stage.py delete mode 100755 manage-testing.py create mode 100644 poetry.lock delete mode 100644 production-exclude.lst delete mode 100644 pygraz_website/apps/accounts/contents.py delete mode 100644 pygraz_website/apps/accounts/forms.py delete mode 100644 pygraz_website/apps/accounts/migrations/0001_initial.py delete mode 100644 pygraz_website/apps/accounts/migrations/0002_alter_profile_options_alter_profile_privacy_and_more.py delete mode 100644 pygraz_website/apps/accounts/migrations/__init__.py delete mode 100644 pygraz_website/apps/accounts/models.py delete mode 100644 pygraz_website/apps/accounts/south_migrations/0001_initial.py delete mode 100644 pygraz_website/apps/accounts/south_migrations/__init__.py delete mode 100644 pygraz_website/apps/accounts/templates/accounts/contents/company_items.html delete mode 100644 pygraz_website/apps/accounts/templates/accounts/contents/session_items.html delete mode 100644 pygraz_website/apps/accounts/templates/accounts/my_contents.html delete mode 100644 pygraz_website/apps/accounts/urls.py delete mode 100644 pygraz_website/apps/accounts/views.py delete mode 100644 pygraz_website/apps/companies/__init__.py delete mode 100644 pygraz_website/apps/companies/admin.py delete mode 100644 pygraz_website/apps/companies/emails.py delete mode 100644 pygraz_website/apps/companies/forms.py delete mode 100644 pygraz_website/apps/companies/migrations/0001_initial.py delete mode 100644 pygraz_website/apps/companies/migrations/0002_contact_email_length.py delete mode 100644 pygraz_website/apps/companies/migrations/0003_alter_company_country_alter_company_editors.py delete mode 100644 pygraz_website/apps/companies/migrations/__init__.py delete mode 100644 pygraz_website/apps/companies/models.py delete mode 100644 pygraz_website/apps/companies/south_migrations/0001_initial.py delete mode 100644 pygraz_website/apps/companies/south_migrations/0002_auto__add_field_company_pub_date.py delete mode 100644 pygraz_website/apps/companies/south_migrations/__init__.py delete mode 100644 pygraz_website/apps/companies/templates/companies/base.html delete mode 100644 pygraz_website/apps/companies/templates/companies/company_detail.html delete mode 100644 pygraz_website/apps/companies/templates/companies/company_form.html delete mode 100644 pygraz_website/apps/companies/templates/companies/company_list.html delete mode 100644 pygraz_website/apps/companies/templates/companies/emails/admin_approval.txt delete mode 100644 pygraz_website/apps/companies/tests.py delete mode 100644 pygraz_website/apps/companies/urls.py delete mode 100644 pygraz_website/apps/companies/views.py delete mode 100644 pygraz_website/apps/core/__init__.py delete mode 100644 pygraz_website/apps/core/migrations/__init__.py delete mode 100644 pygraz_website/apps/core/templatetags/__init__.py delete mode 100644 pygraz_website/apps/core/templatetags/markdown_tags.py delete mode 100644 pygraz_website/apps/core/tests.py delete mode 100644 pygraz_website/apps/meetups/__init__.py delete mode 100644 pygraz_website/apps/meetups/admin.py delete mode 100644 pygraz_website/apps/meetups/decorators.py delete mode 100644 pygraz_website/apps/meetups/emails.py delete mode 100644 pygraz_website/apps/meetups/forms.py delete mode 100644 pygraz_website/apps/meetups/management/__init__.py delete mode 100644 pygraz_website/apps/meetups/management/commands/__init__.py delete mode 100644 pygraz_website/apps/meetups/management/commands/fetch_rsvps.py delete mode 100644 pygraz_website/apps/meetups/migrations/0001_initial.py delete mode 100644 pygraz_website/apps/meetups/migrations/0002_rsvp_refactoring.py delete mode 100644 pygraz_website/apps/meetups/migrations/0003_field_lengths.py delete mode 100644 pygraz_website/apps/meetups/migrations/0004_alter_meetup_location_alter_rsvp_meetup_and_more.py delete mode 100644 pygraz_website/apps/meetups/migrations/0005_location_map_image.py delete mode 100644 pygraz_website/apps/meetups/migrations/__init__.py delete mode 100644 pygraz_website/apps/meetups/models.py delete mode 100644 pygraz_website/apps/meetups/south_migrations/0001_initial.py delete mode 100644 pygraz_website/apps/meetups/south_migrations/0002_speaker_email.py delete mode 100644 pygraz_website/apps/meetups/south_migrations/0003_extended_session_info.py delete mode 100644 pygraz_website/apps/meetups/south_migrations/0004_meetupcom_field.py delete mode 100644 pygraz_website/apps/meetups/south_migrations/0005_meetup_notes.py delete mode 100644 pygraz_website/apps/meetups/south_migrations/0006_auto__add_rsvp.py delete mode 100644 pygraz_website/apps/meetups/south_migrations/0007_auto__add_field_meetup_gplus_id.py delete mode 100644 pygraz_website/apps/meetups/south_migrations/0008_auto__add_field_meetup_attendee_count.py delete mode 100644 pygraz_website/apps/meetups/south_migrations/0009_auto__add_sessiontype__add_field_session_type.py delete mode 100644 pygraz_website/apps/meetups/south_migrations/0010_auto__chg_field_session_type__add_field_meetup_description.py delete mode 100644 pygraz_website/apps/meetups/south_migrations/__init__.py delete mode 100644 pygraz_website/apps/meetups/templates/meetups/404.html delete mode 100644 pygraz_website/apps/meetups/templates/meetups/500.html delete mode 100644 pygraz_website/apps/meetups/templates/meetups/base.html delete mode 100644 pygraz_website/apps/meetups/templates/meetups/base_original.html delete mode 100644 pygraz_website/apps/meetups/templates/meetups/emails/new_session.txt delete mode 100644 pygraz_website/apps/meetups/templates/meetups/index.html delete mode 100644 pygraz_website/apps/meetups/templates/meetups/meetup-data.html delete mode 100644 pygraz_website/apps/meetups/templates/meetups/meetup_detail.html delete mode 100644 pygraz_website/apps/meetups/templates/meetups/session_confirm_delete.html delete mode 100644 pygraz_website/apps/meetups/templates/meetups/session_detail.html delete mode 100644 pygraz_website/apps/meetups/templates/meetups/session_form.html delete mode 100644 pygraz_website/apps/meetups/templates/userena/base_userena.html delete mode 100644 pygraz_website/apps/meetups/templates/userena/email_form.html delete mode 100644 pygraz_website/apps/meetups/templates/userena/emails/activation_email_message.txt delete mode 100644 pygraz_website/apps/meetups/templates/userena/emails/activation_email_subject.txt delete mode 100644 pygraz_website/apps/meetups/templates/userena/emails/confirmation_email_message_new.txt delete mode 100644 pygraz_website/apps/meetups/templates/userena/emails/confirmation_email_message_old.txt delete mode 100644 pygraz_website/apps/meetups/templates/userena/emails/confirmation_email_subject_new.txt delete mode 100644 pygraz_website/apps/meetups/templates/userena/emails/confirmation_email_subject_old.txt delete mode 100644 pygraz_website/apps/meetups/templates/userena/emails/password_reset_message.txt delete mode 100644 pygraz_website/apps/meetups/templates/userena/password_form.html delete mode 100644 pygraz_website/apps/meetups/templates/userena/password_reset_confirm_form.html delete mode 100644 pygraz_website/apps/meetups/templates/userena/password_reset_form.html delete mode 100644 pygraz_website/apps/meetups/templates/userena/profile_form.html delete mode 100644 pygraz_website/apps/meetups/templates/userena/signin_form.html delete mode 100644 pygraz_website/apps/meetups/templates/userena/signup_form.html delete mode 100644 pygraz_website/apps/meetups/tests/__init__.py delete mode 100644 pygraz_website/apps/meetups/tests/test_calendar.py delete mode 100644 pygraz_website/apps/meetups/tests/test_commands.py delete mode 100644 pygraz_website/apps/meetups/tests/test_models.py delete mode 100644 pygraz_website/apps/meetups/tests/test_views.py delete mode 100644 pygraz_website/apps/meetups/urls.py delete mode 100644 pygraz_website/apps/meetups/views.py create mode 100644 pygraz_website/asgi.py delete mode 100644 pygraz_website/context_processors.py delete mode 100644 pygraz_website/locale/de/LC_MESSAGES/django.po create mode 100644 pygraz_website/settings.py delete mode 100644 pygraz_website/settings/__init__.py delete mode 100644 pygraz_website/settings/base.py delete mode 100644 pygraz_website/settings/development.py delete mode 100644 pygraz_website/settings/secrets.py delete mode 100644 pygraz_website/settings/testing.py delete mode 100644 pygraz_website/static/config.rb delete mode 100644 pygraz_website/static/css/_fonts.scss delete mode 100644 pygraz_website/static/css/_forms.scss delete mode 100644 pygraz_website/static/css/icomoon/_style.scss delete mode 100644 pygraz_website/static/css/screen.scss delete mode 100755 pygraz_website/static/fonts/League_Gothic-webfont.eot delete mode 100644 pygraz_website/static/fonts/League_Gothic-webfont.license.txt delete mode 100755 pygraz_website/static/fonts/League_Gothic-webfont.svg delete mode 100755 pygraz_website/static/fonts/League_Gothic-webfont.ttf delete mode 100755 pygraz_website/static/fonts/League_Gothic-webfont.woff delete mode 100755 pygraz_website/static/fonts/PTC55F-webfont.eot delete mode 100755 pygraz_website/static/fonts/PTC55F-webfont.svg delete mode 100755 pygraz_website/static/fonts/PTC55F-webfont.ttf delete mode 100755 pygraz_website/static/fonts/PTC55F-webfont.woff delete mode 100755 pygraz_website/static/fonts/PTC75F-webfont.eot delete mode 100755 pygraz_website/static/fonts/PTC75F-webfont.svg delete mode 100755 pygraz_website/static/fonts/PTC75F-webfont.ttf delete mode 100755 pygraz_website/static/fonts/PTC75F-webfont.woff delete mode 100755 pygraz_website/static/fonts/PTN57F-webfont.eot delete mode 100755 pygraz_website/static/fonts/PTN57F-webfont.svg delete mode 100755 pygraz_website/static/fonts/PTN57F-webfont.ttf delete mode 100755 pygraz_website/static/fonts/PTN57F-webfont.woff delete mode 100755 pygraz_website/static/fonts/PTN77F-webfont.eot delete mode 100755 pygraz_website/static/fonts/PTN77F-webfont.svg delete mode 100755 pygraz_website/static/fonts/PTN77F-webfont.ttf delete mode 100755 pygraz_website/static/fonts/PTN77F-webfont.woff delete mode 100755 pygraz_website/static/fonts/PTS55F-webfont.eot delete mode 100755 pygraz_website/static/fonts/PTS55F-webfont.svg delete mode 100755 pygraz_website/static/fonts/PTS55F-webfont.ttf delete mode 100755 pygraz_website/static/fonts/PTS55F-webfont.woff delete mode 100755 pygraz_website/static/fonts/PTS56F-webfont.eot delete mode 100755 pygraz_website/static/fonts/PTS56F-webfont.svg delete mode 100755 pygraz_website/static/fonts/PTS56F-webfont.ttf delete mode 100755 pygraz_website/static/fonts/PTS56F-webfont.woff delete mode 100755 pygraz_website/static/fonts/PTS75F-webfont.eot delete mode 100755 pygraz_website/static/fonts/PTS75F-webfont.svg delete mode 100755 pygraz_website/static/fonts/PTS75F-webfont.ttf delete mode 100755 pygraz_website/static/fonts/PTS75F-webfont.woff delete mode 100755 pygraz_website/static/fonts/PTS76F-webfont.eot delete mode 100755 pygraz_website/static/fonts/PTS76F-webfont.svg delete mode 100755 pygraz_website/static/fonts/PTS76F-webfont.ttf delete mode 100755 pygraz_website/static/fonts/PTS76F-webfont.woff delete mode 100755 pygraz_website/static/fonts/Paratype PT Sans Free Font License.txt delete mode 100644 pygraz_website/static/imgs/base-bg.jpg delete mode 100644 pygraz_website/static/imgs/gplus-64.png delete mode 100644 pygraz_website/static/imgs/logo.png delete mode 100644 pygraz_website/static/imgs/meetup-logo.png delete mode 100644 pygraz_website/static/imgs/toparrow-bg.png delete mode 100644 pygraz_website/static/imgs/toparrow-bg.pxm delete mode 100644 pygraz_website/static/js/jquery-1.7.2.min.js delete mode 100644 pygraz_website/views.py delete mode 100644 requirements/base.txt delete mode 100644 requirements/development.txt delete mode 100644 requirements/live.txt delete mode 100644 requirements/stage.txt delete mode 100644 requirements/testing.txt delete mode 100644 tox.ini diff --git a/.gitignore b/.gitignore index 2df6773..6adad68 100644 --- a/.gitignore +++ b/.gitignore @@ -1,23 +1,14 @@ *.pyc -.env *.css *.sass-cache* *.diff *.sql *.sublime* -.codeintel -.venv -*.retry -pygraz_website/static/css/icomoon *.DS_Store *.zip *.mo -pygraz_website/settings/live.py -pygraz_website/settings/stage.py -live.ini -stage.ini -Procfile -.tox .coverage htmlcov -/database.db +/pygraz.dump +/_old/ +/db.sqlite3 diff --git a/.idea/misc.xml b/.idea/misc.xml index 6eca4f0..74c71f2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + diff --git a/.idea/pygraz_website.iml b/.idea/pygraz_website.iml index 0ba96ca..781adc4 100644 --- a/.idea/pygraz_website.iml +++ b/.idea/pygraz_website.iml @@ -5,7 +5,7 @@ - + diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d36e014..0f8d997 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,17 +7,17 @@ repos: - id: isort - repo: https://github.com/ambv/black - rev: 23.7.0 + rev: 23.10.1 hooks: - id: black - repo: https://github.com/pre-commit/mirrors-prettier - rev: v3.0.0 + rev: v3.0.3 hooks: - id: prettier - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v4.5.0 hooks: - id: fix-byte-order-marker - id: trailing-whitespace @@ -30,13 +30,13 @@ repos: - id: mixed-line-ending - repo: https://github.com/PyCQA/flake8 - rev: 6.0.0 + rev: 6.1.0 hooks: - id: flake8 additional_dependencies: ["pep8-naming==0.13.3"] - repo: https://github.com/asottile/pyupgrade - rev: v2.37.3 + rev: v3.15.0 hooks: - id: pyupgrade args: ["--py38-plus"] @@ -45,7 +45,7 @@ repos: # even for the rare case a commit should go into one of the protected # branches. - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v4.5.0 hooks: - id: no-commit-to-branch args: ["--branch", "develop"] diff --git a/.python-version b/.python-version deleted file mode 100644 index 9ad6380..0000000 --- a/.python-version +++ /dev/null @@ -1 +0,0 @@ -3.8.18 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index a848d71..0000000 --- a/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -language: python -python: - - "2.7" -sudo: false -env: - matrix: - - TOXENV=py27 -install: - - pip install coveralls - - pip install tox -script: tox -after_success: - - coveralls diff --git a/Makefile b/Makefile deleted file mode 100644 index 93ad82d..0000000 --- a/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -all: tests -tests: - export PYTHONPATH=. - coverage run manage-testing.py test meetups companies accounts --settings=pygraz_website.settings.testing - coverage report --include='pygraz_website*' --omit='*migrations*','*admin.py','*settings*' diff --git a/ansible/hosts b/ansible/hosts deleted file mode 100644 index 8dfaba3..0000000 --- a/ansible/hosts +++ /dev/null @@ -1,2 +0,0 @@ -[live] -pygraz.org ansible_user=root diff --git a/ansible/playbooks/deploy.yml b/ansible/playbooks/deploy.yml deleted file mode 100644 index 2fe0bec..0000000 --- a/ansible/playbooks/deploy.yml +++ /dev/null @@ -1,46 +0,0 @@ ---- -- hosts: localhost - any_errors_fatal: true - vars: - - root: ../.. - tasks: - - stat: - path: "{{ root }}/.venv" - register: venv - - name: Create virtualenv if missing - when: not venv.stat.exists - shell: "virtualenv {{ root }}/.venv" - - name: Install all dependencies - shell: "{{ root }}/.venv/bin/pip install -r {{ root }}/requirements/base.txt" - - name: Build CSS - shell: compass compile -s compact - args: - chdir: "{{ root }}/pygraz_website/static" - - name: Compile messages - shell: "../.venv/bin/django-admin.py compilemessages" - args: - chdir: "{{ root}}/pygraz_website" - - name: Clean up previous artifacts - file: - path: production.zip - state: absent - - name: Build production.zip - shell: "zip -x@production-exclude.lst -r production.zip *" - args: - chdir: "{{ root }}" -- hosts: live - become_user: www-pygraz - become: true - tasks: - - name: Unzip package - unarchive: - src: ../../production.zip - dest: /srv/www/pygraz.org/live/app/ - - name: Install dependencies - shell: "CC=`which clang` ./env/bin/pip install -r app/requirements/live.txt" - args: - chdir: /srv/www/pygraz.org/live -- hosts: live - tasks: - - name: Restart server - shell: systemctl restart www-pygraz diff --git a/pygraz_website/apps/__init__.py b/core/__init__.py similarity index 100% rename from pygraz_website/apps/__init__.py rename to core/__init__.py diff --git a/core/admin.py b/core/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/core/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/core/apps.py b/core/apps.py new file mode 100644 index 0000000..c0ce093 --- /dev/null +++ b/core/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class CoreConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "core" diff --git a/pygraz_website/apps/accounts/__init__.py b/core/migrations/__init__.py similarity index 100% rename from pygraz_website/apps/accounts/__init__.py rename to core/migrations/__init__.py diff --git a/core/models.py b/core/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/core/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/core/tests.py b/core/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/core/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/core/views.py b/core/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/core/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/manage-dev.py b/manage-dev.py deleted file mode 100755 index bb1ae93..0000000 --- a/manage-dev.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env python -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pygraz_website.settings.development") - - from django.core.management import execute_from_command_line - - execute_from_command_line(sys.argv) diff --git a/manage-live.py b/manage-live.py deleted file mode 100755 index 8847d47..0000000 --- a/manage-live.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env python -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pygraz_website.settings.live") - - from django.core.management import execute_from_command_line - - execute_from_command_line(sys.argv) diff --git a/manage-stage.py b/manage-stage.py deleted file mode 100755 index 36cefad..0000000 --- a/manage-stage.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env python -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pygraz_website.settings.stage") - - from django.core.management import execute_from_command_line - - execute_from_command_line(sys.argv) diff --git a/manage-testing.py b/manage-testing.py deleted file mode 100755 index 544c7b1..0000000 --- a/manage-testing.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env python -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pygraz_website.settings.testing") - - from django.core.management import execute_from_command_line - - execute_from_command_line(sys.argv) diff --git a/manage.py b/manage.py index b5da0ca..beb59a5 100755 --- a/manage.py +++ b/manage.py @@ -1,11 +1,22 @@ #!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" import os import sys -if __name__ == "__main__": - if os.environ.get("DJANGO_SETTINGS_MODULE") is None: - raise OSError("environment variable DJANGO_SETTINGS_MODULE must be set") - - from django.core.management import execute_from_command_line +def main(): + """Run administrative tasks.""" + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pygraz_website.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() diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..c2c790c --- /dev/null +++ b/poetry.lock @@ -0,0 +1,81 @@ +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. + +[[package]] +name = "asgiref" +version = "3.7.2" +description = "ASGI specs, helper code, and adapters" +optional = false +python-versions = ">=3.7" +files = [ + {file = "asgiref-3.7.2-py3-none-any.whl", hash = "sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e"}, + {file = "asgiref-3.7.2.tar.gz", hash = "sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed"}, +] + +[package.dependencies] +typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""} + +[package.extras] +tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] + +[[package]] +name = "django" +version = "4.2.6" +description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." +optional = false +python-versions = ">=3.8" +files = [ + {file = "Django-4.2.6-py3-none-any.whl", hash = "sha256:a64d2487cdb00ad7461434320ccc38e60af9c404773a2f95ab0093b4453a3215"}, + {file = "Django-4.2.6.tar.gz", hash = "sha256:08f41f468b63335aea0d904c5729e0250300f6a1907bf293a65499496cdbc68f"}, +] + +[package.dependencies] +asgiref = ">=3.6.0,<4" +sqlparse = ">=0.3.1" +tzdata = {version = "*", markers = "sys_platform == \"win32\""} + +[package.extras] +argon2 = ["argon2-cffi (>=19.1.0)"] +bcrypt = ["bcrypt"] + +[[package]] +name = "sqlparse" +version = "0.4.4" +description = "A non-validating SQL parser." +optional = false +python-versions = ">=3.5" +files = [ + {file = "sqlparse-0.4.4-py3-none-any.whl", hash = "sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3"}, + {file = "sqlparse-0.4.4.tar.gz", hash = "sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c"}, +] + +[package.extras] +dev = ["build", "flake8"] +doc = ["sphinx"] +test = ["pytest", "pytest-cov"] + +[[package]] +name = "typing-extensions" +version = "4.8.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, + {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, +] + +[[package]] +name = "tzdata" +version = "2023.3" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +files = [ + {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"}, + {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"}, +] + +[metadata] +lock-version = "2.0" +python-versions = ">=3.10, <4" +content-hash = "1bee79ef0caff5f156d97d327fcaf0251d1bb71d3d663343e0f1ccd7f5207c57" diff --git a/production-exclude.lst b/production-exclude.lst deleted file mode 100644 index 038f105..0000000 --- a/production-exclude.lst +++ /dev/null @@ -1,10 +0,0 @@ -*.pyc -.env -*.sass-cache* -*.diff -*.sql -*.sublime* -.codeintel -*.DS_Store -*.zip -*.lst diff --git a/pygraz_website/apps/accounts/contents.py b/pygraz_website/apps/accounts/contents.py deleted file mode 100644 index f295da9..0000000 --- a/pygraz_website/apps/accounts/contents.py +++ /dev/null @@ -1,64 +0,0 @@ -class Registry: - """ - The content registry represents an index of all the model classes that - are relevant for user content. - """ - - _idx = [] - - def register(self, proxy): - """ - Adds a content proxy to the index. - """ - self._idx.append(proxy) - - def get_all(self, request, user=None): - """ - Returns a generator of tuples containing the label, model class and - queryset provided by each proxy already tailored to the given user. - """ - for proxy_cls in self._idx: - yield proxy_cls(request, user) - - -class BaseProxy: - """ - Every content provider has to register a so-called contentproxy which - should extend this base class. - """ - - _has_content = None - label = "Meine Daten" - model_class = None - - def __init__(self, request, user): - self.request = request - self.user = user - if not hasattr(self, "items_template") or self.item_template is None: - self.items_template = f"accounts/contents/{self.model_class.__name__.lower()}_items.html" - - def get_queryset(self): - return [] - - @property - def has_content(self): - if self._has_content is None: - self._has_content = bool(len(self.items)) - return self._has_content - - @property - def items(self): - if not hasattr(self, "_items") or self._items is None: - self._items = self.get_queryset() - return self._items - - -REGISTRY = Registry() - - -def register(proxy): - REGISTRY.register(proxy) - - -def get_all(request, user=None): - return REGISTRY.get_all(request, user) diff --git a/pygraz_website/apps/accounts/forms.py b/pygraz_website/apps/accounts/forms.py deleted file mode 100644 index 7deb4aa..0000000 --- a/pygraz_website/apps/accounts/forms.py +++ /dev/null @@ -1,86 +0,0 @@ -from crispy_forms.helper import FormHelper -from crispy_forms.layout import ButtonHolder, Field, Layout, Submit -from django.contrib.auth import forms as auth_forms -from django.utils.translation import gettext_lazy as _ -from userena import forms as userena_forms - - -class AuthenticationForm(userena_forms.AuthenticationForm): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.helper = FormHelper() - self.helper.layout = Layout( - Field("identification", autofocus="autofocus"), - Field("password"), - Field("remember_me"), - ButtonHolder(Submit("login", _("Log in"))), - ) - - -class ChangeEmailForm(userena_forms.ChangeEmailForm): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.helper = FormHelper() - self.helper.layout = Layout( - Field("email", autofocus="autofocus"), - ButtonHolder(Submit("save", _("Save changes"))), - ) - - -class PasswordChangeForm(auth_forms.PasswordChangeForm): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.helper = FormHelper() - self.helper.layout = Layout( - Field("old_password", autofocus="autofocus"), - Field("new_password1"), - Field("new_password2"), - ButtonHolder(Submit("save", _("Save changes"))), - ) - - -class PasswordResetForm(auth_forms.PasswordResetForm): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.helper = FormHelper() - self.helper.layout = Layout( - Field("email", autofocus="autofocus"), - ButtonHolder(Submit("save", _("Reset password"))), - ) - - -class SetPasswordForm(auth_forms.SetPasswordForm): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.helper = FormHelper() - self.helper.layout = Layout( - Field("new_password1", autofocus="autofocus"), - Field("new_password2"), - ButtonHolder(Submit("save", _("Reset password"))), - ) - - -class EditProfileForm(userena_forms.EditProfileForm): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.helper = FormHelper() - self.helper.layout = Layout( - Field("first_name", autofocus="autofocus"), - Field("last_name"), - Field("mugshot"), - Field("privacy"), - ButtonHolder(Submit("save", _("Save changes"))), - ) - - -class SignupForm(userena_forms.SignupForm): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.helper = FormHelper() - self.helper.layout = Layout( - Field("username"), - Field("email"), - Field("password1"), - Field("password2"), - ButtonHolder(Submit("register", _("Registrieren"))), - ) diff --git a/pygraz_website/apps/accounts/migrations/0001_initial.py b/pygraz_website/apps/accounts/migrations/0001_initial.py deleted file mode 100644 index 59f8394..0000000 --- a/pygraz_website/apps/accounts/migrations/0001_initial.py +++ /dev/null @@ -1,52 +0,0 @@ -import easy_thumbnails.fields -import userena.models -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name="Profile", - fields=[ - ("id", models.AutoField(verbose_name="ID", serialize=False, auto_created=True, primary_key=True)), - ( - "mugshot", - easy_thumbnails.fields.ThumbnailerImageField( - help_text="A personal image displayed in your profile.", - upload_to=userena.models.upload_to_mugshot, - verbose_name="mugshot", - blank=True, - ), - ), - ( - "privacy", - models.CharField( - default=b"registered", - help_text="Designates who can view your profile.", - max_length=15, - verbose_name="privacy", - choices=[(b"open", "Open"), (b"registered", "Registered"), (b"closed", "Closed")], - ), - ), - ( - "user", - models.OneToOneField( - related_name="profile", - verbose_name="user", - to=settings.AUTH_USER_MODEL, - on_delete=models.deletion.PROTECT, - ), - ), - ], - options={ - "abstract": False, - "permissions": (("view_profile", "Can view profile"),), - }, - bases=(models.Model,), - ), - ] diff --git a/pygraz_website/apps/accounts/migrations/0002_alter_profile_options_alter_profile_privacy_and_more.py b/pygraz_website/apps/accounts/migrations/0002_alter_profile_options_alter_profile_privacy_and_more.py deleted file mode 100644 index 904e033..0000000 --- a/pygraz_website/apps/accounts/migrations/0002_alter_profile_options_alter_profile_privacy_and_more.py +++ /dev/null @@ -1,43 +0,0 @@ -# Generated by Django 4.0.8 on 2022-11-05 15:12 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("accounts", "0001_initial"), - ] - - operations = [ - migrations.AlterModelOptions( - name="profile", - options={ - "default_permissions": ("add", "change", "delete"), - "permissions": (("view_profile", "Can view profile"),), - }, - ), - migrations.AlterField( - model_name="profile", - name="privacy", - field=models.CharField( - choices=[("open", "Open"), ("registered", "Registered"), ("closed", "Closed")], - default="registered", - help_text="Designates who can view your profile.", - max_length=15, - verbose_name="privacy", - ), - ), - migrations.AlterField( - model_name="profile", - name="user", - field=models.OneToOneField( - on_delete=django.db.models.deletion.CASCADE, - related_name="profile", - to=settings.AUTH_USER_MODEL, - verbose_name="user", - ), - ), - ] diff --git a/pygraz_website/apps/accounts/migrations/__init__.py b/pygraz_website/apps/accounts/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pygraz_website/apps/accounts/models.py b/pygraz_website/apps/accounts/models.py deleted file mode 100644 index 09cc316..0000000 --- a/pygraz_website/apps/accounts/models.py +++ /dev/null @@ -1,17 +0,0 @@ -from django.contrib.auth import models as auth_models -from django.db import models -from django.utils.translation import gettext_lazy as _ -from userena.models import UserenaBaseProfile - - -class Profile(UserenaBaseProfile): - user = models.OneToOneField( - auth_models.User, - unique=True, - verbose_name=_("user"), - on_delete=models.CASCADE, - related_name="profile", - ) - - def __str__(self): - return self.user.username diff --git a/pygraz_website/apps/accounts/south_migrations/0001_initial.py b/pygraz_website/apps/accounts/south_migrations/0001_initial.py deleted file mode 100644 index d1bfaab..0000000 --- a/pygraz_website/apps/accounts/south_migrations/0001_initial.py +++ /dev/null @@ -1,106 +0,0 @@ -import datetime - -from django.db import models -from south.db import db -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - def forwards(self, orm): - # Adding model 'Profile' - db.create_table( - "accounts_profile", - ( - ("id", self.gf("django.db.models.fields.AutoField")(primary_key=True)), - ("mugshot", self.gf("django.db.models.fields.files.ImageField")(max_length=100, blank=True)), - ("privacy", self.gf("django.db.models.fields.CharField")(default="registered", max_length=15)), - ( - "user", - self.gf("django.db.models.fields.related.OneToOneField")( - related_name="profile", unique=True, to=orm["auth.User"] - ), - ), - ), - ) - db.send_create_signal("accounts", ["Profile"]) - - def backwards(self, orm): - # Deleting model 'Profile' - db.delete_table("accounts_profile") - - models = { - "accounts.profile": { - "Meta": {"object_name": "Profile"}, - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "mugshot": ("django.db.models.fields.files.ImageField", [], {"max_length": "100", "blank": "True"}), - "privacy": ("django.db.models.fields.CharField", [], {"default": "'registered'", "max_length": "15"}), - "user": ( - "django.db.models.fields.related.OneToOneField", - [], - {"related_name": "'profile'", "unique": "True", "to": "orm['auth.User']"}, - ), - }, - "auth.group": { - "Meta": {"object_name": "Group"}, - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "80"}), - "permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - }, - "auth.permission": { - "Meta": { - "ordering": "('content_type__app_label', 'content_type__model', 'codename')", - "unique_together": "(('content_type', 'codename'),)", - "object_name": "Permission", - }, - "codename": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "content_type": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['contenttypes.ContentType']"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "50"}), - }, - "auth.user": { - "Meta": {"object_name": "User"}, - "date_joined": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "email": ("django.db.models.fields.EmailField", [], {"max_length": "75", "blank": "True"}), - "first_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "groups": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Group']", "symmetrical": "False", "blank": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "is_active": ("django.db.models.fields.BooleanField", [], {"default": "True"}), - "is_staff": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "is_superuser": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "last_login": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "last_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "password": ("django.db.models.fields.CharField", [], {"max_length": "128"}), - "user_permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - "username": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "30"}), - }, - "contenttypes.contenttype": { - "Meta": { - "ordering": "('name',)", - "unique_together": "(('app_label', 'model'),)", - "object_name": "ContentType", - "db_table": "'django_content_type'", - }, - "app_label": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "model": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - }, - } - - complete_apps = ["accounts"] diff --git a/pygraz_website/apps/accounts/south_migrations/__init__.py b/pygraz_website/apps/accounts/south_migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pygraz_website/apps/accounts/templates/accounts/contents/company_items.html b/pygraz_website/apps/accounts/templates/accounts/contents/company_items.html deleted file mode 100644 index cb3d630..0000000 --- a/pygraz_website/apps/accounts/templates/accounts/contents/company_items.html +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/pygraz_website/apps/accounts/templates/accounts/contents/session_items.html b/pygraz_website/apps/accounts/templates/accounts/contents/session_items.html deleted file mode 100644 index 59d989e..0000000 --- a/pygraz_website/apps/accounts/templates/accounts/contents/session_items.html +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/pygraz_website/apps/accounts/templates/accounts/my_contents.html b/pygraz_website/apps/accounts/templates/accounts/my_contents.html deleted file mode 100644 index a72b3e8..0000000 --- a/pygraz_website/apps/accounts/templates/accounts/my_contents.html +++ /dev/null @@ -1,11 +0,0 @@ -{% extends "base.html" %} -{% block title %}Meine Inhalte « {% endblock %} -{% block body %} -

Meine Inhalte

- {% for type in contents %} -
-

{{ type.label }}

- {% include type.items_template %} -
- {% endfor %} -{% endblock body %} diff --git a/pygraz_website/apps/accounts/urls.py b/pygraz_website/apps/accounts/urls.py deleted file mode 100644 index a9056f9..0000000 --- a/pygraz_website/apps/accounts/urls.py +++ /dev/null @@ -1,80 +0,0 @@ -from django.contrib.auth import views as auth_views -from django.contrib.auth.decorators import login_required -from django.urls import path - -# from userena import settngs as userena_settings -from userena import views as userena_views - -from . import forms, views - - -def merge_dicts(a, b): - result = {} - result.update(a) - result.update(b) - return result - - -urlpatterns = [ - path( - "signin/", - userena_views.signin, - {"auth_form": forms.AuthenticationForm}, - name="userena_signin", - ), - path( - "signup/", - userena_views.signup, - {"signup_form": forms.SignupForm}, - name="userena_signup", - ), - path( - "/email/", - userena_views.email_change, - {"email_form": forms.ChangeEmailForm}, - name="userena_email_change", - ), - path( - "/password/", - userena_views.password_change, - {"pass_form": forms.PasswordChangeForm}, - name="userena_password_change", - ), - path( - "password/reset/", - auth_views.PasswordResetView.as_view(), - merge_dicts( - { - "template_name": "userena/password_reset_form.html", - "email_template_name": "userena/emails/password_reset_message.txt", - "password_reset_form": forms.PasswordResetForm, - "extra_context": {"without_usernames": False}, - }, - {"post_reset_redirect": "userena_password_reset_done"}, - ), - name="userena_password_reset", - ), - path( - "password/reset/confirm/uidb64-/", - auth_views.PasswordResetConfirmView.as_view(), - merge_dicts( - { - "template_name": "userena/password_reset_confirm_form.html", - "set_password_form": forms.SetPasswordForm, - }, - {"post_reset_redirect": "userena_password_reset_complete"}, - ), - name="userena_password_reset_confirm", - ), - path( - "/edit/", - userena_views.profile_edit, - {"edit_profile_form": forms.EditProfileForm}, - name="userena_profile_edit", - ), - path( - "Firma: {{ company.name }} {% if not company.approved %}(nicht freigeschalten){% endif %} -
-
-
-
Website:
-
{{ company.website|truncatechars:50 }}
-
-
-
Adresse:
-
{{ company.address_line}}, {{ company.postal_code }} {{ company.city }}, {{ company.country }}
-
-
- {% if company.description %} -
{{ company.description|markdown }}
- {% endif %} - {% if is_editor %} - {# FIXME#40: Enable text and link to company update form. #} - {% comment %} - - {% endcomment %} - {% endif %} -{% endblock body %} -{% block tail %} - -{% endblock %} diff --git a/pygraz_website/apps/companies/templates/companies/company_form.html b/pygraz_website/apps/companies/templates/companies/company_form.html deleted file mode 100644 index 3278b41..0000000 --- a/pygraz_website/apps/companies/templates/companies/company_form.html +++ /dev/null @@ -1,21 +0,0 @@ -{% extends "companies/base.html" %} -{% block page_class %}company-submission{% endblock %} -{% block title %}{% if object %}{{ object.name }} editieren{% else %}Neue Firma eintragen{% endif %} « {% endblock %} -{% load crispy_forms_tags %} -{% block body %} -

- {% if object %} - {{ object.name }} editieren - {% else %} - Neue Firma eintragen - {% endif %} -

-
-

Auf dieser Seite können Sie Ihre Firma zum Verzeichnis von Python-Firmen in Graz hinzufügen. Bitte füllen Sie dieses - Formular nur aus, wenn Sie auch wirklich für diese Firma arbeiten.

-

Bevor Ihr Eintrag auch tatsächlich auf der Seite erscheint, muss er zunächst noch von einme Administrator freigeschalten werden. - Wir bitten um Verständnis für diese Vorsichtsmassnahme.

-

Ihr Eintrag kann jederzeit ohne Nennung von Gründen wieder von der Seite entfernt werden.

-
- {% crispy form %} -{% endblock body %} diff --git a/pygraz_website/apps/companies/templates/companies/company_list.html b/pygraz_website/apps/companies/templates/companies/company_list.html deleted file mode 100644 index 934c336..0000000 --- a/pygraz_website/apps/companies/templates/companies/company_list.html +++ /dev/null @@ -1,43 +0,0 @@ -{% extends "companies/base.html" %} - -{% block body %} -
-

Auf dieser Seite werden Firmen aus und in Graz aufgelistet, die Python verwenden.

- {# FIXME#40: Enable text and link to submission form. #} - {% comment %} -

Falls Sie eine für eine Firma arbeiten, die Python verwendet, hier jedoch noch nicht aufscheint, - würden wir uns sehr freuen, wenn Sie dieses Formular ausfüllen könnten.

- {% endcomment %} -
- {% if company_list %} - - - - - - - - - {% for company in company_list %} - - - - - {% endfor %} - -
NameAdresse
{{ company.name }}{{ company.address_line }}, {{ company.postal_code }} {{company.city }}
- {% else %} -

Keine Firmen gefunden.

- {% endif %} - - {% if unapproved_companies %} -
-

Noch nicht freigeschaltene Einträge

- -
- {% endif %} -{% endblock %} diff --git a/pygraz_website/apps/companies/templates/companies/emails/admin_approval.txt b/pygraz_website/apps/companies/templates/companies/emails/admin_approval.txt deleted file mode 100644 index f190a1f..0000000 --- a/pygraz_website/apps/companies/templates/companies/emails/admin_approval.txt +++ /dev/null @@ -1,5 +0,0 @@ -Eine neue Firma wurde angelegt: {{ company.name }} - -Beschreibung: - -{{ company.description }} diff --git a/pygraz_website/apps/companies/tests.py b/pygraz_website/apps/companies/tests.py deleted file mode 100644 index f5ec4d2..0000000 --- a/pygraz_website/apps/companies/tests.py +++ /dev/null @@ -1,146 +0,0 @@ -from django.contrib.auth.models import User -from django.db import IntegrityError -from django.test import TestCase -from guardian.shortcuts import assign_perm - -from . import models - - -class CompanyTestsMixin: - def setUp(self): - self.approved = models.Company( - name="Approved", - website="http://company.com", - address_line="address", - postal_code="8010", - city="Graz", - country="AT", - approved=True, - ) - self.approved.save() - - self.user = User.objects.create_user(username="username", password="password", email="test@test.com") - - self.not_approved = models.Company( - name="Not-Approved", - website="http://company.com", - address_line="address", - postal_code="8010", - city="Graz", - country="AT", - approved=False, - ) - self.not_approved.save() - self.not_approved.editors.add(self.user) - assign_perm("change_company", self.user, self.not_approved) - - -class ModelTests(TestCase): - def test_unicode(self): - """The unicode representation of a company should contain its name.""" - company = models.Company(name="MyCompany") - self.assertIn("MyCompany", str(company)) - - def test_absolute_url(self): - company = models.Company(name="MyCompany", pk=123) - self.assertEqual("/companies/show/123/", company.get_absolute_url()) - - -class DetailsViewTests(CompanyTestsMixin, TestCase): - def test_approved_company(self): - response = self.client.get("/companies/show/1/") - self.assertEqual(response.status_code, 200) - - def test_not_approved_company(self): - response = self.client.get("/companies/show/2/") - self.assertEqual(response.status_code, 404) - - def test_not_approved_but_editor_visible(self): - self.client.login(username="username", password="password") - response = self.client.get("/companies/show/2/") - self.assertEqual(response.status_code, 200) - - -class ListingTests(CompanyTestsMixin, TestCase): - def test_listing_approved(self): - """ - Only approved companies should be included in the listing view. - """ - response = self.client.get("/companies/") - self.assertEqual(response.status_code, 200) - self.assertEqual(list(response.context["company_list"]), [self.approved]) - - def test_listing_editor_logged_in(self): - """ - If the editor of a not approved company is logged in, this company - is included in the context. - """ - self.client.login(username="username", password="password") - response = self.client.get("/companies/") - self.assertEqual(response.status_code, 200) - self.assertEqual(list(response.context["unapproved_companies"]), [self.not_approved]) - - -class CreationTests(TestCase): - def setUp(self): - # FIXME#40: Find out why the user already exists and clean up this code to simply create the test user. - self.user = User.objects.filter(username="user").first() - if self.user is None: - self.user = User.objects.create_user(username="user", password="password", email="e@mail.com") - - def tearDown(self): - self.user.delete() - self.client.logout() - - # FIXME#40: Remove initial "_" from test name and fix it. - def _test_create_logged_out(self): - """ - If the user is logged out, creating a new company entry should be - prohibited and redirect the user to the login form. - """ - response = self.client.get("/companies/submit/") - self.assertRedirects(response, "/accounts/signin/?next=/companies/submit/") - - # FIXME#40: Remove initial "_" from test name and fix it. - def _test_create_logged_in(self): - self.client.login(username="user", password="password") - response = self.client.get("/companies/submit/") - self.assertEqual(200, response.status_code) - - response = self.client.post( - "/companies/submit/", - { - "name": "My Company", - "website": "http://company.com", - "address_line": "Street 123", - "postal_code": "8010", - "city": "Graz", - "country": "AT", - }, - ) - self.assertRedirects(response, "/companies/show/1/") - - -class UpdateViewTests(CompanyTestsMixin, TestCase): - # FIXME#40: Remove initial "_" from test name and fix it. - def _test_login_required(self): - response = self.client.get("/companies/update/1/") - self.assertRedirects(response, "/accounts/signin/?next=/companies/update/1/") - - # FIXME#40: Remove initial "_" from test name and fix it. - def _test_404_on_not_existing_company(self): - self.client.login(username="username", password="password") - response = self.client.get("/companies/update/3/") - self.assertEqual(response.status_code, 404) - - # FIXME#40: Remove initial "_" from test name and fix it. - def _test_404_if_not_allowed(self): - self.client.login(username="username", password="password") - response = self.client.get("/companies/update/1/") - self.assertEqual(response.status_code, 404) - - # FIXME#40: Remove initial "_" from test name and fix it. - def _test_ok_if_editor(self): - self.client.login(username="username", password="password") - response = self.client.get("/companies/update/2/") - self.assertEqual(response.status_code, 200) diff --git a/pygraz_website/apps/companies/urls.py b/pygraz_website/apps/companies/urls.py deleted file mode 100644 index b7249fc..0000000 --- a/pygraz_website/apps/companies/urls.py +++ /dev/null @@ -1,21 +0,0 @@ -# FIXME#40: from django.contrib.auth.decorators import login_required -from django.urls import path - -from . import views - -urlpatterns = [ - path("", views.ListCompaniesView.as_view(), name="list-companies"), - path("show//", views.CompanyDetailsView.as_view(), name="company-details"), - # FIXME#40: Enable company update form. - # path( - # "update//", - # views.UpdateCompanyView.as_view(), - # name="update-company", - # ), - # FIXME#40: Enable company submission form. - # path( - # "submit/", - # views.SubmitCompanyView.as_view(), - # name="submit-company", - # ), -] diff --git a/pygraz_website/apps/companies/views.py b/pygraz_website/apps/companies/views.py deleted file mode 100644 index ade1827..0000000 --- a/pygraz_website/apps/companies/views.py +++ /dev/null @@ -1,62 +0,0 @@ -from django.http import Http404 -from django.views.generic import CreateView, DetailView, ListView, UpdateView -from guardian.shortcuts import assign_perm - -from . import emails, forms, models - - -class ListCompaniesView(ListView): - model = models.Company - queryset = models.Company.objects.filter(approved=True) - - def get_context_data(self, **kwargs): - data = super().get_context_data(**kwargs) - if hasattr(self.request, "user") and self.request.user.is_authenticated: - data["unapproved_companies"] = self.request.user.companies.filter(approved=False) - return data - - -class CompanyDetailsView(DetailView): - model = models.Company - - def get_context_data(self, **kwargs): - data = super().get_context_data(**kwargs) - # Make sure that the company is approved or editable by the current - # user. - data["approved"] = self.object.approved - data["is_editor"] = self.request.user.has_perm("change_company", self.object) - if not self.object.approved and not data["is_editor"]: - raise Http404("Company not found") - return data - - -class SubmitCompanyView(CreateView): - """ - Before a company appears on the website, it has to be approved by an admin. - Hence this view only creates an unapproved company object. - """ - - model = models.Company - form_class = forms.CompanySubmissionForm - - def form_valid(self, form): - result = super().form_valid(form) - self.object.editors.add(self.request.user) - assign_perm("change_company", self.request.user, self.object) - emails.notify_admins_for_approval(self.object) - return result - - -class UpdateCompanyView(UpdateView): - """ - An update view available to every "editor" or a company. - """ - - model = models.Company - form_class = forms.CompanySubmissionForm - - def get_object(self, **kwargs): - obj = super().get_object(**kwargs) - if not self.request.user.has_perm("change_company", obj): - raise Http404("Company not found") - return obj diff --git a/pygraz_website/apps/core/__init__.py b/pygraz_website/apps/core/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pygraz_website/apps/core/migrations/__init__.py b/pygraz_website/apps/core/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pygraz_website/apps/core/templatetags/__init__.py b/pygraz_website/apps/core/templatetags/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pygraz_website/apps/core/templatetags/markdown_tags.py b/pygraz_website/apps/core/templatetags/markdown_tags.py deleted file mode 100644 index 85c33c5..0000000 --- a/pygraz_website/apps/core/templatetags/markdown_tags.py +++ /dev/null @@ -1,17 +0,0 @@ -import html - -from django.template import Library -from django.utils.safestring import mark_safe -from markdown import Markdown - -register = Library() - - -@register.filter(name="markdown") -def markdown(value): - """ - Basic markdown filter used throughout the site. - """ - md = Markdown() - markdown_html = md.convert(html.escape(value)) - return mark_safe(markdown_html) diff --git a/pygraz_website/apps/core/tests.py b/pygraz_website/apps/core/tests.py deleted file mode 100644 index de2c1f2..0000000 --- a/pygraz_website/apps/core/tests.py +++ /dev/null @@ -1,14 +0,0 @@ -from django.template import Context, Template -from django.test import TestCase - - -class MarkdownFilterTests(TestCase): - def test_html_escaping(self): - """ - The markdown template filter should remove HTML in its default - configuration. - """ - expected = "

<i>Some HTML</i>

" - tmpl = Template("{% load markdown_tags %}{{ data|markdown }}") - result = tmpl.render(Context({"data": "Some HTML"})) - self.assertEqual(expected, result) diff --git a/pygraz_website/apps/meetups/__init__.py b/pygraz_website/apps/meetups/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pygraz_website/apps/meetups/admin.py b/pygraz_website/apps/meetups/admin.py deleted file mode 100644 index 085615f..0000000 --- a/pygraz_website/apps/meetups/admin.py +++ /dev/null @@ -1,128 +0,0 @@ -from django.contrib import admin -from django.db.models import Q -from django.utils.translation import gettext_lazy as _ - -from . import models - - -class AssignedMeetupFilter(admin.SimpleListFilter): - """ - Filters sessions that are assigned to a meetup. - """ - - parameter_name = "assigned" - title = "hat Meetup" - - def lookups(self, request, model_admin): - return ( - ("assigned", _("Yes")), - ("unassigned", _("No")), - ) - - def queryset(self, request, queryset): - val = self.value() - if not val: - return queryset - return queryset.filter(meetup__isnull=(val != "assigned")) - - -class SessionWithSlidesFilter(admin.SimpleListFilter): - """ - Filters session that contain a link to slides. - """ - - parameter_name = "has_slides" - title = "hat Folien" - - def lookups(self, request, model_admin): - return ( - ("yes", _("Yes")), - ("no", _("No")), - ) - - def queryset(self, request, queryset): - val = self.value() - if not val: - return queryset - if val == "yes": - return queryset.exclude(Q(slides_url__isnull=True) | Q(slides_url="")) - else: - return queryset.filter(Q(slides_url__isnull=True) | Q(slides_url="")) - - -class SessionBySpeakerType(admin.SimpleListFilter): - """ - Filters sessions by the type of speaker they have set: anonymous or - registered. - """ - - parameter_name = "speakertype" - title = _("speaker type") - - def lookups(self, request, model_admin): - return ( - ("anon", _("Anonymous")), - ("reg", _("Registered")), - ) - - def queryset(self, request, queryset): - val = self.value() - if not val: - return queryset - return queryset.filter(speaker__isnull=(val == "anon")) - - -class MeetupComAvailable(admin.SimpleListFilter): - """ - Filters meetups that have a meetupcom_id assigned. - """ - - parameter_name = "meetupcom_available" - title = _("meetup.com available") - - def lookups(self, request, model_admin): - return (("yes", _("Yes")), ("no", _("No"))) - - def queryset(self, request, queryset): - val = self.value() - if not val: - return queryset - if val == "no": - return queryset.filter(Q(meetupcom_id="") | Q(meetupcom_id__isnull=True)) - else: - return queryset.exclude(Q(meetupcom_id="") | Q(meetupcom_id__isnull=True)) - - -class RSVPAdmin(admin.ModelAdmin): - list_display = ["meetup", "remote_username", "status", "source"] - list_filter = ["meetup"] - - -class SessionTypeAdmin(admin.ModelAdmin): - pass - - -admin.site.register( - models.Meetup, - list_display=["start_date", "location", "attendee_count"], - list_filter=[ - MeetupComAvailable, - ], -) -admin.site.register( - models.Session, - list_display=["title", "meetup", "type", "speaker", "speaker_name"], - list_filter=[ - "type", - AssignedMeetupFilter, - SessionBySpeakerType, - SessionWithSlidesFilter, - ], -) -admin.site.register( - models.Location, - list_display=["name"], -) - -admin.site.register(models.RSVP, RSVPAdmin) -admin.site.register(models.SessionType, SessionTypeAdmin) diff --git a/pygraz_website/apps/meetups/decorators.py b/pygraz_website/apps/meetups/decorators.py deleted file mode 100644 index 7b3b103..0000000 --- a/pygraz_website/apps/meetups/decorators.py +++ /dev/null @@ -1,13 +0,0 @@ -from django.http import HttpResponseForbidden - - -def allow_only_staff_or_author_during_submission(method): - def _func(self, request, *args, **kwargs): - user = request.user - self.kwargs = kwargs - obj = self.get_object() - if user.is_superuser or user.is_staff or obj.speaker is not None and user == obj.speaker: - return method(self, request, *args, **kwargs) - return HttpResponseForbidden() - - return _func diff --git a/pygraz_website/apps/meetups/emails.py b/pygraz_website/apps/meetups/emails.py deleted file mode 100644 index 4374089..0000000 --- a/pygraz_website/apps/meetups/emails.py +++ /dev/null @@ -1,20 +0,0 @@ -from django.contrib.sites.models import Site -from django.core.mail import mail_admins -from django.template.loader import render_to_string - -__ALL__ = ["notify_admins_for_new_session"] - - -def notify_admins_for_new_session(session): - current_site = Site.objects.get_current() - mail_admins( - "Neue Session eingetragen", - render_to_string( - "meetups/emails/new_session.txt", - { - "session": session, - "session_url": f"https://{current_site.domain}{session.get_absolute_url()}", - }, - ), - fail_silently=False, - ) diff --git a/pygraz_website/apps/meetups/forms.py b/pygraz_website/apps/meetups/forms.py deleted file mode 100644 index d125719..0000000 --- a/pygraz_website/apps/meetups/forms.py +++ /dev/null @@ -1,115 +0,0 @@ -from crispy_forms.helper import FormHelper -from crispy_forms.layout import ButtonHolder, Field, Layout, Submit -from django import forms -from django.utils.safestring import mark_safe - -from . import models - -# from captcha.fields import ReCaptchaField - - -class AnonymousSessionSubmissionForm(forms.ModelForm): - speaker_name = forms.CharField(required=True, label="Dein Name") - speaker_email = forms.EmailField(required=True, label="Deine E-Mail-Adresse") - # captcha = ReCaptchaField(attrs={'theme': 'white'}) - - class Meta: - model = models.Session - fields = ("title", "abstract", "speaker_name", "speaker_email", "type") - widgets = {"type": forms.RadioSelect} - help_texts = { - "speaker_email": """Wir benötigen deine E-Mail-Adresse, um etwaige Termin - und Themefragen mit dir abklären zu können.""" - } - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - del self.fields["abstract"].widget.attrs["cols"] - self.fields["type"].required = True - self.fields["type"].empty_label = None - _extend_type_choice_labels(self.fields["type"]) - self.helper = FormHelper() - layout = Layout( - Field("title"), - Field("abstract"), - Field("speaker_name"), - Field("speaker_email"), - # Field('captcha'), - Field("type"), - ButtonHolder(Submit("submit", "Abschicken")), - ) - self.helper.add_layout(layout) - - -class RegisteredSessionSubmissionForm(forms.ModelForm): - class Meta: - model = models.Session - fields = ( - "title", - "abstract", - "type", - ) - widgets = {"type": forms.RadioSelect} - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.fields["type"].required = True - self.fields["type"].empty_label = None - _extend_type_choice_labels(self.fields["type"]) - self.helper = FormHelper() - layout = Layout( - Field("title"), - Field("abstract"), - Field("type"), - ButtonHolder(Submit("submit", "Abschicken")), - ) - self.helper.add_layout(layout) - - -class EditSessionForm(forms.ModelForm): - class Meta: - model = models.Session - fields = ("title", "abstract", "slides_url", "notes", "type") - widgets = {"type": forms.RadioSelect} - help_texts = { - "abstract": """Bitte beschreibe kurz, worum es in deiner Session geht. - Wo sind die Einsatzgebiete, wie komplex ist das Ganze usw.""" - } - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.fields["type"].required = True - self.fields["type"].empty_label = None - _extend_type_choice_labels(self.fields["type"]) - self.helper = FormHelper() - layout = Layout( - Field("title", autofocus="autofocus"), - Field("abstract"), - Field("type"), - Field("slides_url"), - Field("notes"), - ButtonHolder(Submit("submit", "Änderungen speichern")), - ) - self.helper.add_layout(layout) - - -def _extend_type_choice_labels(field): - types = {type_.pk: type_ for type_ in field.queryset.all()} - new_choices = [] - for choice in field.choices: - if choice[0] != "": - new_choices.append( - ( - choice[0], - mark_safe(f"{choice[1]}: {types[choice[0]].description}"), - ) - ) - else: - new_choices.append(choice) - field.choices = new_choices - - -def get_session_submission_form_class(request): - if request.user.is_authenticated: - return RegisteredSessionSubmissionForm - return AnonymousSessionSubmissionForm diff --git a/pygraz_website/apps/meetups/management/__init__.py b/pygraz_website/apps/meetups/management/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pygraz_website/apps/meetups/management/commands/__init__.py b/pygraz_website/apps/meetups/management/commands/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pygraz_website/apps/meetups/management/commands/fetch_rsvps.py b/pygraz_website/apps/meetups/management/commands/fetch_rsvps.py deleted file mode 100644 index 572f9e3..0000000 --- a/pygraz_website/apps/meetups/management/commands/fetch_rsvps.py +++ /dev/null @@ -1,56 +0,0 @@ -import logging - -import requests -from django.conf import settings -from django.core.management.base import BaseCommand -from django.db import transaction - -from ... import models - -LOG = logging.getLogger(__name__) - - -class Command(BaseCommand): - help = "Fetches RSVP responses from services like Google+ for future events" - - def _fetch_from_meetupcom(self, meetup): - rsvps = [] - meetupcom_id = meetup.meetupcom_id - seen = 0 - while True: - resp = requests.get( - "https://api.meetup.com/2/rsvps", - params={ - "key": settings.MEETUPCOM_API_KEY, - "event_id": meetupcom_id, - "sign": True, - "offset": seen, - "format": "json", - }, - ) - result = resp.json() - seen += result["meta"]["count"] - for rsvp in result["results"]: - # meetup.com has no "maybe" status - status = "coming" if rsvp["response"] == "yes" else "not_coming" - rsvps.append( - models.RSVP( - status=status, - remote_username=rsvp["member"]["name"], - remote_uid=rsvp["member"]["member_id"], - source="meetupcom", - meetup=meetup, - ) - ) - if seen >= result["meta"]["total_count"]: - break - - with transaction.atomic(): - models.RSVP.objects.filter(meetup=meetup, source="meetupcom").delete() - for rsvp in rsvps: - rsvp.save() - - def handle(self, *args, **options): - for meetup in models.Meetup.objects.get_future_meetups(): - if meetup.meetupcom_id: - self._fetch_from_meetupcom(meetup) diff --git a/pygraz_website/apps/meetups/migrations/0001_initial.py b/pygraz_website/apps/meetups/migrations/0001_initial.py deleted file mode 100644 index de026fa..0000000 --- a/pygraz_website/apps/meetups/migrations/0001_initial.py +++ /dev/null @@ -1,159 +0,0 @@ -import django.core.validators -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name="Location", - fields=[ - ("id", models.AutoField(verbose_name="ID", serialize=False, auto_created=True, primary_key=True)), - ("name", models.CharField(max_length=200)), - ("description", models.TextField(null=True, blank=True)), - ("website", models.URLField(null=True, blank=True)), - ("address", models.CharField(max_length=255, null=True, blank=True)), - ], - options={ - "verbose_name": "location", - "verbose_name_plural": "locations", - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name="Meetup", - fields=[ - ("id", models.AutoField(verbose_name="ID", serialize=False, auto_created=True, primary_key=True)), - ("start_date", models.DateTimeField()), - ("meetupcom_id", models.CharField(max_length=20, null=True, blank=True)), - ("gplus_id", models.CharField(max_length=50, null=True, blank=True)), - ("description", models.TextField(null=True, blank=True)), - ("notes", models.TextField(null=True, blank=True)), - ( - "attendee_count", - models.IntegerField( - blank=True, null=True, validators=[django.core.validators.MinValueValidator(0)] - ), - ), - ( - "location", - models.ForeignKey( - blank=True, to="meetups.Location", null=True, on_delete=django.db.models.deletion.PROTECT - ), - ), - ], - options={ - "ordering": ("-start_date",), - "verbose_name": "Meetup", - "verbose_name_plural": "Meetups", - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name="RSVP", - fields=[ - ("id", models.AutoField(verbose_name="ID", serialize=False, auto_created=True, primary_key=True)), - ( - "status", - models.CharField( - blank=True, - max_length=20, - null=True, - verbose_name="Status", - choices=[(b"not_coming", "Not coming"), (b"coming", "Coming"), (b"maybe", "Maybe")], - ), - ), - ( - "gplus_name", - models.CharField(max_length=100, null=True, verbose_name="Google+ Username", blank=True), - ), - ("gplus_uid", models.CharField(max_length=100, null=True, verbose_name="Google+ User ID", blank=True)), - ("source", models.CharField(max_length=20, null=True, blank=True)), - ( - "meetup", - models.ForeignKey( - related_name="rsvps", - verbose_name="Meetup", - to="meetups.Meetup", - on_delete=django.db.models.deletion.PROTECT, - ), - ), - ], - options={ - "verbose_name": "RSVP", - "verbose_name_plural": "RSVPs", - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name="Session", - fields=[ - ("id", models.AutoField(verbose_name="ID", serialize=False, auto_created=True, primary_key=True)), - ("title", models.CharField(max_length=255, verbose_name=b"Titel")), - ("abstract", models.TextField(verbose_name=b"Kurzbeschreibung")), - ("speaker_name", models.CharField(max_length=100, null=True, verbose_name=b"Vortragender", blank=True)), - ( - "speaker_email", - models.EmailField(max_length=75, null=True, verbose_name=b"E-Mail-Adresse", blank=True), - ), - ("slides_url", models.URLField(null=True, verbose_name=b"Folien-URL", blank=True)), - ("notes", models.TextField(null=True, verbose_name=b"Notizen", blank=True)), - ( - "meetup", - models.ForeignKey( - related_name="sessions", - verbose_name=b"Meetup", - blank=True, - to="meetups.Meetup", - null=True, - on_delete=django.db.models.deletion.PROTECT, - ), - ), - ( - "speaker", - models.ForeignKey( - verbose_name=b"Vortragender", - blank=True, - to=settings.AUTH_USER_MODEL, - null=True, - on_delete=django.db.models.deletion.PROTECT, - ), - ), - ], - options={ - "verbose_name": "Session", - "verbose_name_plural": "Sessions", - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name="SessionType", - fields=[ - ("id", models.AutoField(verbose_name="ID", serialize=False, auto_created=True, primary_key=True)), - ("name", models.CharField(unique=True, max_length=30, verbose_name=b"Name")), - ("description", models.TextField(null=True, verbose_name=b"Beschreibung", blank=True)), - ], - options={ - "verbose_name": "Session type", - "verbose_name_plural": "Session types", - }, - bases=(models.Model,), - ), - migrations.AddField( - model_name="session", - name="type", - field=models.ForeignKey( - on_delete=django.db.models.deletion.SET_NULL, - verbose_name=b"Vortragsart", - blank=True, - to="meetups.SessionType", - null=True, - ), - preserve_default=True, - ), - ] diff --git a/pygraz_website/apps/meetups/migrations/0002_rsvp_refactoring.py b/pygraz_website/apps/meetups/migrations/0002_rsvp_refactoring.py deleted file mode 100644 index f5e99f2..0000000 --- a/pygraz_website/apps/meetups/migrations/0002_rsvp_refactoring.py +++ /dev/null @@ -1,12 +0,0 @@ -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("meetups", "0001_initial"), - ] - - operations = [ - migrations.RenameField(model_name="rsvp", old_name="gplus_name", new_name="remote_username"), - migrations.RenameField(model_name="rsvp", old_name="gplus_uid", new_name="remote_uid"), - ] diff --git a/pygraz_website/apps/meetups/migrations/0003_field_lengths.py b/pygraz_website/apps/meetups/migrations/0003_field_lengths.py deleted file mode 100644 index f68cd0c..0000000 --- a/pygraz_website/apps/meetups/migrations/0003_field_lengths.py +++ /dev/null @@ -1,25 +0,0 @@ -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("meetups", "0002_rsvp_refactoring"), - ] - - operations = [ - migrations.AlterField( - model_name="rsvp", - name="remote_uid", - field=models.CharField(max_length=100, null=True, verbose_name="User ID", blank=True), - ), - migrations.AlterField( - model_name="rsvp", - name="remote_username", - field=models.CharField(max_length=100, null=True, verbose_name="Username", blank=True), - ), - migrations.AlterField( - model_name="session", - name="speaker_email", - field=models.EmailField(max_length=254, null=True, verbose_name="E-Mail-Adresse", blank=True), - ), - ] diff --git a/pygraz_website/apps/meetups/migrations/0004_alter_meetup_location_alter_rsvp_meetup_and_more.py b/pygraz_website/apps/meetups/migrations/0004_alter_meetup_location_alter_rsvp_meetup_and_more.py deleted file mode 100644 index 00f452d..0000000 --- a/pygraz_website/apps/meetups/migrations/0004_alter_meetup_location_alter_rsvp_meetup_and_more.py +++ /dev/null @@ -1,112 +0,0 @@ -# Generated by Django 4.0.8 on 2022-11-05 15:12 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("meetups", "0003_field_lengths"), - ] - - operations = [ - migrations.AlterField( - model_name="meetup", - name="location", - field=models.ForeignKey( - blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to="meetups.location" - ), - ), - migrations.AlterField( - model_name="rsvp", - name="meetup", - field=models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="rsvps", - to="meetups.meetup", - verbose_name="Meetup", - ), - ), - migrations.AlterField( - model_name="rsvp", - name="status", - field=models.CharField( - blank=True, - choices=[("not_coming", "Not coming"), ("coming", "Coming"), ("maybe", "Maybe")], - max_length=20, - null=True, - verbose_name="Status", - ), - ), - migrations.AlterField( - model_name="session", - name="abstract", - field=models.TextField(verbose_name="Kurzbeschreibung"), - ), - migrations.AlterField( - model_name="session", - name="meetup", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="sessions", - to="meetups.meetup", - verbose_name="Meetup", - ), - ), - migrations.AlterField( - model_name="session", - name="notes", - field=models.TextField(blank=True, null=True, verbose_name="Notizen"), - ), - migrations.AlterField( - model_name="session", - name="slides_url", - field=models.URLField(blank=True, null=True, verbose_name="Folien-URL"), - ), - migrations.AlterField( - model_name="session", - name="speaker", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - to=settings.AUTH_USER_MODEL, - verbose_name="Vortragender", - ), - ), - migrations.AlterField( - model_name="session", - name="speaker_name", - field=models.CharField(blank=True, max_length=100, null=True, verbose_name="Vortragender"), - ), - migrations.AlterField( - model_name="session", - name="title", - field=models.CharField(max_length=255, verbose_name="Titel"), - ), - migrations.AlterField( - model_name="session", - name="type", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to="meetups.sessiontype", - verbose_name="Vortragsart", - ), - ), - migrations.AlterField( - model_name="sessiontype", - name="description", - field=models.TextField(blank=True, null=True, verbose_name="Beschreibung"), - ), - migrations.AlterField( - model_name="sessiontype", - name="name", - field=models.CharField(max_length=30, unique=True, verbose_name="Name"), - ), - ] diff --git a/pygraz_website/apps/meetups/migrations/0005_location_map_image.py b/pygraz_website/apps/meetups/migrations/0005_location_map_image.py deleted file mode 100644 index d3ec48a..0000000 --- a/pygraz_website/apps/meetups/migrations/0005_location_map_image.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 4.0.8 on 2022-12-06 19:11 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("meetups", "0004_alter_meetup_location_alter_rsvp_meetup_and_more"), - ] - - operations = [ - migrations.AddField( - model_name="location", - name="map_image", - field=models.ImageField(blank=True, null=True, upload_to=""), - ), - ] diff --git a/pygraz_website/apps/meetups/migrations/__init__.py b/pygraz_website/apps/meetups/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pygraz_website/apps/meetups/models.py b/pygraz_website/apps/meetups/models.py deleted file mode 100644 index 31c3e41..0000000 --- a/pygraz_website/apps/meetups/models.py +++ /dev/null @@ -1,218 +0,0 @@ -from django.contrib.auth import models as auth_models -from django.contrib.sites.models import Site -from django.core import validators -from django.db import models -from django.urls import reverse -from django.utils import timezone -from django.utils.translation import gettext_lazy as _ - -from pygraz_website.apps.accounts import contents - -RSVP_STATUS_CHOICES = ( - ("not_coming", _("Not coming")), - ("coming", _("Coming")), - ("maybe", _("Maybe")), -) - - -class MeetupManager(models.Manager): - def get_past_meetups(self, now=None): - """ - Adds a filter for meetups that started in the past. - """ - if now is None: - now = timezone.now() - return self.get_queryset().filter(start_date__lte=now) - - def get_future_meetups(self, now=None): - if now is None: - now = timezone.now() - return self.get_queryset().filter(start_date__gt=now) - - -class SessionManager(models.Manager): - def get_proposals(self): - """ - Adds a filter for sessions that are not assigned to a meetup yet. - """ - return self.get_queryset().filter(meetup__isnull=True) - - -class Location(models.Model): - name = models.CharField(max_length=200) - description = models.TextField(blank=True, null=True) - website = models.URLField(blank=True, null=True) - address = models.CharField(max_length=255, blank=True, null=True) - map_image = models.ImageField(null=True, blank=True) - - def __str__(self): - return self.name - - class Meta: - verbose_name = _("location") - verbose_name_plural = _("locations") - - -class Meetup(models.Model): - start_date = models.DateTimeField() - location = models.ForeignKey(Location, blank=True, null=True, on_delete=models.CASCADE) - meetupcom_id = models.CharField(blank=True, null=True, max_length=20) - gplus_id = models.CharField(blank=True, null=True, max_length=50) - description = models.TextField(blank=True, null=True) - notes = models.TextField(blank=True, null=True) - attendee_count = models.IntegerField( - null=True, - blank=True, - validators=[ - validators.MinValueValidator(0), - ], - ) - - objects = MeetupManager() - - def __str__(self): - return str(self.start_date) - - def get_absolute_url(self): - return reverse( - "view-meetup", - kwargs={ - "year": f"{self.start_date.year:0>4d}", - "month": f"{self.start_date.month:0>2}", - "day": f"{self.start_date.day:0>2d}", - }, - ) - - def get_permalink(self): - return "http://{}{}".format( - Site.objects.get_current().domain, - reverse("meetup-permalink", kwargs={"pk": self.pk}), - ) - - def get_meetupcom_url(self): - return f"http://www.meetup.com/PyGRAZ/events/{self.meetupcom_id}" - - def is_in_future(self, now=None): - if now is None: - now = timezone.now() - return self.start_date > now - - class Meta: - verbose_name = "Meetup" - verbose_name_plural = "Meetups" - ordering = ("-start_date",) - - -class Session(models.Model): - title = models.CharField("Titel", max_length=255) - abstract = models.TextField("Kurzbeschreibung") - meetup = models.ForeignKey( - Meetup, - verbose_name="Meetup", - blank=True, - null=True, - on_delete=models.CASCADE, - related_name="sessions", - ) - speaker_name = models.CharField("Vortragender", max_length=100, blank=True, null=True) - speaker_email = models.EmailField("E-Mail-Adresse", blank=True, null=True) - speaker = models.ForeignKey( - auth_models.User, - verbose_name="Vortragender", - blank=True, - null=True, - on_delete=models.CASCADE, - ) - slides_url = models.URLField("Folien-URL", blank=True, null=True) - notes = models.TextField("Notizen", blank=True, null=True) - type = models.ForeignKey( - "SessionType", - verbose_name="Vortragsart", - blank=True, - null=True, - on_delete=models.SET_NULL, - ) - - objects = SessionManager() - - def __str__(self): - return self.title - - def get_absolute_url(self): - return reverse("view-session", kwargs={"pk": self.pk}) - - def get_permalink(self): - return f"http://{Site.objects.get_current()}{self.get_absolute_url()}" - - def get_speaker_name(self): - if self.speaker: - firstname = self.speaker.first_name - lastname = self.speaker.last_name - if firstname is not None and lastname is not None: - return f"{firstname} {lastname}" - if firstname is not None: - return firstname - return self.speaker.username - return self.speaker_name - - class Meta: - verbose_name = "Session" - verbose_name_plural = "Sessions" - - -class SessionType(models.Model): - name = models.CharField("Name", max_length=30, unique=True) - description = models.TextField("Beschreibung", blank=True, null=True) - - def __str__(self): - return self.name - - class Meta: - verbose_name = "Session type" - verbose_name_plural = "Session types" - - -class SessionContentProxy(contents.BaseProxy): - model_class = Session - label = "Meine Sessions" - - def get_queryset(self): - return Session.objects.filter(speaker=self.request.user) - - -contents.register(SessionContentProxy) - - -class RSVP(models.Model): - """ - A RSVP object represents the status of attendence of a person at a meetup. - The source of this information in the current implementation is Meetup.com - and not linked to a local user account. - - The status can be either coming, not coming, maybe or unknown (represented - by a null value). - """ - - status = models.CharField(_("Status"), choices=RSVP_STATUS_CHOICES, null=True, blank=True, max_length=20) - remote_username = models.CharField(_("Username"), null=True, blank=True, max_length=100) - remote_uid = models.CharField(_("User ID"), null=True, blank=True, max_length=100) - meetup = models.ForeignKey( - "Meetup", - null=False, - verbose_name=_("Meetup"), - on_delete=models.CASCADE, - related_name="rsvps", - ) - source = models.CharField(max_length=20, blank=True, null=True) - - @property - def name(self): - return self.remote_username - - @property - def url(self): - return f"http://www.meetup.com/members/{self.remote_uid}/" - - class Meta: - verbose_name = _("RSVP") - verbose_name_plural = _("RSVPs") diff --git a/pygraz_website/apps/meetups/south_migrations/0001_initial.py b/pygraz_website/apps/meetups/south_migrations/0001_initial.py deleted file mode 100644 index 718cfed..0000000 --- a/pygraz_website/apps/meetups/south_migrations/0001_initial.py +++ /dev/null @@ -1,178 +0,0 @@ -import datetime - -from django.db import models -from south.db import db -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - def forwards(self, orm): - # Adding model 'Location' - db.create_table( - "meetups_location", - ( - ("id", self.gf("django.db.models.fields.AutoField")(primary_key=True)), - ("name", self.gf("django.db.models.fields.CharField")(max_length=200)), - ("description", self.gf("django.db.models.fields.TextField")(null=True, blank=True)), - ("website", self.gf("django.db.models.fields.URLField")(max_length=200, null=True, blank=True)), - ("address", self.gf("django.db.models.fields.CharField")(max_length=255, null=True, blank=True)), - ), - ) - db.send_create_signal("meetups", ["Location"]) - - # Adding model 'Meetup' - db.create_table( - "meetups_meetup", - ( - ("id", self.gf("django.db.models.fields.AutoField")(primary_key=True)), - ("start_date", self.gf("django.db.models.fields.DateTimeField")()), - ( - "location", - self.gf("django.db.models.fields.related.ForeignKey")( - to=orm["meetups.Location"], null=True, blank=True - ), - ), - ), - ) - db.send_create_signal("meetups", ["Meetup"]) - - # Adding model 'Session' - db.create_table( - "meetups_session", - ( - ("id", self.gf("django.db.models.fields.AutoField")(primary_key=True)), - ("title", self.gf("django.db.models.fields.CharField")(max_length=255)), - ("abstract", self.gf("django.db.models.fields.TextField")()), - ( - "meetup", - self.gf("django.db.models.fields.related.ForeignKey")( - to=orm["meetups.Meetup"], null=True, blank=True - ), - ), - ("speaker_name", self.gf("django.db.models.fields.CharField")(max_length=100, null=True, blank=True)), - ( - "speaker", - self.gf("django.db.models.fields.related.ForeignKey")(to=orm["auth.User"], null=True, blank=True), - ), - ), - ) - db.send_create_signal("meetups", ["Session"]) - - def backwards(self, orm): - # Deleting model 'Location' - db.delete_table("meetups_location") - - # Deleting model 'Meetup' - db.delete_table("meetups_meetup") - - # Deleting model 'Session' - db.delete_table("meetups_session") - - models = { - "auth.group": { - "Meta": {"object_name": "Group"}, - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "80"}), - "permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - }, - "auth.permission": { - "Meta": { - "ordering": "('content_type__app_label', 'content_type__model', 'codename')", - "unique_together": "(('content_type', 'codename'),)", - "object_name": "Permission", - }, - "codename": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "content_type": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['contenttypes.ContentType']"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "50"}), - }, - "auth.user": { - "Meta": {"object_name": "User"}, - "date_joined": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "email": ("django.db.models.fields.EmailField", [], {"max_length": "75", "blank": "True"}), - "first_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "groups": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Group']", "symmetrical": "False", "blank": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "is_active": ("django.db.models.fields.BooleanField", [], {"default": "True"}), - "is_staff": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "is_superuser": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "last_login": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "last_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "password": ("django.db.models.fields.CharField", [], {"max_length": "128"}), - "user_permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - "username": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "30"}), - }, - "contenttypes.contenttype": { - "Meta": { - "ordering": "('name',)", - "unique_together": "(('app_label', 'model'),)", - "object_name": "ContentType", - "db_table": "'django_content_type'", - }, - "app_label": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "model": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - }, - "meetups.location": { - "Meta": {"object_name": "Location"}, - "address": ( - "django.db.models.fields.CharField", - [], - {"max_length": "255", "null": "True", "blank": "True"}, - ), - "description": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "200"}), - "website": ("django.db.models.fields.URLField", [], {"max_length": "200", "null": "True", "blank": "True"}), - }, - "meetups.meetup": { - "Meta": {"object_name": "Meetup"}, - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "location": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['meetups.Location']", "null": "True", "blank": "True"}, - ), - "start_date": ("django.db.models.fields.DateTimeField", [], {}), - }, - "meetups.session": { - "Meta": {"object_name": "Session"}, - "abstract": ("django.db.models.fields.TextField", [], {}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "meetup": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['meetups.Meetup']", "null": "True", "blank": "True"}, - ), - "speaker": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['auth.User']", "null": "True", "blank": "True"}, - ), - "speaker_name": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "title": ("django.db.models.fields.CharField", [], {"max_length": "255"}), - }, - } - - complete_apps = ["meetups"] diff --git a/pygraz_website/apps/meetups/south_migrations/0002_speaker_email.py b/pygraz_website/apps/meetups/south_migrations/0002_speaker_email.py deleted file mode 100644 index 4b90347..0000000 --- a/pygraz_website/apps/meetups/south_migrations/0002_speaker_email.py +++ /dev/null @@ -1,134 +0,0 @@ -import datetime - -from django.db import models -from south.db import db -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - def forwards(self, orm): - # Adding field 'Session.speaker_email' - db.add_column( - "meetups_session", - "speaker_email", - self.gf("django.db.models.fields.EmailField")(max_length=75, null=True, blank=True), - keep_default=False, - ) - - def backwards(self, orm): - # Deleting field 'Session.speaker_email' - db.delete_column("meetups_session", "speaker_email") - - models = { - "auth.group": { - "Meta": {"object_name": "Group"}, - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "80"}), - "permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - }, - "auth.permission": { - "Meta": { - "ordering": "('content_type__app_label', 'content_type__model', 'codename')", - "unique_together": "(('content_type', 'codename'),)", - "object_name": "Permission", - }, - "codename": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "content_type": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['contenttypes.ContentType']"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "50"}), - }, - "auth.user": { - "Meta": {"object_name": "User"}, - "date_joined": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "email": ("django.db.models.fields.EmailField", [], {"max_length": "75", "blank": "True"}), - "first_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "groups": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Group']", "symmetrical": "False", "blank": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "is_active": ("django.db.models.fields.BooleanField", [], {"default": "True"}), - "is_staff": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "is_superuser": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "last_login": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "last_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "password": ("django.db.models.fields.CharField", [], {"max_length": "128"}), - "user_permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - "username": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "30"}), - }, - "contenttypes.contenttype": { - "Meta": { - "ordering": "('name',)", - "unique_together": "(('app_label', 'model'),)", - "object_name": "ContentType", - "db_table": "'django_content_type'", - }, - "app_label": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "model": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - }, - "meetups.location": { - "Meta": {"object_name": "Location"}, - "address": ( - "django.db.models.fields.CharField", - [], - {"max_length": "255", "null": "True", "blank": "True"}, - ), - "description": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "200"}), - "website": ("django.db.models.fields.URLField", [], {"max_length": "200", "null": "True", "blank": "True"}), - }, - "meetups.meetup": { - "Meta": {"ordering": "('-start_date',)", "object_name": "Meetup"}, - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "location": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['meetups.Location']", "null": "True", "blank": "True"}, - ), - "start_date": ("django.db.models.fields.DateTimeField", [], {}), - }, - "meetups.session": { - "Meta": {"object_name": "Session"}, - "abstract": ("django.db.models.fields.TextField", [], {}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "meetup": ( - "django.db.models.fields.related.ForeignKey", - [], - {"blank": "True", "related_name": "'sessions'", "null": "True", "to": "orm['meetups.Meetup']"}, - ), - "speaker": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['auth.User']", "null": "True", "blank": "True"}, - ), - "speaker_email": ( - "django.db.models.fields.EmailField", - [], - {"max_length": "75", "null": "True", "blank": "True"}, - ), - "speaker_name": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "title": ("django.db.models.fields.CharField", [], {"max_length": "255"}), - }, - } - - complete_apps = ["meetups"] diff --git a/pygraz_website/apps/meetups/south_migrations/0003_extended_session_info.py b/pygraz_website/apps/meetups/south_migrations/0003_extended_session_info.py deleted file mode 100644 index cd4a19a..0000000 --- a/pygraz_website/apps/meetups/south_migrations/0003_extended_session_info.py +++ /dev/null @@ -1,151 +0,0 @@ -import datetime - -from django.db import models -from south.db import db -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - def forwards(self, orm): - # Adding field 'Session.slides_url' - db.add_column( - "meetups_session", - "slides_url", - self.gf("django.db.models.fields.URLField")(max_length=200, null=True, blank=True), - keep_default=False, - ) - - # Adding field 'Session.notes' - db.add_column( - "meetups_session", - "notes", - self.gf("django.db.models.fields.TextField")(null=True, blank=True), - keep_default=False, - ) - - def backwards(self, orm): - # Deleting field 'Session.slides_url' - db.delete_column("meetups_session", "slides_url") - - # Deleting field 'Session.notes' - db.delete_column("meetups_session", "notes") - - models = { - "auth.group": { - "Meta": {"object_name": "Group"}, - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "80"}), - "permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - }, - "auth.permission": { - "Meta": { - "ordering": "('content_type__app_label', 'content_type__model', 'codename')", - "unique_together": "(('content_type', 'codename'),)", - "object_name": "Permission", - }, - "codename": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "content_type": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['contenttypes.ContentType']"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "50"}), - }, - "auth.user": { - "Meta": {"object_name": "User"}, - "date_joined": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "email": ("django.db.models.fields.EmailField", [], {"max_length": "75", "blank": "True"}), - "first_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "groups": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Group']", "symmetrical": "False", "blank": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "is_active": ("django.db.models.fields.BooleanField", [], {"default": "True"}), - "is_staff": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "is_superuser": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "last_login": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "last_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "password": ("django.db.models.fields.CharField", [], {"max_length": "128"}), - "user_permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - "username": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "30"}), - }, - "contenttypes.contenttype": { - "Meta": { - "ordering": "('name',)", - "unique_together": "(('app_label', 'model'),)", - "object_name": "ContentType", - "db_table": "'django_content_type'", - }, - "app_label": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "model": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - }, - "meetups.location": { - "Meta": {"object_name": "Location"}, - "address": ( - "django.db.models.fields.CharField", - [], - {"max_length": "255", "null": "True", "blank": "True"}, - ), - "description": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "200"}), - "website": ("django.db.models.fields.URLField", [], {"max_length": "200", "null": "True", "blank": "True"}), - }, - "meetups.meetup": { - "Meta": {"ordering": "('-start_date',)", "object_name": "Meetup"}, - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "location": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['meetups.Location']", "null": "True", "blank": "True"}, - ), - "start_date": ("django.db.models.fields.DateTimeField", [], {}), - }, - "meetups.session": { - "Meta": {"object_name": "Session"}, - "abstract": ("django.db.models.fields.TextField", [], {}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "meetup": ( - "django.db.models.fields.related.ForeignKey", - [], - {"blank": "True", "related_name": "'sessions'", "null": "True", "to": "orm['meetups.Meetup']"}, - ), - "notes": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "slides_url": ( - "django.db.models.fields.URLField", - [], - {"max_length": "200", "null": "True", "blank": "True"}, - ), - "speaker": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['auth.User']", "null": "True", "blank": "True"}, - ), - "speaker_email": ( - "django.db.models.fields.EmailField", - [], - {"max_length": "75", "null": "True", "blank": "True"}, - ), - "speaker_name": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "title": ("django.db.models.fields.CharField", [], {"max_length": "255"}), - }, - } - - complete_apps = ["meetups"] diff --git a/pygraz_website/apps/meetups/south_migrations/0004_meetupcom_field.py b/pygraz_website/apps/meetups/south_migrations/0004_meetupcom_field.py deleted file mode 100644 index cbe7d54..0000000 --- a/pygraz_website/apps/meetups/south_migrations/0004_meetupcom_field.py +++ /dev/null @@ -1,145 +0,0 @@ -import datetime - -from django.db import models -from south.db import db -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - def forwards(self, orm): - # Adding field 'Meetup.meetupcom_id' - db.add_column( - "meetups_meetup", - "meetupcom_id", - self.gf("django.db.models.fields.CharField")(max_length=20, null=True, blank=True), - keep_default=False, - ) - - def backwards(self, orm): - # Deleting field 'Meetup.meetupcom_id' - db.delete_column("meetups_meetup", "meetupcom_id") - - models = { - "auth.group": { - "Meta": {"object_name": "Group"}, - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "80"}), - "permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - }, - "auth.permission": { - "Meta": { - "ordering": "('content_type__app_label', 'content_type__model', 'codename')", - "unique_together": "(('content_type', 'codename'),)", - "object_name": "Permission", - }, - "codename": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "content_type": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['contenttypes.ContentType']"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "50"}), - }, - "auth.user": { - "Meta": {"object_name": "User"}, - "date_joined": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "email": ("django.db.models.fields.EmailField", [], {"max_length": "75", "blank": "True"}), - "first_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "groups": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Group']", "symmetrical": "False", "blank": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "is_active": ("django.db.models.fields.BooleanField", [], {"default": "True"}), - "is_staff": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "is_superuser": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "last_login": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "last_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "password": ("django.db.models.fields.CharField", [], {"max_length": "128"}), - "user_permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - "username": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "30"}), - }, - "contenttypes.contenttype": { - "Meta": { - "ordering": "('name',)", - "unique_together": "(('app_label', 'model'),)", - "object_name": "ContentType", - "db_table": "'django_content_type'", - }, - "app_label": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "model": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - }, - "meetups.location": { - "Meta": {"object_name": "Location"}, - "address": ( - "django.db.models.fields.CharField", - [], - {"max_length": "255", "null": "True", "blank": "True"}, - ), - "description": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "200"}), - "website": ("django.db.models.fields.URLField", [], {"max_length": "200", "null": "True", "blank": "True"}), - }, - "meetups.meetup": { - "Meta": {"ordering": "('-start_date',)", "object_name": "Meetup"}, - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "location": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['meetups.Location']", "null": "True", "blank": "True"}, - ), - "meetupcom_id": ( - "django.db.models.fields.CharField", - [], - {"max_length": "20", "null": "True", "blank": "True"}, - ), - "start_date": ("django.db.models.fields.DateTimeField", [], {}), - }, - "meetups.session": { - "Meta": {"object_name": "Session"}, - "abstract": ("django.db.models.fields.TextField", [], {}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "meetup": ( - "django.db.models.fields.related.ForeignKey", - [], - {"blank": "True", "related_name": "'sessions'", "null": "True", "to": "orm['meetups.Meetup']"}, - ), - "notes": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "slides_url": ( - "django.db.models.fields.URLField", - [], - {"max_length": "200", "null": "True", "blank": "True"}, - ), - "speaker": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['auth.User']", "null": "True", "blank": "True"}, - ), - "speaker_email": ( - "django.db.models.fields.EmailField", - [], - {"max_length": "75", "null": "True", "blank": "True"}, - ), - "speaker_name": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "title": ("django.db.models.fields.CharField", [], {"max_length": "255"}), - }, - } - - complete_apps = ["meetups"] diff --git a/pygraz_website/apps/meetups/south_migrations/0005_meetup_notes.py b/pygraz_website/apps/meetups/south_migrations/0005_meetup_notes.py deleted file mode 100644 index 7a35c8b..0000000 --- a/pygraz_website/apps/meetups/south_migrations/0005_meetup_notes.py +++ /dev/null @@ -1,146 +0,0 @@ -import datetime - -from django.db import models -from south.db import db -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - def forwards(self, orm): - # Adding field 'Meetup.notes' - db.add_column( - "meetups_meetup", - "notes", - self.gf("django.db.models.fields.TextField")(null=True, blank=True), - keep_default=False, - ) - - def backwards(self, orm): - # Deleting field 'Meetup.notes' - db.delete_column("meetups_meetup", "notes") - - models = { - "auth.group": { - "Meta": {"object_name": "Group"}, - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "80"}), - "permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - }, - "auth.permission": { - "Meta": { - "ordering": "('content_type__app_label', 'content_type__model', 'codename')", - "unique_together": "(('content_type', 'codename'),)", - "object_name": "Permission", - }, - "codename": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "content_type": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['contenttypes.ContentType']"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "50"}), - }, - "auth.user": { - "Meta": {"object_name": "User"}, - "date_joined": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "email": ("django.db.models.fields.EmailField", [], {"max_length": "75", "blank": "True"}), - "first_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "groups": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Group']", "symmetrical": "False", "blank": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "is_active": ("django.db.models.fields.BooleanField", [], {"default": "True"}), - "is_staff": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "is_superuser": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "last_login": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "last_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "password": ("django.db.models.fields.CharField", [], {"max_length": "128"}), - "user_permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - "username": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "30"}), - }, - "contenttypes.contenttype": { - "Meta": { - "ordering": "('name',)", - "unique_together": "(('app_label', 'model'),)", - "object_name": "ContentType", - "db_table": "'django_content_type'", - }, - "app_label": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "model": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - }, - "meetups.location": { - "Meta": {"object_name": "Location"}, - "address": ( - "django.db.models.fields.CharField", - [], - {"max_length": "255", "null": "True", "blank": "True"}, - ), - "description": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "200"}), - "website": ("django.db.models.fields.URLField", [], {"max_length": "200", "null": "True", "blank": "True"}), - }, - "meetups.meetup": { - "Meta": {"ordering": "('-start_date',)", "object_name": "Meetup"}, - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "location": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['meetups.Location']", "null": "True", "blank": "True"}, - ), - "meetupcom_id": ( - "django.db.models.fields.CharField", - [], - {"max_length": "20", "null": "True", "blank": "True"}, - ), - "notes": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "start_date": ("django.db.models.fields.DateTimeField", [], {}), - }, - "meetups.session": { - "Meta": {"object_name": "Session"}, - "abstract": ("django.db.models.fields.TextField", [], {}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "meetup": ( - "django.db.models.fields.related.ForeignKey", - [], - {"blank": "True", "related_name": "'sessions'", "null": "True", "to": "orm['meetups.Meetup']"}, - ), - "notes": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "slides_url": ( - "django.db.models.fields.URLField", - [], - {"max_length": "200", "null": "True", "blank": "True"}, - ), - "speaker": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['auth.User']", "null": "True", "blank": "True"}, - ), - "speaker_email": ( - "django.db.models.fields.EmailField", - [], - {"max_length": "75", "null": "True", "blank": "True"}, - ), - "speaker_name": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "title": ("django.db.models.fields.CharField", [], {"max_length": "255"}), - }, - } - - complete_apps = ["meetups"] diff --git a/pygraz_website/apps/meetups/south_migrations/0006_auto__add_rsvp.py b/pygraz_website/apps/meetups/south_migrations/0006_auto__add_rsvp.py deleted file mode 100644 index 315a11c..0000000 --- a/pygraz_website/apps/meetups/south_migrations/0006_auto__add_rsvp.py +++ /dev/null @@ -1,178 +0,0 @@ -import datetime - -from django.db import models -from south.db import db -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - def forwards(self, orm): - # Adding model 'RSVP' - db.create_table( - "meetups_rsvp", - ( - ("id", self.gf("django.db.models.fields.AutoField")(primary_key=True)), - ("status", self.gf("django.db.models.fields.CharField")(max_length=20, null=True, blank=True)), - ("gplus_name", self.gf("django.db.models.fields.CharField")(max_length=100, null=True, blank=True)), - ("gplus_uid", self.gf("django.db.models.fields.CharField")(max_length=100, null=True, blank=True)), - ( - "meetup", - self.gf("django.db.models.fields.related.ForeignKey")( - related_name="rsvps", to=orm["meetups.Meetup"] - ), - ), - ("source", self.gf("django.db.models.fields.CharField")(max_length=20, null=True, blank=True)), - ), - ) - db.send_create_signal("meetups", ["RSVP"]) - - def backwards(self, orm): - # Deleting model 'RSVP' - db.delete_table("meetups_rsvp") - - models = { - "auth.group": { - "Meta": {"object_name": "Group"}, - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "80"}), - "permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - }, - "auth.permission": { - "Meta": { - "ordering": "('content_type__app_label', 'content_type__model', 'codename')", - "unique_together": "(('content_type', 'codename'),)", - "object_name": "Permission", - }, - "codename": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "content_type": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['contenttypes.ContentType']"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "50"}), - }, - "auth.user": { - "Meta": {"object_name": "User"}, - "date_joined": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "email": ("django.db.models.fields.EmailField", [], {"max_length": "75", "blank": "True"}), - "first_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "groups": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Group']", "symmetrical": "False", "blank": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "is_active": ("django.db.models.fields.BooleanField", [], {"default": "True"}), - "is_staff": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "is_superuser": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "last_login": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "last_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "password": ("django.db.models.fields.CharField", [], {"max_length": "128"}), - "user_permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - "username": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "30"}), - }, - "contenttypes.contenttype": { - "Meta": { - "ordering": "('name',)", - "unique_together": "(('app_label', 'model'),)", - "object_name": "ContentType", - "db_table": "'django_content_type'", - }, - "app_label": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "model": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - }, - "meetups.location": { - "Meta": {"object_name": "Location"}, - "address": ( - "django.db.models.fields.CharField", - [], - {"max_length": "255", "null": "True", "blank": "True"}, - ), - "description": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "200"}), - "website": ("django.db.models.fields.URLField", [], {"max_length": "200", "null": "True", "blank": "True"}), - }, - "meetups.meetup": { - "Meta": {"ordering": "('-start_date',)", "object_name": "Meetup"}, - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "location": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['meetups.Location']", "null": "True", "blank": "True"}, - ), - "meetupcom_id": ( - "django.db.models.fields.CharField", - [], - {"max_length": "20", "null": "True", "blank": "True"}, - ), - "notes": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "start_date": ("django.db.models.fields.DateTimeField", [], {}), - }, - "meetups.rsvp": { - "Meta": {"object_name": "RSVP"}, - "gplus_name": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "gplus_uid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "meetup": ( - "django.db.models.fields.related.ForeignKey", - [], - {"related_name": "'rsvps'", "to": "orm['meetups.Meetup']"}, - ), - "source": ("django.db.models.fields.CharField", [], {"max_length": "20", "null": "True", "blank": "True"}), - "status": ("django.db.models.fields.CharField", [], {"max_length": "20", "null": "True", "blank": "True"}), - }, - "meetups.session": { - "Meta": {"object_name": "Session"}, - "abstract": ("django.db.models.fields.TextField", [], {}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "meetup": ( - "django.db.models.fields.related.ForeignKey", - [], - {"blank": "True", "related_name": "'sessions'", "null": "True", "to": "orm['meetups.Meetup']"}, - ), - "notes": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "slides_url": ( - "django.db.models.fields.URLField", - [], - {"max_length": "200", "null": "True", "blank": "True"}, - ), - "speaker": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['auth.User']", "null": "True", "blank": "True"}, - ), - "speaker_email": ( - "django.db.models.fields.EmailField", - [], - {"max_length": "75", "null": "True", "blank": "True"}, - ), - "speaker_name": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "title": ("django.db.models.fields.CharField", [], {"max_length": "255"}), - }, - } - - complete_apps = ["meetups"] diff --git a/pygraz_website/apps/meetups/south_migrations/0007_auto__add_field_meetup_gplus_id.py b/pygraz_website/apps/meetups/south_migrations/0007_auto__add_field_meetup_gplus_id.py deleted file mode 100644 index d395382..0000000 --- a/pygraz_website/apps/meetups/south_migrations/0007_auto__add_field_meetup_gplus_id.py +++ /dev/null @@ -1,172 +0,0 @@ -import datetime - -from django.db import models -from south.db import db -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - def forwards(self, orm): - # Adding field 'Meetup.gplus_id' - db.add_column( - "meetups_meetup", - "gplus_id", - self.gf("django.db.models.fields.CharField")(max_length=50, null=True, blank=True), - keep_default=False, - ) - - def backwards(self, orm): - # Deleting field 'Meetup.gplus_id' - db.delete_column("meetups_meetup", "gplus_id") - - models = { - "auth.group": { - "Meta": {"object_name": "Group"}, - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "80"}), - "permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - }, - "auth.permission": { - "Meta": { - "ordering": "('content_type__app_label', 'content_type__model', 'codename')", - "unique_together": "(('content_type', 'codename'),)", - "object_name": "Permission", - }, - "codename": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "content_type": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['contenttypes.ContentType']"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "50"}), - }, - "auth.user": { - "Meta": {"object_name": "User"}, - "date_joined": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "email": ("django.db.models.fields.EmailField", [], {"max_length": "75", "blank": "True"}), - "first_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "groups": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Group']", "symmetrical": "False", "blank": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "is_active": ("django.db.models.fields.BooleanField", [], {"default": "True"}), - "is_staff": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "is_superuser": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "last_login": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "last_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "password": ("django.db.models.fields.CharField", [], {"max_length": "128"}), - "user_permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - "username": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "30"}), - }, - "contenttypes.contenttype": { - "Meta": { - "ordering": "('name',)", - "unique_together": "(('app_label', 'model'),)", - "object_name": "ContentType", - "db_table": "'django_content_type'", - }, - "app_label": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "model": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - }, - "meetups.location": { - "Meta": {"object_name": "Location"}, - "address": ( - "django.db.models.fields.CharField", - [], - {"max_length": "255", "null": "True", "blank": "True"}, - ), - "description": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "200"}), - "website": ("django.db.models.fields.URLField", [], {"max_length": "200", "null": "True", "blank": "True"}), - }, - "meetups.meetup": { - "Meta": {"ordering": "('-start_date',)", "object_name": "Meetup"}, - "gplus_id": ( - "django.db.models.fields.CharField", - [], - {"max_length": "50", "null": "True", "blank": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "location": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['meetups.Location']", "null": "True", "blank": "True"}, - ), - "meetupcom_id": ( - "django.db.models.fields.CharField", - [], - {"max_length": "20", "null": "True", "blank": "True"}, - ), - "notes": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "start_date": ("django.db.models.fields.DateTimeField", [], {}), - }, - "meetups.rsvp": { - "Meta": {"object_name": "RSVP"}, - "gplus_name": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "gplus_uid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "meetup": ( - "django.db.models.fields.related.ForeignKey", - [], - {"related_name": "'rsvps'", "to": "orm['meetups.Meetup']"}, - ), - "source": ("django.db.models.fields.CharField", [], {"max_length": "20", "null": "True", "blank": "True"}), - "status": ("django.db.models.fields.CharField", [], {"max_length": "20", "null": "True", "blank": "True"}), - }, - "meetups.session": { - "Meta": {"object_name": "Session"}, - "abstract": ("django.db.models.fields.TextField", [], {}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "meetup": ( - "django.db.models.fields.related.ForeignKey", - [], - {"blank": "True", "related_name": "'sessions'", "null": "True", "to": "orm['meetups.Meetup']"}, - ), - "notes": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "slides_url": ( - "django.db.models.fields.URLField", - [], - {"max_length": "200", "null": "True", "blank": "True"}, - ), - "speaker": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['auth.User']", "null": "True", "blank": "True"}, - ), - "speaker_email": ( - "django.db.models.fields.EmailField", - [], - {"max_length": "75", "null": "True", "blank": "True"}, - ), - "speaker_name": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "title": ("django.db.models.fields.CharField", [], {"max_length": "255"}), - }, - } - - complete_apps = ["meetups"] diff --git a/pygraz_website/apps/meetups/south_migrations/0008_auto__add_field_meetup_attendee_count.py b/pygraz_website/apps/meetups/south_migrations/0008_auto__add_field_meetup_attendee_count.py deleted file mode 100644 index fa0ca89..0000000 --- a/pygraz_website/apps/meetups/south_migrations/0008_auto__add_field_meetup_attendee_count.py +++ /dev/null @@ -1,173 +0,0 @@ -import datetime - -from django.db import models -from south.db import db -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - def forwards(self, orm): - # Adding field 'Meetup.attendee_count' - db.add_column( - "meetups_meetup", - "attendee_count", - self.gf("django.db.models.fields.IntegerField")(null=True, blank=True), - keep_default=False, - ) - - def backwards(self, orm): - # Deleting field 'Meetup.attendee_count' - db.delete_column("meetups_meetup", "attendee_count") - - models = { - "auth.group": { - "Meta": {"object_name": "Group"}, - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "80"}), - "permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - }, - "auth.permission": { - "Meta": { - "ordering": "('content_type__app_label', 'content_type__model', 'codename')", - "unique_together": "(('content_type', 'codename'),)", - "object_name": "Permission", - }, - "codename": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "content_type": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['contenttypes.ContentType']"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "50"}), - }, - "auth.user": { - "Meta": {"object_name": "User"}, - "date_joined": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "email": ("django.db.models.fields.EmailField", [], {"max_length": "75", "blank": "True"}), - "first_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "groups": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Group']", "symmetrical": "False", "blank": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "is_active": ("django.db.models.fields.BooleanField", [], {"default": "True"}), - "is_staff": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "is_superuser": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "last_login": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "last_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "password": ("django.db.models.fields.CharField", [], {"max_length": "128"}), - "user_permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - "username": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "30"}), - }, - "contenttypes.contenttype": { - "Meta": { - "ordering": "('name',)", - "unique_together": "(('app_label', 'model'),)", - "object_name": "ContentType", - "db_table": "'django_content_type'", - }, - "app_label": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "model": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - }, - "meetups.location": { - "Meta": {"object_name": "Location"}, - "address": ( - "django.db.models.fields.CharField", - [], - {"max_length": "255", "null": "True", "blank": "True"}, - ), - "description": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "200"}), - "website": ("django.db.models.fields.URLField", [], {"max_length": "200", "null": "True", "blank": "True"}), - }, - "meetups.meetup": { - "Meta": {"ordering": "('-start_date',)", "object_name": "Meetup"}, - "attendee_count": ("django.db.models.fields.IntegerField", [], {"null": "True", "blank": "True"}), - "gplus_id": ( - "django.db.models.fields.CharField", - [], - {"max_length": "50", "null": "True", "blank": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "location": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['meetups.Location']", "null": "True", "blank": "True"}, - ), - "meetupcom_id": ( - "django.db.models.fields.CharField", - [], - {"max_length": "20", "null": "True", "blank": "True"}, - ), - "notes": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "start_date": ("django.db.models.fields.DateTimeField", [], {}), - }, - "meetups.rsvp": { - "Meta": {"object_name": "RSVP"}, - "gplus_name": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "gplus_uid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "meetup": ( - "django.db.models.fields.related.ForeignKey", - [], - {"related_name": "'rsvps'", "to": "orm['meetups.Meetup']"}, - ), - "source": ("django.db.models.fields.CharField", [], {"max_length": "20", "null": "True", "blank": "True"}), - "status": ("django.db.models.fields.CharField", [], {"max_length": "20", "null": "True", "blank": "True"}), - }, - "meetups.session": { - "Meta": {"object_name": "Session"}, - "abstract": ("django.db.models.fields.TextField", [], {}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "meetup": ( - "django.db.models.fields.related.ForeignKey", - [], - {"blank": "True", "related_name": "'sessions'", "null": "True", "to": "orm['meetups.Meetup']"}, - ), - "notes": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "slides_url": ( - "django.db.models.fields.URLField", - [], - {"max_length": "200", "null": "True", "blank": "True"}, - ), - "speaker": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['auth.User']", "null": "True", "blank": "True"}, - ), - "speaker_email": ( - "django.db.models.fields.EmailField", - [], - {"max_length": "75", "null": "True", "blank": "True"}, - ), - "speaker_name": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "title": ("django.db.models.fields.CharField", [], {"max_length": "255"}), - }, - } - - complete_apps = ["meetups"] diff --git a/pygraz_website/apps/meetups/south_migrations/0009_auto__add_sessiontype__add_field_session_type.py b/pygraz_website/apps/meetups/south_migrations/0009_auto__add_sessiontype__add_field_session_type.py deleted file mode 100644 index b985468..0000000 --- a/pygraz_website/apps/meetups/south_migrations/0009_auto__add_sessiontype__add_field_session_type.py +++ /dev/null @@ -1,202 +0,0 @@ -from django.db import models -from south.db import db -from south.utils import datetime_utils as datetime -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - def forwards(self, orm): - # Adding model 'SessionType' - db.create_table( - "meetups_sessiontype", - ( - ("id", self.gf("django.db.models.fields.AutoField")(primary_key=True)), - ("name", self.gf("django.db.models.fields.CharField")(unique=True, max_length=30)), - ("description", self.gf("django.db.models.fields.TextField")(null=True, blank=True)), - ), - ) - db.send_create_signal("meetups", ["SessionType"]) - - # Adding field 'Session.type' - db.add_column( - "meetups_session", - "type", - self.gf("django.db.models.fields.related.ForeignKey")(to=orm["meetups.SessionType"], null=True, blank=True), - keep_default=False, - ) - - def backwards(self, orm): - # Deleting model 'SessionType' - db.delete_table("meetups_sessiontype") - - # Deleting field 'Session.type' - db.delete_column("meetups_session", "type_id") - - models = { - "auth.group": { - "Meta": {"object_name": "Group"}, - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "80"}), - "permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - }, - "auth.permission": { - "Meta": { - "ordering": "(u'content_type__app_label', u'content_type__model', u'codename')", - "unique_together": "((u'content_type', u'codename'),)", - "object_name": "Permission", - }, - "codename": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "content_type": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['contenttypes.ContentType']"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "50"}), - }, - "auth.user": { - "Meta": {"object_name": "User"}, - "date_joined": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "email": ("django.db.models.fields.EmailField", [], {"max_length": "75", "blank": "True"}), - "first_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "groups": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"symmetrical": "False", "related_name": "u'user_set'", "blank": "True", "to": "orm['auth.Group']"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "is_active": ("django.db.models.fields.BooleanField", [], {"default": "True"}), - "is_staff": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "is_superuser": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "last_login": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "last_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "password": ("django.db.models.fields.CharField", [], {"max_length": "128"}), - "user_permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - { - "symmetrical": "False", - "related_name": "u'user_set'", - "blank": "True", - "to": "orm['auth.Permission']", - }, - ), - "username": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "30"}), - }, - "contenttypes.contenttype": { - "Meta": { - "ordering": "('name',)", - "unique_together": "(('app_label', 'model'),)", - "object_name": "ContentType", - "db_table": "'django_content_type'", - }, - "app_label": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "model": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - }, - "meetups.location": { - "Meta": {"object_name": "Location"}, - "address": ( - "django.db.models.fields.CharField", - [], - {"max_length": "255", "null": "True", "blank": "True"}, - ), - "description": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "200"}), - "website": ("django.db.models.fields.URLField", [], {"max_length": "200", "null": "True", "blank": "True"}), - }, - "meetups.meetup": { - "Meta": {"ordering": "('-start_date',)", "object_name": "Meetup"}, - "attendee_count": ("django.db.models.fields.IntegerField", [], {"null": "True", "blank": "True"}), - "gplus_id": ( - "django.db.models.fields.CharField", - [], - {"max_length": "50", "null": "True", "blank": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "location": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['meetups.Location']", "null": "True", "blank": "True"}, - ), - "meetupcom_id": ( - "django.db.models.fields.CharField", - [], - {"max_length": "20", "null": "True", "blank": "True"}, - ), - "notes": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "start_date": ("django.db.models.fields.DateTimeField", [], {}), - }, - "meetups.rsvp": { - "Meta": {"object_name": "RSVP"}, - "gplus_name": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "gplus_uid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "meetup": ( - "django.db.models.fields.related.ForeignKey", - [], - {"related_name": "'rsvps'", "to": "orm['meetups.Meetup']"}, - ), - "source": ("django.db.models.fields.CharField", [], {"max_length": "20", "null": "True", "blank": "True"}), - "status": ("django.db.models.fields.CharField", [], {"max_length": "20", "null": "True", "blank": "True"}), - }, - "meetups.session": { - "Meta": {"object_name": "Session"}, - "abstract": ("django.db.models.fields.TextField", [], {}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "meetup": ( - "django.db.models.fields.related.ForeignKey", - [], - {"blank": "True", "related_name": "'sessions'", "null": "True", "to": "orm['meetups.Meetup']"}, - ), - "notes": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "slides_url": ( - "django.db.models.fields.URLField", - [], - {"max_length": "200", "null": "True", "blank": "True"}, - ), - "speaker": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['auth.User']", "null": "True", "blank": "True"}, - ), - "speaker_email": ( - "django.db.models.fields.EmailField", - [], - {"max_length": "75", "null": "True", "blank": "True"}, - ), - "speaker_name": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "title": ("django.db.models.fields.CharField", [], {"max_length": "255"}), - "type": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['meetups.SessionType']", "null": "True", "blank": "True"}, - ), - }, - "meetups.sessiontype": { - "Meta": {"object_name": "SessionType"}, - "description": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "30"}), - }, - } - - complete_apps = ["meetups"] diff --git a/pygraz_website/apps/meetups/south_migrations/0010_auto__chg_field_session_type__add_field_meetup_description.py b/pygraz_website/apps/meetups/south_migrations/0010_auto__chg_field_session_type__add_field_meetup_description.py deleted file mode 100644 index 2e0c764..0000000 --- a/pygraz_website/apps/meetups/south_migrations/0010_auto__chg_field_session_type__add_field_meetup_description.py +++ /dev/null @@ -1,203 +0,0 @@ -from django.db import models -from south.db import db -from south.utils import datetime_utils as datetime -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - def forwards(self, orm): - # Changing field 'Session.type' - db.alter_column( - "meetups_session", - "type_id", - self.gf("django.db.models.fields.related.ForeignKey")( - to=orm["meetups.SessionType"], null=True, on_delete=models.SET_NULL - ), - ) - # Adding field 'Meetup.description' - db.add_column( - "meetups_meetup", - "description", - self.gf("django.db.models.fields.TextField")(null=True, blank=True), - keep_default=False, - ) - - def backwards(self, orm): - # Changing field 'Session.type' - db.alter_column( - "meetups_session", - "type_id", - self.gf("django.db.models.fields.related.ForeignKey")(to=orm["meetups.SessionType"], null=True), - ) - # Deleting field 'Meetup.description' - db.delete_column("meetups_meetup", "description") - - models = { - "auth.group": { - "Meta": {"object_name": "Group"}, - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "80"}), - "permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"to": "orm['auth.Permission']", "symmetrical": "False", "blank": "True"}, - ), - }, - "auth.permission": { - "Meta": { - "ordering": "(u'content_type__app_label', u'content_type__model', u'codename')", - "unique_together": "((u'content_type', u'codename'),)", - "object_name": "Permission", - }, - "codename": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "content_type": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['contenttypes.ContentType']"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "50"}), - }, - "auth.user": { - "Meta": {"object_name": "User"}, - "date_joined": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "email": ("django.db.models.fields.EmailField", [], {"max_length": "75", "blank": "True"}), - "first_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "groups": ( - "django.db.models.fields.related.ManyToManyField", - [], - {"symmetrical": "False", "related_name": "u'user_set'", "blank": "True", "to": "orm['auth.Group']"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "is_active": ("django.db.models.fields.BooleanField", [], {"default": "True"}), - "is_staff": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "is_superuser": ("django.db.models.fields.BooleanField", [], {"default": "False"}), - "last_login": ("django.db.models.fields.DateTimeField", [], {"default": "datetime.datetime.now"}), - "last_name": ("django.db.models.fields.CharField", [], {"max_length": "30", "blank": "True"}), - "password": ("django.db.models.fields.CharField", [], {"max_length": "128"}), - "user_permissions": ( - "django.db.models.fields.related.ManyToManyField", - [], - { - "symmetrical": "False", - "related_name": "u'user_set'", - "blank": "True", - "to": "orm['auth.Permission']", - }, - ), - "username": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "30"}), - }, - "contenttypes.contenttype": { - "Meta": { - "ordering": "('name',)", - "unique_together": "(('app_label', 'model'),)", - "object_name": "ContentType", - "db_table": "'django_content_type'", - }, - "app_label": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "model": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "100"}), - }, - "meetups.location": { - "Meta": {"object_name": "Location"}, - "address": ( - "django.db.models.fields.CharField", - [], - {"max_length": "255", "null": "True", "blank": "True"}, - ), - "description": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"max_length": "200"}), - "website": ("django.db.models.fields.URLField", [], {"max_length": "200", "null": "True", "blank": "True"}), - }, - "meetups.meetup": { - "Meta": {"ordering": "('-start_date',)", "object_name": "Meetup"}, - "attendee_count": ("django.db.models.fields.IntegerField", [], {"null": "True", "blank": "True"}), - "description": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "gplus_id": ( - "django.db.models.fields.CharField", - [], - {"max_length": "50", "null": "True", "blank": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "location": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['meetups.Location']", "null": "True", "blank": "True"}, - ), - "meetupcom_id": ( - "django.db.models.fields.CharField", - [], - {"max_length": "20", "null": "True", "blank": "True"}, - ), - "notes": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "start_date": ("django.db.models.fields.DateTimeField", [], {}), - }, - "meetups.rsvp": { - "Meta": {"object_name": "RSVP"}, - "gplus_name": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "gplus_uid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "meetup": ( - "django.db.models.fields.related.ForeignKey", - [], - {"related_name": "'rsvps'", "to": "orm['meetups.Meetup']"}, - ), - "source": ("django.db.models.fields.CharField", [], {"max_length": "20", "null": "True", "blank": "True"}), - "status": ("django.db.models.fields.CharField", [], {"max_length": "20", "null": "True", "blank": "True"}), - }, - "meetups.session": { - "Meta": {"object_name": "Session"}, - "abstract": ("django.db.models.fields.TextField", [], {}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "meetup": ( - "django.db.models.fields.related.ForeignKey", - [], - {"blank": "True", "related_name": "'sessions'", "null": "True", "to": "orm['meetups.Meetup']"}, - ), - "notes": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "slides_url": ( - "django.db.models.fields.URLField", - [], - {"max_length": "200", "null": "True", "blank": "True"}, - ), - "speaker": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['auth.User']", "null": "True", "blank": "True"}, - ), - "speaker_email": ( - "django.db.models.fields.EmailField", - [], - {"max_length": "75", "null": "True", "blank": "True"}, - ), - "speaker_name": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100", "null": "True", "blank": "True"}, - ), - "title": ("django.db.models.fields.CharField", [], {"max_length": "255"}), - "type": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['meetups.SessionType']", "null": "True", "on_delete": "models.SET_NULL", "blank": "True"}, - ), - }, - "meetups.sessiontype": { - "Meta": {"object_name": "SessionType"}, - "description": ("django.db.models.fields.TextField", [], {"null": "True", "blank": "True"}), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "name": ("django.db.models.fields.CharField", [], {"unique": "True", "max_length": "30"}), - }, - } - - complete_apps = ["meetups"] diff --git a/pygraz_website/apps/meetups/south_migrations/__init__.py b/pygraz_website/apps/meetups/south_migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pygraz_website/apps/meetups/templates/meetups/404.html b/pygraz_website/apps/meetups/templates/meetups/404.html deleted file mode 100644 index 457f282..0000000 --- a/pygraz_website/apps/meetups/templates/meetups/404.html +++ /dev/null @@ -1,5 +0,0 @@ -{% extends "base.html" %} -{% block body %} -

Seite nicht gefunden

-

Die gewünschte Seite konnte leider nicht gefunden werden.

-{% endblock %} diff --git a/pygraz_website/apps/meetups/templates/meetups/500.html b/pygraz_website/apps/meetups/templates/meetups/500.html deleted file mode 100644 index 7bd28b2..0000000 --- a/pygraz_website/apps/meetups/templates/meetups/500.html +++ /dev/null @@ -1,10 +0,0 @@ - - - Fehler - - -

Fehler

-

Es ist leider ein Fehler aufgetreten.

-

Startseite

- - diff --git a/pygraz_website/apps/meetups/templates/meetups/base.html b/pygraz_website/apps/meetups/templates/meetups/base.html deleted file mode 100644 index 8a4fa10..0000000 --- a/pygraz_website/apps/meetups/templates/meetups/base.html +++ /dev/null @@ -1,2 +0,0 @@ -{% extends "base.html" %} -{% block nav-meetups %}active{% endblock %} diff --git a/pygraz_website/apps/meetups/templates/meetups/base_original.html b/pygraz_website/apps/meetups/templates/meetups/base_original.html deleted file mode 100644 index d4bde0d..0000000 --- a/pygraz_website/apps/meetups/templates/meetups/base_original.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - {% block title %}{% endblock %}PyGRAZ - - - - - -Menü - -
-
- -

PyGRAZ ist eine Usergroup mit die Python-Programmiersprache in Graz. Wir treffen uns regelmässig am ersten Dienstag im Monat entweder - im realraum oder im Gösserbräu.

-
-
- {% if messages %} - {% for msg in messages %} -
- × - {{ msg.message }} -
- {% endfor %} - {% endif %} - {% block body %} - {% endblock %} -
-
-
- © 2010-{% now "Y" %}, PyGRAZ -
Powered by Django -
Hosted by DigitalOcean (Referal link) -
-
-
- -{% block tail %}{% endblock %} - - diff --git a/pygraz_website/apps/meetups/templates/meetups/emails/new_session.txt b/pygraz_website/apps/meetups/templates/meetups/emails/new_session.txt deleted file mode 100644 index 1b3ddd7..0000000 --- a/pygraz_website/apps/meetups/templates/meetups/emails/new_session.txt +++ /dev/null @@ -1,6 +0,0 @@ -Es wurde eine neue Session eingetragen: - -Title: {{ session.title }} -Vortragender: {% if session.speaker %}{{ session.speaker }}{% else %}{{ session.speaker_name }}{% endif %} - -{{ session_url }} diff --git a/pygraz_website/apps/meetups/templates/meetups/index.html b/pygraz_website/apps/meetups/templates/meetups/index.html deleted file mode 100644 index b36f4ce..0000000 --- a/pygraz_website/apps/meetups/templates/meetups/index.html +++ /dev/null @@ -1,58 +0,0 @@ -{% extends "base.html" %} -{% load crispy_forms_tags %} -{% block page_class %}frontpage{% endblock %} -{% block nav-start %}active{% endblock %} -{% block body %} -
- {% if next_meetup %} -

Nächstes Treffen am {{ next_meetup.start_date|date:"DATE_FORMAT" }} um {{ next_meetup.start_date|time:"TIME_FORMAT" }} Uhr

- {% with next_meetup as meetup %} - {% include "meetups/meetup-data.html" %} - {% endwith %} - {% else %} -

Derzeit gibt es leider noch keine Informationen zum nächsten Treffen.

- {% endif %} -
-
-

Session-Ideen

- {% if session_proposals %} - - - - - - - - - {% for proposal in session_proposals %} - - - - {% endfor %} - -
TitelVortragender
{{ proposal.title }} - {% if proposal.speaker %} - {{ proposal.get_speaker_name }} - {% else %} - {{ proposal.get_speaker_name }} - {% endif %} -
- {% endif %} -
-

Deine Session-Idee

-

Möchtest du etwas präsentieren? Dann trage deinen Vorschlag hier ein. Wenn es dann wieder auf ein neues Meetup zugeht, werden wir dich - via E-Mail kontaktieren, um einen Termin auszumachen.

- {% crispy submission_form %} -
-
- {% if past_meetups %} -
-

Vergangene Meetups

- -
- {% endif %} -{% endblock %} diff --git a/pygraz_website/apps/meetups/templates/meetups/meetup-data.html b/pygraz_website/apps/meetups/templates/meetups/meetup-data.html deleted file mode 100644 index 4c00887..0000000 --- a/pygraz_website/apps/meetups/templates/meetups/meetup-data.html +++ /dev/null @@ -1,85 +0,0 @@ -{% load markdown_tags %} -
-
- {% if meetup.description %} -
{{ meetup.description|markdown }}
- {% endif %} -
-

{% if meetup.is_in_future %}Geplante {% endif %}Sessions

- {% with meetup.sessions.all as sessions %} - {% if sessions %} - {% for session in sessions %} -
-

{{ session.title }}

- {% if session.speaker_name or session.speaker %} -

von {% if session.speaker %}{{ session.get_speaker_name }}{% else %}{{ session.speaker_name }}{% endif %}

- {% endif %} - {% if session.abstract %} -
{{ session.abstract|markdown }}
- {% endif %} - {% if session.slides_url %} -

Folien

- {% endif %} -
- {% endfor %} - {% else %} - {% if meetup.is_in_future %} -

Derzeit sind noch keine Sessions für dieses Meetup fix geplant. Falls du einen Session-Vorschlag eingereicht hast, bitte lass - uns wissen, falls du die Session bei diesem Meetup halten möchtest.

- {% else %} -

Keine Sessions für dieses Meetup eingetragen.

- {% endif %} - {% endif %} - {% endwith %} -
- {% if show_notes and meetup.notes %} -
-

Notizen, Links, etc.

- {{ meetup.notes|markdown }} -
- {% endif %} - {% if show_rsvps %} - {% if rsvps.coming %} -
-

Folgende Personen haben ihr Kommen angekündigt:

-
    - {% for rsvp in rsvps.coming %} -
  • {{ rsvp.name }} {% if rsvp.source == 'meetupcom' %}(via Meetup.com){% endif %}
  • - {% endfor %} -
-

Diese Liste enthält derzeit nur Anmeldungen auf Meetup.com.

-
- {% endif %} - {% if meetup.gplus_id %} -
- Event auf Google+ -

Dieses Treffen wurde auch auf Google+ - angekündigt. Wenn Du teilnehmen möchtest, trage dich bitte dort ein.

-
- {% endif %} - {% endif %} -
- {% if meetup.meetupcom_id and meetup.is_in_future %} -
-

Falls du vorhast, zu kommen, bitte trage dich auf Meetup.com ein! Es ist nicht zwingend erforderlich, macht aber unsere Arbeit leichter, wenn wir abschätzen können, wie viele Leute in etwa kommen.

-
- {% endif %} -
- {% if meetup.location %} -

Location: {{ meetup.location.name }}

- {% if meetup.location.address %} -

{{ meetup.location.address }}

- {% endif %} - {% if meetup.location.map_image %} - Birdview image to location {{ meetup.location.name }} - {% endif %} -
{{ meetup.location.description }}
- {% else %} - {% if meetup.is_in_future %} -

Die Location steht zum jetzigen Zeitpunkt leider noch nicht fest.

- {% else %} -

Keine Location für dieses Meetup eingetragen.

- {% endif %} - {% endif %} -
-
diff --git a/pygraz_website/apps/meetups/templates/meetups/meetup_detail.html b/pygraz_website/apps/meetups/templates/meetups/meetup_detail.html deleted file mode 100644 index 09eb425..0000000 --- a/pygraz_website/apps/meetups/templates/meetups/meetup_detail.html +++ /dev/null @@ -1,22 +0,0 @@ -{% extends "meetups/base.html" %} -{% block page_class %}meetup-details{% endblock%} -{% block title %}{{ meetup.start_date|date:"DATE_FORMAT" }} « Meetups « {% endblock %} -{% block body %} -

Meetup vom {{ meetup.start_date.date|date:"DATE_FORMAT" }} um {{ meetup.start_date|time:"TIME_FORMAT" }} Uhr

- {% include "meetups/meetup-data.html" with show_notes="True" show_rsvps="True" %} -
- - - Comments powered by Disqus -{% endblock body %} diff --git a/pygraz_website/apps/meetups/templates/meetups/session_confirm_delete.html b/pygraz_website/apps/meetups/templates/meetups/session_confirm_delete.html deleted file mode 100644 index 8fc73ae..0000000 --- a/pygraz_website/apps/meetups/templates/meetups/session_confirm_delete.html +++ /dev/null @@ -1,9 +0,0 @@ -{% extends "meetups/base.html" %} -{% block body %} -
- {% csrf_token %} -

Bist du sicher, dass du diese Session löschen möchtest?

- - Abbrechen -
-{% endblock body %} diff --git a/pygraz_website/apps/meetups/templates/meetups/session_detail.html b/pygraz_website/apps/meetups/templates/meetups/session_detail.html deleted file mode 100644 index 073f4ec..0000000 --- a/pygraz_website/apps/meetups/templates/meetups/session_detail.html +++ /dev/null @@ -1,50 +0,0 @@ -{% extends "meetups/base.html" %} -{% load markdown_tags %} -{% block page_class %}session-details{% endblock %} -{% block title %}{% if session.meetup %}Session{% else %}Session-Vorschlag{% endif %}: {{ session.title }} « {% endblock %} -{% block body %} -
-

{% if session.meetup %}Session{% else %}Session-Vorschlag{% endif %}: {{ session.title }}

-

von {{ session.get_speaker_name }}

-
    - {% if can_edit %} -
  • Editieren
  • - {% endif %} - {% if can_delete %} -
  • Löschen
  • - {% endif %} -
- {% if not session.meetup %} -

Das ist bisher nur ein Session-Vorschlag.

- {% else %} -

Diese Session {% if session.meetup.is_in_future %}wird{% else %}wurde{% endif %} am {{ session.meetup.start_date|date:"DATE_FORMAT" }} gehalten.

- {% endif %} - {% if session.slides_url %} -

Folien

- {% endif %} -
{{ session.abstract|markdown }}
- {% if session.notes %} -
-

Notizen

- {{ session.notes|markdown }} -
- {% endif %} - - -
- - - Comments powered by Disqus -
-{% endblock body %} diff --git a/pygraz_website/apps/meetups/templates/meetups/session_form.html b/pygraz_website/apps/meetups/templates/meetups/session_form.html deleted file mode 100644 index 1b4276b..0000000 --- a/pygraz_website/apps/meetups/templates/meetups/session_form.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends "meetups/base.html" %} -{% load crispy_forms_tags %} -{% block page_class %}fullpage-form{% endblock page_class %} -{% block body %} -

Lege einen Session-Vorschlag an

- {% crispy form %} -{% endblock body %} diff --git a/pygraz_website/apps/meetups/templates/userena/base_userena.html b/pygraz_website/apps/meetups/templates/userena/base_userena.html deleted file mode 100644 index c97d521..0000000 --- a/pygraz_website/apps/meetups/templates/userena/base_userena.html +++ /dev/null @@ -1,4 +0,0 @@ -{% extends "base.html" %} -{% block body %} - {% block content %}{% endblock %} -{% endblock body %} diff --git a/pygraz_website/apps/meetups/templates/userena/email_form.html b/pygraz_website/apps/meetups/templates/userena/email_form.html deleted file mode 100644 index f1ac727..0000000 --- a/pygraz_website/apps/meetups/templates/userena/email_form.html +++ /dev/null @@ -1,9 +0,0 @@ -{% extends "userena/base_userena.html" %} -{% load crispy_forms_tags %} -{% block page_class %}fullpage-form{% endblock %} -{% block title %}E-Mail ändern « {% endblock %} -{% block content %} -

E-Mail ändern

-

Deine aktuelle E-Mail-Adresse lautet {{ user.email }}.

- {% crispy form %} -{% endblock content %} diff --git a/pygraz_website/apps/meetups/templates/userena/emails/activation_email_message.txt b/pygraz_website/apps/meetups/templates/userena/emails/activation_email_message.txt deleted file mode 100644 index 435af20..0000000 --- a/pygraz_website/apps/meetups/templates/userena/emails/activation_email_message.txt +++ /dev/null @@ -1,11 +0,0 @@ -{% load i18n %}{% autoescape off %} -{% if not without_usernames %}{% blocktrans with user.username as username %}Hallo {{ username }},{% endblocktrans %} -{% endif %} -{% blocktrans with site.name as site %}Danke, dass du dich auf {{ site }} angemeldet hast.{% endblocktrans %} - -{% trans "Um deinen Account zu aktivieren, klicke bitte untenstehenden Link:" %} - -{{ protocol }}://{{ site.domain }}{% url "userena_activate" activation_key %} - -{% trans "Vielen Dank!" %} -{% endautoescape %} diff --git a/pygraz_website/apps/meetups/templates/userena/emails/activation_email_subject.txt b/pygraz_website/apps/meetups/templates/userena/emails/activation_email_subject.txt deleted file mode 100644 index cc7c4f6..0000000 --- a/pygraz_website/apps/meetups/templates/userena/emails/activation_email_subject.txt +++ /dev/null @@ -1,2 +0,0 @@ -{% load i18n %} -{% blocktrans with site.name as site %}Deine Anmeldung bei {{ site }}.{% endblocktrans %} diff --git a/pygraz_website/apps/meetups/templates/userena/emails/confirmation_email_message_new.txt b/pygraz_website/apps/meetups/templates/userena/emails/confirmation_email_message_new.txt deleted file mode 100644 index e325683..0000000 --- a/pygraz_website/apps/meetups/templates/userena/emails/confirmation_email_message_new.txt +++ /dev/null @@ -1,10 +0,0 @@ -{% load i18n %}{% autoescape off %} -{% if not without_usernames %}{% blocktrans with user.username as username %}Hallo {{ username }},{% endblocktrans %} -{% endif %} -{% blocktrans with site.name as site %}Du möchtest deine E-Mail-Adresse auf {{ site }} ändern?{% endblocktrans %} - - -{% trans "Klicke bitte untenstehenden Link, um deine neue E-Mail-Adresse zu bestätigen:" %} - -{{ protocol }}://{{ site.domain }}{% url "userena_email_confirm" confirmation_key %} -{% endautoescape %} diff --git a/pygraz_website/apps/meetups/templates/userena/emails/confirmation_email_message_old.txt b/pygraz_website/apps/meetups/templates/userena/emails/confirmation_email_message_old.txt deleted file mode 100644 index caa1812..0000000 --- a/pygraz_website/apps/meetups/templates/userena/emails/confirmation_email_message_old.txt +++ /dev/null @@ -1,7 +0,0 @@ -{% load i18n %}{% autoescape off %} -{% if not without_usernames %}{% blocktrans with user.username as username %}Hallo {{ username }},{% endblocktrans %} -{% endif %} -{% blocktrans with site.name as site %}Du möchtest deine E-Mail-Adresse auf {{ site }} ändern?{% endblocktrans %} - -{% blocktrans %}Eine E-Mail mit einem Bestätigungslink wurden an {{ new_email }} gesandt. Bitte klicke den Link in dieser E-Mail, um deine neue E-Mail-Adresse zu aktivieren.{% endblocktrans %} -{% endautoescape %} diff --git a/pygraz_website/apps/meetups/templates/userena/emails/confirmation_email_subject_new.txt b/pygraz_website/apps/meetups/templates/userena/emails/confirmation_email_subject_new.txt deleted file mode 100644 index ea05448..0000000 --- a/pygraz_website/apps/meetups/templates/userena/emails/confirmation_email_subject_new.txt +++ /dev/null @@ -1,2 +0,0 @@ -{% load i18n %} -{% blocktrans with site.name as site %}E-Mail-Verifikation für {{ site }}.{% endblocktrans %} diff --git a/pygraz_website/apps/meetups/templates/userena/emails/confirmation_email_subject_old.txt b/pygraz_website/apps/meetups/templates/userena/emails/confirmation_email_subject_old.txt deleted file mode 100644 index e20fc91..0000000 --- a/pygraz_website/apps/meetups/templates/userena/emails/confirmation_email_subject_old.txt +++ /dev/null @@ -1,2 +0,0 @@ -{% load i18n %} -{% blocktrans with site.name as site %}Möchtest du deine E-Mail-Adresse auf {{ site }} ändern?{% endblocktrans %} diff --git a/pygraz_website/apps/meetups/templates/userena/emails/password_reset_message.txt b/pygraz_website/apps/meetups/templates/userena/emails/password_reset_message.txt deleted file mode 100644 index 7a128f5..0000000 --- a/pygraz_website/apps/meetups/templates/userena/emails/password_reset_message.txt +++ /dev/null @@ -1,13 +0,0 @@ -{% load i18n %}{% autoescape off %} -{% blocktrans %}Du hast diese E-Mail bekommen, weil du den "Passwort ändern"-Prozess auf {{ site_name }} angestoßen hast.{% endblocktrans %}. - -{% trans "Bitte gehe auf folgende Seite und trage ein neues Passwort ein:" %} -{% block reset_link %} -{{ protocol }}://{{ domain }}{% url 'userena_password_reset_confirm' uid token %} -{% endblock %} - -{% if not without_usernames %}{% blocktrans with user.username as username %} -Dein Benutzername: {{ username }} -{% endblocktrans %} -{% endif %} -{% endautoescape %} diff --git a/pygraz_website/apps/meetups/templates/userena/password_form.html b/pygraz_website/apps/meetups/templates/userena/password_form.html deleted file mode 100644 index 9beebff..0000000 --- a/pygraz_website/apps/meetups/templates/userena/password_form.html +++ /dev/null @@ -1,8 +0,0 @@ -{% extends "userena/base_userena.html" %} -{% load crispy_forms_tags %} -{% block page_class %}fullpage-form{% endblock %} -{% block title %}Passwort ändern « {% endblock %} -{% block content %} -

Passwort ändern

- {% crispy form %} -{% endblock content %} diff --git a/pygraz_website/apps/meetups/templates/userena/password_reset_confirm_form.html b/pygraz_website/apps/meetups/templates/userena/password_reset_confirm_form.html deleted file mode 100644 index 29eb7b4..0000000 --- a/pygraz_website/apps/meetups/templates/userena/password_reset_confirm_form.html +++ /dev/null @@ -1,8 +0,0 @@ -{% extends 'userena/base_userena.html' %} -{% load i18n crispy_forms_tags %} -{% block page_class %}fullpage-form{% endblock %} -{% block title %}{% trans "Reset password" %}{% endblock %} -{% block content %} -

Passwort zurücksetzen

- {% crispy form %} -{% endblock %} diff --git a/pygraz_website/apps/meetups/templates/userena/password_reset_form.html b/pygraz_website/apps/meetups/templates/userena/password_reset_form.html deleted file mode 100644 index 29eb7b4..0000000 --- a/pygraz_website/apps/meetups/templates/userena/password_reset_form.html +++ /dev/null @@ -1,8 +0,0 @@ -{% extends 'userena/base_userena.html' %} -{% load i18n crispy_forms_tags %} -{% block page_class %}fullpage-form{% endblock %} -{% block title %}{% trans "Reset password" %}{% endblock %} -{% block content %} -

Passwort zurücksetzen

- {% crispy form %} -{% endblock %} diff --git a/pygraz_website/apps/meetups/templates/userena/profile_form.html b/pygraz_website/apps/meetups/templates/userena/profile_form.html deleted file mode 100644 index 61e471b..0000000 --- a/pygraz_website/apps/meetups/templates/userena/profile_form.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends "userena/base_userena.html" %} -{% load crispy_forms_tags %} -{% block page_class %}fullpage-form{% endblock %} -{% block content %} -

Profil ändern

- {% crispy form %} -{% endblock content %} diff --git a/pygraz_website/apps/meetups/templates/userena/signin_form.html b/pygraz_website/apps/meetups/templates/userena/signin_form.html deleted file mode 100644 index 6e83e94..0000000 --- a/pygraz_website/apps/meetups/templates/userena/signin_form.html +++ /dev/null @@ -1,9 +0,0 @@ -{% extends "userena/base_userena.html" %} -{% load crispy_forms_tags %} -{% block page_class %}fullpage-form{% endblock %} -{% block title %}Anmelden « {% endblock %} -{% block content %} -

Anmelden

- {% crispy form %} -

Passwort vergessen?

-{% endblock %} diff --git a/pygraz_website/apps/meetups/templates/userena/signup_form.html b/pygraz_website/apps/meetups/templates/userena/signup_form.html deleted file mode 100644 index e3eee49..0000000 --- a/pygraz_website/apps/meetups/templates/userena/signup_form.html +++ /dev/null @@ -1,11 +0,0 @@ -{% extends "userena/base_userena.html" %} -{% load crispy_forms_tags %} -{% block page_class %}fullpage-form{% endblock %} -{% block title %}Registrieren « {% endblock %} -{% block content %} -

Registrieren

-

Derzeit bringt Registrieren vor allem eines: Du kannst Session-Proposals und Sessions, die du selbst angelegt bzw. gehalten hast, auch wieder - editieren, falls dir mehr zu dem Thema eingefallen ist.

-

Wir lassen uns aber noch ein paar Goodies einfallen :-)

- {% crispy form %} -{% endblock content %} diff --git a/pygraz_website/apps/meetups/tests/__init__.py b/pygraz_website/apps/meetups/tests/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pygraz_website/apps/meetups/tests/test_calendar.py b/pygraz_website/apps/meetups/tests/test_calendar.py deleted file mode 100644 index 59ce2a4..0000000 --- a/pygraz_website/apps/meetups/tests/test_calendar.py +++ /dev/null @@ -1,31 +0,0 @@ -import arrow -from django.test import TestCase - -from .. import models - - -class MeetupCalendarViewTests(TestCase): - def setUp(self): - start = arrow.utcnow().replace(month=1, day=2, hour=18) - self.meetup = models.Meetup(start_date=start.datetime, meetupcom_id="test") - self.meetup.save() - - def test_simple_calendar(self): - resp = self.client.get("/meetups/ical/") - self.assertEqual(200, resp.status_code) - self.assertEqual("text/calendar", resp["Content-Type"]) - date = arrow.get(self.meetup.start_date).format("YYYY-MM-DD") - timestamp = arrow.get(self.meetup.start_date).format("YYYYMMDDTHHmmss") + "Z" - expected_content = ( - f"BEGIN:VCALENDAR\r\n" - f"X-WR-CALNAME:PyGRAZ-Meetups\r\n" - f"BEGIN:VEVENT\r\n" - f"SUMMARY:PyGRAZ-Meetup am {date}\r\n" - f"DTSTART:{timestamp}\r\n" - f"UID:example.com/meetups/1\r\n" - f"DESCRIPTION:Details: https://example.com/meetups/{date}/\r\n" - f"END:VEVENT\r\n" - f"END:VCALENDAR\r\n" - ).encode() - actual_content = resp.content - self.assertEqual(expected_content, actual_content) diff --git a/pygraz_website/apps/meetups/tests/test_commands.py b/pygraz_website/apps/meetups/tests/test_commands.py deleted file mode 100644 index 9d2eb18..0000000 --- a/pygraz_website/apps/meetups/tests/test_commands.py +++ /dev/null @@ -1,64 +0,0 @@ -import re - -import arrow -import requests_mock -from django.core.management import call_command -from django.test import TestCase -from django.utils import timezone - -from .. import models - - -class FetchRsvpsCommandTests(TestCase): - def setUp(self): - future_year = timezone.now().year + 2 - start = arrow.utcnow().replace(year=future_year, month=1, day=2, hour=18) - self.meetup = models.Meetup(start_date=start.datetime, meetupcom_id="test") - self.meetup.save() - models.Meetup(start_date=start.replace(year=future_year, month=2).datetime).save() - self.previous_rsvp = models.RSVP( - meetup=self.meetup, status="coming", remote_username="test", remote_uid="test", source="meetupcom" - ) - self.previous_rsvp.save() - - def test_failure_should_keep_rsvps(self): - with requests_mock.Mocker() as mock: - mock.get(re.compile("api.meetup.com/2/rsvp"), text="invalid_response") - with self.assertRaises(Exception): - call_command("fetch_rsvps") - existing_rsvps = models.RSVP.objects.filter(meetup=self.meetup).all() - self.assertEqual(len(list(existing_rsvps)), 1) - - def test_success(self): - with requests_mock.Mocker() as mock: - mock.get( - re.compile("api.meetup.com/2/rsvp"), - [ - { - "json": { - "meta": {"count": 1, "total_count": 2}, - "results": [{"response": "no", "member": {"name": "new user", "member_id": "12345"}}], - } - }, - { - "json": { - "meta": {"count": 1, "total_count": 2}, - "results": [{"response": "yes", "member": {"name": "new user 2", "member_id": "12346"}}], - } - }, - ], - ) - call_command("fetch_rsvps") - rsvps = list(models.RSVP.objects.filter(meetup=self.meetup).all()) - self.assertEqual(2, len(rsvps)) - - rsvp = rsvps[0] - self.assertEqual("not_coming", rsvp.status) - self.assertEqual("new user", rsvp.remote_username) - self.assertEqual("12345", rsvp.remote_uid) - self.assertEqual("meetupcom", rsvp.source) - rsvp = rsvps[1] - self.assertEqual("coming", rsvp.status) - self.assertEqual("new user 2", rsvp.remote_username) - self.assertEqual("12346", rsvp.remote_uid) - self.assertEqual("meetupcom", rsvp.source) diff --git a/pygraz_website/apps/meetups/tests/test_models.py b/pygraz_website/apps/meetups/tests/test_models.py deleted file mode 100644 index f237b43..0000000 --- a/pygraz_website/apps/meetups/tests/test_models.py +++ /dev/null @@ -1,108 +0,0 @@ -import datetime -import unittest - -import pytz -from django.core.exceptions import ValidationError -from django.test import TestCase -from django.utils import timezone - -from .. import models - - -class MeetupModelTests(TestCase): - def test_required_fields(self): - """ - Tests that only the start_date is required. - """ - with self.assertRaises(ValidationError): - models.Meetup().full_clean() - models.Meetup(start_date=datetime.datetime.now().replace(tzinfo=pytz.UTC)).full_clean() - - def test_is_in_future(self): - """ - Is_in_future should return true if the start_date of the meetup is in - the future. - """ - now = timezone.now() - future_meetup = models.Meetup(start_date=now + datetime.timedelta(days=2)) - past_meetup = models.Meetup(start_date=now - datetime.timedelta(days=2)) - now_meetup = models.Meetup(start_date=now) - self.assertTrue(future_meetup.is_in_future(now=now)) - self.assertFalse(past_meetup.is_in_future(now=now)) - self.assertFalse(now_meetup.is_in_future(now=now)) - - def test_future_meetups_through_manager(self): - """ - Tests that the manager returns future meetups as requested. - """ - now = timezone.now() - past_meetup = models.Meetup(start_date=now - datetime.timedelta(days=1)).save() - now_meetup = models.Meetup(start_date=now).save() - future_meetup_1 = models.Meetup(start_date=now + datetime.timedelta(days=1)) - future_meetup_1.save() - future_meetup_2 = models.Meetup(start_date=now + datetime.timedelta(days=2)) - future_meetup_2.save() - found_meetups = list(models.Meetup.objects.get_future_meetups(now=now)) - self.assertEqual([future_meetup_2, future_meetup_1], found_meetups) - for m in found_meetups: - self.assertTrue(m.is_in_future(now)) - - def test_past_meetups_through_manager(self): - """ - Tests that the manager returns future meetups as requested. - """ - now = timezone.now() - past_meetup = models.Meetup(start_date=now - datetime.timedelta(days=1)).save() - now_meetup = models.Meetup(start_date=now).save() - future_meetup_1 = models.Meetup(start_date=now + datetime.timedelta(days=1)).save() - future_meetup_2 = models.Meetup(start_date=now + datetime.timedelta(days=2)).save() - for m in models.Meetup.objects.get_past_meetups(now=now): - self.assertFalse(m.is_in_future(now)) - - def test_set_attendee_count(self): - """ - It should be possible to set a number of attendees of a meetup outside - of who responded to the RSVP. - """ - models.Meetup(start_date=timezone.now(), attendee_count=10).full_clean() - m = models.Meetup(start_date=timezone.now()) - m.attendee_count = 10 - - def test_valid_attendee_count(self): - """ - A valid number of attendees is a positive integer, 0 or None - """ - t = timezone.now() - meetup = models.Meetup(start_date=t) - meetup.full_clean() - meetup.attendee_count = None - meetup.full_clean() - meetup.attendee_count = 1 - meetup.full_clean() - meetup.attendee_count = 10 - meetup.full_clean() - meetup.attendee_count = 0 - meetup.full_clean() - with self.assertRaises(ValidationError): - meetup.attendee_count = -1 - meetup.full_clean() - - -class LocationModelTests(unittest.TestCase): - def test_required_fields(self): - """ - Only the name of the location is required. - """ - with self.assertRaises(ValidationError): - models.Location().full_clean() - models.Location(name="Name").full_clean() - - -class SessionModelTests(unittest.TestCase): - def test_required_fields(self): - """ - Title and abstract are required. - """ - with self.assertRaises(ValidationError): - models.Session().full_clean() - models.Session(title="title", abstract="abstract").full_clean() diff --git a/pygraz_website/apps/meetups/tests/test_views.py b/pygraz_website/apps/meetups/tests/test_views.py deleted file mode 100644 index 2c26f1f..0000000 --- a/pygraz_website/apps/meetups/tests/test_views.py +++ /dev/null @@ -1,169 +0,0 @@ -from http import HTTPStatus - -import arrow -from django.contrib.auth.models import User -from django.http import Http404, HttpResponseNotFound -from django.test import TestCase -from django.utils import timezone - -from .. import models - - -class MeetupViewTests(TestCase): - def setUp(self): - self.now = timezone.now() - self.past_meetup = models.Meetup(start_date=self.now - timezone.timedelta(days=2)) - self.past_meetup.save() - rsvp = models.RSVP( - meetup=self.past_meetup, - remote_username="remote_user", - remote_uid="remote_uid", - source="meetupcom", - status="coming", - ) - rsvp.save() - self.future_meetup = models.Meetup(start_date=self.now + timezone.timedelta(days=2)) - self.future_meetup.save() - - def tearDown(self): - self.future_meetup.delete() - self.past_meetup.delete() - - def test_view_not_existing(self): - """ - Tests that a request for a not-existing meetup results in a 404 page. - """ - self.assertEqual(self.client.get("/meetups/123/").status_code, HTTPStatus.NOT_FOUND) - self.assertEqual(self.client.get("/meetups/2015-05-01/").status_code, HTTPStatus.NOT_FOUND) - - def test_view_existing(self): - """ - Tests that a meetup can be accessed by its URL. - """ - resp = self.client.get(f"/meetups/{self.past_meetup.pk}/") - self.assertEqual(200, resp.status_code) - self.assertEqual(1, len(resp.context["rsvps"].coming)) - - def test_view_existing_via_date(self): - """ - The primary URL of a meetup is one containing its date for better SEO. - """ - date = arrow.get(self.past_meetup.start_date).format("YYYY-MM-DD") - response = self.client.get(f"/meetups/{date}/") - self.assertEqual(200, response.status_code) - - def test_upcoming_on_frontpage(self): - """ - Tests that the next meetup is displayed on the frontpage. - """ - resp = self.client.get("/") - self.assertEqual(200, resp.status_code) - self.assertEqual(self.future_meetup, resp.context["next_meetup"]) - - -class SessionViewTests(TestCase): - def setUp(self): - self.user = User.objects.create_user(username="username", password="password", email="test@test.com") - self.session = models.Session(title="Some session", abstract="abstract", speaker=self.user) - self.session.save() - - def test_anonymous_view(self): - resp = self.client.get(f"/meetups/sessions/{self.session.pk}/") - self.assertEqual(resp.status_code, HTTPStatus.OK) - self.assertFalse(resp.context["can_edit"]) - self.assertFalse(resp.context["can_delete"]) - - def test_author_view(self): - self.client.login(username="username", password="password") - resp = self.client.get(f"/meetups/sessions/{self.session.pk}/") - self.assertEqual(resp.status_code, HTTPStatus.OK) - self.assertTrue(resp.context["can_edit"]) - self.assertTrue(resp.context["can_delete"]) - - -class DeleteSessionViewTests(TestCase): - def setUp(self): - self.user = User.objects.create_user(username="username", password="password", email="test@test.com") - self.other_user = User.objects.create_user( - username="other_username", password="password", email="other@test.com" - ) - self.session = models.Session(title="Some session", abstract="abstract", speaker=self.user) - self.session.save() - - def test_anonymous_view(self): - url = f"/meetups/sessions/{self.session.pk}/delete/" - resp = self.client.get(url) - self.assertRedirects(resp, f"/accounts/signin/?next={url}") - - def test_otheruser_view(self): - self.client.login(username="other_username", password="password") - url = f"/meetups/sessions/{self.session.pk}/delete/" - resp = self.client.get(url) - self.assertEqual(403, resp.status_code) - - def test_author_view(self): - self.client.login(username="username", password="password") - url = f"/meetups/sessions/{self.session.pk}/delete/" - resp = self.client.get(url) - self.assertEqual(200, resp.status_code) - - resp = self.client.post(url) - self.assertEqual(302, resp.status_code) - self.assertEqual(0, models.Session.objects.count()) - - -class SubmitSessionViewTests(TestCase): - def setUp(self): - self.user = User.objects.create_user(username="username", password="password", email="test@test.com") - self.talk_type = models.SessionType(name="Talk") - self.talk_type.save() - - def test_loggedin_view(self): - url = "/meetups/sessions/submit/?next=/" - self.client.login(username="username", password="password") - resp = self.client.get(url) - self.assertEqual(200, resp.status_code) - - resp = self.client.post( - url, - { - "title": "title", - "abstract": "abstract", - "type": self.talk_type.pk, - }, - ) - self.assertRedirects(resp, "/") - sessions = list(models.Session.objects.all()) - self.assertEqual(1, len(sessions)) - self.assertEqual("title", sessions[0].title) - self.assertEqual("abstract", sessions[0].abstract) - self.assertEqual(self.user, sessions[0].speaker) - - -class EditSessionViewTests(TestCase): - def setUp(self): - self.user = User.objects.create_user(username="username", password="password", email="test@test.com") - self.other_user = User.objects.create_user( - username="other_username", password="password", email="other@test.com" - ) - self.talk_type = models.SessionType(name="Talk") - self.talk_type.save() - self.session = models.Session(title="Some session", abstract="abstract", speaker=self.user, type=self.talk_type) - self.session.save() - - def test_anonymous_view(self): - url = "/meetups/sessions/1/edit/" - resp = self.client.get(url) - self.assertRedirects(resp, f"/accounts/signin/?next={url}") - - def test_author_view(self): - self.client.login(username="username", password="password") - url = "/meetups/sessions/1/edit/" - resp = self.client.get(url) - self.assertEqual(200, resp.status_code) - - resp = self.client.post(url, {"title": "New title", "abstract": "New abstract", "type": self.talk_type.pk}) - self.assertEqual(302, resp.status_code) - session = models.Session.objects.get(pk=self.session.pk) - self.assertEqual(session.title, "New title") - self.assertEqual(session.abstract, "New abstract") diff --git a/pygraz_website/apps/meetups/urls.py b/pygraz_website/apps/meetups/urls.py deleted file mode 100644 index 30dcbdf..0000000 --- a/pygraz_website/apps/meetups/urls.py +++ /dev/null @@ -1,26 +0,0 @@ -from django.contrib.auth.decorators import login_required -from django.urls import path - -from . import views - -urlpatterns = [ - path( - "--/", - views.DetailView.as_view(), - name="view-meetup", - ), - path("/", views.DetailView.as_view(), name="meetup-permalink"), - path("sessions/submit/", views.SubmitSession.as_view(), name="submit-session"), - path("sessions//", views.ViewSession.as_view(), name="view-session"), - path( - "sessions//edit/", - login_required(views.EditSession.as_view()), - name="edit-session", - ), - path( - "sessions//delete/", - login_required(views.DeleteSession.as_view()), - name="delete-session", - ), - path("ical/", views.ICalendarView.as_view(), name="ical"), -] diff --git a/pygraz_website/apps/meetups/views.py b/pygraz_website/apps/meetups/views.py deleted file mode 100644 index 6f23cde..0000000 --- a/pygraz_website/apps/meetups/views.py +++ /dev/null @@ -1,209 +0,0 @@ -import collections -import datetime -from urllib.parse import urlparse - -import icalendar -import pytz -from django.conf import settings -from django.contrib import messages -from django.contrib.sites.models import Site -from django.http import Http404, HttpResponse, HttpResponseRedirect -from django.shortcuts import get_object_or_404 -from django.utils import timezone -from django.views import generic as generic_views - -from . import emails, forms, models -from .decorators import allow_only_staff_or_author_during_submission - -RSVPCollection = collections.namedtuple("RSVPCollection", "coming maybe not_coming") - - -class NextRedirectMixin: - """ - A simple mixin for checking for a next parameter for redirects. - """ - - redirect_param = "next" - - def get_next_redirect(self): - next = self.request.GET.get(self.redirect_param) - if next is None: - return None - netloc = urlparse(next)[1] - if netloc is None or netloc == "" or netloc == self.request.get_host(): - return next - return None - - def get_success_url(self): - next = self.get_next_redirect() - if next: - return next - return super().get_success_url() - - -class DetailView(generic_views.DetailView): - """ - Shows the details of a single meetup. There are two entry points: Via the - PK of the meetup and via its date. - - If neither criteria match a meetup, a 404 error page is shown. - """ - - model = models.Meetup - - def get_object(self): - if "pk" in self.kwargs: - return get_object_or_404(self.model.objects.select_related("location"), pk=self.kwargs.get("pk")) - else: - date_start = datetime.datetime( - int(self.kwargs.get("year")), int(self.kwargs.get("month")), int(self.kwargs.get("day")), 0, 0, 0 - ) - date_end = date_start + datetime.timedelta(days=1) - local_tz = timezone.get_default_timezone() - date_start = date_start.replace(tzinfo=local_tz) - date_end = date_end.replace(tzinfo=local_tz) - utc_date_start = date_start.astimezone(pytz.utc) - utc_date_end = date_end.astimezone(pytz.utc) - result = self.model.objects.filter( - start_date__gte=utc_date_start, start_date__lte=utc_date_end - ).select_related("location") - if not len(result): - raise Http404 - return result[0] - - def get_context_data(self, *args, **kwargs): - data = super().get_context_data(*args, **kwargs) - data["rsvps"] = self._get_rsvps() - return data - - def _get_rsvps(self): - result = RSVPCollection([], [], []) - for rsvp in self.object.rsvps.all(): - if rsvp.status: - getattr(result, rsvp.status).append(rsvp) - return result - - -class SubmitSession(NextRedirectMixin, generic_views.CreateView): - """ - Allows a user or guest to submit a session. - """ - - model = models.Session - - def get_form_class(self): - return forms.get_session_submission_form_class(self.request) - - def form_valid(self, form): - session = form.save(commit=False) - if self.request.user.is_authenticated: - session.speaker = self.request.user - session.save() - emails.notify_admins_for_new_session(session) - messages.success(self.request, "Session erstellt.") - return HttpResponseRedirect(self.get_success_url()) - - -class ViewSession(generic_views.DetailView): - """ - Shows a single session by its PK and returns a 404 page if no matching - session could be found. - """ - - model = models.Session - - def get_context_data(self, **kwargs): - data = super().get_context_data(**kwargs) - can_delete = ( - self.request.user.is_superuser - or self.request.user.is_staff - or (self.object.speaker and self.object.speaker == self.request.user) - ) - data.update( - { - "can_delete": can_delete, - "can_edit": can_delete, - } - ) - return data - - def get_object(self): - return get_object_or_404(self.model, pk=self.kwargs["pk"]) - - -class EditSession(generic_views.UpdateView): - """ - During the submission period, the author as well as staff members can edit - the session. Once it has been attached to a meetup, only staff members can - edit the proposal anymore. - """ - - model = models.Session - form_class = forms.EditSessionForm - - @allow_only_staff_or_author_during_submission - def dispatch(self, request, *args, **kwargs): - return super().dispatch(request, *args, **kwargs) - - def get_object(self): - if hasattr(self, "object") and self.object: - return self.object - return get_object_or_404(self.model, pk=self.kwargs["pk"]) - - def form_valid(self, form): - messages.success(self.request, "Session aktualisiert.") - return super().form_valid(form) - - -class DeleteSession(NextRedirectMixin, generic_views.DeleteView): - """ - During the submission period, author and staff can delete a session. - Afterwards only the staff. - """ - - model = models.Session - success_url = "/" - - def get_object(self): - return get_object_or_404(self.model, pk=self.kwargs["pk"]) - - def get_context_data(self, **kwargs): - data = super().get_context_data(**kwargs) - data.update({"cancel_url": self.get_success_url()}) - return data - - def delete(self, request, *args, **kwargs): - response = super().delete(request, *args, **kwargs) - messages.success(request, "Session gelöscht.") - return response - - @allow_only_staff_or_author_during_submission - def dispatch(self, request, *args, **kwargs): - return super().dispatch(request, *args, **kwargs) - - -class ICalendarView(generic_views.View): - """ - This offers a simple ical rendering of all the meetups. - """ - - def get_meetup_summary(self, meetup): - return f"PyGRAZ-Meetup am {meetup.start_date.date()}" - - def get_meetup_description(self, meetup): - return f"""Details: https://{Site.objects.get_current().domain}{meetup.get_absolute_url()}""" - - def get(self, request, *args, **kwargs): - cal = icalendar.Calendar() - cal.add("X-WR-CALNAME", settings.MEETUPS_CALENDAR_NAME) - site = Site.objects.get_current() - for meetup in models.Meetup.objects.all(): - evt = icalendar.Event() - evt.add("summary", self.get_meetup_summary(meetup)) - evt.add("description", self.get_meetup_description(meetup)) - evt.add("dtstart", meetup.start_date) - evt["uid"] = f"{site.domain}/meetups/{meetup.pk}" - cal.add_component(evt) - response = HttpResponse(cal.to_ical(), content_type="text/calendar") - response["Content-Disposition"] = "attachment;filename=pygraz.ics" - return response diff --git a/pygraz_website/asgi.py b/pygraz_website/asgi.py new file mode 100644 index 0000000..c3bebec --- /dev/null +++ b/pygraz_website/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for pygraz_website project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/4.2/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pygraz_website.settings") + +application = get_asgi_application() diff --git a/pygraz_website/context_processors.py b/pygraz_website/context_processors.py deleted file mode 100644 index 4e5aef6..0000000 --- a/pygraz_website/context_processors.py +++ /dev/null @@ -1,16 +0,0 @@ -from django.conf import settings - - -def disqus(request): - """ - Adds the disqus settings to the context. - """ - return {"disqus": settings.DISQUS_SETTINGS} - - -def googlemaps(request): - """ - Adds the Google Maps API key to the context. - """ - assert False - # return {"GOOGLEMAPS_API_KEY": settings.GOOGLEMAPS_API_KEY} diff --git a/pygraz_website/locale/de/LC_MESSAGES/django.po b/pygraz_website/locale/de/LC_MESSAGES/django.po deleted file mode 100644 index 22c2e12..0000000 --- a/pygraz_website/locale/de/LC_MESSAGES/django.po +++ /dev/null @@ -1,252 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-05-18 17:02+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -#: apps/accounts/forms.py:18 -msgid "Log in" -msgstr "" - -#: apps/accounts/forms.py:28 apps/accounts/forms.py:40 -#: apps/accounts/forms.py:53 -msgid "Save changes" -msgstr "" - -#: apps/accounts/forms.py:66 -msgid "Registrieren" -msgstr "" - -#: apps/accounts/models.py:11 -msgid "user" -msgstr "" - -#: apps/companies/models.py:11 -msgid "Austria" -msgstr "Österreich" - -#: apps/companies/models.py:16 -msgid "name" -msgstr "Name" - -#: apps/companies/models.py:17 -msgid "website" -msgstr "Webseite" - -#: apps/companies/models.py:18 -msgid "contact e-mail" -msgstr "E-Mail-Kontakt" - -#: apps/companies/models.py:19 -msgid "description" -msgstr "Beschreibung" - -#: apps/companies/models.py:21 -msgid "address line" -msgstr "Adresse" - -#: apps/companies/models.py:22 -msgid "postal code" -msgstr "Postleitzahl" - -#: apps/companies/models.py:23 -msgid "city" -msgstr "Stadt" - -#: apps/companies/models.py:24 -msgid "country" -msgstr "Land" - -#: apps/companies/models.py:27 -msgid "approved" -msgstr "Verifziert" - -#: apps/companies/models.py:32 -msgid "Published at" -msgstr "Erstellt am" - -#: apps/companies/models.py:38 -msgid "company" -msgstr "Firma" - -#: apps/companies/models.py:39 -msgid "companies" -msgstr "Firmen" - -#: apps/companies/models.py:45 -msgid "My companies" -msgstr "Meine Firmen" - -#: apps/meetups/admin.py:17 apps/meetups/admin.py:37 apps/meetups/admin.py:81 -msgid "Yes" -msgstr "Ja" - -#: apps/meetups/admin.py:18 apps/meetups/admin.py:38 apps/meetups/admin.py:82 -msgid "No" -msgstr "Nein" - -#: apps/meetups/admin.py:57 -msgid "speaker type" -msgstr "" - -#: apps/meetups/admin.py:61 -msgid "Anonymous" -msgstr "" - -#: apps/meetups/admin.py:62 -msgid "Registered" -msgstr "Angemeldet" - -#: apps/meetups/admin.py:77 -msgid "meetup.com available" -msgstr "Meetup.com verfügbar" - -#: apps/meetups/models.py:13 -msgid "Not coming" -msgstr "Kommt nicht" - -#: apps/meetups/models.py:14 -msgid "Coming" -msgstr "Kommt" - -#: apps/meetups/models.py:15 -msgid "Maybe" -msgstr "Vielleicht" - -#: apps/meetups/models.py:52 -msgid "location" -msgstr "Ort" - -#: apps/meetups/models.py:53 -msgid "locations" -msgstr "Orte" - -#: apps/meetups/models.py:158 -msgid "Status" -msgstr "" - -#: apps/meetups/models.py:160 -msgid "Google+ Username" -msgstr "Google+-Name" - -#: apps/meetups/models.py:162 -msgid "Google+ User ID" -msgstr "Google+-BenutzerID" - -#: apps/meetups/models.py:164 -msgid "Meetup" -msgstr "" - -#: apps/meetups/models.py:177 -msgid "RSVP" -msgstr "" - -#: apps/meetups/models.py:178 -msgid "RSVPs" -msgstr "" - -#: templates/userena/emails/activation_email_message.txt:2 -#: templates/userena/emails/confirmation_email_message_new.txt:2 -#: templates/userena/emails/confirmation_email_message_old.txt:2 -#, python-format -msgid "Hallo %(username)s," -msgstr "" - -#: templates/userena/emails/activation_email_message.txt:4 -#, python-format -msgid "Danke, dass du dich auf %(site)s angemeldet hast." -msgstr "" - -#: templates/userena/emails/activation_email_message.txt:6 -msgid "Um deinen Account zu aktivieren, klicke bitte untenstehenden Link:" -msgstr "" - -#: templates/userena/emails/activation_email_message.txt:10 -msgid "Vielen Dank!" -msgstr "" - -#: templates/userena/emails/activation_email_subject.txt:2 -#, python-format -msgid "Deine Anmeldung bei %(site)s." -msgstr "" - -#: templates/userena/emails/confirmation_email_message_new.txt:4 -#: templates/userena/emails/confirmation_email_message_old.txt:4 -#, python-format -msgid "Du möchtest deine E-Mail-Adresse auf %(site)s ändern?" -msgstr "" - -#: templates/userena/emails/confirmation_email_message_new.txt:7 -msgid "" -"Klicke bitte untenstehenden Link, um deine neue E-Mail-Adresse zu bestätigen:" -msgstr "" - -#: templates/userena/emails/confirmation_email_message_old.txt:6 -#, python-format -msgid "" -"Eine E-Mail mit einem Bestätigungslink wurden an %(new_email)s gesandt. " -"Bitte klicke den Link in dieser E-Mail, um deine neue E-Mail-Adresse zu " -"aktivieren." -msgstr "" - -#: templates/userena/emails/confirmation_email_subject_new.txt:2 -#, python-format -msgid "E-Mail-Verifikation für %(site)s." -msgstr "" - -#: templates/userena/emails/confirmation_email_subject_old.txt:2 -#, python-format -msgid "Möchtest du deine E-Mail-Adresse auf %(site)s ändern?" -msgstr "" - -#: templates/userena/emails/password_reset_message.txt:2 -#, python-format -msgid "" -"Du hast diese E-Mail bekommen, weil du den \"Passwort ändern\"-Prozess auf " -"%(site_name)s angestoßen hast." -msgstr "" - -#: templates/userena/emails/password_reset_message.txt:4 -msgid "Bitte gehe auf folgende Seite und trage ein neues Passwort ein:" -msgstr "" - -#: templates/userena/emails/password_reset_message.txt:9 -#, python-format -msgid "" -"\n" -"Dein Benutzername: %(username)s\n" -msgstr "" - -#~ msgid "" -#~ "We will store your signup information for %(userena_activation_days)s " -#~ "days on our server. " -#~ msgstr "" -#~ "Ihre Registrierungsinformationen werden für %(userena_activation_days)s " -#~ "Tag(e) bei uns gespeichert." - -#~ msgid "You have been signed out." -#~ msgstr "Sie wurden abgemeldet." - -#~ msgid "" -#~ "You have been sent an e-mail with an activation link to the supplied " -#~ "email." -#~ msgstr "" -#~ "Sie erhalten umgehend eine E-Mail, mit dem Sie Ihren neuen Account " -#~ "aktivieren können." - -#~ msgid "Signup almost done!" -#~ msgstr "Registrierung fast abgeschlossen" diff --git a/pygraz_website/settings.py b/pygraz_website/settings.py new file mode 100644 index 0000000..1f93188 --- /dev/null +++ b/pygraz_website/settings.py @@ -0,0 +1,123 @@ +""" +Django settings for pygraz_website project. + +Generated by 'django-admin startproject' using Django 4.2.6. + +For more information on this file, see +https://docs.djangoproject.com/en/4.2/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/4.2/ref/settings/ +""" + +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = "django-insecure-yam2a2vzm2!ml+&91h&a15j&p+-@n&y!0=t@fhf1fswa4zojk=" + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + "django.contrib.admin", + "django.contrib.auth", + "django.contrib.contenttypes", + "django.contrib.sessions", + "django.contrib.messages", + "django.contrib.staticfiles", +] + +MIDDLEWARE = [ + "django.middleware.security.SecurityMiddleware", + "django.contrib.sessions.middleware.SessionMiddleware", + "django.middleware.common.CommonMiddleware", + "django.middleware.csrf.CsrfViewMiddleware", + "django.contrib.auth.middleware.AuthenticationMiddleware", + "django.contrib.messages.middleware.MessageMiddleware", + "django.middleware.clickjacking.XFrameOptionsMiddleware", +] + +ROOT_URLCONF = "pygraz_website.urls" + +TEMPLATES = [ + { + "BACKEND": "django.template.backends.django.DjangoTemplates", + "DIRS": [], + "APP_DIRS": True, + "OPTIONS": { + "context_processors": [ + "django.template.context_processors.debug", + "django.template.context_processors.request", + "django.contrib.auth.context_processors.auth", + "django.contrib.messages.context_processors.messages", + ], + }, + }, +] + +WSGI_APPLICATION = "pygraz_website.wsgi.application" + + +# Database +# https://docs.djangoproject.com/en/4.2/ref/settings/#databases + +DATABASES = { + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": BASE_DIR / "db.sqlite3", + } +} + + +# Password validation +# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", + }, + { + "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", + }, + { + "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", + }, + { + "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/4.2/topics/i18n/ + +LANGUAGE_CODE = "en-us" + +TIME_ZONE = "UTC" + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/4.2/howto/static-files/ + +STATIC_URL = "static/" + +# Default primary key field type +# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" diff --git a/pygraz_website/settings/__init__.py b/pygraz_website/settings/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pygraz_website/settings/base.py b/pygraz_website/settings/base.py deleted file mode 100644 index 6f097fe..0000000 --- a/pygraz_website/settings/base.py +++ /dev/null @@ -1,213 +0,0 @@ -# Django settings for pygraz_website project. -# -# The following settings have to be provided by an actual settings file -# -# RECAPTCHA_PRIVATE_KEY -# RECAPTCHA_PUBLIC_KEY -# POSTMARK_API_KEY -# SECRET_KEY -# - -import os -from os.path import abspath, dirname, join - -from django.conf import global_settings as default_settings - -DEBUG = True -ROOT = dirname(dirname(abspath(__file__))) - -INTERNAL_IPS = ["127.0.0.1"] - -ADMINS = (("Horst Gutmann", "zerok@zerokspot.com"),) - -MANAGERS = ADMINS - -DATABASES = { - "default": { - "ENGINE": "django.db.backends.postgresql_psycopg2", - "NAME": "pygraz-django", # Or path to database file if using sqlite3. - "USER": "", # Not used with sqlite3. - "PASSWORD": "", # Not used with sqlite3. - "HOST": "", # Set to empty string for localhost. Not used with sqlite3. - "PORT": "", # Set to empty string for default. Not used with sqlite3. - } -} - -# Local time zone for this installation. Choices can be found here: -# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name -# although not all choices may be available on all operating systems. -# On Unix systems, a value of None will cause Django to use the same -# timezone as the operating system. -# If running in a Windows environment this must be set to the same as your -# system time zone. -TIME_ZONE = "Europe/Vienna" - -# Language code for this installation. All choices can be found here: -# http://www.i18nguy.com/unicode/language-identifiers.html -LANGUAGE_CODE = "de-at" - -SITE_ID = 1 - -# If you set this to False, Django will make some optimizations so as not -# to load the internationalization machinery. -USE_I18N = True - -# If you set this to False, Django will not format dates, numbers and -# calendars according to the current locale. -USE_L10N = True - -# If you set this to False, Django will not use timezone-aware datetimes. -USE_TZ = True - -LOCALE_PATHS = (join(ROOT, "locale"),) - -# Absolute filesystem path to the directory that will hold user-uploaded files. -# Example: "/home/media/media.lawrence.com/media/" -MEDIA_ROOT = join(ROOT, "media") - -# URL that handles the media served from MEDIA_ROOT. Make sure to use a -# trailing slash. -# Examples: "http://media.lawrence.com/media/", "http://example.com/media/" -MEDIA_URL = "/media/" - -# Absolute path to the directory static files should be collected to. -# Don't put anything in this directory yourself; store your static files -# in apps' "static/" subdirectories and in STATICFILES_DIRS. -# Example: "/home/media/media.lawrence.com/static/" -STATIC_ROOT = join(ROOT, "static_collected") - -# URL prefix for static files. -# Example: "http://media.lawrence.com/static/" -STATIC_URL = "/static/" - -# Additional locations of static files -STATICFILES_DIRS = (join(ROOT, "static"),) - -# List of finder classes that know how to find static files in -# various locations. -STATICFILES_FINDERS = ( - "django.contrib.staticfiles.finders.FileSystemFinder", - "django.contrib.staticfiles.finders.AppDirectoriesFinder", -) - -MIDDLEWARE = [ - "django.middleware.security.SecurityMiddleware", - "django.contrib.sessions.middleware.SessionMiddleware", - "django.middleware.common.CommonMiddleware", - "django.middleware.csrf.CsrfViewMiddleware", - "django.contrib.auth.middleware.AuthenticationMiddleware", - "django.contrib.messages.middleware.MessageMiddleware", - "django.middleware.clickjacking.XFrameOptionsMiddleware", -] - -ROOT_URLCONF = "pygraz_website.urls" - -# Python dotted path to the WSGI application used by Django's runserver. -WSGI_APPLICATION = "pygraz_website.wsgi.application" - -prev_ctx_processors = [] -if default_settings.TEMPLATES and "CONTEXT_PROCESSORS" in default_settings.TEMPLATES[0]: - prev_ctx_processors.extend(default_settings.TEMPLATES[0].get("CONTEXT_PROCESSORS", [])) - -TEMPLATES = [ - { - "BACKEND": "django.template.backends.django.DjangoTemplates", - "DIRS": [], # templates - "APP_DIRS": True, - "OPTIONS": { - "context_processors": ( - prev_ctx_processors - + [ - "django.template.context_processors.debug", - "django.template.context_processors.request", - "django.contrib.messages.context_processors.messages", - "django.contrib.auth.context_processors.auth", - "django.template.context_processors.request", - "pygraz_website.context_processors.disqus", - ] - ), - # "debug": DEBUG, - # # List of callables that know how to import templates from various sources. - # "loaders": ( - # "django.template.loaders.filesystem.Loader", - # "django.template.loaders.app_directories.Loader", - # ), - }, - } -] - - -TEST_RUNNER = "django.test.runner.DiscoverRunner" - -INSTALLED_APPS = [ - "django.contrib.auth", - "django.contrib.contenttypes", - "django.contrib.sessions", - "django.contrib.sites", - "django.contrib.messages", - "django.contrib.staticfiles", - "django.contrib.admin", - "django_extensions", - "easy_thumbnails", - "crispy_forms", - "userena", - "guardian", - "pygraz_website.apps.core", - "pygraz_website.apps.meetups", - "pygraz_website.apps.accounts", - "pygraz_website.apps.companies", -] - -# A sample logging configuration. The only tangible logging -# performed by this configuration is to send an email to -# the site admins on every HTTP 500 error when DEBUG=False. -# See http://docs.djangoproject.com/en/dev/topics/logging for -# more details on how to customize your logging configuration. -LOGGING = { - "version": 1, - "disable_existing_loggers": False, - "filters": {"require_debug_false": {"()": "django.utils.log.RequireDebugFalse"}}, - "handlers": { - "mail_admins": { - "level": "ERROR", - "filters": ["require_debug_false"], - "class": "django.utils.log.AdminEmailHandler", - } - }, - "loggers": { - "django.request": { - "handlers": ["mail_admins"], - "level": "ERROR", - "propagate": True, - }, - }, -} - - -DEFAULT_AUTO_FIELD = "django.db.models.AutoField" -CRISPY_FAIL_SILENTLY = False -CRISPY_TEMPLATE_PACK = "bootstrap" - -ANONYMOUS_USER_NAME = "user" -AUTHENTICATION_BACKENDS = ( - "userena.backends.UserenaAuthenticationBackend", - "guardian.backends.ObjectPermissionBackend", - "django.contrib.auth.backends.ModelBackend", -) -LOGIN_REDIRECT_URL = "/accounts/%(username)s/" -LOGIN_URL = "/accounts/signin/" -LOGOUT_URL = "/accounts/signout/" -AUTH_PROFILE_MODULE = "accounts.Profile" - -DISQUS_SETTINGS = {"developer_mode": True, "site_id": "pygrazdev"} -DEBUG_TOOLBAR_CONFIG = {"INTERCEPT_REDIRECTS": False} - -EMAIL_BACKEND = "postmark.django_backend.EmailBackend" -DEFAULT_FROM_EMAIL = "info@pygraz.org" -POSTMARK_SENDER = DEFAULT_FROM_EMAIL -SERVER_EMAIL = DEFAULT_FROM_EMAIL - -MEETUPS_CALENDAR_NAME = "PyGRAZ-Meetups" -MEETUPCOM_API_KEY = os.environ.get("DJANGO_MEETUPCOM_API_KEY") -NOCAPTCHA = True -RECAPTCHA_USE_SSL = True diff --git a/pygraz_website/settings/development.py b/pygraz_website/settings/development.py deleted file mode 100644 index 070b0a8..0000000 --- a/pygraz_website/settings/development.py +++ /dev/null @@ -1,17 +0,0 @@ -from .base import * - -DATABASES = { - "default": { - "ENGINE": "django.db.backends.postgresql_psycopg2", - "NAME": "pygraz-django", - "USER": "postgres", - "PASSWORD": "deMo.123", - "HOST": "localhost", - "PORT": "5433", - } -} - -SOUTH_TESTS_MIGRATE = False -SECRET_KEY = "SECRET_KEY" -POSTMARK_TEST_MODE = True -POSTMARK_API_KEY = "test-token" diff --git a/pygraz_website/settings/secrets.py b/pygraz_website/settings/secrets.py deleted file mode 100644 index b5a3769..0000000 --- a/pygraz_website/settings/secrets.py +++ /dev/null @@ -1,5 +0,0 @@ -DB_USER = "pguser" -DB_PASSWORD = "1234" -DB_NAME = "pygraz_test" -DB_HOST = "localhost" -SECRET_KEY = "1234123412341234" diff --git a/pygraz_website/settings/testing.py b/pygraz_website/settings/testing.py deleted file mode 100644 index f10a1c0..0000000 --- a/pygraz_website/settings/testing.py +++ /dev/null @@ -1,17 +0,0 @@ -from .base import * - -DATABASES = { - "default": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": ":memory:", - "USER": "", - "PASSWORD": "", - "HOST": "", - "PORT": "", - } -} - -SOUTH_TESTS_MIGRATE = False -SECRET_KEY = "SECRET_KEY" -# RECAPTCHA_PUBLIC_KEY = 'RECAPTCHA_PUBLIC_KEY' -# RECAPTCHA_PRIVATE_KEY = 'RECAPTCHA_PRIVATE_KEY' diff --git a/pygraz_website/static/config.rb b/pygraz_website/static/config.rb deleted file mode 100644 index cc43b13..0000000 --- a/pygraz_website/static/config.rb +++ /dev/null @@ -1,12 +0,0 @@ -# Require any additional compass plugins here. -# Set this to the root of your project when deployed: -http_path = "/" -css_dir = "./css" -sass_dir = "./css" -images_dir = "./imgs" -javascripts_dir = "./js" -# To enable relative paths to assets via compass helper functions. Uncomment: -# relative_assets = true - -# sync stdout so foreman and others can properly capture the output. -$stdout.sync = true diff --git a/pygraz_website/static/css/_fonts.scss b/pygraz_website/static/css/_fonts.scss deleted file mode 100644 index e8e9371..0000000 --- a/pygraz_website/static/css/_fonts.scss +++ /dev/null @@ -1,77 +0,0 @@ -@mixin create-fontface( - $name, - $filebase, - $weight: normal, - $style: normal, - $svgid: "webfont" -) { - @font-face { - font-family: "#{$name}"; - src: url("#{$filebase}.eot"); - src: - url("#{$filebase}.eot?#iefix") format("embedded-opentype"), - url("/static/fonts/#{$filebase}.woff") format("woff"), - url("/static/fonts/#{$filebase}.ttf") format("truetype"), - url("/static/fonts/#{$filebase}.svg##{$svgid}") format("svg"); - font-weight: $weight; - font-style: $style; - } -} - -@include create-fontface("LeagueGothic", "League_Gothic-webfont"); -@include create-fontface( - "PTCaptionNarrow", - "PTC55F-webfont", - normal, - normal, - "PTSansCaptionRegular" -); -@include create-fontface( - "PTCaptionNarrow", - "PTC75F-webfont", - bold, - normal, - "PTSansCaptionBold" -); -@include create-fontface( - "PTSansNarrow", - "PTN57F-webfont", - normal, - normal, - "PTSansNarrowRegular" -); -@include create-fontface( - "PTSansNarrow", - "PTN77F-webfont", - bold, - normal, - "PTSansNarrowBold" -); -@include create-fontface( - "PTSans", - "PTS75F-webfont", - bold, - normal, - "PTSansBold" -); -@include create-fontface( - "PTSans", - "PTS76F-webfont", - bold, - italic, - "PTSansBoldItalic" -); -@include create-fontface( - "PTSans", - "PTS56F-webfont", - normal, - italic, - "PTSansItalic" -); -@include create-fontface( - "PTSans", - "PTS55F-webfont", - normal, - normal, - "PTSansRegular" -); diff --git a/pygraz_website/static/css/_forms.scss b/pygraz_website/static/css/_forms.scss deleted file mode 100644 index c9b0583..0000000 --- a/pygraz_website/static/css/_forms.scss +++ /dev/null @@ -1,110 +0,0 @@ -form { - label { - display: block; - font-size: 14px; - } - input, - textarea { - border: 1px solid #ccc; - padding: 7px; - line-height: 120%; - background: #fafafa; - &:focus { - border-color: $blue; - background: #fff; - } - } - input[type="text"], - input[type="email"], - input[type="password"] { - width: 250px; - } - input[type="submit"], - button[type="submit"] { - background: $blue; - @include background-image(linear-gradient(lighten($blue, 10), $blue)); - @include border-radius(3px); - color: #fff; - font-weight: bold; - display: inline-block; - padding: 5px; - &:hover { - background: lighten($blue, 10); - } - } - textarea { - width: 400px; - height: 250px; - line-height: 130%; - } - .help-inline, - .help-block { - display: block; - font-size: 90%; - color: #888; - margin-top: 3px; - } - .control-group { - margin-bottom: 10px; - &.error { - input, - textarea { - border-color: $red; - } - label, - .help-inline { - color: $red; - } - } - } - .buttonHolder { - border-top: 1px dotted #ccc; - padding: 10px 0; - input { - font-size: 13px; - } - } - label.radio { - margin-bottom: 5px; - - span { - display: block; - font-size: 80%; - padding-left: 18px; - } - } -} - -.btn { - border: 0; - display: inline-block; - padding: 5px; - line-height: 18px; - font-weight: bold; - font-size: 14px; -} - -/** - * On fullpage-form pages we can put the help to the right of the input field and the label - */ -.fullpage-form form { - .control-group { - @include pie-clearfix; - border-top: 1px dotted #ddd; - margin-bottom: 0; - padding: 10px 0; - } - .control-group > label { - width: 150px; - display: table-cell; - vertical-align: middle; - } - .controls { - display: table-cell; - width: 770px; - } - .help-block { - float: right; - width: 310px; - } -} diff --git a/pygraz_website/static/css/icomoon/_style.scss b/pygraz_website/static/css/icomoon/_style.scss deleted file mode 100644 index e20ebcd..0000000 --- a/pygraz_website/static/css/icomoon/_style.scss +++ /dev/null @@ -1,51 +0,0 @@ -/** - * edit: ✍ - * clock: ◷ - * link: → - * trash: ♽ - * proposals: ■ - * ok: ✓ - * cancel: ✕ - * location: ◉ - * user: ☺ - * slides: ❏ - */ - -@font-face { - font-family: "IcoMoon"; - src: url("icomoon/IcoMoon.eot"); - src: url("icomoon/IcoMoon.eot?#iefix") format("embedded-opentype"), - url("icomoon/IcoMoon.svg#IcoMoon") format("svg"), - url("icomoon/IcoMoon.woff") format("woff"), - url("icomoon/IcoMoon.ttf") format("truetype"); - font-weight: normal; - font-style: normal; -} - -/* Add the following classes to your stylesheet if you want to use data attributes for inserting your icons */ -.iconb:before, -.icona:after { - font-family: "IcoMoon"; - content: attr(data-icon); - font-weight: normal; -} - -/* Add the following CSS properties to your stylesheet if you want to have a class per icon */ -[class^="icon-"], -[class*=" icon-"] { - font-family: "IcoMoon"; - font-style: normal; -} - -.icon-link:before { - content: "\2192"; -} -.icon-clock:before { - content: "\25f7"; -} -.icon-pencil:before { - content: "\270d"; -} -.icon-remove:before { - content: "\267d"; -} diff --git a/pygraz_website/static/css/screen.scss b/pygraz_website/static/css/screen.scss deleted file mode 100644 index a2efb33..0000000 --- a/pygraz_website/static/css/screen.scss +++ /dev/null @@ -1,639 +0,0 @@ -$blue: #306998; -$yellow: #ffd743; -$red: darken(red, 10); -$green: green; -$baseColor: #333; - -@import "compass/utilities/general/clearfix"; -@import "compass/css3/images"; -@import "compass/css3/border-radius"; -@import "compass/css3/box-shadow"; -@import "fonts"; -@import "forms"; -@import "icomoon/style"; - -html { - //background-color: #EEE; -} -body { - font-family: "PTSans", Arial; - margin: 0; - color: $baseColor; - //@include background(linear-gradient(#FFF, #DDD)); - //background: #FAFAFA; -} - -body > .container { - max-width: 920px; - margin: auto; - //@include border-radius(2px); - //@include box-shadow(#cecece 0 3px 3px); - padding: 20px; - padding-top: 80px; - background: #fff; -} - -a { - color: #666; - text-decoration: underline; - &:hover { - color: $blue; - } -} - -.icona:after { - padding-left: 5px; -} - -.iconb:before { - padding-right: 5px; -} - -#nav-helper { - display: none; - text-align: center; - font-weight: bold; - background: #333; - color: white; - text-decoration: none; - padding: 10px; -} - -#primary-nav { - z-index: 1000; - background: #333; - margin-bottom: 30px; - position: fixed; - width: 100%; - color: #fff; - .w { - max-width: 920px; - margin: 0 auto; - position: relative; - @include pie-clearfix; - } - &:hover { - background: #333; - } - ul { - width: 620px; - float: left; - padding: 0; - margin: 0 auto; - list-style: none; - @include pie-clearfix; - } - li { - float: left; - padding: 7px; - display: block; - } - a { - color: #fff; - text-decoration: none; - font-weight: bold; - } - li.active a, - a:hover { - color: $yellow; - } - - #accountbox { - position: absolute; - right: 0; - top: 0; - width: 250px; - text-align: right; - > a { - display: block; - padding: 7px; - } - &.logged-out { - a { - display: inline-block; - } - } - ul { - display: none; - li { - float: none; - border-top: 1px dotted #fff; - } - } - &:hover ul { - width: 100%; - display: block; - background: #333; - } - } -} - -header { - @include pie-clearfix; - //border-bottom: 1px solid #E1E1E1; - padding-bottom: 30px; -} - -#mission { - min-width: 200px; - max-width: 575px; - float: right; - line-height: 1.3em; - padding: 10px; - font-weight: bold; - margin: 0; - color: #666; -} - -#logo { - display: block; - width: 276px; - height: 80px; - float: left; -} - -#body { - padding: 10px 0; - @include pie-clearfix; -} - -footer { - border-top: 1px solid #e1e1e1; - padding: 10px 0; - font-size: 90%; - h2 { - font-weight: bold; - font-size: 100%; - text-transform: uppercase; - } - #credits { - text-align: right; - } -} - -table { - width: 100%; - margin-bottom: 1em; - border-collapse: collapse; - td, - th { - padding: 3px 5px; - border-bottom: 1px solid #ddd; - } - thead { - th { - color: #aaa; - font-weight: bold; - text-align: left; - } - } - tbody { - tr:nth-child(even) td { - background: #efefef; - } - tr:hover { - background: #fafafa; - } - } -} - -.session, -.session-details { - h1 { - margin-bottom: 5px; - font-size: 19px; - a { - text-decoration: none; - } - } - .meta { - margin-top: 0; - font-size: 95%; - font-style: italic; - padding-left: 25px; - } -} - -/** - * Frontpage - */ -body.frontpage { - #next-meetup { - @include pie-clearfix; - &.empty { - font-size: 120%; - text-align: center; - @include border-radius(5px); - padding: 10px; - background: #efefef; - } - } - - .upcoming { - background: #eee url(../imgs/toparrow-bg.png) 50% 0% no-repeat; - padding: 20px 0; - border-bottom: 3px solid #ddd; - - > h1, - > h1 > a { - //background: $blue; - //@include background(linear-gradient(lighten($blue, 10), $blue)); - color: $blue; - color: $yellow; - padding: 10px; - background: #333; - margin: 0; - text-align: center; - font-family: "LeagueGothic"; - font-weight: normal; - font-size: 32px; - text-decoration: none; - } - } - #sessions-and-notes, - #location-info, - .meetupcom { - padding: 2%; - } - #sessions-and-notes { - padding-right: 0; - } - #sessions-and-notes { - @include pie-clearfix; - float: left; - max-width: 59%; - } - .session { - margin-top: 10px; - &:first-child { - margin-top: 0; - } - } - #location-info, - .meetupcom { - float: right; - max-width: 35%; - min-width: 250px; - background: none; - clear: right; - } - #past-meetups, - #session-proposals { - margin-top: 2em; - padding: 10px; - } - #past-meetups { - float: right; - max-width: 35%; - min-width: 250px; - @include background-image(linear-gradient(lighten($blue, 55), #fff)); - @include border-radius(5px 5px 0 0); - } - #session-proposals { - float: left; - max-width: 60%; - // min-width: 380px; - } -} - -#location-info { - font-size: 90%; -} - -.meetupcom { - .logo { - float: left; - margin: 0 10px 0px 0; - } -} -.meetup-data { - .map { - height: 250px; - margin-bottom: 1em; - } - .meetupcom { - font-size: 90%; - @include background-image(linear-gradient(lighten(red, 40), white)); - a { - font-weight: bold; - font-size: 120%; - color: black; - text-decoration: none; - } - } -} - -#info { - background: #efefef; - padding: 10px; - @include border-radius(5px); - margin-bottom: 30px; -} - -body.meetup-details { - h1 .time { - font-size: 22px; - } - #sessions-and-notes { - float: left; - max-width: 60%; - } - .meetupcom, - #location-info { - float: right; - max-width: 31%; - padding: 0px 2% 10px 2%; - clear: right; - } - #location-info { - background: lighten($blue, 40); - min-width: 250px; - @include background-image(linear-gradient(lighten($blue, 50), #fff)); - @include border-radius(5px 5px 0 0); - } -} - -article.session-details { - position: relative; - .actions { - position: absolute; - top: 0; - right: 0; - padding: 0; - margin: 0; - } -} - -.actions { - list-style: none; - float: right; - li { - padding: 0; - @include border-radius(3px); - background: #efefef; - &:first-child { - margin-bottom: 2px; - } - } - a { - padding: 5px 8px; - display: block; - text-decoration: none; - &:hover { - color: #fff; - @include border-radius(3px); - background: $blue; - } - } -} - -.alert { - padding: 10px; - border: 2px solid lighten($yellow, 30); - background: lighten($yellow, 30); - @include background-image( - linear-gradient(lighten($yellow, 35), lighten($yellow, 30)) - ); - @include border-radius(5px); - margin-bottom: 5px; - &:first-child { - margin-top: 5px; - } - .close { - display: none; - } - &.alert-success { - border-color: lighten($green, 65); - background: lighten($green, 65); - @include background-image( - linear-gradient(lighten($green, 70), lighten($green, 65)) - ); - color: darken($green, 30); - } - &.alert-error { - border-color: lighten($red, 50); - background: lighten($red, 50); - @include background-image( - linear-gradient(lighten($red, 55), lighten($red, 50)) - ); - color: darken($red, 20); - } -} - -#disqus_thread { - clear: both; - padding-top: 20px; -} - -@media all and (max-width: 950px) { - #mission { - max-width: 50%; - } -} - -@media all and (max-width: 765px) { - body > .container { - padding: 0 10px 10px 10px; - } - #mission { - max-width: 98%; - padding: 10px 1% 0px 1%; - float: none; - clear: both; - } - body.frontpage { - #session-proposals, - #past-meetups { - float: none; - max-width: 100%; - padding: 0; - h1 { - margin: 5px 0; - } - } - #past-meetups { - padding: 2%; - } - } - form { - textarea { - max-width: 90%; - min-width: 90%; - width: auto; - } - input[type="text"], - input[type="email"], - input[type="password"] { - max-width: 250px; - min-width: 90%; - } - } - article.session-details .actions { - position: static; - } - body.frontpage, - body.meetup-details { - #sessions-and-notes, - #location-info, - .meetupcom { - max-width: 96%; - padding: 5px 2%; - float: none; - h1 { - margin: 5px 0; - } - } - #location-info { - min-width: 250px; - } - } - #primary-nav { - position: static; - margin-bottom: 20px; - ul, - #accountbox { - position: static; - display: block; - float: none; - width: auto; - text-align: left; - } - } -} - -#gplus { - padding: 10px; - background: $yellow; - @include border-radius(5px); - @include background-image(linear-gradient(lighten($yellow, 30), #fff)); - @include pie-clearfix; - position: relative; - h1 { - margin: 0; - } - .evt-link { - position: absolute; - top: 10px; - left: 10px; - } - .info { - float: right; - margin: 0 0 0 80px; - font-size: 90%; - } - .fineprint { - text-align: right; - margin-left: 20%; - padding-top: 20px; - color: lighten($baseColor, 30); - } - #rsvps { - float: left; - width: 40%; - margin-left: 20%; - h1 { - font-size: 100%; - } - ul { - margin: 3px 0 0 0; - padding: 0 0 0 20px; - } - } -} - -.fineprint { - font-size: 75%; - clear: both; -} - -body.company-details { - #map { - height: 300px; - } - .meta { - float: right; - width: 300px; - background: #efefef; - padding: 10px; - margin: 16px 0 20px 20px; - dl { - margin: 0; - } - dt { - font-weight: bold; - } - } -} - -body.company-submission { - fieldset { - float: left; - width: 46%; - margin: 0 0 10px 0; - border: 1px solid #ccc; - } - fieldset:nth-child(3) { - float: right; - } - .buttonHolder { - clear: both; - } -} - -.contenttype { - width: 31%; - float: left; - margin: 0 1% 1% 20px; -} - -// This redesigns the menu for smaller screens and puts it at the bottom of the -// output on browsers that support flexbox. -@media screen and (max-width: 480px) { - body { - display: -webkit-box; - display: -webkit-flex; - -webkit-box-orient: vertical; - -webkit-flex-direction: column; - display: flex; - flex-direction: column; - } - #nav-helper { - display: block; - } - #primary-nav { - -webkit-box-ordinal-group: 2; - -webkit-order: 2; - order: 2; - li { - border-top: 1px dotted #fff; - float: none; - } - > .w > ul > li:first-child { - border-top: none; - } - #accountbox { - margin-top: 20px; - } - #accountbox ul { - display: block; - } - } - body > .container { - -webkit-box-ordinal-group: 1; - -webkit-order: 1; - order: 1; - padding-top: 20px; - } -} - -.meetup__rsvps__disclaimer { - text-align: right; - font-size: 80%; - font-style: italic; -} - -.meetup__rsvps__coming { - padding: 5px 2%; - @include border-radius(5px); - @include background-image(linear-gradient(lighten($blue, 55), #fff)); -} diff --git a/pygraz_website/static/fonts/League_Gothic-webfont.eot b/pygraz_website/static/fonts/League_Gothic-webfont.eot deleted file mode 100755 index 08deeb7bbcd5472cfe374cb72faa277dca33c381..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45426 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 UJKEM-pPb_sKD`=P?K9{657;%4, with Reserved Font Name: "League Gothic". - - This Font Software is licensed under the SIL Open Font License, Version 1.1. - This license is copied below, and is also available with a FAQ at: - http://scripts.sil.org/OFL - - Version 1.1 - 26 February 2007 - - -SIL Open Font License -==================================================== - - -Preamble ----------- - -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -Definitions -------------- - -`"Font Software"` refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -`"Reserved Font Name"` refers to any names specified as such after the -copyright statement(s). - -`"Original Version"` refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -`"Modified Version"` refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -`"Author"` refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -Permission & Conditions ------------------------- - -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1. Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2. Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3. No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4. The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5. The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -Termination ------------ - -This license becomes null and void if any of the above conditions are -not met. - - - DISCLAIMER - - THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT - OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE - COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL - DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM - OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/pygraz_website/static/fonts/League_Gothic-webfont.svg b/pygraz_website/static/fonts/League_Gothic-webfont.svg deleted file mode 100755 index 96d2704..0000000 --- a/pygraz_website/static/fonts/League_Gothic-webfont.svg +++ /dev/null @@ -1,235 +0,0 @@ - - - - -This is a custom SVG webfont generated by Font Squirrel. -Copyright : Generated in 2009 by FontLab Studio Copyright info pending - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pygraz_website/static/fonts/League_Gothic-webfont.ttf b/pygraz_website/static/fonts/League_Gothic-webfont.ttf deleted file mode 100755 index efbe8b461d7d50b4ac35f8862057b80ddc1eee46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45212 zcmeFadwg5fl|Op+(a~F$j$W2!S(aqkRvcMYELm0*#}Ay~7!!i)rm0EOG=vZ!C4>+t zO*3hRVHlcpQrgl7rA*5(3}yPuFy}~yrYVE~r8H2Q=`bX}3{7cDAH%P7N;{pjA+d75 zYo8-qjuR5@%pdpO&kb18dFW{Gwbx#It?znlfeC`(!HXnBhlZA4@xj*}UlIh?j1IG{G`nA_xz2#=X zAeaTgjNcR-*WI{v{om)_eh$a7Abj0-{k2!G`{Vu2e-wmAnsL4RdYq`a!Q{m8DjYXo zzwy?OuUePC1IK?Z2!>DIxapd!ul=+BdO`RmF0*GhUj6Z#*(Ce6ApEcI;zabOt2bUd zXZd3E=YRbi*MENVrY*PbJo6u)6@-8MKHBs7n{T=H<`2L4ovnhP(DMiAA@~zsC@Zhi z`}e-F^;`6QaQ^W#{0dqk)X^D1#4!_I#~<}X#2JpT!v_nD|*Hd_fS!ZuVKhC`iWpjal3p(cTR|64p}_ zrvLr9AS4C^VWe{A=B>AELI0wsMC0+v<7~5eGrymH17l@8j<+cPMFT$3UjsiPJ~8l5 z4T8ilMtH^meqRtiDg2%A_rgC2|0GNZdxgWo3E>RuWP|Me>}vLL_DS&t@mSOr^+oHW zjnSrPYcw7GNOVuEsmb$G;grZ}5)~fA6CM@*5l{G*@U-y1g+Jj5m#{Im22a>7eoy@0 zQ6VZv>!J;_p1{tWIrGMuXU{xy=IJv}p4ofmi8IQXe>(HnneAt8I`fe;??2OfrZD;Y z$)El7z)!#P)4f0a)=wvXs{ZsJe)@@@cD(-WpS&17W;~|#4*mFV{9_mwPCz_^5ji?R z`T2zfJqvsL`UfrlU?8?#ijlF;Q2UdJ={Hm27TJ_=8A6av?aO-Wi zZ@uHMKK#oJFj z?^XQV_N$`*sxWUyT}ol?(SK7M$&@0tUp_W|Y5b~KN-?zGP#0AOM#p2yz*Q+lYNxNp z;;~PR9}B&FRS5TuPlkSTRVW@)jLC6j=wny$3s+r*=Na2;R;^4argpW7eG0!G{nV;e zAw|Gr%uHAKYls?Q4 z#bQ^5cJZSz?TCKRrnOEE$uazhy*>IbygQEeXj(BRSB*!bOX5RUZ-|aZ*R9naLHE_r zFXN}9yP`{W4P71I72Or*KNnYov2kSpccOpvv&z7=bb#+T`7iYzu8YM&(Zjny27Ku< zwCw|W+t5DT=4y{e59>c3kB(pd{!mO|SB>vNhc1inibr={wkv)$wS>AuuhbryhQWhj za8n29gXgRcprP@h_|+TMRQH6w>TO3ScHK>68(A0MWmcl2;|oIvaK+bN5(e17;2^tv zuPj_6@K?I|188}4*VuS`Em|KR4B?H%2SNFPvGF40)uL+#i!93UrbMq%g4Z_img0&2 zb_Hia7rdl21{WbwN$wahOCc3m0WyzPqRWJ$#DwI8Q4%_&WD)0*OtGXD>98VXRI~9- zg=I>jS+XQ23`W5vB^5(@Lgb%RD@zKhV03#Fu`sXGn>EA@xvYQWxA{AgM~uf$Jzn1M z#vAx4pTRSnk9>jM; zLWEr|6zkE}qQ5qn&1Q=hw6$oqJMeizVD*-oWJz>4gqs6dRgm5+`2uyJ=0FBLh8l1g{|zW(d}I4t;+Hl@Bpv2-Z)vKo|5Di&EaODCr<)^;e4 z4y9IB{kZ6mRXg75<&s!$_9jaP{%WFEB`BAyK?^?A$|YN^9UuI1smAZXZ8Cp#^H(3e z(merw5585$zlCRpD$i-CJSR-|lo~5{M(Dg@piVSYB&_VNmaZM=`KJuj6Pfc_ZybMF zLkxdebDaOhy)i@Fn~!;8ouTiwe7FAj!t(_t6`o)4Oz1$%{`#kTo?lo#g_qZv)KWgp zo_LOl&$5ThtLX39a{0OP2z!G5a315{a;8nZ$Fxewvu=SY^V5p^u-XWY5~7FQD#M3H zSPL8=X8@?9Nbnzbf6#GEIO`Bm#RcQCWb>}wPwtTs>^VT}xbqF*%o^c<-(7JVl8H=63iACkYpK<1R0X04zpDWWQ%6JPsI7Ti6!X; z=9=Wh678tL!;c#H5mT0?72)tiy~Y@rj}exfaA-%Ed2?{orycdl>S7#eETmqcvCBg5 zo4?`n8B?~7PuZa9q*5oV0nc5Ffr8@jV2IVeIk=E4 zD2v_21?eS)LV-ra-PLEvWr!Fk`ds$(sV1?p$8K zo)_JXgQ=lWNy3ML)bOZujo5bQ2W_U82pW?EUtp)UETTCUe?toWiyRp znE4E~f$n_3WUdYPF#x7$Yrc_XGx^qpQ}p_9skOU9#7Ou%$Hz9<3TF`w)i9A9CQ!^!+QCQ24pG?+-Ro-HqIJATyTSlowu7q3|p zi$7F;`>{=Hw!~ijTz}24FCX~yvtJlozT(pl*jhejXxeo518c-ksx7j#h1R;1;SWs0 zdSwzigrb3X9Sg6O);crsvm$0xqw!7tX901H#C(i6E5zcM+=kTf@R7}UhV6|v$|vx= z!SWH&V#)~t78ew6S}~=WQkPcPVYLR-ufh5Re)nY5pvLy!{p!EBX;LyEE42qyr}?BJ zA5dB$UQFhWgMw-{bsVJiF8BLmpVMwM$%^rSVwM%FcAwWn_j$b9eJ>vP@tXEMRSK?uxG`1xbY!d zeC6VNZt2oc{X>q#x@GJH#AfoRd(-LV&Ybd8`FQ!4uMLeMJ(b(7X7yo{XMofdONC#9u zM#p<#-*-Rz?~Aq5R#`D0P+fe`Bt?)*Oc05`uexhX-?A-!>`0um>*6drOyuspC5`1>X?g*e6x|1 zLscg2(%``Su#*tT2NGFxK41=*6XryIB>AxSe(%G{JzMTvw)D;|(i>kGQk0=DH0>I_ z@4nGp7`qXcHoPX?BiMy;SYog-vJ*@a7CflBEH`W=$5EKp&aGiW%xiD>j;; z6IM-tNtvS6MwhK-+-bAYN1I?xsx_LXnv1!!?wCL3j=M+LEqmCO^6ow2&OK~p`H?;4 zN7za(56UO-yKg`qvorzYi&kVa4avYgo{9^^XxVxcI~+KzP)`aDS)~2(wh(0<7!La{Q9s)qaX;i6Ew17buC)Z`l68*1Q5>%tp{`u(Yjzu zE0)7#X%#JI;xG$wm>qpEL)TP{T7GsaL zG$~fMB4Yw(bNN2elkaK@W1*6xZkfgW`9yHX+U4TCKM|LK-&eoZmw4k<=Dcq2-WzUU zca?XRl}Y6_v@eBm+=}*H0u-bepizvWO|byADHg`mGEqDGaIVip=lU+OCMV{l1E!j! zI**2VFs+D(RUw?osF$FnjTz+S_gVsOcE)aTk<%ZpBql`aFt*YaXQRH5&Y~i`8lh zUk6NF(l)wtUEL%S!9(#}pRrejmJXf6oRT7iO{2?h$;V6^#2uzse#^4an-|7SN5x1o z6%<92+2e@k>Is4A1EK&Ag(KaFSzK=Yp>`Z-+4{{ zmo{9x(z7N!WRKN4WpS@)_XL|#;l5-leQ9j%*Jz%A&qT73ZGsGGSF{qR(UhF9*{xzt zQjxN%O?p!?LBhJziuJJK$fy=j%aFl3L6owXFbGx)eY6tyc}VoyZJ-D%D54w6Fa&T8 z44C!D!GwvdI~O+x*`j0DUH9Vs_t!Ys@Uw;^r`w(_@5Lu}B*ifY$Y6~7r_rt!;V*?^ zl*S##chMN7-!bBMiZV6Q%XxL8&K{L9-gUUcUPpJ>UBs=eX~o64)rSTIO&tQ?1W*dCNS7O7n<80|kaK}b$6LXogW@H}0;xnpPj>X9DW}}^$)|Q?{(By&9BKgAogMoV{8&u2}L8u7~G~Y zpNWsFuJ_X7M2k9BIgYm2|L`YT9VErjVN{GAia}OQwv&ocRwdg>gMibl2{%K(?-D01|g@@I|hAXJ}}i{nE0#(T;w2%cS~VP3C@^r|4*Dr{jRT z=<+p?L8x}NV|DQv3VeceX=aK65(8F>xfU-@1K5h2Cw(l}1?qc!wIn-ejB;DnOVRFI z9@vtLN!M+WVujluzP%8Wj);+TOWYFL5OURx1%quZ^=wdia^w2Pb_8-8M*I3kH{=34 z9$UZhNhO%yGUZV@|ntXsEZ^XhTFeilHRZPUESDZ^)An9o3l z8CXk1N`OfAShyBMvRCt>B4_vvgS-{_BvaxUH3X^=FN(yA{(@rR#0hznT96|~bIr<$ zk=0qw6bJud%JqrbJd1J)BPNHbf` znUIBAmTVbMvKBDmvSnLWw4Hvm{D9#yPiLEteaDyX^kCi*rWu3RjWEsJOwGn9Ldr;7 z%i+)_RCvrMC^j^^NWUQ*Q&+j5bHi9L zV_Bl7S+%D*K%7~M90x|B%q>}hXOlXoJs&bsc+7AV;Hyd40E|qt5n*8H^CbM`7Y4L> zLTZ$FK$Yw#p+xQb*$tKR0?wOo-e93?PMC6VL6EY~Cl6^@Y-0LI*XSY3{Z{55G2Amb zB<>S;KFD5sq5MGkffr~_qtEP^;i%-`w2YFbNxBND&Qh9iVtgVx>SUvt$wmf_OLtm>>(X-x^LHOeKQ@N-7yo_4^`1|Qeo2_gQ_U2OthfSPF2FSbM)(Rt)JA# zDLpcuvodsUMBFzyWVq+C7a+;jy-;p>koSw$$yLTTg@_O*>w}ar(kGeHoK`%Cm1u_R z6R`|b3N>g?sy6UOi>B)L83IrPd@kl>eyo69eJtOd?{1B^n#_i5E*^9wm)<%!c5|0+ zwBVVyzcbyIw3(U`=^>|djTeXECt+d_-PwVkJ~ zC#9ON9fmaKYYH0OKMKV*NV17$Noav4M;g*ZBd7g@dtMtfqX{?HA17*a{HRvfCV{fT z6o_#+2H2)IU7*7K#OGQZ;hVd71g?;IrKA`goYmR$fgBng-= zo59t1lYg*j*#obBby@sjpXBO^f9`Yfg59?A;L7p!w`K3!_{xR{mNl_g)194Z7;;;a z>o<*zY+9c@{j2$wK+7KXi*Gi$%yHFR z!(o3`b8_E-Z=JZ6UzR!)u|tt$)gWR1K~TaeU@RH!62ND(Tr!yn^taF}wC$3W&hI<$ z*+2djzHBeq_+kIe+9BOvLw6SOIt_;uao6;bfG;^}i09dWQ=jU(iqrB>(xb>su@@iJrvR?PCcKcTlq_ zyD|+|a4|{xLL>Br#w4wZjd84s+`#nXoS$1{{uyE*H)-gk3kWhdBzi^YrKBf_i7M;!hoWS6 z#_Qt=7@~=ITk?lf=IBft^w6O|G!}r#31gI-pob1k8KpE2D&y&f)Ef|rZW>M9I^?4n z(X}*qLSab*(*nZB?Lb(E)Js8)c+fGMl~f!WphlzYG{*B79B-~GCns7Ht?{wPR_<8a zm++WOoz+`MjSLTBEoHoY zOTlk;;e-0BZPoAyMiNh3wI_^-0)fQC+EY(!4{#dDI0!KyDFmom(P}9(0o=$2{6jx) z$mlSQ2GNk^67!F-cgkr(5tZ5E>n`A{WCB=tn8t_nD8MPVRugNIQGKqaaKT0gEc7P)Z15wPJAAKPh zyKr%MR4?>a*bl0OTfGe}xTTfrYt<~OgCWGA92|)Q>53<~{H|irW7D|EILqBxKeT?? z=5#Id#H%rqU;Ro$L{96-2$R1v=@}khw0ez3iwb|*g+Yz>KdfibL`k2c#%IZ-t40yw0Pd$&+o79zE5)bNL8`(`fwo7JkPqyeSmz#2SK4_jhxY z&BK|1FdHyG7I?C#7X0v+PidN>42#MFt;qE?gLTS! zK(*Q|ii{OWhMRQXGvD~#Zd#GxQYblU;ApNq(N6a`>7J5{UW<60UW_2ai@1IIgzzn+ z$;yL$Dhm-Cuo+F25TMFQU13u#WH3mYXmR_qc`Q;`tP*iZ$FXA;``#lj{qlc*#bm0< z8jqLl!65suvir1CyeAUbHu=^Rt(JpUM&PR)&%`qPCTAc9UkS-HsOCijpQi>R1_b^R zK0|4ajvZqy7~Z#Dp5jHrZamA6C>_4;se%=B=iF!px>?JgNA|d1R&AJJkOFEzqyK^8 ziLVfu6&Y0aKp}T>MZN!hC;ov>Lot_0Pj|XbVhr}_ciSOsOKuOmB}Kee6Or`y8aSaV z^kM^6?G$3DD(A?1$yA#k;#oA4G0Jd}<5uXKHvnQ1G7Y2#i+>{ScaJgWop#A~Cv*Ow z#|8K{SwY7T!V_?B3jOx;gFWNwi z0NGENt)#$CnWNgE5U^*>P~-|3qNIM22vV(P@P@IViUg186E0ILo8mzd@i4~6jy>}F z>yNA-7+hyO{z^Ia>f|Gao)6t|=Xy@Z-Qtt5OF}|YSgU#W)hNPf+|gPKz(UM7t}xA^ z1*)BMMgtnrph2{R$fwYf2Cg5~WA%xhYxQsoOl~2JAI@?*qN|0&A z0;+B%T^(c6#{p#ssIA*}AKTIsN%lk{J;?~f;IeXg`D8-eHhGs}*p^s(-`WKEhFXC2 z+>bHpVs@dJrZt1)pqJDMD7Q?>r4{+G8bzz8qHm(wylu#+DVz>v)NXC+zW9wF|GhSK zo#Yf&n*q$tJ)pp`Yjaw$3^@2}4ZT9?D77@t#mQFwn&7W<_-h-z7IAfYhLi0GBa(;H z6!92}rKzDn8eza;wK;esXpOVEh3HfH2mj>xE^+y1j1o}ihXo4>*l2Kj01L>WhLjdM zke6Y3LY>hAXb?$|$z}ooM$KJuQ^40~h)9jhFSh`tYdL!TO6E@2bkDI2Ue@h_pb0?xxl&R&mOz{)Bh^QTkhCC z;yWsS!IO+Jv52+_{&yh`*8p};b zegVz!^z#D)hMtOk2z<%#2lUx5{6Q%CY0Y$MeJ(MR0|AGc3gJII;nV!f@LT|Em~ir= zDMjM*fBZA*CU=}d&oH=88qqCPaDxOJ|H$J95QON&d{k|84Z%<~xOQOupMG{03I66! z|HaSPu-w`RRhUTvoSR7kn_VLTfeICjp+W-H2R#D|hvIT0h6GaFNkA{Wxukwr-5dbd zNmL;eln$sK!5@qpWz*^hSDW0@_{%TtSzlvuTnD}U^zS=64NmP9`uRZwE9b#CGWh04 zprM<6SYPq%4tE8$0U!^B3}p1AD|+w3-@J7_CzsHnSUU)#aU(F$3brtw-1nSUzX*WF z4wwei#6`$#2QKR0wBtJnvw&u+3KrmvI1oXreb32nZRXT7$R)`@3UT!pO!S44nO=bw zmTYbaL)C4yfLTj6ez*SHc6wqBf8x~l@dX!sp(N955zm?)2N-NcoF>WWDira<)0c{P z4CzPTVv@;ht8vLRHuMhxh8zc~#DOBvUb`^;s;xGJ*{en;Uv0dG3P*E=+iZ~k@b^}V_d&c7__mdn$7Kr#5#>h?{F47J8#8#P! zhDHmbuxnO1#(_d*bPJ8^h5q02Fir(BPqAZpWVAerSRO@iAA<@nqSaioTS**A#AEcq zK$=0N$q;_dqnk{UY17f;n1{k`H|BOp+Z(n=C>>^OHetX?BV#(fVwqC;*a%b`8_O z8Zcqfj(}u9TH`kYFj?a8!N$heJukjk-Ygq`_uY41d7kU*mNQEYvgrZXwSBq%)fj=pDG}>N3+bPz=QnAr_+a=O1 zpk(N6$NE)iK4ddR_cGYS@&qh1>Jq|L^iDu|2b|!K6<&IYeYSkFY)pOk9Tz&mgq)#G z3gUN6!bb(o>Jq_F=5)nrFu(curF^byF(sXNd{DCm z)lXAaE~v(kE>s9G;vI7PfN-^@nLo#UwD3^Ek3M#2eCe|Hja?BN3)Ur4u~;eranrqW z*ZU@OV>?r|fsqs8L?SHS8crlB+=u)Bmt*Wg!gAgF??z+Y^)yy)KeRamHQ9l44ju^L zun@M~z*|rDG>mB@E*Mnfcp(R?1$z{L!F{ILui%NT^#c$3);ZwdmB0U(>=(jc?! zyyH+^yucR3>ki$qv-~I4!~PFj`k9IGyR(UvlMk; z71~;fw$fR&)v;l+DlGx95dp+RTZ$7>B^ReHMeEfRREcP7fxw2Fmq?3vE1LC0-h35p zM>Mh?;v_y4O(hbk=u6^DplhI(z4%UKWaZB78g+xo1dplG;w#2M-#PHcBI1Bgi&{{# zHck|-4H0@z4Nt?T-R6o@czGLlp)sY46Pad1TLz$(S`RwU1%Yt_7(Nma)OySW)f`7x zbSsp{P(bX$liw&(=m-Vi^T2PQ_1-Mp6JUOmiw#N*T{n#^y)hdW%ily8u|M7-9+1MF zH!U66)Y%~J|B~1ek0nHr1;nf)v3}XW!WGLK!{vSdSz}3r>+<37C+=`0)-LPqU9lp< zCcfrK^cTVnBtvK|V=uvH8KT%Op8aAYxl2ri91EnC@MIT-l3Bn+^*q2hh#q+}#UN+8 zU;rek4-$3i$%Ftu39wl)K!|g)RbqRx6kn|cw)??YfiQTAObp)*QZTh`%S;Sq|(aFjQRkd#6f?2iu$e=8K>a6xuURvkn1 zQ6Qsa(i3^jksM1;EYcmx<7vgt9r7PUt6MUfd78uL56bEg#su*Or3IlO01auJtj(xb z;bac5p=uW4f*krFEWTL0tHk z6hOcRgjt@Xk70G3wm!Yl?TUyf4p@k~E_r4nFVPtzE!QkeLA{ z2s5|iq3xrc*&d^Wk>5Cc_mcIChv(U(Nax1OLXL24UpQ45Uzz>k7ao4};N3mfv<+=o z+8GH)qGWK`LcVZh@9L%TTT*L6@vW&O>vXiNUD|iudiL$Qq4IOK#78b$CPM#Fq`#m0t$`5WY?_)F&*_Bq&Tl zO?L8W;v(6Jh(H*I6kr8h9YzUFahlx}4hZd=oCpXUC*X*bFp`(~K7_#4`oSPr6u|%P zu|v_u%VJBf{9(ouvsfS^W6{RWUGF=+!Ek$L$l*M_o6B?Xatv*u7>#+lJm*e$Xh58s z-!(h~KTA;*V}}kMlGdDh(C9gI2pMg!ly|TY?_V87S;BlkXbQ;#nkBSOP{amPf;^+m z4^0Za3}6kUSs)T#3fu`HECM=a#-QdFGLF*o+>SK!;s;aVhJiyg3l@h{7R%N{Pgp)< za2cd+r|!&NvSlc55+&2!Xo^nj?OdjAug2~9N=4KryM-uCj?!u5{+XY@{TZ&+OyTop zj?Yga@n-?-MZoK%^iS}tTCU=2+C7ilJP($B$mY0q-xr^JVZCHC*8}!l+1$)p%3qjt zu;*oYu)Lki8t{rfJ{Rd5IW+AX!FLS`=6)QR(Hai#t|#mq-R1&WsmT%$rC!m(>usPWQ4R4v~mOK^ST%j=?gLh5{@T6W)h&SScwV*I} z#fj|C5PJstAhD}?w2E29-leg132E6#bm{1`^F0Zh{n@-{j?E^mS>2o2E{&wCS$CR+ zEAt8coH?H=y;LuLKC!C#Q9Si{HAmLTFqhJ~V!mT%y)Qwt!^xdUyx zK-(@Yp0G{x%2VV=mu9=b8Thy_YHm%WAwR3vy#NIdBE<>OThQ+G<ls zpQ+!_(78!l`owT{9A3 ztHT|u!}2%zGEfsu4=nEx*P)-JtH4VEfDH0 zMe3bT3oP$29=~i_4J_xx+et|wMG&eA#f|L{S53EhTD77!S5zw)%at}?jCMsF1MSK> zOS{TJyK=u5?dmc_eZ0iAt7K4bvc}u&ZM4~m6`apuZTgzfta=%KCn+2iiml*U z^6D$VEWOJb~+@}=}?d~W%w8Dhq=x+g=2@OGDb;=AY&Bn27(%1iT}%o zG}Bj0tBLqdDoqEbQkIm6T#81T0K>%SwTREtSc?)XP!0{jEsvXH7HcG`VJU3J5r-*^ zVFI8%@TWr!Et{!H0Ebd)Y*S&t& zWL%b;-|2p4Q9ny3Q~TK+cMosuZLzVTZ{9ufXM=+~m*&^5nlIKjtRL^WQ@kTKno2(L z;I_S;ORgEkGyz?GXWnKLz68}28iv5w;pSPiiVlVa%0=KZ|=IcSK7cJIDqX=-rsM^Zrv+9C6of4y(= zmA#gioQ2_!4;4gMb4*x#;Ui`kEd>p_G7pkz+#SKa+@izRHU-;)LOc*~`jR{X-zv_vvaaDjq&MFAF zpCjOYKj7ah^~=aXcOnxVM5=|VKtOOU0N@+`bO2wj#=yVwCvrvEmG=k$BgsiefSpyj zVw#e1LA=-Z)FoDjZN;_~wi?SNPd&0{)Ml}d?g3f8H83DvroEnePz?0TDe#FF?O_ zz*?m;2dN`@Po*slqoNa zf)$wl&ZQ+It;4|;jS85HiJQpPW)UDCd~r;&N@Fj6Pkvy_Dmm6W47M396h!6J(jEJy zy?}cc(foy0AWD4xQaeeEke`by0#N;F5?3L+6eBi`?DqWe&4;L^)5vb{wSw%=6I=vgl>iU(!qL%7allq_eXc^_~_jy4!8%|^M7|u8{7T*m!v(& zUMX+6XW7_am$%$LD(;cK^g7$^>mDE)kHMkn;dpX@?xyKxH1`dF!DjSjV>u)(N@)@IIi6B!U<>8F@&pD9rw8f^H~ ziD%@&&f%VCPLzLz{4H-``1BC(2tuAkbm6(J37?-HEDJ89@o9 z;dFenP>Gz74oHUf5uq}3=b3n5^Pup?CyR7-f~__*+tb*%P44k#;GiZ>+yD!SNa zNnUvA*1`PEU4;#c3s-x*cT4V`p_>P`etFA|bzYBg*wMCOY_KKVGR#(`QUyo*hS9~> zj(mtGR&m{u6~O;wN5iVG%5UIG@Qms$hD!AorWH$IGpn~qG#wdOD8#Z}o}`e!Bmc&c z@(yX~sR?o|6E6&&xl3GXitq?hs+mH(KsGGG$a>^pY3C_WN&wlPdWWEeUMB+Bi5vcKX7qLg-BFs0hm4FR=RnlG%Aq<-Bg#N&Qt72 zXTkV_n#$rfp&PeZ+(jup4=2?Ihz`{mAwERrCO6ySxoiT67abu40-0h^n*2TlfcxXM zW}g{09_lJ^J&L0`k|naSza{eIy{2W6!H(?`V?kDs=ePMrEKfQ< zy)OIhmRP~z==UwU)wXGT@rIrL^7zmvHZ2y##kb!*wqmm=u3fzOcyQ;sk?XfuVjgK< z?GrDo2SNqjqMQthHxCNWY0=5kzQhTy&n;lo99hZ{M6N6%t|w}P{G25_p=CVqyzzP} zEkn=(fxGq$)>axx8Ts7^j4isk`QQc)3RIMU--6PP%sO+*#hkmharTi{z+?T1i3iZ5=1;);(dm0*{n*f|E#@*TFK9$fPez zU`_I~Y9S&FQ;HI{nf&zHr;Wky;~zbn=gXP$m@8&j)4jqEgrXVqh0?yLMhmZ3A@k1@ z3sPoEPF%n#Ura3^il#CMM-H~~3qkEdD_^}@V`NVBQC$j3o_Ara;Q9r8Gm+GCPm;1a z57dtFN+&6J2eUH=+j06v(Q64U$|mP5DENKbx4Z4}sM|UDoBoI_Z{Lor(rj`q z%32{miv4%<`6bGKoEpzYp-nh-{t<16@`2Op>l7P!8g2s|CaR}ClbP_f@vA-^m79Bx zv24`FGE&J-ov77L)Xo^lq&}S zb=8BfHWQ`?c%}xCfl~wC0MNf^vWV$8MnWTBf zP+u)BzF>SFGmh74pbR=_J^CB>86)_BvSQ&J*9$CA79A_F&luwmJ;a}JKjgq`75}kT z??De#r;=$^{^NYs%&L|8}ak>+dPaOMb~C2b8g6rBjV1V z|D4+XO<-3m&U_Ajc<4O18)Ylt^5(?~kf3Pd1>2A>MUB84dFNr4OBgXK182%W6Myg8x8;x(PiW5cU@M6v(cG091q56MfOM`n&dUfLlsCv_Y3>`XET z&m^mvkx4ckqtsuWNhWIx3}upGDSG!zG8fMzb4_KEAyB;JFyocVp4HI#=}a;wKdjCq zbJLwgyiV&GMcg%gB$TKoC(XaAOfs!dC!L)B$L&mbezZ(7JH;y?60SO%>?21$`k*u; zqs$!n_Nj02q_Y2?julGIq@w{f_>et1gN}s_NB;KnGw5hq|Lti)R`a7%@G;kU_|e7r zQLf@gBsRkHM->PNXCp|BRG%4~>7C|G?}a$i!#UG4#hEDYRC1Z|N*N6@ouB4RH$SZA zOds7@#OpLK!nU2knQoMdC9+jY)csX)0GTi{jB~ zibpR*@d&4QWQyWZP`ts6SHiKwbbgxRjr_2h;xW3jh}SBL5A-M))x4TjsMQMOWv-*sYOZ-s#FNh};^(hZ|>($C~>R zEuw6(-j_(o)>Dsj5hCewIIYWJKWjM8$jp|+RL#`GIUnjjPvSwj9SYwEG)N9c!2oJXhob#{r&LMAx`q%rz`2dru7F8YEwYG>EJ<>T-E8l8T57myACr% zEkd(^iEvg9wajONyLu+L(i1QaU{4V4qgfUl^|BtG2xzu}oIyb}a`d9w#zc*#{{!Wj zH9vgQ^8;ZC@4i-g`TX!s%@1GIgiyS4$wQa+RnG~(8TTN?*Ec;2inwd~NWho0YH7e= z2@0lq-aU!AcgbQ+80g5M&Z5Z$=A0s^rxA(n`%?Dt=ON1=WzjXBA;I+cF46(6eh* zO6|tN(fjxR@q;OwSzkC@Ayl)&FyRgAiPJ@Ef=sVa_Pqc%1O|1(J0-UTWX(W`ct~sm zTtzK4IF@)dHKeM$<1%|#+@vMzmQ8Q0{F?`D#!Akvmar}&n;SV^&{e5MSX$^7Hob>z z?mSn533|+CW+!ydhg_h9?vg1vuM?w)obJbw)1Aq6)4_X9>-PGy=4?J!l{$O=?C$Rk zv|XRN_!RH*4k*~WK?jQSSqeSX4sNJKJ?m^hfI)=^&dQ|bDPxt4X*hJX!Pm#Savt%= zl;dOtJyZwc{1mfWtw9hu;JoQXXP7Qna;NgE%kd){P?AbdvW6~5V^!ToR2Cq4QeoBq z!8XFXz*|Tywd=6sjCMlnnr`QVWHwdWNxIgIc6x-rxX5-=XpbvfhGJ;h2de%cG2ja z<~-pQ?zq^VAc9}!J%Ko23IxOXlkE}Ut#~Uj#xjyJFrNf@nsI>LQI;r4jkCE03lafT z(>?J#y>@?9HxA+-;=A5~LD~<#Caim|R;!$c@pJS`;&t;V5&@_eoIqeu25<;JWdJi8 zU>lkcRlVRC`0wQXl~^UthwQ%TXYzH87;t9z8Gk0ZomC@c*U~s30*#pG*wK#?)4UVW z_~p!gv~dE@qZ&aAHT;FUfhYmlkk!JzQ7cGG4(HKzHbfR6QAslK^@0(ONChzPbgs7I zhXz0M+U_R@dOMHNZwwFX%{QER3BUDCbDGn`E?ing5n%sNIqBEnH|Kd68hJ_vs@`6y z*$cD~#YpG`Mfd@KBVv)7K%K*TZh!Bw-u9)$EK30mv#2UZi@uFUCwMFa$5`^&Q7m3%}~+_C*id^LB9ac623yuKjhJ9 zU=PY%xIk`j$>gPa{X9K5sHF#c$jb-*oGzbINk#Nxo_H$>ia_)T)~#Azr)s5SG5t-` zWh!Q_t5xMYO*P+s=g?UtJpTv!R79T$twhE%?^4O^si!`kyHA7$TtuIaV8#0CMfAzI z{M)lT#j%*_v1&w>YGict%BpdS9Hg;Il4CQigtFKI0i%}Y+zkgAIlx-=sR}S(jc^6Y zTNk8JYjvv)R7I-BGu25oNGNU?a_t-gs7tzw=x=g2mxPXs?DFvNtdX3_pGl!d*sAv# z)kU>F&qtrVRA>hk+GRDXQ=u2{?V!R0@$MWVLzePq zG$J&$&`7IusKg3(5@;kII43F2F&8g}w^z@arJF8>M9Zqp>vvv0i|N51l0KKy`dm&6 ze|3)8OxeWkoI{ipMEpEX9xd%(!L}=IttfAr!uP8x0VwTs34#2)WD+k>gHiwuZq^X>EKOqzwunMX|B%7sb#9F~gmyDx!nm3)iI$#_64;-5c zuaVi5{7q6fn@}hOs*)OM;5e|W;bi5a9-QQY_2d-rO8AaDLeOs`y-EmL#M{2!zTe!4 zN7+kr_*p!w)JC^YJ*G654iWF?nzm@MhXqw^!GkEl6nXe=N+)%?8>85RsbbNhU<)_Z z+>MbrQzx~AM+mL}(j{^UJzWAK3+eNfd@tC1`s6{+>3D9en zo2r`?uTE=cecX28x%Kb;_fWOjJp1?Ffc|*C-@6MY2=tNZ-)qDkIJ{Z_^{-kmR{~EO zVJH+GwEdgz zJYk?gmw$HbxR#;p2c!@Ei6)$NpcMoP$`Sqtzotp1`B3=*QY72bkox)#NXW2q}zgw1VyY3;+@Fj09dhI6urO=bP zdX{Zk&$1;wVJ^l&jUzf-k=?Y5P{dP0u5E&N2dOM!)MZ1uZ95h|q}$HJSqQERr`wVk zGh8s`HV3ihxR|tC;|+UH+bXHI)wD^SO`D6%K-OsUt{KQg8$AP=DAQ4)45gufGR5$` zP7Z_o-%dp)@7e{@ksTz5FESmn@mhS4S}C3c@AW^OD!<)>3#EzB}y}YP9Q4>&d*z zyo{2?tW#RE6PS-&L&qiopyq;VYA(>J*{@TRHUn4yYL?=yZG_~WmHJ*n%^sp1D7jFh z<^v!Jw7Dcp;r=Q&mS3lVqqEYH~Li=*?G;V^SsEaWh=oE9tdSkmeUV13bK zTn?3-t0+!VE&+2-fxg-b#Ug`*4@ma&loqH6z3wTYH&<5LNbb=jZ%wPD=ejaV8`WO{ zKc{tBSTsQv>eNS4ubL-`*a~`5-GMd`*=X}~9jP3LCX~Ci}zx$&njAy8Tl^6o2PMaDm_uqKJ{`w=Gl*k znFH6N6ur`oss)vWq(h!aXs)tEn(8*gIi_NdF&-;j>Zy-llPv_+Av-;4DH1}z7Y2oB9tqYR=-?^*nbc@c!hL<#Nm$p~gL&zCh0PW-o?5J9t58F%W%BsDf zJ$)vTT1?C*uT`QQG2}ilGYoi&cu+3GMm|37&w>gvu_!v<2R|4R(7D`L#z&wBBOnv` z3C8P@RqR|wX#=!Bz@m)OB&&0AVsVC#R5+tvi2>=M^x^phbpUyJsu88^lqR=YOF_7E zJxUkIotTdsx(jNw7dHq!xPT<|O9-W-L{=Y_!P5z!n^9W>S?DMhjQq=~x&x@bq1PRt zT6j~{Hd>}D5X>Be<%wa1MG7ud`6AA#Peh+p`2zc2aFnyy z5JnU;5v*uvPQEuBsbE3#z&S zDs<&I72Ilfej4??03D_ZaFDWh0Xj?-;V_Zb_g)HdutQM&p!?C@E*ejyA&1~kJ1Wp-V}FqPH_iP3pjVEZ73nG@kfg5#9@z`gcujp zxlr?a)p4Sk)OP#TO#Do0ydB}^8PlvK@SYK|%MNt8pTs|3-`C#9m+9Ot^- zMUjn^ifNjWUU32Ds(m_8A=%db7sFgq?EBxJA{jdbB||*(I*jiakM}hrl3n*kRziKr z!^t!KBqN_5+{1}Di5RAL`p_Yij(X=;h_BUsS?u1K&yfyOH8BbqrstT*Q;I#HN!;`R zAIo9(psogh3Te%^iPuHVr-^5fPZLqVGd-Db2qSVCnRVQm$$g||3$f-bPbM0udotV5 zMuaCXS)w;n(0!TEPsz7yr%Wc=iJIp(U{eO3uZ)B^%5M5^cr){da{DR&fqoT5L-2_( z4pCT&xxCu=Ct$fbs@6!Ab*6R=(rPq8sViCLIV=daMV3AkU+dwL%L>n>N{TE}-%$_S zha;U0Q9gyVTcEsrJ4h6e#CDKYOUFT`qEa6|%Pwte$hodV&k}Hp61^p}1yC+!q}!|< z@1<8d@22zEaj+V?1#XMm3AY7kTQb|6TIBB3Cmx8D!@5#5*kiO_wz;1$I_je>NrDv= zp9hvBs%1b0Mt?kxtqLqPTCs7XmB%4H_M-byuZ3RO?ZE3=Lw4j7E<&3i3 zXVvC7r}K11{hQCglDn<3I>vE!1rKAe+H3<)8nk*Im~%m7l4gZvdPNWJmm|xpgBB01 zh*cIcFDvu?&S;Yjs$G>OjRKuYxS#Na!sd8e2aUSZqc&h2sa7kXS5}6ZU?lk*Lw&BA z9#O~{$)cC_pbxyL$BbpPs-y>Wh*RZr4Dwn1OrxJ8dOsu3-+4_UzDR2Qgr`VJYjvb6 z{fuMvd%|aqw9M5avz+c?YldgRRY~@$KAww}Nn1EqAHm3Hbx@q8D^zvz99%4kBtB=1 zWfYNV>-0Xt(AN6c2~Gw)9?ojj>$GUJZuGXBTN-@p6beG?#;9_azA_i%+K4(W?K~dM z>48=ZTMw)oielg+)#^Z1@6l7j{KbnLWPSNJ&7#B1C9R4E5?}l;G}cGJ(iK`_ z#5pI6q{{@#k0hCp7jCVR3L#RSa#^(=MC{U)CoUv3om&$UJX%F7s07d047s6nk(Pvg zGx<(XT?iQ|`OI-HHxeAH&U@f6JfG}V3T@e)|r& zW1UJ!R%{2<`Y@^kAHYG$8p8Gjhzl(_>QVaFh(tB20Ic6{r#l+x4me}!ZR$cPR{7o> z`hrwS(_0buR{3CKKmZCw+(2tNN+Ar`sgf5m;i9oQ>53B;@9@LY1tcB=s`I!!kQ0uXJq@wF!76G+ACV2Ql96+2#<{a#c!qkZVL@j(rj%NyI$qQvVq z6*_#Q5gZ-Z?rA}}CRs-C{&dME@95T+TM`L!1G1*i)sadbHTK-4S}EXj z52`KQLiQ2uZObbvfwA>sUer8l8LB5y@JD~*zy5}#jl|2h+p!r8%A~kZi`njQx@dm0 zB2ozO&SyB4RV^|j%qr?i5hW+-6Q+WnByxx$t2N=L`JAuvItTX;_jV4|ZuzSFds-pYN6S?~o?6f-2m~N|FUJzB`0D75b z7p$#jURzyb_pIV-T))!jf1K05UbqjdB5@C9fEU~oz!vWW|C+K>h}08lV_fZRhUUMQ$j{mRN39v74Ry zuh~Dl;EfRu2yV3UTAunIr&IMAxp9mXT}_%+RcE1K=XaHXCp zLi>VK!awbKNVy+~qNZwBs4!sRxgQpk0mIhNb~x=V@&q#qwSci0-yRWWB%%yd0eywi zjRgf2L6KKa$s28#{ABA^)-pLMb{^{zzh16cee5HXPrWRzLmN=8gFS&Z*r^6OuN$xZ zzE(1RD*d2n<=bab88Vo_1l!xNRjnSYJpF5NcVyk6b?Xk{hn9(VmBY)9Ej#_XxB~;f z7zzT_rw<6N!u9%|ciNUYeE++tjn*b?JONqTbgc=Ho!#liPHU92R8N(9;ClgGr#D;U zz5yH0Si(kg>KsgOJz8Z-N2;~&%g6^!JB2DOS+xtiUzaI%wGq*}XlHfO zgDCH_A6G8VOkC=1ql(Cv>dN(%yn~A|>WgKS%nh=fFXc60iT#IAdj}`vj5>;I^A{t~ zvCZ7Ipr6AD?xHmTmj8bcP z-jUlnr^_!F3RHmk9A+K+BH`he$7n8z+Fm<|73vh`Gt{wdC+rA?@U?O?s79{LPphzS zlpJE9u-i2D-66gE9Q6t*cm(wd7igm9?0t7)*moy!o_%*>atXd0!~~+OG+vweYYTsE zrPm^^R;iqbKW#?d62f$`UE8dEcjC=0t%({Zc0jNCr|r9Q&P#lKqRqzC%zQ{YDu7rr zgt8pJpR42dyb>Z(zT~z4lc)cw z-hn4~zjm&zdBl--*_y}r{O~Z3x#M*yv8K;~MPbnJ>Z!_7=6qPcmIsZ_~jeD>nEB#{XwJnxny zm6ctd+M48!{iwb(V|x5icHQOdUn?Aok|djh%JR_i%*8QimJ+X z`kp1oVJ7Wz;d|M$q-d}qfe&MD$1H{oicq^8)Auhylqk)+s%=ar-+8jH|Eb+Su54#w zj?jb=c^y6{<_op|Hm&_LD)G&1In@TjR!0`BoO+Xc&QXj{+bWH3vr-gI*k?u4hMmX; zDjAFxEy1?B)p~6{z17nt`pSNd<0_^4j6c%Y3iVAS)Kz&0?KZ);OIcG|j+U0E#dlz@ zcsF=u6JD{9va|HuJ0@vCP?|RbDoxe%(%cfD6f7i7(wl@q(;g{l4ioK>l<-BxQuJ0c z>8V~Ka8(;4#(;R-_$s1N=L+Cql0&=z3y({ku<)&JDJ>JKn1fU?*a_4^G6+y^`Fhdz6q5rcJ9fMShp68dK-e zEvdK^yYGj*0y|ikt(VH;eTa>rT=6jh{nfL+;W(jo^Eel@dq!=js>)B4Tv`KtvScus zMXVKq>Vm8)fvf_K=5-2s+)1k*Z^G7p=#y7n^~oA7NqUq=jO@|kL>OBIdj^{kz%IZZ zXxyI!DZ&d8a`N#imQR_|*4PC~W}TuRKbtp`;lfre zjz_PtMY{UNQgS}CX7elA8|uTB@XBOci+7g?(X&+d$Ah{*N05c(YE>o@~l>nj)NmZuWwg`eXxp_@Kb`ETk6)K?PRQ-grJPD$3#27RTgTKkI z*2Oto(((e08dI9UlqiY-FCKh?R8f`t1j%|4B?tvtqbXrIYd!+&@gDpUt8*~of1+m9 z|AU?(?nDN_QqZZ1s6-Q169U*iNw3aC)WNDvG(mNy5%FGe=X1|toP`l_r{PZi-N3Bx zR(-)x;9p=ur{NC_`yxQ*q^K?`SQ1Whcu;lmfIW-efepbte3^)nFGwt4-M zC5At|!EEIdye4A`&y)D`Is|UU&3qnNa}=>ofAmNr9tob}$Uz*_*N_?>KC&6lu)Xm{ z`2_ltDxW}os5dm3h=NZzsI<;_SP@XQA5Wq`dYXX}_fd_LmJK{B?oA!pyndLT#B5j> za)v*MJ-lr-!V0aoaOjc`*<2|`fOVSNov^Rab4W|YB-7Tsln08*Li^%zGEj_o4U%Os zD^M>0VpC;Y(s?zqWVN>(QD?lGL^`2nwq>f<+f#;o2Zfl-?T)aa&ah6Vz($z0YcreGTD;2tPO6;de~fLce;DaJ*m z^kUi@;s2`Z+JmAxulV`y-CZ6ouq?}4V3+42i0s13L*6W_uz;3Oi`FK}$Wx1mXjAKC zs7WTp8Y@i3WE>}B?8~&4E?etltizZY+9nfQX+kw=d`6o@Ypj2mw6!DjckaEbVD&PG z^L^jF-{YL`+;8vqIOja*AFZ2Q=li=>e8&IOzS4S(<+(+2NgiD`=H__>XJkBXq5m}$ zaJi1*f)iB~n2>8n^m%}68QIi1I@;MgDmywyN4k1PM==t^<{R?PC}mN0X39he=njauG-^Cv1R9*I#n9f)HQVX6i*UQjkVndyY%c_j_zLt!q1 z)2xt`swKXPbK{Z$%a3;OKRFE~*ekefdnP*0=JZ$CIaUE%zW5IC*;NyW7Uwu`%$S|y z)gZ-Q0r7!fDp)#<^oJ#4It3jCEuGaT7eA{w@sy;r;o;%ito-D0 zKfON9*4i3twZ%fs>b8=eQC^gk(AxS?IqEie3mdeuOK!tE9t4eWXiu=(3cPfpN5M5V z{UURJDpHI$%O4zJ#wlRM_zuj+sTLm}@8VQ@=h#Iij<+5URV@s{`U}1i`16rXONN^? zqcOg)C2YD!aa=lXj#7WSFix}QBIx75K07-`fcxvn22tI;RT%cv8r;L(%>}FU-|gr3u*ud3|8J50gC>O`y59`yTyu7?g&OvFkUKflIeu zvC&JBwn!TvK4DPq@pr#pe+TPf+sK~`x%9;s_#e1+GBPW1(m~TFsB*6Vm#A;#%XPGUwUvz);f0`H-~1C*jnm4KGIpG2C*o zuLkz%#*V^OcTbYh=2}-_tBl}TAi|2-`K zOmY0A_^8t8>Cotbz7W&HPG2km0^*-Q02Zv0l9_-ccHT9g7XCEEsV{|=NYJ7wg3h6U zJ2+FJfz8LT!>WfA{N!v#IY>~QRy`!(UW(qKQ)tjUSE>CasCufm(fdq9*_V_O%pFMY z7GIqW;Ms{8G86^DkuUrp!t{)Cp`U}c&L9}nKRYoyVPFrY^RLTdnVKNIiE0oQ&%^F# zJ(cLD$RQo44EY8X$*ajBT(nqnPz@kk`YAQ&((xS9#3|rva!FGZEKQSJd`z$kNk!5a zoD1nEVJm%H)YeX>Y5Fy2p+Tlx?1AfOv?mE3YD zwTSNneol}=q^+YC`7*$cFzQAdTBMJFuK`a`hV&BYq%UZdbcW12BieG6OsGFx8bBQh z$QOq;C4kl@a_LT@EhI9)2M5~Tg7(w^5SH)bSwCQe zDwTZ5BmRZ>4$2T;BA=g{rL|;|hY{{Y{X5YP3(E3Qx!8#3V3S)Bi#1c2{AbP z9(Zhdz(3~Ud|0ONk9in?(htV*tNWfL{Z2BD@X&UcwG3 z)^dXS@dcn^luhVw66Gq;7r?vlj&uXFtZN`=;y30D;x6^wP~MMz$aer(&h=qvOC`V;yK`WZv2q1ABQ@Oe;i z(C5L0!DAtrA)O(2LwiFHg#KZHX+hzFT?@__2g1U`hQhuI_k{l-{B(pT;<<=J5mTm4 z(_VO@8jPGa$C>w{MK9+*rI6|8)Gh zgxrL$63Y@h6OS!4E?l(m^@Z1y+LHXq#^kExTPdX}Ln$Y$9-Gm&-gY$AoSK_@AoWV> zm9)6D?sQN3RQgQDWX7kN{>+{=3QEnuw+mEqWo7Jx#+x^!lOtqxJ7M7#i#ieGOv`cf83@_^a}^dtdM#@t*X4(iqy9 z-?*dkbW>d8P7(+sk1NCE@TYdddy?tZUrlop_tJavFiy_ z3RtC##JW%vMulidPb~U39`cchvj|D>?~sCeZCD9NqjYF_W#U|s9cyBX;H4@TbM`z~ zm}9OuaSE#tGn%D1i&cysFNHOcGU$UFuI7up<2&4MEG{7Tuh0`V4Q%Rr;7N&_%qPAJJu@6MA6~K_Xa$h)}_{(8ENyh!7?b zi8hgPn`5!%_)wSAytMf^7#V(JoZu`I%j?`)G z@YJa70Cp0+C1zjriI>Ui3trVWF2uey;~qm!o6Tohs~ diff --git a/pygraz_website/static/fonts/League_Gothic-webfont.woff b/pygraz_website/static/fonts/League_Gothic-webfont.woff deleted file mode 100755 index 2e2cda96faeff036607bfe11f1db97352d1d61fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23940 zcmY&ks3-sk@MBtm0ObFCP3Hf^|2_ZzCMv2Z4FCWo{;)XzL1h~@Sxi_&^oOhYiSd3w z00ajB6_b-y_~B;$i~oaVoMVibf|B45ck>f-{6KgWeIr9wfsPRX0H*$lf9eJ3CW#3N z8CdDr{&1c@+WsHU$aB9MV&LpZ004mU|7f`X1I#x3ow2Qn)erZduJ%V~gwQ}&Vxs5p zlM7D&qk;Xu00BUlSh^Yia6fr+C;&hXY7xs#zp0U)ApoE(_oMk~AHe#Y4qs*ZL;i4q zKQaCfNZ`!C;Z3a^U4OX3pZb5k42ZX;A)BA2jlqvjwdJSXrXTbfdGcXd>AC*2tNw%k zd0(JUpjK-=E2AGS_J@1<(H&4I3dh*mI5+|T8lgXN`%j(mVc%D=w)RFpd0N6hI{yEl zHP-I-szf9<#{=owPS?W1j10VsQ|K)yv|5pM4|1V!Z)?h|YcS3@C)L=(f7bu+m<9iwq zuQxIJM;0`kf!~#%19B2*z)}~TxE~b&$_j4yzq$I12AMrQV?BMG5sRsQe)4#NOge_* z2KxNqaImmv@UXDj^xgtS@(ckW0ev=POCdh^jOca0{1=)0A(KIuLii>9{Ez@bbZ{#F zTc573v9B&BxG2GBPbtU&ga0daBryLP5Tu%)BW}Nba1ksO<`R>o-b$}+)Gl_vkEoC+ z`H=3A@DTJ6XYu|Y7qk{sVbns@1Jp#+1=I($J+vi?-;_{1x-XLt-+VKmV8LMgD9ZGe zVCgkkdVKwG!T9_rIG6z#D86J1jJO7Ec|ExVxdeFx0eZmu-{0T(-+T|>JKvw*&mY^j zKI`9b-^<@R&)rWxTi-9=z28>f8eg9e&$9s_2+n*fx4Q2EGzhG`s;{|cep{be&oY!7 zMx8LXxJJHlQ9#zP#3-@4f+_%5NpxjaXLuP}YdmdUZy*6eJtTPsJ17ZCGfXuOH!u-W zBQzxzCpc*uD_kueFAyPO0~7@&2N)?T3v3N84+t@GlV2)qE(o%8HuySx-@ZM$JFzo0 zH=!e?C#fqfFM-0r@pE@$LrqsupD5(A>5NuG4{7yB6WLrgz4<{ADYR;}o`=7|gA)~X zFCL7HHl`#@C@dg2sNk-8%Es>!@+QtDzy_GopXZc< z^UM3r!q?i~(vQ%Ci>Ioiow%NiuGc!rZN9g%0D(8Tn1C;zpHZj_whQP7OapuYO@IbK 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 Yumm7QumdYZ0k8!iMX&=aL|L#DE2N4B(f|Me diff --git a/pygraz_website/static/fonts/PTC55F-webfont.eot b/pygraz_website/static/fonts/PTC55F-webfont.eot deleted file mode 100755 index af1b47aa697e1c39debf1acc67f753988a4bd34f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27716 zcmc(|dtg-6wLiZ1nKRE!CiBQ-^3F_#WEh5ING8J&LP7{3L<}*;G&iI%0%Aa(B1XhC zmr}}&fJzmmiq;~flv*zLoJow9isD<;)cW-b^{Q2?UW&Eq?e+E+CByHt_L+fbANPL0 z|NH_o=bU|Bd#}CrTA%gUdm2|Wwt5v~oJoxSq%?z0lJH;V?0cL_TG~F9*uG1>tc{N7 z@B55-X?tS1c|UEx`d5exJ8;1jYzbS-Hehcq_O4?$uxr^mlrUyv?d%%1ob|KSICDKp za#<%zuE*8dHC|T9%GoshtHRmx|KW+=zjz*QqPjcrB{OeRQ^&&Y>wfM+;Z&67&u^U9 z#Q&R5!ErN=XUuQA?24LW-<*l#Z{zrr`B!|SA^OW!1=P3>$Mu(85w5&{`L^HV7-ekn z)oYeqclo(f#f<6fxaXs*Z@j^430b$|W#@3dvhTX(YcfW{KVeKi4fkBLe94CEn2s44 zGv0&q*5#`=^?ls3`coVqVC$va_e#hZwv17M!2H0tNO}#w&1q9LJMZthwQ) z=I_Lw#_Z>qDMVGL@oAwLV1U_C#vP_ z0rsur@ffxSmd31jWDE1B9GyC zueO!OSf9j9(#3JPk4c}lG4G{x6aBT#X`h2yc)yelEW!9*Q$UJ(#URBiBKp0!#Ebgk z4arZwIAZJrlu&s->huD(<+x4;<^GZFV?Sa)W*Z=c{>zUW?&GzPh?RtLx{Q39KKXv}e^T*F0JAd^2!{@6L zRpYzgUGwgWcdvQ(>UXbtx98oCcT3)RE!!@E^tQHpXt*KJk(Z`zvV=qFnqX`jS1rk3GhIz+&h}i^>#vD&6Yy z`)=-fJ8x`J9p$9JOml^g@ePJA0nphnJ*H_5L5x9P3nXSTTlry1d@`{-z}>yA9Uud4x&(Fm zMzU_GA1=$7>i3>ZzTEHay7Y=XpTZY)?LdPr@$c|^cU-c=zl3T+&7p6qkDa=~iEeOE z18B$jwFaP~{wDvDm5V2~gl=_BMI&|$5!n_j^Y1V!-nOn;dB<@kbLudw=k*N@{L)A5 z>}n>y>Edso=H4CcUH+x0y}uz38}4raV`P?a%>du)k@Aa`J$$HqI;@> zQqTooWg2@*kTMb^hYo5VoT}do8Kq+xI4WjS*gVM773?N<7dZFFY?M98PO#sykJ&i) za32rynY@`_&X@A#jJbRcpII`RxyQ_7W+@VlR8Egpm4>*d(w%7t@o3ENj<`|m$@CWo zjFnlDN}P^XMJhe9Qh%{0vrvjnk5m@$VjQ_MJ(V#}q_mb-1&R$uPcdDW6>%Fp(JFtj zF@Q%!ak0l8!(#$frGbkNGG-QWybC7@rJ*srRPE& zJb$YWbi2_n>VSt;X4dcv_lSB&CRRL^50sS(3Y)Hlu8@ z$tDZWHKlvF#b7a*OtQ(E$qi{ZFt-JRL3>VmenCP0WLY+u40@B%>9pwQ;l-I*$rndV z7J7UhcUld4tK>G>?dgN*t1@fM;3El4L1BCFLGD%_aqGXj8r+UG`YHN5A)rKKW0Hx%}AjL|vk` zk3W`Z?Bh@Kr@lOtW3k!IR%~u~Oj@+suizS>b7ZsR|X?CZaX(^PgR%=>Ofh+~BRt#K;eSH2jPhhO3 zF$cSx#m$_BMszZ>%b|F>j)l153@hy9h(XUX6OG|BSOX-Q=#uYV9^Jc{s zERY_Oo*18#cmVY|0rKn;vct$0usBB@6n$g_(j`p}DRQMKNgi^=6ju02Rnngs(dn53 z7f5zhkGdF8ViYB+nTOc43cOqw!RN$d&3hi3FUx!nF?)hEti+g++9s9v2$SmUOyM zFVls3BQ7+hS#cp(ykXVHL(25rqqYC>>4(f6vM9Obim6=5wW~SuS;b^mjq=%}wI6-@ zvN)Mlu2{>JEW7G9oK>uLH4U3w`>>R2bcKd>;@d#qN{)TloMXaHmVMZgm4+R+eK_51 z#btK!?GWFY^i9`z#5K4pTik_b=B1vKpL$LKT{B#my0VDMb@kbjE`_k{j)~~1{BQgz z^|?g&SS03;MO+|1eT;r1K03dPK6EPTk2f6jKh*x?%TKo-Y=0>5P{aPfgNuID`Mb`8 zonyb7bDBT9JF%P3N<2d!>?Rc6MxWgY(mOhK;Cw`$ZRleqY$}U#GmHDd!HPGc%JLbd z45XhPRxBqKR;iYPT}w6gNH4Ce9EoZi6ZD>RjAU!PlHo;p)D7m+iN~MI7AJD(P%+wv ztHc$LlooCh3*It)gri)cA_WoCICHqPsKw5nVR z9GD&6yRLEDwX+}n`Gf24s;LQXzOrfOy1CCCdvNf{Jp%gg4?C?k7L z&+a+@p<$P z5J!39h%1d@CG+I4Ba_)eYBoBp5S?d1Ut8<|njv)tc4yetEFKzmWR>HZIuz7})pA@q zPxP-+3R-$H%TF*h(^GzetL`k?&vKWaz=)N&pmkw3Xq=(1u2$=2U@sUUYR{>`Zuuk> z`tq=6Vb!3#tEx_lR2E9^Oq=8{E|*-uIJ!*eW`Z$55&UcCV-wEZ6Ybs7(z0c7G`g6! zz0sTGJ2!s0y1J{Qy{EgQy;~am`UNAYQ*vkb*3Mv{eOqtuw)OzF=i2ovmwvHZUcYWd z@1}vCo^w0Dc0q6Q1dSuk&@cVymnfSLC(l|Iub^=hjHos88KDW(%jGj%=^$;OP6r96 z+f@_D+l<|2yV{CfCn)+2Dl&lw_0>wNV)Lcg%oyNZq*7cRmTZEDiGKxMS?#sk zTcRx`ZJWD$x3v0hf1vf%H93*8pl!FcqNXmdthv6rXhZdm`N74T?&?~3Y*)wA)r+?@ zN3ZRY(NVFuC0y3rUDokv+r~dE&sosf z6>RbMF77G{#DYHCtp&XeC5;i^jFo#=)+}!H=L8~o)kAZ?y}CUv?XO-xt6^oZp{0?* z=7nD4+k{@5qG`1YI!qQMg$|pb$4H4KwH7p%rmjfdaW<5wl?L^3=4RPU3=^(oi3gitf(bf0nyYH-6`rG&4 z=(=+0$A3PD=Nl5W{EO7{(*y#*^YtfH`^D$iL8?Gv#7LOfB%`5wV^e~|Gj^n8l3S8B3+zBzyMvPWhR<@Ate8RpEHFoB34(rmL`4}5a zmp$@rz=Q3C zgcPFyL5ltY{;>eoz~Kgj!*yohL#xoQQl)B!Bmh1$Tj-pb(2vDTyB1~+sp%SLMtuN* zKDW=|cXaU~h2N66Ns)RE^KFTN!--8C&Qju$-ozN+&E5bajj=dHQ)t92GpDS9QQgTA ztDXg*By?6hp6LvDJn$z2_Jj;JScyEIIvy~MJn^1x6UL;DH6#(SE=(08 zQ7l2=LRdgi30~JR;&rAYUgr|+OMHSFgG@0(9kuGh_ndp>b;HoSvo`?$cAx)HUIE#k z&I(wg)&kW9v9H7MSM!JnVkD|I^sr5+QUcgC0M#sDmn7)Va}oJ96=-KZuhW6=;&Psp z*-i&!hQCGSGGK`_dTi<69D26MGW(C%(1n zDegKn_}cwlyoi?!zII<%;x~dncEb~913j!%TRbfU@O(zmX|@4Z(!+}Bq^i@S0VZNV zot}`mj&@DNEH>0z2OXty3zRq%HWxez-i&4N-Taeo9y#|0pOM}Dx!lH=e(}ZO!@5TY z`wnQl32&Wj1+9t@Fo8*ccNc(CPNGyAQ3@U(yxfhKo801!#QjO^Ur~CBL%3LMiq5X+ zkE^*r^*P6JFf8lzkRJHHC@k1WPA`wds5UpY(6Jfd z{YW%cCu=Iv7^vgI{<855$sO~#x7|4J?mIR#Zye~{SKZO^`j*FE@7(^4pRL`^-(Ij` z-oZzoc(i@-<~iZ*jh8)lV8vT+tQ_kyWgXVq{TO(p1p2Fl+D#an0CwC(?RLs%Mslov zS9%Dx3`kHKR?H{WLXf~*NF*?)n?sQ5YCy2*(MZ=DFA)`F#RfE;aa_$ZomJe&*|04G zzzcsouI*^J%M8Sjc@fzvR)@+9(b^oR>d6N3ayfAU*_woS2^yg3@DlNu(T7pWjqaqH zf(80mRrI#5md)Lfk%I^M%$46ywCg4(4z{;;?O9vbdDk=Rm;JQpP>wISps#LdYb$@K z+j+Px5uRnpkY=v9vwOqOHqI&{T1YGa9=KnB1W^YkyjsF$j!U4#h{bA_(qW}WR0|l= z0PDj=v{2G3RTIVzI211GBpb%ff;r8^ADQ4t6B-(qGVJJ4rdomQRi1`sN)DCEz@<@* zO(8l=Ep98;?e`rNPqXE3h4ZMU1GR~}B>F4wKy-`5}CR7a63iERcCwqxuSvI_VU;}{1abrQIc ztOeBoF0@b0)u)W13-3I~#FYR4wch0(edCiKS-B90f^TXG#8{OLc zSV?Pt>+EYU4c)zG&Aml3Kl3ba=h8msefIVHpYO|y2D59{-M_T^;FgxAt;d(t^!Lmx zYwepkw6nJ+F9UtH8GIH+pP8VQ<9f6foOQwffiB~UIjmZ=QC0ov2fw6IrRXuJ49E4V zY(5J)bDXI<1BTQv1xRRcY2t%Gg<=$3g)!pCVA-r29Upi`ntb&(`NM~2eX(EOv&>EQ z^&Oyj1!(RUmce2cFCwZ3L3MHusdI^2ngyvRfz&1#)51EKWLN7zYnTK|IhEyt_?Mud zZo0$yaJsuF7|{uIGdGB1m;$+x8es{zV6KwUI>8VSAaf%22l(V+PT(K-R%F{Z%g-+@YV2Iu*t%_LtfG5UbN|1z`^|L4@$Si{$Xw`uW_ig;?n8)#WUs!{#*lEH46R=6Mtq9r7)Z{{wxE3<`!oV zf94X=rcLBeh(@wm)e3BjsBi4mO29Fkq0c4jiK)f8D05dUWsbivG9`lyF|UiI>?1NX zW7FaACT(k2Gkf6CO&dlxH}=1h_;_D%%h>K-SJCX2o>|=o2QPW%(6%*q`{j~LH?|M$ z(S5l1XM^(>3?1KeI`N}Vw`T0MExG%NwZ5|4w3#a(=-+;OQ$>z5*toTC_PwI5F9Gws zE!%;4JgoXFs0XN?L<&5JT*;XsN0Yh()Ia2UA&aO5*Ay8eX*4L3-3g%e;TBg6+?9BvWlrMFU7%SPKP-E6k78sS5t~UOT>`oAV3I#INs5A(%`lUSge?M>EyD&S0tbVxF1ad9bDK;wK~S#Jiudt?snaZa|b%4^p{_h z4Rm2A3EU}(UwvPzrppfaqNbbADrv`ut?A^1b=ikAT`&>j_`V3~ z;y6jh-@}MfBS1~9K@WcANMIg&Ax68STFG$4bA17Vc$1up4m_FbgUU5!6i|`QA^dzU zLU_X2B)k2k7l0q+=mp1nOXu<1m)+ABsqJ3XU3#w zHZR`3s(aZ$SKnRNcYm|5vHSX3|Cf)Z*cQC=c%s3yOMi;BuqzR9hS*o<0OsU|m5hkm zCfu#cqA+P>C6?r;ULoXWK?}^Xi-EQfy9@1VWm4WD-XxSg_!Z_47CWD)G*t(Zn-nhHiY9*FM|uU}JdcKli;3-}WE(O6uI6&{aJh-nx)6mV@L$gkgnfCq-26`Bm63SjotM@W73>Y>f9n(8y>!8K)mPnE$Fl;y-aC(=ACZ}(&jEfl!s0uo zSut^)Y>Y%A0>&ylGGai!43MljLbwXUnkzO$dbHlEX+8ZJ^_Ic_HPY>Rg#j3*oy9I7 z>)E5v96kLTaat}{q;d>%Rc8ehL1e~aJ*ywqTV%}_ZZM`J%wVE#_-cpERIX#HB^_g; z9wxbz%IQGC#Xm3rY+CX#5=@Km2>0uJI+sru@Eh$?>nf@3_4~(9-19nr;@}K9ra$sU zJKvbtF8TTQ-+Gtu%;@<~{M+T7{av<#ayk(*zg8{mpAz8g9O-y6@0yt4db(_up@uIkz#tY0J`C%^P+#9bX^l^GAA`f-}0WpVfR* zkww4N<|t|%S_#)@lig&h?7X>S-ToC7lEHF_qLcY`y>r@^L~Q#I*bL2Ti!^nV*$p!A z=tkh1!;qm~*2LoZBtfBLfkOqr8A%iST=5afM&Pvrk&yiX$Ba84tWXu1H1Wull$D z`Pf=%>;%t^x95A5aLqrRx^L%ex6hwc@IXbN>k%#z-6Zt&$NC2JwHp}-tt@V*8Y5~z zH8zmpQzG`2Dd6sq=x3NV6m;{Vlhd^NPeosPvj7h41_A{oWabd#c^qUH$XO610AT*& zFfZpYG%xm4v5gx?gKPS)3qQu)qu=cKdE%Xy{WTkFuN}3_nlsb7_m_i_iW{HZQ|p^E z-6rYpHyC7T&GE#a9@v%m&sYCZk|o0tgtw)|`(9kr^W+bfqgO!xQP=~1*aK&$T1DV9pjH<$E0Y0fxu$obr(x~s=mNgzw_n1!TKs z=fc9qxK*>sU`^8(69X1FR5Ki@;LT$6XhF4_2ZXKK;k^Qv(y09V9O@{6w@7FXaOsw@ zbKe>ouBljgqUVu2x?6@GUDNojaN=t@*Q12=Q&9_>jR>H;pYS05i->5J&J(qEJSIF%?ry<>tHzj6{%85 z6R{Y0UsWRjisoxYwA(@6RzJQ+$D~tZW8*>n-tqgSYrg1{wv2Da^KS!)-Y?#_P z1#d?a2=KmX|YkNFthYezzG+)90{wJL7JOS$48z)rlYI!SuykXJym)94U# zG7!s(A(V!eQC2~@)Eua8>zOrnaDV2E>gl$Ja`?s-a^9Cm_B|$B$gd0D)o0>eHdxad zO)U{I`c z&gueblA~We4XT_5krjz8@m2& z{oXHgM>JX(YVa&K@_RK}n3Edc2uf&SBzQ@XLO>{9^Z-CFSs*VSeCsDdr%O=zy5p+D zc2=<;hskAkKs9qfa^m$OV=iS>1fo(_u-^qF+uKIzmKeY*QUe13eJH2Cy; z=a5Z_K8BnR0ncP0oA*K=6E7(e+GQ6cLY9h>VOI^wb~&_mjs457H;8sw(5|%OgjDpf zHUL9(XCJvi&XXI)g99eO zt#iGPKd!s|i+0_QPMkQmp6pl1I{jA2Iv2bv$aN9^0(ek0e}Rug>LelAE&vWSAKVF! zB+XiamgHyR?G%(|st*X`f^R@*)j~qKh>>EDeBB4XvFqTc_w4`A{cT-`KKuTGKmM@o zjmWhRu6zD8zSlo{S{hS$<`c_SKb`pGppy9gYHJ zztSUQ*pwpGCsZ0Ug_J3gkxH4(gQ$q0g){$lU)5;b_8$wLd_-_t1l%?qKDsG30OP=M zC14+(9GC($9HeiA)`wxf;Sjlrupx2kq7A78tK%q6riwg_oMvP)Yw(yqLK)7K*{mHW zr4cbnJVTEx1u-B)l|TaNsN{~Pvk!M4w1np z@zUDxHPPs*==xL7{k%O=@xS4-FGsAQijc*s*esz)h*H*)e0LgrmxXA=eJt(*->J+A z>xEFA>IL(;JuU;3CEzKtNkl{fQj*Y}r;-3(!3BUf>`E(umG2Z1KNX>PY52_oP0GWx z&pfU;?TQ0Z-jPXCp1y^YFCbWGfNvfk0--Os>{PD@+q7zgX@#l+>t1jkL+V2;2{KUMfS6b?>KC^q$i`uKI|>>feZ0{kqak!GLT-Mp1&l`-ctnk+GY1-YN~I&RHExn`d8r z-{6tggTBLgp^dF=OD}Ee+ta`J{^%36DK;^5w#I{hJYk`U`oA# z(2pKiI&RR@u7LtLASyJj3z&yO+W~oZqF@Yu^oPI9lRqS$B^~vN{Aaww#b&a&gD?+F zDzZdKkBe-FOd%nm%HiJ=y@dQq)lK?}vMC)RQc0)>&Ib+tAic;tX>@FK`0x*(Y}xt5 z4T+BvZ}AhlSI-T;dSK*v-Qc;dZBK5g#e^inTwg#(TJe4}`-f!2O4tp|Kp@Bx7D*LQ z^w0d}^mm1bBHLclY%f#snRM~!9HQAuUjnLt7$z(?@`6H;W(Uf6NI^2@= zX3#is9r=7wcUP+J03+BZ1r9J`KgC@>xr8GLxV}UVBwk3g^e3JVS%Qh@H=H@G{>GcALIG)fT%#s2OXSOcdx+Y5^rhu*?hrf4k~BDChB1%J1!-tBq05H3L>VkE zUH&HBkfsHiEhw3IgMn@UG#WN%AkS0HFq!B&vyQGyz9EgCWfjl5a3^lC(G79jKS3^_ z45|qzz%ro_w+go>mknmCjW`Fr^6V1kqc2i|9}Bgs}qgw_H+6HKOZ z!SBL&8sQr0Inrw}%E+|~^M%mviL`gBh_EsU3Yln2x}a5wFd_N0DEZQaHYqaX7^5sq z8UPoV2qM7t8SnGU0p9sWLV6j<^@m%Bq$|(eJ3b~=Xgtz}`t^(Yb!t39IW8A`DUj<) zD=$^2%C*0~m+F+PjB0Y7CDQ|4Y)rbvQ+tAzpddovS_ItZZqv!j&fO!IocpiEx>X~( zciJC*_*`Dgh>%N(pwxqU7%A6Ahy>^k3JWCT0p!a;Cbb28i5wqDz|@fr89$oTgOx#+ z-Y7qK=1d}JTz}x~DN2^$=SPvZvi*OTw{kHAz(v>t%zzLGIzvmpgmBfxxN*V#y4ZdC z6${P|v{2nU5<%puQQhH}5WrK1x*L(Oqs1~5<4H(wGUurJ2Dm37Tsf>ud#Vw*HrWVa zu{wMmXU_10iSERhA$Z`=yYP-d-Fn?;uq{j!Hy1&E^bKVKF&!m#i?D|X?jwa;1{*#ZXZh%%(y-bH5>}E;MY$bH4eW1cZke92K`AAUGPOPm`>~i!4p5oip;##IC7$jn zB6th;e>T-S89ts695x1~`$U)o7$VDqNjDS1rEuj(%XNSkJ#Cx!x6SUF6|~E8_Ke=f zKyPnPN#s%P7`VGV&yiu@UX|&Y)7{_F@{d-%G4Ry+_jT{c?U-u{+>}ir2%gG^O_&lSH!;4 zl8Ez3?c0`gZVA;kA7452#Kx$U!|gm6D7d%4n^@j@=XFhC-}XpV`(3YsuBe*~mx{0v zZqh8dcqUabA5}CH-VpVK<3D8{ctBi_h*BvgB$?tU&92yzdYRZWBRpagj7oNbS_G`G z>d*{?=?I;vet5a#%s~k}3W9UOzfBE8l7fJ3g6n`{rBo9g0@Dug>_n)sW=7#LgMBcZ z8GhuZ(;qzJYueB;xHCVzy8GZGk`rcksljYF@r_@;vEq@g1MRC&l85L}&ENq4qd)h_ zWP6*?7rAT_=6=SrsHqvL-YCYP%(G_cFep=5^ChXiQSvArF0$rH1(u>|h48q=bs3b# zqnI4=H1g%3ff+D(6c>fa6--pf6O2~uP)*3j!kE*VO0x@mh2XZ77hj6`s$x}vQe&}U zfZNZt?c3ZY8^@Xa&%f-vKh)g(`ry#>n`=)<3;Epnn|B>Tk7n``|KdYKzRuudPu2u? zMeEz{di7JYc~5;K(nC4q4%5}>N6}7r94K}Z$CO|MV7(YbO9ERcLmbrI@F zCr7qot5*CXzA}YE!V?CS4=oU0(o)LRrr1O+_mjn5in$-uMJWy};<-alxBmIFori17 z^5(U+Oj+f9!02cBZjJ@1coI*+0{Med6%cLfwdmzw|7DNIKv!Ey`lQ2Iz zM72@2ixG`9!gV2_75Pqu5JRLJ=qe?>93#iFYX5oj(p|mf$FgQEYl$xJthMR)CNdXv zht`a4hmWwmYfERaWX_e<<79qde(KW@T(9bnI7=Dke%TFdH7yo_@|;9Fe?gRE-3%(9 zjq+q$I)r>iJOanS<;k`fi0|}YaWJAO@G&M`$OPrBBt8&IngHJ`ul)6QG*s|+UC0?2 zf|ySx2A<|b)^IThK~Cg|@F(~|fR%jNZxRnl>$mWMPZFDNfL)^a`E!ZImtUF4Yu z=FGa zQZB#;LEuVB0|7xTQGi0Oh__N^qzi0;qzg4Dp-OVKQse-0D1}r#CDVaH0G}ZS2}0P& z=S7XdDjvZsSpWbcIU>a}2IGXiku4?ehM#U-cXy!nSpU-PkTl@6%itqhn-iiL2)Ef9l<} zxboQA+XoMNMQy?LJI9Bl_QQv_EE}&8G6;I`4%E$symn+uU-U7fdgLnOieJ<$lcc0w z%|lfPSJ2Fhn~>1G2>Lr)EEeRk{Y`P-fz7=VVU z1KpUU;BP_7@sFjPZLjTa?cDpy&0Al+tF`l+d3kb=T;uohQ zIc1AH%%sDTS)L=COPn!v-I)(Bz5T_(U}N>n!tmP8gU4?D@xZNxi9Y?<_O`CXxy1WJ zZ|-e3WH{3kmq}OqO5Qkij#7lAYZP~qYiiOv|u$oEWkgc!L_jrvTrft{(&-0^j$PPz6pjt&p@ z7Ay>u_~#U?xyc5OZtJq7k60Y*I>rO2$2#Cm;*B!i&Eg@_rsU_$Bu>UG1&EX3>`QL+vvgTKR?rT>S8Pl;S~8$y5N{q(`AF42;24~A~I(;8K^TTJ5e}r;O zu+7QMM#;y|JoR6q#AhEa_LbmDzxbX+-*J>&^p_}pq%2j(@g(x{V-gXbaPcgwPfN4< z(`{KfzT!zGnlnZ7sMK4NCvv}bMsrvcf`!NzYXs+KhJ<2~$@>q;kPR2Cqi`~SMaua~ z76Q`x#Qf0xr7|6|2-%6rM_D2;oduAm znC%q5rIb@R6hy{hhMhXso}qQF>!(lCJY95dhFwWN4*N=R9zW`w`4q)G)5sTYOV5Cl z%xNEXIPK^z9A4~@ILgSqrP>e+aS7 zEz&VP)Nps_uA6})->69ZY2Wx;TUL3T+X@2rE7CG;{6U6qkRzC%ehrIb`KyqaFiS93 zBa0OvBwq-Rr1zNoS=wYB#X$%J;SDlioZ%6NX22i-qNb5s8Ah~|a+2W3g(E_B!JYw@ zCwoOR!)Q;lmnn`Y!CZ`9Ie*~(;A7VG%@ywGvDl>(8G5;B)E%kyDoPJ7)+VuPI}K-&y#& zKw7Q70vl2YnIMt>ZSI=i2(**1w9Aq4J#W7!^?ivDC1>{YXAF;`4j!zTBS@#%llqw% z(}gcKJDlW>qt8fZ9{!7pWQmG+vd$iTcHY0=Ax_)jY<3)1%@i;;9zXhQ?Y|!o%z{bY zCZicVg71qwg7j6)?;y6|^=9FYHrpK@Iu?I|S5(Z`28gkcv4uW}xP&j-Rm77nX?MUF zg-`mG4@zCtf4)QQirK;^MiQI)60c3KO}w)dP2P9vO{phw?JKXmE-n6YRC+{u?geRF zEGfldp)+|iXkh2_k}^EaY8O6fbjJmsG*U0V=9AX)xKci8WOBnNJq-bh`K0N( zMXF6S?Cnl?qhS58mLAQO)GmSFMGd*#JrUhbF0@AH!qvVdZq-P|1gn#W= z>mf>BQ1!6IGzYcIL&1VPWFW#@SIhS$20wdse#aZHCpNwM>Y0z*JN_UABx~Z6JMZMq z@pFlf5~q2^-o1%e#F(}xdgQR+$=l)e0T2*gAE8gRn9N0%oMk@quY%_c;5j$K##k!C zrkIaIt__>aqMj50PRGl`@NQ6Sr zE+gVgSo{WtA{=D)ce%4ZH}dZB#JnmCXO-B=d;@z<2Xr8KY5+)~tQXmP5>d8&g1x$i`^g!ZI zh687N&>tyU_=pyEq6Iue$k!A~H7BfQ6Ob#Wxd;e8iFh&mCIw>RWC1OEq7(UaI#Q__ zm8u`KC?Fj|_DT+o3>k^(z!ItvnRQBrQ%%#f306-6Dd1z}*oqw1EFwk3jessl6XKh$ z>t8&pX3562Czkd1c6RozS@&FGY%_leB(Q@7{KV!18`dO3D_ZaC_-4Yt6rh^3CaF~p z>iQtlpJWPrn63zrB~3scHtB!?Y2Gq5&JGjv;z&BP`I#&+l3eAAu^d_Ys+AGVz+0-alvds%2M2g5A-Uj;*np zYZhM>i)?I>K5nWi4*H8G-w_S@LnY;iHj>?Rz680U7WiT(v5m>dYIa1V-xOC0BSSGn z$omBT=8ES1OJ)QhM>px%Bp91-%d&+=JleDeSgpFqNS1bh$sO=b0p}ocN*+Kz{J0j1 zpOVYTOggK|IdQF#I!g_Z<8I<>*i$2ER)$4Gl;VgO@srT%3QT7|N$@{D*+>I?@+5O;xM;Ew zYZ;Me-Hy3HIA<4w-%ebPQ9v^ls3(z^j?AygGAVSVpkye3dCjLcCpYr9&(CWO`5+Cub#7AR^Gu)Fn z^J*&4I&K}>Gn7bh2^&btHRl@)+w|S=fdsJL%uS4Z#3cUbgw>hYRE5#WEM_l z6}2czSkiG9H?@Q;7NQse~8drxi0#O4r={8ZX$tpXa_l zFz|Zf-}hr#fU&hdx$59MTeiG&u(wy+UiHW44+dvf=hw~(xBEJ;TfHjU?ysoW+7bVS z)H=%jCswXJk$8J_H1Rg=asTL^(+{+_KX7`_p3^^QZ~wvRJty8U+tYGy^JK2uy=i-< zYe#|iJu%+?-`7WwnZg75HvO}L{xh)_;BzeA01z-TRc4u5TqQ?l^Red-Q_v85Txm-6 z0?pFXdSPUywqjFFr83j5&W6;g&R zw06eywTCvW|H=AT_4=PAZj`Dm>CRw7xam@T;b$NE5?}Dwx=2+!|@q@s0I_A@6T*je%&|jDah$)Q8 zRcuo513~pO$BxO7FUJHAk&k^p?zLe)hPVys%jAI;S=cslcibkj%WWorE!gaoR7Hv2 zA&#{Svykxl;jujj{Vq@AWg)nSzC85&Q}X@Nq?Yv>HX4v0!#cQO7GV4)+bJy8(2_N)7n~7vp^pSx3q-A%@ij<`~Tm^!T)dfV!@3+ z$J*->a&X*Y)5oZXHjHR)R z#EaAtf|!0w6xTLl#TIP{5lHY%Pc9PJ9jcp`7pth1qqFBtZ&;}JH}%a8n%g}KqL$id z#Z0ZAyLF%NW%`Gb>%&k#W4>`g@=Y0Hu|f>~cm}2FA+Qcs5+My8p)ZDcJoH|OS-cVv za4eC5rDD1pqYamp&2Gw`Sy3-V>-Du2vszo4`{o5q9iI7kH)w)&QsnKDBHHI?bEt)i zFG6fp2oaSBRjFlbYYn8BDvaZiLXE*n2soKhfnjEK7D9;pmA02ap8P#x@Rm?*6NrOJ zp7l-9ze1drzaSRstov9}^oKwzKU;(m3u@8AY8t^5pH}O?Ml;HnL3RNxjYq`vQOuP2 zoFJxX3lVde8JyY4wtS7ACI16~dCT1Cg5WvT8o_HW5c~>Hv*_$p2WZDM_8#Zmx|nVs z^hkM%zmSPTY=#XdD*#9Z`q_v=Z9{nyBtyO?sUNTEyuN;Re`h4pxnXw0^_^AH;Otec zq2Pkmjg6}p1hGYb>)7t|r;((22J(c~szY`Lt>>eIFks-j{-JzArFua$ZSJ_E{zS_|fXc?~|7hZVn_{+pzMDL9Bc;nwD;J zXJrEni$DH|<*Nl6EGZxdZ7$X(Adf9PHiG06vW~eU=`uu&6LV>F@JeAWO{*?D@%mHJ z+$T=gNpns;Iht+he4^`kyTvR2>A->Ur=&W3ew#S5X^^*$7xI?ZjwF81UCOHo^4H)` zjtE`PFp11Zdi;VeM;?aU4BpDc&p(Jf45VOa`Sl6)nX=IOQ-Y<#CnlcFRV;T&meK5C52OV23ky?iesl<9eR6S zbwhk{=ZYCl>49U3qQ~G?Z#?+@NMN^rN_MQH?#nUVZY@6pxg_V`*VB43lNn7pzfL3-AaR=Ct)Dp5GF^?r6A`Y~iC@kyJ0GT|cuq5MwQrZoW;aG}gUBMBQ`b4u^ za!SzxT4yFBfE}dJVAwdZZYMP?S2Rqx0g??POF0#Br(}(&NYg+&vC12@^3kW?3vAeQ zeW)&4FfZr{ZHcVg8XKD4+7q_@{`ZuP(s<}@gT-e2@~+MWhV)yV?)6*cpv96uvm=(w zOrd-S^q=v7e$*adE&A7x@ep8_NWgZ;e7Hp9Lx47>4dVP|e|cW;hQyxTZ(e@ls*G9x z#fnVCEc6=_d8sW{Eeo1aN-T3UrXB$3`;S<2;06v?OpF6N!BZb*ZQVe;KYjHiELtEXyvKI3~_PBmB zv+KQVR32v=^^anE1fOkeRNsZ;x7nyJ%x;tJJ^v`|%TalVjT-&~=ibBTEZZob(YAW{ zm*pR`rSf|$0DL;CH=O^%xDd}>&0_MW0N~HCHv9_7sIK??D7GDV|Df&%X!{D_^`EdF z%?SY)WK$anYBU|G5sX8VJWLH_29FW_?Vy6{z-*Wmu@;1*%2(@bkkADOQ+zi63iIbiwsv~Q*T(OPBwp7od3&(as9 ze{B0zMr+2$_D1_*`|liuj{6<|>a;tXoClpRyJooVa($lJWgA(xP)f(;_*I_%Tf?86?H&Df`Lr|olODx}IK*lXWSmg}&8XL4T#3fq_5M}`yo zWpdvDALQ?n`!BGyFfivrM_k7?;irJEMHcl6WCeK`@Bcv2SAU#nBkoy>7Sc}_-S9u$ z`Sl+n`rAKhL^VkLKvEf6J@E&UI?(QGQDg6gw|e2HT_Q@Bqc&?rTb7_U)EX~pw+Y`j z;4Y#@Q?jP?15E4j6HC{k-9!PR%Y1Av-n|ax<)UZNndg^_KE>YG{%*xF@q!Lqp~tV@ z7{Lc-tY=5Rev^(q&Ook;1Nj~nLm!jVnVy%YD&?lE;1=1@((QhDU<{yylxd_tZo2&s`ry$teUaKkzu%(R@#8O3N`o_C(23pHXk LfVQ(p$qfB}4xdc` diff --git a/pygraz_website/static/fonts/PTC55F-webfont.svg b/pygraz_website/static/fonts/PTC55F-webfont.svg deleted file mode 100755 index 7b99874..0000000 --- a/pygraz_website/static/fonts/PTC55F-webfont.svg +++ /dev/null @@ -1,154 +0,0 @@ - - - - -This is a custom SVG webfont generated by Font Squirrel. -Copyright : Copyright 2009 ParaType Ltd All rights reserved -Designer : AKorolkova OUmpeleva VYefimov -Foundry : ParaType Ltd -Foundry URL : httpwwwparatypecom - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pygraz_website/static/fonts/PTC55F-webfont.ttf b/pygraz_website/static/fonts/PTC55F-webfont.ttf deleted file mode 100755 index 15c8a0c86bc7549d7189b8817325204e5f136d53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27500 zcmc(IePC48nfEz&?tEr4nU72+-h#|(9WXUPGYoF6u(7Ht*#w>dT)BV6_TSI-Lz z8PnNu&&Su_aF=g+neF?Rj8@%!|ZIALFHyavZ7aXe||+M91}{)gBzIQ|gN zo3>{C^-E^F??291Unbt4yLQQ~H}dDGEGzIn=3TdB?efyk=Pto<8-D-gjq5kw+-m*d zj~TmRGVYgdylMH3*S_?#&5W%kdDP=W(qb+?N=@Q^XsJRmuy_lY}eli*+L4qlj=Ypi5ZwJ zd6Xr#GAl;;>sTv}ET};{JA|t^^RrrU57lHPj_C~5Ok#J4qpiuKL)c1efPEu*Jcg}- zr7S0MoHs-yOZlb@oIqh>$3h$S)fh8E=+y26;e!k(`)f&dUL!5-ePa5H|)L6 zd(>C_9{W-j_3+~QgW~#sx^zAB+P&G{{I6WkFJ8R(!NsR9K6UZr#S<5gUwq_Zb)sr~ z&wFd%TlwDd_pX2My7zkC>v*r^-8bJ|<{i?LX8m9Oaf8+nbQ>pqqR+%XJW(g>4MvmM zl4eb}W!N1~SEf75lbw^BmtRm=i&AqwY}FZUNZ4*e`EjpWo#>BEBpTO zhSUYiQ#%v4|FBdX4SZwEHwXV->~3f5+dC#+a%q1R?X5{3Ci;>se}FyCzQ=xnmQ>k~ z*m3p*`w1ICTffZ4*rV*9(Q4mePqU5epBPivRE4>&RHn3bDGP2{q%i;NY{d}js$C?` z4KDKji^5&y*<}i!>it*68Y)wysaLjl&GRqvl_|QZH)MO2`nE2gQopE7k*CtFKELm_ zu6Odr7Uki(uJOFzEz0xz6n&^mX}V>R_+il^JWoG0y{EfOF-%p9`M2?Q@3(t;@)U;0 z7^kX}#HspAr%Y3w4sUh1OfgUO4$@1W#q+(2uH*{8SCLB>D6Fk(=klFPytFeT&*xi| zw^JOoYe)1#i&i>&p52F+q)qkyFHs%qRBu=@hI+cZ-ueEfC9Aw$-epU*N6>ZY^k%%; zyVE;=XVVh@PVY{?c%5Hi?OjSeu0;LlwMzYRI>0?P@uu3-**;&M_w-JP0XJQNvVARC zHk1#SWlZ&ZPbXjQ_jX-*O`cETi@J8ALRa{A`n@}^*y&$FC86rjHArBkwZ-C_M+q>e-%jRC+5a(WwjpDst$yuH+N{T1Crz$uL zx!|iz(@zOjMuO$gv0MgC)$fCi(y4qRsLdQ z0FR2|Vvjq9#{{ZM1D79U%q-$~Bi<3qq*wTh4IbP~XJQ6F9#q5WeQx}SH~d8@J(tSh z`CDb6+l_uv20W}XvxZ-~N0d7g`!8R za8+?20tu05Aj(*v(&(@1(^q}*iX2RANNiZa?@6p#!FTiBD-x^t-V08L$?Eo4JvnxZ z$*^j6wk@YI!zLSKtEHgCYB9^!v;uCmrWcyhERrneIIQ?d$~0xjZj(ipCArIKGs+g5 zY_jlNQ@V#+3>JgQB%7?6+>nL?b6YSNwCAMf7Zl`AmSvO4pf?$vPK$mXUYwbgd~w8N zp~vTOr`4dhN^X-)&eWdYBpFP4NwV70C45_r;xea=PN5j-vdhHNs2r{J9(#`6o-LX1 z9D~K;wx>x_i9<3K@GOg2k}L%%q}(H?*`$CCb;>uS%N{HD==XimC;u@qm!DXXs7uuL z@y8R5ef$~z^p{6+EH=B@ih6sj*1Ec&NzRaSoN}5$w#j&;LAJ{#S<19?i%Cw)%H*gH z%)zc^aWiM35uMEJawwjzV4yD(TOS==98i z3naU$M_CLwV-#mpGY_$86?nNWg3qbPoA*9GUzYh^QuYLmuo8>1ez{Fw!tz)VzY2q9 zcsSFOoj1u7QMr6>SaReSO!8F58MlOn>sgLD6nAIkR#sLja(Gy0FD#-9^|;VrwxrXA zdYLZN8*!m2&58@T;ti`l9#W>~9oB;%{eCQWZ8!;S!vjD+lSNL zR$OKm-wyGeN#AshM_hxuvc+9^W?t$!`Kjj=&^5z_sVj@=A7lv?Mdw6vl7qJ2fGP{x6x-$g2o*kJ9IH3&o=b25;m1ZxtYcN&|t+IQDym@ zQU=ja4=a|_3aeC0p{}KxdZZUuR*pn9jR|^BJ4UiKUCHpGRik!w8dRtNY8}(s?4yR~ z-lAram0-C|$vvqWjpvofNqJarjJQI_Km6JAx%fG4*g%K42+|Ga(hpBOpDljKp+m)J zAFdKt3`c1b$5|SG{RW%ESslmC*eF%itlpx}4n_^eoZLv&W!dsaCZ2(Cxms#LH{;c6 z!8G)|Oc(V$*^g5UJ#RKIN~<^M{}m= zC05Y5czf@GXR;m}k$t&GGJS?bsA&H6+j<^;J^w^p4#-vQ%Y*!&Wz7YHb~i>}nPd4Lh>RaZMdg)P>b@ zTslv*uTlzGdNRvTF*Vaueu}H^EZWat<@9o{*9>DfOyMEQuFZReA z*01c{JkZl~Vb@nK=uQ4W{fINPOF!Br%I33c*g6)kpnepLs5SCAF%qa(%jdY#L8E~> z9U`1=S4|LaGj^NpYAbe~km%RwlnFYhuU1+eBk2`2^W2j>)r!-p)I(r375Hg#wQ{v% zl$o6Vsq?PHkJBnhB(ZYnVM=laBNVny7xUP3#zLJ?U7L=C83VkFREn#^l1=C^>93G0 ztG!`IOSGk=ZA*9W)>hx054OIxHYZXRwC%B0)YRpbHP=@cZLHooKe%}FJzc9#?CyA` zdhyog=nXwrXKNGR)_&L4)xqYwIw}^ogv*+{%Q_xw+w{8? zISV?wf-U~u#a%^#SkPy?y`ZHMu)JlW;ICHaXCb|h% zvcv<@@Boi?7fBP6b3;}Too*=5efO$OU7MN;i(C5Jx2(LgJHY?2;rxX^tnBK0>%DhZ zF8%cfZ+2a~^pihb!1E1>TK+}q`Dp?H;Q9K~s{Qiw>tI!2F=Av)Y?9H?y{Rd`c)`Z@ z!M^Ww1?Xjo`&Pd7&ad#`_s?|qF8$=cE^OTJ#g~78W6W8PZb&+=f0-5VSxj+*iY5K7MN2ul|b+v|_Li8x5H-+0!q)J6oK=5NXZ9IQVDR zxab;1Zy(OmyT5XAHeDRY_hpl=SgYfB>Vy-n>NxI%nP($Lt1By8Sa&{QUzi#@b2x`} z>CSxg4W{x5M~cCr$|hlC;QxeqtccI%o(vv~zyT=Y#xT#|f!W;Hvtd`?tPRzHP;7n8 ziu=~AyrVC&W@aQ1>#ytGDlglbzj$eV_vTGKb&HqfZ!PHSsPEZ2&{N;jRe<*CVsFSE z`3~U0c0xjmQGg&te+mCs0BbvW)7+8 znr23Q0D(TY&*67;@gaqOJ8`Qb^&I8f69Y#Rn>ol*(vjZ87~jL*1R{;GI80M$#4IzX ztbtM8=@F}*1u#hHtav=r8Sr@EPX_D>8*H$WcszAHV1O^Dp-<>&Z)=+r>s&aac~SU^ zuFxBKH_x(H&xtlJ?riJtsIcOl+xVZPL(&l-iejoaAwT+XfIO9PU}8Np$)QxgjQZT$ zBp?5iqELBP0YeY6bC6l|&k^(lG%W=6RUn-d%S4pCszt-c3scyb@r&`q`?}5OlRDOr zM8vu<6^u-=1cM7>fq_csx{i^qGaczVmuO$&6NWL^6eEVCR$chM3$MOm7@BwfX5ioM ziyz4=Vf)ir0c+H1pt@l8b?E+T9tlD8MAe2CwuzyX05)|%H4E4!3HtL~Bz|oOv@@UA z>A-h!IZxVbrvo;_Uo3TV12|dR7l}V!WJAwgRS~#YxCD520VL%lNu`mb!1&! z#bQ%*c13?u%>}B@If;W|S*M5f!1rZi!A5d&!D=Q=#N~Z55lk(BRfzMv{OamzCC#DQ z+}L7_&4BJlqOm$z8xoCyIxhS#8_$s3F`s+;E%WZZYh&}KfzAWf9UX6Med3MI9bfy& zx;^}z1smrbe(cG|+81w`6W-By)$@l|zWwH^u`W~AQLWyOLq|$5ew9$Y31bt$j=QMd zPWjwOj@9o<55bp#2uj0>`LtRH5ts`}1m<*e2v%JU2sJ$(>3Z{Jl7g(*fTlA}s#&J< ziu)uRwq*c#;g83)9SwJxffzC`BU{DlP5sw*t z=%w7~P7YJ>Kp(G)-qF>vr8_cm_%NTj>br?{-Q>jK_SUYw>*_l1d3M9H9~T|T@dX$3 z)eUWHM+SXC898_uh5KohIqkM-q3+b?XlH^~X2YQRGTuTcCsO=zE2%0(@c| z{UD@Hf)3Xr(%RoT`-Uq+_wHSLf04}3J;&R*binz5eZ#>Q`tqW|?3(ramv$fC+S0V` zeKUu4_15HNpv|^G&!T8E6Gr8@9<_yLUE)8`WLzbd=RKmj6$o>NBrn4TXdu21J6p6uiq|z^vJ9) z4$6C%xyir23o@^O%>BYMSj^%@B=sPqPV|sEm$ao>hkxvP~j$6q*^l0k-< z*Tqu)5jmQ%=^(smv^A`qJ@DA(jiXx{`(I6bav->MY)`MNXm(4_tnR~uS3G-U``UZ` za>f!TAe@PHsM%_`zq}GWOY)-23D@Us-P2%vBHe@3^z6BF7nQ+}1by zeo@z#fqCAM?Z7-9R{dwF2dJJ*3K&GLWK$&-Yh{u+RGg_jHAeu#iO9z>fh&BO7{ZC4 z6dKa?CMiR*2MTcFM<{~>R_*J5h7^^&@Q6EE24EM%X?inYqYaKkb|n}!!gIioiY_c* zjLv}mZ+4*nV|a1Hr2Y43Qa7Qf3L(qCYZb_HQOKL3H@^xo<)>2x=d7FUmow%2(61LV zMFNyFhZWuFWKR|_P6B{K&jo-Z&amjF7aKI(AlVg8fI*SbvAK+nExtvk7DI%G8}Wa) zuDf&m^Rbtu>}#aHR{r5Vi8ov3B;MK$nRW4_vPbtAdbSa$~wxe$ruplC(@c{ZJu}j2r3z#eVdczR@# z;JSzHlL}239QCXMdIEa}=bA=wHKZBbDT!ZvS1YE=4)~&`o6jq0Cx@-+M8dl4!X4+sQuwtcczq8 z-x#fl_6#;J-m$uS*+5s{JvViKy|1zRrdt1(kEPTWy7NS$!L(a{hPAM35pjmuSLXoc zqdQr@7Gx<9EHaA9ln}agj;yvJ*wYj~(Jy!4;?-T=4#hkcSdw z2b#8yZaDZ~M>@B>n|O63o_P1=wM7N{g8AS0ly@&(aAWm#x76{hfUo!NV`xWY=IC>P zUybniPH0|CTqheNk%)k?3XhB!kS_xyYmN}ELbv9M4UrzLwQ5?={+?P(VSpOxcD=#? z4AahI7m)S*@n?^p{gwDxE?1;-baPc_1r$MK#$r9MAJ$uBjSDvz(-CGc(Koo-VKbfA zG1ZceK2Z;sTuSA1;Kb!WC;)s~Vi*agMR)b_^y@l*G`!Jj-l zLyqZ>ebLT0C3Z-D{@u6VBRn&D@l*MT{wVA~Ijcu@Q#^-8X+K73nea?4M(J>Qj*L+{ zOa^g|P+<5nO1M%fw5yXr1!U@3DNI79T`^PaV1{-$BRpajdujuedj`7jh@6pQ^9%j- z=b*rV$K?+AGD_H~+A`3EYaNQYT9JvvN2ttksV7TDw??fA)KdrmD)do;TSI!N(Qg>s zjiVjE-r9BizNP-=buA6IU02KS0d5^HKX8a#Z8Y z44reCzXlpkz5L#K> zP9;XvfJ$s2$EQT>D^sA|A<@ooZ7AsGMI)za<)4bS^kxAZ*bM{lNsbU*9jt1BE-xz+JyGOs?@zcb+ulQ>=)!r~_nKfsob>GhiBNewi zx3|_eXSz+&?>87^Y3<3xA0OPE_>b5AUXmrlF@(3J#Rpzm+w;`-R-jcN|55k@e)t1v z;OI5(!3@2n5Ggt1BYG3#&|5K(gOvk0l%nJWU1tVer&uaAZZ63@X=EG`az6K{?)vdn zQqTAy>41KpnrKlHA+THIJJNe|@Ln@|jCk+mcbbqnhJ)A{~1lI#$ZQ#p1<(UB^ap^NN9^M{fhLF33v%|@dkd>79y zAm24R7alhHt(r{^Ynr~86tKXdnn9#OH;d7t1=VUE5VmRudj&0}Uisf^sG|gIkr+9k zrCY}?d}C<1ref8po=5NMZW(%PZR0n>iMyrjlD__dnmreOwn`d%f#;627kZ9`tGEC1 zdv~4QH77TRuPWIzK2#9OcXa)f=OpE<4~X^!&j-09WT^Rj6am*+NYWIW7oMNiz##n< zsZvQ3u^6zgsu2K1<605zb`aa@$M@)%bY^U9JgDC{{(!Xni#}=V_!d0>4uI%`;(ZIX z_oXO!GlJOEL1c}QH=={!eUeb9xLFdU4hUXoQ(O{+h9u(%G1la(qj)XAqu&v6-*M=W zJWRJZla8asS2b4K-a+rv40(@Ht-%VP%~mo3EWLU;9{ zv?fzaMD%`@>m!IUWC*1tW)pG*xd|?noRvHn_%yQa7Cm7^)vgVF6}!%SLjx+nu<}X7 z4HP4gxNIaOPTvBb=!q0Hfrw_{L$Rw9oHR8^4C565x{v$OCcTpU@%V)$8>H$)V*HI| zXq+_#(x&nI=e3V7lXi{wU+Q~{QGPuOC)+3~E9&-~A|>eOg6kBWoVZS6X+&3}&W5Ic zN5AjO+!0L{h8jG}jr?9s7UtxLZ-gYYFcMf2q!18_7cBtLOCHEehu{8@7}F&T`MQ&; z!**V=pM=Y0cVKAdfaGFFtG=7+>_j*kY>=v_fzIrV8?EW+cNn_yPl>=OZ0SDe2~wi2M$PQzUb5K|LBGB?b6^g z?_WSRCE6HvJ_J0Ifo$GOZA`kPNT`=xhzMCKN`_rEBNWPyzuYM5WkJ2tP7+el z!`lE1(WPniLO2P3XjV0YsztR>&Ezf0hy^p%NGIh~`=TxZ>T+5wHcD^xTXLS-I364@ z0d8IBec}n-onN%;esJp4g$?At!q(}x!PdFJt{~S%@C9H{HNL<{CUugqY?lCsnh))S zM$*Vyf|}%K;_VcaW~vVe;}SO@M%6+>xrmXXlYEtf-_&*Zv-=MI$HBI)BftOdp+9`T z?ajyy53PUUEWS59cUBrxc;=JK);yE=^stin?Gww_f`>ocKlVU3ck+^ruk7zhd<@;h z_=<61pBP^!6GMfTAPyU&Q3*yPTOK16WdnT7g#8GLRv_)lsw4%YF*b>prl2NXM8$9| z)kKW3gp0KP9+`lPv~f0&!wV%O%xR!V;GoWzm#+M!vSG!;Z}nSqqxli5C0ym1v|x9C zbJO}Ajj@#l`d!Y9lBLIXY<={m>0IJ^Y5c5oN|yAVhFh*{UsdaoO~8hm68(lyvOTKV zfBlsfA;+c^sXn37m?@-8iHuarY#vNS1T~!bx7(^l)3$$K@YJJ1+al1m>EP(5*Z_13+NBgkn+CbI^Q`JdVy#%{`V@iqqeT+ z_>(WM3onmGS4TITdH$#Ek&6F`o_#rD4ON6JR>fusMM9Lamejkm(7P-|BOYLJ7xYeL zPIxbb>Qpb3&+Ty;FjxYfBAY}+Bw!^8-FYer;1yf~c*Cx=0(kjOVewNDikFAqD$uMv zT>H$Eiqoz*VC5Z|Waa5wSos2ig$8i*01*g%fwEJ*9&FR95vCPG6;$^Uc?_!$vygK+ zLLmTR=!R9R!+lTQ)kSF?tN7O6COTg|vS6?$x_{5i!s<$!ewQiTBnNx%Ti1E}s%B^N z_^VP+!T6Al70q68#riEk>tz3yCV9sYdyd6}B#le489{4I4J-E3gou;^JMlXzs9Lp5 z)5+iPXMdvAHQi1Yu*iO1@tuS(mt-=E?8Dw7AG8qPm$h&rlY#X5r2Y|;ap_2t5g->t zp_m=RvMV^0Ng2SFg86fEBa1dn8 zb1z-m7yMl~vYxX~cYM@P9~rxC*X`oOf?dxI9{Ei)o;N)=);X(VY4hys z9~eCLM$mUOFSMz(ZRwRweS7;C?_W170{Kxq=QzeiBW8|>c;ZBo9Z?&RX9!552d2~; z2>s}RrQ-%Y?HVY61EFHXbpi8GXgeV9NfeBMM}OqYJozKiSsJ50mH&iyxY$e9X|T~r&@MB zd2`~E#M}Io?zIbpuN@kBK{t4zYx`4MYcU~-FxM9tBdvJ9nf+ZdVkP_rW*`t`35%o( z4D`?b>g>0Ki6Y-#(tLZ4Y&UrCX5)Ds=t_+C@XgKC!e|8pA#jNGw3?2} zC&9;NO!rvV&b#D0dmd~yj#5^#Nq97w#FXz5S95V8alFKj}!dVl}9 z?m_LFM)fz}x^SJ4HL@0%p5itcd`5Cqw4`OE*p;}>XcF}VE|E?X51oqvgb~&R*I0sm zG(QlWl2$na?+Pbq#K$#i60=0U{MU!6zQ?ynQsJn>oL;ri;tLFrBDsYGzoCVpmo;dl=Jd~h&9g9HcOXYeD*S4M=^0zDH- zrgEY0!g(6un&>&wYthSy+J*Z<4NT&!C? zqIaD2I`9ZG=g{*g;`|WITYl9Ar{kpqI$;fdxz*>5%cGSv`0e ziQxy~&-U;u}Cu!nksHm-bX8aBZ>@ z!ee##I?kQrhZEh2F+=dspLXLNgSrj6-@~^sQQTYv`O!9%3B+`i*e${yBDjwfZW(F> z`<)8OzV!avS7}X#P>24c9{o!A76{RDR7a4Ot(R*9e;+~?%199T+<(x=+Hfg10CXT6vaZ7wQ5r+N3;vY++m-VCO$uadJM?B z`KS74kVhY+n9YcUNr427^q10`kY7*kQL-dNNxGsDmw({>yVvXYOiR2%@0D23#oy~L z$jykrH&7->8Cmd>h#H04k}CmuP%?G~GTYl=YClb!P5kTBeSsI=YQJMeO|ZF#j2Lw4;s?5S<#x<91#Zfwk~>gx z9Tgh+FI*`Qg(et-oNVA{q)<~38#yA(m`UxWOKQBGr7)hCg8G*^U}=Dx{4g7;7zP(z5B+duy04Cs{NkVAXk)42Bji= zgj+RFE}lt6%tsN;gf~PvLHwuO0}q7j5m73|gd|fOrP&o*a$F|$%m|Ozgrbt4pcVn^ zt2$HzVLC!*svj(OoH;0gM?r8-@Y_@|Bq<2kCbSMHR!UXTAu#O#&rXCIYi1OlFxUsf znc+uoJ^SIazNU>GgS+y>Yq}3VDmmeHmm17=6W{dZn=2pfI@G=zXYvposu>*MfAHr% zm8@?Q+9H=t!raez7F9JP)f&axGsaz zcodT(o<>{_DwqL>M{!YzT){+zJfUdC4%LKgEc7|8sx-U6R|suOvG`KVR~4%Ylp2c- z1KfV0?ZB2c**MPRfBJdn{!nxC8-qhHY^gmZE#!0OZ`pkWEt<(o{ELqa`8tD-KUEXl z9j$M>=e5tw=DqceNDt+(J4{!jA4NUEI8f{+jw!(i#ze^a5x0;L*4XGg&Wji`boSyqVR(GVU@xX<(I;1E<2NPX#i`<5uJ(br?x*dcxP^SVBvug$&SXE>dX7`-(G*!SMXzNuG{LrVq;rN zwBbu$F!Jn{KFMx#yo@#iu#nfH@8zcA6iT|rV`~O2ld6p7fk8uB5E(Sgf}*5M!u)6u z)kfJaMpV)W>Ow#(;!cGTL!=w%DrLPKBPX(I|7pw8-M!@}vSux7iLU6ZwdwaIG8c4* z){gD~N7&xAwKG^U=i2IVaz8LX^%)qh*YwAnr3`bw>;|@m7K_07oJ2c+QJi0`ou7^K z$+~n1`;2%5j)BXQbup0M>HmyiL{-2sCMjfs@>Vh*2qjH`@0Hj7@*gx*@ZVC%8R&wT zPbNB^Mj~st7=j=YIU@K3KLoIfFZ)&EVQIrwKJaN`%gyjh6hD7HvH0q16M6iD1m$#( zUHpJzI>?g&-!5221a$@RuBHM=$$5SPzKCRM1F`Oww0sG|xEfI1LGh+KZIAmsvj z5CpE2G!PKf5(Oyaig+t!M!KLDNV-si5{e{OD@6_{hf+wzQ!*Xs1mFzONf5$DJ}*iP zRq+UA$pQcn$q^})F&HQ8jchG(H~e_p`g;SlC;FG}fW2{5bj|M{DtO#c(bcr}u0lDo zd%?2a^}XxM)<6E8@x9Wj_DyYpfr0TBskL)kS7>wZxS0E#)OXZ33o~al9U*;B)s}{H zu6RT}K|!VJ2^uP;^AxYjN>r{2 z?i@Vq6{UsN?;0PH+K(RHx@^2g*dUC9ccE-9WqfQJ%&@@|yZjq>(Q zC@+50Ouc49iY}L25J2moU%m> zGmT-%EYFcGCC-?-{@h1b-ucpCu(5h(VR&8V;S;z2aNzdBM4x_aM_X6oLgIs=xAwIg zGMwp&tEB6FC2yWN_Syh4IK?>7hjCy5;$4Ld-kxZKEc8GN)kzEn03}>05)I)%LpX#> zs^o}C6-1S*X%5l{#8NOXjcNdrF+XMPlSqT`t;d0Rm9X%aV3dQjWq_CP{MuVrbrk$e z$_n3ob0T)Cuz5rKz>dP+?;eJ4&vUph-RZG@(JN&%wMZ4+dv2&17?4cCQ`9CxzjYS5 z1=-Hcntp3zE&^!+pn~ETiO%T9$oEV(gy^|WP5Ml=L7l10-0@YVPEmWBMu!J`3l;`S z{BsJ{-fDwJw{=<4M=Xx@9peF%V?FRD=|&mvX7Lb>ro?k*k|tx80?f&9b|}*Xr=~ot zI79|InGmo@!w%16%=|-el)S^q(C@J3>Hluw(;^q$hR`3epFViiC0bHiHl_kHxFK5d z+HclByM?T_Udgs&2B-~4QOP=a{FCvgKg8)Y+&*lzfovI0r|;wEzW*%pk8mCnY;$t6 zapsd}pZ-sA#%CWc_LbmDzxbX+-*KF|%$F#Bq%2j(@g!pTF^LFIxcn=tPfN4<(`{Kf zzT!zG8kwRoD)rXn54m6YMI$THTxYvIwJ z(pY`P8Bwih*>p_pKr3Uk6)4YGIh^6*)X>N;%@QClmFbX0$WBZ?$`XO;EPy=4Y^V4w zrJRCL5E+LVc4}OEhSs>QA3sC$bkVpOb|w8J{42$I^0;&6(-iYeBQD&Qo&l1~X&-ht z?Px9>UT%;$&Jn$(+7JunPymOM+9OHBz=w{;$Q9R!TP=yKH0r1rJ;CQDPRwbGbW9I5 z+}pYPHsHuND-wS^F#h(|)gI^eg1~-7TBh|s*zk>V1oP9EvpAN&3W*7`1amd9SOG%v zh4DzT$HZr8lXVmaArOQ&$boT&M;w|1g8+z{Mzk`VXeZ?)fyV_Ap}OGD0LzoVqPbzT zr}@hiN0i_$Mz5Veus`^?HGNBkJ9^@d-aD3r`D4<+xPmb;ylaK@#DzrbLk;nsjb&>o z=FBdhlbca?6Yw;*t@(OH7 zA!LF?{&%=*ek0IM!qP5B#`nJSzSQ?6LX@1@FP<|zhBA1tW{wb@Vo#3G%$P2?*z9mp zJB~jqoqOaj3X&xX;>kLH{JDAmc9;0s4zk&CQZ-Y+*m&~zbG83=NGJ;?d7F%8=m@?q z>j=_UF~5VI+e2!OE{jyaE3?)bT}kt zI$feCCX0}U-aDK@w|#|~#yO3do;X9(0y8TC=~lB*qN6S88OavmUpdxVh>{mnJ$x~Z zpmupESdfPdM6h+W{6J#x_pisb0chwr6O#K`6TSxu*pp9 zJ=T24avM-(d|y^NOg1u7)o@XAVilGUNbM&Ll*Slk(5Rs5w0TA%6oPsg5nsaMH*gd| zklEkk&idTQdnXeIuA02KzoospsHhN7DC~ybb-ntUbofH#>E64$T;I32ql>}LQoloT zh7MC!SQ=|f`T^u_VC?`ga8piEirucb^~`dr;w5$)3Bdnjc6+Jh+CAQ@YaRd1ccdc+ zrJ+>^4vueJc0en`X7Jmu>h}Xpu7>@g_%NpF!CKN(wPg0YfWSqkDSe7U#29R{if9r8K8!%I8^j~Q8VDMxV=3)$MJYyCHNA$ru|yDjaAb6H zY_r4(nE$HM&7D1~*NkoKUtC+WbjIurW6L)7@ICuGy7@axzjqlXfIG#onLgZ41asJs8s!sMFEW=ky)o?IMp<5G{Ndg5Cu3^j;+XH%_31m+z9AGG$FqE#{R{#YL;wTcWPOG zZ)a!k+V#&T#!pso)#{VAq^!*oS} zENKGrut^6DNb{Dda(1|wmwVE=Ezf3&p5!W5jOEDESLIA78sI_Z`QsnwJoApQSh9Us zFQZ!xV`dFH7jpR>E{yuaPWr~`E)(KiAnfD#5seQ@j1B9N7(@nyKT6Bd;j}AhPBb*2 zW&*maRz$yvYSO40G1*LWQzwvSSfnOg5A-Uj%~4;<%_S2MK-lapEOk! z2mM8p?}~=}p^|b$8_93FSc2S83%J-xY*R9_njI18H^r60$xsXtVxOSjT+!ISWJUmT zbd$s;!PtCTmMt{m(WX7XYt=a~_90^6N7XwGKvO6&qqrw@r)2zSH{9rXx30{4~FDWozPN$@2yG=A3*& zF7iB(lPzC(LoUl3@`WugJZ<{=UC(W5+_w6v44rS1=m*^x&lVt8XByj=v@Mvet&~^B z-K5v>r$*AO42y;+#SzitC!y9An9hEh;D3CwkvjO~N#@XS(PSgmG9qT(j=4bi%`Q5> zowOXifMzOCOCm2FnO~D>?qG4r)H1=r(JVT3Y8eE8oYBeEYCc91)t-Z6Oe>^71eOJ( zWbM*`KN^AdPb3vZ90ITqW+Bs%!D(`Cx7^g%P?&B1%{_S~jRVKl?0B`IE_`fo>m3zE zyf^WCfaPHOHfhFDsSE^s^>x7?L~rX@cK;2rvVvnd;jMjbgR_1R=&Y#yW@t`Y!BO;) zi+_TQUWTp6L6B1999)ipj<_-%4AQYiMqFBwr>$}%D@U9&p~bax76=W~I}ifA94njzK+Q zf+VM4{44;Uc{p1b!#tFX9KAm@t!|Fch?#Rx{5q`S;~2GM7EWdrwK%PWoXRw-CB}ZoSvF8s{&=7lEX-c&M&C=6aVPvMZVpC0} zGSjZkhSjRjPQ=K^nXdUb6_;8GH>&eB6?|#e+pm%e%1R6nYQ{-fo$djIik@Uhv5UeSOE6EJJri?MGjja;sa2v;8=#YqS~6MT!Q(6;90XOYTothXZ-tlp8?l z-CExI#7T1l3ur75K{9CR(ll zN9GzgV4mk6X+;y%lkPEu{s;HyOD^5Ry5${wnV}JJh5*@E>dQ#HNG&0V>9-_tZ6j7} z(Yg?U1kd#3B7xnZx_NoAids23d*1Yhg?fKe-`t?N-LoKSsf||5)Y`dQ_bFede>k~5 z47D@n8y6(slpz)?MCXrZP^umR>rf>T($Eq5VwlH6?}eGgD-i+55*b)3rn@oPa8=pt zrtFy&^-{E6Ut2M&wWYalUcl7hnU8lvCRis$-XSTXettHGYN+@kq*jG6QF$0DwQOyz zf)rDQb39V0DOd>sCo>8#%&g8r7?HnH_Y&BX|4taZB~;r4;b4+yeN*(W2&d&QgoQHe zK9Lmt5y;BV7NN&NTC}j5CNRaPmHMyAjPhlWT|i6YkuZG}Gi5#}gemGm!W?D>XLhnK zUy*0Y|3SdKW$tt#@SJK*;5C;7evPMDG1v}5XfPw;MCOm_g|NO?-XkcmTTh7Bh# z07wPnvk@n?4dqFY4f%?texj=Lruy0aosmfA#@P)wbyi7(vsbr&nUWcis}uM4q?QDdrlltAO5xOAYGQmWIZrpWC3)G97kn5Pxr(jT z)^k%4bk-a{4*)Xb6?Q;CWbaVuJWx4eF^dz0+VUm&(2ZzVkx#3B5a!c?cl=0EQq!s^ z2r;DsK&QM~VGgCNTJ=yc8bKAi1Ni|EcML1;N>#M(BPBpz3Zol+M!lgx%Jh^NeNKHU zMPQQ778;PG!=XF#ZaMVwjr~VzW04)#FBn?a;gL23F&#~k!oh^KllOPu84WkSa{U*H zpN07+_uE}1lU?q6hn^X%@ns$IWS4Yo?YURV%$!`}bV&Cn4)b8aeUZQgo+kQktMr(0 z09e?FnV)0HOg9UXGDY37FiUcEPg)@Ei@w7De$+LCRoHI|2W?MR+ z>^j+Q@ydTZbZGo(sSclCCys3%+u8nD~<;VytJFMCPM${L)yC zJPf%Rx|Pe;Yk3$*!O-&W(^IrG$a^g(Lqz*8Cu2A(CuCqCo+6T&5PuYbJ2$Pfm<}V2 z(5`ARldh#xdIn;>$f_4!CZ%VPxzUosDLVr-rccF*Gp`N3Gq1WKzPNMc45#$qiA2%k zpw$}>e>W1?!|y3Ot(kN&pv8Pboafc%YPa1LQcCVp&&c1f@RF?3SET)PUBR$p~NvDKzLd zPORHW70VSB6Er}wV&o~OBJPx|5fy0~s3%r=qgp=p%=>|jn{Nu$MGNKyJ)y0U_1j`Y z(_4GOw%`7ivQZk3+-tDdj9=ch8 z9iPYX3E*=GpDoGHUD&Rb!t7-!hP=pixE{};t?pk~i+Le?LO+?=^Y{uPo@UGK$FY&-D&LEZOI_m#lwKVm(Y**hZFumNlb7z3xKmW;|FzjY~ z=pK3w%3w3T!dhXAn0^xKu#{DpdhppsddyF2|4D^Xmu@;1_cuM9TBuZ&(} zxA9iv5#ujS(@g73ADeG9zhs$eIb`{_v~Q&S!CGbgj`io(-={A~|HSr-jMj`#?2Y!L z_TM-P9s3>s;ui2R@!`n*8(0p9ZbLS;2LGJbe z*I}RfW*_#rY{owIJ8hpMQz3O;g1`2yQ3S%TGT>5947yAe;h0dHT2)hw6e-TinHy=fDU zmZFCA%gz6XJH21Iw^O`zWAeFFi*iwqD)F4u`^&!a{tndp22rlmTfHd75^-h)p14jt zbqPvCweg~KoAG@!?jmV4B}+>6+kjf!fI8fSUq~+VvAulvdYms8EsMsyxI(lk_P+9W zJB~>gbkGVt{?!{J^uUbu?C4*=Nk4V8EEI3tOox|P%Zv7o!P7& z?b-ktHG&UnLLHhh?kr$eqTLr_t%j>0%c~*xYtW`&L(a_KA=`5itjE_`57wUPW!JIA zYzc(_(a|=)7R-TTf!ZMI3?BGtY4#SwW`Y19K zAHf{xpKuq?Yl8Hj>;{ zCAZP!c6xG~x_?IUxH`F=qirja&#kDi^xd$c|EA^3mTX+9{Z!ecZKF-{y#AZk)4{xC zIhq=@a$qaUfvqS9wpENh#xHJH_#Ny@#njfNa(?F`wTb@y7R8Q#{3Wv;JKtPXfPZYI Wrwikrcb=jPHDWe^wzEjd4E=Ba2rz{J diff --git a/pygraz_website/static/fonts/PTC55F-webfont.woff b/pygraz_website/static/fonts/PTC55F-webfont.woff deleted file mode 100755 index ebbaee2c0eabf59e815c3bb07bf53310582006ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18252 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 diff --git a/pygraz_website/static/fonts/PTC75F-webfont.svg b/pygraz_website/static/fonts/PTC75F-webfont.svg deleted file mode 100755 index 078c5c3..0000000 --- a/pygraz_website/static/fonts/PTC75F-webfont.svg +++ /dev/null @@ -1,154 +0,0 @@ - - - - -This is a custom SVG webfont generated by Font Squirrel. -Copyright : Copyright 2009 ParaType Ltd All rights reserved -Designer : AKorolkova OUmpeleva VYefimov -Foundry : ParaType Ltd -Foundry URL : httpwwwparatypecom - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pygraz_website/static/fonts/PTC75F-webfont.ttf b/pygraz_website/static/fonts/PTC75F-webfont.ttf deleted file mode 100755 index 549f96ba9869a13cb13674246efbac9a580129d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26308 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 AQ2+n{ diff --git a/pygraz_website/static/fonts/PTC75F-webfont.woff b/pygraz_website/static/fonts/PTC75F-webfont.woff deleted file mode 100755 index 45124121f056d7ae2bac93140d88ebebef15555f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17716 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 IL|L#DD^KyXjsO4v diff --git a/pygraz_website/static/fonts/PTN57F-webfont.eot b/pygraz_website/static/fonts/PTN57F-webfont.eot deleted file mode 100755 index 1f55ea8682fd733d1c6179d6d7790786b9116af6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25908 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%0AuyMx%nBi;K~ALVIp(5v+v4Tr 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 diff --git a/pygraz_website/static/fonts/PTN57F-webfont.svg b/pygraz_website/static/fonts/PTN57F-webfont.svg deleted file mode 100755 index 5509a88..0000000 --- a/pygraz_website/static/fonts/PTN57F-webfont.svg +++ /dev/null @@ -1,154 +0,0 @@ - - - - -This is a custom SVG webfont generated by Font Squirrel. -Copyright : Copyright 2009 ParaType Ltd All rights reserved -Designer : AKorolkova OUmpeleva VYefimov -Foundry : ParaType Ltd -Foundry URL : httpwwwparatypecom - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pygraz_website/static/fonts/PTN57F-webfont.ttf b/pygraz_website/static/fonts/PTN57F-webfont.ttf deleted file mode 100755 index 30fd9b9c9c402204dc24b74360191e0834c8e20f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25696 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%0D}I#~$Ui`AtxU9}6fN;rVa_VGq%;7; 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 nhPG - - - -This is a custom SVG webfont generated by Font Squirrel. -Copyright : Copyright 2009 ParaType Ltd All rights reserved -Designer : AKorolkova OUmpeleva VYefimov -Foundry : ParaType Ltd -Foundry URL : httpwwwparatypecom - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pygraz_website/static/fonts/PTN77F-webfont.ttf b/pygraz_website/static/fonts/PTN77F-webfont.ttf deleted file mode 100755 index 5b4dd935a5cd2de9429d5629d5bc72a6f85b9a84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24828 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
  • 3)2#XBTVX-(q#rV%RZvvli)Rqi^8;R%|P= zZN#<>TM*kYwq9&hK7g$qbv%UaZoH!vTL-;Mwy?0l%!Uy&Fo-&3AJ2G>@c z$FU;O%xa`9tchyv*q`o8YxY>;THJjI4!Ky0M;pzhUFw=^E@ zgz(2`v$4J8$N2p{HgGd-?C03e!5-)dy=QDw5V_M0!YQR3^Y_odl7`97nSoaL* zi)ZLPXop@uh(2R{AorMzd~o@X%&xa%VkDWBC$inR^OW{aDwq1?Y4X3yzg51e998~9 zSETz`KUIIH{vQ34`tyc1!`BS|Zk%p>(D-rQs=Py{X{JM_$4t-UOZnFPm1e#9w*^fF z|6-}MeBJVl<#OR&g$D~?D9lnwJ5JHO%lrE9WlrR$LE z*G1-{rlOTaUn@G`p5cDb{hQ+U;^Q8x=j)!Id;Zn)o08U&uaunkPVs)#``gmy(yx}8 z%NCZYW&c{eP;fA}W(_W7Rl-{3!lFCUK!9IYs=c&y@7@Y})6ILo*R;}(qj=3n`D zc-+s&{VpVhN6K)R=gx7^njqe`6bo{#U2gGdK%?F_wTCvIq zQDSUGpc=zhu4FMwjhKD-YO|7uk)nC19dmp`W2_t>i^kW4wQ?Cb7&~&u3aexf=8ko! zfoyVmkDgWF>(AQp3;6cQWvsa#Vt29)>@K!~EyuS-)-gZ61?@+s>_q&l!%-)`*KrrN zZrpVzTZWQ$+_e;TrynuXRru$>?&-DSY#DNPmZ9{E_@z5L@wA`ag16j(D}H#Q^v=6b z_j=ZZ-&MG4J?>qMo(~e5E}kE&uj((>*Nxt;5Um-j z(~mYR5+%#=-aEv*7ojcG2S3`j0l(|;6w#n1*G}ry8a9kKQGb>RYRtj@+S5ZQug2)* zL>#K@60s0fpjh622=n8F?;KFuqe+J-*o2 zfUKiNAUiWb*;&w3v(djf;L96X8=H&qo(Brv1e)HAuc_aHvAmV_u+JgRKOYk0Hmp7R zJigug1-6ha;u8Biwv9c&cEYCI!FB{598cJvVS8&*LVZk95KUq~aAKF~Y{} zEX|Gpv40fb68{mRi$CNJB(J&fh50}7BIvtf?%^feYZ$&`#l(p-C+7CeVqY6i(!O@$ zL{W}?P42ulw~y!clXCk+Za+DsAciQN3u@IrJF!?r{mT3@eDJ!z7rDXy*{U3E2Ku8N%vYV!{|CA91i}CS diff --git a/pygraz_website/static/fonts/PTN77F-webfont.woff b/pygraz_website/static/fonts/PTN77F-webfont.woff deleted file mode 100755 index ba8c069af30c03dc36f1f34d131d5a5f4a2a33bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16620 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 diff --git a/pygraz_website/static/fonts/PTS55F-webfont.eot b/pygraz_website/static/fonts/PTS55F-webfont.eot deleted file mode 100755 index 0c30b5ebef4d55f0cee0a788986d535271ee2bb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26928 zcmc(|3w%@8l`p*aIY$r6vMkAZ_-)C;Hj1!?Eo32#u`$Lt;5d%ss>X2$7-P))6+);> z2}3CbLV!RLhG8h}a2dvv%N)rLB{WURtCTWnZYB+BlBNmmBpGHhoisPo27<-+U;D^l z(xx-_e!uVc8KiU0KCivkUa$RMYi~_l!q|iTjBzG0`jgUivLxZZ!r5L)N7w4pZ=-MmO7mwm&TQhJ@KPK% z<9PC{wma{xdHSBoIDQDnznyjWR~o`UYgN(O)i|!d^X_2P;l+$~V6$>6*&0ms#!B{Vz$vi6;tXSmxi~89(#y$M>>Q(FR|Iwk# z>5TPF#QnO}YZtA)_oqMD$XNemT#si6YO!-k^lu!zk+YZu3yI!=q|ed<`J&D!eHmLl zOJ`<0v!2aED@WTq6(wWaTPWH){zj{aAMuCQj@_doS^hcSi@GVgkn%E)4{2NJW!5J# zqjXd5jxy;#+L&h!-9&$F)7z(`7M{-)Jxelv$XF(YJwgcS6}m&X#Dn_c4XIDQIAZMQ zD53IvTy`4U+i;x%`h0^OWq-r|2m3pAk`1#n9+Su6$?+6;ian*Cpyxi%liuR@*yoC9 zg9q1sPh9&y#kI_1^<;bUzi=(Te*OAyu0MbMx$9@I|M2>m>rY)*-&^)x-+K$+Tkzh! z?{&S`{+{pMH{R{>Y|{}p{U7{sy+(Mtg%khKXY3!ICM!C!|8Ho z=j7()7ZetGyv4q8C8cHK{kH`slve~NR#t^3g{vczqf=_8)=sOdpWZM7+G1Ao?X%~! z+|hbx+gFV)j~*dS!^Bzp+*c#u8D_OpHLui1CdKi^|dvLz~; zpt7tv>TPYE>g)&Rs?1lHt?C1vwR1(;rn#PK>! zuF4aZWP8;5wob2FKet>}CeW>3pZ9B>@8rEaHxJi!j^zFO+&rIG)df1$rU&MV6LaU{ zdAbQ1-CgCXenPyMe;aT2e7n0lPi1(FVM2VID5}3vWSn5Pd7{B`HEn`t6TRd`Jl~_r zCAa%Ls!}>zWo?~17wuf&p`FQjUhmwzo#LonJE9kwwAxwotX{k%eS+toM03m&JVDhE z=HEcJAHdV91-&~+K~X1v<7(=%&l(*oa4&rY9solj-$ooYRb~;!cnOH{Fi9eI->l)DM?sPVjjyre5yzbk4au&#UseojcK>+kHEI zo}IVv^ev#8P;=;;>SLvDu%jDn)BxJCf1v@WsISSlVCnp^EumYpCZG{Jw-ecB_xg4k zR8L#y)V#AeUn)b1D|u+$`&&5O&5O!HTUdn@AUPc_P&NZY`Cuhl&^2^Oh7lx zSlE!@9*&LbS*YeL$`>`o6P*)Ol!7k!D%Utwf+mrmA!L|xaHsAN^pMOlaa0UFGZQ+q zpFPM9fII&OJH?)3=h?5>M{I<{p`;Yq$?Lm3_w#>H-D1dl13R9bfPK?X+=#~bmEh=X3?E7rSl zGnGX2K0K&~)BBt_i8uUFE!{Wj;Qq2Y(Cr4Fr~@8W<*4B|?h*A4jjecDs^T|V?{n*Y zWd>Bcj{6KwUm5Bk+Mqp?h=r<$C*i8%vJfalqyZ@-WmN{>q(0rGtN*C@lWUS|7V`ti z<%{_qzGrcADS!N$-DWg9-DY==)nwE!t;@FLG-g^9y<#>Ml$cFviaEW2o6Q-8#&naU zC^)qBIt2J9P;yHSg$!SfOq!OECEZ{Cvnk1PDP)Vg*Nw-L47PKi} zpP{(T+^suwwNLqdat8n5;^eesZ6ALo+1STl;Lm@4BFAL0rkT-hx7j>xn%}5oDmiu~ zU9VUaJW{V%6{8|KtlVT&(p?U&$m5Mh)HdCllb$x&XEYZ{N)~8@$|*4<44DPEY7eUH;;>%Fa+N@8 zGnA=k#z5SxyR4dn@l4(2coq-DGtD-8JWY;9Sv*6w*;Q+FVr66!SlR`-^%a+9*+Mqi zcd0%cX=sRq>wSa1-g%Mwy2;^&25C?_Hxf-g0sV1Wu}ICjL)J3*CGdreEaabfHe63v~uuXiPWbLaus(aW4<3)wyS;HUDk~a|TRmZiQ;BP;;&E9Q_s5 zXpI~6S8kqkRjB3))n$!4anfv!r(=_A9g=blS%D#0eCz33&9M%pDX~v zhccXITxJ#DHu3GCZ@R`UuEAZ|;x0ThZ}d6&qt7XzYlaF(uPmZ+xjtKxM?D{_ZLHT* z@g;w1eJ-0=nH33T`S1zJ;$!g1A$)vU^r2JHg74Kmk$Xu%${Ul<&}VD%)2+!t9-|M+VFeCf56N%q`&bE^z{2bk#?|Ve zYPzVhs(2}QsMH$QfqycJtEz^>I$}N5@409j&KCReOb@y-Y>iLEH3i_ch}KD${_5QS zq)t*)e}zTOJsUR|uBf52%8OEjD{Jft#^WCq-GkNtf*p>kT=%p-DH1$)6fq0&4PjsR_K#qw#`? z5C=yV#9?A(9WUf=TZJ5+R2>P2oH#I4@G@JW49S4*4p;Cjhs$lVa6XNPCsjygha>*o zi)+6&FM9mMuKsP+mHu_Hy3LDf6DN1AIXSSpW5rjwW!^?#w6)y-Sk8D!@)ymV|IM!b zKXjcLR*JIsIy_2J?``SX+IjSq{2vZWKBcj9RXKmoyy5frE$f$6w$@g!ewXja9h$TYM4(fzZyjHm^v_m`wk@AEx zjL;KvNl(NlqdzBG<3{w=9oW6Y8o!$dhV42w1HEdul7z*(v<|%RmA8*k2U=8}Rc$&O zZ&R+Q?z3lJe&`qfpcT)ws*PvkE)?gSJrk*UcTg+Nx2lC_<0Zx`s_(2?3W|HY73W#p z>!~{h}$9?3Z)`$C@r(dzTyfg z0yiyGg&RtP9HL;6NdSoX;iu?7iS}%2tZeqqTGQ6CZf4Q8z245sMWK+pJm9lzHkVJ1 z<^-B*@+bGL*j3WGa$DQ{zu!FPSh#z`^w5IXEO*V66_e%`M(%4aeK+J^ad%zo?3sLX z`(vAz`DgEsRnD7T9+(-ch@I-F*)(nA)JZvWI=cKdzWKfP7W$_KY{l!sJ4+hF-s=8? zeRYdwl;rxW^J|(OZhENFADh2Q`q$cxQ=8TW8twwpf^jQs74H;&?rki=VJ(N@1g9$y z21N*i1Z{=Su&gOEC^=HLwvc@KXdP~SIC(!FgXat+Yo(|z!JI6cC3M2-y2Jz0@c_4W z7ZDd!bb@YB9`Zm*`?mQ#?aLc-3maF=>7Tc?t%QHF=E}8C`kVXT{optKJ^%9Iuew@# zKKkq$p06Zp`3s}ZPal20?qb|}^ZC=DoS=9jq?0U?L1|xAm*;I<+OmWmjh8J*ZtMT` z`@in*`QY+9^x!{STes%w=bvDJ%UQd8NE*2oDrm^1bAI9C zY`U0idS0#xa*OYqQkTF;JQ9MV4=D=rOkP&U4efoKyTiSql0fCc@O=;W z%-cFIIKMhr7V3+{HYh9BW_Qht#@6279`5YPUYp(17L9G%5R1lQ+0<*QMLSn?I#&(5(dcm)X^d7kMC%Od%4 z1XcOsutmp;;D^c7X#ng84An8M58)qRNKu!tCYuM}D z$p1r<4j!a?d*Ls)v)4g4)OoD8JZ4`I>x)iviY{Y4;@(kTc+?MO{Q7Y6lI(@7%B(@t zDXJX2p-*5uQ7KqCAp zA1Vr-pAJvDQENfm26HY$EyQz(2>C+w2Fax7(meaMbzn`=7o0@rR#Y8uZOx-FkRm(X4eHhxSP?^ELebS(4K>cJOrgK}AwtAvi_YDQ2sUX05+RN6>f zC+oIVl8%I|Jm z@Li2JfZNF@@oq1C9tJ*EYyYX_PTfC82-bZX%1OZO)g2HGts;1i# zMvI&F>~=L1tQrbOrYV|rGn7r^nt`-PncNxiIybMV+p%rM^tJ0-_gBwoesN9b_IZ_e zZaLc4yOlp%v%YEY*_Y17dcRfgUtil4nzyB8#c$q!dts;1E%NfC(Sf zS3!NVsJ?dP@^FsXmz9y~*wUbyb}?Rv-YnBRu<#wfBvlCy%wknDHCM}dmJL}loi5T^ z{KlTpSA}ViI|o#i0+&Q((0#TzM|0I2d)%EJjmER=D5qf``MYG@(O>{JJYw)dh`7O- zvMvzW;XrUpThoSE<>2E_@UnT^l1rtxlRs!~YTwm2rFGj=z1;`$_PGoFZ7Uo0?3&7d ze2??s)TDc=k||B@f3$nm->;um0ABV31+CPn7$Mq$E(vK&NND-6$($x-Kt+Y(CNPd3 zgS#whyP8oIH^M6gCjlN#u}dONFi{%yBXPSCtxQOnR&*YVo8ipIc{pLbo`ms#-S?dge0-RU9egWZgmkBZ1)Zw%t#kI{KuvIhose;a^*~4KMEA zY<<|Cb?mPm-*1v$I+*O&Nx%Bpy2OTQPSAP)b^jQ0k;}?i7fZOP_8xE=xhru!YHu0u z(xLVis(pn}A$cHmo;6;A`r1(6AhsoWFnKzQE1f(?n@!b&#^XI`1G9n1MBPdDXK|<%m8MP`c7&mExGv(q3uaMxVIt)GaXLWJKbj6~|XIWg<5(z ziiuCBN;C=5jst0p7$e84u`|vZp9b36v0Fi9xgho|6ilnO*`LaA7WqT6@Gz$PamN|4=)`E&u{ie zR~_x^IoMx))H{7aU1(l&pt7xR@}{NU@|K=(cjuO_NNidmk8SzU9Yu|?rA=*H=Y=a{ z8)mIf#ENEjt(n#NX#dnHJ==OJyQY^F)pXa^-rG`J(DbBqFgkbU)ZFG>9sO%cqAlRV zrJ&Iz!G{50%83l35O_}GLy&6NRhU71=ptfG7|VxH(j@)ya%}UUtKmYZKHE@+&Xpy| zQ|LljR#f%d;zrG~3Ch@=4#~oywB?9}Yor0rS{=biUYI%k(kUyCuX^=z|LJQ7N;dpx zN6Z@8wxZ*)bq#}uHudf;RJgBc&74gS%OCdq-N4M`C%^wNdHlEAvbNe6A3k?~Lsewy z;r06-Z3yQ%0<(84pLPU{D6uo}F-|BJ*l0Jaxz)?al%U?60-xh*HZ@N*SEXP%)jqlx z&w)X@6@9afLE_Gg`W>U&QU60;6{)L>0FWbjkk|?MXJ=54ELOzsxy3_ExTzimsd^yF z;kY=QDeM{Lcw)|?~;&np}aKjjRya+0~*y`K+5&c`El}?>YljOr*qW-L7YB0 zT=zxiPC0+0_V6v)lk%{#4YGU(Qzf`iY2;F-1X#FF5*#N8EF33-4ZQcA@6~LfWL5cD zRko@MKw>`@z%vcdgQz8vf?yVH|xKZ(QuM$O+bI^ zs>ZfL(FQ`w7h3^LMSoURtk6oLwOn%+H3#v`ducy;L~AXxs>ZV_x2h5hKj1^7X81?< zMq3@>PF}_%WwBP-dhKc}|KQAN#keUsb!xI~6Zf}H7yQx!*{p2UYvU;Y=M1D1o6|yVnvJF4H(C(;ClB$!LY9XRD_D;vTJ_;ro!l3JBj_SG^=(@a)7U(*)G8E5)pOaZNTyifJ#7l_KJ)|9m>ow@D z-WvCSws*ls++~g1G03UVhH(|vcr}hp;X0K1vx$;VCX0~+POP0FAHZ;C@ zZWrxV+lMm!x7{u@=FApo%-f@Co=t6z#_#Q*`%HG`@>EpU3)rZ{mOz|+)UZ#0MOR$V zr@{jvEYzogL7EA2xg#Oj0tW@^m0ZUPKF(LH=m8|zT?%PjH|gJTrBaD@MI@^N#}+AZ zi0gUx3#WO_zijI|^zz!+Vnme+?wG%#rt+TYWwCuPEN|%wG&L~~9PaRjg12w~(S{?xJ02T&Gx=)bRPxeG zeYr(j%ktJ;;;n6MtHa&vYIv)^Xu)6pNYkxW_^wCbyBb&q#&BY!k&qQbC=?Pdtja^f zdgP^`chf@TUqS4-YC*I`lZ=`_T>cy3fiMxGV2DjvM2Lc0uAF(%dU>xnsZ^*^1(ZNs z&V+v=S>vY6E4m?_Nzs6B#0s!uLU@8oWTu)bczrtZDn>IXG?5YCkQ0nAF{)D2AqpWL z;y&3cXL;o^pTQ~>wMyQ^fsv2*p5w=lhNO^Az1qfiC)Y_{KK$l8ge9N6{;?9(4YC5H zb=9*6QvRHAlhz-uw-y*P*;E#S8xnWQcNdd zz(UNX;b8zH4JTX9KhSo3d#9(Nuc>xTEZqIrbG_}s#eG{X)wK=T4FmHcGgfSGOf2*D zcq+d-qbw9#6>VHyVA5?h+w$godueD{caz;{s)~KBW7YTiD)pv)6ag%nv2aGm;;3UU zB7njAj>^W)u-l-=7-1d8=Z!*#*0MxCc{k2ci5KHfuOJKocf~Lwac4eyBu5N5SsKP* zQB`MGjl#KuBMqhGHULqzK!^x$P03INm)0#${A%q0!VEp9I*x5=oxSB`U-!VBfWf{XD8Zo-H!#Q?YeYq|F8DXE-Cm{u%z=To(;Wp^7?O;^XN+_3&6T1Y*fp9 z)Y5>S6#lYcVF4)!ABOZT4JsOg@ z3^-1A;VgyX(sA?9Z2>>@Jic%0d6o$HZzHV^({+OleaZj*%GdGC{SucX-gEqob-fpk^`pNb z^c;CQOnwRDi*z{ z8p1{>o7Z_#Hjf;Uf+Md=D|CkrCIe3-B_IT&?>&R}ra|&FO>^U&Mr8Nloko&5)1P=J zpuf}$fzZOGy!k@yb%hMy$el}gzsSGCIk{dKsNoy|3v(5a z1eytMCMXz4_i(UA^P|6Z52( z&+%MM2Bz-1bo}5u`AAP8%ix3(5Hg144Xox9L1sh?eK75}Xl+?k&kv83-kv-Cyt9{bGkyRRfUk8yl z<9#v^s+)Z|iVy-6BVa5AUD6X@AEbl^aWC@lKH__DuayN^!c2XGnhB}psx7GM1;deZ z0Jj)eA3;0@n^2r(lpj+a#`7qYUm-Plqm8l1;JyRa%F2o6NAouJE7hNW_t@Vf%|qjJ zh4Oza$bu7f1oEHI6Pt5g2r+<6(d!nC6c!N!pdrj{7%-$mzmqdk0Q}XeDTz?_n?gy5 zIH7V@)mv2qJaffBo;iIB7fy$GZQN)k#?WJMhX#YJ&)JfT>JAno?bj^kq zil>VNmjVQMMo|JQ^9oynEj)=-WOEb)Ux#s9_Q7`^otbW@=)@jWzTcli4CuRZ$8lQ^7U_gcR})9@FVOke8qCuTL&AD zv4AG^!fS$`Kb)D%$ZGLt}g* z;R}`Ja2LY1$Vd}jIPf?4K&``_^IkaGJMZxMrN!ByN|VVQ%yD^}cC2iy@88-G?kUji zvS*a^Jh^S_Q>!Z_MH+cmI<3Ge=FQx^uw!*&0c@Mh)+Kl7zL%nXHT&J4puRdO7>7@& zda8!T`z9F!YFQ{=f#V>Y-^icpm&qDW{l^E-X9}JQf~Tqg$dwTwH|{L3v7wT2Wf&xu z(zjY=9hz7b#9<|UCvfVfFQJx36DX#j-b4iNDyxttJdqd?O!<9rR2EDfr*sZ6L?T@l zV??7ZKE8sub5aG!8;Hhzu6&pn7_7 zS7+sY!M+#n`G<~{%JTo3tv>&r-WUi49Q!Tlf!v@ASvsS9whnw|hin{ViA<6WX2FO= zFdK%L!?vtUFx#*#Wxh30A>c8qin2SPxk!TzWv01}0SezirIYB8I{RtXJKv@*vOpz3 zk5R}W18O|ON@|?Gg&KEbBrar|LEnLZ=4d=G>r40*`JAM@a^U7_8KS~%YrW7hZ*WWN z)4O~4qI1dh=a23_{lxak1(POPbh|7z|Gb0CPrT}D896U4EgIP%UEOtH)gGNfIr^N< z1Ag%?_%p!%fhGLZ`Wvy7ToNz9iPnphgQON%3B!p4h8=ZffBmy_X03T1L#%Ym7B!U$nmfECq|JrrCy-jI3Ng4Y|kJ<1WOKVDbRql2OjJ z4RNb`9G%Out1jsDn*o;!M48~+!tbZiu^xWEk{WQ&n-V;|uJM6bsPEA5p}xz%*z}K6 zCIwHe+rC{KPv891+C%3!$s~V9{?)a$D<13ipL$h(MN zQKwONqlbYgQWQ-_pUEN340E4yhOelU!n|v6mNG90}}`@r5H{eTqvS2?y=m z?~_V?cRaafUh}}y(lbYq zkc4b7igv=MkS-FiTnImrk)H?3HyvA_Ho?j(8Ssu+R+&+<#LSBv1x}0|h%awFI|{{1L9`)65pF z7x+_Sk4RT&eqCG#?+8v^8oXRLoVqmX3g&k~AX#v84umsQj&<@v;E%q*ggP|h^0qTv(OY0}@nEg&(AhGr9A(?9{8YDj_F zqkDpSpcx|5T437iY?WS%U3)`*e#9S>%MU58_JfB$|IM6HA3o`qyr_c#nUES;@M?nf z#ZVop4mhhpN10z3+mX^EE~O)V)u^Jwz`%#7@kze!wbznZ;*a%^u={NE{+Yf1R&S?n<84x9|OI58lxu56J7G z`iz*;sRiI+P?6t-+!RWzM&tz!H3i<0Lajho(+D*cNj<;(SCm-^uK=M69grWyU1%(T z$SOzfoHhzj2zKN&kWsLsCl(U;W0^tj;hU!Nt`o=)}m4g5z@IwP%ta?IoHGDEmOO7m&>7r`XG|q%aF*CFyRY z2W6mf7}lg}M9^YZ7>UvY&wuM)-N8WeXY_uFwO#*MUZYqMF`tGRTEe4Hy`gv|D&a!> zES^E2&lJB49+gfZ&BfI^L8}VTN(1IqV-;m=sCiZKdQh(7#xSqimdJ4V3G*nl$BW02 zdoZOE!@NQ^j^I$(12|IlJe+sgU=LA2L^I*jyQ?FVV~JF$8)+zT5?pS~LmAD?6hK%6 zNy&6s+w5&;)=bXN*YkTG@U?Zc#YQ<==u=GtpnMRBSgZW%UyVq8NNot`^-G2mna|ZsY=COkgPraJXoUW`Ig$ z@vICm3%n&nCrkh`G~E+{QxFossLjgYWFsR&c#jogm~-TqF}N>w?p*T9zpp#9zHDX9 zuD>mqHh*T{L-{qj`;t;kLo)fF$xoC2I`Lt*>!ttI_Ha*h?Go?{a>C?JB?t2=f!Su0 zuOc$4sKUrU;c9`XFyWqs#51;RRLn^u^#n5@Q3C;{6jxI!mFBs5Qm%^@^r(<}KX{{O z$K;8@wGGL4ikk0_&0b#;u07Gc;nEDW5I(| zH^Lkp%!m0`B3_=rEa^ZT9<2u0%2ZD;)pMMvX9|r##+T4vV7@e~Y9@P|p(W>M1c%L9 zMr#QuF2*-9GJw?#8&aK+h%NBAOp9n3rFek%w1$yGrg0irE0ru(9kB^VwfD0(TRKC> z6x%Al(SNxA<#U61wTou;f8A9wuXXoPeho1mtJTg2KmT$6VEex2d0gi9jy;QOmapR1 z3bN1KXzP>chdkuvFM61a@Egei-9i6NsE9S2xBog_-l7u@AZA&%5SN_sYUZ$a9nh*zXE_x|gfO}kb$ znMYQZv~KEZ+U2XQ{XzfwCs$TK$*(=IV&kLeL_N`!oXpy~{fa#P*Vw@Bd2y-1cQ2aR)7C2}YN zU!UWK2cDZlySe0nqrD8#B(%sJRgE?g)`1cmjm3%KgGDOfS_)_R(W05F+8cT!CBcr8 z@YG!NM)Koh@|r!-c@K96tnM9-3~zmRZNZ*vd*n4F%e~1~`J`e;yeGg`vqT>C1xEH- zUm#C|d}v6?XpRQyID~mh!E`PS6h(+2UP$UL1DvFm+JVGi1ee{Mxx^in4dvy+zHdTYGAd7|ZRkJ&U9Lt0Z&TGw3Gt z6EZmD*C21%qZq%Mq2a-r0&`H4a|G*UqsdTU*;bLTNd7xTzb&L33}~c*@EUTL2*VUA z3+x4tNlQ90*r2PzkFAPr?kGEEuk2`?f7k{0>3`SVQMT~-=8?yx=C%jh{F{14Vx(75 zv27UFr$e*0YRIn$&J3rCblXG*7$}9=kt2|&P4vR%k0*M;ryeuWi>wL_Hg8VwI#O3z z+0;~7S?Bv3T_o7p7!20dUj0mASYAM4_GByHih5X(6#*`$q{`uJtqOYLVT3n@SCSW0 zk(>@;Oz1>zo{lo#j7Y;aI*}~^uOC$dh&=2Rd+~hK$tcVn0$?=oBjAd34WR1MvavO^ zM;l8_$F}aV7T9)1X4$3}qtb^A+n>^Ri$G>_ZIY{HHCkl8X**l{> zS;=2chQN#J^$(>+VNZegi%cm5l7$01iqMiLhAstWPR0^ul2f>p0;Qy?Zv+fW)nk?A zd9`I(-t~d*4KFJ%f8NtvYqV^!Iz|3J_)GT*^sb-XuhA)!Q=h04XwUonSnXe`qpJ1%kpMq;4@LI=ebg-z@u8-%2rH^b37aB=`6j-NL@{CYC^;@igEPtMvAAa}Y^m8c zO7R{|#SD35p@@8*-hX*>-QddbhxA=NSk$nz1+cG!7mA(aN1As6Z)9WgTJqm$+q!4j zbiSi)&oWRGx+&Qwe~kKO!DjcRFh@7I6qLpg^af3lggt7q!5*+`qwJHVB@L1PN0vJ) zMb=!T>x#&)n@~hRx4r;QG6q{NjM|Ij}=p4MuVT2F{fs0mXE~2NPes={8%T6CUO|y$NsT}LmKj*Flxz9 zS3FyO%;?|L_wq}lhOA}V?jvxcjNIaPUEMFS+6JzJ`P#QQx|GbX6g(C3^g`N^#sKY<5rFQK)GnHz!&%#sR%R)U$Ao7ijJDuzS_y1 zeP%Fn(;UYU2cJKCgckeZ7&m<=V`@3{$xAFzMxF!Vur}i0Y+ z3_<}ueD}qtH5Hp~RnyMK3y>C5bQS^EAyax9fSUsAP+>t4a2R}#!C`PxKrUD{1XJin zA(yd70-nu7l#$?BgKbE$WtR~GTZ~zrPLdd<4Cl~8*+6G4&SE-;0tXoGMjrN;gR^aw z!Go=xYj0n%WyS3$9$WR;+YIJ3o&r!hR#2#Tt((6a+n2firy0ahk&$j5e?A7$Q*SE7ZGSZ zqR@#n7x{%^CXY*G#=FQxq%6|7nc#P8RAuDdLwMjKMx5jnjz73v#^A%mpI^j>U&{I54=JGR{}dn23T36xRr?QrAC*EMsL44q6*h9>g>zEJ z=a)f8V8gmsLC0ILVWBhGmtn&%toXOiKdO&T;MGnYGRL<3%TjTA6dShux3FP;D>kgv zd$jf`Yn@yWu=*!K8br zX21$V#x#KGn2a+95=R!YF-?RX_)~z9Q~O$Y5PlLF!%Xs1dfN17SEU+%+Je-F7<)c`d|F9^!T;@=jR>hbnZ57+%NbHYDo^Fz3HRT zbq!-CdHw>%9D4Pw)zp|97&ENPe;Z?t@i$}0&U!QH>yRq={|vMldjFz8)C! z4&7m(G|QMav`4xhkR!rrQW@j|pz&OUzK&!584~RiZV#z#H>PR=AWV3~gftI_<|bgq z?E$Hf03BxlWa2JFsflVLMKg8(U?GM~NQ;CtI}rXyNh!{iu5XRa z?>X5QnG}mgIxDC4p6u?6@k4vsyZFcRH|&ixB=frFnKFzkV#$KKDSKA*^AG#)(Asn| z`FkG4_=DzIriLA2Vl=_y0Sq#=&FDN!Xy%iGl3#S$S^R;2M(5ZGx@5NJV0uN})GDApmJ0s$J*)AyMVDqmWKi_;N_AF|o45GEi&2OQ4wCoFN^uX~@apr)aG-lxZH1h{0njHGJl{8RG!Lg*2a&l76$a(bbJnp@x~( zb?&W+F6@d0%i4oYt(!uTdpkNRgG(Ev-!z7Ofntw;Q#jzmziOfZa@w&Lh>G>@^4T~n z{wUB=!mf(ZbTBkI$ErRgazHXbi4x&trXuc0c%_^ItPc{`Ik6^)#X9WPlGriWl0yU@ zv3N1zC-C=u09Q>EtRzf`hP0SjHg@d|G0O~760!J(Op6h?ZTiFu!~2?7l?VNc!VOD( z;mS?T`}!W~@(;ShvARnV`-odzKRBfnxpz4VlxrU=fxJz=fbj=Un>uzpv!-!V|7?q_ z1kgsBd&1-o5z{HhI*D5TSOCrARoXOCOtKv=E@F11cBg9%PeV&FWiIn#JRg`xekO5l zehFn>=6k`)nIai7lUUhQC8p8kqk|G@dZa*sodd+qlx43L+v55X8p`q@-=LWZpk<&VtIu<&}HF55>;^tR(+YcgeOjv8_}01pB7dZt*u73l4$~ zP^n5cd*p(y7jG zB}R#vo>*>-W_yBmVSE%sEQ=AbY&eyi|J-MveKv>>Kq4)2IierfGLU?O`>`Q@ms$Vy zEqasAhw*J0B76@rAVxIJTCESpr(lD8C*lq0H4#gkLHthcEzPh;0vDydN1)pxRtg=E z8w0%=Z$xQf#Ag3~W{%Dmm{?mcP|+#%sCz9ItFfIjISR+K%BeI23D}X%B)GqNTx$A- z$a%&*iqSPVw0Ue6$xVDgOLmN=j<{&?G#Xx(_OE-1>oGma@Y33~FD0)YIF|hVGmH0j z9e(Y>jjtW&WC`3HYlGBuPvxw^bPKel37|NO>4aDD6XlT!O2H$UCe^K|ml z!NKIGw8zbZyMMXAwRQh5ckh1tKx^xPw|AepV6>#WHo2|Kc5m1sm2Aw*e-%9Re?M1W zVJG<}G6RJdaP6sPuI*o%Bjt@qnwbYjrY^q=M<>-t}a(PA(nbBlDiVqAfPpqn&zUHx5*TI$3 zE_ffPjtz87iyqvxe_>Ni!v^>G4EgZZpYEJBYv)h5ZoROhxp~KhtxLbt9}e{&S+Vp; ze|2^Lk>qYE%Ve6>+0dlqzxR64r@U%hMKhOZJ_E&42SqH^OEckUL69%RQgJ9^sS_*n zc*rRaY&`V}?x_kSuaLdylCDaxLzia3GXi!^f&XEz=q>6?cdFk+f;OXc1mZbLMtxUh$NI*``#UPJozb|yqw-*9Ygui; z1HwgPFn(pJIQ)!5r_7&$W<JYux?%WH#?W}UZj{tUlymb)b? zMg76av`i2BqFrIU7IB9x#NoBT2ND?ZW;Gp?DzVf^rdZ#OUY<$GYQRoMUv8u16~xCd z15m^y1?_}v3Q|(oh#G@jU~eka zHiA^7h z4JqqLtqS7wV*MU%DZqGUUKKzhAT_CiRIGS(;<4TuH$&pE%oi33q(o34+{1<9h~y73 znX${Bl#GcPjosfjIzduO8=c}S8SAPe)2Cy(z|kqn;neiV(Jj%-fjK9&&=DcFf+Z#r zUWfo=!b0&;z^=oLPqe_*@M-W@3DU$2q98v+IfWuBF^O`^;$94A!?3MhpqTNr5UC6Q zL@+?PK))tL<4#IMfpZDa-bRWz62dId2$s&9hUsG|j|#luHF)&}lEaOyz?C&4%4A2$ zD(Uf(&F-a-pIOp>Fj5}e+|{(Xzr`sv_(oonAbh@Lx$h0NZ5t+Ho$CH5`LCgv)Z!C0GI&*F}6Tu~zA{o?`t5AZ!0Cm8oPx zBApmBVbP1!>WH*PiqS@yIRM%IT$UzQMWU75h6^-*1WB)i@zPoj+B!{V&Y$^}LpWNg zRQ?>KTxFjDB_x4i*q@mrIE& za9%Oe2gR}G2#5{UL%E{dmKyP6AJZ3PfE$>;&?>#0ynIwj`_3Cvq}p@eJM1vFC1!m8 z_Ov{m<>7}%2BjE2zfPXmFu*%TunfU#CzF?Wf%l^>;gd%xy%u`Dg}4#2)$>MdzwS8JL0@py+}-A zOsf(xODBdZ@eDm$il~+e%$7mXcm%ohS`bb|<8Qj^n8Zizr%(COXP@5qOgIub7;EVa zTBPa6k_$yJ{<)Ju?^d7J*Sxgx8k5(EU_9CY`FI@iaU0D+p}b~lgUC~%^Z_w3hZeaJ zVE;I+F{NlsAgKC9W5%N~^7vL2a~ ztc)}X;KueS7zRiAqG@6%Nr?vJZDQOtiX+PcZ=hrlv{ZAs%a0y^-oLoNyC4)Os4cTu zCx*k$?u|ujCpX>cH@)_n*5uQAEcf#HDiM%0T8xGzo0OUQ^s<)ajUpKVdKSpI{;1Hi zExJ7D-!gW)v|H%m+l3wmeGK>Mj-&j}KR(ZR5^JAG*L1_+j|Swo5&f99CKDDE;Ak^! zBmBKDEGodUloTy6Kv{b@dm~2=%LkN62YWw%zfU*ZdUZ>i;6I6N9XKtO-j_M`KUopN zMEJv+{KSD`n;byS;Hy|clOe~B@}ubwd}|1eTwtFXx8nTQ4dgA~`nOAu9{`{tX%L@c zd{(nd(n+ja*Uh5%9M%Wf9{pDK34fNImTK7mK8o}+*ees(FxbOl(j~T$pJKhz&#w>T z`c8cI;IkPYI`-pp1fKzXHsP}ipQZdPJ0qFd2|Oc4&!MgSb=G3siu}Wq%&I)ePAdD@ zI$aI6x8qZc&-*x@&rV8rv)84&ub)vaY32I6*-2dwJ`b{W%7dxx^Eg+><|(ULi7tZu zUDvPazk}!g4iN7H*mgq?u4E@=)AeC&TQLajk!PUoXrKHC)~4LWj>vz-dX+oyv7&9e zS-CO?`}5fmX&gSq%r5^N+Za>z-$46Nj(YYgcVmm|q|>;69&3|MF}HFj+bzG%?7B;M zZy}4yXIPHBA9Q<>t>+)2Juk8~Xn!5i9`#D#6T?T*uVwv2TisvcnsKOCkafw3eNhjO zZY2-8_%HFnOmX_Kf5dhcwq0lo?j8N;X0cE7d(elw(P#Lee&QqlHS+T9Y#-f2&%t{g z1_$T?E&&b7mA_-VBg8O#e>?hoQ}| z(s0D^Go!~i&v+_rQrg35|7z+s9Zs)EKbro}<_7aa=I@!WWgN3SnrX^BlKHXqVe3z< zN!tUqleT}fGy8n|x9p!}wPu}gm>s`#b~`_D6}x&|$KBcPx3WvK`?DX<{&DtaIgL5< zbH16IpZj3$kMpMH4dzSv-^l+-fw`c!;KhQ^3Rf3CTjVNwsOXm-kLOvh)w|X^Ts*G$ zJzuBq&^TpW@wkUeEco|OsZ#o_veL4~@%r(l?vv3 zCwbHMIr2tE%O&jJpDLF{K8bdXf=tJ~sdBhWnCYdJ>w%B`B(?t&S&Y@L?q?qSUIYD13jIh*6nnHv#9DkhaMfx=);y^1{j3*0q=!uh*0vnmn|H4h zM~m=-EA+D~58#`wy!D4#ZvBy#4Y;NUEux=ix&I4Se(?uczWm2r=nbPk1XKQnpK<9x zyOy9vo*QrRunlMtl`O{FSBknWz}u;|9@J(dzVF9f)Y_(0&FF__*5IdQmY`j0afaGG z3)`D_uR?jns2;t(So9gX?F)aqa7=wI1IN1KHLOYqzcTzoyaQDe<3yrGa#yw zTRs{6I0Y;IOhq2)G**Xe{sQXW%C@KYgoT>$;64%C#JTIw5^&r zQ5<7inL4gYZ9}Q;q|`Q?+E%Bwk<@l_Y8y>$r)%5F)N?BVd7O2ezUf*iJI{tzEG2{w1qcRxDUf>#v^X*SD!qoO4uT wTPMuUXvfY&a|`gJ6y2T31^3KU - - - -This is a custom SVG webfont generated by Font Squirrel. -Copyright : Copyright 2009 ParaType Ltd All rights reserved -Designer : AKorolkova OUmpeleva VYefimov -Foundry : ParaType Ltd -Foundry URL : httpwwwparatypecom - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pygraz_website/static/fonts/PTS55F-webfont.ttf b/pygraz_website/static/fonts/PTS55F-webfont.ttf deleted file mode 100755 index c530f69397843a3f80d97d0eae1f14eb5195ec5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26744 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 diff --git a/pygraz_website/static/fonts/PTS55F-webfont.woff b/pygraz_website/static/fonts/PTS55F-webfont.woff deleted file mode 100755 index 07db10d6a11f1a936cefd17a7d3784ea4c87ba56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17592 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 diff --git a/pygraz_website/static/fonts/PTS56F-webfont.eot b/pygraz_website/static/fonts/PTS56F-webfont.eot deleted file mode 100755 index 4544409be5e7b87fe20c83d9a5cf5ad45ddd5474..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30512 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 - - - -This is a custom SVG webfont generated by Font Squirrel. -Copyright : Copyright 2009 ParaType Ltd All rights reserved -Designer : AKorolkova OUmpeleva VYefimov -Foundry : ParaType Ltd -Foundry URL : httpwwwparatypecom - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pygraz_website/static/fonts/PTS56F-webfont.ttf b/pygraz_website/static/fonts/PTS56F-webfont.ttf deleted file mode 100755 index a847072ffaf7c971e677ed91045570224439774c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30332 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 Kx^s){2>rj0wWquQ diff --git a/pygraz_website/static/fonts/PTS56F-webfont.woff b/pygraz_website/static/fonts/PTS56F-webfont.woff deleted file mode 100755 index 18410534423e461854e2080481247d9147852113..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19640 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

      smY2raP9XEHF1mHHJECmWZ-# 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 - - - -This is a custom SVG webfont generated by Font Squirrel. -Copyright : Copyright 2009 ParaType Ltd All rights reserved -Designer : AKorolkova OUmpeleva VYefimov -Foundry : ParaType Ltd -Foundry URL : httpwwwparatypecom - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pygraz_website/static/fonts/PTS75F-webfont.ttf b/pygraz_website/static/fonts/PTS75F-webfont.ttf deleted file mode 100755 index 86c21f5b377ecaec7cfd60bf1b0283697fc6d521..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25284 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 diff --git a/pygraz_website/static/fonts/PTS75F-webfont.woff b/pygraz_website/static/fonts/PTS75F-webfont.woff deleted file mode 100755 index 9857a06ac41ec6958ac3a901b84ea29d56b75338..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16964 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 BnqL3_ diff --git a/pygraz_website/static/fonts/PTS76F-webfont.svg b/pygraz_website/static/fonts/PTS76F-webfont.svg deleted file mode 100755 index b27d760..0000000 --- a/pygraz_website/static/fonts/PTS76F-webfont.svg +++ /dev/null @@ -1,157 +0,0 @@ - - - - -This is a custom SVG webfont generated by Font Squirrel. -Copyright : Copyright 2009 ParaType Ltd All rights reserved -Designer : AKorolkova OUmpeleva VYefimov -Foundry : ParaType Ltd -Foundry URL : httpwwwparatypecom - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pygraz_website/static/fonts/PTS76F-webfont.ttf b/pygraz_website/static/fonts/PTS76F-webfont.ttf deleted file mode 100755 index 6e146b65b6e4b91b63e4db4d6862cd72befcd419..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29152 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 aSOBmDAVshPD?|aX1t3MR11m&XuoNo{XuNy? diff --git a/pygraz_website/static/fonts/Paratype PT Sans Free Font License.txt b/pygraz_website/static/fonts/Paratype PT Sans Free Font License.txt deleted file mode 100755 index 9a82436..0000000 --- a/pygraz_website/static/fonts/Paratype PT Sans Free Font License.txt +++ /dev/null @@ -1,26 +0,0 @@ -Copyright © 2009 ParaType Ltd. -with Reserved Names "PT Sans" and "ParaType". - -FONT LICENSE - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining a copy of the font software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the font software, subject to the following conditions: - -1) Neither the font software nor any of its individual components, in original or modified versions, may be sold by itself. - -2) Original or modified versions of the font software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. - -3) No modified version of the font software may use the Reserved Name(s) or combinations of Reserved Names with other words unless explicit written permission is granted by the ParaType. This restriction only applies to the primary font name as presented to the users. - -4) The name of ParaType or the author(s) of the font software shall not be used to promote, endorse or advertise any modified version, except to acknowledge the contribution(s) of ParaType and the author(s) or with explicit written permission of ParaType. - -5) The font software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. - -TERMINATION & TERRITORY -This license has no limits on time and territory, but it becomes null and void if any of the above conditions are not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL PARATYPE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. - -ParaType Ltd -http://www.paratype.ru diff --git a/pygraz_website/static/imgs/base-bg.jpg b/pygraz_website/static/imgs/base-bg.jpg deleted file mode 100644 index 7d51d632ef2b3cc4e911c1572a8f184ad3077dd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112623 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

      dsW_IrR{OdQ% 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 D%vdRR diff --git a/pygraz_website/static/imgs/logo.png b/pygraz_website/static/imgs/logo.png deleted file mode 100644 index 68c2cfb953d2f03e418190f2993b0fceb8390c56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7137 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 p-61tiNJuCrI4RA!MU3-Qy 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 MPgg&ebxsLQ01L==CjbBd diff --git a/pygraz_website/static/imgs/toparrow-bg.pxm b/pygraz_website/static/imgs/toparrow-bg.pxm deleted file mode 100644 index a2c9137ece8a0e6e50811d8d9587c5a099ca3509..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20868 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 diff --git a/pygraz_website/static/js/jquery-1.7.2.min.js b/pygraz_website/static/js/jquery-1.7.2.min.js deleted file mode 100644 index 0bc0d83..0000000 --- a/pygraz_website/static/js/jquery-1.7.2.min.js +++ /dev/null @@ -1,5405 +0,0 @@ -/*! jQuery v1.7.2 jquery.com | jquery.org/license */ -(function (a, b) { - function cy(a) { - return f.isWindow(a) - ? a - : a.nodeType === 9 - ? a.defaultView || a.parentWindow - : !1; - } - function cu(a) { - if (!cj[a]) { - var b = c.body, - d = f("<" + a + ">").appendTo(b), - e = d.css("display"); - d.remove(); - if (e === "none" || e === "") { - ck || - ((ck = c.createElement("iframe")), - (ck.frameBorder = ck.width = ck.height = 0)), - b.appendChild(ck); - if (!cl || !ck.createElement) - (cl = (ck.contentWindow || ck.contentDocument).document), - cl.write( - (f.support.boxModel ? "" : "") + "", - ), - cl.close(); - (d = cl.createElement(a)), - cl.body.appendChild(d), - (e = f.css(d, "display")), - b.removeChild(ck); - } - cj[a] = e; - } - return cj[a]; - } - function ct(a, b) { - var c = {}; - f.each(cp.concat.apply([], cp.slice(0, b)), function () { - c[this] = a; - }); - return c; - } - function cs() { - cq = b; - } - function cr() { - setTimeout(cs, 0); - return (cq = f.now()); - } - function ci() { - try { - return new a.ActiveXObject("Microsoft.XMLHTTP"); - } catch (b) {} - } - function ch() { - try { - return new a.XMLHttpRequest(); - } catch (b) {} - } - function cb(a, c) { - a.dataFilter && (c = a.dataFilter(c, a.dataType)); - var d = a.dataTypes, - e = {}, - g, - h, - i = d.length, - j, - k = d[0], - l, - m, - n, - o, - p; - for (g = 1; g < i; g++) { - if (g === 1) - for (h in a.converters) - typeof h == "string" && (e[h.toLowerCase()] = a.converters[h]); - (l = k), (k = d[g]); - if (k === "*") k = l; - else if (l !== "*" && l !== k) { - (m = l + " " + k), (n = e[m] || e["* " + k]); - if (!n) { - p = b; - for (o in e) { - j = o.split(" "); - if (j[0] === l || j[0] === "*") { - p = e[j[1] + " " + k]; - if (p) { - (o = e[o]), o === !0 ? (n = p) : p === !0 && (n = o); - break; - } - } - } - } - !n && !p && f.error("No conversion from " + m.replace(" ", " to ")), - n !== !0 && (c = n ? n(c) : p(o(c))); - } - } - return c; - } - function ca(a, c, d) { - var e = a.contents, - f = a.dataTypes, - g = a.responseFields, - h, - i, - j, - k; - for (i in g) i in d && (c[g[i]] = d[i]); - while (f[0] === "*") - f.shift(), - h === b && (h = a.mimeType || c.getResponseHeader("content-type")); - if (h) - for (i in e) - if (e[i] && e[i].test(h)) { - f.unshift(i); - break; - } - if (f[0] in d) j = f[0]; - else { - for (i in d) { - if (!f[0] || a.converters[i + " " + f[0]]) { - j = i; - break; - } - k || (k = i); - } - j = j || k; - } - if (j) { - j !== f[0] && f.unshift(j); - return d[j]; - } - } - function b_(a, b, c, d) { - if (f.isArray(b)) - f.each(b, function (b, e) { - c || bD.test(a) - ? d(a, e) - : b_(a + "[" + (typeof e == "object" ? b : "") + "]", e, c, d); - }); - else if (!c && f.type(b) === "object") - for (var e in b) b_(a + "[" + e + "]", b[e], c, d); - else d(a, b); - } - function b$(a, c) { - var d, - e, - g = f.ajaxSettings.flatOptions || {}; - for (d in c) c[d] !== b && ((g[d] ? a : e || (e = {}))[d] = c[d]); - e && f.extend(!0, a, e); - } - function bZ(a, c, d, e, f, g) { - (f = f || c.dataTypes[0]), (g = g || {}), (g[f] = !0); - var h = a[f], - i = 0, - j = h ? h.length : 0, - k = a === bS, - l; - for (; i < j && (k || !l); i++) - (l = h[i](c, d, e)), - typeof l == "string" && - (!k || g[l] - ? (l = b) - : (c.dataTypes.unshift(l), (l = bZ(a, c, d, e, l, g)))); - (k || !l) && !g["*"] && (l = bZ(a, c, d, e, "*", g)); - return l; - } - function bY(a) { - return function (b, c) { - typeof b != "string" && ((c = b), (b = "*")); - if (f.isFunction(c)) { - var d = b.toLowerCase().split(bO), - e = 0, - g = d.length, - h, - i, - j; - for (; e < g; e++) - (h = d[e]), - (j = /^\+/.test(h)), - j && (h = h.substr(1) || "*"), - (i = a[h] = a[h] || []), - i[j ? "unshift" : "push"](c); - } - }; - } - function bB(a, b, c) { - var d = b === "width" ? a.offsetWidth : a.offsetHeight, - e = b === "width" ? 1 : 0, - g = 4; - if (d > 0) { - if (c !== "border") - for (; e < g; e += 2) - c || (d -= parseFloat(f.css(a, "padding" + bx[e])) || 0), - c === "margin" - ? (d += parseFloat(f.css(a, c + bx[e])) || 0) - : (d -= parseFloat(f.css(a, "border" + bx[e] + "Width")) || 0); - return d + "px"; - } - d = by(a, b); - if (d < 0 || d == null) d = a.style[b]; - if (bt.test(d)) return d; - d = parseFloat(d) || 0; - if (c) - for (; e < g; e += 2) - (d += parseFloat(f.css(a, "padding" + bx[e])) || 0), - c !== "padding" && - (d += parseFloat(f.css(a, "border" + bx[e] + "Width")) || 0), - c === "margin" && (d += parseFloat(f.css(a, c + bx[e])) || 0); - return d + "px"; - } - function bo(a) { - var b = c.createElement("div"); - bh.appendChild(b), (b.innerHTML = a.outerHTML); - return b.firstChild; - } - function bn(a) { - var b = (a.nodeName || "").toLowerCase(); - b === "input" - ? bm(a) - : b !== "script" && - typeof a.getElementsByTagName != "undefined" && - f.grep(a.getElementsByTagName("input"), bm); - } - function bm(a) { - if (a.type === "checkbox" || a.type === "radio") - a.defaultChecked = a.checked; - } - function bl(a) { - return typeof a.getElementsByTagName != "undefined" - ? a.getElementsByTagName("*") - : typeof a.querySelectorAll != "undefined" - ? a.querySelectorAll("*") - : []; - } - function bk(a, b) { - var c; - b.nodeType === 1 && - (b.clearAttributes && b.clearAttributes(), - b.mergeAttributes && b.mergeAttributes(a), - (c = b.nodeName.toLowerCase()), - c === "object" - ? (b.outerHTML = a.outerHTML) - : c !== "input" || (a.type !== "checkbox" && a.type !== "radio") - ? c === "option" - ? (b.selected = a.defaultSelected) - : c === "input" || c === "textarea" - ? (b.defaultValue = a.defaultValue) - : c === "script" && b.text !== a.text && (b.text = a.text) - : (a.checked && (b.defaultChecked = b.checked = a.checked), - b.value !== a.value && (b.value = a.value)), - b.removeAttribute(f.expando), - b.removeAttribute("_submit_attached"), - b.removeAttribute("_change_attached")); - } - function bj(a, b) { - if (b.nodeType === 1 && !!f.hasData(a)) { - var c, - d, - e, - g = f._data(a), - h = f._data(b, g), - i = g.events; - if (i) { - delete h.handle, (h.events = {}); - for (c in i) - for (d = 0, e = i[c].length; d < e; d++) f.event.add(b, c, i[c][d]); - } - h.data && (h.data = f.extend({}, h.data)); - } - } - function bi(a, b) { - return f.nodeName(a, "table") - ? a.getElementsByTagName("tbody")[0] || - a.appendChild(a.ownerDocument.createElement("tbody")) - : a; - } - function U(a) { - var b = V.split("|"), - c = a.createDocumentFragment(); - if (c.createElement) while (b.length) c.createElement(b.pop()); - return c; - } - function T(a, b, c) { - b = b || 0; - if (f.isFunction(b)) - return f.grep(a, function (a, d) { - var e = !!b.call(a, d, a); - return e === c; - }); - if (b.nodeType) - return f.grep(a, function (a, d) { - return (a === b) === c; - }); - if (typeof b == "string") { - var d = f.grep(a, function (a) { - return a.nodeType === 1; - }); - if (O.test(b)) return f.filter(b, d, !c); - b = f.filter(b, d); - } - return f.grep(a, function (a, d) { - return f.inArray(a, b) >= 0 === c; - }); - } - function S(a) { - return !a || !a.parentNode || a.parentNode.nodeType === 11; - } - function K() { - return !0; - } - function J() { - return !1; - } - function n(a, b, c) { - var d = b + "defer", - e = b + "queue", - g = b + "mark", - h = f._data(a, d); - h && - (c === "queue" || !f._data(a, e)) && - (c === "mark" || !f._data(a, g)) && - setTimeout(function () { - !f._data(a, e) && !f._data(a, g) && (f.removeData(a, d, !0), h.fire()); - }, 0); - } - function m(a) { - for (var b in a) { - if (b === "data" && f.isEmptyObject(a[b])) continue; - if (b !== "toJSON") return !1; - } - return !0; - } - function l(a, c, d) { - if (d === b && a.nodeType === 1) { - var e = "data-" + c.replace(k, "-$1").toLowerCase(); - d = a.getAttribute(e); - if (typeof d == "string") { - try { - d = - d === "true" - ? !0 - : d === "false" - ? !1 - : d === "null" - ? null - : f.isNumeric(d) - ? +d - : j.test(d) - ? f.parseJSON(d) - : d; - } catch (g) {} - f.data(a, c, d); - } else d = b; - } - return d; - } - function h(a) { - var b = (g[a] = {}), - c, - d; - a = a.split(/\s+/); - for (c = 0, d = a.length; c < d; c++) b[a[c]] = !0; - return b; - } - var c = a.document, - d = a.navigator, - e = a.location, - f = (function () { - function J() { - if (!e.isReady) { - try { - c.documentElement.doScroll("left"); - } catch (a) { - setTimeout(J, 1); - return; - } - e.ready(); - } - } - var e = function (a, b) { - return new e.fn.init(a, b, h); - }, - f = a.jQuery, - g = a.$, - h, - i = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, - j = /\S/, - k = /^\s+/, - l = /\s+$/, - m = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, - n = /^[\],:{}\s]*$/, - o = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, - p = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, - q = /(?:^|:|,)(?:\s*\[)+/g, - r = /(webkit)[ \/]([\w.]+)/, - s = /(opera)(?:.*version)?[ \/]([\w.]+)/, - t = /(msie) ([\w.]+)/, - u = /(mozilla)(?:.*? rv:([\w.]+))?/, - v = /-([a-z]|[0-9])/gi, - w = /^-ms-/, - x = function (a, b) { - return (b + "").toUpperCase(); - }, - y = d.userAgent, - z, - A, - B, - C = Object.prototype.toString, - D = Object.prototype.hasOwnProperty, - E = Array.prototype.push, - F = Array.prototype.slice, - G = String.prototype.trim, - H = Array.prototype.indexOf, - I = {}; - (e.fn = e.prototype = - { - constructor: e, - init: function (a, d, f) { - var g, h, j, k; - if (!a) return this; - if (a.nodeType) { - (this.context = this[0] = a), (this.length = 1); - return this; - } - if (a === "body" && !d && c.body) { - (this.context = c), - (this[0] = c.body), - (this.selector = a), - (this.length = 1); - return this; - } - if (typeof a == "string") { - a.charAt(0) !== "<" || - a.charAt(a.length - 1) !== ">" || - a.length < 3 - ? (g = i.exec(a)) - : (g = [null, a, null]); - if (g && (g[1] || !d)) { - if (g[1]) { - (d = d instanceof e ? d[0] : d), - (k = d ? d.ownerDocument || d : c), - (j = m.exec(a)), - j - ? e.isPlainObject(d) - ? ((a = [c.createElement(j[1])]), - e.fn.attr.call(a, d, !0)) - : (a = [k.createElement(j[1])]) - : ((j = e.buildFragment([g[1]], [k])), - (a = (j.cacheable ? e.clone(j.fragment) : j.fragment) - .childNodes)); - return e.merge(this, a); - } - h = c.getElementById(g[2]); - if (h && h.parentNode) { - if (h.id !== g[2]) return f.find(a); - (this.length = 1), (this[0] = h); - } - (this.context = c), (this.selector = a); - return this; - } - return !d || d.jquery - ? (d || f).find(a) - : this.constructor(d).find(a); - } - if (e.isFunction(a)) return f.ready(a); - a.selector !== b && - ((this.selector = a.selector), (this.context = a.context)); - return e.makeArray(a, this); - }, - selector: "", - jquery: "1.7.2", - length: 0, - size: function () { - return this.length; - }, - toArray: function () { - return F.call(this, 0); - }, - get: function (a) { - return a == null - ? this.toArray() - : a < 0 - ? this[this.length + a] - : this[a]; - }, - pushStack: function (a, b, c) { - var d = this.constructor(); - e.isArray(a) ? E.apply(d, a) : e.merge(d, a), - (d.prevObject = this), - (d.context = this.context), - b === "find" - ? (d.selector = this.selector + (this.selector ? " " : "") + c) - : b && (d.selector = this.selector + "." + b + "(" + c + ")"); - return d; - }, - each: function (a, b) { - return e.each(this, a, b); - }, - ready: function (a) { - e.bindReady(), A.add(a); - return this; - }, - eq: function (a) { - a = +a; - return a === -1 ? this.slice(a) : this.slice(a, a + 1); - }, - first: function () { - return this.eq(0); - }, - last: function () { - return this.eq(-1); - }, - slice: function () { - return this.pushStack( - F.apply(this, arguments), - "slice", - F.call(arguments).join(","), - ); - }, - map: function (a) { - return this.pushStack( - e.map(this, function (b, c) { - return a.call(b, c, b); - }), - ); - }, - end: function () { - return this.prevObject || this.constructor(null); - }, - push: E, - sort: [].sort, - splice: [].splice, - }), - (e.fn.init.prototype = e.fn), - (e.extend = e.fn.extend = - function () { - var a, - c, - d, - f, - g, - h, - i = arguments[0] || {}, - j = 1, - k = arguments.length, - l = !1; - typeof i == "boolean" && - ((l = i), (i = arguments[1] || {}), (j = 2)), - typeof i != "object" && !e.isFunction(i) && (i = {}), - k === j && ((i = this), --j); - for (; j < k; j++) - if ((a = arguments[j]) != null) - for (c in a) { - (d = i[c]), (f = a[c]); - if (i === f) continue; - l && f && (e.isPlainObject(f) || (g = e.isArray(f))) - ? (g - ? ((g = !1), (h = d && e.isArray(d) ? d : [])) - : (h = d && e.isPlainObject(d) ? d : {}), - (i[c] = e.extend(l, h, f))) - : f !== b && (i[c] = f); - } - return i; - }), - e.extend({ - noConflict: function (b) { - a.$ === e && (a.$ = g), b && a.jQuery === e && (a.jQuery = f); - return e; - }, - isReady: !1, - readyWait: 1, - holdReady: function (a) { - a ? e.readyWait++ : e.ready(!0); - }, - ready: function (a) { - if ((a === !0 && !--e.readyWait) || (a !== !0 && !e.isReady)) { - if (!c.body) return setTimeout(e.ready, 1); - e.isReady = !0; - if (a !== !0 && --e.readyWait > 0) return; - A.fireWith(c, [e]), - e.fn.trigger && e(c).trigger("ready").off("ready"); - } - }, - bindReady: function () { - if (!A) { - A = e.Callbacks("once memory"); - if (c.readyState === "complete") return setTimeout(e.ready, 1); - if (c.addEventListener) - c.addEventListener("DOMContentLoaded", B, !1), - a.addEventListener("load", e.ready, !1); - else if (c.attachEvent) { - c.attachEvent("onreadystatechange", B), - a.attachEvent("onload", e.ready); - var b = !1; - try { - b = a.frameElement == null; - } catch (d) {} - c.documentElement.doScroll && b && J(); - } - } - }, - isFunction: function (a) { - return e.type(a) === "function"; - }, - isArray: - Array.isArray || - function (a) { - return e.type(a) === "array"; - }, - isWindow: function (a) { - return a != null && a == a.window; - }, - isNumeric: function (a) { - return !isNaN(parseFloat(a)) && isFinite(a); - }, - type: function (a) { - return a == null ? String(a) : I[C.call(a)] || "object"; - }, - isPlainObject: function (a) { - if (!a || e.type(a) !== "object" || a.nodeType || e.isWindow(a)) - return !1; - try { - if ( - a.constructor && - !D.call(a, "constructor") && - !D.call(a.constructor.prototype, "isPrototypeOf") - ) - return !1; - } catch (c) { - return !1; - } - var d; - for (d in a); - return d === b || D.call(a, d); - }, - isEmptyObject: function (a) { - for (var b in a) return !1; - return !0; - }, - error: function (a) { - throw new Error(a); - }, - parseJSON: function (b) { - if (typeof b != "string" || !b) return null; - b = e.trim(b); - if (a.JSON && a.JSON.parse) return a.JSON.parse(b); - if (n.test(b.replace(o, "@").replace(p, "]").replace(q, ""))) - return new Function("return " + b)(); - e.error("Invalid JSON: " + b); - }, - parseXML: function (c) { - if (typeof c != "string" || !c) return null; - var d, f; - try { - a.DOMParser - ? ((f = new DOMParser()), - (d = f.parseFromString(c, "text/xml"))) - : ((d = new ActiveXObject("Microsoft.XMLDOM")), - (d.async = "false"), - d.loadXML(c)); - } catch (g) { - d = b; - } - (!d || - !d.documentElement || - d.getElementsByTagName("parsererror").length) && - e.error("Invalid XML: " + c); - return d; - }, - noop: function () {}, - globalEval: function (b) { - b && - j.test(b) && - ( - a.execScript || - function (b) { - a.eval.call(a, b); - } - )(b); - }, - camelCase: function (a) { - return a.replace(w, "ms-").replace(v, x); - }, - nodeName: function (a, b) { - return a.nodeName && a.nodeName.toUpperCase() === b.toUpperCase(); - }, - each: function (a, c, d) { - var f, - g = 0, - h = a.length, - i = h === b || e.isFunction(a); - if (d) { - if (i) { - for (f in a) if (c.apply(a[f], d) === !1) break; - } else for (; g < h; ) if (c.apply(a[g++], d) === !1) break; - } else if (i) { - for (f in a) if (c.call(a[f], f, a[f]) === !1) break; - } else for (; g < h; ) if (c.call(a[g], g, a[g++]) === !1) break; - return a; - }, - trim: G - ? function (a) { - return a == null ? "" : G.call(a); - } - : function (a) { - return a == null ? "" : (a + "").replace(k, "").replace(l, ""); - }, - makeArray: function (a, b) { - var c = b || []; - if (a != null) { - var d = e.type(a); - a.length == null || - d === "string" || - d === "function" || - d === "regexp" || - e.isWindow(a) - ? E.call(c, a) - : e.merge(c, a); - } - return c; - }, - inArray: function (a, b, c) { - var d; - if (b) { - if (H) return H.call(b, a, c); - (d = b.length), (c = c ? (c < 0 ? Math.max(0, d + c) : c) : 0); - for (; c < d; c++) if (c in b && b[c] === a) return c; - } - return -1; - }, - merge: function (a, c) { - var d = a.length, - e = 0; - if (typeof c.length == "number") - for (var f = c.length; e < f; e++) a[d++] = c[e]; - else while (c[e] !== b) a[d++] = c[e++]; - a.length = d; - return a; - }, - grep: function (a, b, c) { - var d = [], - e; - c = !!c; - for (var f = 0, g = a.length; f < g; f++) - (e = !!b(a[f], f)), c !== e && d.push(a[f]); - return d; - }, - map: function (a, c, d) { - var f, - g, - h = [], - i = 0, - j = a.length, - k = - a instanceof e || - (j !== b && - typeof j == "number" && - ((j > 0 && a[0] && a[j - 1]) || j === 0 || e.isArray(a))); - if (k) - for (; i < j; i++) - (f = c(a[i], i, d)), f != null && (h[h.length] = f); - else - for (g in a) (f = c(a[g], g, d)), f != null && (h[h.length] = f); - return h.concat.apply([], h); - }, - guid: 1, - proxy: function (a, c) { - if (typeof c == "string") { - var d = a[c]; - (c = a), (a = d); - } - if (!e.isFunction(a)) return b; - var f = F.call(arguments, 2), - g = function () { - return a.apply(c, f.concat(F.call(arguments))); - }; - g.guid = a.guid = a.guid || g.guid || e.guid++; - return g; - }, - access: function (a, c, d, f, g, h, i) { - var j, - k = d == null, - l = 0, - m = a.length; - if (d && typeof d == "object") { - for (l in d) e.access(a, c, l, d[l], 1, h, f); - g = 1; - } else if (f !== b) { - (j = i === b && e.isFunction(f)), - k && - (j - ? ((j = c), - (c = function (a, b, c) { - return j.call(e(a), c); - })) - : (c.call(a, f), (c = null))); - if (c) - for (; l < m; l++) - c(a[l], d, j ? f.call(a[l], l, c(a[l], d)) : f, i); - g = 1; - } - return g ? a : k ? c.call(a) : m ? c(a[0], d) : h; - }, - now: function () { - return new Date().getTime(); - }, - uaMatch: function (a) { - a = a.toLowerCase(); - var b = - r.exec(a) || - s.exec(a) || - t.exec(a) || - (a.indexOf("compatible") < 0 && u.exec(a)) || - []; - return { browser: b[1] || "", version: b[2] || "0" }; - }, - sub: function () { - function a(b, c) { - return new a.fn.init(b, c); - } - e.extend(!0, a, this), - (a.superclass = this), - (a.fn = a.prototype = this()), - (a.fn.constructor = a), - (a.sub = this.sub), - (a.fn.init = function (d, f) { - f && f instanceof e && !(f instanceof a) && (f = a(f)); - return e.fn.init.call(this, d, f, b); - }), - (a.fn.init.prototype = a.fn); - var b = a(c); - return a; - }, - browser: {}, - }), - e.each( - "Boolean Number String Function Array Date RegExp Object".split(" "), - function (a, b) { - I["[object " + b + "]"] = b.toLowerCase(); - }, - ), - (z = e.uaMatch(y)), - z.browser && - ((e.browser[z.browser] = !0), (e.browser.version = z.version)), - e.browser.webkit && (e.browser.safari = !0), - j.test(" ") && ((k = /^[\s\xA0]+/), (l = /[\s\xA0]+$/)), - (h = e(c)), - c.addEventListener - ? (B = function () { - c.removeEventListener("DOMContentLoaded", B, !1), e.ready(); - }) - : c.attachEvent && - (B = function () { - c.readyState === "complete" && - (c.detachEvent("onreadystatechange", B), e.ready()); - }); - return e; - })(), - g = {}; - f.Callbacks = function (a) { - a = a ? g[a] || h(a) : {}; - var c = [], - d = [], - e, - i, - j, - k, - l, - m, - n = function (b) { - var d, e, g, h, i; - for (d = 0, e = b.length; d < e; d++) - (g = b[d]), - (h = f.type(g)), - h === "array" - ? n(g) - : h === "function" && (!a.unique || !p.has(g)) && c.push(g); - }, - o = function (b, f) { - (f = f || []), - (e = !a.memory || [b, f]), - (i = !0), - (j = !0), - (m = k || 0), - (k = 0), - (l = c.length); - for (; c && m < l; m++) - if (c[m].apply(b, f) === !1 && a.stopOnFalse) { - e = !0; - break; - } - (j = !1), - c && - (a.once - ? e === !0 - ? p.disable() - : (c = []) - : d && d.length && ((e = d.shift()), p.fireWith(e[0], e[1]))); - }, - p = { - add: function () { - if (c) { - var a = c.length; - n(arguments), - j ? (l = c.length) : e && e !== !0 && ((k = a), o(e[0], e[1])); - } - return this; - }, - remove: function () { - if (c) { - var b = arguments, - d = 0, - e = b.length; - for (; d < e; d++) - for (var f = 0; f < c.length; f++) - if (b[d] === c[f]) { - j && f <= l && (l--, f <= m && m--), c.splice(f--, 1); - if (a.unique) break; - } - } - return this; - }, - has: function (a) { - if (c) { - var b = 0, - d = c.length; - for (; b < d; b++) if (a === c[b]) return !0; - } - return !1; - }, - empty: function () { - c = []; - return this; - }, - disable: function () { - c = d = e = b; - return this; - }, - disabled: function () { - return !c; - }, - lock: function () { - (d = b), (!e || e === !0) && p.disable(); - return this; - }, - locked: function () { - return !d; - }, - fireWith: function (b, c) { - d && (j ? a.once || d.push([b, c]) : (!a.once || !e) && o(b, c)); - return this; - }, - fire: function () { - p.fireWith(this, arguments); - return this; - }, - fired: function () { - return !!i; - }, - }; - return p; - }; - var i = [].slice; - f.extend({ - Deferred: function (a) { - var b = f.Callbacks("once memory"), - c = f.Callbacks("once memory"), - d = f.Callbacks("memory"), - e = "pending", - g = { resolve: b, reject: c, notify: d }, - h = { - done: b.add, - fail: c.add, - progress: d.add, - state: function () { - return e; - }, - isResolved: b.fired, - isRejected: c.fired, - then: function (a, b, c) { - i.done(a).fail(b).progress(c); - return this; - }, - always: function () { - i.done.apply(i, arguments).fail.apply(i, arguments); - return this; - }, - pipe: function (a, b, c) { - return f - .Deferred(function (d) { - f.each( - { - done: [a, "resolve"], - fail: [b, "reject"], - progress: [c, "notify"], - }, - function (a, b) { - var c = b[0], - e = b[1], - g; - f.isFunction(c) - ? i[a](function () { - (g = c.apply(this, arguments)), - g && f.isFunction(g.promise) - ? g.promise().then(d.resolve, d.reject, d.notify) - : d[e + "With"](this === i ? d : this, [g]); - }) - : i[a](d[e]); - }, - ); - }) - .promise(); - }, - promise: function (a) { - if (a == null) a = h; - else for (var b in h) a[b] = h[b]; - return a; - }, - }, - i = h.promise({}), - j; - for (j in g) (i[j] = g[j].fire), (i[j + "With"] = g[j].fireWith); - i - .done( - function () { - e = "resolved"; - }, - c.disable, - d.lock, - ) - .fail( - function () { - e = "rejected"; - }, - b.disable, - d.lock, - ), - a && a.call(i, i); - return i; - }, - when: function (a) { - function m(a) { - return function (b) { - (e[a] = arguments.length > 1 ? i.call(arguments, 0) : b), - j.notifyWith(k, e); - }; - } - function l(a) { - return function (c) { - (b[a] = arguments.length > 1 ? i.call(arguments, 0) : c), - --g || j.resolveWith(j, b); - }; - } - var b = i.call(arguments, 0), - c = 0, - d = b.length, - e = Array(d), - g = d, - h = d, - j = d <= 1 && a && f.isFunction(a.promise) ? a : f.Deferred(), - k = j.promise(); - if (d > 1) { - for (; c < d; c++) - b[c] && b[c].promise && f.isFunction(b[c].promise) - ? b[c].promise().then(l(c), j.reject, m(c)) - : --g; - g || j.resolveWith(j, b); - } else j !== a && j.resolveWith(j, d ? [a] : []); - return k; - }, - }), - (f.support = (function () { - var b, - d, - e, - g, - h, - i, - j, - k, - l, - m, - n, - o, - p = c.createElement("div"), - q = c.documentElement; - p.setAttribute("className", "t"), - (p.innerHTML = - "
      a"), - (d = p.getElementsByTagName("*")), - (e = p.getElementsByTagName("a")[0]); - if (!d || !d.length || !e) return {}; - (g = c.createElement("select")), - (h = g.appendChild(c.createElement("option"))), - (i = p.getElementsByTagName("input")[0]), - (b = { - leadingWhitespace: p.firstChild.nodeType === 3, - tbody: !p.getElementsByTagName("tbody").length, - htmlSerialize: !!p.getElementsByTagName("link").length, - style: /top/.test(e.getAttribute("style")), - hrefNormalized: e.getAttribute("href") === "/a", - opacity: /^0.55/.test(e.style.opacity), - cssFloat: !!e.style.cssFloat, - checkOn: i.value === "on", - optSelected: h.selected, - getSetAttribute: p.className !== "t", - enctype: !!c.createElement("form").enctype, - html5Clone: - c.createElement("nav").cloneNode(!0).outerHTML !== "<:nav>", - submitBubbles: !0, - changeBubbles: !0, - focusinBubbles: !1, - deleteExpando: !0, - noCloneEvent: !0, - inlineBlockNeedsLayout: !1, - shrinkWrapBlocks: !1, - reliableMarginRight: !0, - pixelMargin: !0, - }), - (f.boxModel = b.boxModel = c.compatMode === "CSS1Compat"), - (i.checked = !0), - (b.noCloneChecked = i.cloneNode(!0).checked), - (g.disabled = !0), - (b.optDisabled = !h.disabled); - try { - delete p.test; - } catch (r) { - b.deleteExpando = !1; - } - !p.addEventListener && - p.attachEvent && - p.fireEvent && - (p.attachEvent("onclick", function () { - b.noCloneEvent = !1; - }), - p.cloneNode(!0).fireEvent("onclick")), - (i = c.createElement("input")), - (i.value = "t"), - i.setAttribute("type", "radio"), - (b.radioValue = i.value === "t"), - i.setAttribute("checked", "checked"), - i.setAttribute("name", "t"), - p.appendChild(i), - (j = c.createDocumentFragment()), - j.appendChild(p.lastChild), - (b.checkClone = j.cloneNode(!0).cloneNode(!0).lastChild.checked), - (b.appendChecked = i.checked), - j.removeChild(i), - j.appendChild(p); - if (p.attachEvent) - for (n in { submit: 1, change: 1, focusin: 1 }) - (m = "on" + n), - (o = m in p), - o || - (p.setAttribute(m, "return;"), (o = typeof p[m] == "function")), - (b[n + "Bubbles"] = o); - j.removeChild(p), - (j = g = h = p = i = null), - f(function () { - var d, - e, - g, - h, - i, - j, - l, - m, - n, - q, - r, - s, - t, - u = c.getElementsByTagName("body")[0]; - !u || - ((m = 1), - (t = "padding:0;margin:0;border:"), - (r = "position:absolute;top:0;left:0;width:1px;height:1px;"), - (s = t + "0;visibility:hidden;"), - (n = "style='" + r + t + "5px solid #000;"), - (q = - "

      " + - "" + - "
      "), - (d = c.createElement("div")), - (d.style.cssText = - s + - "width:0;height:0;position:static;top:0;margin-top:" + - m + - "px"), - u.insertBefore(d, u.firstChild), - (p = c.createElement("div")), - d.appendChild(p), - (p.innerHTML = - "
      t
      "), - (k = p.getElementsByTagName("td")), - (o = k[0].offsetHeight === 0), - (k[0].style.display = ""), - (k[1].style.display = "none"), - (b.reliableHiddenOffsets = o && k[0].offsetHeight === 0), - a.getComputedStyle && - ((p.innerHTML = ""), - (l = c.createElement("div")), - (l.style.width = "0"), - (l.style.marginRight = "0"), - (p.style.width = "2px"), - p.appendChild(l), - (b.reliableMarginRight = - (parseInt( - (a.getComputedStyle(l, null) || { marginRight: 0 }) - .marginRight, - 10, - ) || 0) === 0)), - typeof p.style.zoom != "undefined" && - ((p.innerHTML = ""), - (p.style.width = p.style.padding = "1px"), - (p.style.border = 0), - (p.style.overflow = "hidden"), - (p.style.display = "inline"), - (p.style.zoom = 1), - (b.inlineBlockNeedsLayout = p.offsetWidth === 3), - (p.style.display = "block"), - (p.style.overflow = "visible"), - (p.innerHTML = "
      "), - (b.shrinkWrapBlocks = p.offsetWidth !== 3)), - (p.style.cssText = r + s), - (p.innerHTML = q), - (e = p.firstChild), - (g = e.firstChild), - (i = e.nextSibling.firstChild.firstChild), - (j = { - doesNotAddBorder: g.offsetTop !== 5, - doesAddBorderForTableAndCells: i.offsetTop === 5, - }), - (g.style.position = "fixed"), - (g.style.top = "20px"), - (j.fixedPosition = g.offsetTop === 20 || g.offsetTop === 15), - (g.style.position = g.style.top = ""), - (e.style.overflow = "hidden"), - (e.style.position = "relative"), - (j.subtractsBorderForOverflowNotVisible = g.offsetTop === -5), - (j.doesNotIncludeMarginInBodyOffset = u.offsetTop !== m), - a.getComputedStyle && - ((p.style.marginTop = "1%"), - (b.pixelMargin = - (a.getComputedStyle(p, null) || { marginTop: 0 }).marginTop !== - "1%")), - typeof d.style.zoom != "undefined" && (d.style.zoom = 1), - u.removeChild(d), - (l = p = d = null), - f.extend(b, j)); - }); - return b; - })()); - var j = /^(?:\{.*\}|\[.*\])$/, - k = /([A-Z])/g; - f.extend({ - cache: {}, - uuid: 0, - expando: "jQuery" + (f.fn.jquery + Math.random()).replace(/\D/g, ""), - noData: { - embed: !0, - object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", - applet: !0, - }, - hasData: function (a) { - a = a.nodeType ? f.cache[a[f.expando]] : a[f.expando]; - return !!a && !m(a); - }, - data: function (a, c, d, e) { - if (!!f.acceptData(a)) { - var g, - h, - i, - j = f.expando, - k = typeof c == "string", - l = a.nodeType, - m = l ? f.cache : a, - n = l ? a[j] : a[j] && j, - o = c === "events"; - if ((!n || !m[n] || (!o && !e && !m[n].data)) && k && d === b) return; - n || (l ? (a[j] = n = ++f.uuid) : (n = j)), - m[n] || ((m[n] = {}), l || (m[n].toJSON = f.noop)); - if (typeof c == "object" || typeof c == "function") - e ? (m[n] = f.extend(m[n], c)) : (m[n].data = f.extend(m[n].data, c)); - (g = h = m[n]), - e || (h.data || (h.data = {}), (h = h.data)), - d !== b && (h[f.camelCase(c)] = d); - if (o && !h[c]) return g.events; - k ? ((i = h[c]), i == null && (i = h[f.camelCase(c)])) : (i = h); - return i; - } - }, - removeData: function (a, b, c) { - if (!!f.acceptData(a)) { - var d, - e, - g, - h = f.expando, - i = a.nodeType, - j = i ? f.cache : a, - k = i ? a[h] : h; - if (!j[k]) return; - if (b) { - d = c ? j[k] : j[k].data; - if (d) { - f.isArray(b) || - (b in d - ? (b = [b]) - : ((b = f.camelCase(b)), - b in d ? (b = [b]) : (b = b.split(" ")))); - for (e = 0, g = b.length; e < g; e++) delete d[b[e]]; - if (!(c ? m : f.isEmptyObject)(d)) return; - } - } - if (!c) { - delete j[k].data; - if (!m(j[k])) return; - } - f.support.deleteExpando || !j.setInterval ? delete j[k] : (j[k] = null), - i && - (f.support.deleteExpando - ? delete a[h] - : a.removeAttribute - ? a.removeAttribute(h) - : (a[h] = null)); - } - }, - _data: function (a, b, c) { - return f.data(a, b, c, !0); - }, - acceptData: function (a) { - if (a.nodeName) { - var b = f.noData[a.nodeName.toLowerCase()]; - if (b) return b !== !0 && a.getAttribute("classid") === b; - } - return !0; - }, - }), - f.fn.extend({ - data: function (a, c) { - var d, - e, - g, - h, - i, - j = this[0], - k = 0, - m = null; - if (a === b) { - if (this.length) { - m = f.data(j); - if (j.nodeType === 1 && !f._data(j, "parsedAttrs")) { - g = j.attributes; - for (i = g.length; k < i; k++) - (h = g[k].name), - h.indexOf("data-") === 0 && - ((h = f.camelCase(h.substring(5))), l(j, h, m[h])); - f._data(j, "parsedAttrs", !0); - } - } - return m; - } - if (typeof a == "object") - return this.each(function () { - f.data(this, a); - }); - (d = a.split(".", 2)), - (d[1] = d[1] ? "." + d[1] : ""), - (e = d[1] + "!"); - return f.access( - this, - function (c) { - if (c === b) { - (m = this.triggerHandler("getData" + e, [d[0]])), - m === b && j && ((m = f.data(j, a)), (m = l(j, a, m))); - return m === b && d[1] ? this.data(d[0]) : m; - } - (d[1] = c), - this.each(function () { - var b = f(this); - b.triggerHandler("setData" + e, d), - f.data(this, a, c), - b.triggerHandler("changeData" + e, d); - }); - }, - null, - c, - arguments.length > 1, - null, - !1, - ); - }, - removeData: function (a) { - return this.each(function () { - f.removeData(this, a); - }); - }, - }), - f.extend({ - _mark: function (a, b) { - a && - ((b = (b || "fx") + "mark"), f._data(a, b, (f._data(a, b) || 0) + 1)); - }, - _unmark: function (a, b, c) { - a !== !0 && ((c = b), (b = a), (a = !1)); - if (b) { - c = c || "fx"; - var d = c + "mark", - e = a ? 0 : (f._data(b, d) || 1) - 1; - e ? f._data(b, d, e) : (f.removeData(b, d, !0), n(b, c, "mark")); - } - }, - queue: function (a, b, c) { - var d; - if (a) { - (b = (b || "fx") + "queue"), - (d = f._data(a, b)), - c && - (!d || f.isArray(c) - ? (d = f._data(a, b, f.makeArray(c))) - : d.push(c)); - return d || []; - } - }, - dequeue: function (a, b) { - b = b || "fx"; - var c = f.queue(a, b), - d = c.shift(), - e = {}; - d === "inprogress" && (d = c.shift()), - d && - (b === "fx" && c.unshift("inprogress"), - f._data(a, b + ".run", e), - d.call( - a, - function () { - f.dequeue(a, b); - }, - e, - )), - c.length || - (f.removeData(a, b + "queue " + b + ".run", !0), n(a, b, "queue")); - }, - }), - f.fn.extend({ - queue: function (a, c) { - var d = 2; - typeof a != "string" && ((c = a), (a = "fx"), d--); - if (arguments.length < d) return f.queue(this[0], a); - return c === b - ? this - : this.each(function () { - var b = f.queue(this, a, c); - a === "fx" && b[0] !== "inprogress" && f.dequeue(this, a); - }); - }, - dequeue: function (a) { - return this.each(function () { - f.dequeue(this, a); - }); - }, - delay: function (a, b) { - (a = f.fx ? f.fx.speeds[a] || a : a), (b = b || "fx"); - return this.queue(b, function (b, c) { - var d = setTimeout(b, a); - c.stop = function () { - clearTimeout(d); - }; - }); - }, - clearQueue: function (a) { - return this.queue(a || "fx", []); - }, - promise: function (a, c) { - function m() { - --h || d.resolveWith(e, [e]); - } - typeof a != "string" && ((c = a), (a = b)), (a = a || "fx"); - var d = f.Deferred(), - e = this, - g = e.length, - h = 1, - i = a + "defer", - j = a + "queue", - k = a + "mark", - l; - while (g--) - if ( - (l = - f.data(e[g], i, b, !0) || - ((f.data(e[g], j, b, !0) || f.data(e[g], k, b, !0)) && - f.data(e[g], i, f.Callbacks("once memory"), !0))) - ) - h++, l.add(m); - m(); - return d.promise(c); - }, - }); - var o = /[\n\t\r]/g, - p = /\s+/, - q = /\r/g, - r = /^(?:button|input)$/i, - s = /^(?:button|input|object|select|textarea)$/i, - t = /^a(?:rea)?$/i, - u = - /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, - v = f.support.getSetAttribute, - w, - x, - y; - f.fn.extend({ - attr: function (a, b) { - return f.access(this, f.attr, a, b, arguments.length > 1); - }, - removeAttr: function (a) { - return this.each(function () { - f.removeAttr(this, a); - }); - }, - prop: function (a, b) { - return f.access(this, f.prop, a, b, arguments.length > 1); - }, - removeProp: function (a) { - a = f.propFix[a] || a; - return this.each(function () { - try { - (this[a] = b), delete this[a]; - } catch (c) {} - }); - }, - addClass: function (a) { - var b, c, d, e, g, h, i; - if (f.isFunction(a)) - return this.each(function (b) { - f(this).addClass(a.call(this, b, this.className)); - }); - if (a && typeof a == "string") { - b = a.split(p); - for (c = 0, d = this.length; c < d; c++) { - e = this[c]; - if (e.nodeType === 1) - if (!e.className && b.length === 1) e.className = a; - else { - g = " " + e.className + " "; - for (h = 0, i = b.length; h < i; h++) - ~g.indexOf(" " + b[h] + " ") || (g += b[h] + " "); - e.className = f.trim(g); - } - } - } - return this; - }, - removeClass: function (a) { - var c, d, e, g, h, i, j; - if (f.isFunction(a)) - return this.each(function (b) { - f(this).removeClass(a.call(this, b, this.className)); - }); - if ((a && typeof a == "string") || a === b) { - c = (a || "").split(p); - for (d = 0, e = this.length; d < e; d++) { - g = this[d]; - if (g.nodeType === 1 && g.className) - if (a) { - h = (" " + g.className + " ").replace(o, " "); - for (i = 0, j = c.length; i < j; i++) - h = h.replace(" " + c[i] + " ", " "); - g.className = f.trim(h); - } else g.className = ""; - } - } - return this; - }, - toggleClass: function (a, b) { - var c = typeof a, - d = typeof b == "boolean"; - if (f.isFunction(a)) - return this.each(function (c) { - f(this).toggleClass(a.call(this, c, this.className, b), b); - }); - return this.each(function () { - if (c === "string") { - var e, - g = 0, - h = f(this), - i = b, - j = a.split(p); - while ((e = j[g++])) - (i = d ? i : !h.hasClass(e)), h[i ? "addClass" : "removeClass"](e); - } else if (c === "undefined" || c === "boolean") - this.className && f._data(this, "__className__", this.className), - (this.className = - this.className || a === !1 - ? "" - : f._data(this, "__className__") || ""); - }); - }, - hasClass: function (a) { - var b = " " + a + " ", - c = 0, - d = this.length; - for (; c < d; c++) - if ( - this[c].nodeType === 1 && - (" " + this[c].className + " ").replace(o, " ").indexOf(b) > -1 - ) - return !0; - return !1; - }, - val: function (a) { - var c, - d, - e, - g = this[0]; - { - if (!!arguments.length) { - e = f.isFunction(a); - return this.each(function (d) { - var g = f(this), - h; - if (this.nodeType === 1) { - e ? (h = a.call(this, d, g.val())) : (h = a), - h == null - ? (h = "") - : typeof h == "number" - ? (h += "") - : f.isArray(h) && - (h = f.map(h, function (a) { - return a == null ? "" : a + ""; - })), - (c = - f.valHooks[this.type] || - f.valHooks[this.nodeName.toLowerCase()]); - if (!c || !("set" in c) || c.set(this, h, "value") === b) - this.value = h; - } - }); - } - if (g) { - c = f.valHooks[g.type] || f.valHooks[g.nodeName.toLowerCase()]; - if (c && "get" in c && (d = c.get(g, "value")) !== b) return d; - d = g.value; - return typeof d == "string" ? d.replace(q, "") : d == null ? "" : d; - } - } - }, - }), - f.extend({ - valHooks: { - option: { - get: function (a) { - var b = a.attributes.value; - return !b || b.specified ? a.value : a.text; - }, - }, - select: { - get: function (a) { - var b, - c, - d, - e, - g = a.selectedIndex, - h = [], - i = a.options, - j = a.type === "select-one"; - if (g < 0) return null; - (c = j ? g : 0), (d = j ? g + 1 : i.length); - for (; c < d; c++) { - e = i[c]; - if ( - e.selected && - (f.support.optDisabled - ? !e.disabled - : e.getAttribute("disabled") === null) && - (!e.parentNode.disabled || - !f.nodeName(e.parentNode, "optgroup")) - ) { - b = f(e).val(); - if (j) return b; - h.push(b); - } - } - if (j && !h.length && i.length) return f(i[g]).val(); - return h; - }, - set: function (a, b) { - var c = f.makeArray(b); - f(a) - .find("option") - .each(function () { - this.selected = f.inArray(f(this).val(), c) >= 0; - }), - c.length || (a.selectedIndex = -1); - return c; - }, - }, - }, - attrFn: { - val: !0, - css: !0, - html: !0, - text: !0, - data: !0, - width: !0, - height: !0, - offset: !0, - }, - attr: function (a, c, d, e) { - var g, - h, - i, - j = a.nodeType; - if (!!a && j !== 3 && j !== 8 && j !== 2) { - if (e && c in f.attrFn) return f(a)[c](d); - if (typeof a.getAttribute == "undefined") return f.prop(a, c, d); - (i = j !== 1 || !f.isXMLDoc(a)), - i && - ((c = c.toLowerCase()), - (h = f.attrHooks[c] || (u.test(c) ? x : w))); - if (d !== b) { - if (d === null) { - f.removeAttr(a, c); - return; - } - if (h && "set" in h && i && (g = h.set(a, d, c)) !== b) return g; - a.setAttribute(c, "" + d); - return d; - } - if (h && "get" in h && i && (g = h.get(a, c)) !== null) return g; - g = a.getAttribute(c); - return g === null ? b : g; - } - }, - removeAttr: function (a, b) { - var c, - d, - e, - g, - h, - i = 0; - if (b && a.nodeType === 1) { - (d = b.toLowerCase().split(p)), (g = d.length); - for (; i < g; i++) - (e = d[i]), - e && - ((c = f.propFix[e] || e), - (h = u.test(e)), - h || f.attr(a, e, ""), - a.removeAttribute(v ? e : c), - h && c in a && (a[c] = !1)); - } - }, - attrHooks: { - type: { - set: function (a, b) { - if (r.test(a.nodeName) && a.parentNode) - f.error("type property can't be changed"); - else if ( - !f.support.radioValue && - b === "radio" && - f.nodeName(a, "input") - ) { - var c = a.value; - a.setAttribute("type", b), c && (a.value = c); - return b; - } - }, - }, - value: { - get: function (a, b) { - if (w && f.nodeName(a, "button")) return w.get(a, b); - return b in a ? a.value : null; - }, - set: function (a, b, c) { - if (w && f.nodeName(a, "button")) return w.set(a, b, c); - a.value = b; - }, - }, - }, - propFix: { - tabindex: "tabIndex", - readonly: "readOnly", - for: "htmlFor", - class: "className", - maxlength: "maxLength", - cellspacing: "cellSpacing", - cellpadding: "cellPadding", - rowspan: "rowSpan", - colspan: "colSpan", - usemap: "useMap", - frameborder: "frameBorder", - contenteditable: "contentEditable", - }, - prop: function (a, c, d) { - var e, - g, - h, - i = a.nodeType; - if (!!a && i !== 3 && i !== 8 && i !== 2) { - (h = i !== 1 || !f.isXMLDoc(a)), - h && ((c = f.propFix[c] || c), (g = f.propHooks[c])); - return d !== b - ? g && "set" in g && (e = g.set(a, d, c)) !== b - ? e - : (a[c] = d) - : g && "get" in g && (e = g.get(a, c)) !== null - ? e - : a[c]; - } - }, - propHooks: { - tabIndex: { - get: function (a) { - var c = a.getAttributeNode("tabindex"); - return c && c.specified - ? parseInt(c.value, 10) - : s.test(a.nodeName) || (t.test(a.nodeName) && a.href) - ? 0 - : b; - }, - }, - }, - }), - (f.attrHooks.tabindex = f.propHooks.tabIndex), - (x = { - get: function (a, c) { - var d, - e = f.prop(a, c); - return e === !0 || - (typeof e != "boolean" && - (d = a.getAttributeNode(c)) && - d.nodeValue !== !1) - ? c.toLowerCase() - : b; - }, - set: function (a, b, c) { - var d; - b === !1 - ? f.removeAttr(a, c) - : ((d = f.propFix[c] || c), - d in a && (a[d] = !0), - a.setAttribute(c, c.toLowerCase())); - return c; - }, - }), - v || - ((y = { name: !0, id: !0, coords: !0 }), - (w = f.valHooks.button = - { - get: function (a, c) { - var d; - d = a.getAttributeNode(c); - return d && (y[c] ? d.nodeValue !== "" : d.specified) - ? d.nodeValue - : b; - }, - set: function (a, b, d) { - var e = a.getAttributeNode(d); - e || ((e = c.createAttribute(d)), a.setAttributeNode(e)); - return (e.nodeValue = b + ""); - }, - }), - (f.attrHooks.tabindex.set = w.set), - f.each(["width", "height"], function (a, b) { - f.attrHooks[b] = f.extend(f.attrHooks[b], { - set: function (a, c) { - if (c === "") { - a.setAttribute(b, "auto"); - return c; - } - }, - }); - }), - (f.attrHooks.contenteditable = { - get: w.get, - set: function (a, b, c) { - b === "" && (b = "false"), w.set(a, b, c); - }, - })), - f.support.hrefNormalized || - f.each(["href", "src", "width", "height"], function (a, c) { - f.attrHooks[c] = f.extend(f.attrHooks[c], { - get: function (a) { - var d = a.getAttribute(c, 2); - return d === null ? b : d; - }, - }); - }), - f.support.style || - (f.attrHooks.style = { - get: function (a) { - return a.style.cssText.toLowerCase() || b; - }, - set: function (a, b) { - return (a.style.cssText = "" + b); - }, - }), - f.support.optSelected || - (f.propHooks.selected = f.extend(f.propHooks.selected, { - get: function (a) { - var b = a.parentNode; - b && (b.selectedIndex, b.parentNode && b.parentNode.selectedIndex); - return null; - }, - })), - f.support.enctype || (f.propFix.enctype = "encoding"), - f.support.checkOn || - f.each(["radio", "checkbox"], function () { - f.valHooks[this] = { - get: function (a) { - return a.getAttribute("value") === null ? "on" : a.value; - }, - }; - }), - f.each(["radio", "checkbox"], function () { - f.valHooks[this] = f.extend(f.valHooks[this], { - set: function (a, b) { - if (f.isArray(b)) return (a.checked = f.inArray(f(a).val(), b) >= 0); - }, - }); - }); - var z = /^(?:textarea|input|select)$/i, - A = /^([^\.]*)?(?:\.(.+))?$/, - B = /(?:^|\s)hover(\.\S+)?\b/, - C = /^key/, - D = /^(?:mouse|contextmenu)|click/, - E = /^(?:focusinfocus|focusoutblur)$/, - F = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/, - G = function (a) { - var b = F.exec(a); - b && - ((b[1] = (b[1] || "").toLowerCase()), - (b[3] = b[3] && new RegExp("(?:^|\\s)" + b[3] + "(?:\\s|$)"))); - return b; - }, - H = function (a, b) { - var c = a.attributes || {}; - return ( - (!b[1] || a.nodeName.toLowerCase() === b[1]) && - (!b[2] || (c.id || {}).value === b[2]) && - (!b[3] || b[3].test((c["class"] || {}).value)) - ); - }, - I = function (a) { - return f.event.special.hover - ? a - : a.replace(B, "mouseenter$1 mouseleave$1"); - }; - (f.event = { - add: function (a, c, d, e, g) { - var h, i, j, k, l, m, n, o, p, q, r, s; - if ( - !(a.nodeType === 3 || a.nodeType === 8 || !c || !d || !(h = f._data(a))) - ) { - d.handler && ((p = d), (d = p.handler), (g = p.selector)), - d.guid || (d.guid = f.guid++), - (j = h.events), - j || (h.events = j = {}), - (i = h.handle), - i || - ((h.handle = i = - function (a) { - return typeof f != "undefined" && - (!a || f.event.triggered !== a.type) - ? f.event.dispatch.apply(i.elem, arguments) - : b; - }), - (i.elem = a)), - (c = f.trim(I(c)).split(" ")); - for (k = 0; k < c.length; k++) { - (l = A.exec(c[k]) || []), - (m = l[1]), - (n = (l[2] || "").split(".").sort()), - (s = f.event.special[m] || {}), - (m = (g ? s.delegateType : s.bindType) || m), - (s = f.event.special[m] || {}), - (o = f.extend( - { - type: m, - origType: l[1], - data: e, - handler: d, - guid: d.guid, - selector: g, - quick: g && G(g), - namespace: n.join("."), - }, - p, - )), - (r = j[m]); - if (!r) { - (r = j[m] = []), (r.delegateCount = 0); - if (!s.setup || s.setup.call(a, e, n, i) === !1) - a.addEventListener - ? a.addEventListener(m, i, !1) - : a.attachEvent && a.attachEvent("on" + m, i); - } - s.add && - (s.add.call(a, o), o.handler.guid || (o.handler.guid = d.guid)), - g ? r.splice(r.delegateCount++, 0, o) : r.push(o), - (f.event.global[m] = !0); - } - a = null; - } - }, - global: {}, - remove: function (a, b, c, d, e) { - var g = f.hasData(a) && f._data(a), - h, - i, - j, - k, - l, - m, - n, - o, - p, - q, - r, - s; - if (!!g && !!(o = g.events)) { - b = f.trim(I(b || "")).split(" "); - for (h = 0; h < b.length; h++) { - (i = A.exec(b[h]) || []), (j = k = i[1]), (l = i[2]); - if (!j) { - for (j in o) f.event.remove(a, j + b[h], c, d, !0); - continue; - } - (p = f.event.special[j] || {}), - (j = (d ? p.delegateType : p.bindType) || j), - (r = o[j] || []), - (m = r.length), - (l = l - ? new RegExp( - "(^|\\.)" + - l.split(".").sort().join("\\.(?:.*\\.)?") + - "(\\.|$)", - ) - : null); - for (n = 0; n < r.length; n++) - (s = r[n]), - (e || k === s.origType) && - (!c || c.guid === s.guid) && - (!l || l.test(s.namespace)) && - (!d || d === s.selector || (d === "**" && s.selector)) && - (r.splice(n--, 1), - s.selector && r.delegateCount--, - p.remove && p.remove.call(a, s)); - r.length === 0 && - m !== r.length && - ((!p.teardown || p.teardown.call(a, l) === !1) && - f.removeEvent(a, j, g.handle), - delete o[j]); - } - f.isEmptyObject(o) && - ((q = g.handle), - q && (q.elem = null), - f.removeData(a, ["events", "handle"], !0)); - } - }, - customEvent: { getData: !0, setData: !0, changeData: !0 }, - trigger: function (c, d, e, g) { - if (!e || (e.nodeType !== 3 && e.nodeType !== 8)) { - var h = c.type || c, - i = [], - j, - k, - l, - m, - n, - o, - p, - q, - r, - s; - if (E.test(h + f.event.triggered)) return; - h.indexOf("!") >= 0 && ((h = h.slice(0, -1)), (k = !0)), - h.indexOf(".") >= 0 && - ((i = h.split(".")), (h = i.shift()), i.sort()); - if ((!e || f.event.customEvent[h]) && !f.event.global[h]) return; - (c = - typeof c == "object" - ? c[f.expando] - ? c - : new f.Event(h, c) - : new f.Event(h)), - (c.type = h), - (c.isTrigger = !0), - (c.exclusive = k), - (c.namespace = i.join(".")), - (c.namespace_re = c.namespace - ? new RegExp("(^|\\.)" + i.join("\\.(?:.*\\.)?") + "(\\.|$)") - : null), - (o = h.indexOf(":") < 0 ? "on" + h : ""); - if (!e) { - j = f.cache; - for (l in j) - j[l].events && - j[l].events[h] && - f.event.trigger(c, d, j[l].handle.elem, !0); - return; - } - (c.result = b), - c.target || (c.target = e), - (d = d != null ? f.makeArray(d) : []), - d.unshift(c), - (p = f.event.special[h] || {}); - if (p.trigger && p.trigger.apply(e, d) === !1) return; - r = [[e, p.bindType || h]]; - if (!g && !p.noBubble && !f.isWindow(e)) { - (s = p.delegateType || h), - (m = E.test(s + h) ? e : e.parentNode), - (n = null); - for (; m; m = m.parentNode) r.push([m, s]), (n = m); - n && - n === e.ownerDocument && - r.push([n.defaultView || n.parentWindow || a, s]); - } - for (l = 0; l < r.length && !c.isPropagationStopped(); l++) - (m = r[l][0]), - (c.type = r[l][1]), - (q = (f._data(m, "events") || {})[c.type] && f._data(m, "handle")), - q && q.apply(m, d), - (q = o && m[o]), - q && f.acceptData(m) && q.apply(m, d) === !1 && c.preventDefault(); - (c.type = h), - !g && - !c.isDefaultPrevented() && - (!p._default || p._default.apply(e.ownerDocument, d) === !1) && - (h !== "click" || !f.nodeName(e, "a")) && - f.acceptData(e) && - o && - e[h] && - ((h !== "focus" && h !== "blur") || c.target.offsetWidth !== 0) && - !f.isWindow(e) && - ((n = e[o]), - n && (e[o] = null), - (f.event.triggered = h), - e[h](), - (f.event.triggered = b), - n && (e[o] = n)); - return c.result; - } - }, - dispatch: function (c) { - c = f.event.fix(c || a.event); - var d = (f._data(this, "events") || {})[c.type] || [], - e = d.delegateCount, - g = [].slice.call(arguments, 0), - h = !c.exclusive && !c.namespace, - i = f.event.special[c.type] || {}, - j = [], - k, - l, - m, - n, - o, - p, - q, - r, - s, - t, - u; - (g[0] = c), (c.delegateTarget = this); - if (!i.preDispatch || i.preDispatch.call(this, c) !== !1) { - if (e && (!c.button || c.type !== "click")) { - (n = f(this)), (n.context = this.ownerDocument || this); - for (m = c.target; m != this; m = m.parentNode || this) - if (m.disabled !== !0) { - (p = {}), (r = []), (n[0] = m); - for (k = 0; k < e; k++) - (s = d[k]), - (t = s.selector), - p[t] === b && (p[t] = s.quick ? H(m, s.quick) : n.is(t)), - p[t] && r.push(s); - r.length && j.push({ elem: m, matches: r }); - } - } - d.length > e && j.push({ elem: this, matches: d.slice(e) }); - for (k = 0; k < j.length && !c.isPropagationStopped(); k++) { - (q = j[k]), (c.currentTarget = q.elem); - for ( - l = 0; - l < q.matches.length && !c.isImmediatePropagationStopped(); - l++ - ) { - s = q.matches[l]; - if ( - h || - (!c.namespace && !s.namespace) || - (c.namespace_re && c.namespace_re.test(s.namespace)) - ) - (c.data = s.data), - (c.handleObj = s), - (o = ( - (f.event.special[s.origType] || {}).handle || s.handler - ).apply(q.elem, g)), - o !== b && - ((c.result = o), - o === !1 && (c.preventDefault(), c.stopPropagation())); - } - } - i.postDispatch && i.postDispatch.call(this, c); - return c.result; - } - }, - props: - "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split( - " ", - ), - fixHooks: {}, - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function (a, b) { - a.which == null && - (a.which = b.charCode != null ? b.charCode : b.keyCode); - return a; - }, - }, - mouseHooks: { - props: - "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split( - " ", - ), - filter: function (a, d) { - var e, - f, - g, - h = d.button, - i = d.fromElement; - a.pageX == null && - d.clientX != null && - ((e = a.target.ownerDocument || c), - (f = e.documentElement), - (g = e.body), - (a.pageX = - d.clientX + - ((f && f.scrollLeft) || (g && g.scrollLeft) || 0) - - ((f && f.clientLeft) || (g && g.clientLeft) || 0)), - (a.pageY = - d.clientY + - ((f && f.scrollTop) || (g && g.scrollTop) || 0) - - ((f && f.clientTop) || (g && g.clientTop) || 0))), - !a.relatedTarget && - i && - (a.relatedTarget = i === a.target ? d.toElement : i), - !a.which && - h !== b && - (a.which = h & 1 ? 1 : h & 2 ? 3 : h & 4 ? 2 : 0); - return a; - }, - }, - fix: function (a) { - if (a[f.expando]) return a; - var d, - e, - g = a, - h = f.event.fixHooks[a.type] || {}, - i = h.props ? this.props.concat(h.props) : this.props; - a = f.Event(g); - for (d = i.length; d; ) (e = i[--d]), (a[e] = g[e]); - a.target || (a.target = g.srcElement || c), - a.target.nodeType === 3 && (a.target = a.target.parentNode), - a.metaKey === b && (a.metaKey = a.ctrlKey); - return h.filter ? h.filter(a, g) : a; - }, - special: { - ready: { setup: f.bindReady }, - load: { noBubble: !0 }, - focus: { delegateType: "focusin" }, - blur: { delegateType: "focusout" }, - beforeunload: { - setup: function (a, b, c) { - f.isWindow(this) && (this.onbeforeunload = c); - }, - teardown: function (a, b) { - this.onbeforeunload === b && (this.onbeforeunload = null); - }, - }, - }, - simulate: function (a, b, c, d) { - var e = f.extend(new f.Event(), c, { - type: a, - isSimulated: !0, - originalEvent: {}, - }); - d ? f.event.trigger(e, null, b) : f.event.dispatch.call(b, e), - e.isDefaultPrevented() && c.preventDefault(); - }, - }), - (f.event.handle = f.event.dispatch), - (f.removeEvent = c.removeEventListener - ? function (a, b, c) { - a.removeEventListener && a.removeEventListener(b, c, !1); - } - : function (a, b, c) { - a.detachEvent && a.detachEvent("on" + b, c); - }), - (f.Event = function (a, b) { - if (!(this instanceof f.Event)) return new f.Event(a, b); - a && a.type - ? ((this.originalEvent = a), - (this.type = a.type), - (this.isDefaultPrevented = - a.defaultPrevented || - a.returnValue === !1 || - (a.getPreventDefault && a.getPreventDefault()) - ? K - : J)) - : (this.type = a), - b && f.extend(this, b), - (this.timeStamp = (a && a.timeStamp) || f.now()), - (this[f.expando] = !0); - }), - (f.Event.prototype = { - preventDefault: function () { - this.isDefaultPrevented = K; - var a = this.originalEvent; - !a || (a.preventDefault ? a.preventDefault() : (a.returnValue = !1)); - }, - stopPropagation: function () { - this.isPropagationStopped = K; - var a = this.originalEvent; - !a || (a.stopPropagation && a.stopPropagation(), (a.cancelBubble = !0)); - }, - stopImmediatePropagation: function () { - (this.isImmediatePropagationStopped = K), this.stopPropagation(); - }, - isDefaultPrevented: J, - isPropagationStopped: J, - isImmediatePropagationStopped: J, - }), - f.each( - { mouseenter: "mouseover", mouseleave: "mouseout" }, - function (a, b) { - f.event.special[a] = { - delegateType: b, - bindType: b, - handle: function (a) { - var c = this, - d = a.relatedTarget, - e = a.handleObj, - g = e.selector, - h; - if (!d || (d !== c && !f.contains(c, d))) - (a.type = e.origType), - (h = e.handler.apply(this, arguments)), - (a.type = b); - return h; - }, - }; - }, - ), - f.support.submitBubbles || - (f.event.special.submit = { - setup: function () { - if (f.nodeName(this, "form")) return !1; - f.event.add(this, "click._submit keypress._submit", function (a) { - var c = a.target, - d = - f.nodeName(c, "input") || f.nodeName(c, "button") ? c.form : b; - d && - !d._submit_attached && - (f.event.add(d, "submit._submit", function (a) { - a._submit_bubble = !0; - }), - (d._submit_attached = !0)); - }); - }, - postDispatch: function (a) { - a._submit_bubble && - (delete a._submit_bubble, - this.parentNode && - !a.isTrigger && - f.event.simulate("submit", this.parentNode, a, !0)); - }, - teardown: function () { - if (f.nodeName(this, "form")) return !1; - f.event.remove(this, "._submit"); - }, - }), - f.support.changeBubbles || - (f.event.special.change = { - setup: function () { - if (z.test(this.nodeName)) { - if (this.type === "checkbox" || this.type === "radio") - f.event.add(this, "propertychange._change", function (a) { - a.originalEvent.propertyName === "checked" && - (this._just_changed = !0); - }), - f.event.add(this, "click._change", function (a) { - this._just_changed && - !a.isTrigger && - ((this._just_changed = !1), - f.event.simulate("change", this, a, !0)); - }); - return !1; - } - f.event.add(this, "beforeactivate._change", function (a) { - var b = a.target; - z.test(b.nodeName) && - !b._change_attached && - (f.event.add(b, "change._change", function (a) { - this.parentNode && - !a.isSimulated && - !a.isTrigger && - f.event.simulate("change", this.parentNode, a, !0); - }), - (b._change_attached = !0)); - }); - }, - handle: function (a) { - var b = a.target; - if ( - this !== b || - a.isSimulated || - a.isTrigger || - (b.type !== "radio" && b.type !== "checkbox") - ) - return a.handleObj.handler.apply(this, arguments); - }, - teardown: function () { - f.event.remove(this, "._change"); - return z.test(this.nodeName); - }, - }), - f.support.focusinBubbles || - f.each({ focus: "focusin", blur: "focusout" }, function (a, b) { - var d = 0, - e = function (a) { - f.event.simulate(b, a.target, f.event.fix(a), !0); - }; - f.event.special[b] = { - setup: function () { - d++ === 0 && c.addEventListener(a, e, !0); - }, - teardown: function () { - --d === 0 && c.removeEventListener(a, e, !0); - }, - }; - }), - f.fn.extend({ - on: function (a, c, d, e, g) { - var h, i; - if (typeof a == "object") { - typeof c != "string" && ((d = d || c), (c = b)); - for (i in a) this.on(i, c, d, a[i], g); - return this; - } - d == null && e == null - ? ((e = c), (d = c = b)) - : e == null && - (typeof c == "string" - ? ((e = d), (d = b)) - : ((e = d), (d = c), (c = b))); - if (e === !1) e = J; - else if (!e) return this; - g === 1 && - ((h = e), - (e = function (a) { - f().off(a); - return h.apply(this, arguments); - }), - (e.guid = h.guid || (h.guid = f.guid++))); - return this.each(function () { - f.event.add(this, a, e, d, c); - }); - }, - one: function (a, b, c, d) { - return this.on(a, b, c, d, 1); - }, - off: function (a, c, d) { - if (a && a.preventDefault && a.handleObj) { - var e = a.handleObj; - f(a.delegateTarget).off( - e.namespace ? e.origType + "." + e.namespace : e.origType, - e.selector, - e.handler, - ); - return this; - } - if (typeof a == "object") { - for (var g in a) this.off(g, c, a[g]); - return this; - } - if (c === !1 || typeof c == "function") (d = c), (c = b); - d === !1 && (d = J); - return this.each(function () { - f.event.remove(this, a, d, c); - }); - }, - bind: function (a, b, c) { - return this.on(a, null, b, c); - }, - unbind: function (a, b) { - return this.off(a, null, b); - }, - live: function (a, b, c) { - f(this.context).on(a, this.selector, b, c); - return this; - }, - die: function (a, b) { - f(this.context).off(a, this.selector || "**", b); - return this; - }, - delegate: function (a, b, c, d) { - return this.on(b, a, c, d); - }, - undelegate: function (a, b, c) { - return arguments.length == 1 ? this.off(a, "**") : this.off(b, a, c); - }, - trigger: function (a, b) { - return this.each(function () { - f.event.trigger(a, b, this); - }); - }, - triggerHandler: function (a, b) { - if (this[0]) return f.event.trigger(a, b, this[0], !0); - }, - toggle: function (a) { - var b = arguments, - c = a.guid || f.guid++, - d = 0, - e = function (c) { - var e = (f._data(this, "lastToggle" + a.guid) || 0) % d; - f._data(this, "lastToggle" + a.guid, e + 1), c.preventDefault(); - return b[e].apply(this, arguments) || !1; - }; - e.guid = c; - while (d < b.length) b[d++].guid = c; - return this.click(e); - }, - hover: function (a, b) { - return this.mouseenter(a).mouseleave(b || a); - }, - }), - f.each( - "blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split( - " ", - ), - function (a, b) { - (f.fn[b] = function (a, c) { - c == null && ((c = a), (a = null)); - return arguments.length > 0 - ? this.on(b, null, a, c) - : this.trigger(b); - }), - f.attrFn && (f.attrFn[b] = !0), - C.test(b) && (f.event.fixHooks[b] = f.event.keyHooks), - D.test(b) && (f.event.fixHooks[b] = f.event.mouseHooks); - }, - ), - (function () { - function x(a, b, c, e, f, g) { - for (var h = 0, i = e.length; h < i; h++) { - var j = e[h]; - if (j) { - var k = !1; - j = j[a]; - while (j) { - if (j[d] === c) { - k = e[j.sizset]; - break; - } - if (j.nodeType === 1) { - g || ((j[d] = c), (j.sizset = h)); - if (typeof b != "string") { - if (j === b) { - k = !0; - break; - } - } else if (m.filter(b, [j]).length > 0) { - k = j; - break; - } - } - j = j[a]; - } - e[h] = k; - } - } - } - function w(a, b, c, e, f, g) { - for (var h = 0, i = e.length; h < i; h++) { - var j = e[h]; - if (j) { - var k = !1; - j = j[a]; - while (j) { - if (j[d] === c) { - k = e[j.sizset]; - break; - } - j.nodeType === 1 && !g && ((j[d] = c), (j.sizset = h)); - if (j.nodeName.toLowerCase() === b) { - k = j; - break; - } - j = j[a]; - } - e[h] = k; - } - } - } - var a = - /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - d = "sizcache" + (Math.random() + "").replace(".", ""), - e = 0, - g = Object.prototype.toString, - h = !1, - i = !0, - j = /\\/g, - k = /\r\n/g, - l = /\W/; - [0, 0].sort(function () { - i = !1; - return 0; - }); - var m = function (b, d, e, f) { - (e = e || []), (d = d || c); - var h = d; - if (d.nodeType !== 1 && d.nodeType !== 9) return []; - if (!b || typeof b != "string") return e; - var i, - j, - k, - l, - n, - q, - r, - t, - u = !0, - v = m.isXML(d), - w = [], - x = b; - do { - a.exec(""), (i = a.exec(x)); - if (i) { - (x = i[3]), w.push(i[1]); - if (i[2]) { - l = i[3]; - break; - } - } - } while (i); - if (w.length > 1 && p.exec(b)) - if (w.length === 2 && o.relative[w[0]]) j = y(w[0] + w[1], d, f); - else { - j = o.relative[w[0]] ? [d] : m(w.shift(), d); - while (w.length) - (b = w.shift()), - o.relative[b] && (b += w.shift()), - (j = y(b, j, f)); - } - else { - !f && - w.length > 1 && - d.nodeType === 9 && - !v && - o.match.ID.test(w[0]) && - !o.match.ID.test(w[w.length - 1]) && - ((n = m.find(w.shift(), d, v)), - (d = n.expr ? m.filter(n.expr, n.set)[0] : n.set[0])); - if (d) { - (n = f - ? { expr: w.pop(), set: s(f) } - : m.find( - w.pop(), - w.length === 1 && - (w[0] === "~" || w[0] === "+") && - d.parentNode - ? d.parentNode - : d, - v, - )), - (j = n.expr ? m.filter(n.expr, n.set) : n.set), - w.length > 0 ? (k = s(j)) : (u = !1); - while (w.length) - (q = w.pop()), - (r = q), - o.relative[q] ? (r = w.pop()) : (q = ""), - r == null && (r = d), - o.relative[q](k, r, v); - } else k = w = []; - } - k || (k = j), k || m.error(q || b); - if (g.call(k) === "[object Array]") - if (!u) e.push.apply(e, k); - else if (d && d.nodeType === 1) - for (t = 0; k[t] != null; t++) - k[t] && - (k[t] === !0 || (k[t].nodeType === 1 && m.contains(d, k[t]))) && - e.push(j[t]); - else - for (t = 0; k[t] != null; t++) - k[t] && k[t].nodeType === 1 && e.push(j[t]); - else s(k, e); - l && (m(l, h, e, f), m.uniqueSort(e)); - return e; - }; - (m.uniqueSort = function (a) { - if (u) { - (h = i), a.sort(u); - if (h) - for (var b = 1; b < a.length; b++) - a[b] === a[b - 1] && a.splice(b--, 1); - } - return a; - }), - (m.matches = function (a, b) { - return m(a, null, null, b); - }), - (m.matchesSelector = function (a, b) { - return m(b, null, null, [a]).length > 0; - }), - (m.find = function (a, b, c) { - var d, e, f, g, h, i; - if (!a) return []; - for (e = 0, f = o.order.length; e < f; e++) { - h = o.order[e]; - if ((g = o.leftMatch[h].exec(a))) { - (i = g[1]), g.splice(1, 1); - if (i.substr(i.length - 1) !== "\\") { - (g[1] = (g[1] || "").replace(j, "")), (d = o.find[h](g, b, c)); - if (d != null) { - a = a.replace(o.match[h], ""); - break; - } - } - } - } - d || - (d = - typeof b.getElementsByTagName != "undefined" - ? b.getElementsByTagName("*") - : []); - return { set: d, expr: a }; - }), - (m.filter = function (a, c, d, e) { - var f, - g, - h, - i, - j, - k, - l, - n, - p, - q = a, - r = [], - s = c, - t = c && c[0] && m.isXML(c[0]); - while (a && c.length) { - for (h in o.filter) - if ((f = o.leftMatch[h].exec(a)) != null && f[2]) { - (k = o.filter[h]), (l = f[1]), (g = !1), f.splice(1, 1); - if (l.substr(l.length - 1) === "\\") continue; - s === r && (r = []); - if (o.preFilter[h]) { - f = o.preFilter[h](f, s, d, r, e, t); - if (!f) g = i = !0; - else if (f === !0) continue; - } - if (f) - for (n = 0; (j = s[n]) != null; n++) - j && - ((i = k(j, f, n, s)), - (p = e ^ i), - d && i != null - ? p - ? (g = !0) - : (s[n] = !1) - : p && (r.push(j), (g = !0))); - if (i !== b) { - d || (s = r), (a = a.replace(o.match[h], "")); - if (!g) return []; - break; - } - } - if (a === q) - if (g == null) m.error(a); - else break; - q = a; - } - return s; - }), - (m.error = function (a) { - throw new Error("Syntax error, unrecognized expression: " + a); - }); - var n = (m.getText = function (a) { - var b, - c, - d = a.nodeType, - e = ""; - if (d) { - if (d === 1 || d === 9 || d === 11) { - if (typeof a.textContent == "string") return a.textContent; - if (typeof a.innerText == "string") - return a.innerText.replace(k, ""); - for (a = a.firstChild; a; a = a.nextSibling) e += n(a); - } else if (d === 3 || d === 4) return a.nodeValue; - } else for (b = 0; (c = a[b]); b++) c.nodeType !== 8 && (e += n(c)); - return e; - }), - o = (m.selectors = { - order: ["ID", "NAME", "TAG"], - match: { - ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, - CHILD: - /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, - PSEUDO: - /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/, - }, - leftMatch: {}, - attrMap: { class: "className", for: "htmlFor" }, - attrHandle: { - href: function (a) { - return a.getAttribute("href"); - }, - type: function (a) { - return a.getAttribute("type"); - }, - }, - relative: { - "+": function (a, b) { - var c = typeof b == "string", - d = c && !l.test(b), - e = c && !d; - d && (b = b.toLowerCase()); - for (var f = 0, g = a.length, h; f < g; f++) - if ((h = a[f])) { - while ((h = h.previousSibling) && h.nodeType !== 1); - a[f] = - e || (h && h.nodeName.toLowerCase() === b) - ? h || !1 - : h === b; - } - e && m.filter(b, a, !0); - }, - ">": function (a, b) { - var c, - d = typeof b == "string", - e = 0, - f = a.length; - if (d && !l.test(b)) { - b = b.toLowerCase(); - for (; e < f; e++) { - c = a[e]; - if (c) { - var g = c.parentNode; - a[e] = g.nodeName.toLowerCase() === b ? g : !1; - } - } - } else { - for (; e < f; e++) - (c = a[e]), - c && (a[e] = d ? c.parentNode : c.parentNode === b); - d && m.filter(b, a, !0); - } - }, - "": function (a, b, c) { - var d, - f = e++, - g = x; - typeof b == "string" && - !l.test(b) && - ((b = b.toLowerCase()), (d = b), (g = w)), - g("parentNode", b, f, a, d, c); - }, - "~": function (a, b, c) { - var d, - f = e++, - g = x; - typeof b == "string" && - !l.test(b) && - ((b = b.toLowerCase()), (d = b), (g = w)), - g("previousSibling", b, f, a, d, c); - }, - }, - find: { - ID: function (a, b, c) { - if (typeof b.getElementById != "undefined" && !c) { - var d = b.getElementById(a[1]); - return d && d.parentNode ? [d] : []; - } - }, - NAME: function (a, b) { - if (typeof b.getElementsByName != "undefined") { - var c = [], - d = b.getElementsByName(a[1]); - for (var e = 0, f = d.length; e < f; e++) - d[e].getAttribute("name") === a[1] && c.push(d[e]); - return c.length === 0 ? null : c; - } - }, - TAG: function (a, b) { - if (typeof b.getElementsByTagName != "undefined") - return b.getElementsByTagName(a[1]); - }, - }, - preFilter: { - CLASS: function (a, b, c, d, e, f) { - a = " " + a[1].replace(j, "") + " "; - if (f) return a; - for (var g = 0, h; (h = b[g]) != null; g++) - h && - (e ^ - (h.className && - (" " + h.className + " ") - .replace(/[\t\n\r]/g, " ") - .indexOf(a) >= 0) - ? c || d.push(h) - : c && (b[g] = !1)); - return !1; - }, - ID: function (a) { - return a[1].replace(j, ""); - }, - TAG: function (a, b) { - return a[1].replace(j, "").toLowerCase(); - }, - CHILD: function (a) { - if (a[1] === "nth") { - a[2] || m.error(a[0]), (a[2] = a[2].replace(/^\+|\s*/g, "")); - var b = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( - (a[2] === "even" && "2n") || - (a[2] === "odd" && "2n+1") || - (!/\D/.test(a[2]) && "0n+" + a[2]) || - a[2], - ); - (a[2] = b[1] + (b[2] || 1) - 0), (a[3] = b[3] - 0); - } else a[2] && m.error(a[0]); - a[0] = e++; - return a; - }, - ATTR: function (a, b, c, d, e, f) { - var g = (a[1] = a[1].replace(j, "")); - !f && o.attrMap[g] && (a[1] = o.attrMap[g]), - (a[4] = (a[4] || a[5] || "").replace(j, "")), - a[2] === "~=" && (a[4] = " " + a[4] + " "); - return a; - }, - PSEUDO: function (b, c, d, e, f) { - if (b[1] === "not") - if ((a.exec(b[3]) || "").length > 1 || /^\w/.test(b[3])) - b[3] = m(b[3], null, null, c); - else { - var g = m.filter(b[3], c, d, !0 ^ f); - d || e.push.apply(e, g); - return !1; - } - else if (o.match.POS.test(b[0]) || o.match.CHILD.test(b[0])) - return !0; - return b; - }, - POS: function (a) { - a.unshift(!0); - return a; - }, - }, - filters: { - enabled: function (a) { - return a.disabled === !1 && a.type !== "hidden"; - }, - disabled: function (a) { - return a.disabled === !0; - }, - checked: function (a) { - return a.checked === !0; - }, - selected: function (a) { - a.parentNode && a.parentNode.selectedIndex; - return a.selected === !0; - }, - parent: function (a) { - return !!a.firstChild; - }, - empty: function (a) { - return !a.firstChild; - }, - has: function (a, b, c) { - return !!m(c[3], a).length; - }, - header: function (a) { - return /h\d/i.test(a.nodeName); - }, - text: function (a) { - var b = a.getAttribute("type"), - c = a.type; - return ( - a.nodeName.toLowerCase() === "input" && - "text" === c && - (b === c || b === null) - ); - }, - radio: function (a) { - return a.nodeName.toLowerCase() === "input" && "radio" === a.type; - }, - checkbox: function (a) { - return ( - a.nodeName.toLowerCase() === "input" && "checkbox" === a.type - ); - }, - file: function (a) { - return a.nodeName.toLowerCase() === "input" && "file" === a.type; - }, - password: function (a) { - return ( - a.nodeName.toLowerCase() === "input" && "password" === a.type - ); - }, - submit: function (a) { - var b = a.nodeName.toLowerCase(); - return (b === "input" || b === "button") && "submit" === a.type; - }, - image: function (a) { - return a.nodeName.toLowerCase() === "input" && "image" === a.type; - }, - reset: function (a) { - var b = a.nodeName.toLowerCase(); - return (b === "input" || b === "button") && "reset" === a.type; - }, - button: function (a) { - var b = a.nodeName.toLowerCase(); - return (b === "input" && "button" === a.type) || b === "button"; - }, - input: function (a) { - return /input|select|textarea|button/i.test(a.nodeName); - }, - focus: function (a) { - return a === a.ownerDocument.activeElement; - }, - }, - setFilters: { - first: function (a, b) { - return b === 0; - }, - last: function (a, b, c, d) { - return b === d.length - 1; - }, - even: function (a, b) { - return b % 2 === 0; - }, - odd: function (a, b) { - return b % 2 === 1; - }, - lt: function (a, b, c) { - return b < c[3] - 0; - }, - gt: function (a, b, c) { - return b > c[3] - 0; - }, - nth: function (a, b, c) { - return c[3] - 0 === b; - }, - eq: function (a, b, c) { - return c[3] - 0 === b; - }, - }, - filter: { - PSEUDO: function (a, b, c, d) { - var e = b[1], - f = o.filters[e]; - if (f) return f(a, c, b, d); - if (e === "contains") - return ( - (a.textContent || a.innerText || n([a]) || "").indexOf( - b[3], - ) >= 0 - ); - if (e === "not") { - var g = b[3]; - for (var h = 0, i = g.length; h < i; h++) - if (g[h] === a) return !1; - return !0; - } - m.error(e); - }, - CHILD: function (a, b) { - var c, - e, - f, - g, - h, - i, - j, - k = b[1], - l = a; - switch (k) { - case "only": - case "first": - while ((l = l.previousSibling)) - if (l.nodeType === 1) return !1; - if (k === "first") return !0; - l = a; - case "last": - while ((l = l.nextSibling)) if (l.nodeType === 1) return !1; - return !0; - case "nth": - (c = b[2]), (e = b[3]); - if (c === 1 && e === 0) return !0; - (f = b[0]), (g = a.parentNode); - if (g && (g[d] !== f || !a.nodeIndex)) { - i = 0; - for (l = g.firstChild; l; l = l.nextSibling) - l.nodeType === 1 && (l.nodeIndex = ++i); - g[d] = f; - } - j = a.nodeIndex - e; - return c === 0 ? j === 0 : j % c === 0 && j / c >= 0; - } - }, - ID: function (a, b) { - return a.nodeType === 1 && a.getAttribute("id") === b; - }, - TAG: function (a, b) { - return ( - (b === "*" && a.nodeType === 1) || - (!!a.nodeName && a.nodeName.toLowerCase() === b) - ); - }, - CLASS: function (a, b) { - return ( - (" " + (a.className || a.getAttribute("class")) + " ").indexOf( - b, - ) > -1 - ); - }, - ATTR: function (a, b) { - var c = b[1], - d = m.attr - ? m.attr(a, c) - : o.attrHandle[c] - ? o.attrHandle[c](a) - : a[c] != null - ? a[c] - : a.getAttribute(c), - e = d + "", - f = b[2], - g = b[4]; - return d == null - ? f === "!=" - : !f && m.attr - ? d != null - : f === "=" - ? e === g - : f === "*=" - ? e.indexOf(g) >= 0 - : f === "~=" - ? (" " + e + " ").indexOf(g) >= 0 - : g - ? f === "!=" - ? e !== g - : f === "^=" - ? e.indexOf(g) === 0 - : f === "$=" - ? e.substr(e.length - g.length) === g - : f === "|=" - ? e === g || e.substr(0, g.length + 1) === g + "-" - : !1 - : e && d !== !1; - }, - POS: function (a, b, c, d) { - var e = b[2], - f = o.setFilters[e]; - if (f) return f(a, c, b, d); - }, - }, - }), - p = o.match.POS, - q = function (a, b) { - return "\\" + (b - 0 + 1); - }; - for (var r in o.match) - (o.match[r] = new RegExp( - o.match[r].source + /(?![^\[]*\])(?![^\(]*\))/.source, - )), - (o.leftMatch[r] = new RegExp( - /(^(?:.|\r|\n)*?)/.source + - o.match[r].source.replace(/\\(\d+)/g, q), - )); - o.match.globalPOS = p; - var s = function (a, b) { - a = Array.prototype.slice.call(a, 0); - if (b) { - b.push.apply(b, a); - return b; - } - return a; - }; - try { - Array.prototype.slice.call(c.documentElement.childNodes, 0)[0].nodeType; - } catch (t) { - s = function (a, b) { - var c = 0, - d = b || []; - if (g.call(a) === "[object Array]") Array.prototype.push.apply(d, a); - else if (typeof a.length == "number") - for (var e = a.length; c < e; c++) d.push(a[c]); - else for (; a[c]; c++) d.push(a[c]); - return d; - }; - } - var u, v; - c.documentElement.compareDocumentPosition - ? (u = function (a, b) { - if (a === b) { - h = !0; - return 0; - } - if (!a.compareDocumentPosition || !b.compareDocumentPosition) - return a.compareDocumentPosition ? -1 : 1; - return a.compareDocumentPosition(b) & 4 ? -1 : 1; - }) - : ((u = function (a, b) { - if (a === b) { - h = !0; - return 0; - } - if (a.sourceIndex && b.sourceIndex) - return a.sourceIndex - b.sourceIndex; - var c, - d, - e = [], - f = [], - g = a.parentNode, - i = b.parentNode, - j = g; - if (g === i) return v(a, b); - if (!g) return -1; - if (!i) return 1; - while (j) e.unshift(j), (j = j.parentNode); - j = i; - while (j) f.unshift(j), (j = j.parentNode); - (c = e.length), (d = f.length); - for (var k = 0; k < c && k < d; k++) - if (e[k] !== f[k]) return v(e[k], f[k]); - return k === c ? v(a, f[k], -1) : v(e[k], b, 1); - }), - (v = function (a, b, c) { - if (a === b) return c; - var d = a.nextSibling; - while (d) { - if (d === b) return -1; - d = d.nextSibling; - } - return 1; - })), - (function () { - var a = c.createElement("div"), - d = "script" + new Date().getTime(), - e = c.documentElement; - (a.innerHTML = ""), - e.insertBefore(a, e.firstChild), - c.getElementById(d) && - ((o.find.ID = function (a, c, d) { - if (typeof c.getElementById != "undefined" && !d) { - var e = c.getElementById(a[1]); - return e - ? e.id === a[1] || - (typeof e.getAttributeNode != "undefined" && - e.getAttributeNode("id").nodeValue === a[1]) - ? [e] - : b - : []; - } - }), - (o.filter.ID = function (a, b) { - var c = - typeof a.getAttributeNode != "undefined" && - a.getAttributeNode("id"); - return a.nodeType === 1 && c && c.nodeValue === b; - })), - e.removeChild(a), - (e = a = null); - })(), - (function () { - var a = c.createElement("div"); - a.appendChild(c.createComment("")), - a.getElementsByTagName("*").length > 0 && - (o.find.TAG = function (a, b) { - var c = b.getElementsByTagName(a[1]); - if (a[1] === "*") { - var d = []; - for (var e = 0; c[e]; e++) - c[e].nodeType === 1 && d.push(c[e]); - c = d; - } - return c; - }), - (a.innerHTML = ""), - a.firstChild && - typeof a.firstChild.getAttribute != "undefined" && - a.firstChild.getAttribute("href") !== "#" && - (o.attrHandle.href = function (a) { - return a.getAttribute("href", 2); - }), - (a = null); - })(), - c.querySelectorAll && - (function () { - var a = m, - b = c.createElement("div"), - d = "__sizzle__"; - b.innerHTML = "

      "; - if ( - !b.querySelectorAll || - b.querySelectorAll(".TEST").length !== 0 - ) { - m = function (b, e, f, g) { - e = e || c; - if (!g && !m.isXML(e)) { - var h = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b); - if (h && (e.nodeType === 1 || e.nodeType === 9)) { - if (h[1]) return s(e.getElementsByTagName(b), f); - if (h[2] && o.find.CLASS && e.getElementsByClassName) - return s(e.getElementsByClassName(h[2]), f); - } - if (e.nodeType === 9) { - if (b === "body" && e.body) return s([e.body], f); - if (h && h[3]) { - var i = e.getElementById(h[3]); - if (!i || !i.parentNode) return s([], f); - if (i.id === h[3]) return s([i], f); - } - try { - return s(e.querySelectorAll(b), f); - } catch (j) {} - } else if ( - e.nodeType === 1 && - e.nodeName.toLowerCase() !== "object" - ) { - var k = e, - l = e.getAttribute("id"), - n = l || d, - p = e.parentNode, - q = /^\s*[+~]/.test(b); - l ? (n = n.replace(/'/g, "\\$&")) : e.setAttribute("id", n), - q && p && (e = e.parentNode); - try { - if (!q || p) - return s( - e.querySelectorAll("[id='" + n + "'] " + b), - f, - ); - } catch (r) { - } finally { - l || k.removeAttribute("id"); - } - } - } - return a(b, e, f, g); - }; - for (var e in a) m[e] = a[e]; - b = null; - } - })(), - (function () { - var a = c.documentElement, - b = - a.matchesSelector || - a.mozMatchesSelector || - a.webkitMatchesSelector || - a.msMatchesSelector; - if (b) { - var d = !b.call(c.createElement("div"), "div"), - e = !1; - try { - b.call(c.documentElement, "[test!='']:sizzle"); - } catch (f) { - e = !0; - } - m.matchesSelector = function (a, c) { - c = c.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); - if (!m.isXML(a)) - try { - if (e || (!o.match.PSEUDO.test(c) && !/!=/.test(c))) { - var f = b.call(a, c); - if (f || !d || (a.document && a.document.nodeType !== 11)) - return f; - } - } catch (g) {} - return m(c, null, null, [a]).length > 0; - }; - } - })(), - (function () { - var a = c.createElement("div"); - a.innerHTML = "
      "; - if ( - !!a.getElementsByClassName && - a.getElementsByClassName("e").length !== 0 - ) { - a.lastChild.className = "e"; - if (a.getElementsByClassName("e").length === 1) return; - o.order.splice(1, 0, "CLASS"), - (o.find.CLASS = function (a, b, c) { - if (typeof b.getElementsByClassName != "undefined" && !c) - return b.getElementsByClassName(a[1]); - }), - (a = null); - } - })(), - c.documentElement.contains - ? (m.contains = function (a, b) { - return a !== b && (a.contains ? a.contains(b) : !0); - }) - : c.documentElement.compareDocumentPosition - ? (m.contains = function (a, b) { - return !!(a.compareDocumentPosition(b) & 16); - }) - : (m.contains = function () { - return !1; - }), - (m.isXML = function (a) { - var b = (a ? a.ownerDocument || a : 0).documentElement; - return b ? b.nodeName !== "HTML" : !1; - }); - var y = function (a, b, c) { - var d, - e = [], - f = "", - g = b.nodeType ? [b] : b; - while ((d = o.match.PSEUDO.exec(a))) - (f += d[0]), (a = a.replace(o.match.PSEUDO, "")); - a = o.relative[a] ? a + "*" : a; - for (var h = 0, i = g.length; h < i; h++) m(a, g[h], e, c); - return m.filter(f, e); - }; - (m.attr = f.attr), - (m.selectors.attrMap = {}), - (f.find = m), - (f.expr = m.selectors), - (f.expr[":"] = f.expr.filters), - (f.unique = m.uniqueSort), - (f.text = m.getText), - (f.isXMLDoc = m.isXML), - (f.contains = m.contains); - })(); - var L = /Until$/, - M = /^(?:parents|prevUntil|prevAll)/, - N = /,/, - O = /^.[^:#\[\.,]*$/, - P = Array.prototype.slice, - Q = f.expr.match.globalPOS, - R = { children: !0, contents: !0, next: !0, prev: !0 }; - f.fn.extend({ - find: function (a) { - var b = this, - c, - d; - if (typeof a != "string") - return f(a).filter(function () { - for (c = 0, d = b.length; c < d; c++) - if (f.contains(b[c], this)) return !0; - }); - var e = this.pushStack("", "find", a), - g, - h, - i; - for (c = 0, d = this.length; c < d; c++) { - (g = e.length), f.find(a, this[c], e); - if (c > 0) - for (h = g; h < e.length; h++) - for (i = 0; i < g; i++) - if (e[i] === e[h]) { - e.splice(h--, 1); - break; - } - } - return e; - }, - has: function (a) { - var b = f(a); - return this.filter(function () { - for (var a = 0, c = b.length; a < c; a++) - if (f.contains(this, b[a])) return !0; - }); - }, - not: function (a) { - return this.pushStack(T(this, a, !1), "not", a); - }, - filter: function (a) { - return this.pushStack(T(this, a, !0), "filter", a); - }, - is: function (a) { - return ( - !!a && - (typeof a == "string" - ? Q.test(a) - ? f(a, this.context).index(this[0]) >= 0 - : f.filter(a, this).length > 0 - : this.filter(a).length > 0) - ); - }, - closest: function (a, b) { - var c = [], - d, - e, - g = this[0]; - if (f.isArray(a)) { - var h = 1; - while (g && g.ownerDocument && g !== b) { - for (d = 0; d < a.length; d++) - f(g).is(a[d]) && c.push({ selector: a[d], elem: g, level: h }); - (g = g.parentNode), h++; - } - return c; - } - var i = Q.test(a) || typeof a != "string" ? f(a, b || this.context) : 0; - for (d = 0, e = this.length; d < e; d++) { - g = this[d]; - while (g) { - if (i ? i.index(g) > -1 : f.find.matchesSelector(g, a)) { - c.push(g); - break; - } - g = g.parentNode; - if (!g || !g.ownerDocument || g === b || g.nodeType === 11) break; - } - } - c = c.length > 1 ? f.unique(c) : c; - return this.pushStack(c, "closest", a); - }, - index: function (a) { - if (!a) return this[0] && this[0].parentNode ? this.prevAll().length : -1; - if (typeof a == "string") return f.inArray(this[0], f(a)); - return f.inArray(a.jquery ? a[0] : a, this); - }, - add: function (a, b) { - var c = - typeof a == "string" - ? f(a, b) - : f.makeArray(a && a.nodeType ? [a] : a), - d = f.merge(this.get(), c); - return this.pushStack(S(c[0]) || S(d[0]) ? d : f.unique(d)); - }, - andSelf: function () { - return this.add(this.prevObject); - }, - }), - f.each( - { - parent: function (a) { - var b = a.parentNode; - return b && b.nodeType !== 11 ? b : null; - }, - parents: function (a) { - return f.dir(a, "parentNode"); - }, - parentsUntil: function (a, b, c) { - return f.dir(a, "parentNode", c); - }, - next: function (a) { - return f.nth(a, 2, "nextSibling"); - }, - prev: function (a) { - return f.nth(a, 2, "previousSibling"); - }, - nextAll: function (a) { - return f.dir(a, "nextSibling"); - }, - prevAll: function (a) { - return f.dir(a, "previousSibling"); - }, - nextUntil: function (a, b, c) { - return f.dir(a, "nextSibling", c); - }, - prevUntil: function (a, b, c) { - return f.dir(a, "previousSibling", c); - }, - siblings: function (a) { - return f.sibling((a.parentNode || {}).firstChild, a); - }, - children: function (a) { - return f.sibling(a.firstChild); - }, - contents: function (a) { - return f.nodeName(a, "iframe") - ? a.contentDocument || a.contentWindow.document - : f.makeArray(a.childNodes); - }, - }, - function (a, b) { - f.fn[a] = function (c, d) { - var e = f.map(this, b, c); - L.test(a) || (d = c), - d && typeof d == "string" && (e = f.filter(d, e)), - (e = this.length > 1 && !R[a] ? f.unique(e) : e), - (this.length > 1 || N.test(d)) && M.test(a) && (e = e.reverse()); - return this.pushStack(e, a, P.call(arguments).join(",")); - }; - }, - ), - f.extend({ - filter: function (a, b, c) { - c && (a = ":not(" + a + ")"); - return b.length === 1 - ? f.find.matchesSelector(b[0], a) - ? [b[0]] - : [] - : f.find.matches(a, b); - }, - dir: function (a, c, d) { - var e = [], - g = a[c]; - while ( - g && - g.nodeType !== 9 && - (d === b || g.nodeType !== 1 || !f(g).is(d)) - ) - g.nodeType === 1 && e.push(g), (g = g[c]); - return e; - }, - nth: function (a, b, c, d) { - b = b || 1; - var e = 0; - for (; a; a = a[c]) if (a.nodeType === 1 && ++e === b) break; - return a; - }, - sibling: function (a, b) { - var c = []; - for (; a; a = a.nextSibling) a.nodeType === 1 && a !== b && c.push(a); - return c; - }, - }); - var V = - "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", - W = / jQuery\d+="(?:\d+|null)"/g, - X = /^\s+/, - Y = - /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - Z = /<([\w:]+)/, - $ = /]", "i"), - bd = /checked\s*(?:[^=]|=\s*.checked.)/i, - be = /\/(java|ecma)script/i, - bf = /^\s*", ""], - legend: [1, "
      ", "
      "], - thead: [1, "", "
      "], - tr: [2, "", "
      "], - td: [3, "", "
      "], - col: [2, "", "
      "], - area: [1, "", ""], - _default: [0, "", ""], - }, - bh = U(c); - (bg.optgroup = bg.option), - (bg.tbody = bg.tfoot = bg.colgroup = bg.caption = bg.thead), - (bg.th = bg.td), - f.support.htmlSerialize || (bg._default = [1, "div
      ", "
      "]), - f.fn.extend({ - text: function (a) { - return f.access( - this, - function (a) { - return a === b - ? f.text(this) - : this.empty().append( - ((this[0] && this[0].ownerDocument) || c).createTextNode(a), - ); - }, - null, - a, - arguments.length, - ); - }, - wrapAll: function (a) { - if (f.isFunction(a)) - return this.each(function (b) { - f(this).wrapAll(a.call(this, b)); - }); - if (this[0]) { - var b = f(a, this[0].ownerDocument).eq(0).clone(!0); - this[0].parentNode && b.insertBefore(this[0]), - b - .map(function () { - var a = this; - while (a.firstChild && a.firstChild.nodeType === 1) - a = a.firstChild; - return a; - }) - .append(this); - } - return this; - }, - wrapInner: function (a) { - if (f.isFunction(a)) - return this.each(function (b) { - f(this).wrapInner(a.call(this, b)); - }); - return this.each(function () { - var b = f(this), - c = b.contents(); - c.length ? c.wrapAll(a) : b.append(a); - }); - }, - wrap: function (a) { - var b = f.isFunction(a); - return this.each(function (c) { - f(this).wrapAll(b ? a.call(this, c) : a); - }); - }, - unwrap: function () { - return this.parent() - .each(function () { - f.nodeName(this, "body") || f(this).replaceWith(this.childNodes); - }) - .end(); - }, - append: function () { - return this.domManip(arguments, !0, function (a) { - this.nodeType === 1 && this.appendChild(a); - }); - }, - prepend: function () { - return this.domManip(arguments, !0, function (a) { - this.nodeType === 1 && this.insertBefore(a, this.firstChild); - }); - }, - before: function () { - if (this[0] && this[0].parentNode) - return this.domManip(arguments, !1, function (a) { - this.parentNode.insertBefore(a, this); - }); - if (arguments.length) { - var a = f.clean(arguments); - a.push.apply(a, this.toArray()); - return this.pushStack(a, "before", arguments); - } - }, - after: function () { - if (this[0] && this[0].parentNode) - return this.domManip(arguments, !1, function (a) { - this.parentNode.insertBefore(a, this.nextSibling); - }); - if (arguments.length) { - var a = this.pushStack(this, "after", arguments); - a.push.apply(a, f.clean(arguments)); - return a; - } - }, - remove: function (a, b) { - for (var c = 0, d; (d = this[c]) != null; c++) - if (!a || f.filter(a, [d]).length) - !b && - d.nodeType === 1 && - (f.cleanData(d.getElementsByTagName("*")), f.cleanData([d])), - d.parentNode && d.parentNode.removeChild(d); - return this; - }, - empty: function () { - for (var a = 0, b; (b = this[a]) != null; a++) { - b.nodeType === 1 && f.cleanData(b.getElementsByTagName("*")); - while (b.firstChild) b.removeChild(b.firstChild); - } - return this; - }, - clone: function (a, b) { - (a = a == null ? !1 : a), (b = b == null ? a : b); - return this.map(function () { - return f.clone(this, a, b); - }); - }, - html: function (a) { - return f.access( - this, - function (a) { - var c = this[0] || {}, - d = 0, - e = this.length; - if (a === b) - return c.nodeType === 1 ? c.innerHTML.replace(W, "") : null; - if ( - typeof a == "string" && - !ba.test(a) && - (f.support.leadingWhitespace || !X.test(a)) && - !bg[(Z.exec(a) || ["", ""])[1].toLowerCase()] - ) { - a = a.replace(Y, "<$1>"); - try { - for (; d < e; d++) - (c = this[d] || {}), - c.nodeType === 1 && - (f.cleanData(c.getElementsByTagName("*")), - (c.innerHTML = a)); - c = 0; - } catch (g) {} - } - c && this.empty().append(a); - }, - null, - a, - arguments.length, - ); - }, - replaceWith: function (a) { - if (this[0] && this[0].parentNode) { - if (f.isFunction(a)) - return this.each(function (b) { - var c = f(this), - d = c.html(); - c.replaceWith(a.call(this, b, d)); - }); - typeof a != "string" && (a = f(a).detach()); - return this.each(function () { - var b = this.nextSibling, - c = this.parentNode; - f(this).remove(), b ? f(b).before(a) : f(c).append(a); - }); - } - return this.length - ? this.pushStack(f(f.isFunction(a) ? a() : a), "replaceWith", a) - : this; - }, - detach: function (a) { - return this.remove(a, !0); - }, - domManip: function (a, c, d) { - var e, - g, - h, - i, - j = a[0], - k = []; - if ( - !f.support.checkClone && - arguments.length === 3 && - typeof j == "string" && - bd.test(j) - ) - return this.each(function () { - f(this).domManip(a, c, d, !0); - }); - if (f.isFunction(j)) - return this.each(function (e) { - var g = f(this); - (a[0] = j.call(this, e, c ? g.html() : b)), g.domManip(a, c, d); - }); - if (this[0]) { - (i = j && j.parentNode), - f.support.parentNode && - i && - i.nodeType === 11 && - i.childNodes.length === this.length - ? (e = { fragment: i }) - : (e = f.buildFragment(a, this, k)), - (h = e.fragment), - h.childNodes.length === 1 - ? (g = h = h.firstChild) - : (g = h.firstChild); - if (g) { - c = c && f.nodeName(g, "tr"); - for (var l = 0, m = this.length, n = m - 1; l < m; l++) - d.call( - c ? bi(this[l], g) : this[l], - e.cacheable || (m > 1 && l < n) ? f.clone(h, !0, !0) : h, - ); - } - k.length && - f.each(k, function (a, b) { - b.src - ? f.ajax({ - type: "GET", - global: !1, - url: b.src, - async: !1, - dataType: "script", - }) - : f.globalEval( - (b.text || b.textContent || b.innerHTML || "").replace( - bf, - "/*$0*/", - ), - ), - b.parentNode && b.parentNode.removeChild(b); - }); - } - return this; - }, - }), - (f.buildFragment = function (a, b, d) { - var e, - g, - h, - i, - j = a[0]; - b && b[0] && (i = b[0].ownerDocument || b[0]), - i.createDocumentFragment || (i = c), - a.length === 1 && - typeof j == "string" && - j.length < 512 && - i === c && - j.charAt(0) === "<" && - !bb.test(j) && - (f.support.checkClone || !bd.test(j)) && - (f.support.html5Clone || !bc.test(j)) && - ((g = !0), (h = f.fragments[j]), h && h !== 1 && (e = h)), - e || ((e = i.createDocumentFragment()), f.clean(a, i, e, d)), - g && (f.fragments[j] = h ? e : 1); - return { fragment: e, cacheable: g }; - }), - (f.fragments = {}), - f.each( - { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith", - }, - function (a, b) { - f.fn[a] = function (c) { - var d = [], - e = f(c), - g = this.length === 1 && this[0].parentNode; - if ( - g && - g.nodeType === 11 && - g.childNodes.length === 1 && - e.length === 1 - ) { - e[b](this[0]); - return this; - } - for (var h = 0, i = e.length; h < i; h++) { - var j = (h > 0 ? this.clone(!0) : this).get(); - f(e[h])[b](j), (d = d.concat(j)); - } - return this.pushStack(d, a, e.selector); - }; - }, - ), - f.extend({ - clone: function (a, b, c) { - var d, - e, - g, - h = - f.support.html5Clone || - f.isXMLDoc(a) || - !bc.test("<" + a.nodeName + ">") - ? a.cloneNode(!0) - : bo(a); - if ( - (!f.support.noCloneEvent || !f.support.noCloneChecked) && - (a.nodeType === 1 || a.nodeType === 11) && - !f.isXMLDoc(a) - ) { - bk(a, h), (d = bl(a)), (e = bl(h)); - for (g = 0; d[g]; ++g) e[g] && bk(d[g], e[g]); - } - if (b) { - bj(a, h); - if (c) { - (d = bl(a)), (e = bl(h)); - for (g = 0; d[g]; ++g) bj(d[g], e[g]); - } - } - d = e = null; - return h; - }, - clean: function (a, b, d, e) { - var g, - h, - i, - j = []; - (b = b || c), - typeof b.createElement == "undefined" && - (b = b.ownerDocument || (b[0] && b[0].ownerDocument) || c); - for (var k = 0, l; (l = a[k]) != null; k++) { - typeof l == "number" && (l += ""); - if (!l) continue; - if (typeof l == "string") - if (!_.test(l)) l = b.createTextNode(l); - else { - l = l.replace(Y, "<$1>"); - var m = (Z.exec(l) || ["", ""])[1].toLowerCase(), - n = bg[m] || bg._default, - o = n[0], - p = b.createElement("div"), - q = bh.childNodes, - r; - b === c ? bh.appendChild(p) : U(b).appendChild(p), - (p.innerHTML = n[1] + l + n[2]); - while (o--) p = p.lastChild; - if (!f.support.tbody) { - var s = $.test(l), - t = - m === "table" && !s - ? p.firstChild && p.firstChild.childNodes - : n[1] === "" && !s - ? p.childNodes - : []; - for (i = t.length - 1; i >= 0; --i) - f.nodeName(t[i], "tbody") && - !t[i].childNodes.length && - t[i].parentNode.removeChild(t[i]); - } - !f.support.leadingWhitespace && - X.test(l) && - p.insertBefore(b.createTextNode(X.exec(l)[0]), p.firstChild), - (l = p.childNodes), - p && - (p.parentNode.removeChild(p), - q.length > 0 && - ((r = q[q.length - 1]), - r && r.parentNode && r.parentNode.removeChild(r))); - } - var u; - if (!f.support.appendChecked) - if (l[0] && typeof (u = l.length) == "number") - for (i = 0; i < u; i++) bn(l[i]); - else bn(l); - l.nodeType ? j.push(l) : (j = f.merge(j, l)); - } - if (d) { - g = function (a) { - return !a.type || be.test(a.type); - }; - for (k = 0; j[k]; k++) { - h = j[k]; - if (e && f.nodeName(h, "script") && (!h.type || be.test(h.type))) - e.push(h.parentNode ? h.parentNode.removeChild(h) : h); - else { - if (h.nodeType === 1) { - var v = f.grep(h.getElementsByTagName("script"), g); - j.splice.apply(j, [k + 1, 0].concat(v)); - } - d.appendChild(h); - } - } - } - return j; - }, - cleanData: function (a) { - var b, - c, - d = f.cache, - e = f.event.special, - g = f.support.deleteExpando; - for (var h = 0, i; (i = a[h]) != null; h++) { - if (i.nodeName && f.noData[i.nodeName.toLowerCase()]) continue; - c = i[f.expando]; - if (c) { - b = d[c]; - if (b && b.events) { - for (var j in b.events) - e[j] ? f.event.remove(i, j) : f.removeEvent(i, j, b.handle); - b.handle && (b.handle.elem = null); - } - g - ? delete i[f.expando] - : i.removeAttribute && i.removeAttribute(f.expando), - delete d[c]; - } - } - }, - }); - var bp = /alpha\([^)]*\)/i, - bq = /opacity=([^)]*)/, - br = /([A-Z]|^ms)/g, - bs = /^[\-+]?(?:\d*\.)?\d+$/i, - bt = /^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i, - bu = /^([\-+])=([\-+.\de]+)/, - bv = /^margin/, - bw = { position: "absolute", visibility: "hidden", display: "block" }, - bx = ["Top", "Right", "Bottom", "Left"], - by, - bz, - bA; - (f.fn.css = function (a, c) { - return f.access( - this, - function (a, c, d) { - return d !== b ? f.style(a, c, d) : f.css(a, c); - }, - a, - c, - arguments.length > 1, - ); - }), - f.extend({ - cssHooks: { - opacity: { - get: function (a, b) { - if (b) { - var c = by(a, "opacity"); - return c === "" ? "1" : c; - } - return a.style.opacity; - }, - }, - }, - cssNumber: { - fillOpacity: !0, - fontWeight: !0, - lineHeight: !0, - opacity: !0, - orphans: !0, - widows: !0, - zIndex: !0, - zoom: !0, - }, - cssProps: { float: f.support.cssFloat ? "cssFloat" : "styleFloat" }, - style: function (a, c, d, e) { - if (!!a && a.nodeType !== 3 && a.nodeType !== 8 && !!a.style) { - var g, - h, - i = f.camelCase(c), - j = a.style, - k = f.cssHooks[i]; - c = f.cssProps[i] || i; - if (d === b) { - if (k && "get" in k && (g = k.get(a, !1, e)) !== b) return g; - return j[c]; - } - (h = typeof d), - h === "string" && - (g = bu.exec(d)) && - ((d = +(g[1] + 1) * +g[2] + parseFloat(f.css(a, c))), - (h = "number")); - if (d == null || (h === "number" && isNaN(d))) return; - h === "number" && !f.cssNumber[i] && (d += "px"); - if (!k || !("set" in k) || (d = k.set(a, d)) !== b) - try { - j[c] = d; - } catch (l) {} - } - }, - css: function (a, c, d) { - var e, g; - (c = f.camelCase(c)), - (g = f.cssHooks[c]), - (c = f.cssProps[c] || c), - c === "cssFloat" && (c = "float"); - if (g && "get" in g && (e = g.get(a, !0, d)) !== b) return e; - if (by) return by(a, c); - }, - swap: function (a, b, c) { - var d = {}, - e, - f; - for (f in b) (d[f] = a.style[f]), (a.style[f] = b[f]); - e = c.call(a); - for (f in b) a.style[f] = d[f]; - return e; - }, - }), - (f.curCSS = f.css), - c.defaultView && - c.defaultView.getComputedStyle && - (bz = function (a, b) { - var c, - d, - e, - g, - h = a.style; - (b = b.replace(br, "-$1").toLowerCase()), - (d = a.ownerDocument.defaultView) && - (e = d.getComputedStyle(a, null)) && - ((c = e.getPropertyValue(b)), - c === "" && - !f.contains(a.ownerDocument.documentElement, a) && - (c = f.style(a, b))), - !f.support.pixelMargin && - e && - bv.test(b) && - bt.test(c) && - ((g = h.width), (h.width = c), (c = e.width), (h.width = g)); - return c; - }), - c.documentElement.currentStyle && - (bA = function (a, b) { - var c, - d, - e, - f = a.currentStyle && a.currentStyle[b], - g = a.style; - f == null && g && (e = g[b]) && (f = e), - bt.test(f) && - ((c = g.left), - (d = a.runtimeStyle && a.runtimeStyle.left), - d && (a.runtimeStyle.left = a.currentStyle.left), - (g.left = b === "fontSize" ? "1em" : f), - (f = g.pixelLeft + "px"), - (g.left = c), - d && (a.runtimeStyle.left = d)); - return f === "" ? "auto" : f; - }), - (by = bz || bA), - f.each(["height", "width"], function (a, b) { - f.cssHooks[b] = { - get: function (a, c, d) { - if (c) - return a.offsetWidth !== 0 - ? bB(a, b, d) - : f.swap(a, bw, function () { - return bB(a, b, d); - }); - }, - set: function (a, b) { - return bs.test(b) ? b + "px" : b; - }, - }; - }), - f.support.opacity || - (f.cssHooks.opacity = { - get: function (a, b) { - return bq.test( - (b && a.currentStyle ? a.currentStyle.filter : a.style.filter) || - "", - ) - ? parseFloat(RegExp.$1) / 100 + "" - : b - ? "1" - : ""; - }, - set: function (a, b) { - var c = a.style, - d = a.currentStyle, - e = f.isNumeric(b) ? "alpha(opacity=" + b * 100 + ")" : "", - g = (d && d.filter) || c.filter || ""; - c.zoom = 1; - if (b >= 1 && f.trim(g.replace(bp, "")) === "") { - c.removeAttribute("filter"); - if (d && !d.filter) return; - } - c.filter = bp.test(g) ? g.replace(bp, e) : g + " " + e; - }, - }), - f(function () { - f.support.reliableMarginRight || - (f.cssHooks.marginRight = { - get: function (a, b) { - return f.swap(a, { display: "inline-block" }, function () { - return b ? by(a, "margin-right") : a.style.marginRight; - }); - }, - }); - }), - f.expr && - f.expr.filters && - ((f.expr.filters.hidden = function (a) { - var b = a.offsetWidth, - c = a.offsetHeight; - return ( - (b === 0 && c === 0) || - (!f.support.reliableHiddenOffsets && - ((a.style && a.style.display) || f.css(a, "display")) === "none") - ); - }), - (f.expr.filters.visible = function (a) { - return !f.expr.filters.hidden(a); - })), - f.each({ margin: "", padding: "", border: "Width" }, function (a, b) { - f.cssHooks[a + b] = { - expand: function (c) { - var d, - e = typeof c == "string" ? c.split(" ") : [c], - f = {}; - for (d = 0; d < 4; d++) f[a + bx[d] + b] = e[d] || e[d - 2] || e[0]; - return f; - }, - }; - }); - var bC = /%20/g, - bD = /\[\]$/, - bE = /\r?\n/g, - bF = /#.*$/, - bG = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm, - bH = - /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, - bI = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/, - bJ = /^(?:GET|HEAD)$/, - bK = /^\/\//, - bL = /\?/, - bM = /)<[^<]*)*<\/script>/gi, - bN = /^(?:select|textarea)/i, - bO = /\s+/, - bP = /([?&])_=[^&]*/, - bQ = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/, - bR = f.fn.load, - bS = {}, - bT = {}, - bU, - bV, - bW = ["*/"] + ["*"]; - try { - bU = e.href; - } catch (bX) { - (bU = c.createElement("a")), (bU.href = ""), (bU = bU.href); - } - (bV = bQ.exec(bU.toLowerCase()) || []), - f.fn.extend({ - load: function (a, c, d) { - if (typeof a != "string" && bR) return bR.apply(this, arguments); - if (!this.length) return this; - var e = a.indexOf(" "); - if (e >= 0) { - var g = a.slice(e, a.length); - a = a.slice(0, e); - } - var h = "GET"; - c && - (f.isFunction(c) - ? ((d = c), (c = b)) - : typeof c == "object" && - ((c = f.param(c, f.ajaxSettings.traditional)), (h = "POST"))); - var i = this; - f.ajax({ - url: a, - type: h, - dataType: "html", - data: c, - complete: function (a, b, c) { - (c = a.responseText), - a.isResolved() && - (a.done(function (a) { - c = a; - }), - i.html(g ? f("
      ").append(c.replace(bM, "")).find(g) : c)), - d && i.each(d, [c, b, a]); - }, - }); - return this; - }, - serialize: function () { - return f.param(this.serializeArray()); - }, - serializeArray: function () { - return this.map(function () { - return this.elements ? f.makeArray(this.elements) : this; - }) - .filter(function () { - return ( - this.name && - !this.disabled && - (this.checked || bN.test(this.nodeName) || bH.test(this.type)) - ); - }) - .map(function (a, b) { - var c = f(this).val(); - return c == null - ? null - : f.isArray(c) - ? f.map(c, function (a, c) { - return { name: b.name, value: a.replace(bE, "\r\n") }; - }) - : { name: b.name, value: c.replace(bE, "\r\n") }; - }) - .get(); - }, - }), - f.each( - "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( - " ", - ), - function (a, b) { - f.fn[b] = function (a) { - return this.on(b, a); - }; - }, - ), - f.each(["get", "post"], function (a, c) { - f[c] = function (a, d, e, g) { - f.isFunction(d) && ((g = g || e), (e = d), (d = b)); - return f.ajax({ type: c, url: a, data: d, success: e, dataType: g }); - }; - }), - f.extend({ - getScript: function (a, c) { - return f.get(a, b, c, "script"); - }, - getJSON: function (a, b, c) { - return f.get(a, b, c, "json"); - }, - ajaxSetup: function (a, b) { - b ? b$(a, f.ajaxSettings) : ((b = a), (a = f.ajaxSettings)), b$(a, b); - return a; - }, - ajaxSettings: { - url: bU, - isLocal: bI.test(bV[1]), - global: !0, - type: "GET", - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - processData: !0, - async: !0, - accepts: { - xml: "application/xml, text/xml", - html: "text/html", - text: "text/plain", - json: "application/json, text/javascript", - "*": bW, - }, - contents: { xml: /xml/, html: /html/, json: /json/ }, - responseFields: { xml: "responseXML", text: "responseText" }, - converters: { - "* text": a.String, - "text html": !0, - "text json": f.parseJSON, - "text xml": f.parseXML, - }, - flatOptions: { context: !0, url: !0 }, - }, - ajaxPrefilter: bY(bS), - ajaxTransport: bY(bT), - ajax: function (a, c) { - function w(a, c, l, m) { - if (s !== 2) { - (s = 2), - q && clearTimeout(q), - (p = b), - (n = m || ""), - (v.readyState = a > 0 ? 4 : 0); - var o, - r, - u, - w = c, - x = l ? ca(d, v, l) : b, - y, - z; - if ((a >= 200 && a < 300) || a === 304) { - if (d.ifModified) { - if ((y = v.getResponseHeader("Last-Modified"))) - f.lastModified[k] = y; - if ((z = v.getResponseHeader("Etag"))) f.etag[k] = z; - } - if (a === 304) (w = "notmodified"), (o = !0); - else - try { - (r = cb(d, x)), (w = "success"), (o = !0); - } catch (A) { - (w = "parsererror"), (u = A); - } - } else { - u = w; - if (!w || a) (w = "error"), a < 0 && (a = 0); - } - (v.status = a), - (v.statusText = "" + (c || w)), - o ? h.resolveWith(e, [r, w, v]) : h.rejectWith(e, [v, w, u]), - v.statusCode(j), - (j = b), - t && - g.trigger("ajax" + (o ? "Success" : "Error"), [ - v, - d, - o ? r : u, - ]), - i.fireWith(e, [v, w]), - t && - (g.trigger("ajaxComplete", [v, d]), - --f.active || f.event.trigger("ajaxStop")); - } - } - typeof a == "object" && ((c = a), (a = b)), (c = c || {}); - var d = f.ajaxSetup({}, c), - e = d.context || d, - g = e !== d && (e.nodeType || e instanceof f) ? f(e) : f.event, - h = f.Deferred(), - i = f.Callbacks("once memory"), - j = d.statusCode || {}, - k, - l = {}, - m = {}, - n, - o, - p, - q, - r, - s = 0, - t, - u, - v = { - readyState: 0, - setRequestHeader: function (a, b) { - if (!s) { - var c = a.toLowerCase(); - (a = m[c] = m[c] || a), (l[a] = b); - } - return this; - }, - getAllResponseHeaders: function () { - return s === 2 ? n : null; - }, - getResponseHeader: function (a) { - var c; - if (s === 2) { - if (!o) { - o = {}; - while ((c = bG.exec(n))) o[c[1].toLowerCase()] = c[2]; - } - c = o[a.toLowerCase()]; - } - return c === b ? null : c; - }, - overrideMimeType: function (a) { - s || (d.mimeType = a); - return this; - }, - abort: function (a) { - (a = a || "abort"), p && p.abort(a), w(0, a); - return this; - }, - }; - h.promise(v), - (v.success = v.done), - (v.error = v.fail), - (v.complete = i.add), - (v.statusCode = function (a) { - if (a) { - var b; - if (s < 2) for (b in a) j[b] = [j[b], a[b]]; - else (b = a[v.status]), v.then(b, b); - } - return this; - }), - (d.url = ((a || d.url) + "") - .replace(bF, "") - .replace(bK, bV[1] + "//")), - (d.dataTypes = f - .trim(d.dataType || "*") - .toLowerCase() - .split(bO)), - d.crossDomain == null && - ((r = bQ.exec(d.url.toLowerCase())), - (d.crossDomain = !( - !r || - (r[1] == bV[1] && - r[2] == bV[2] && - (r[3] || (r[1] === "http:" ? 80 : 443)) == - (bV[3] || (bV[1] === "http:" ? 80 : 443))) - ))), - d.data && - d.processData && - typeof d.data != "string" && - (d.data = f.param(d.data, d.traditional)), - bZ(bS, d, c, v); - if (s === 2) return !1; - (t = d.global), - (d.type = d.type.toUpperCase()), - (d.hasContent = !bJ.test(d.type)), - t && f.active++ === 0 && f.event.trigger("ajaxStart"); - if (!d.hasContent) { - d.data && - ((d.url += (bL.test(d.url) ? "&" : "?") + d.data), delete d.data), - (k = d.url); - if (d.cache === !1) { - var x = f.now(), - y = d.url.replace(bP, "$1_=" + x); - d.url = - y + (y === d.url ? (bL.test(d.url) ? "&" : "?") + "_=" + x : ""); - } - } - ((d.data && d.hasContent && d.contentType !== !1) || c.contentType) && - v.setRequestHeader("Content-Type", d.contentType), - d.ifModified && - ((k = k || d.url), - f.lastModified[k] && - v.setRequestHeader("If-Modified-Since", f.lastModified[k]), - f.etag[k] && v.setRequestHeader("If-None-Match", f.etag[k])), - v.setRequestHeader( - "Accept", - d.dataTypes[0] && d.accepts[d.dataTypes[0]] - ? d.accepts[d.dataTypes[0]] + - (d.dataTypes[0] !== "*" ? ", " + bW + "; q=0.01" : "") - : d.accepts["*"], - ); - for (u in d.headers) v.setRequestHeader(u, d.headers[u]); - if (d.beforeSend && (d.beforeSend.call(e, v, d) === !1 || s === 2)) { - v.abort(); - return !1; - } - for (u in { success: 1, error: 1, complete: 1 }) v[u](d[u]); - p = bZ(bT, d, c, v); - if (!p) w(-1, "No Transport"); - else { - (v.readyState = 1), - t && g.trigger("ajaxSend", [v, d]), - d.async && - d.timeout > 0 && - (q = setTimeout(function () { - v.abort("timeout"); - }, d.timeout)); - try { - (s = 1), p.send(l, w); - } catch (z) { - if (s < 2) w(-1, z); - else throw z; - } - } - return v; - }, - param: function (a, c) { - var d = [], - e = function (a, b) { - (b = f.isFunction(b) ? b() : b), - (d[d.length] = - encodeURIComponent(a) + "=" + encodeURIComponent(b)); - }; - c === b && (c = f.ajaxSettings.traditional); - if (f.isArray(a) || (a.jquery && !f.isPlainObject(a))) - f.each(a, function () { - e(this.name, this.value); - }); - else for (var g in a) b_(g, a[g], c, e); - return d.join("&").replace(bC, "+"); - }, - }), - f.extend({ active: 0, lastModified: {}, etag: {} }); - var cc = f.now(), - cd = /(\=)\?(&|$)|\?\?/i; - f.ajaxSetup({ - jsonp: "callback", - jsonpCallback: function () { - return f.expando + "_" + cc++; - }, - }), - f.ajaxPrefilter("json jsonp", function (b, c, d) { - var e = - typeof b.data == "string" && - /^application\/x\-www\-form\-urlencoded/.test(b.contentType); - if ( - b.dataTypes[0] === "jsonp" || - (b.jsonp !== !1 && (cd.test(b.url) || (e && cd.test(b.data)))) - ) { - var g, - h = (b.jsonpCallback = f.isFunction(b.jsonpCallback) - ? b.jsonpCallback() - : b.jsonpCallback), - i = a[h], - j = b.url, - k = b.data, - l = "$1" + h + "$2"; - b.jsonp !== !1 && - ((j = j.replace(cd, l)), - b.url === j && - (e && (k = k.replace(cd, l)), - b.data === k && - (j += (/\?/.test(j) ? "&" : "?") + b.jsonp + "=" + h))), - (b.url = j), - (b.data = k), - (a[h] = function (a) { - g = [a]; - }), - d.always(function () { - (a[h] = i), g && f.isFunction(i) && a[h](g[0]); - }), - (b.converters["script json"] = function () { - g || f.error(h + " was not called"); - return g[0]; - }), - (b.dataTypes[0] = "json"); - return "script"; - } - }), - f.ajaxSetup({ - accepts: { - script: - "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript", - }, - contents: { script: /javascript|ecmascript/ }, - converters: { - "text script": function (a) { - f.globalEval(a); - return a; - }, - }, - }), - f.ajaxPrefilter("script", function (a) { - a.cache === b && (a.cache = !1), - a.crossDomain && ((a.type = "GET"), (a.global = !1)); - }), - f.ajaxTransport("script", function (a) { - if (a.crossDomain) { - var d, - e = c.head || c.getElementsByTagName("head")[0] || c.documentElement; - return { - send: function (f, g) { - (d = c.createElement("script")), - (d.async = "async"), - a.scriptCharset && (d.charset = a.scriptCharset), - (d.src = a.url), - (d.onload = d.onreadystatechange = - function (a, c) { - if ( - c || - !d.readyState || - /loaded|complete/.test(d.readyState) - ) - (d.onload = d.onreadystatechange = null), - e && d.parentNode && e.removeChild(d), - (d = b), - c || g(200, "success"); - }), - e.insertBefore(d, e.firstChild); - }, - abort: function () { - d && d.onload(0, 1); - }, - }; - } - }); - var ce = a.ActiveXObject - ? function () { - for (var a in cg) cg[a](0, 1); - } - : !1, - cf = 0, - cg; - (f.ajaxSettings.xhr = a.ActiveXObject - ? function () { - return (!this.isLocal && ch()) || ci(); - } - : ch), - (function (a) { - f.extend(f.support, { ajax: !!a, cors: !!a && "withCredentials" in a }); - })(f.ajaxSettings.xhr()), - f.support.ajax && - f.ajaxTransport(function (c) { - if (!c.crossDomain || f.support.cors) { - var d; - return { - send: function (e, g) { - var h = c.xhr(), - i, - j; - c.username - ? h.open(c.type, c.url, c.async, c.username, c.password) - : h.open(c.type, c.url, c.async); - if (c.xhrFields) for (j in c.xhrFields) h[j] = c.xhrFields[j]; - c.mimeType && - h.overrideMimeType && - h.overrideMimeType(c.mimeType), - !c.crossDomain && - !e["X-Requested-With"] && - (e["X-Requested-With"] = "XMLHttpRequest"); - try { - for (j in e) h.setRequestHeader(j, e[j]); - } catch (k) {} - h.send((c.hasContent && c.data) || null), - (d = function (a, e) { - var j, k, l, m, n; - try { - if (d && (e || h.readyState === 4)) { - (d = b), - i && - ((h.onreadystatechange = f.noop), ce && delete cg[i]); - if (e) h.readyState !== 4 && h.abort(); - else { - (j = h.status), - (l = h.getAllResponseHeaders()), - (m = {}), - (n = h.responseXML), - n && n.documentElement && (m.xml = n); - try { - m.text = h.responseText; - } catch (a) {} - try { - k = h.statusText; - } catch (o) { - k = ""; - } - !j && c.isLocal && !c.crossDomain - ? (j = m.text ? 200 : 404) - : j === 1223 && (j = 204); - } - } - } catch (p) { - e || g(-1, p); - } - m && g(j, k, m, l); - }), - !c.async || h.readyState === 4 - ? d() - : ((i = ++cf), - ce && (cg || ((cg = {}), f(a).unload(ce)), (cg[i] = d)), - (h.onreadystatechange = d)); - }, - abort: function () { - d && d(0, 1); - }, - }; - } - }); - var cj = {}, - ck, - cl, - cm = /^(?:toggle|show|hide)$/, - cn = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i, - co, - cp = [ - ["height", "marginTop", "marginBottom", "paddingTop", "paddingBottom"], - ["width", "marginLeft", "marginRight", "paddingLeft", "paddingRight"], - ["opacity"], - ], - cq; - f.fn.extend({ - show: function (a, b, c) { - var d, e; - if (a || a === 0) return this.animate(ct("show", 3), a, b, c); - for (var g = 0, h = this.length; g < h; g++) - (d = this[g]), - d.style && - ((e = d.style.display), - !f._data(d, "olddisplay") && - e === "none" && - (e = d.style.display = ""), - ((e === "" && f.css(d, "display") === "none") || - !f.contains(d.ownerDocument.documentElement, d)) && - f._data(d, "olddisplay", cu(d.nodeName))); - for (g = 0; g < h; g++) { - d = this[g]; - if (d.style) { - e = d.style.display; - if (e === "" || e === "none") - d.style.display = f._data(d, "olddisplay") || ""; - } - } - return this; - }, - hide: function (a, b, c) { - if (a || a === 0) return this.animate(ct("hide", 3), a, b, c); - var d, - e, - g = 0, - h = this.length; - for (; g < h; g++) - (d = this[g]), - d.style && - ((e = f.css(d, "display")), - e !== "none" && - !f._data(d, "olddisplay") && - f._data(d, "olddisplay", e)); - for (g = 0; g < h; g++) this[g].style && (this[g].style.display = "none"); - return this; - }, - _toggle: f.fn.toggle, - toggle: function (a, b, c) { - var d = typeof a == "boolean"; - f.isFunction(a) && f.isFunction(b) - ? this._toggle.apply(this, arguments) - : a == null || d - ? this.each(function () { - var b = d ? a : f(this).is(":hidden"); - f(this)[b ? "show" : "hide"](); - }) - : this.animate(ct("toggle", 3), a, b, c); - return this; - }, - fadeTo: function (a, b, c, d) { - return this.filter(":hidden") - .css("opacity", 0) - .show() - .end() - .animate({ opacity: b }, a, c, d); - }, - animate: function (a, b, c, d) { - function g() { - e.queue === !1 && f._mark(this); - var b = f.extend({}, e), - c = this.nodeType === 1, - d = c && f(this).is(":hidden"), - g, - h, - i, - j, - k, - l, - m, - n, - o, - p, - q; - b.animatedProperties = {}; - for (i in a) { - (g = f.camelCase(i)), i !== g && ((a[g] = a[i]), delete a[i]); - if ((k = f.cssHooks[g]) && "expand" in k) { - (l = k.expand(a[g])), delete a[g]; - for (i in l) i in a || (a[i] = l[i]); - } - } - for (g in a) { - (h = a[g]), - f.isArray(h) - ? ((b.animatedProperties[g] = h[1]), (h = a[g] = h[0])) - : (b.animatedProperties[g] = - (b.specialEasing && b.specialEasing[g]) || - b.easing || - "swing"); - if ((h === "hide" && d) || (h === "show" && !d)) - return b.complete.call(this); - c && - (g === "height" || g === "width") && - ((b.overflow = [ - this.style.overflow, - this.style.overflowX, - this.style.overflowY, - ]), - f.css(this, "display") === "inline" && - f.css(this, "float") === "none" && - (!f.support.inlineBlockNeedsLayout || - cu(this.nodeName) === "inline" - ? (this.style.display = "inline-block") - : (this.style.zoom = 1))); - } - b.overflow != null && (this.style.overflow = "hidden"); - for (i in a) - (j = new f.fx(this, b, i)), - (h = a[i]), - cm.test(h) - ? ((q = - f._data(this, "toggle" + i) || - (h === "toggle" ? (d ? "show" : "hide") : 0)), - q - ? (f._data( - this, - "toggle" + i, - q === "show" ? "hide" : "show", - ), - j[q]()) - : j[h]()) - : ((m = cn.exec(h)), - (n = j.cur()), - m - ? ((o = parseFloat(m[2])), - (p = m[3] || (f.cssNumber[i] ? "" : "px")), - p !== "px" && - (f.style(this, i, (o || 1) + p), - (n = ((o || 1) / j.cur()) * n), - f.style(this, i, n + p)), - m[1] && (o = (m[1] === "-=" ? -1 : 1) * o + n), - j.custom(n, o, p)) - : j.custom(n, h, "")); - return !0; - } - var e = f.speed(b, c, d); - if (f.isEmptyObject(a)) return this.each(e.complete, [!1]); - a = f.extend({}, a); - return e.queue === !1 ? this.each(g) : this.queue(e.queue, g); - }, - stop: function (a, c, d) { - typeof a != "string" && ((d = c), (c = a), (a = b)), - c && a !== !1 && this.queue(a || "fx", []); - return this.each(function () { - function h(a, b, c) { - var e = b[c]; - f.removeData(a, c, !0), e.stop(d); - } - var b, - c = !1, - e = f.timers, - g = f._data(this); - d || f._unmark(!0, this); - if (a == null) - for (b in g) - g[b] && - g[b].stop && - b.indexOf(".run") === b.length - 4 && - h(this, g, b); - else g[(b = a + ".run")] && g[b].stop && h(this, g, b); - for (b = e.length; b--; ) - e[b].elem === this && - (a == null || e[b].queue === a) && - (d ? e[b](!0) : e[b].saveState(), (c = !0), e.splice(b, 1)); - (!d || !c) && f.dequeue(this, a); - }); - }, - }), - f.each( - { - slideDown: ct("show", 1), - slideUp: ct("hide", 1), - slideToggle: ct("toggle", 1), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" }, - }, - function (a, b) { - f.fn[a] = function (a, c, d) { - return this.animate(b, a, c, d); - }; - }, - ), - f.extend({ - speed: function (a, b, c) { - var d = - a && typeof a == "object" - ? f.extend({}, a) - : { - complete: c || (!c && b) || (f.isFunction(a) && a), - duration: a, - easing: (c && b) || (b && !f.isFunction(b) && b), - }; - d.duration = f.fx.off - ? 0 - : typeof d.duration == "number" - ? d.duration - : d.duration in f.fx.speeds - ? f.fx.speeds[d.duration] - : f.fx.speeds._default; - if (d.queue == null || d.queue === !0) d.queue = "fx"; - (d.old = d.complete), - (d.complete = function (a) { - f.isFunction(d.old) && d.old.call(this), - d.queue ? f.dequeue(this, d.queue) : a !== !1 && f._unmark(this); - }); - return d; - }, - easing: { - linear: function (a) { - return a; - }, - swing: function (a) { - return -Math.cos(a * Math.PI) / 2 + 0.5; - }, - }, - timers: [], - fx: function (a, b, c) { - (this.options = b), - (this.elem = a), - (this.prop = c), - (b.orig = b.orig || {}); - }, - }), - (f.fx.prototype = { - update: function () { - this.options.step && this.options.step.call(this.elem, this.now, this), - (f.fx.step[this.prop] || f.fx.step._default)(this); - }, - cur: function () { - if ( - this.elem[this.prop] != null && - (!this.elem.style || this.elem.style[this.prop] == null) - ) - return this.elem[this.prop]; - var a, - b = f.css(this.elem, this.prop); - return isNaN((a = parseFloat(b))) ? (!b || b === "auto" ? 0 : b) : a; - }, - custom: function (a, c, d) { - function h(a) { - return e.step(a); - } - var e = this, - g = f.fx; - (this.startTime = cq || cr()), - (this.end = c), - (this.now = this.start = a), - (this.pos = this.state = 0), - (this.unit = d || this.unit || (f.cssNumber[this.prop] ? "" : "px")), - (h.queue = this.options.queue), - (h.elem = this.elem), - (h.saveState = function () { - f._data(e.elem, "fxshow" + e.prop) === b && - (e.options.hide - ? f._data(e.elem, "fxshow" + e.prop, e.start) - : e.options.show && f._data(e.elem, "fxshow" + e.prop, e.end)); - }), - h() && - f.timers.push(h) && - !co && - (co = setInterval(g.tick, g.interval)); - }, - show: function () { - var a = f._data(this.elem, "fxshow" + this.prop); - (this.options.orig[this.prop] = a || f.style(this.elem, this.prop)), - (this.options.show = !0), - a !== b - ? this.custom(this.cur(), a) - : this.custom( - this.prop === "width" || this.prop === "height" ? 1 : 0, - this.cur(), - ), - f(this.elem).show(); - }, - hide: function () { - (this.options.orig[this.prop] = - f._data(this.elem, "fxshow" + this.prop) || - f.style(this.elem, this.prop)), - (this.options.hide = !0), - this.custom(this.cur(), 0); - }, - step: function (a) { - var b, - c, - d, - e = cq || cr(), - g = !0, - h = this.elem, - i = this.options; - if (a || e >= i.duration + this.startTime) { - (this.now = this.end), - (this.pos = this.state = 1), - this.update(), - (i.animatedProperties[this.prop] = !0); - for (b in i.animatedProperties) - i.animatedProperties[b] !== !0 && (g = !1); - if (g) { - i.overflow != null && - !f.support.shrinkWrapBlocks && - f.each(["", "X", "Y"], function (a, b) { - h.style["overflow" + b] = i.overflow[a]; - }), - i.hide && f(h).hide(); - if (i.hide || i.show) - for (b in i.animatedProperties) - f.style(h, b, i.orig[b]), - f.removeData(h, "fxshow" + b, !0), - f.removeData(h, "toggle" + b, !0); - (d = i.complete), d && ((i.complete = !1), d.call(h)); - } - return !1; - } - i.duration == Infinity - ? (this.now = e) - : ((c = e - this.startTime), - (this.state = c / i.duration), - (this.pos = f.easing[i.animatedProperties[this.prop]]( - this.state, - c, - 0, - 1, - i.duration, - )), - (this.now = this.start + (this.end - this.start) * this.pos)), - this.update(); - return !0; - }, - }), - f.extend(f.fx, { - tick: function () { - var a, - b = f.timers, - c = 0; - for (; c < b.length; c++) - (a = b[c]), !a() && b[c] === a && b.splice(c--, 1); - b.length || f.fx.stop(); - }, - interval: 13, - stop: function () { - clearInterval(co), (co = null); - }, - speeds: { slow: 600, fast: 200, _default: 400 }, - step: { - opacity: function (a) { - f.style(a.elem, "opacity", a.now); - }, - _default: function (a) { - a.elem.style && a.elem.style[a.prop] != null - ? (a.elem.style[a.prop] = a.now + a.unit) - : (a.elem[a.prop] = a.now); - }, - }, - }), - f.each(cp.concat.apply([], cp), function (a, b) { - b.indexOf("margin") && - (f.fx.step[b] = function (a) { - f.style(a.elem, b, Math.max(0, a.now) + a.unit); - }); - }), - f.expr && - f.expr.filters && - (f.expr.filters.animated = function (a) { - return f.grep(f.timers, function (b) { - return a === b.elem; - }).length; - }); - var cv, - cw = /^t(?:able|d|h)$/i, - cx = /^(?:body|html)$/i; - "getBoundingClientRect" in c.documentElement - ? (cv = function (a, b, c, d) { - try { - d = a.getBoundingClientRect(); - } catch (e) {} - if (!d || !f.contains(c, a)) - return d ? { top: d.top, left: d.left } : { top: 0, left: 0 }; - var g = b.body, - h = cy(b), - i = c.clientTop || g.clientTop || 0, - j = c.clientLeft || g.clientLeft || 0, - k = - h.pageYOffset || (f.support.boxModel && c.scrollTop) || g.scrollTop, - l = - h.pageXOffset || - (f.support.boxModel && c.scrollLeft) || - g.scrollLeft, - m = d.top + k - i, - n = d.left + l - j; - return { top: m, left: n }; - }) - : (cv = function (a, b, c) { - var d, - e = a.offsetParent, - g = a, - h = b.body, - i = b.defaultView, - j = i ? i.getComputedStyle(a, null) : a.currentStyle, - k = a.offsetTop, - l = a.offsetLeft; - while ((a = a.parentNode) && a !== h && a !== c) { - if (f.support.fixedPosition && j.position === "fixed") break; - (d = i ? i.getComputedStyle(a, null) : a.currentStyle), - (k -= a.scrollTop), - (l -= a.scrollLeft), - a === e && - ((k += a.offsetTop), - (l += a.offsetLeft), - f.support.doesNotAddBorder && - (!f.support.doesAddBorderForTableAndCells || - !cw.test(a.nodeName)) && - ((k += parseFloat(d.borderTopWidth) || 0), - (l += parseFloat(d.borderLeftWidth) || 0)), - (g = e), - (e = a.offsetParent)), - f.support.subtractsBorderForOverflowNotVisible && - d.overflow !== "visible" && - ((k += parseFloat(d.borderTopWidth) || 0), - (l += parseFloat(d.borderLeftWidth) || 0)), - (j = d); - } - if (j.position === "relative" || j.position === "static") - (k += h.offsetTop), (l += h.offsetLeft); - f.support.fixedPosition && - j.position === "fixed" && - ((k += Math.max(c.scrollTop, h.scrollTop)), - (l += Math.max(c.scrollLeft, h.scrollLeft))); - return { top: k, left: l }; - }), - (f.fn.offset = function (a) { - if (arguments.length) - return a === b - ? this - : this.each(function (b) { - f.offset.setOffset(this, a, b); - }); - var c = this[0], - d = c && c.ownerDocument; - if (!d) return null; - if (c === d.body) return f.offset.bodyOffset(c); - return cv(c, d, d.documentElement); - }), - (f.offset = { - bodyOffset: function (a) { - var b = a.offsetTop, - c = a.offsetLeft; - f.support.doesNotIncludeMarginInBodyOffset && - ((b += parseFloat(f.css(a, "marginTop")) || 0), - (c += parseFloat(f.css(a, "marginLeft")) || 0)); - return { top: b, left: c }; - }, - setOffset: function (a, b, c) { - var d = f.css(a, "position"); - d === "static" && (a.style.position = "relative"); - var e = f(a), - g = e.offset(), - h = f.css(a, "top"), - i = f.css(a, "left"), - j = - (d === "absolute" || d === "fixed") && - f.inArray("auto", [h, i]) > -1, - k = {}, - l = {}, - m, - n; - j - ? ((l = e.position()), (m = l.top), (n = l.left)) - : ((m = parseFloat(h) || 0), (n = parseFloat(i) || 0)), - f.isFunction(b) && (b = b.call(a, c, g)), - b.top != null && (k.top = b.top - g.top + m), - b.left != null && (k.left = b.left - g.left + n), - "using" in b ? b.using.call(a, k) : e.css(k); - }, - }), - f.fn.extend({ - position: function () { - if (!this[0]) return null; - var a = this[0], - b = this.offsetParent(), - c = this.offset(), - d = cx.test(b[0].nodeName) ? { top: 0, left: 0 } : b.offset(); - (c.top -= parseFloat(f.css(a, "marginTop")) || 0), - (c.left -= parseFloat(f.css(a, "marginLeft")) || 0), - (d.top += parseFloat(f.css(b[0], "borderTopWidth")) || 0), - (d.left += parseFloat(f.css(b[0], "borderLeftWidth")) || 0); - return { top: c.top - d.top, left: c.left - d.left }; - }, - offsetParent: function () { - return this.map(function () { - var a = this.offsetParent || c.body; - while (a && !cx.test(a.nodeName) && f.css(a, "position") === "static") - a = a.offsetParent; - return a; - }); - }, - }), - f.each( - { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, - function (a, c) { - var d = /Y/.test(c); - f.fn[a] = function (e) { - return f.access( - this, - function (a, e, g) { - var h = cy(a); - if (g === b) - return h - ? c in h - ? h[c] - : (f.support.boxModel && h.document.documentElement[e]) || - h.document.body[e] - : a[e]; - h - ? h.scrollTo( - d ? f(h).scrollLeft() : g, - d ? g : f(h).scrollTop(), - ) - : (a[e] = g); - }, - a, - e, - arguments.length, - null, - ); - }; - }, - ), - f.each({ Height: "height", Width: "width" }, function (a, c) { - var d = "client" + a, - e = "scroll" + a, - g = "offset" + a; - (f.fn["inner" + a] = function () { - var a = this[0]; - return a - ? a.style - ? parseFloat(f.css(a, c, "padding")) - : this[c]() - : null; - }), - (f.fn["outer" + a] = function (a) { - var b = this[0]; - return b - ? b.style - ? parseFloat(f.css(b, c, a ? "margin" : "border")) - : this[c]() - : null; - }), - (f.fn[c] = function (a) { - return f.access( - this, - function (a, c, h) { - var i, j, k, l; - if (f.isWindow(a)) { - (i = a.document), (j = i.documentElement[d]); - return (f.support.boxModel && j) || (i.body && i.body[d]) || j; - } - if (a.nodeType === 9) { - i = a.documentElement; - if (i[d] >= i[e]) return i[d]; - return Math.max(a.body[e], i[e], a.body[g], i[g]); - } - if (h === b) { - (k = f.css(a, c)), (l = parseFloat(k)); - return f.isNumeric(l) ? l : k; - } - f(a).css(c, h); - }, - c, - a, - arguments.length, - null, - ); - }); - }), - (a.jQuery = a.$ = f), - typeof define == "function" && - define.amd && - define.amd.jQuery && - define("jquery", [], function () { - return f; - }); -})(window); diff --git a/pygraz_website/urls.py b/pygraz_website/urls.py index 89d15a8..e875cb7 100644 --- a/pygraz_website/urls.py +++ b/pygraz_website/urls.py @@ -1,18 +1,22 @@ -from django.conf import settings -from django.conf.urls.static import static -from django.contrib import admin -from django.urls import include, path - -from . import views +""" +URL configuration for pygraz_website project. -admin.autodiscover() +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/4.2/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import path urlpatterns = [ - path("", views.index, name="index"), - # Overwrites for userena - path("accounts/", include("pygraz_website.apps.accounts.urls")), - path("accounts/", include("userena.urls")), - path("meetups/", include("pygraz_website.apps.meetups.urls")), - path("companies/", include("pygraz_website.apps.companies.urls")), path("admin/", admin.site.urls), -] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) +] diff --git a/pygraz_website/views.py b/pygraz_website/views.py deleted file mode 100644 index 2cb9eee..0000000 --- a/pygraz_website/views.py +++ /dev/null @@ -1,36 +0,0 @@ -from django.shortcuts import render -from django.urls import reverse -from django.utils.timezone import now - -from .apps.meetups import forms as meetup_forms -from .apps.meetups import models as meetup_models - - -def index(request): - """ - Frontpage view listing all session proposals, past meetups and the next meetup. - """ - today = now() - try: - next_meetup = ( - meetup_models.Meetup.objects.get_future_meetups(now=today) - .order_by("-start_date") - .prefetch_related("sessions", "sessions__speaker") - .select_related("location")[0] - ) - except: - next_meetup = None - past_meetups = meetup_models.Meetup.objects.get_past_meetups(now=today) - session_proposals = meetup_models.Session.objects.get_proposals().select_related("speaker") - submission_form = meetup_forms.get_session_submission_form_class(request)() - submission_form.helper.form_action = reverse("submit-session") + "?next=/" - return render( - request, - "meetups/index.html", - { - "next_meetup": next_meetup, - "past_meetups": past_meetups, - "session_proposals": session_proposals, - "submission_form": submission_form, - }, - ) diff --git a/pygraz_website/wsgi.py b/pygraz_website/wsgi.py index 2a2973b..1a67ae9 100644 --- a/pygraz_website/wsgi.py +++ b/pygraz_website/wsgi.py @@ -1,29 +1,16 @@ """ WSGI config for pygraz_website project. -This module contains the WSGI application used by Django's development server -and any production WSGI deployments. It should expose a module-level variable -named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover -this application via the ``WSGI_APPLICATION`` setting. - -Usually you will have the standard Django WSGI application here, but it also -might make sense to replace the whole Django WSGI application with a custom one -that later delegates to the Django one. For example, you could introduce WSGI -middleware here, or combine a Django application with an application of another -framework. +It exposes the WSGI callable as a module-level variable named ``application``. +For more information on this file, see +https://docs.djangoproject.com/en/4.2/howto/deployment/wsgi/ """ + import os -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pygraz_website.settings") +from django.core.wsgi import get_wsgi_application -# This application object is used by any WSGI server configured to use this -# file. This includes Django's development server, if the WSGI_APPLICATION -# setting points here. -from django.core.wsgi import get_wsgi_application # noqa: E402 +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pygraz_website.settings") application = get_wsgi_application() - -# Apply WSGI middleware here. -# from helloworld.wsgi import HelloWorldApplication -# application = HelloWorldApplication(application) diff --git a/pyproject.toml b/pyproject.toml index ae03967..885bf99 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ max-line-length = 120 [tool.black] -target-version = ['py38'] +target-version = ['py310'] line-length = 120 include = '\.pyi?$' exclude = ''' @@ -20,6 +20,17 @@ default_section = "THIRDPARTY" known_first_party = "pygraz_website" skip_glob = "venv" +[tool.poetry] +name = "pygraz_website" +version = "2.0.0" +description = "Website of the Python user group Graz" +authors = ["Dorian Santner", "Horst Gutmann", "Thomas Aglassinger"] +license = "License :: OSI Approved :: BSD License" + +[tool.poetry.dependencies] +python = ">=3.10, <4" +django = "^4.2.6" + [tool.pytest.ini_options] addopts = """\ --strict-config @@ -34,3 +45,7 @@ testpaths = [ "tests", ] DJANGO_SETTINGS_MODULE = "pygraz_website.settings.testing" + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/requirements/base.txt b/requirements/base.txt deleted file mode 100644 index 6087a00..0000000 --- a/requirements/base.txt +++ /dev/null @@ -1,16 +0,0 @@ -Django>=4.0.9, <4.1 -psycopg2-binary==2.9.9 -pytz==2023.3.post1 -django-crispy-forms==1.14.0 -django-extensions==3.2.3 -django-flat-theme==1.1.4 -django-guardian==2.4.0 -django-userena-ce==7.0.3 -easy-thumbnails==2.8.5 -python-postmark==0.6.0 -Markdown==3.5 -Pillow==10.1.0 -raven==6.10.0 -icalendar==5.0.10 -requests==2.31.0 -arrow==1.3.0 diff --git a/requirements/development.txt b/requirements/development.txt deleted file mode 100644 index a911ecc..0000000 --- a/requirements/development.txt +++ /dev/null @@ -1,4 +0,0 @@ --r base.txt - -django-debug-toolbar==4.2.0 -pre-commit==3.5.0 diff --git a/requirements/live.txt b/requirements/live.txt deleted file mode 100644 index 66d735a..0000000 --- a/requirements/live.txt +++ /dev/null @@ -1,4 +0,0 @@ --r base.txt - -uWSGI==2.0.22 -opbeat==3.6.1 diff --git a/requirements/stage.txt b/requirements/stage.txt deleted file mode 100644 index a3b0eb3..0000000 --- a/requirements/stage.txt +++ /dev/null @@ -1,3 +0,0 @@ --r base.txt - -uWSGI==2.0.22 diff --git a/requirements/testing.txt b/requirements/testing.txt deleted file mode 100644 index bd6e30f..0000000 --- a/requirements/testing.txt +++ /dev/null @@ -1,8 +0,0 @@ --r base.txt - -coverage==7.3.2 -pytest-django==4.5.2 -pytest-xdist==3.3.1 -pytest-cov==4.1.0 -pytest-order==1.1.0 -requests_mock==1.11.0 diff --git a/tox.ini b/tox.ini deleted file mode 100644 index b018c74..0000000 --- a/tox.ini +++ /dev/null @@ -1,12 +0,0 @@ -[tox] -skipsdist=true -envlist= - py38 - -[testenv] -deps = - -rrequirements/testing.txt -commands= - coverage run manage-testing.py test pygraz_website.apps.accounts pygraz_website.apps.companies pygraz_website.apps.core pygraz_website.apps.meetups - coverage html - coverage report From 295bb319534bc7c7c510b35774d2524af0a32bb0 Mon Sep 17 00:00:00 2001 From: Thomas Aglassinger Date: Wed, 25 Oct 2023 09:15:13 +0200 Subject: [PATCH 2/2] #73 Add basic home and meetup page. --- .github/workflows/build.yaml | 30 +++-- .gitignore | 2 +- .idea/pygraz_website.iml | 15 ++- AUTHORS.txt | 2 + README.md | 72 +++------- core/admin.py | 5 +- core/migrations/0001_initial.py | 121 +++++++++++++++++ core/models.py | 123 ++++++++++++++++- core/templates/core/base.html | 28 ++++ core/templates/core/home.html | 25 ++++ core/templates/core/meetup.html | 5 + core/urls.py | 8 ++ core/views.py | 18 ++- demo/__init__.py | 0 demo/apps.py | 6 + demo/demo.py | 62 +++++++++ demo/management/commands/make_demo.py | 26 ++++ poetry.lock | 182 +++++++++++++++++++++++++- pygraz_website/settings.py | 4 +- pygraz_website/urls.py | 3 +- pyproject.toml | 7 +- scripts/build_migrations.sh | 7 + tests/demo/test_demo.py | 11 ++ 23 files changed, 686 insertions(+), 76 deletions(-) create mode 100644 core/migrations/0001_initial.py create mode 100644 core/templates/core/base.html create mode 100644 core/templates/core/home.html create mode 100644 core/templates/core/meetup.html create mode 100644 core/urls.py create mode 100644 demo/__init__.py create mode 100644 demo/apps.py create mode 100644 demo/demo.py create mode 100644 demo/management/commands/make_demo.py create mode 100755 scripts/build_migrations.sh create mode 100644 tests/demo/test_demo.py diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index fa7ad94..c396610 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -8,9 +8,9 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.8", "3.10"] + python-version: ["3.10"] env: - MAIN_PYTHON_VERSION: "3.8" # same as Ubuntu 20 LTS + MAIN_PYTHON_VERSION: "3.10" # same as Ubuntu 22 LTS steps: - uses: actions/checkout@v3 @@ -18,16 +18,24 @@ jobs: uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - - name: Install requirements - run: | - pip install -r requirements/testing.txt + - name: Install Ubuntu package dependencies + run: sudo apt-get install gettext graphviz graphviz-dev + - name: Install Poetry + uses: snok/install-poetry@v1 + with: + virtualenvs-create: true + virtualenvs-in-project: true + - name: Load cached venv + id: cached-poetry-dependencies + uses: actions/cache@v3 + with: + path: .venv + key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }} + - name: Install dependencies + if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' + run: poetry install --no-interaction - name: Run the test suite - run: | - coverage run manage-testing.py test pygraz_website.apps.accounts pygraz_website.apps.companies pygraz_website.apps.core pygraz_website.apps.meetups - - name: Build coverage report - run: | - coverage html - coverage report + run: pytest check-style: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index 6adad68..eb4e0c8 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,4 @@ htmlcov /pygraz.dump /_old/ -/db.sqlite3 +/pygraz.sqlite3 diff --git a/.idea/pygraz_website.iml b/.idea/pygraz_website.iml index 781adc4..8b2fa09 100644 --- a/.idea/pygraz_website.iml +++ b/.idea/pygraz_website.iml @@ -1,9 +1,22 @@ + + + + + + + @@ -19,7 +32,7 @@ diff --git a/AUTHORS.txt b/AUTHORS.txt index 6063de7..a093360 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -1 +1,3 @@ +Dorian Santner Horst Gutmann +Thomas Aglassinger diff --git a/README.md b/README.md index 32bcb5e..deea749 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Coverage Status](https://coveralls.io/repos/pygraz/website/badge.svg?branch=develop)](https://coveralls.io/r/pygraz/website?branch=develop) -The PyGRAZ website currently supports the creation of meetups and for users to make session proposal which can +The PyGRAZ website currently supports the creation of meetups and for admin to make session proposal which can then be assigned to a meetup. Each proposal can have descriptive information associated with it like an abstract, a description and notes. @@ -26,82 +26,44 @@ git clone cd website ``` -Then create a virtualenv for all the Python requirements, activate it and install the requirements: +Then install [poetry](https://python-poetry.org/) and install the requirements: ```bash -mkvirtualenv --no-site-packages env -source env/bin/active -pip install -r requirements/base.txt -pip install -r requirements/development.txt +poetry install ``` -We are using a multi-settings-file approach for handling settings on different target systems. For local development -you should use "pygraz_website/settings/development.py" which just sets some plain defaults and doesn't send emails. - Next, install the pre-commit hooks to perform static checks on your code everytime you commit: ```bash -pre-commit install -``` - -Now on to creating the database. By default, the website looks for a PostgreSQL database by the name of -"pygraz-website" accessibly by the current system user. - -If you want to use for instance a sqlite database, add following content to your development.py file you created in -the last step: - -```python -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': join(ROOT, 'localdb.sqlite3'), - 'USER': '', - 'PASSWORD': '', - 'HOST': '', - 'PORT': '', - } -} +poetry run pre-commit install ``` -Now run following commands to initialize the database: - -```bash -python manage-dev.py syncdb -python manage-dev.py migrate -``` +Currently, the site uses an SQLite database. No further setup is needed for this. -To finally start the server run ... +If you just want to run the application locally and want to fill the database with generated demonstration data, you can run: ```bash -python manage-dev.py runserver +poetry run python manage.py make_demo ``` -When you first visit http://localhost:8000, you will notice that all the stylesheets are still missing. -For local development we would recommend that you open another terminal, go to the pygraz_website/static folder and -execute following command: +To launch the application run: ```bash -compass watch +poetry run python manage.py runserver ``` -This will compile the stylesheets using Compass and keep the process running so that changes the .scss files are -automatically compiled into .css files. - -## Components not included +Then visit http://127.0.0.1:8000/ -The pygraz.org website uses the icomoon icon-font for its icons. Due to license restrictions we are not allowed to -bundle it with the website's source code. For details on this font visit http://keyamoon.com/icomoon/ +## Testing -## Deployment +All tests are located in the `tests` folder and its respective sub-folders. -For deployments, we are using an Ansible playbook which builds a production.zip -and deploys that onto the target server: +For testing, run: ```bash -cd ansible/playbooks -ansible-playbook -i ../hosts deploy.yml +poetry run pytest ``` -[pip]: http://pypi.python.org/pypi/pip -[rc]: http://recaptcha.net/ -[pm]: http://postmarkapp.com +## Deployment + +**To be defined.** diff --git a/core/admin.py b/core/admin.py index 8c38f3f..d9e6e02 100644 --- a/core/admin.py +++ b/core/admin.py @@ -1,3 +1,6 @@ from django.contrib import admin -# Register your models here. +from core.models import Location, Meetup, Session, SessionType + +for model in [Location, Meetup, Session, SessionType]: + admin.site.register(model) diff --git a/core/migrations/0001_initial.py b/core/migrations/0001_initial.py new file mode 100644 index 0000000..9f30076 --- /dev/null +++ b/core/migrations/0001_initial.py @@ -0,0 +1,121 @@ +import django.core.validators +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name="Location", + fields=[ + ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("name", models.CharField(max_length=200)), + ("description", models.TextField(blank=True, default="")), + ("website", models.URLField(blank=True, default="")), + ("address", models.CharField(blank=True, default="", max_length=255)), + ("map_image", models.ImageField(blank=True, default=None, null=True, upload_to="")), + ], + options={ + "verbose_name": "location", + "verbose_name_plural": "locations", + }, + ), + migrations.CreateModel( + name="Meetup", + fields=[ + ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("start_date", models.DateField()), + ("meetupcom_id", models.CharField(blank=True, default="", max_length=20)), + ("description", models.TextField(blank=True, default="")), + ("notes", models.TextField(blank=True, default="")), + ( + "attendee_count", + models.IntegerField( + blank=True, null=True, validators=[django.core.validators.MinValueValidator(0)] + ), + ), + ( + "location", + models.ForeignKey( + blank=True, + default=None, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="core.location", + ), + ), + ], + options={ + "verbose_name": "Meetup", + "verbose_name_plural": "Meetups", + "ordering": ("-start_date",), + }, + ), + migrations.CreateModel( + name="SessionType", + fields=[ + ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("name", models.CharField(max_length=30, unique=True, verbose_name="Name")), + ("description", models.TextField(blank=True, default="", verbose_name="Beschreibung")), + ], + options={ + "verbose_name": "Session type", + "verbose_name_plural": "Session types", + }, + ), + migrations.CreateModel( + name="Session", + fields=[ + ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("title", models.CharField(max_length=255, verbose_name="Titel")), + ("abstract", models.TextField(verbose_name="Kurzbeschreibung")), + ("speaker_name", models.CharField(blank=True, default="", max_length=100, verbose_name="Vortragender")), + ( + "speaker_email", + models.EmailField(blank=True, default="", max_length=254, verbose_name="E-Mail-Adresse"), + ), + ("slides_url", models.URLField(blank=True, default="", verbose_name="Folien-URL")), + ("notes", models.TextField(blank=True, default="", verbose_name="Notizen")), + ( + "meetup", + models.ForeignKey( + blank=True, + default=None, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="sessions", + to="core.meetup", + verbose_name="Meetup", + ), + ), + ( + "speaker", + models.ForeignKey( + blank=True, + default="", + null=True, + on_delete=django.db.models.deletion.CASCADE, + to=settings.AUTH_USER_MODEL, + verbose_name="Vortragender", + ), + ), + ( + "type", + models.ForeignKey( + on_delete=django.db.models.deletion.PROTECT, to="core.sessiontype", verbose_name="Vortragsart" + ), + ), + ], + options={ + "verbose_name": "Session", + "verbose_name_plural": "Sessions", + }, + ), + ] diff --git a/core/models.py b/core/models.py index 71a8362..670f683 100644 --- a/core/models.py +++ b/core/models.py @@ -1,3 +1,124 @@ +from typing import Optional + +from django.contrib.auth.models import User +from django.core import validators from django.db import models +from django.db.models import QuerySet +from django.utils.timezone import now +from django.utils.translation import gettext_lazy as _ + + +class Location(models.Model): + name = models.CharField(max_length=200) + description = models.TextField(blank=True, default="") + website = models.URLField(blank=True, default="") + address = models.CharField(default="", blank=True, max_length=255) + map_image = models.ImageField(default=None, blank=True, null=True) + + def __str__(self): + return self.name + + class Meta: + verbose_name = _("location") + verbose_name_plural = _("locations") + + +class MeetupManager(models.Manager): + def past_meetups(self) -> QuerySet["Meetup"]: + return self.filter(start_date__lt=now()) + + def next_meetup(self) -> Optional["Meetup"]: + return self.filter(start_date__gte=now()).first() + + +class Meetup(models.Model): + objects = MeetupManager() + + start_date = models.DateField() + location = models.ForeignKey(Location, blank=True, default=None, null=True, on_delete=models.CASCADE) + meetupcom_id = models.CharField( + blank=True, default="", max_length=20, help_text=_("ID part of URL from meetup.com") + ) + description = models.TextField(blank=True, default="") + notes = models.TextField(blank=True, default="") + attendee_count = models.IntegerField( + null=True, + blank=True, + validators=[ + validators.MinValueValidator(0), + ], + ) + + @property + def meetup_url(self): + return f"https://www.meetup.com/PyGRAZ/events/{self.meetupcom_id}" + + def __str__(self): + return str(self.start_date) + + class Meta: + verbose_name = "Meetup" + verbose_name_plural = "Meetups" + ordering = ("-start_date",) + + +class Session(models.Model): + title = models.CharField("Titel", max_length=255) + abstract = models.TextField("Kurzbeschreibung") + meetup: Meetup = models.ForeignKey( + Meetup, + blank=True, + default=None, + null=True, + on_delete=models.CASCADE, + related_name="sessions", + verbose_name="Meetup", + ) + speaker_name = models.CharField("Vortragender", blank=True, default="", max_length=100) + speaker_email = models.EmailField("E-Mail-Adresse", blank=True, default="") + speaker: User = models.ForeignKey( + User, + verbose_name="Vortragender", + blank=True, + default="", + null=True, + on_delete=models.CASCADE, + ) + slides_url = models.URLField("Folien-URL", blank=True, default="") + notes = models.TextField("Notizen", blank=True, default="") + type = models.ForeignKey( + "SessionType", + verbose_name="Vortragsart", + on_delete=models.PROTECT, + ) + + def __str__(self): + return self.title + + @property + def get_speaker_name(self): + if self.speaker: + firstname = self.speaker.first_name + lastname = self.speaker.last_name + if firstname is not None and lastname is not None: + return f"{firstname} {lastname}" + if firstname is not None: + return firstname + return self.speaker.username + return self.speaker_name + + class Meta: + verbose_name = "Session" + verbose_name_plural = "Sessions" + + +class SessionType(models.Model): + name = models.CharField("Name", max_length=30, unique=True) + description = models.TextField("Beschreibung", blank=True, default="") + + def __str__(self): + return self.name -# Create your models here. + class Meta: + verbose_name = "Session type" + verbose_name_plural = "Session types" diff --git a/core/templates/core/base.html b/core/templates/core/base.html new file mode 100644 index 0000000..505565e --- /dev/null +++ b/core/templates/core/base.html @@ -0,0 +1,28 @@ + +{% load i18n %} +{% load static %} +{% get_current_language as LANGUAGE_CODE %} + + + + + {% if meta_description %} + + {% endif %} + + {% if title %}{{ title }}{% else %}pyGRAZ{% endif %} + + {# TODO: Add favicon. #} + + + +
      + {% block content %} {% endblock %} +
      +
      + TODO: Add footer. +
      + + diff --git a/core/templates/core/home.html b/core/templates/core/home.html new file mode 100644 index 0000000..15ca1ec --- /dev/null +++ b/core/templates/core/home.html @@ -0,0 +1,25 @@ +{# TODO: Add logo. #} + +

      pyGRAZ

      + +

      + PyGRAZ ist eine Usergroup zur Python-Programmiersprache in Graz. Wir treffen uns regelmässig am ersten Dienstag im Monat entweder im spektral oder im Gösserbräu. +

      + +

      Nächstes Treffen

      + +{% if next_meetup %} +

      Am {{ next_meetup.start_date.date }} im {{ next_meetup.location }}

      +

      {{ next_meetup.description }}

      + {# TODO: Add more details about next Meetup. #} +{% else %} +

      Derzeit gibt es leider noch keine Informationen zum nächsten Treffen.

      +{% endif %} + + +

      Vergangene Meetups

      + diff --git a/core/templates/core/meetup.html b/core/templates/core/meetup.html new file mode 100644 index 0000000..be1113e --- /dev/null +++ b/core/templates/core/meetup.html @@ -0,0 +1,5 @@ +

      Meetup {{ meetup.start_date.date }}

      + +{# TODO: Add remaining information about the meetup. #} + +

      {{ meetup.description }}

      diff --git a/core/urls.py b/core/urls.py new file mode 100644 index 0000000..1967c70 --- /dev/null +++ b/core/urls.py @@ -0,0 +1,8 @@ +from django.urls import path + +from core import views + +urlpatterns = [ + path("", views.home_view, name="home"), + path("meetup//", views.meetup_view, name="meetup"), +] diff --git a/core/views.py b/core/views.py index 91ea44a..aefbaf0 100644 --- a/core/views.py +++ b/core/views.py @@ -1,3 +1,17 @@ -from django.shortcuts import render +from django.http import HttpRequest +from django.shortcuts import get_object_or_404, render -# Create your views here. +from core.models import Meetup + + +def home_view(request: HttpRequest): + return render( + request, + "core/home.html", + {"next_meetup": Meetup.objects.next_meetup(), "past_meetups": Meetup.objects.past_meetups()}, + ) + + +def meetup_view(request: HttpRequest, pk: int): + meetup = get_object_or_404(Meetup, pk=pk) + return render(request, "core/meetup.html", {"meetup": meetup}) diff --git a/demo/__init__.py b/demo/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/demo/apps.py b/demo/apps.py new file mode 100644 index 0000000..6fbee78 --- /dev/null +++ b/demo/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class DemoConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "demo" diff --git a/demo/demo.py b/demo/demo.py new file mode 100644 index 0000000..77558f1 --- /dev/null +++ b/demo/demo.py @@ -0,0 +1,62 @@ +import random +from datetime import date, datetime, timedelta, timezone + +from django.contrib.auth.models import User +from django.db import transaction + +from core.models import Location, Meetup, Session, SessionType + +DEMO_ADMIN_USERNAMES = ["admin"] +DEMO_COMMON_USERNAMES = ["alice", "bob", "clara", "dean"] +DEMO_LOCATION_NAMES = ["Spektral", "Gösserbräu"] +DEMO_SESSION_TYPE_NAMES = ["Coding Dojo", "Lightning Talk", "Talk"] +_DEMO_PACKAGES = ["cheese", "eggs", "ham", "parrot", "spam"] +_DEMO_TITLE_FORMATS = [ + "Everything you need ot know about %(package)s", + "Understanding %(package)s", + "Working with %(package)s", + "%(package)s - an introduction", +] +_DAYS_BETWEEN_SESSION = 30 + + +def purge_demo(): + User.objects.filter(username__in=DEMO_ADMIN_USERNAMES + DEMO_COMMON_USERNAMES).delete() + for model in [Location, Session, SessionType, Meetup]: + model.objects.all().delete() + + +def build_demo(session_count: int = 20): + randomizer = random.Random(0) + for admin_username in DEMO_ADMIN_USERNAMES: + build_user_if_not_exists(admin_username, True) + for common_username in DEMO_COMMON_USERNAMES: + build_user_if_not_exists(common_username) + for location_name in DEMO_LOCATION_NAMES: + Location.objects.update_or_create(name=location_name) + for session_type_name in DEMO_SESSION_TYPE_NAMES: + SessionType.objects.update_or_create(name=session_type_name) + meetup_date = utc_now() + timedelta(days=11 - _DAYS_BETWEEN_SESSION * (session_count - 2)) + locations = list(Location.objects.order_by("id")) + session_types = list(SessionType.objects.order_by("id")) + for _ in range(session_count): + location = randomizer.choice(locations) + meetup, _ = Meetup.objects.update_or_create(start_date=meetup_date, defaults={"location": location}) + session_type = randomizer.choice(session_types) + package_name = randomizer.choice(_DEMO_PACKAGES) + title_format = randomizer.choice(_DEMO_TITLE_FORMATS) + title = title_format % {"package": package_name} + Session.objects.update_or_create(title=title, defaults={"type": session_type}) + # TODO Session.objects.create(meetup=meetup, title=title, type=session_type) + meetup_date = meetup_date + timedelta(days=_DAYS_BETWEEN_SESSION) + + +def build_user_if_not_exists(username: str, is_superuser: bool = False): + with transaction.atomic(): + user = User.objects.select_for_update().filter(username=username) + if user is None: + User.objects.create_user(username=username, is_staff=is_superuser, is_superuser=is_superuser) + + +def utc_now() -> datetime: + return datetime.utcnow().replace(tzinfo=timezone.utc) diff --git a/demo/management/commands/make_demo.py b/demo/management/commands/make_demo.py new file mode 100644 index 0000000..52165a4 --- /dev/null +++ b/demo/management/commands/make_demo.py @@ -0,0 +1,26 @@ +from django.core.management import CommandError +from django.core.management.base import BaseCommand +from django.db.models import ProtectedError + +from demo.demo import build_demo, purge_demo + + +class Command(BaseCommand): + help = "Add demo data to database" + + def add_arguments(self, parser): + parser.add_argument( + "--purge", "-P", action="store_true", help="Purge all existing data before creating new one" + ) + + def handle(self, *_args, **options): + has_to_be_purged = bool(options["purge"]) + + try: + if has_to_be_purged: + purge_demo() + build_demo() + except ProtectedError as error: + raise CommandError(f"Cannot create demo: {error}") from error + else: + self.stdout.write(self.style.SUCCESS("Successfully created demo")) diff --git a/poetry.lock b/poetry.lock index c2c790c..af51f00 100644 --- a/poetry.lock +++ b/poetry.lock @@ -17,6 +17,17 @@ typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""} [package.extras] tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + [[package]] name = "django" version = "4.2.6" @@ -37,6 +48,164 @@ tzdata = {version = "*", markers = "sys_platform == \"win32\""} argon2 = ["argon2-cffi (>=19.1.0)"] bcrypt = ["bcrypt"] +[[package]] +name = "exceptiongroup" +version = "1.1.3" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, + {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, +] + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "packaging" +version = "23.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, +] + +[[package]] +name = "pillow" +version = "10.1.0" +description = "Python Imaging Library (Fork)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "Pillow-10.1.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1ab05f3db77e98f93964697c8efc49c7954b08dd61cff526b7f2531a22410106"}, + {file = "Pillow-10.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6932a7652464746fcb484f7fc3618e6503d2066d853f68a4bd97193a3996e273"}, + {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f63b5a68daedc54c7c3464508d8c12075e56dcfbd42f8c1bf40169061ae666"}, + {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0949b55eb607898e28eaccb525ab104b2d86542a85c74baf3a6dc24002edec2"}, + {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ae88931f93214777c7a3aa0a8f92a683f83ecde27f65a45f95f22d289a69e593"}, + {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b0eb01ca85b2361b09480784a7931fc648ed8b7836f01fb9241141b968feb1db"}, + {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d27b5997bdd2eb9fb199982bb7eb6164db0426904020dc38c10203187ae2ff2f"}, + {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7df5608bc38bd37ef585ae9c38c9cd46d7c81498f086915b0f97255ea60c2818"}, + {file = "Pillow-10.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:41f67248d92a5e0a2076d3517d8d4b1e41a97e2df10eb8f93106c89107f38b57"}, + {file = "Pillow-10.1.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1fb29c07478e6c06a46b867e43b0bcdb241b44cc52be9bc25ce5944eed4648e7"}, + {file = "Pillow-10.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2cdc65a46e74514ce742c2013cd4a2d12e8553e3a2563c64879f7c7e4d28bce7"}, + {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50d08cd0a2ecd2a8657bd3d82c71efd5a58edb04d9308185d66c3a5a5bed9610"}, + {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:062a1610e3bc258bff2328ec43f34244fcec972ee0717200cb1425214fe5b839"}, + {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:61f1a9d247317fa08a308daaa8ee7b3f760ab1809ca2da14ecc88ae4257d6172"}, + {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061"}, + {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:47e5bf85b80abc03be7455c95b6d6e4896a62f6541c1f2ce77a7d2bb832af262"}, + {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a92386125e9ee90381c3369f57a2a50fa9e6aa8b1cf1d9c4b200d41a7dd8e992"}, + {file = "Pillow-10.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:0f7c276c05a9767e877a0b4c5050c8bee6a6d960d7f0c11ebda6b99746068c2a"}, + {file = "Pillow-10.1.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:a89b8312d51715b510a4fe9fc13686283f376cfd5abca8cd1c65e4c76e21081b"}, + {file = "Pillow-10.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:00f438bb841382b15d7deb9a05cc946ee0f2c352653c7aa659e75e592f6fa17d"}, + {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d929a19f5469b3f4df33a3df2983db070ebb2088a1e145e18facbc28cae5b27"}, + {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a92109192b360634a4489c0c756364c0c3a2992906752165ecb50544c251312"}, + {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:0248f86b3ea061e67817c47ecbe82c23f9dd5d5226200eb9090b3873d3ca32de"}, + {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9882a7451c680c12f232a422730f986a1fcd808da0fd428f08b671237237d651"}, + {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1c3ac5423c8c1da5928aa12c6e258921956757d976405e9467c5f39d1d577a4b"}, + {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:806abdd8249ba3953c33742506fe414880bad78ac25cc9a9b1c6ae97bedd573f"}, + {file = "Pillow-10.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:eaed6977fa73408b7b8a24e8b14e59e1668cfc0f4c40193ea7ced8e210adf996"}, + {file = "Pillow-10.1.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:fe1e26e1ffc38be097f0ba1d0d07fcade2bcfd1d023cda5b29935ae8052bd793"}, + {file = "Pillow-10.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7a7e3daa202beb61821c06d2517428e8e7c1aab08943e92ec9e5755c2fc9ba5e"}, + {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24fadc71218ad2b8ffe437b54876c9382b4a29e030a05a9879f615091f42ffc2"}, + {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1d323703cfdac2036af05191b969b910d8f115cf53093125e4058f62012c9a"}, + {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:912e3812a1dbbc834da2b32299b124b5ddcb664ed354916fd1ed6f193f0e2d01"}, + {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:7dbaa3c7de82ef37e7708521be41db5565004258ca76945ad74a8e998c30af8d"}, + {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9d7bc666bd8c5a4225e7ac71f2f9d12466ec555e89092728ea0f5c0c2422ea80"}, + {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baada14941c83079bf84c037e2d8b7506ce201e92e3d2fa0d1303507a8538212"}, + {file = "Pillow-10.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:2ef6721c97894a7aa77723740a09547197533146fba8355e86d6d9a4a1056b14"}, + {file = "Pillow-10.1.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0a026c188be3b443916179f5d04548092e253beb0c3e2ee0a4e2cdad72f66099"}, + {file = "Pillow-10.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:04f6f6149f266a100374ca3cc368b67fb27c4af9f1cc8cb6306d849dcdf12616"}, + {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb40c011447712d2e19cc261c82655f75f32cb724788df315ed992a4d65696bb"}, + {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a8413794b4ad9719346cd9306118450b7b00d9a15846451549314a58ac42219"}, + {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c9aeea7b63edb7884b031a35305629a7593272b54f429a9869a4f63a1bf04c34"}, + {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b4005fee46ed9be0b8fb42be0c20e79411533d1fd58edabebc0dd24626882cfd"}, + {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4d0152565c6aa6ebbfb1e5d8624140a440f2b99bf7afaafbdbf6430426497f28"}, + {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d921bc90b1defa55c9917ca6b6b71430e4286fc9e44c55ead78ca1a9f9eba5f2"}, + {file = "Pillow-10.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:cfe96560c6ce2f4c07d6647af2d0f3c54cc33289894ebd88cfbb3bcd5391e256"}, + {file = "Pillow-10.1.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:937bdc5a7f5343d1c97dc98149a0be7eb9704e937fe3dc7140e229ae4fc572a7"}, + {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1c25762197144e211efb5f4e8ad656f36c8d214d390585d1d21281f46d556ba"}, + {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:afc8eef765d948543a4775f00b7b8c079b3321d6b675dde0d02afa2ee23000b4"}, + {file = "Pillow-10.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:883f216eac8712b83a63f41b76ddfb7b2afab1b74abbb413c5df6680f071a6b9"}, + {file = "Pillow-10.1.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b920e4d028f6442bea9a75b7491c063f0b9a3972520731ed26c83e254302eb1e"}, + {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c41d960babf951e01a49c9746f92c5a7e0d939d1652d7ba30f6b3090f27e412"}, + {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1fafabe50a6977ac70dfe829b2d5735fd54e190ab55259ec8aea4aaea412fa0b"}, + {file = "Pillow-10.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3b834f4b16173e5b92ab6566f0473bfb09f939ba14b23b8da1f54fa63e4b623f"}, + {file = "Pillow-10.1.0.tar.gz", hash = "sha256:e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38"}, +] + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "pluggy" +version = "1.3.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, + {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "pytest" +version = "7.4.3" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-7.4.3-py3-none-any.whl", hash = "sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac"}, + {file = "pytest-7.4.3.tar.gz", hash = "sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} + +[package.extras] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-django" +version = "4.5.2" +description = "A Django plugin for pytest." +optional = false +python-versions = ">=3.5" +files = [ + {file = "pytest-django-4.5.2.tar.gz", hash = "sha256:d9076f759bb7c36939dbdd5ae6633c18edfc2902d1a69fdbefd2426b970ce6c2"}, + {file = "pytest_django-4.5.2-py3-none-any.whl", hash = "sha256:c60834861933773109334fe5a53e83d1ef4828f2203a1d6a0fa9972f4f75ab3e"}, +] + +[package.dependencies] +pytest = ">=5.4.0" + +[package.extras] +docs = ["sphinx", "sphinx-rtd-theme"] +testing = ["Django", "django-configurations (>=2.0)"] + [[package]] name = "sqlparse" version = "0.4.4" @@ -53,6 +222,17 @@ dev = ["build", "flake8"] doc = ["sphinx"] test = ["pytest", "pytest-cov"] +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] + [[package]] name = "typing-extensions" version = "4.8.0" @@ -78,4 +258,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = ">=3.10, <4" -content-hash = "1bee79ef0caff5f156d97d327fcaf0251d1bb71d3d663343e0f1ccd7f5207c57" +content-hash = "4dc87739563425ed74164e4d1e2bf7dd78d48a5888fb81cab5307962c1a6df05" diff --git a/pygraz_website/settings.py b/pygraz_website/settings.py index 1f93188..1c3f94a 100644 --- a/pygraz_website/settings.py +++ b/pygraz_website/settings.py @@ -37,6 +37,8 @@ "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", + "core.apps.CoreConfig", + "demo.apps.DemoConfig", ] MIDDLEWARE = [ @@ -76,7 +78,7 @@ DATABASES = { "default": { "ENGINE": "django.db.backends.sqlite3", - "NAME": BASE_DIR / "db.sqlite3", + "NAME": BASE_DIR / "pygraz.sqlite3", } } diff --git a/pygraz_website/urls.py b/pygraz_website/urls.py index e875cb7..0bd3cd5 100644 --- a/pygraz_website/urls.py +++ b/pygraz_website/urls.py @@ -15,8 +15,9 @@ 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin -from django.urls import path +from django.urls import include, path urlpatterns = [ path("admin/", admin.site.urls), + path("", include("core.urls")), ] diff --git a/pyproject.toml b/pyproject.toml index 885bf99..c62516a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,6 +30,11 @@ license = "License :: OSI Approved :: BSD License" [tool.poetry.dependencies] python = ">=3.10, <4" django = "^4.2.6" +pillow = "^10.1.0" + +[tool.poetry.group.dev.dependencies] +pytest = "^7.4.3" +pytest-django = "^4.5.2" [tool.pytest.ini_options] addopts = """\ @@ -44,7 +49,7 @@ minversion = "7.2" testpaths = [ "tests", ] -DJANGO_SETTINGS_MODULE = "pygraz_website.settings.testing" +DJANGO_SETTINGS_MODULE = "pygraz_website.settings" [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/scripts/build_migrations.sh b/scripts/build_migrations.sh new file mode 100755 index 0000000..4a55a15 --- /dev/null +++ b/scripts/build_migrations.sh @@ -0,0 +1,7 @@ +#!/bin/sh +set -ex +# TODO: Once the data model is reasonably stable, remove "rm" in order to preserve the data model. +rm -rf core/migrations/00*.py +rm -f pygraz.sqlite +poetry run python manage.py makemigrations --no-header +poetry run python manage.py make_demo diff --git a/tests/demo/test_demo.py b/tests/demo/test_demo.py new file mode 100644 index 0000000..a0dd5b7 --- /dev/null +++ b/tests/demo/test_demo.py @@ -0,0 +1,11 @@ +import pytest + +from demo.demo import build_demo, purge_demo + + +@pytest.mark.django_db +def test_can_build_demo(): + build_demo() + build_demo() + purge_demo() + build_demo()

      W5 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