registration for workshops
authorJan Szejko <janek37@gmail.com>
Tue, 4 Oct 2016 14:56:47 +0000 (16:56 +0200)
committerJan Szejko <janek37@gmail.com>
Tue, 4 Oct 2016 14:56:47 +0000 (16:56 +0200)
contact/templates/contact/form.html
contact/widgets.py
prawokultury/contact_forms.py
prawokultury/locale/pl/LC_MESSAGES/django.mo
prawokultury/locale/pl/LC_MESSAGES/django.po
prawokultury/settings.d/50-static.py
prawokultury/static/js/workshop_form.js [new file with mode: 0644]
prawokultury/templates/base.html
prawokultury/templatetags/__init__.py [new file with mode: 0644]
prawokultury/templatetags/entry_url.py [new file with mode: 0644]

index 29fdfa8..22ca246 100644 (file)
     <form method="POST" action="." enctype="multipart/form-data" class="submit-form">
     {% csrf_token %}
     <table>
+        <colgroup>
+            <col span="1" style="width: 45%;">
+            <col span="1" style="width: 55%;">
+        </colgroup>
         {{ form.as_table }}
         <tr><td></td><td><button>{% block contact_form_submit %}{{ form.submit_label }}{% endblock %}</button></td></tr>
     </table>
index a08e351..738ae04 100644 (file)
@@ -4,7 +4,6 @@ from django.utils.html import format_html
 
 class HeaderWidget(forms.widgets.Widget):
     def render(self, name, value, attrs=None):
-        return ''
         attrs.update(self.attrs)
-        return format_html('<div{0}>{1}</div>', flatatt(attrs), unicode(value))
-
+        return format_html('<a{0}></a>', flatatt(attrs))
+        # return format_html('<div{0}>{1}</div>', flatatt(attrs), unicode(value))
index 5a48c7e..f9ce14e 100644 (file)
@@ -272,8 +272,8 @@ class NextForm(ContactForm):
 
 
 class WorkshopForm(ContactForm):
-    form_tag = 'workshop'
-    save_as_tag = 'workshop-2016'
+    form_tag = 'workshops'
+    save_as_tag = 'workshops-2016'
     conference_name = u'CopyCamp 2016'
     form_title = _('Workshop')
 
@@ -281,65 +281,99 @@ class WorkshopForm(ContactForm):
     contact = forms.EmailField(label=_('E-mail'), max_length=128)
     organization = forms.CharField(label=_('Organization'),
                                    max_length=256, required=False)
+    country = forms.CharField(label=_('Country'), max_length=128)
+
+    _header = HeaderField(
+        label=mark_safe_lazy(_("<h3>I'll take a part in workshops</h3>")),
+        help_text=_('Only workshops with any spots left are visible here.'))
+
+    _h1 = HeaderField(label=mark_safe_lazy(_("<strong>Thursday, October 27th, 10 a.m.–12 noon</strong>")))
 
-    _#header = HeaderField(label=mark_safe_lazy(_("<h3>I'll take a part in workshops</h3>")), help_text=_('Only workshops with any spots left are visible here.'))
+    w_dimitrov = forms.BooleanField(label=_(u'Dimitar Dimitrov: Hacking Brussels'), required=False)
+    w_vangompel = forms.BooleanField(label=_(
+        u'Stef van Gompel: Methods and constraints for including evidence in IP lawmaking'), required=False)
 
-    #_h1 = HeaderField(label=mark_safe_lazy(_("<strong>Thursday, November 6th, 10 a.m.–12 noon</strong>")))
+    _h2 = HeaderField(label=mark_safe_lazy(_("<strong>Friday, October 28th, 10 a.m.–12 noon</strong>")))
 
