From: Jan Szejko Date: Thu, 11 Feb 2016 12:37:08 +0000 (+0100) Subject: local changes from the server X-Git-Url: https://git.mdrn.pl/edumed.git/commitdiff_plain/fd65827f7d34921b927dfd735099b0690aa3a2df?ds=inline;hp=2e008ebe7ee77a359366823d1604e111fab98ca3 local changes from the server --- diff --git a/.gitignore b/.gitignore index 554bc70..512ac11 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,9 @@ thumbs.db .pydevproject .tmp_* +# PyCharm +.idea + # Tags file TAGS diff --git a/catalogue/models.py b/catalogue/models.py index e291c42..85f0af0 100644 --- a/catalogue/models.py +++ b/catalogue/models.py @@ -151,7 +151,7 @@ class Lesson(models.Model): wldoc = WLDocument.from_file(self.xml_file.path) self.dc = wldoc.book_info.to_dict() self.type = self.dc["type"] - assert self.type in ('appendix', 'course', 'synthetic', 'project', 'added'), \ + assert self.type in ('appendix', 'course', 'synthetic', 'project', 'added', 'added-var'), \ u"Unknown lesson type: %s" % self.type self.save() diff --git a/catalogue/static/catalogue/css/carousel.css b/catalogue/static/catalogue/css/carousel.css index a7f365c..2d014da 100644 --- a/catalogue/static/catalogue/css/carousel.css +++ b/catalogue/static/catalogue/css/carousel.css @@ -2,12 +2,12 @@ float: left; position: relative; width: 43.75em; - height: 14.6875em; + height: 14.688em; overflow: hidden; - border-radius: 0.9375em; } + border-radius: 0.938em; } #catalogue-carousel #catalogue-carousel-links { width: 28.75em; - height: 14.6875em; + height: 14.688em; list-style: none; margin: 0; padding: 0; } @@ -18,8 +18,8 @@ left: 0; height: 100%; background-size: 100% 100%; - border-top-left-radius: 0.9375em 6.38%; - border-bottom-left-radius: 0.9375em 6.38%; + border-top-left-radius: 0.938em 6.38%; + border-bottom-left-radius: 0.938em 6.38%; z-index: 100; background-color: #888; } #catalogue-carousel #catalogue-carousel-links li a.catalogue-carousel-link { @@ -65,22 +65,22 @@ text-shadow: 0 0 5px #000; } #catalogue-carousel #catalogue-carousel-switcher { margin: 0; - padding: 1.25em 0 0 3.625em; + padding: 0.188em 0 0 3.625em; width: 11.375em; - height: 13.4375em; + height: 14.188em; position: absolute; right: 0; top: 0; list-style: none; - border-radius: 0 0.9375em 0.9375em 0; + border-radius: 0 0.938em 0.938em 0; background-color: #ed7831; background-image: url(/static/catalogue/img/carousel-right.png); background-position: 0 0; background-repeat: no-repeat; - background-size: auto 14.6875em; + background-size: auto 14.688em; /* right part of mask as background */ } #catalogue-carousel #catalogue-carousel-switcher li { - margin-bottom: .5em; + margin-bottom: .4em; font-size: .85em; line-height: 1em; } #catalogue-carousel #catalogue-carousel-switcher li a { diff --git a/catalogue/static/catalogue/css/carousel.scss b/catalogue/static/catalogue/css/carousel.scss index bc2041d..17f83d9 100755 --- a/catalogue/static/catalogue/css/carousel.scss +++ b/catalogue/static/catalogue/css/carousel.scss @@ -91,9 +91,9 @@ $ciemny: #363a3e; } #catalogue-carousel-switcher { margin: 0; - padding: 20*$px 0 0 58*$px; + padding: 3*$px 0 0 58*$px; width: 240*$px - 58*$px; - height: 235*$px - 20*$px; + height: 235*$px - 8*$px; position: absolute; right: 0; top: 0; @@ -108,7 +108,7 @@ $ciemny: #363a3e; /* right part of mask as background */ li { - margin-bottom: .5em; + margin-bottom: .4em; font-size: .85em; line-height: 1em; diff --git a/catalogue/templates/catalogue/lesson/added-var/lesson_detail.html b/catalogue/templates/catalogue/lesson/added-var/lesson_detail.html new file mode 100644 index 0000000..a40c999 --- /dev/null +++ b/catalogue/templates/catalogue/lesson/added-var/lesson_detail.html @@ -0,0 +1,31 @@ +{% extends "catalogue/lesson/lesson_detail.html" %} +{% load static from staticfiles %} + +{% block lesson-info %} +
+

