p.save()
return self.poem_set.filter(for_contest=True)
+ def contest_poems(self):
+ return self.poem_set.filter(in_contest=True)
+
class Poem(models.Model):
slug = models.SlugField(max_length=50, db_index=True)
def __unicode__(self):
oneliner = u"%s, %s" % (self.poet.name, self.pretty_title())
- if not self.title:
- oneliner += u" [%s…]" % self.text[:20]
+ oneliner += u" [%s…]" % (u" ".join(self.text.split()[:5]))
return oneliner
def get_absolute_url(self):
--- /dev/null
+{% extends "base.html" %}
+{% load url from future %}
+
+{% block "body" %}
+
+<h1>
+<a href='/'><img src="{{ STATIC_URL }}img/turniej-maly.png" style='float:left; margin-right: 10px; margin-top: -13px' /></a>
+Turniej Elektrybałtów: utwory wybrane do konkursu</h1>
+
+<div class="social">
+<span style="position:relative; top: -5px;" >
+ <div class="fb-like" data-href="http://turniej.wolnelektury.pl" data-send="false" data-layout="button_count" data-width="150" data-show-faces="false"></div>
+</span>
+<g:plusone annotation="bubble" href="http://turniej.wolnelektury.pl"></g:plusone>
+<script>
+ new nk_fajne({
+ url: "http://turniej.wolnelektury.pl",
+ type: 4,
+ color: 0,
+ title: "Turniej Elektrybałtów",
+ image: "http://turniej.wolnelektury.pl/turniej.png",
+ description: "Turniej Elektrybałtów - otwarty konkurs na najlepszego automatycznego poetę."
+ });
+</script>
+</div>
+
+<div style='clear: both'></div>
+
+{% for poet in poets %}
+ <h2><a href="{{ poet.get_absolute_url }}">{{ poet }}</a></h2>
+ <ul class='plain'>
+ {% for poem in poet.contest_poems %}
+ <li><a href="{{ poem.get_absolute_url }}">{{ poem }}</a></li>
+ {% endfor %}
+ </ul>
+{% endfor %}
+</ul>
+
+{% endblock %}
<a class='tworz' href="{% url 'poetry_new' %}">Twórz-że się!</a>
+<h2><a href="{% url 'poetry_contest' %}">Utwory do konkursu zostały wybrane!</a></h2>
+
+<p>Spośród wygenerowanych przz nas propozycji autorzy programów wybrali po trzy utwory.</p>
+<p><a href="{% url 'poetry_contest' %}">Zobacz wiersze startujące w konkursie!</a></p>
+</p>
+
+
+
+
<h2>Ostatnio opublikowane utwory:</h2>
<ul class='plain'>
{% for poem in last %}
<!doctype html>
<html>
<head>
- <title>Turniej Elektrybałtów: {{ poem.poet.name }}, {% if poem.title %}{{ poem.title }}{% else %}***{% endif %}</title>
+ <title>Turniej Elektrybałtów: {{ poem }}</title>
<meta charset="utf-8" />
<link rel="shortcut icon" href="{{ STATIC_URL }}img/favicon.ico" />
<p><a href="{% url 'poetry_main' %}">Zobacz wszystkich autorów.</a></p>
+<div class="poet-description">
+
<p>Autor programu: <strong>{{ poet.author }}</strong></p>
-<p>{{ poet.description }}</p>
+{{ poet.description|linebreaks }}
<p>Kod źródłowy: <a href="{{ poet.url }}">{{ poet.url }}</a></p>
<a class="tworz" href="{% url 'poetry_new' poet.slug %}">Twórz-że!</a>
-<p>Ostatnio opublikowane utwory:</p>
+</div>
+
+<h2>Utwory w konkursie (<a href="{% url 'poetry_contest' %}">zobacz wszystkie</a>)</h2>
+<ul class='plain'>
+{% for poem in in_contest %}
+ <li><a href="{{ poem.get_absolute_url }}">{{ poem }}</a></li>
+{% endfor %}
+</ul>
+
+<h2>Ostatnio opublikowane utwory:</h2>
<ul class='plain'>
{% for poem in last %}
<li><a href="{{ poem.get_absolute_url }}">{{ poem }}</a></li>
url(r"^$", "main", name="poetry_main"),
url(r"^nowy/$", 'new', name="poetry_new"),
+ url(r"^konkurs/$", 'contest', name="poetry_contest"),
url(r"^(?P<slug>[a-zA-Z0-9-]+)/$", "poet", name="poetry_poet"),
url(r"^(?P<slug>[a-zA-Z0-9-]+)/nowy/$", 'new', name="poetry_new"),
def poet(request, slug):
poet = get_object_or_404(Poet, slug=slug)
last = poet.poem_set.order_by('-created_at')[:20]
+ in_contest = poet.poem_set.filter(in_contest=True).order_by('created_at')
return render(request, "poetry/poet.html", locals())
poets = Poet.objects.all().order_by('?')
last = Poem.objects.all().order_by('-created_at')[:20]
return render(request, "poetry/main.html", locals())
+
+
+def contest(request):
+ poets = Poet.objects.all().order_by('?')
+ return render(request, "poetry/contest.html", locals())
+
margin: 30px 13px;
vertical-align: middle;
}
+#footer a:hover {
+ border: none;
+}
blockquote {
.poet-list li:before {
content: "» ";
}
+
+.poet-description {
+ max-width: 60em;
+}
+
<h2>Ostatnie wiersze:</h2>
<ul class="last">
{% for poem in last %}
- <li><a href="{{ poem.get_absolute_url }}">{{ poem }}</a></li>
+ <li><a href="{{ poem.get_absolute_url }}">{{ poem.poet.name}}, {{ poem.pretty_title }}</a><br/>{{ poem.text|truncatewords:5 }}</li>
{% endfor %}
</ul>
</div>
+<div class="uwaga">
+<p>Konkurs został rozstrzygnięty! Zakończenie odbyło się podczas <a href='http://domenapubliczna.org'>Dnia Domeny Publicznej 2012</a>.</p>
+
+<p>Zwycięzcą został <a href='/poezja/centonista/'><strong>Centonista</strong></a>. Gratulujemy!</p>
+
+<p>Dodatkowo, <a href='/poezja/ala/'>Ała!</a> otrzymał wyróżnienie.</p>
+</div>
+
<p>Znacie <a href="http://www.wolnelektury.pl/lesmianator/">Leśmianatora</a>?
To niewielki skrypt miksujący na życzenie wiersze z
<a href="http://www.wolnelektury.pl">Wolnych Lektur</a>.
<a href="https://github.com/turniej">jest dostępny</a> na wolnej licencji
– nic więc nie stoi na przeszkodzie, by rozwijać je dalej.</p>
+<p>Spośród wygenerowanych przz nas propozycji autorzy programów wybrali po trzy utwory.
+<a href="{% url 'poetry_contest' %}">Zobacz wiersze, które wystartowały w konkursie.</a></p>
+
<p>Do zabawy zapraszamy wszystkich – i tych, którzy świetnie programują, i tych, którzy
programować dopiero się uczą. Tych, którzy nie rozstają się z tomikiem
wierszy, i tych, którzy na ten widok dostają gęsiej skórki. Chcemy wybrać