-    #w_rysiek = forms.BooleanField(label=_(u'Michał „rysiek” Woźniak, Koalicja Otwartej Edukacji KOED: Wprowadzenie do prawa autorskiego i wolnych licencji'), required=False)
-    #w_bartsch = forms.BooleanField(label=_(u'Natalia Bartsch: Wykorzystywanie istniejących utworów w tworzeniu przedstawienia teatralnego'), required=False)
-    #w_samsung = forms.BooleanField(label=_(u'Rafał Sikorski: Prywatny użytek w prawie autorskim w XXI wieku. Jak powinien wyglądać w\u00a0Unii Europejskiej?'), required=False)
+    w_siewicz = forms.BooleanField(label=_(
+        u'dr Krzysztof Siewicz, dr Marta Hoffman-Sommer: '
+        u'Legal aspects of using research data in the age of Open Data'), required=False)
+    w_siewicz_project = forms.CharField(
+        label=mark_safe(
+            u'<p style="margin-top: 0"><strong>Qualification for this workshop will be based on the answers '
+            u'for the following problem:</strong></p>'
+            u'Please choose a particular dataset from any research project you are involved in and provide '
+            u'a description (no more than 1800 characters). Selected datasets will be discussed during '
+            u'the workshop as case studies. In your description, please include the following information: '
+            u'What is the research goal of the project (in the context of the chosen dataset)? '
+            u'What data is being collected and how is it stored? What is the process of data collection '
+            u'or generation? Who is involved in collecting or producing the data and in what manner?'),
+        max_length=1800, widget=forms.Textarea, required=False)
+    w_google = forms.BooleanField(label=_(
+        u'Marcin Olender, Google: Prawo autorskie na YouTube (workshop in Polish)'), required=False)
 
-    #_h2 = HeaderField(label=mark_safe_lazy(_("<strong>Friday, November 7th, 10 a.m.–12 noon</strong>")))
+    _h3 = HeaderField(label=mark_safe_lazy(_("<strong>Friday, October 28th, 12 noon–2 p.m.</strong>")))
 
-    #w_mezei = forms.BooleanField(label=_(u'Péter Mezei: European copyright alternatives – 2014 (Workshop will be held in English)'), required=False)
-    #w_sliwowski = forms.BooleanField(label=_(u'Kamil Śliwowski, Koalicja Otwartej Edukacji KOED: Prawo autorskie w Sieci - ćwiczenia praktyczne'), required=False)
+    w_patronite = forms.BooleanField(label=_(
+        u'Mateusz Górski, Michał Leksiński, Patronite: Praktyczne aspekty dozwolonego użytku '
+        u'(workshop in Polish)'),
+        required=False)
 
-    #_h3 = HeaderField(label=mark_safe_lazy(_("<strong>Friday, November 7th, 12 noon–2 p.m.</strong>")))
+    _header_1 = HeaderField(label='')
 
-    #w_zaiks = forms.BooleanField(label=_(u'Łukasz Łyczkowski, Adam Pacuski, Stowarzyszenie Autorów ZAiKS: Praktyczne aspekty dozwolonego użytku'), required=False)
-    #w_creativepoland = forms.BooleanField(label=_(u'Paweł Kaźmierczyk i Dagmara Białek, Creative Poland: Sektor kreatywny – pomysły są w cenie'), required=False)
+    start_workshops = ('dimitrov', 'vangompel', 'siewicz', 'google', 'patronite')
 
-    #_header_1 = HeaderField(label='')
+    slots = (('_h1', 'dimitrov', 'vangompel'), ('_h2', 'siewicz', 'google'), ('_h3', 'patronite'))
 
-    # agree_mailing = forms.BooleanField(
-    #    label=_('I am interested in receiving information about the Modern Poland Foundation\'s activities by e-mail'),
-    #    required=False
-    # )
+    agree_mailing = forms.BooleanField(
+        label=_('I am interested in receiving information about the Modern Poland Foundation\'s activities by e-mail'),
+        required=False)
     agree_data = forms.BooleanField(
         label=_('Permission for data processing'),
-        help_text=_(u'I hereby grant Modern Poland Foundation (Fundacja Nowoczesna Polska, ul. Marszałkowska 84/92, 00-514 Warszawa) permission to process my personal data (name, e-mail address) for purposes of registration for CopyCamp conference.')
-    )
+        help_text=_(
+            u'I hereby grant Modern Poland Foundation (Fundacja Nowoczesna Polska, ul. Marszałkowska 84/92, '
+            u'00-514 Warszawa) permission to process my personal data (name, e-mail address) for purposes of '
+            u'registration for CopyCamp conference.'))
     agree_license = forms.BooleanField(
         label=_('Permission for publication'),
-        help_text=mark_safe_lazy(_(u'I agree to having materials, recorded during the conference, released under the terms of <a href="http://creativecommons.org/licenses/by-sa/3.0/deed">CC\u00a0BY-SA</a> license and to publishing my image.')),
-        required=False
-    )
+        help_text=mark_safe_lazy(_(
+            u'I agree to having materials, recorded during the conference, released under the terms of '
+            u'<a href="http://creativecommons.org/licenses/by-sa/3.0/deed">CC\u00a0BY-SA</a> '
+            u'license and to publishing my image.')),
+        required=False)
 
     def __init__(self, *args, **kwargs):
         super(WorkshopForm, self).__init__(*args, **kwargs)