45m
+ + {% include "catalogue/lesson/box-icons.html" %} + +

Ta lekcja jest częścią tematu + Edukacja varsavianistyczna + na poziomie {{ object.level|lower }}. +

+
+
+ +{% endblock %} + + +{% block sidebar-top %} +
+ +{% if object.package %} +
Pobierz całą lekcję
+{% endif %} +{% if object.student_package %} +
Pobierz lekcję w wersji dla ucznia
+{% endif %} + +
+{% endblock %} diff --git a/catalogue/templates/catalogue/snippets/lesson_nav.html b/catalogue/templates/catalogue/snippets/lesson_nav.html index e3b21cf..0e64225 100755 --- a/catalogue/templates/catalogue/snippets/lesson_nav.html +++ b/catalogue/templates/catalogue/snippets/lesson_nav.html @@ -7,6 +7,8 @@ Projekty,
{{ lesson.level }}
{% elif lesson.type == 'added' %} Edukacja filmowa +{% elif lesson.type == 'added-var' %} + Edukacja varsavianistyczna {% else %} Inne {% endif %} diff --git a/catalogue/templates/catalogue/snippets/levels_main.html b/catalogue/templates/catalogue/snippets/levels_main.html index 97c5033..54ceed9 100644 --- a/catalogue/templates/catalogue/snippets/levels_main.html +++ b/catalogue/templates/catalogue/snippets/levels_main.html @@ -11,7 +11,7 @@ {{ level }} - {{ level.length_synthetic }} lub {{ level.length_course }} godzin + {% if level.length_synthetic %}{{ level.length_synthetic }} lub {% endif %}{{ level.length_course }} godzin @@ -24,4 +24,13 @@ +
  • + + + Edukacja varsavianistyczna + 10 godzin + + +
  • + diff --git a/catalogue/templatetags/catalogue_tags.py b/catalogue/templatetags/catalogue_tags.py index 8b05bf6..eecf9dc 100755 --- a/catalogue/templatetags/catalogue_tags.py +++ b/catalogue/templatetags/catalogue_tags.py @@ -20,7 +20,8 @@ def catalogue_levels_main(): c = object_list.count() return { 'object_list': object_list, - 'section_width': (700 - 20 * (c - 1)) / c, + #'section_width': (700 - 20 * (c - 1)) / c, + 'section_width': (700 - 20 * 2) / 3 } @@ -48,7 +49,7 @@ def level_box(level): if lesson.section not in lessons['course']: lessons['course'][lesson.section] = [] lessons['course'][lesson.section].append(lesson) - elif lesson.type == 'added': continue + elif lesson.type.startswith('added'): continue else: lessons[lesson.type].append(lesson) @@ -77,6 +78,26 @@ def level_box(level): ] ], }) + added.append({ + 'slug': 'varsaviana', + 'title': u'Edukacja varsavianistyczna', + 'lessons': [ + Lesson.objects.get(slug=s) for s in +''' +czego-prus-w-lalce-o-zydach-nie-powiedzial +jak-zmienila-sie-warszawa-o-dworcu-dawniej-i-dzis +o-gwarze-praskiej +poznaj-i-pokaz-prage +praga-trzech-religii +sladami-zydow-w-warszawie +tajemnice-palacu-saskiego +warszawa-przedwojenne-miasto-neonow +warszawski-barok +ziemianska-jako-soczewka-swiata-lat-miedzywojennych +'''.strip().split() + ], + }) + return { "level": level, diff --git a/curriculum/locale/pl/LC_MESSAGES/django.mo b/curriculum/locale/pl/LC_MESSAGES/django.mo index e26e73a..8f3c6c3 100644 Binary files a/curriculum/locale/pl/LC_MESSAGES/django.mo and b/curriculum/locale/pl/LC_MESSAGES/django.mo differ diff --git a/curriculum/locale/pl/LC_MESSAGES/django.po b/curriculum/locale/pl/LC_MESSAGES/django.po index a9cdad2..91686bf 100644 --- a/curriculum/locale/pl/LC_MESSAGES/django.po +++ b/curriculum/locale/pl/LC_MESSAGES/django.po @@ -103,8 +103,8 @@ msgid "You must select at least one education level." msgstr "Proszę wybrać poziom edukacyjny." #: templates/curriculum/competence_list.html:8 -msgid "Media and information literacy competencies catalogue" -msgstr "Katalog kompetencji medialnych i informacyjnych" +msgid "Media, information and digital literacy competencies catalogue" +msgstr "Katalog kompetencji medialnych, informacyjnych i cyfrowych" #: templates/curriculum/competence_list.html:15 msgid "Browse competencies" diff --git a/curriculum/templates/curriculum/competence_list.html b/curriculum/templates/curriculum/competence_list.html index a180ae7..cea4d4e 100755 --- a/curriculum/templates/curriculum/competence_list.html +++ b/curriculum/templates/curriculum/competence_list.html @@ -2,10 +2,10 @@ {% load chunks %} {% load i18n %} -{% block title %}{% trans 'Media and information literacy competencies catalogue' %}{% endblock %} +{% block title %}{% trans 'Media, information and digital literacy competencies catalogue' %}{% endblock %} {% block body %} -

    {% trans 'Media and information literacy competencies catalogue' %}

    +

    {% trans 'Media, information and digital literacy competencies catalogue' %}

    {% if request.LANGUAGE_CODE == 'pl' %} {% chunk 'katalog_kompetencji' %} diff --git a/edumed/contact_forms.py b/edumed/contact_forms.py index 0ff8415..3e7abab 100644 --- a/edumed/contact_forms.py +++ b/edumed/contact_forms.py @@ -1,6 +1,10 @@ # -*- coding: utf-8 -*- from django import forms from contact.forms import ContactForm +from django.core.mail import send_mail +from django.core.exceptions import ValidationError +from django.core.validators import validate_email +from django.template.loader import render_to_string from django.utils.translation import ugettext_lazy as _ @@ -90,15 +94,19 @@ class WTEMStudentForm(forms.Form): email = forms.EmailField(label=u'Adres e-mail', max_length=128) form_tag = "student" +# FIXME: doesn't do what is says anymore. class NoEmptyFormsAllowedBaseFormSet(forms.formsets.BaseFormSet): """ Won't allow formset_factory to be submitted with no forms """ def clean(self): + needed = 3 for form in self.forms: if form.cleaned_data: - return - raise forms.ValidationError(u"Proszę podać dane przynajmniej jednego ucznia.") + needed -= 1 + #return + if needed > 0: + raise forms.ValidationError(u"Proszę podać dane przynajmniej trzech osób.") class WTEMForm(ContactForm): disabled = True @@ -106,7 +114,8 @@ class WTEMForm(ContactForm): form_tag = "wtem" form_title = u"WTEM - rejestracja uczestników" submit_label = u"Wyślij zgłoszenie" - form_formsets = (forms.formsets.formset_factory(WTEMStudentForm, formset=NoEmptyFormsAllowedBaseFormSet),) + admin_list = ['imie', 'nazwisko', 'institution'] + form_formsets = (forms.formsets.formset_factory(WTEMStudentForm, formset=NoEmptyFormsAllowedBaseFormSet, max_num=5, validate_max=True, extra=5),) contact = forms.EmailField(label=u'Adres e-mail opiekuna/opiekunki', max_length=128) imie = forms.CharField(label=u'Imię', max_length=128) @@ -120,11 +129,11 @@ class WTEMForm(ContactForm): zgoda_regulamin = forms.BooleanField( label=u'Znam i akceptuję regulamin Wielkiego Turnieju Edukacji Medialnej.', - help_text=u'Zobacz regulamin Wielkiego Turnieju Edukacji Medialnej.' + help_text=u'Zobacz regulamin Wielkiego Turnieju Edukacji Medialnej.' ) zgoda_dane = forms.BooleanField( - label=u'Wyrażam zgodę na przetwarzanie moich danych osobowych oraz danych osobowych moich podopiecznych, a także na publikację prac na wolnej licencji.', - help_text=u'Zobacz pełną treść oświadczenia.' + label=u'Wyrażam zgodę na przetwarzanie moich danych osobowych oraz danych osobowych moich podopiecznych.', + #help_text=u'Zobacz pełną treść oświadczenia.' ) potw_uczniowie = forms.BooleanField( @@ -165,6 +174,23 @@ class WTEMForm(ContactForm): current = dict() return toret + def save(self, request, formsets=None): + contact = super(WTEMForm, self).save(request, formsets) + + mail_subject = render_to_string('contact/wtem/student_mail_subject.html').strip() + mail_body = render_to_string('contact/wtem/student_mail_body.html') + for formset in formsets or []: + for f in formset.forms: + email = f.cleaned_data.get('email', None) + try: + validate_email(email) + except ValidationError: + pass + else: + send_mail(mail_subject, mail_body, 'edukacjamedialna@nowoczesnapolska.org.pl', [email], fail_silently=True) + + return contact + class MILForm(ContactForm): form_tag = 'mil' @@ -205,3 +231,67 @@ class MILForm(ContactForm): max_length = 255, required = False ) + + +class TEMForm(ContactForm): + form_tag = 'tem' + form_title = u"TEM - szkolenie dla trenerów edukacji medialnej" + admin_list = ['imie', 'nazwisko', 'instytucja', 'contact'] + + imie = forms.CharField(label=u'Imię', max_length=128) + nazwisko = forms.CharField(label=u'Nazwisko', max_length=128) + contact = forms.EmailField(label=u'E-mail', max_length=128) + telefon = forms.CharField(label=u'Tel. kontaktowy', max_length=128) + instytucja = forms.CharField(label=u'Instytucja', max_length=256) + adres = forms.CharField(label=u'Adres', + widget=forms.Textarea, max_length=1000) + stanowisko = forms.CharField(label=u'Stanowisko', max_length=256) + doswiadczenie = forms.CharField(label=u'Jakie jest Pani/Pana doświadczenie w zakresie edukacji medialnej?', + widget=forms.Textarea, max_length=500, help_text=u'(max 500 znaków)') + dlaczego = forms.CharField(label=u'Dlaczego chce Pani/Pan wziąć udział w szkoleniu?', + widget=forms.Textarea, max_length=500, help_text=u'(max 500 znaków)') + jak_wykorzystac = forms.CharField(label=u'Jak zamierza Pan/Pani wykorzystać wiedzę zdobytą w czasie szkolenia?', + widget=forms.Textarea, max_length=500, help_text=u'(max 500 znaków)') + + zajecia = forms.BooleanField(label=u'W okresie wrzesień-październik 2015 r. przeprowadzę min. 2 godziny zajęć edukacji medialnej z wybraną grupą dzieci lub młodzieży.', required=True) + zgoda_informacje = forms.BooleanField(label=u'Wyrażam zgodę na otrzymywanie informacji od Fundacji Nowoczesna Polska związanych z edukacją medialną.', required=False) + + +class SuperwizjaForm(ContactForm): + form_tag = 'superwizja' + form_title = u"Informacje o zajęciach" + admin_list = ['nazwisko', 'contact', 'skype', 'temat'] + submit_label = u'Wyślij' + + nazwisko = forms.CharField(label=u'Imię i nazwisko', max_length=1024) + contact = forms.CharField(label=u'E-mail kontaktowy', required=False) + skype = forms.CharField(label=u'Nazwa użytkownika Skype', max_length=255) + temat = forms.CharField(label=u'Temat zajęć', max_length=1024) + termin = forms.CharField(label=u'Termin zajęć', max_length=1024) + czas_trwania = forms.CharField(label=u'Czas trwania zajęć', max_length=1024) + miejsce = forms.CharField(label=u'Miejsce prowadzenia zajęć', max_length=1024) + rodzaj = forms.ChoiceField(label=u'Rodzaj zajęć', widget=forms.RadioSelect, choices=[('jednorazowe', 'jednorazowe'), ('w ramach cyklu', 'w ramach cyklu')]) + cykl = forms.CharField(label=u'Jeśli w ramach cyklu, to podaj jego temat i czas trwania', required=False) + sposob = forms.ChoiceField(label=u'Sposób prowadzenia zajęć', widget=forms.RadioSelect, choices=[('samodzielnie', 'samodzielnie'), (u'z drugą osobą', 'z drugą osobą')]) + wrazenia = forms.CharField(label=u'Opisz Twoje ogólne wrażenia po warsztacie.', widget=forms.Textarea, max_length=4096) + opiekun = forms.CharField(label=u'Czy opiekun grupy był obecny podczas zajęć? Jeśli tak, opisz krótko jego rolę.', widget=forms.Textarea, max_length=4096) + grupa = forms.CharField(label=u'Opisz krótko grupę uczestników zajęć (wiek, liczba osób, czy to pierwszy kontakt z grupą).', widget=forms.Textarea, max_length=4096) + cel = forms.CharField(label=u'Jaki był założony cel zajęć? Dlaczego wybrałaś/eś taki cel?', widget=forms.Textarea, max_length=4096) + ewaluacja = forms.CharField(label=u'W jaki sposób sprawdziłeś/aś, czy cel zajęć został zrealizowany? Opisz krótko efekty zajęć.', widget=forms.Textarea, max_length=4096) + # header + przygotowania = forms.CharField(label=u'Opisz w punktach proces przygotowania się do zajęć.', widget=forms.Textarea, max_length=4096) + przygotowania_trudnosci = forms.CharField(label=u'Co na etapie przygotowań sprawiło Ci największą trudność?', widget=forms.Textarea, max_length=4096) + przygotowania_pomoc = forms.CharField(label=u'Co było pomocne w przygotowaniu zajęć? (Czy korzystałaś/eś z materiałów z serwisu edukacjamedialna.edu.pl? Jeśli tak, to jakich?)', widget=forms.Textarea, max_length=4096) + narzedzia = forms.CharField(label=u'Jakie narzędzie/a planowałaś/eś wykorzystać, a jakie wykorzystałaś/eś?', widget=forms.Textarea, max_length=4096) + struktura = forms.CharField(label=u'Opisz w punktach strukturę zajęć. Zaznacz ile czasu planowałaś/eś na każdą część, a ile czasu faktycznie Ci to zajęło.', widget=forms.Textarea, max_length=4096) + prowadzenie_trudnosci = forms.CharField(label=u'Co sprawiało Ci trudność w prowadzeniu zajęć?', widget=forms.Textarea, max_length=4096) + prowadzenie_pomoc = forms.CharField(label=u'Co było pomocne w prowadzeniu zajęć?', widget=forms.Textarea, max_length=4096) + kontrakt = forms.CharField(label=u'W jakiej formie został zawarty kontrakt z uczestnikami? Jakie zasady zostały przyjęte? Czy w trakcie zajęć Ty bądź uczestnicy odwoływaliście się do kontraktu?', widget=forms.Textarea, max_length=4096) + trudne_sytuacje = forms.CharField(label=u'Czy podczas zajęć miały miejsce tzw. „trudne sytuacje”. Jak na nie zareagowałaś/eś? Czy potrzebowałabyś/łbyś czegoś w związku z nimi?', widget=forms.Textarea, max_length=4096) + informacje_zwrotne = forms.CharField(label=u'Czy zbierałaś/eś informacje zwrotne od uczestników? Jeśli tak, na co zwrócili uwagę? W jaki sposób zbierałaś/eś informacje zwrotne?', widget=forms.Textarea, max_length=4096) + + mocne_strony = forms.CharField(label=u'Opisz w punktach mocne strony przeprowadzonych zajęć.', widget=forms.Textarea, max_length=4096) + zmiany = forms.CharField(label=u'Opisz w punktach, co byś zmienił(a) na przyszłość.', widget=forms.Textarea, max_length=4096) + potrzeby = forms.CharField(label=u'Czy potrzebowałbyś/łbyś czegoś przed następnymi zajęciami?', widget=forms.Textarea, max_length=4096) + uwagi = forms.CharField(label=u'Inne uwagi', widget=forms.Textarea, max_length=4096, required=False) + diff --git a/edumed/settings.d/50-static.py b/edumed/settings.d/50-static.py index 0578903..c667c32 100644 --- a/edumed/settings.d/50-static.py +++ b/edumed/settings.d/50-static.py @@ -25,7 +25,7 @@ PIPELINE_CSS = { 'catalogue/css/section_list.scss', 'curriculum/curriculum.scss', 'jquery/colorbox/colorbox.css', - # 'fnpdjango/annoy/annoy.css', + 'fnpdjango/annoy/annoy.css', 'css/forum.scss', 'css/mil.scss' @@ -48,7 +48,7 @@ PIPELINE_JS = { 'curriculum/curriculum.js', 'js/formset.js', 'pybb/js/pybbjs.js', - # 'fnpdjango/annoy/annoy.js', + 'fnpdjango/annoy/annoy.js', ), 'output_filename': 'compressed/base.js', }, diff --git a/edumed/static/css/form.css b/edumed/static/css/form.css index 878de75..ac11db0 100644 --- a/edumed/static/css/form.css +++ b/edumed/static/css/form.css @@ -2,10 +2,14 @@ padding: .3em; vertical-align: top; text-align: left; } +.submit-form td ul { + padding: 0; + list-style: none; + margin: 0; } .submit-form th { max-width: 16em; font-weight: normal; } -.submit-form .required label:before { +.submit-form .required th label:before { content: "* "; color: red; } .submit-form .errorlist { diff --git a/edumed/static/css/form.scss b/edumed/static/css/form.scss index 83c7938..8ef87de 100755 --- a/edumed/static/css/form.scss +++ b/edumed/static/css/form.scss @@ -4,11 +4,16 @@ vertical-align: top; text-align: left; } + td ul { + padding: 0; + list-style: none; + margin: 0; + } th { max-width: 16em; font-weight: normal; } - .required label:before { + .required th label:before { content: "* "; color: red; } diff --git a/edumed/templates/base.html b/edumed/templates/base.html index e6d0c61..ee49951 100644 --- a/edumed/templates/base.html +++ b/edumed/templates/base.html @@ -11,8 +11,8 @@
  • Kompetencje
  • Turniej
  • Wesprzyj nas
  • -
  • O nas
  • -
  • Kontakt
  • +
  • Dla trenera
  • +
  • O projekcie
  • {% endblock %} {% block sponsors %} @@ -21,4 +21,4 @@ {% block extra_script %} {% compressed_js 'base' %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/edumed/templates/base_super.html b/edumed/templates/base_super.html index 1209c03..430422c 100644 --- a/edumed/templates/base_super.html +++ b/edumed/templates/base_super.html @@ -25,7 +25,7 @@ - {# 1% {% load fnp_annoy %}{% annoy %} #} + {% load fnp_annoy %}{% annoy %}