-        self.limit_reached = Contact.objects.filter(form_tag=self.save_as_tag).count() >= 60
-
-        # counts = {k: 0 for k in self.start_workshops}
-        # for contact in Contact.objects.filter(form_tag=self.save_as_tag):
-        #     for workshop in self.start_workshops:
-    #            if contact.body.get('w_%s' % workshop, False): counts[workshop] += 1
-        # some_full = False
-        # for k, v in counts.items():
-        #     if v >= 60:
-        #         some_full = True
-        #         if 'w_%s' % k in self.fields:
-        #             del self.fields['w_%s' % k]
-        #         if k in self.workshops:
-        #             self.workshops.remove(k)
-        # if not some_full:
-        #     self.fields['_header'].help_text = None
-
-    # def clean(self):
-    #     any_workshop = False
-    #     for w in self.start_workshops:
-    #         if self.cleaned_data.get('w_%s' % w):
-    #             any_workshop = True
-    #     if not any_workshop:
-    #         self._errors['_header'] = [_("Please choose at least one workshop.")]
-    #     return self.cleaned_data
+        # self.limit_reached = Contact.objects.filter(form_tag=self.save_as_tag).count() >= 60
+        try:
+            url = Entry.objects.get(slug_pl='regulamin').get_absolute_url()
+            self.fields['agree_toc'] = forms.BooleanField(
+                required=True,
+                label=mark_safe(_('I accept <a href="%s">Terms and Conditions of CopyCamp</a>') % url)
+            )
+        except Entry.DoesNotExist:
+            pass
+        counts = {k: 0 for k in self.start_workshops}
+        for contact in Contact.objects.filter(form_tag=self.save_as_tag):
+            for workshop in self.start_workshops:
+                if contact.body.get('w_%s' % workshop, False): counts[workshop] += 1
+        some_full = False
+        for k, v in counts.items():
+            if v >= 30:
+                some_full = True
+                if 'w_%s' % k in self.fields:
+                    del self.fields['w_%s' % k]
+                if k in self.workshops:
+                    self.workshops.remove(k)
+        if not some_full:
+            self.fields['_header'].help_text = None
+
+    def clean(self):
+        if self.cleaned_data.get('w_siewicz') and not self.cleaned_data.get('w_siewicz_project'):
+            self._errors['w_siewicz_project'] = [_("Please submit your answer to qualify for this workshop")]
+        for slot in self.slots:
+            if sum(1 for w in slot if self.cleaned_data.get('w_%s' % w)) > 1:
+                self._errors[slot[0]] = [_("You can't choose more than one workshop during the same period")]
+        if not any(self.cleaned_data.get('w_%s' % w) for w in self.start_workshops):
+            self._errors['_header'] = [_("Please choose at least one workshop.")]
+        return self.cleaned_data
index d5f11cc..9f01a63 100644 (file)
Binary files a/prawokultury/locale/pl/LC_MESSAGES/django.mo and b/prawokultury/locale/pl/LC_MESSAGES/django.mo differ
index 2b19477..eb9a3e1 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: prawokultury\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-22 13:21+0200\n"
+"POT-Creation-Date: 2016-10-04 16:05+0200\n"
 "PO-Revision-Date: 2014-09-30 16:25+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: FNP <fundacja@nowoczesnapolska.org.pl>\n"
@@ -19,7 +19,7 @@ msgstr ""
 "|| n%100>=20) ? 1 : 2);\n"
 "X-Generator: Poedit 1.5.4\n"
 
-#: contact_forms.py:23 templates/base.html:60
+#: contact_forms.py:23 templates/base.html:61
 msgid "Registration"
 msgstr "Rejestracja"
 
@@ -39,7 +39,7 @@ msgstr "E-mail"
 msgid "Organization"
 msgstr "Organizacja"
 
-#: contact_forms.py:31
+#: contact_forms.py:31 contact_forms.py:284
 msgid "Country"
 msgstr "Kraj"
 
@@ -261,7 +261,7 @@ msgstr "konkretna(y) prelegentka(ent)"
 msgid "good networking occasion"
 msgstr "możliwość networkingu"
 
-#: contact_forms.py:120
+#: contact_forms.py:120 contact_forms.py:329
 msgid ""
 "I am interested in receiving information about the Modern Poland "
 "Foundation's activities by e-mail"
@@ -269,11 +269,11 @@ msgstr ""
 "Jestem zainteresowana/y otrzymywaniem drogą mailową informacji dotyczących "
 "działalności Fundacji Nowoczesna Polska"
 
-#: contact_forms.py:124 contact_forms.py:310
+#: contact_forms.py:124 contact_forms.py:332
 msgid "Permission for data processing"
 msgstr "Zgoda na przetwarzanie danych"
 
-#: contact_forms.py:125 contact_forms.py:311
+#: contact_forms.py:125 contact_forms.py:334
 msgid ""
 "I hereby grant Modern Poland Foundation (Fundacja Nowoczesna Polska, ul. "
 "Marszałkowska 84/92, 00-514 Warszawa) permission to process my personal data "
@@ -283,11 +283,11 @@ msgstr ""
 "poczty elektronicznej) przez Fundację Nowoczesna Polska (ul. Marszałkowska "
 "84/92, 00-514 Warszawa) w związku z rejestracją na konferencję CopyCamp."
 
-#: contact_forms.py:128 contact_forms.py:314
+#: contact_forms.py:128 contact_forms.py:338
 msgid "Permission for publication"
 msgstr "Zgoda na publikację"
 
-#: contact_forms.py:129 contact_forms.py:315
+#: contact_forms.py:129 contact_forms.py:340
 msgid ""
 "I agree to having materials, recorded during the conference, released under "
 "the terms of <a href=\"http://creativecommons.org/licenses/by-sa/3.0/deed"
@@ -297,7 +297,7 @@ msgstr ""
 "licencji <a href=\"http://creativecommons.org/licenses/by-sa/3.0/deed.pl"
 "\">CC BY-SA</a> oraz rozpowszechnianie wizerunku."
 
-#: contact_forms.py:141
+#: contact_forms.py:141 contact_forms.py:352
 #, python-format
 msgid "I accept <a href=\"%s\">Terms and Conditions of CopyCamp</a>"
 msgstr "Akceptuję <a href=\"%s\">Regulamin CopyCampu</a>"
@@ -419,6 +419,71 @@ msgstr "Imię i nazwisko"
 msgid "Workshop"
 msgstr "Warsztat"
 
+#: contact_forms.py:287
+msgid "<h3>I'll take a part in workshops</h3>"
+msgstr "<h3>Wezmę udział w warsztatach</h3>"
+
+#: contact_forms.py:288
+msgid "Only workshops with any spots left are visible here."
+msgstr "Widoczne są tylko warsztaty, w których są jeszcze miejsca."
+
+#: contact_forms.py:290
+msgid "<strong>Thursday, October 27th, 10 a.m.–12 noon</strong>"
+msgstr "<strong>Czwartek, 27 października, 10:00–12:00</strong>"
+
+#: contact_forms.py:292
+msgid "Dimitar Dimitrov: Hacking Brussels"
+msgstr "Dimitar Dimitrov: Hacking Brussels (warsztat w języku angielskim)"
+
+#: contact_forms.py:294
+msgid ""
+"Stef van Gompel: Methods and constraints for including evidence in IP "
+"lawmaking"
+msgstr ""
+"Stef van Gompel: Methods and constraints for including evidence in IP "
+"lawmaking (warsztat w języku angielskim)"
+
+#: contact_forms.py:296
+msgid "<strong>Friday, October 28th, 10 a.m.–12 noon</strong>"
+msgstr "<strong>Piątek, 28 października, 10:00–12:00</strong>"
+
+#: contact_forms.py:299
+msgid ""
+"dr Krzysztof Siewicz, dr Marta Hoffman-Sommer: Legal aspects of using "
+"research data in the age of Open Data"
+msgstr ""
+"dr Krzysztof Siewicz, dr Marta Hoffman-Sommer: Legal aspects of using "
+"research data in the age of Open Data (warsztat w języku angielskim)"
+
+#: contact_forms.py:313
+msgid "Marcin Olender, Google: Prawo autorskie na YouTube (workshop in Polish)"
+msgstr "Marcin Olender, Google: Prawo autorskie na YouTube"
+
+#: contact_forms.py:315
+msgid "<strong>Friday, October 28th, 12 noon–2 p.m.</strong>"
+msgstr "<strong>Piątek, 28 października, 12:00–14:00</strong>"
+
+#: contact_forms.py:318
+msgid ""
+"Mateusz Górski, Michał Leksiński, Patronite: Praktyczne aspekty dozwolonego "
+"użytku (workshop in Polish)"
+msgstr ""
+"Mateusz Górski, Michał Leksiński, Patronite: Praktyczne aspekty dozwolonego "
+"użytku"
+
+#: contact_forms.py:373
+msgid "Please submit your answer to qualify for this workshop"
+msgstr ""
+"Zamieść odpowiedź na zadanie, aby móc się zakwalifikować na ten warsztat"
+
+#: contact_forms.py:376
+msgid "You can't choose more than one workshop during the same period"
+msgstr "Nie możesz wybrać warsztatów odbywających się w tym samym czasie"
+
+#: contact_forms.py:378
+msgid "Please choose at least one workshop."
+msgstr "Proszę wybrać co najmniej jeden warsztat."
+
 #: settings.d/60-custom.py:5
 msgid "info"
 msgstr "info"
@@ -431,7 +496,7 @@ msgstr "Strona nie znaleziona"
 msgid "The page you were looking for doesn't exist."
 msgstr "Strona, której szukasz, nie istnieje."
 
-#: templates/base.html:18
+#: templates/base.html:19
 msgid ""
 "CopyCamp Conference is the first large-scale meeting in Poland devoted to "
 "the issues of copyright in both ideological and practical terms."
@@ -439,15 +504,19 @@ msgstr ""
 "CopyCamp jest pierwszym w Polsce, organizowanym na dużą skalę spotkaniem "
 "osób zajmujących się problematyką praw autorskich."
 
-#: templates/base.html:35
+#: templates/base.html:36
 msgid "CopyCamp"
 msgstr "CopyCamp"
 
-#: templates/base.html:51
+#: templates/base.html:52
 msgid "Search"
 msgstr "Szukaj"
 
-#: templates/base.html:103
+#: templates/base.html:68
+msgid "Workshops"
+msgstr "Warsztaty"
+
+#: templates/base.html:105
 msgid ""
 "If not explicitly stated otherwise, all texts are licensed under the <a "
 "href='http://creativecommons.org/licenses/by-sa/3.0/'>Creative Commons "
@@ -542,15 +611,6 @@ msgstr ""
 #~ msgid "Take part! / Workshops"
 #~ msgstr "Weź udział! / Warsztaty"
 
-#~ msgid "<h3>I'll take a part in workshops</h3>"
-#~ msgstr "<h3>Wezmę udział w warsztatach</h3>"
-
-#~ msgid "Only workshops with any spots left are visible here."
-#~ msgstr "Widoczne są tylko warsztaty, w których są jeszcze miejsca."
-
-#~ msgid "<strong>Friday, November 7th, 10 a.m.–12 noon</strong>"
-#~ msgstr "<strong>Piątek, 7 listopada, 10:00–12:00</strong>"
-
 #~ msgid ""
 #~ "Péter Mezei: European copyright alternatives – 2014 (Workshop will be "
 #~ "held in English)"
@@ -558,12 +618,6 @@ msgstr ""
 #~ "Péter Mezei: European copyright alternatives – 2014 (Uwaga! Warsztat "
 #~ "prowadzony będzie w jęz. angielskim.)"
 
-#~ msgid "<strong>Friday, November 7th, 12 noon–2 p.m.</strong>"
-#~ msgstr "<strong>Piątek, 7 listopada, 12:00–14:00</strong>"
-
-#~ msgid "Please choose at least one workshop."
-#~ msgstr "Proszę wybrać co najmniej jeden warsztat."
-
 #~ msgid "Creative Middle Class"
 #~ msgstr "O kreatywnej klasie średniej"
 
@@ -582,9 +636,6 @@ msgstr ""
 #~ msgid "Presentation"
 #~ msgstr "Prezentacja"
 
-#~ msgid "<strong>Thursday, November 6th, 10 a.m.–12 noon</strong>"
-#~ msgstr "<strong>Czwartek, 6 listopada, 10:00–12:00</strong>"
-
 #~ msgid "Thank you for submitting the registration form at %(site_name)s."
 #~ msgstr ""
 #~ "Dziękujemy za wypełnienie formularza rejestracyjnego na stronie "
index be0cd15..297d03b 100644 (file)
@@ -37,6 +37,7 @@ PIPELINE_JS = {
     'base': {
         'source_filenames': (
             'js/promobox.js',
+            'js/workshop_form.js',
             'contrib/lightbox/js/lightbox.min.js',
         ),
         'output_filename': 'compressed/base.js',
diff --git a/prawokultury/static/js/workshop_form.js b/prawokultury/static/js/workshop_form.js
new file mode 100644 (file)
index 0000000..bcc2c4b
--- /dev/null
@@ -0,0 +1,15 @@
+$(document).ready(function() {
+
+    var project_row = $('#id_w_siewicz_project').closest('tr');
+
+    var switcher = $('#id_w_siewicz');
+
+    if (!switcher.is(':checked'))
+        project_row.hide();
+
+    switcher.on('change', function(data) {
+        console.log(data);
+        project_row.toggle();
+    })
+
+});
index 94d9954..890f042 100755 (executable)
@@ -5,6 +5,7 @@
 {% load sponsor_tags %}
 {% load compressed %}
 {% load piwik_tags %}
+{% load entry_url %}
 <html prefix="og: http://ogp.me/ns#">
     <head>
        <title>{% block "titleextra" %}{% endblock %}CopyCamp</title>
         <div id="main-bar">
         <div id="sidebar" class="bar-right">
             {% block "sidebar" %}
-<div class="sidebar-box" style="text-align:center; font-size: 1.3em;">
-<strong><a target="_blank" style="display: block" href="https://prawokultury.pl/publikacje/cory-doctorow-kontekst/">
-<img style="margin-bottom: .5em;" src="//prawokultury.pl/media/entry/image/cory_cvr_fb_2_maly.jpg" alt="Cory Doctorow &ndash; Kontekst"><br>
-  Książka:<br/>
-  Cory Doctorow &ndash; Kontekst<br/>
-  Kup na PrawoKultury.pl
-  </a></strong></div>
+                <a href="{% entry_url "warsztaty" %}" style="display: block; margin-bottom: 10px; width: 220px; text-align:center; background: #ED7F00; color: white; font-size: 24px; text-transform: uppercase;">{% trans "Workshops" %}</a>
+                <div class="sidebar-box" style="text-align:center; font-size: 1.3em;">
+                    <strong><a target="_blank" style="display: block" href="https://prawokultury.pl/publikacje/cory-doctorow-kontekst/">
+                        <img style="margin-bottom: .5em;" src="//prawokultury.pl/media/entry/image/cory_cvr_fb_2_maly.jpg" alt="Cory Doctorow &ndash; Kontekst"><br>
+                        Książka:<br/>
+                        Cory Doctorow &ndash; Kontekst<br/>
+                        Kup na PrawoKultury.pl
+                </a></strong></div>
 
                 <div class="sidebar-box">
                     {% sponsor_page 'main' %}
diff --git a/prawokultury/templatetags/__init__.py b/prawokultury/templatetags/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/prawokultury/templatetags/entry_url.py b/prawokultury/templatetags/entry_url.py
new file mode 100644 (file)
index 0000000..104353d
--- /dev/null
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+from django.template import Library
+from migdal.models import Entry
+
+register = Library()
+
+
+@register.simple_tag()
+def entry_url(slug_pl):
+    return Entry.objects.get(slug_pl=slug_pl).get_absolute_url()
\ No newline at end of file