From: Radek Czajka Date: Wed, 3 Apr 2019 10:37:47 +0000 (+0200) Subject: Rearrange source. X-Git-Url: https://git.mdrn.pl/turniej.git/commitdiff_plain/80b74642b6a6a375462d6eae7efb203981a412d6?ds=inline Rearrange source. --- diff --git a/Makefile b/Makefile index 434b784..ea5beb0 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ .PHONY: deploy -deploy: turniej/localsettings.py +deploy: src/core/localsettings.py pip install -r requirements.txt - ./manage.py migrate --noinput - ./manage.py collectstatic --noinput + src/manage.py migrate --noinput + src/manage.py collectstatic --noinput diff --git a/apps/edition1/__init__.py b/apps/edition1/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/apps/edition1/static/edition1/bg.png b/apps/edition1/static/edition1/bg.png deleted file mode 100644 index be7d63a..0000000 Binary files a/apps/edition1/static/edition1/bg.png and /dev/null differ diff --git a/apps/edition1/static/edition1/style.css b/apps/edition1/static/edition1/style.css deleted file mode 100644 index 0394bce..0000000 --- a/apps/edition1/static/edition1/style.css +++ /dev/null @@ -1,167 +0,0 @@ -html { - margin: 0; -} - -body { - margin: 0; - padding: 0; - - font-size: .75em; - font-family: Verdana,Arial,Helvetica,sans-serif; -} - -#body-wrapper { - padding: 1em; - color: #2F4110; - background: url("/static/edition1/bg.png") repeat-x scroll 0 0 #FFFFFF; -} -#body { - max-width: 900px; - margin:auto; -} -#new-edition { - background: #191919; - color: #989898; - text-align: center; - padding: .8em 0; -} -#new-edition a { - color: white; -} - - - -#content { - width: 420px; - margin-top: 2em; -} - - - -h1 { - font: bold 2.2em Arial,sans-serif; - padding-top: .7em; - margin-bottom: .2em; -} - - -h2 { - font-size: 1.1em; - margin:0; -} - -a { - color: #295158; - text-decoration: none; -} -a:hover { - border-bottom: 1px dotted; -} - - -.plain li { - list-style: none; -} - -li { - margin: 1em; -} - -#termin-wrap { - margin-top: 3em; -} - - -.clr { - clear: both; -} - -#footer { - border-top: 1px solid #ddd; - margin-top: 7em; - clear: both; - -} -#footer img { - margin: 30px 13px; - vertical-align: middle; -} -#footer a:hover { - border: none; -} - - -blockquote { - font-size: .9em; - font-style: italic; - margin-left: 350px; - margin-right: 50px; - margin-bottom: 4em; -} -blockquote p { - margin: .5em 0 0 0; -} - -.more { - text-align: right; -} - -.uwaga { - border: 1px solid #ddd; - padding: 1em; - background-color: #ff8; -} - -.social { - margin-top: 10px; - margin-bottom: 10px; -} - - -.tworz { - font-size: 1.5em; - padding: .8em; - background: #555; - color: white; - margin: 1em auto; - display: block; - width: 10em; - text-align: center; - border: 1px solid #000; - border-radius: 1em; -} -.tworz:hover { - border: 1px solid #000; - background: #666; -} - -.last { - list-style: none; - padding: 0; -} -.last li { - margin-left: 0; -} - -.poet-list { - padding: 0; - margin: 1em 0; -} -.poet-list li { - float: left; - width: 30%; - list-style: none; - padding: .8em 0; - border: 1px solid #888; - background: #eee; - border-radius: 1em; - text-align: center; -} -.poet-list li:before { - content: "» "; -} - -.poet-description { - max-width: 60em; -} - diff --git a/apps/edition1/templates/edition1/base.html b/apps/edition1/templates/edition1/base.html deleted file mode 100644 index b851855..0000000 --- a/apps/edition1/templates/edition1/base.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - Turniej Elektrybałtów{% block "extratitle" %}{% endblock %} - - - - - - - - -
- - - -
-
-{% block "body" %}{% endblock %} -
-
- - -{% load piwik_tags %} -{% tracking_code %} - - - - diff --git a/apps/edition1/templates/edition1/home.html b/apps/edition1/templates/edition1/home.html deleted file mode 100644 index b2159ae..0000000 --- a/apps/edition1/templates/edition1/home.html +++ /dev/null @@ -1,107 +0,0 @@ -{% extends "edition1/base.html" %} - -{% block "body" %} - -
-logo Turnieju Elektrybałtów: frontalny widok maszynki do mielenia mięsa -

Ostatnie wiersze:

- - -
- -
-

Turniej Elektrybałtów

-

Konkurs automatycznej poezji

- - - - -
-

Konkurs został rozstrzygnięty! Zakończenie odbyło się podczas Dnia Domeny Publicznej 2012.

- -

Zwycięzcą został Centonista. Gratulujemy!

- -

Dodatkowo, Ała! otrzymał wyróżnienie.

-
- -

Znacie Leśmianatora? -To niewielki skrypt miksujący na życzenie wiersze z -Wolnych Lektur. -Powstał jako żart, a niechcący - -„odciął się od dosłownie rozumianego dziedzictwa dadaizmu i surrealizmu”. -Idziemy dalej – ogłaszamy otwarty konkurs na najlepszego automatycznego poetę!

- -

Konkurs wystartował 12 września 2011 roku – z okazji 90 rocznicy urodzin -Stanisława Lema. Termin nadsyłania prac upłynął -10 listopada 2011 roku. -Prezentujemy nadesłane prace w akcji. -Kliknij przycisk, a jeden -z programów-uczestników napisze dla Ciebie wiersz:

- -Twórz-że się! - -

Zobacz wszystkie programy. Ich kod źródłowy -jest dostępny na wolnej licencji -– nic więc nie stoi na przeszkodzie, by rozwijać je dalej.

- -

Spośród wygenerowanych przz nas propozycji autorzy programów wybrali po trzy utwory. -Zobacz wiersze, które wystartowały w konkursie.

- -

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ć -program, który będzie w najciekawszy i najbardziej twórczy sposób miksował -dostępną w Wolnych Lekturach literaturę. W tej konkurencji liczy się przede -wszystkim wyobraźnia, pomysł i chęć do twórczej zabawy.

- -

Więcej informacji:

- - - -

Wszelkiego rodzaju pytania i wątpliwości proszę kierować na adres -radoslaw.czajka@nowoczesnapolska.org.pl

- -
-
- - - - - -{% endblock %} diff --git a/apps/edition1/templates/edition1/more.html b/apps/edition1/templates/edition1/more.html deleted file mode 100644 index 1a2ca05..0000000 --- a/apps/edition1/templates/edition1/more.html +++ /dev/null @@ -1,65 +0,0 @@ -{% extends "edition1/base.html" %} - -{% block "body" %} - -

- -Turniej Elektrybałtów

-

-Konkurs automatycznej poezji

- -
-

Gdy wskaźniki amplifikacyjne pokazały, że moc liryczna dochodzi - do maksimum, Trurl nieznacznie tylko drżącą ręką przerzucił wielki - wyłącznik i niemal natychmiast głosem lekko ochrypłym, lecz emanującym - dziwnie sugestywnym czarem, maszyna rzekła:

- -

– Chrzęskrzyboczek pacionkociewiczarokrzysztofoniczmy.

-

– Czy to już wszystko? – spytał po dłuższej chwili niezwykle uprzejmy - Klapaucjusz.

-

(Stanisław Lem, „Cyberiada”, „Wyprawa pierwsza A, czyli Elektrybałt Trurla”)

-
- - - -

Konkurs startuje 12 września 2011 roku – z okazji 90 rocznicy urodzin -Stanisława Lema. Termin nadsyłania prac upływa z końcem października 10 listopada 2011 roku. -Powinno być dość czasu na dopracowanie swoich pomysłów.

- -

Konkurs będzie wyglądał następująco:

- - - -

Programy biorące udział w konkursie zostaną też uruchomione -na stronie Turnieju – -internauci będą więc mieli możliwość samodzielnego „wyklikania” sobie własnego -wiersza przy użyciu każdego z nich.

- -

Powrót do strony głównej

- -{% endblock %} diff --git a/apps/edition1/templates/edition1/rules.html b/apps/edition1/templates/edition1/rules.html deleted file mode 100644 index 00187cc..0000000 --- a/apps/edition1/templates/edition1/rules.html +++ /dev/null @@ -1,74 +0,0 @@ -{% extends "edition1/base.html" %} - -{% block "body" %} - - -

- -Turniej Elektrybałtów

-

Konkurs automatycznej poezji

- -
-

Ustaliwszy, w czym rzecz, zwierzchność żeglugi kosmicznej zwróciła się - oficjalnie do Trurla z żądaniem natychmiastowej likwidacji należącego doń - urządzenia, które zakłócało liryką spokój publiczny i zagrażało zdrowiu - pasażerów.

- -

(Stanisław Lem, „Cyberiada”, „Wyprawa pierwsza A, czyli Elektrybałt Trurla”)

-
- - - -

Regulamin konkursu

- - - - - - - - - -

Powrót do strony głównej

- -{% endblock %} diff --git a/apps/edition1/templates/edition1/technical.html b/apps/edition1/templates/edition1/technical.html deleted file mode 100644 index ada8028..0000000 --- a/apps/edition1/templates/edition1/technical.html +++ /dev/null @@ -1,115 +0,0 @@ -{% extends "edition1/base.html" %} - -{% block "body" %} - -

- -Turniej Elektrybałtów

-

Konkurs automatycznej poezji

- -
-

Gdy atoli, z lekka kulejąc, zbliżył się do maszyny, ta, - na widok obcęgów w jego dłoni i błysków desperacji w oku, buchnęła taką - namiętną liryką błagając o łaskę, że rozszlochany Trurl cisnął narzędzia - i wrócił do siebie, brnąc po kolana w nowych utworach elektroducha, które - sięgały mu do pół piersi, zaścielając szemrzącym oceanem papieru całą halę.

- -

(Stanisław Lem, „Cyberiada”, „Wyprawa pierwsza A, czyli Elektrybałt Trurla”)

-
- - - -

Wymogi wobec zgłaszanych programów

- - - - -

W jaki sposób pobierać utwory?

- -

Źródłowe utwory można pobierać na kilka sposobów:

- - - -

Wszystkie pliki źródłowe są zapisane przy użyciu kodowania UTF-8.

- -

Przykładowy program (napisany w Pythonie), obrazujący wykorzystanie -każdego z tych sposobów, można znaleźć -w naszym repozytorium na GitHubie. -Jest to po prostu Leśmianator – w wersji przygotowanej zgodnie z warunkami -turnieju.

- - -

Gdzie wysyłać zgłoszenia?

- -

Zgłoszenia, a także wszelkiego rodzaju pytania i wątpliwości prosimy kierować na adres -radoslaw.czajka@nowoczesnapolska.org.pl. -Prosimy też o dołączenie do każdego zgłoszenia klauzuli o treści: -Zgłaszam się do konkursu „Turniej Elektrybałtów” i oświadczam, że -znam i akceptuję jego regulamin. - -

- - - - -

Powrót do strony głównej

- - -{% endblock %} - diff --git a/apps/edition1/urls.py b/apps/edition1/urls.py deleted file mode 100644 index 76dadd5..0000000 --- a/apps/edition1/urls.py +++ /dev/null @@ -1,14 +0,0 @@ -from django.conf.urls import url -from django.views.generic import TemplateView -from . import views - - -urlpatterns = [ - url(r'^$', views.home, name='e1_main_page'), - url(r'^regulamin/$', TemplateView.as_view(template_name='edition1/rules.html'), - name='e1_rules_page'), - url(r'^wiecej/$', TemplateView.as_view(template_name='edition1/more.html'), - name='e1_more_page'), - url(r'^technikalia/$', TemplateView.as_view(template_name='edition1/technical.html'), - name='e1_technical_page'), -] diff --git a/apps/edition1/views.py b/apps/edition1/views.py deleted file mode 100644 index 6d35feb..0000000 --- a/apps/edition1/views.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.shortcuts import render -from poetry.models import Poem - -def home(request): - last = Poem.objects.all().order_by('-created_at')[:10] - return render(request, "edition1/home.html", locals()) diff --git a/apps/edition2/__init__.py b/apps/edition2/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/apps/edition2/static/edition2/style.css b/apps/edition2/static/edition2/style.css deleted file mode 100644 index 4bee9cf..0000000 --- a/apps/edition2/static/edition2/style.css +++ /dev/null @@ -1,112 +0,0 @@ -html { - margin: 0; -} - -body { - margin: 0; - padding: 0; - - background: #191919; - color: #989898; - - font-family: Georgia,serif; -} - -#body-wrapper { - color: black; - background: #F7F7F7; - padding-bottom: 3em; -} -#body { - max-width: 900px; - margin:auto; - padding: 1em; -} - - -#content { - width: 480px; -} - - - -h1 { - font: bold 2.2em Georgia,serif; - margin-bottom: .2em; -} - - -h2 { - font-size: 1.1em; - margin:0; -} - -a { - color: #0D777E; - text-decoration: none; -} -a:hover { - border-bottom: 1px dotted; -} - - -.plain li { - list-style: none; -} - -li { - margin: 1em; -} - -#termin-wrap { - margin-top: 3em; -} - - -.clr { - clear: both; -} - -footer { - background: #191919; - color: #989898; - margin: 0 auto 0 auto; - padding: 1em; - clear: both; - text-align: center; -} -footer img { - margin: 0 20px; - vertical-align: middle; -} -footer a:hover { - border: none; -} - - -blockquote { - font-size: .9em; - font-style: italic; - margin-left: 350px; - margin-right: 50px; - margin-bottom: 4em; -} -blockquote p { - margin: .5em 0 0 0; -} - -.more { - text-align: right; -} - -.uwaga { - border: 1px solid #ddd; - padding: 0 1em; - margin: 1em 0; - background: white; - box-shadow: 2px 2px 2px #DDDDDD; -} - -.social { - margin: .5em 0 2em 0; -} \ No newline at end of file diff --git a/apps/edition2/templates/edition2/base.html b/apps/edition2/templates/edition2/base.html deleted file mode 100644 index fbb7a81..0000000 --- a/apps/edition2/templates/edition2/base.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - Turniej Wolnych Lektur{% block "extratitle" %}{% endblock %} - - - - - - - - -
-
-{% block "body" %}{% endblock %} -
-
- - - -{% load piwik_tags %} -{% tracking_code %} - - - - diff --git a/apps/edition2/templates/edition2/home.html b/apps/edition2/templates/edition2/home.html deleted file mode 100644 index dcac65d..0000000 --- a/apps/edition2/templates/edition2/home.html +++ /dev/null @@ -1,31 +0,0 @@ -{% extends "edition2/base.html" %} - -{% block "body" %} - -
-logo Turnieju Elektrybałtów: frontalny widok maszynki do mielenia mięsa -
- -
-

II Turniej Wolnych Lektur

-

Edycja wizualna

- - -
-

Zdecydowaliśmy się nie rozstrzygać II edycji Turnieju Wolnych Lektur -ze względu na niewystarczającą liczbę i poziom zgłoszeń.

- -

Zobacz wyniki pierwszej edycji – Turnieju Elektrybałtów.

-
- -

Wszelkie pytania i wątpliwości proszę kierować na adres -turniej@nowoczesnapolska.org.pl

- -
-
- - -{% endblock %} diff --git a/apps/edition2/templates/edition2/more.html b/apps/edition2/templates/edition2/more.html deleted file mode 100644 index 85a6689..0000000 --- a/apps/edition2/templates/edition2/more.html +++ /dev/null @@ -1,43 +0,0 @@ -{% extends "edition2/base.html" %} - -{% block "body" %} - -

- - - II Turniej Wolnych Lektur

-

Edycja wizualna

-

- {% load fnp_share %} - {% share 'http://turniej.wolnelektury.pl' 'Turniej Wolnych Lektur' %} -

- - - - -

Konkurs startuje 4 stycznia 2013 roku. Termin nadsyłania prac upływa 15 22 lutego 2013 roku. -Powinno być dość czasu na dopracowanie swoich pomysłów.

- -

Przebieg konkursu:

- -
    -
  1. Konkurs startuje 4 stycznia 2013 roku.
  2. -
  3. Termin nadsyłania prac upływa 15 22 lutego 2013 roku.
  4. -
  5. Warunkiem dopuszczenia do konkursu jest udostępnienie swojego zgłoszenia - (w przypadku zgłoszenia programu – kodu źródłowego) na - wolnej licencji. - Informacje o tym, jak to zrobić, znajdują się np. na stronach - projektu GNU - czy Creative Commons.
  6. -
  7. Zgłoszenia zostaną udostępnione publicznie na stronie konkursu po - zamknięciu etapu zgłoszeń. Autorzy nie muszą (choć oczywiście mogą) - upubliczniać ich wcześniej.
  8. -
  9. Do końca lutego jury konkursowe wybierze zwyciązcę konkursu.
  10. -
  11. Główną nagrodą jest czytnik e-booków Amazon Kindle z kompletem - książek z Wolnych Lektur w formacie MOBI.
  12. -
- -

Powrót do strony głównej

- -{% endblock %} diff --git a/apps/edition2/templates/edition2/rules.html b/apps/edition2/templates/edition2/rules.html deleted file mode 100644 index cb3a692..0000000 --- a/apps/edition2/templates/edition2/rules.html +++ /dev/null @@ -1,70 +0,0 @@ -{% extends "edition2/base.html" %} - -{% block "body" %} - - -

- - - II Turniej Wolnych Lektur

-

Edycja wizualna

-

- {% load fnp_share %} - {% share 'http://turniej.wolnelektury.pl' 'Turniej Wolnych Lektur' %} -

- - - - -

Regulamin konkursu

- - -
    -
  1. Organizatorem konkursu jest fundacja Nowoczesna Polska.
  2. - -
  3. Przedmiotem konkursu jest wizualizacja oparta na Wolnych Lekturach. - Wszystkie zgłoszenia (w przypadku programów – ich kod źródłowy) biorące - udział w konkursie muszą być udostępnione na - wolnej licencji. - Wizualizacje muszą być dostępne - w otwartym formacie.
  4. - -
  5. Konkurs trwa od 4 stycznia do 15 22 lutego 2013 roku i ma charakter otwarty. - Jedna osoba może wysłać więcej niż jedno zgłoszenie. - Aby wziąć udział udział w konkursie, należy wysłać swoje zgłoszenie na adres - turniej@nowoczesnapolska.org.pl - z klauzulą: - Zgłaszam się do konkursu „II Turniej Wolnych Lektur” i oświadczam, że - znam i akceptuję jego regulamin.
  6. - -
  7. Nagrodą główną jest czytnik Amazon Kindle z kompletem książek - z Wolnych Lektur w formacie MOBI. Nie ma możliwości zamiany nagrody na jej - równowartość pieniężną.
  8. - -
  9. Organizator może odwołać konkurs w każdym czasie, bez podawania - przyczyny. W takim przypadku uczestnikom konkursu nie przysługuje żadna - rekompensata. Uczestnicy zgłaszając swój udział w konkursie automatycznie - wyrażają zgodę na wykorzystanie ich wizerunku w materiałach promocyjnych - konkursu oraz materiałach promocyjnych fundacji Nowoczesna Polska.
  10. - -
  11. Organizator zastrzega sobie prawo do odrzucenia zgłoszenia, którego - udostępnienie na stronie konkursu mogłoby zagrażać stabilności, responsywności - albo bezpieczeństwu serwera albo oprogramowania użytkownika, a także takich, - których poprawne uruchomienie okaże się niemożliwe lub poważnie utrudnione.
  12. - -
  13. Organizator konkursu nie ponosi odpowiedzialności za wszelkie - roszczenia osób trzecich wynikające z tytułu wykorzystania materiałów - zgłoszonych przez uczestników konkursu jako własnych. Prace naruszające - prawa autorskie będą dyskwalifikowane.
  14. - -
  15. Organizator zatrzega sobie prawo wprowadzenia zmian w regulaminie - konkursu.
  16. - - - - - -

    Powrót do strony głównej

    - -{% endblock %} diff --git a/apps/edition2/templates/edition2/technical.html b/apps/edition2/templates/edition2/technical.html deleted file mode 100644 index bb55b09..0000000 --- a/apps/edition2/templates/edition2/technical.html +++ /dev/null @@ -1,61 +0,0 @@ -{% extends "edition2/base.html" %} - -{% block "body" %} - - -

    - - - II Turniej Wolnych Lektur

    -

    Edycja wizualna

    - - - -

    Wymogi techniczne wobec zgłoszeń

    - - - - -

    Gdzie wysyłać zgłoszenia?

    - -

    Zgłoszenia, a także wszelkiego rodzaju pytania i wątpliwości prosimy kierować na adres -turniej@nowoczesnapolska.org.pl. -Prosimy też o dołączenie do każdego zgłoszenia klauzuli o treści: -Zgłaszam się do konkursu „II Turniej Wolnych Lektur” i oświadczam, że - znam i akceptuję jego regulamin. - -

    - - - - -

    Powrót do strony głównej

    - - -{% endblock %} - diff --git a/apps/edition2/urls.py b/apps/edition2/urls.py deleted file mode 100755 index 0cb0f57..0000000 --- a/apps/edition2/urls.py +++ /dev/null @@ -1,13 +0,0 @@ -from django.conf.urls import url -from django.views.generic import TemplateView - -urlpatterns = [ - url(r'^$', TemplateView.as_view(template_name='edition2/home.html'), - name='e2_main_page'), - url(r'^regulamin/$', TemplateView.as_view(template_name='edition2/rules.html'), - name='e2_rules_page'), - url(r'^wiecej/$', TemplateView.as_view(template_name='edition2/more.html'), - name='e2_more_page'), - url(r'^technikalia/$', TemplateView.as_view(template_name='edition2/technical.html'), - name='e2_technical_page'), -] diff --git a/apps/poetry/__init__.py b/apps/poetry/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/apps/poetry/migrations/0001_initial.py b/apps/poetry/migrations/0001_initial.py deleted file mode 100644 index 81c630c..0000000 --- a/apps/poetry/migrations/0001_initial.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Poem', - fields=[ - ('id', models.AutoField(verbose_name='ID', auto_created=True, serialize=False, primary_key=True)), - ('slug', models.SlugField()), - ('title', models.CharField(null=True, max_length=255, blank=True)), - ('text', models.TextField()), - ('created_at', models.DateTimeField(db_index=True, auto_now_add=True)), - ('seen_at', models.DateTimeField(auto_now_add=True)), - ('view_count', models.IntegerField(default=1)), - ('for_contest', models.BooleanField(default=False)), - ('in_contest', models.BooleanField(default=False)), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='Poet', - fields=[ - ('id', models.AutoField(verbose_name='ID', auto_created=True, serialize=False, primary_key=True)), - ('name', models.CharField(max_length=50)), - ('path', models.CharField(max_length=255)), - ('slug', models.SlugField(unique=True)), - ('author', models.CharField(max_length=128, blank=True)), - ('url', models.CharField(max_length=255, blank=True)), - ('description', models.TextField(blank=True)), - ('first_line_title', models.BooleanField(default=False)), - ('skip_first_lines', models.IntegerField(default=0)), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.AddField( - model_name='poem', - name='poet', - field=models.ForeignKey(to='poetry.Poet', on_delete=models.CASCADE), - preserve_default=True, - ), - ] diff --git a/apps/poetry/migrations/__init__.py b/apps/poetry/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/apps/poetry/models.py b/apps/poetry/models.py deleted file mode 100644 index 58b8caf..0000000 --- a/apps/poetry/models.py +++ /dev/null @@ -1,85 +0,0 @@ -import os -import subprocess -from django.db import models -from django.urls import reverse -from django.conf import settings -from poetry.utils import get_hash - - -class Poet(models.Model): - name = models.CharField(max_length=50) - path = models.CharField(max_length=255) - slug = models.SlugField(max_length=50, unique=True, db_index=True) - author = models.CharField(max_length=128, blank=True) - url = models.CharField(max_length=255, blank=True) - description = models.TextField(blank=True) - first_line_title = models.BooleanField(default=False) - skip_first_lines = models.IntegerField(default=0) - - def __str__(self): - return self.name - - def get_absolute_url(self): - return reverse('poetry_poet', kwargs={'slug': self.slug}) - - def write(self): - curdir = os.getcwd() - os.chdir(os.path.dirname(self.path)) - proc = subprocess.Popen(self.path, - stdout=subprocess.PIPE, stderr=subprocess.PIPE) - os.chdir(curdir) - stdout, stderr = proc.communicate() - text = str(stdout, "utf-8", errors="ignore")[:1000] - slug = get_hash(text) - title = '' - if self.first_line_title: - title, text = text.split('\n', 1) - if self.skip_first_lines: - text = text.split('\n', self.skip_first_lines)[-1] - text = text.strip('\n') - poem = self.poem_set.create( - slug=slug, - text=text, - title=title - ) - return poem - - def make_for_contest(self): - assert not self.poem_set.filter(for_contest=True).exists() - for i in range(settings.POETRY_POEMS_FOR_CONTEST): - p = self.write() - p.for_contest = True - 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) - title = models.CharField(max_length=255, null=True, blank=True) - text = models.TextField() - poet = models.ForeignKey(Poet, on_delete=models.CASCADE) - created_at = models.DateTimeField(auto_now_add=True, editable=False, db_index=True) - seen_at = models.DateTimeField(auto_now_add=True, editable=False) - view_count = models.IntegerField(default=1) - - for_contest = models.BooleanField(default=False) - in_contest = models.BooleanField(default=False) - - def __str__(self): - oneliner = "%s, %s" % (self.poet.name, self.pretty_title()) - oneliner += " [%s…]" % (" ".join(self.text.split()[:5])) - return oneliner - - def get_absolute_url(self): - return reverse('poetry_poem', kwargs={'slug': self.slug}) - - def pretty_title(self): - return self.title or "***" - - def visit(self): - self.view_count += 1 - self.seen_at = datetime.now() - self.save() diff --git a/apps/poetry/static/poetry/poem.css b/apps/poetry/static/poetry/poem.css deleted file mode 100644 index e2f6f01..0000000 --- a/apps/poetry/static/poetry/poem.css +++ /dev/null @@ -1,137 +0,0 @@ -body { - font-size: 16px; - font: Georgia, "Times New Roman", serif; - line-height: 1.5em; - margin: 0; -} - -a { - color: blue; - text-decoration: none; -} - -a:hover { - border-bottom: 1px dotted; -} - -#book-text { - margin: 3em; - max-width: 36em; -} - -/* ================================== */ -/* = Header with logo and menu = */ -/* ================================== */ -#header { - margin: 3.4em 0 0 1.4em; -} - -img { - border: none; -} - - -#menu { - position: fixed; - left: 0em; - top: 0em; - width: 100%; - height: 1.5em; - background: #333; - color: #FFF; - opacity: 0.9; - z-index: 99; -} - -#menu a.menu-link { - display: block; - float: left; - height: 1.5em; - margin-left: 0.5em; - text-align: center; - color: #FFF; -} -#menu span { - color: #888; - font-style: italic; - font-size: .75em; - margin-right: 0.5em; -} - - -/* =================================================== */ -/* = Common elements: headings, paragraphs and lines = */ -/* =================================================== */ -h1 { - font-size: 3em; - margin: 1.5em 0; - text-align: center; - line-height: 1.5em; - font-weight: bold; -} - -h2 { - font-size: 2em; - margin: 1.5em 0 0; - font-weight: bold; - line-height: 1.5em; -} - -h3 { - font-size: 1.5em; - margin: 1.5em 0 0; - font-weight: normal; - line-height: 1.5em; -} - -h4 { - font-size: 1em; - margin: 1.5em 0 0; - line-height: 1.5em; -} - -p { - margin: 0; -} - - -#footnotes { - margin-top: 3em; - margin-left: 2.5em; - font-size: 0.875em; -} - -#footnotes p, #footnotes ul { - margin: 1.5em 0; -} - -#footnotes .permalink { - font-size: .75em; -} - -/* =================== */ -/* = Custom elements = */ -/* =================== */ -span.author { - font-size: 0.5em; - display: block; - line-height: 1.5em; - margin-bottom: 0.25em; -} - -span.author a { - color: inherit; -} - -span.author a { - color: inherit; -} - - -/* =================================== */ -/* = Hide some elements for printing = */ -/* =================================== */ - -@media print { - #menu {display: none;} -} diff --git a/apps/poetry/templates/poetry/contest.html b/apps/poetry/templates/poetry/contest.html deleted file mode 100644 index 9852c75..0000000 --- a/apps/poetry/templates/poetry/contest.html +++ /dev/null @@ -1,38 +0,0 @@ -{% extends "edition1/base.html" %} - -{% block "body" %} - -

    - -Turniej Elektrybałtów: utwory wybrane do konkursu

    - - - -
    - -{% for poet in poets %} -

    {{ poet }}

    - -{% endfor %} - - -{% endblock %} diff --git a/apps/poetry/templates/poetry/main.html b/apps/poetry/templates/poetry/main.html deleted file mode 100644 index 6234003..0000000 --- a/apps/poetry/templates/poetry/main.html +++ /dev/null @@ -1,54 +0,0 @@ -{% extends "edition1/base.html" %} - -{% block "body" %} - -

    - -Turniej Elektrybałtów

    - - - -

    Uczestnicy:

    - - -
    - -Twórz-że się! - -

    Utwory do konkursu zostały wybrane!

    - -

    Spośród wygenerowanych przz nas propozycji autorzy programów wybrali po trzy utwory.

    -

    Zobacz wiersze startujące w konkursie!

    -

    - - - - -

    Ostatnio opublikowane utwory:

    - - -{% endblock %} diff --git a/apps/poetry/templates/poetry/poem.html b/apps/poetry/templates/poetry/poem.html deleted file mode 100644 index 0ac6b3c..0000000 --- a/apps/poetry/templates/poetry/poem.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - Turniej Elektrybałtów: {{ poem }} - - - - - - - - -
    - - - - - - - -
    -

    - {{ poem.poet.name }} - {% if poem.title %}{{ poem.title }}{% else %}***{% endif %} -

    - {{ poem.text|linebreaksbr }} -
    -

    O utworze

    -

    Autor: {{ poem.poet.name }} (wszyscy autorzy). -
    Zobacz nowy wiersz tego autora, - albo nowy wiersz dowolnego autora.

    - - - -
    -

    Podziel się wierszem!

    - -
    -
    - - - -
    - albo użyj linku:
    - -
    - - - - -
    - - -{% load piwik_tags %} -{% tracking_code %} - - - - - - diff --git a/apps/poetry/templates/poetry/poet.html b/apps/poetry/templates/poetry/poet.html deleted file mode 100644 index 7947a66..0000000 --- a/apps/poetry/templates/poetry/poet.html +++ /dev/null @@ -1,58 +0,0 @@ -{% extends "edition1/base.html" %} - - -{% block "extratitle" %}: {{ poet.name }}{% endblock %} - - -{% block "body" %} - -

    - -{{ poet.name }}

    - -
    - -
    -
    - - -
    - -

    Zobacz wszystkich autorów.

    - -
    - -

    Autor programu: {{ poet.author }}

    - -{{ poet.description|linebreaks }} - -

    Kod źródłowy: {{ poet.url }}

    - -Twórz-że! - -
    - -

    Utwory w konkursie (zobacz wszystkie)

    -
      -{% for poem in in_contest %} -
    • {{ poem }}
    • -{% endfor %} -
    - -

    Ostatnio opublikowane utwory:

    -
      -{% for poem in last %} -
    • {{ poem }}
    • -{% endfor %} -
    - -{% endblock %} diff --git a/apps/poetry/urls.py b/apps/poetry/urls.py deleted file mode 100644 index eb9b4f3..0000000 --- a/apps/poetry/urls.py +++ /dev/null @@ -1,13 +0,0 @@ -from django.conf.urls import url -from . import views - - -urlpatterns = [ - url(r'^wiersz/(?P[a-zA-Z0-9-]+)/$', views.poem, name='poetry_poem'), - - url(r"^$", views.main, name="poetry_main"), - url(r"^nowy/$", views.new, name="poetry_new"), - url(r"^konkurs/$", views.contest, name="poetry_contest"), - url(r"^(?P[a-zA-Z0-9-]+)/$", views.poet, name="poetry_poet"), - url(r"^(?P[a-zA-Z0-9-]+)/nowy/$", views.new, name="poetry_new"), -] diff --git a/apps/poetry/utils.py b/apps/poetry/utils.py deleted file mode 100644 index 6366f08..0000000 --- a/apps/poetry/utils.py +++ /dev/null @@ -1,10 +0,0 @@ -import time - -from base64 import urlsafe_b64encode -from hashlib import sha1 - - -def get_hash(seed): - sha_digest = sha1(('%d%s' % (time.time(), str(seed)) - ).encode('utf-8', 'replace')).digest() - return urlsafe_b64encode(sha_digest).decode('latin1').replace('=', '').replace('_', '-').lower() diff --git a/apps/poetry/views.py b/apps/poetry/views.py deleted file mode 100644 index 71309d7..0000000 --- a/apps/poetry/views.py +++ /dev/null @@ -1,36 +0,0 @@ -from django.shortcuts import render, get_object_or_404 -from poetry.models import Poet, Poem - - -def new(request, slug=None): - if slug is not None: - poet = get_object_or_404(Poet, slug=slug) - else: - poet = Poet.objects.order_by('?')[0] - - poem = poet.write() - return render(request, "poetry/poem.html", locals()) - - -def poem(request, slug): - poem = get_object_or_404(Poem, slug=slug) - return render(request, "poetry/poem.html", locals()) - - -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()) - - -def main(request): - 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()) - diff --git a/manage.py b/manage.py deleted file mode 100755 index 0984221..0000000 --- a/manage.py +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env python -import os -import sys - -ROOT = os.path.dirname(os.path.abspath(__file__)) -sys.path = [ - os.path.join(ROOT, 'apps'), -] + sys.path - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "turniej.settings") - - from django.core.management import execute_from_command_line - - execute_from_command_line(sys.argv) diff --git a/src/core/__init__.py b/src/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/core/localsettings.py.template b/src/core/localsettings.py.template new file mode 100644 index 0000000..4345fcd --- /dev/null +++ b/src/core/localsettings.py.template @@ -0,0 +1,23 @@ +ADMINS = ( + #('Name', 'E-mail'), +) + +MANAGERS = ( + #('Name', 'E-mail'), +) + +# on +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. + 'NAME': '', # 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. + } +} + + +SECRET_KEY = %(secret_key)r +MEDIA_ROOT = '%(path)s/media/' diff --git a/src/core/settings.py b/src/core/settings.py new file mode 100644 index 0000000..37976da --- /dev/null +++ b/src/core/settings.py @@ -0,0 +1,137 @@ +# Django settings for turniej project. +import os.path + +PROJECT_DIR = os.path.abspath(os.path.dirname(__file__)) + +DEBUG = False + +ADMINS = [ + # ('Your Name', 'your_email@domain.com'), +] + +MANAGERS = ADMINS + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. + 'NAME': os.path.join(PROJECT_DIR, 'dev.db'), # 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 = None + +# Language code for this installation. All choices can be found here: +# http://www.i18nguy.com/unicode/language-identifiers.html +LANGUAGE_CODE = 'pl' + +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 + +# Absolute filesystem path to the directory that will hold user-uploaded files. +# Example: "/home/media/media.lawrence.com/media/" +MEDIA_ROOT = os.path.join(PROJECT_DIR, '../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 = os.path.join(PROJECT_DIR, '../static') + +# URL prefix for static files. +# Example: "http://media.lawrence.com/static/" +STATIC_URL = '/static/' + +# URL prefix for admin static files -- CSS, JavaScript and images. +# Make sure to use a trailing slash. +# Examples: "http://foo.com/static/admin/", "/static/admin/". +ADMIN_MEDIA_PREFIX = '/static/admin/' + +# Additional locations of static files +STATICFILES_DIRS = ( + # Put strings here, like "/home/html/static" or "C:/www/django/static". + # Always use forward slashes, even on Windows. + # Don't forget to use absolute paths, not relative paths. + + os.path.join(PROJECT_DIR, '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', +# 'django.contrib.staticfiles.finders.DefaultStorageFinder', +) + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'APP_DIRS': True, + 'DIRS': [ + os.path.join(PROJECT_DIR, 'templates'), + ], + 'OPTIONS': { + 'context_processors': [ + "django.template.context_processors.debug", + "django.template.context_processors.i18n", + "django.template.context_processors.media", + "django.template.context_processors.static", + "django.contrib.messages.context_processors.messages", + "django.template.context_processors.request", + ], + }, + }, +] + +MIDDLEWARE = [ + 'django.middleware.common.CommonMiddleware', +] + +ROOT_URLCONF = 'core.urls' + +INSTALLED_APPS = [ + 'django.contrib.sites', + 'django.contrib.staticfiles', + + 'piwik', + + 'fnpdjango', + 'poetry', + 'edition1', + 'edition2', +] + +POETRY_POEMS_FOR_CONTEST = 20 + +ALLOWED_HOSTS = [ + 'turniej.wolnelektury.pl', +] + +# Load localsettings, if they exist +try: + from .localsettings import * +except ImportError: + pass diff --git a/src/core/static/img/cc.png b/src/core/static/img/cc.png new file mode 100644 index 0000000..1de9d62 Binary files /dev/null and b/src/core/static/img/cc.png differ diff --git a/src/core/static/img/di.png b/src/core/static/img/di.png new file mode 100644 index 0000000..8136626 Binary files /dev/null and b/src/core/static/img/di.png differ diff --git a/src/core/static/img/favicon.ico b/src/core/static/img/favicon.ico new file mode 100644 index 0000000..89067a8 Binary files /dev/null and b/src/core/static/img/favicon.ico differ diff --git a/src/core/static/img/fnp.png b/src/core/static/img/fnp.png new file mode 100644 index 0000000..fe75e2d Binary files /dev/null and b/src/core/static/img/fnp.png differ diff --git a/src/core/static/img/fnp_black.png b/src/core/static/img/fnp_black.png new file mode 100644 index 0000000..411b2fd Binary files /dev/null and b/src/core/static/img/fnp_black.png differ diff --git a/src/core/static/img/koed.png b/src/core/static/img/koed.png new file mode 100644 index 0000000..6bcce17 Binary files /dev/null and b/src/core/static/img/koed.png differ diff --git a/src/core/static/img/lempl.png b/src/core/static/img/lempl.png new file mode 100644 index 0000000..51c9b9e Binary files /dev/null and b/src/core/static/img/lempl.png differ diff --git a/src/core/static/img/social/bigfacebook.png b/src/core/static/img/social/bigfacebook.png new file mode 100644 index 0000000..630416c Binary files /dev/null and b/src/core/static/img/social/bigfacebook.png differ diff --git a/src/core/static/img/social/biggoogle.png b/src/core/static/img/social/biggoogle.png new file mode 100644 index 0000000..19ad19d Binary files /dev/null and b/src/core/static/img/social/biggoogle.png differ diff --git a/src/core/static/img/social/bignk.png b/src/core/static/img/social/bignk.png new file mode 100644 index 0000000..c119cd1 Binary files /dev/null and b/src/core/static/img/social/bignk.png differ diff --git a/src/core/static/img/social/bigtwitter.png b/src/core/static/img/social/bigtwitter.png new file mode 100644 index 0000000..fafbe64 Binary files /dev/null and b/src/core/static/img/social/bigtwitter.png differ diff --git a/src/core/static/img/social/facebook.png b/src/core/static/img/social/facebook.png new file mode 100644 index 0000000..dca6fe8 Binary files /dev/null and b/src/core/static/img/social/facebook.png differ diff --git a/src/core/static/img/social/google.png b/src/core/static/img/social/google.png new file mode 100644 index 0000000..c8c2882 Binary files /dev/null and b/src/core/static/img/social/google.png differ diff --git a/src/core/static/img/social/nk.png b/src/core/static/img/social/nk.png new file mode 100644 index 0000000..de6650f Binary files /dev/null and b/src/core/static/img/social/nk.png differ diff --git a/src/core/static/img/social/twitter.png b/src/core/static/img/social/twitter.png new file mode 100644 index 0000000..6745ef4 Binary files /dev/null and b/src/core/static/img/social/twitter.png differ diff --git a/src/core/static/img/turniej-maly.png b/src/core/static/img/turniej-maly.png new file mode 100644 index 0000000..b11f0d6 Binary files /dev/null and b/src/core/static/img/turniej-maly.png differ diff --git a/src/core/static/img/turniej.png b/src/core/static/img/turniej.png new file mode 100644 index 0000000..dbcbda4 Binary files /dev/null and b/src/core/static/img/turniej.png differ diff --git a/src/core/static/img/wl.png b/src/core/static/img/wl.png new file mode 100644 index 0000000..1d6cb6a Binary files /dev/null and b/src/core/static/img/wl.png differ diff --git a/src/core/static/img/wl_black.png b/src/core/static/img/wl_black.png new file mode 100644 index 0000000..c729463 Binary files /dev/null and b/src/core/static/img/wl_black.png differ diff --git a/src/core/static/js/jquery.countdown-pl.js b/src/core/static/js/jquery.countdown-pl.js new file mode 100644 index 0000000..b94665c --- /dev/null +++ b/src/core/static/js/jquery.countdown-pl.js @@ -0,0 +1,18 @@ +/* http://keith-wood.name/countdown.html + * Polish initialisation for the jQuery countdown extension + * Written by Pawel Lewtak lewtak@gmail.com (2008) */ +(function($) { + $.countdown.regional['pl'] = { + labels: ['lat', 'miesięcy', 'tygodni', 'dni', 'godzin', 'minut', 'sekund'], + labels1: ['rok', 'miesiąc', 'tydzień', 'dzień', 'godzina', 'minuta', 'sekunda'], + labels2: ['lata', 'miesiące', 'tygodnie', 'dni', 'godziny', 'minuty', 'sekundy'], + compactLabels: ['l', 'm', 't', 'd'], compactLabels1: ['r', 'm', 't', 'd'], + whichLabels: function(amount) { + var units = amount % 10; + var tens = Math.floor((amount % 100) / 10); + return (amount == 1 ? 1 : (units >= 2 && units <= 4 && tens != 1 ? 2 : 0)); + }, + digits: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], + timeSeparator: ':', isRTL: false}; + $.countdown.setDefaults($.countdown.regional['pl']); +})(jQuery); diff --git a/src/core/static/js/jquery.countdown.css b/src/core/static/js/jquery.countdown.css new file mode 100644 index 0000000..f47784b --- /dev/null +++ b/src/core/static/js/jquery.countdown.css @@ -0,0 +1,48 @@ +/* jQuery Countdown styles 1.6.1. */ +.hasCountdown { +} +.countdown_rtl { + direction: rtl; +} +.countdown_holding span { + color: #888; +} +.countdown_row { + clear: both; + width: 100%; + padding: 0px 2px; + text-align: center; +} +.countdown_show1 .countdown_section { + width: 98%; +} +.countdown_show2 .countdown_section { + width: 48%; +} +.countdown_show3 .countdown_section { + width: 32.5%; +} +.countdown_show4 .countdown_section { + width: 24.5%; +} +.countdown_show5 .countdown_section { + width: 19.5%; +} +.countdown_show6 .countdown_section { + width: 16.25%; +} +.countdown_show7 .countdown_section { + width: 14%; +} +.countdown_section { + display: block; + float: left; + text-align: center; +} +.countdown_amount { + font-size: 360%; +} +.countdown_descr { + display: block; + width: 100%; +} diff --git a/src/core/static/js/jquery.countdown.min.js b/src/core/static/js/jquery.countdown.min.js new file mode 100644 index 0000000..ebd1314 --- /dev/null +++ b/src/core/static/js/jquery.countdown.min.js @@ -0,0 +1,6 @@ +/* http://keith-wood.name/countdown.html + Countdown for jQuery v1.6.1. + Written by Keith Wood (kbwood{at}iinet.com.au) January 2008. + Available under the MIT (https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt) license. + Please attribute the author if you use it. */ +(function($){function Countdown(){this.regional=[];this.regional['']={labels:['Years','Months','Weeks','Days','Hours','Minutes','Seconds'],labels1:['Year','Month','Week','Day','Hour','Minute','Second'],compactLabels:['y','m','w','d'],whichLabels:null,digits:['0','1','2','3','4','5','6','7','8','9'],timeSeparator:':',isRTL:false};this._defaults={until:null,since:null,timezone:null,serverSync:null,format:'dHMS',layout:'',compact:false,significant:0,description:'',expiryUrl:'',expiryText:'',alwaysExpire:false,onExpiry:null,onTick:null,tickInterval:1};$.extend(this._defaults,this.regional['']);this._serverSyncs=[];function timerCallBack(a){var b=(a<1e12?(b=performance.now?(performance.now()+performance.timing.navigationStart):Date.now()):a||new Date().getTime());if(b-d>=1000){x._updateTargets();d=b}c(timerCallBack)}var c=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||null;var d=0;if(!c||$.noRequestAnimationFrame){$.noRequestAnimationFrame=null;setInterval(function(){x._updateTargets()},980)}else{d=window.animationStartTime||window.webkitAnimationStartTime||window.mozAnimationStartTime||window.oAnimationStartTime||window.msAnimationStartTime||new Date().getTime();c(timerCallBack)}}var Y=0;var O=1;var W=2;var D=3;var H=4;var M=5;var S=6;$.extend(Countdown.prototype,{markerClassName:'hasCountdown',propertyName:'countdown',_rtlClass:'countdown_rtl',_sectionClass:'countdown_section',_amountClass:'countdown_amount',_rowClass:'countdown_row',_holdingClass:'countdown_holding',_showClass:'countdown_show',_descrClass:'countdown_descr',_timerTargets:[],setDefaults:function(a){this._resetExtraLabels(this._defaults,a);$.extend(this._defaults,a||{})},UTCDate:function(a,b,c,e,f,g,h,i){if(typeof b=='object'&&b.constructor==Date){i=b.getMilliseconds();h=b.getSeconds();g=b.getMinutes();f=b.getHours();e=b.getDate();c=b.getMonth();b=b.getFullYear()}var d=new Date();d.setUTCFullYear(b);d.setUTCDate(1);d.setUTCMonth(c||0);d.setUTCDate(e||1);d.setUTCHours(f||0);d.setUTCMinutes((g||0)-(Math.abs(a)<30?a*60:a));d.setUTCSeconds(h||0);d.setUTCMilliseconds(i||0);return d},periodsToSeconds:function(a){return a[0]*31557600+a[1]*2629800+a[2]*604800+a[3]*86400+a[4]*3600+a[5]*60+a[6]},_attachPlugin:function(a,b){a=$(a);if(a.hasClass(this.markerClassName)){return}var c={options:$.extend({},this._defaults),_periods:[0,0,0,0,0,0,0]};a.addClass(this.markerClassName).data(this.propertyName,c);this._optionPlugin(a,b)},_addTarget:function(a){if(!this._hasTarget(a)){this._timerTargets.push(a)}},_hasTarget:function(a){return($.inArray(a,this._timerTargets)>-1)},_removeTarget:function(b){this._timerTargets=$.map(this._timerTargets,function(a){return(a==b?null:a)})},_updateTargets:function(){for(var i=this._timerTargets.length-1;i>=0;i--){this._updateCountdown(this._timerTargets[i])}},_optionPlugin:function(a,b,c){a=$(a);var d=a.data(this.propertyName);if(!b||(typeof b=='string'&&c==null)){var e=b;b=(d||{}).options;return(b&&e?b[e]:b)}if(!a.hasClass(this.markerClassName)){return}b=b||{};if(typeof b=='string'){var e=b;b={};b[e]=c}this._resetExtraLabels(d.options,b);$.extend(d.options,b);this._adjustSettings(a,d);var f=new Date();if((d._since&&d._sincef)){this._addTarget(a[0])}this._updateCountdown(a,d)},_updateCountdown:function(a,b){var c=$(a);b=b||c.data(this.propertyName);if(!b){return}c.html(this._generateHTML(b)).toggleClass(this._rtlClass,b.options.isRTL);if($.isFunction(b.options.onTick)){var d=b._hold!='lap'?b._periods:this._calculatePeriods(b,b._show,b.options.significant,new Date());if(b.options.tickInterval==1||this.periodsToSeconds(d)%b.options.tickInterval==0){b.options.onTick.apply(a,[d])}}var e=b._hold!='pause'&&(b._since?b._now.getTime()=b._until.getTime());if(e&&!b._expiring){b._expiring=true;if(this._hasTarget(a)||b.options.alwaysExpire){this._removeTarget(a);if($.isFunction(b.options.onExpiry)){b.options.onExpiry.apply(a,[])}if(b.options.expiryText){var f=b.options.layout;b.options.layout=b.options.expiryText;this._updateCountdown(a,b);b.options.layout=f}if(b.options.expiryUrl){window.location=b.options.expiryUrl}}b._expiring=false}else if(b._hold=='pause'){this._removeTarget(a)}c.data(this.propertyName,b)},_resetExtraLabels:function(a,b){var c=false;for(var n in b){if(n!='whichLabels'&&n.match(/[Ll]abels/)){c=true;break}}if(c){for(var n in a){if(n.match(/[Ll]abels[02-9]/)){a[n]=null}}}},_adjustSettings:function(a,b){var c;var d=0;var e=null;for(var i=0;i0);h[i]=(c._show[i]=='?'&&!e?null:c._show[i]);f+=(h[i]?1:0);g-=(c._periods[i]>0?1:0)}var j=[false,false,false,false,false,false,false];for(var i=S;i>=Y;i--){if(c._show[i]){if(c._periods[i]){j[i]=true}else{j[i]=g>0;g--}}}var k=(c.options.compact?c.options.compactLabels:c.options.labels);var l=c.options.whichLabels||this._normalLabels;var m=function(a){var b=c.options['compactLabels'+l(c._periods[a])];return(h[a]?d._translateDigits(c,c._periods[a])+(b?b[a]:k[a])+' ':'')};var n=function(a){var b=c.options['labels'+l(c._periods[a])];return((!c.options.significant&&h[a])||(c.options.significant&&j[a])?''+''+d._translateDigits(c,c._periods[a])+'
    '+(b?b[a]:k[a])+'
    ':'')};return(c.options.layout?this._buildLayout(c,h,c.options.layout,c.options.compact,c.options.significant,j):((c.options.compact?''+m(Y)+m(O)+m(W)+m(D)+(h[H]?this._minDigits(c,c._periods[H],2):'')+(h[M]?(h[H]?c.options.timeSeparator:'')+this._minDigits(c,c._periods[M],2):'')+(h[S]?(h[H]||h[M]?c.options.timeSeparator:'')+this._minDigits(c,c._periods[S],2):''):''+n(Y)+n(O)+n(W)+n(D)+n(H)+n(M)+n(S))+''+(c.options.description?''+c.options.description+'':'')))},_buildLayout:function(c,d,e,f,g,h){var j=c.options[f?'compactLabels':'labels'];var k=c.options.whichLabels||this._normalLabels;var l=function(a){return(c.options[(f?'compactLabels':'labels')+k(c._periods[a])]||j)[a]};var m=function(a,b){return c.options.digits[Math.floor(a/b)%10]};var o={desc:c.options.description,sep:c.options.timeSeparator,yl:l(Y),yn:this._minDigits(c,c._periods[Y],1),ynn:this._minDigits(c,c._periods[Y],2),ynnn:this._minDigits(c,c._periods[Y],3),y1:m(c._periods[Y],1),y10:m(c._periods[Y],10),y100:m(c._periods[Y],100),y1000:m(c._periods[Y],1000),ol:l(O),on:this._minDigits(c,c._periods[O],1),onn:this._minDigits(c,c._periods[O],2),onnn:this._minDigits(c,c._periods[O],3),o1:m(c._periods[O],1),o10:m(c._periods[O],10),o100:m(c._periods[O],100),o1000:m(c._periods[O],1000),wl:l(W),wn:this._minDigits(c,c._periods[W],1),wnn:this._minDigits(c,c._periods[W],2),wnnn:this._minDigits(c,c._periods[W],3),w1:m(c._periods[W],1),w10:m(c._periods[W],10),w100:m(c._periods[W],100),w1000:m(c._periods[W],1000),dl:l(D),dn:this._minDigits(c,c._periods[D],1),dnn:this._minDigits(c,c._periods[D],2),dnnn:this._minDigits(c,c._periods[D],3),d1:m(c._periods[D],1),d10:m(c._periods[D],10),d100:m(c._periods[D],100),d1000:m(c._periods[D],1000),hl:l(H),hn:this._minDigits(c,c._periods[H],1),hnn:this._minDigits(c,c._periods[H],2),hnnn:this._minDigits(c,c._periods[H],3),h1:m(c._periods[H],1),h10:m(c._periods[H],10),h100:m(c._periods[H],100),h1000:m(c._periods[H],1000),ml:l(M),mn:this._minDigits(c,c._periods[M],1),mnn:this._minDigits(c,c._periods[M],2),mnnn:this._minDigits(c,c._periods[M],3),m1:m(c._periods[M],1),m10:m(c._periods[M],10),m100:m(c._periods[M],100),m1000:m(c._periods[M],1000),sl:l(S),sn:this._minDigits(c,c._periods[S],1),snn:this._minDigits(c,c._periods[S],2),snnn:this._minDigits(c,c._periods[S],3),s1:m(c._periods[S],1),s10:m(c._periods[S],10),s100:m(c._periods[S],100),s1000:m(c._periods[S],1000)};var p=e;for(var i=Y;i<=S;i++){var q='yowdhms'.charAt(i);var r=new RegExp('\\{'+q+'<\\}(.*)\\{'+q+'>\\}','g');p=p.replace(r,((!g&&d[i])||(g&&h[i])?'$1':''))}$.each(o,function(n,v){var a=new RegExp('\\{'+n+'\\}','g');p=p.replace(a,v)});return p},_minDigits:function(a,b,c){b=''+b;if(b.length>=c){return this._translateDigits(a,b)}b='0000000000'+b;return this._translateDigits(a,b.substr(b.length-c))},_translateDigits:function(b,c){return(''+c).replace(/[0-9]/g,function(a){return b.options.digits[a]})},_determineShow:function(a){var b=a.options.format;var c=[];c[Y]=(b.match('y')?'?':(b.match('Y')?'!':null));c[O]=(b.match('o')?'?':(b.match('O')?'!':null));c[W]=(b.match('w')?'?':(b.match('W')?'!':null));c[D]=(b.match('d')?'?':(b.match('D')?'!':null));c[H]=(b.match('h')?'?':(b.match('H')?'!':null));c[M]=(b.match('m')?'?':(b.match('M')?'!':null));c[S]=(b.match('s')?'?':(b.match('S')?'!':null));return c},_calculatePeriods:function(c,d,e,f){c._now=f;c._now.setMilliseconds(0);var g=new Date(c._now.getTime());if(c._since){if(f.getTime()c._until.getTime()){c._now=f=g}}var h=[0,0,0,0,0,0,0];if(d[Y]||d[O]){var i=x._getDaysInMonth(f.getFullYear(),f.getMonth());var j=x._getDaysInMonth(g.getFullYear(),g.getMonth());var k=(g.getDate()==f.getDate()||(g.getDate()>=Math.min(i,j)&&f.getDate()>=Math.min(i,j)));var l=function(a){return(a.getHours()*60+a.getMinutes())*60+a.getSeconds()};var m=Math.max(0,(g.getFullYear()-f.getFullYear())*12+g.getMonth()-f.getMonth()+((g.getDate()o){f.setDate(o)}f.setFullYear(f.getFullYear()+h[Y]);f.setMonth(f.getMonth()+h[O]);if(n){f.setDate(o)}}var p=Math.floor((g.getTime()-f.getTime())/1000);var q=function(a,b){h[a]=(d[a]?Math.floor(p/b):0);p-=h[a]*b};q(W,604800);q(D,86400);q(H,3600);q(M,60);q(S,1);if(p>0&&!c._since){var r=[1,12,4.3482,7,24,60,60];var s=S;var t=1;for(var u=S;u>=Y;u--){if(d[u]){if(h[s]>=t){h[s]=0;p=1}if(p>0){h[u]++;p=0;s=u;t=1}}t*=r[u]}}if(e){for(var u=Y;u<=S;u++){if(e&&h[u]){e--}else if(!e){h[u]=0}}}return h}});var w=['getTimes'];function isNotChained(a,b){if(a=='option'&&(b.length==0||(b.length==1&&typeof b[0]=='string'))){return true}return $.inArray(a,w)>-1}$.fn.countdown=function(a){var b=Array.prototype.slice.call(arguments,1);if(isNotChained(a,b)){return x['_'+a+'Plugin'].apply(x,[this[0]].concat(b))}return this.each(function(){if(typeof a=='string'){if(!x['_'+a+'Plugin']){throw'Unknown command: '+a;}x['_'+a+'Plugin'].apply(x,[this].concat(b))}else{x._attachPlugin(this,a||{})}})};var x=$.countdown=new Countdown()})(jQuery); \ No newline at end of file diff --git a/src/core/templates/404.html b/src/core/templates/404.html new file mode 100644 index 0000000..1189e68 --- /dev/null +++ b/src/core/templates/404.html @@ -0,0 +1,8 @@ +{% extends "edition2/base.html" %} + +{% block "body" %} +

    Nie znaleziono strony

    + +

    Nie ma tu żadnej strony. Przejdź do strony głównej.

    + +{% endblock %} diff --git a/src/core/templates/500.html b/src/core/templates/500.html new file mode 100644 index 0000000..5ce19fc --- /dev/null +++ b/src/core/templates/500.html @@ -0,0 +1,8 @@ +{% extends "edition2/base.html" %} + +{% block "body" %} +

    Błąd

    + +

    Wystąpił błąd serwera. Przepraszamy!

    + +{% endblock %} diff --git a/src/core/templates/base.html b/src/core/templates/base.html new file mode 100644 index 0000000..132e4f3 --- /dev/null +++ b/src/core/templates/base.html @@ -0,0 +1,38 @@ + + + + Turniej Elektrybałtów{% block "extratitle" %}{% endblock %} + + + + + + + + +
    + + + +
    +{% block "body" %}{% endblock %} +
    + + + +{% load piwik_tags %} +{% tracking_code %} + + + + diff --git a/src/core/urls.py b/src/core/urls.py new file mode 100644 index 0000000..eafb8c9 --- /dev/null +++ b/src/core/urls.py @@ -0,0 +1,8 @@ +from django.conf.urls import include, url + + +urlpatterns = [ + url(r'^2011/', include('edition1.urls')), + url(r'^poezja/', include('poetry.urls')), + url(r'', include('edition2.urls')), +] diff --git a/src/core/wsgi.py b/src/core/wsgi.py new file mode 100644 index 0000000..b580220 --- /dev/null +++ b/src/core/wsgi.py @@ -0,0 +1,9 @@ +import os + + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "core.settings") + +# This application object is used by the development server +# as well as any WSGI server configured to use this file. +from django.core.wsgi import get_wsgi_application +application = get_wsgi_application() diff --git a/src/edition1/__init__.py b/src/edition1/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/edition1/static/edition1/bg.png b/src/edition1/static/edition1/bg.png new file mode 100644 index 0000000..be7d63a Binary files /dev/null and b/src/edition1/static/edition1/bg.png differ diff --git a/src/edition1/static/edition1/style.css b/src/edition1/static/edition1/style.css new file mode 100644 index 0000000..0394bce --- /dev/null +++ b/src/edition1/static/edition1/style.css @@ -0,0 +1,167 @@ +html { + margin: 0; +} + +body { + margin: 0; + padding: 0; + + font-size: .75em; + font-family: Verdana,Arial,Helvetica,sans-serif; +} + +#body-wrapper { + padding: 1em; + color: #2F4110; + background: url("/static/edition1/bg.png") repeat-x scroll 0 0 #FFFFFF; +} +#body { + max-width: 900px; + margin:auto; +} +#new-edition { + background: #191919; + color: #989898; + text-align: center; + padding: .8em 0; +} +#new-edition a { + color: white; +} + + + +#content { + width: 420px; + margin-top: 2em; +} + + + +h1 { + font: bold 2.2em Arial,sans-serif; + padding-top: .7em; + margin-bottom: .2em; +} + + +h2 { + font-size: 1.1em; + margin:0; +} + +a { + color: #295158; + text-decoration: none; +} +a:hover { + border-bottom: 1px dotted; +} + + +.plain li { + list-style: none; +} + +li { + margin: 1em; +} + +#termin-wrap { + margin-top: 3em; +} + + +.clr { + clear: both; +} + +#footer { + border-top: 1px solid #ddd; + margin-top: 7em; + clear: both; + +} +#footer img { + margin: 30px 13px; + vertical-align: middle; +} +#footer a:hover { + border: none; +} + + +blockquote { + font-size: .9em; + font-style: italic; + margin-left: 350px; + margin-right: 50px; + margin-bottom: 4em; +} +blockquote p { + margin: .5em 0 0 0; +} + +.more { + text-align: right; +} + +.uwaga { + border: 1px solid #ddd; + padding: 1em; + background-color: #ff8; +} + +.social { + margin-top: 10px; + margin-bottom: 10px; +} + + +.tworz { + font-size: 1.5em; + padding: .8em; + background: #555; + color: white; + margin: 1em auto; + display: block; + width: 10em; + text-align: center; + border: 1px solid #000; + border-radius: 1em; +} +.tworz:hover { + border: 1px solid #000; + background: #666; +} + +.last { + list-style: none; + padding: 0; +} +.last li { + margin-left: 0; +} + +.poet-list { + padding: 0; + margin: 1em 0; +} +.poet-list li { + float: left; + width: 30%; + list-style: none; + padding: .8em 0; + border: 1px solid #888; + background: #eee; + border-radius: 1em; + text-align: center; +} +.poet-list li:before { + content: "» "; +} + +.poet-description { + max-width: 60em; +} + diff --git a/src/edition1/templates/edition1/base.html b/src/edition1/templates/edition1/base.html new file mode 100644 index 0000000..b851855 --- /dev/null +++ b/src/edition1/templates/edition1/base.html @@ -0,0 +1,39 @@ + + + + Turniej Elektrybałtów{% block "extratitle" %}{% endblock %} + + + + + + + + +
    + + + +
    +
    +{% block "body" %}{% endblock %} +
    +
    + + +{% load piwik_tags %} +{% tracking_code %} + + + + diff --git a/src/edition1/templates/edition1/home.html b/src/edition1/templates/edition1/home.html new file mode 100644 index 0000000..b2159ae --- /dev/null +++ b/src/edition1/templates/edition1/home.html @@ -0,0 +1,107 @@ +{% extends "edition1/base.html" %} + +{% block "body" %} + +
    +logo Turnieju Elektrybałtów: frontalny widok maszynki do mielenia mięsa +

    Ostatnie wiersze:

    + + +
    + +
    +

    Turniej Elektrybałtów

    +

    Konkurs automatycznej poezji

    + + + + +
    +

    Konkurs został rozstrzygnięty! Zakończenie odbyło się podczas Dnia Domeny Publicznej 2012.

    + +

    Zwycięzcą został Centonista. Gratulujemy!

    + +

    Dodatkowo, Ała! otrzymał wyróżnienie.

    +
    + +

    Znacie Leśmianatora? +To niewielki skrypt miksujący na życzenie wiersze z +Wolnych Lektur. +Powstał jako żart, a niechcący + +„odciął się od dosłownie rozumianego dziedzictwa dadaizmu i surrealizmu”. +Idziemy dalej – ogłaszamy otwarty konkurs na najlepszego automatycznego poetę!

    + +

    Konkurs wystartował 12 września 2011 roku – z okazji 90 rocznicy urodzin +Stanisława Lema. Termin nadsyłania prac upłynął +10 listopada 2011 roku. +Prezentujemy nadesłane prace w akcji. +Kliknij przycisk, a jeden +z programów-uczestników napisze dla Ciebie wiersz:

    + +Twórz-że się! + +

    Zobacz wszystkie programy. Ich kod źródłowy +jest dostępny na wolnej licencji +– nic więc nie stoi na przeszkodzie, by rozwijać je dalej.

    + +

    Spośród wygenerowanych przz nas propozycji autorzy programów wybrali po trzy utwory. +Zobacz wiersze, które wystartowały w konkursie.

    + +

    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ć +program, który będzie w najciekawszy i najbardziej twórczy sposób miksował +dostępną w Wolnych Lekturach literaturę. W tej konkurencji liczy się przede +wszystkim wyobraźnia, pomysł i chęć do twórczej zabawy.

    + +

    Więcej informacji:

    + +
      +
    • Przebieg konkursu – czyli jakie będą kolejne etapy + i co jest nagrodą?
    • + +
    • Technikalia – czyli co i jak trzeba zrobić, + żeby wziąć udział.
    • + +
    • Regulamin – czyli trochę koniecznych formalności.
    • +
    + +

    Wszelkiego rodzaju pytania i wątpliwości proszę kierować na adres +radoslaw.czajka@nowoczesnapolska.org.pl

    + +
    +
    + + + + + +{% endblock %} diff --git a/src/edition1/templates/edition1/more.html b/src/edition1/templates/edition1/more.html new file mode 100644 index 0000000..1a2ca05 --- /dev/null +++ b/src/edition1/templates/edition1/more.html @@ -0,0 +1,65 @@ +{% extends "edition1/base.html" %} + +{% block "body" %} + +

    + +Turniej Elektrybałtów

    +

    +Konkurs automatycznej poezji

    + +
    +

    Gdy wskaźniki amplifikacyjne pokazały, że moc liryczna dochodzi + do maksimum, Trurl nieznacznie tylko drżącą ręką przerzucił wielki + wyłącznik i niemal natychmiast głosem lekko ochrypłym, lecz emanującym + dziwnie sugestywnym czarem, maszyna rzekła:

    + +

    – Chrzęskrzyboczek pacionkociewiczarokrzysztofoniczmy.

    +

    – Czy to już wszystko? – spytał po dłuższej chwili niezwykle uprzejmy + Klapaucjusz.

    +

    (Stanisław Lem, „Cyberiada”, „Wyprawa pierwsza A, czyli Elektrybałt Trurla”)

    +
    + + + +

    Konkurs startuje 12 września 2011 roku – z okazji 90 rocznicy urodzin +Stanisława Lema. Termin nadsyłania prac upływa z końcem października 10 listopada 2011 roku. +Powinno być dość czasu na dopracowanie swoich pomysłów.

    + +

    Konkurs będzie wyglądał następująco:

    + +
      +
    • Do końca października 10 listopada czekamy na zgłoszenia w postaci programów. + Warunkiem dopuszczalności jest udostępnienie kodu źródłowego na wolnej + licencji GNU AGPL + (jak to zrobić?). + Szerzej o tym, czym powinno być złoszenie – + w dziale Technikalia.
    • + +
    • Użycie wolnej licencji nie oznacza, że kod źródłowy musi być + od razu publicznie dostępny. Programy zostaną przez nas + upublicznione – ale dopiero po upłynięciu terminu nadsyłania zgłoszeń. + Uczestnik może oczywiście samodzielnie upublicznić swoje zgłoszenie + wcześniej – odradzamy to jednak ze względu na komplikacje w przypadku + plagiatu.
    • + +
    • Po uruchomieniu nadesłanych przez uczestników programów dla każdego + uczestnika wygenerujemy 20 wierszy, które odeślemy autorowi + programu. Wybierze on 3 z nich, które następnie zostaną + poddane ocenie jury. W składzie jury znajdą się zarówno osoby związane + z programowaniem, jak i przedstawiciele świata kultury.
    • + +
    • Główną nagrodą jest 16-tomowa kolekcja książek Stanisława Lema. + W ramach dodatkowej nagrody podczas zakończenia konkursu + odbędzie się próba odczytania zwycięskich wierszy na głos.
    • + +
    + +

    Programy biorące udział w konkursie zostaną też uruchomione +na stronie Turnieju – +internauci będą więc mieli możliwość samodzielnego „wyklikania” sobie własnego +wiersza przy użyciu każdego z nich.

    + +

    Powrót do strony głównej

    + +{% endblock %} diff --git a/src/edition1/templates/edition1/rules.html b/src/edition1/templates/edition1/rules.html new file mode 100644 index 0000000..00187cc --- /dev/null +++ b/src/edition1/templates/edition1/rules.html @@ -0,0 +1,74 @@ +{% extends "edition1/base.html" %} + +{% block "body" %} + + +

    + +Turniej Elektrybałtów

    +

    Konkurs automatycznej poezji

    + +
    +

    Ustaliwszy, w czym rzecz, zwierzchność żeglugi kosmicznej zwróciła się + oficjalnie do Trurla z żądaniem natychmiastowej likwidacji należącego doń + urządzenia, które zakłócało liryką spokój publiczny i zagrażało zdrowiu + pasażerów.

    + +

    (Stanisław Lem, „Cyberiada”, „Wyprawa pierwsza A, czyli Elektrybałt Trurla”)

    +
    + + + +

    Regulamin konkursu

    + + + + +
      +
    • Organizatorem konkursu jest fundacja Nowoczesna Polska.
    • + +
    • Przedmiotem konkursu jest program komputerowy tworzący remiksy literackie + na podstawie utworów znajdujących się w bilbiotece internetowej Wolne Lektury. + Program biorący udział w konkursie musi być udostępniony na wolnej + licencji GNU AGPL + (jak to zrobić?).
    • + +
    • Konkurs trwa od 12 września do 31 października 10 listopada 2011 roku. + Konkurs ma charakter otwarty. Aby wziąć w nim udział udział, + należy wysłać gotowy program na adres + radoslaw.czajka@nowoczesnapolska.org.pl + + z klauzulą: + Zgłaszam się do konkursu „Turniej Elektrybałtów” i oświadczam, że + znam i akceptuję jego regulamin.
    • + +
    • Nagrodą główną jest 16-tomowa kolekcja dzieł Stanisława Lema. Nie ma + możliwości zamiany nagrody na jej równowartość pieniężną.
    • + +
    • Organizator może odwołać konkurs w każdym czasie, bez podawania + przyczyny. W takim przypadku uczestnikom konkursu nie przysługuje żadna + rekompensata. Uczestnicy zgłaszając swój udział w konkursie automatycznie + wyrażają zgodę na publikację ich twórczości w internecie oraz wyrażają + zgodę na wykorzystanie wizerunku w materiałach promocyjnych konkursu + oraz materiałach promocyjnych Fundacji Nowoczesna Polska.
    • + +
    • Organizator zastrzega sobie prawo do odrzucenia zgłoszenia programu, + którego działanie może zagrażać stabilności, responsywności albo bezpieczeństwu + serwera, a także takich, których poprawne uruchomienie okaże się niemożliwe + lub poważnie utrudnione.
    • + +
    • Organizator konkursu nie ponosi odpowiedzialności za wszelkie + roszczenia osób trzecich wynikające z tytułu wykorzystania materiałów + zgłoszonych przez uczestników konkursu jako własnych. Prace naruszające + prawa autorskie będą dyskwalifikowane.
    • + +
    • Organizator zatrzega sobie prawo wprowadzenia zmian w regulaminie + konkursu.
    • +
    + + + + +

    Powrót do strony głównej

    + +{% endblock %} diff --git a/src/edition1/templates/edition1/technical.html b/src/edition1/templates/edition1/technical.html new file mode 100644 index 0000000..ada8028 --- /dev/null +++ b/src/edition1/templates/edition1/technical.html @@ -0,0 +1,115 @@ +{% extends "edition1/base.html" %} + +{% block "body" %} + +

    + +Turniej Elektrybałtów

    +

    Konkurs automatycznej poezji

    + +
    +

    Gdy atoli, z lekka kulejąc, zbliżył się do maszyny, ta, + na widok obcęgów w jego dłoni i błysków desperacji w oku, buchnęła taką + namiętną liryką błagając o łaskę, że rozszlochany Trurl cisnął narzędzia + i wrócił do siebie, brnąc po kolana w nowych utworach elektroducha, które + sięgały mu do pół piersi, zaścielając szemrzącym oceanem papieru całą halę.

    + +

    (Stanisław Lem, „Cyberiada”, „Wyprawa pierwsza A, czyli Elektrybałt Trurla”)

    +
    + + + +

    Wymogi wobec zgłaszanych programów

    + +
      +
    • Nie nakładamy ograniczeń na wybór języka programowania. Program + powinien dać się jednak uruchomić w środowisku GNU/Linux przy użyciu + wolnodostępnych narzędzi.
    • + +
    • Warunkiem dopuszczalności jest udostępnienie kodu źródłowego na wolnej + licencji GNU AGPL + + (jak to zrobić?) + Programy zostaną upublicznione – ale dopiero po upłynięciu terminu + nadsyłania zgłoszeń. Warunek ten oznacza w szczególności, że zgłoszenie + musi zawierać kod źródłowy. Nie wchodzą w grę żadne skompilowane, pośrednie, + zaciemnione wersje – kod powinien zostać udostępniony w takiej postaci, + nad jaką normalnie pracuje programista.
    • + +
    • Program przy tworzeniu wierszy musi w istotny sposób korzystać + z zasobów Wolnych Lektur. Elementy wynikowych tekstów nie mogą być + zaszyte w treści samego programu. Program nie może też korzystać + podczas pracy z innych źródeł informacji – musi być jasne, że program + naprawdę miksuje dostarczoną mu literaturę, a nie odtwarza nagraną + uprzednio taśmę. Nie jest wymagane korzystanie z wszystkich utworów – + program może miksować np. tylko poezję romantyczną albo tylko fragmenty + oznaczone wybranymi motywami literackimi.
    • + +
    • Generowanie wiersza nie powinno trwać więcej niż kilka sekund. + W ramach procesu instalacji programu dopuszczalne (i wskazane!) jest + natomiast uprzednie zgromadzenie niezbędnych informacji wynikających + z analizy tekstów źródłowych. Najlepiej więc dostarczyć dwa programy + (albo jeden z różnymi opcjami uruchomienia) – jeden pobierający utwory, + analizujący je i zapisujący efekty tej analizy, a drugi generujący + wiersze na podstawie zgromadzonej uprzednio informacji. Sądzimy, że + ok. 10MiB powinno wystarczyć każdemu + [sic!], + ale w razie potrzeby będziemy się starali być elastyczni.
    • + +
    • Program powinien wypisać wiersz na standardowe wyjście w postaci + czystego tekstu, najlepiej używając kodowania UTF-8 (czyli tego samego, + które jest używane w plikach źródłowych).
    • + +
    • Maksymalna długość wiersza wynosi 1000 znaków – dalsze znaki zostaną + odcięte. Poza tym ograniczeniem długość i forma wiersza pozostaje w gestii + autora i jego programu.
    • + +
    • Odrzucone zostana programy, które będą usiłowały w jakikolwiek + sposób zagrozić stabilności lub bezpieczeństwu serwera.
    • +
    + + +

    W jaki sposób pobierać utwory?

    + +

    Źródłowe utwory można pobierać na kilka sposobów:

    + + + +

    Wszystkie pliki źródłowe są zapisane przy użyciu kodowania UTF-8.

    + +

    Przykładowy program (napisany w Pythonie), obrazujący wykorzystanie +każdego z tych sposobów, można znaleźć +w naszym repozytorium na GitHubie. +Jest to po prostu Leśmianator – w wersji przygotowanej zgodnie z warunkami +turnieju.

    + + +

    Gdzie wysyłać zgłoszenia?

    + +

    Zgłoszenia, a także wszelkiego rodzaju pytania i wątpliwości prosimy kierować na adres +radoslaw.czajka@nowoczesnapolska.org.pl. +Prosimy też o dołączenie do każdego zgłoszenia klauzuli o treści: +Zgłaszam się do konkursu „Turniej Elektrybałtów” i oświadczam, że +znam i akceptuję jego regulamin. + +

    + + + + +

    Powrót do strony głównej

    + + +{% endblock %} + diff --git a/src/edition1/urls.py b/src/edition1/urls.py new file mode 100644 index 0000000..76dadd5 --- /dev/null +++ b/src/edition1/urls.py @@ -0,0 +1,14 @@ +from django.conf.urls import url +from django.views.generic import TemplateView +from . import views + + +urlpatterns = [ + url(r'^$', views.home, name='e1_main_page'), + url(r'^regulamin/$', TemplateView.as_view(template_name='edition1/rules.html'), + name='e1_rules_page'), + url(r'^wiecej/$', TemplateView.as_view(template_name='edition1/more.html'), + name='e1_more_page'), + url(r'^technikalia/$', TemplateView.as_view(template_name='edition1/technical.html'), + name='e1_technical_page'), +] diff --git a/src/edition1/views.py b/src/edition1/views.py new file mode 100644 index 0000000..6d35feb --- /dev/null +++ b/src/edition1/views.py @@ -0,0 +1,6 @@ +from django.shortcuts import render +from poetry.models import Poem + +def home(request): + last = Poem.objects.all().order_by('-created_at')[:10] + return render(request, "edition1/home.html", locals()) diff --git a/src/edition2/__init__.py b/src/edition2/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/edition2/static/edition2/style.css b/src/edition2/static/edition2/style.css new file mode 100644 index 0000000..4bee9cf --- /dev/null +++ b/src/edition2/static/edition2/style.css @@ -0,0 +1,112 @@ +html { + margin: 0; +} + +body { + margin: 0; + padding: 0; + + background: #191919; + color: #989898; + + font-family: Georgia,serif; +} + +#body-wrapper { + color: black; + background: #F7F7F7; + padding-bottom: 3em; +} +#body { + max-width: 900px; + margin:auto; + padding: 1em; +} + + +#content { + width: 480px; +} + + + +h1 { + font: bold 2.2em Georgia,serif; + margin-bottom: .2em; +} + + +h2 { + font-size: 1.1em; + margin:0; +} + +a { + color: #0D777E; + text-decoration: none; +} +a:hover { + border-bottom: 1px dotted; +} + + +.plain li { + list-style: none; +} + +li { + margin: 1em; +} + +#termin-wrap { + margin-top: 3em; +} + + +.clr { + clear: both; +} + +footer { + background: #191919; + color: #989898; + margin: 0 auto 0 auto; + padding: 1em; + clear: both; + text-align: center; +} +footer img { + margin: 0 20px; + vertical-align: middle; +} +footer a:hover { + border: none; +} + + +blockquote { + font-size: .9em; + font-style: italic; + margin-left: 350px; + margin-right: 50px; + margin-bottom: 4em; +} +blockquote p { + margin: .5em 0 0 0; +} + +.more { + text-align: right; +} + +.uwaga { + border: 1px solid #ddd; + padding: 0 1em; + margin: 1em 0; + background: white; + box-shadow: 2px 2px 2px #DDDDDD; +} + +.social { + margin: .5em 0 2em 0; +} \ No newline at end of file diff --git a/src/edition2/templates/edition2/base.html b/src/edition2/templates/edition2/base.html new file mode 100644 index 0000000..fbb7a81 --- /dev/null +++ b/src/edition2/templates/edition2/base.html @@ -0,0 +1,32 @@ + + + + Turniej Wolnych Lektur{% block "extratitle" %}{% endblock %} + + + + + + + + +
    +
    +{% block "body" %}{% endblock %} +
    +
    + +
    +Fundacja Nowoczesna Polska +Wolne Lektury +
    + +{% load piwik_tags %} +{% tracking_code %} + + + + diff --git a/src/edition2/templates/edition2/home.html b/src/edition2/templates/edition2/home.html new file mode 100644 index 0000000..dcac65d --- /dev/null +++ b/src/edition2/templates/edition2/home.html @@ -0,0 +1,31 @@ +{% extends "edition2/base.html" %} + +{% block "body" %} + +
    +logo Turnieju Elektrybałtów: frontalny widok maszynki do mielenia mięsa +
    + +
    +

    II Turniej Wolnych Lektur

    +

    Edycja wizualna

    + + +
    +

    Zdecydowaliśmy się nie rozstrzygać II edycji Turnieju Wolnych Lektur +ze względu na niewystarczającą liczbę i poziom zgłoszeń.

    + +

    Zobacz wyniki pierwszej edycji – Turnieju Elektrybałtów.

    +
    + +

    Wszelkie pytania i wątpliwości proszę kierować na adres +turniej@nowoczesnapolska.org.pl

    + +
    +
    + + +{% endblock %} diff --git a/src/edition2/templates/edition2/more.html b/src/edition2/templates/edition2/more.html new file mode 100644 index 0000000..85a6689 --- /dev/null +++ b/src/edition2/templates/edition2/more.html @@ -0,0 +1,43 @@ +{% extends "edition2/base.html" %} + +{% block "body" %} + +

    + + + II Turniej Wolnych Lektur

    +

    Edycja wizualna

    + + + + + +

    Konkurs startuje 4 stycznia 2013 roku. Termin nadsyłania prac upływa 15 22 lutego 2013 roku. +Powinno być dość czasu na dopracowanie swoich pomysłów.

    + +

    Przebieg konkursu:

    + +
      +
    1. Konkurs startuje 4 stycznia 2013 roku.
    2. +
    3. Termin nadsyłania prac upływa 15 22 lutego 2013 roku.
    4. +
    5. Warunkiem dopuszczenia do konkursu jest udostępnienie swojego zgłoszenia + (w przypadku zgłoszenia programu – kodu źródłowego) na + wolnej licencji. + Informacje o tym, jak to zrobić, znajdują się np. na stronach + projektu GNU + czy Creative Commons.
    6. +
    7. Zgłoszenia zostaną udostępnione publicznie na stronie konkursu po + zamknięciu etapu zgłoszeń. Autorzy nie muszą (choć oczywiście mogą) + upubliczniać ich wcześniej.
    8. +
    9. Do końca lutego jury konkursowe wybierze zwyciązcę konkursu.
    10. +
    11. Główną nagrodą jest czytnik e-booków Amazon Kindle z kompletem + książek z Wolnych Lektur w formacie MOBI.
    12. +
    + +

    Powrót do strony głównej

    + +{% endblock %} diff --git a/src/edition2/templates/edition2/rules.html b/src/edition2/templates/edition2/rules.html new file mode 100644 index 0000000..cb3a692 --- /dev/null +++ b/src/edition2/templates/edition2/rules.html @@ -0,0 +1,70 @@ +{% extends "edition2/base.html" %} + +{% block "body" %} + + +

    + + + II Turniej Wolnych Lektur

    +

    Edycja wizualna

    + + + + + +

    Regulamin konkursu

    + + +
      +
    1. Organizatorem konkursu jest fundacja Nowoczesna Polska.
    2. + +
    3. Przedmiotem konkursu jest wizualizacja oparta na Wolnych Lekturach. + Wszystkie zgłoszenia (w przypadku programów – ich kod źródłowy) biorące + udział w konkursie muszą być udostępnione na + wolnej licencji. + Wizualizacje muszą być dostępne + w otwartym formacie.
    4. + +
    5. Konkurs trwa od 4 stycznia do 15 22 lutego 2013 roku i ma charakter otwarty. + Jedna osoba może wysłać więcej niż jedno zgłoszenie. + Aby wziąć udział udział w konkursie, należy wysłać swoje zgłoszenie na adres + turniej@nowoczesnapolska.org.pl + z klauzulą: + Zgłaszam się do konkursu „II Turniej Wolnych Lektur” i oświadczam, że + znam i akceptuję jego regulamin.
    6. + +
    7. Nagrodą główną jest czytnik Amazon Kindle z kompletem książek + z Wolnych Lektur w formacie MOBI. Nie ma możliwości zamiany nagrody na jej + równowartość pieniężną.
    8. + +
    9. Organizator może odwołać konkurs w każdym czasie, bez podawania + przyczyny. W takim przypadku uczestnikom konkursu nie przysługuje żadna + rekompensata. Uczestnicy zgłaszając swój udział w konkursie automatycznie + wyrażają zgodę na wykorzystanie ich wizerunku w materiałach promocyjnych + konkursu oraz materiałach promocyjnych fundacji Nowoczesna Polska.
    10. + +
    11. Organizator zastrzega sobie prawo do odrzucenia zgłoszenia, którego + udostępnienie na stronie konkursu mogłoby zagrażać stabilności, responsywności + albo bezpieczeństwu serwera albo oprogramowania użytkownika, a także takich, + których poprawne uruchomienie okaże się niemożliwe lub poważnie utrudnione.
    12. + +
    13. Organizator konkursu nie ponosi odpowiedzialności za wszelkie + roszczenia osób trzecich wynikające z tytułu wykorzystania materiałów + zgłoszonych przez uczestników konkursu jako własnych. Prace naruszające + prawa autorskie będą dyskwalifikowane.
    14. + +
    15. Organizator zatrzega sobie prawo wprowadzenia zmian w regulaminie + konkursu.
    16. + + + + + +

      Powrót do strony głównej

      + +{% endblock %} diff --git a/src/edition2/templates/edition2/technical.html b/src/edition2/templates/edition2/technical.html new file mode 100644 index 0000000..bb55b09 --- /dev/null +++ b/src/edition2/templates/edition2/technical.html @@ -0,0 +1,61 @@ +{% extends "edition2/base.html" %} + +{% block "body" %} + + +

      + + + II Turniej Wolnych Lektur

      +

      Edycja wizualna

      + + + +

      Wymogi techniczne wobec zgłoszeń

      + +
        +
      • Format wizualizacji powinien być otwarty. Jeśli zgłoszenie zawiera + oprogramowanie, powinno dać się ono uruchomić w środowisku GNU/Linux + przy użyciu wolnodostępnych narzędzi.
      • + +
      • Warunkiem dopuszczenia do konkursu jest udostępnienie swojego zgłoszenia + (w przypadku zgłoszenia programu – jego kodu źródłowego) na + wolnej licencji. + Informacje o tym, jak to zrobić, znajdują się np. na stronach + projektu GNU + czy Creative Commons.
      • + +
      • Wizualizacja powinna dotyczyć zasobów + Wolnych Lektur. + Nie jest wymagane wykorzystanie całości tych zasobów – można pokazać np. + tylko wybrany utwór. Można też poddać dane uprzedniej obróbce. + Za przykład niech posłuży prosty teatrzyk + na podstawie pliku XML wyświetlający „Romea i Julię” w postaci animacji SVG.
      • + +
      • Odrzucone zostaną zgłoszenia, które będą usiłowały w jakikolwiek + sposób zagrozić stabilności lub bezpieczeństwu serwera albo użytkownika.
      • +
      + + +

      Gdzie wysyłać zgłoszenia?

      + +

      Zgłoszenia, a także wszelkiego rodzaju pytania i wątpliwości prosimy kierować na adres +turniej@nowoczesnapolska.org.pl. +Prosimy też o dołączenie do każdego zgłoszenia klauzuli o treści: +Zgłaszam się do konkursu „II Turniej Wolnych Lektur” i oświadczam, że + znam i akceptuję jego regulamin. + +

      + + + + +

      Powrót do strony głównej

      + + +{% endblock %} + diff --git a/src/edition2/urls.py b/src/edition2/urls.py new file mode 100755 index 0000000..0cb0f57 --- /dev/null +++ b/src/edition2/urls.py @@ -0,0 +1,13 @@ +from django.conf.urls import url +from django.views.generic import TemplateView + +urlpatterns = [ + url(r'^$', TemplateView.as_view(template_name='edition2/home.html'), + name='e2_main_page'), + url(r'^regulamin/$', TemplateView.as_view(template_name='edition2/rules.html'), + name='e2_rules_page'), + url(r'^wiecej/$', TemplateView.as_view(template_name='edition2/more.html'), + name='e2_more_page'), + url(r'^technikalia/$', TemplateView.as_view(template_name='edition2/technical.html'), + name='e2_technical_page'), +] diff --git a/src/manage.py b/src/manage.py new file mode 100755 index 0000000..06d0ce2 --- /dev/null +++ b/src/manage.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +import os +import sys + + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "core.settings") + + from django.core.management import execute_from_command_line + + execute_from_command_line(sys.argv) diff --git a/src/poetry/__init__.py b/src/poetry/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/poetry/migrations/0001_initial.py b/src/poetry/migrations/0001_initial.py new file mode 100644 index 0000000..81c630c --- /dev/null +++ b/src/poetry/migrations/0001_initial.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Poem', + fields=[ + ('id', models.AutoField(verbose_name='ID', auto_created=True, serialize=False, primary_key=True)), + ('slug', models.SlugField()), + ('title', models.CharField(null=True, max_length=255, blank=True)), + ('text', models.TextField()), + ('created_at', models.DateTimeField(db_index=True, auto_now_add=True)), + ('seen_at', models.DateTimeField(auto_now_add=True)), + ('view_count', models.IntegerField(default=1)), + ('for_contest', models.BooleanField(default=False)), + ('in_contest', models.BooleanField(default=False)), + ], + options={ + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='Poet', + fields=[ + ('id', models.AutoField(verbose_name='ID', auto_created=True, serialize=False, primary_key=True)), + ('name', models.CharField(max_length=50)), + ('path', models.CharField(max_length=255)), + ('slug', models.SlugField(unique=True)), + ('author', models.CharField(max_length=128, blank=True)), + ('url', models.CharField(max_length=255, blank=True)), + ('description', models.TextField(blank=True)), + ('first_line_title', models.BooleanField(default=False)), + ('skip_first_lines', models.IntegerField(default=0)), + ], + options={ + }, + bases=(models.Model,), + ), + migrations.AddField( + model_name='poem', + name='poet', + field=models.ForeignKey(to='poetry.Poet', on_delete=models.CASCADE), + preserve_default=True, + ), + ] diff --git a/src/poetry/migrations/__init__.py b/src/poetry/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/poetry/models.py b/src/poetry/models.py new file mode 100644 index 0000000..58b8caf --- /dev/null +++ b/src/poetry/models.py @@ -0,0 +1,85 @@ +import os +import subprocess +from django.db import models +from django.urls import reverse +from django.conf import settings +from poetry.utils import get_hash + + +class Poet(models.Model): + name = models.CharField(max_length=50) + path = models.CharField(max_length=255) + slug = models.SlugField(max_length=50, unique=True, db_index=True) + author = models.CharField(max_length=128, blank=True) + url = models.CharField(max_length=255, blank=True) + description = models.TextField(blank=True) + first_line_title = models.BooleanField(default=False) + skip_first_lines = models.IntegerField(default=0) + + def __str__(self): + return self.name + + def get_absolute_url(self): + return reverse('poetry_poet', kwargs={'slug': self.slug}) + + def write(self): + curdir = os.getcwd() + os.chdir(os.path.dirname(self.path)) + proc = subprocess.Popen(self.path, + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + os.chdir(curdir) + stdout, stderr = proc.communicate() + text = str(stdout, "utf-8", errors="ignore")[:1000] + slug = get_hash(text) + title = '' + if self.first_line_title: + title, text = text.split('\n', 1) + if self.skip_first_lines: + text = text.split('\n', self.skip_first_lines)[-1] + text = text.strip('\n') + poem = self.poem_set.create( + slug=slug, + text=text, + title=title + ) + return poem + + def make_for_contest(self): + assert not self.poem_set.filter(for_contest=True).exists() + for i in range(settings.POETRY_POEMS_FOR_CONTEST): + p = self.write() + p.for_contest = True + 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) + title = models.CharField(max_length=255, null=True, blank=True) + text = models.TextField() + poet = models.ForeignKey(Poet, on_delete=models.CASCADE) + created_at = models.DateTimeField(auto_now_add=True, editable=False, db_index=True) + seen_at = models.DateTimeField(auto_now_add=True, editable=False) + view_count = models.IntegerField(default=1) + + for_contest = models.BooleanField(default=False) + in_contest = models.BooleanField(default=False) + + def __str__(self): + oneliner = "%s, %s" % (self.poet.name, self.pretty_title()) + oneliner += " [%s…]" % (" ".join(self.text.split()[:5])) + return oneliner + + def get_absolute_url(self): + return reverse('poetry_poem', kwargs={'slug': self.slug}) + + def pretty_title(self): + return self.title or "***" + + def visit(self): + self.view_count += 1 + self.seen_at = datetime.now() + self.save() diff --git a/src/poetry/static/poetry/poem.css b/src/poetry/static/poetry/poem.css new file mode 100644 index 0000000..e2f6f01 --- /dev/null +++ b/src/poetry/static/poetry/poem.css @@ -0,0 +1,137 @@ +body { + font-size: 16px; + font: Georgia, "Times New Roman", serif; + line-height: 1.5em; + margin: 0; +} + +a { + color: blue; + text-decoration: none; +} + +a:hover { + border-bottom: 1px dotted; +} + +#book-text { + margin: 3em; + max-width: 36em; +} + +/* ================================== */ +/* = Header with logo and menu = */ +/* ================================== */ +#header { + margin: 3.4em 0 0 1.4em; +} + +img { + border: none; +} + + +#menu { + position: fixed; + left: 0em; + top: 0em; + width: 100%; + height: 1.5em; + background: #333; + color: #FFF; + opacity: 0.9; + z-index: 99; +} + +#menu a.menu-link { + display: block; + float: left; + height: 1.5em; + margin-left: 0.5em; + text-align: center; + color: #FFF; +} +#menu span { + color: #888; + font-style: italic; + font-size: .75em; + margin-right: 0.5em; +} + + +/* =================================================== */ +/* = Common elements: headings, paragraphs and lines = */ +/* =================================================== */ +h1 { + font-size: 3em; + margin: 1.5em 0; + text-align: center; + line-height: 1.5em; + font-weight: bold; +} + +h2 { + font-size: 2em; + margin: 1.5em 0 0; + font-weight: bold; + line-height: 1.5em; +} + +h3 { + font-size: 1.5em; + margin: 1.5em 0 0; + font-weight: normal; + line-height: 1.5em; +} + +h4 { + font-size: 1em; + margin: 1.5em 0 0; + line-height: 1.5em; +} + +p { + margin: 0; +} + + +#footnotes { + margin-top: 3em; + margin-left: 2.5em; + font-size: 0.875em; +} + +#footnotes p, #footnotes ul { + margin: 1.5em 0; +} + +#footnotes .permalink { + font-size: .75em; +} + +/* =================== */ +/* = Custom elements = */ +/* =================== */ +span.author { + font-size: 0.5em; + display: block; + line-height: 1.5em; + margin-bottom: 0.25em; +} + +span.author a { + color: inherit; +} + +span.author a { + color: inherit; +} + + +/* =================================== */ +/* = Hide some elements for printing = */ +/* =================================== */ + +@media print { + #menu {display: none;} +} diff --git a/src/poetry/templates/poetry/contest.html b/src/poetry/templates/poetry/contest.html new file mode 100644 index 0000000..9852c75 --- /dev/null +++ b/src/poetry/templates/poetry/contest.html @@ -0,0 +1,38 @@ +{% extends "edition1/base.html" %} + +{% block "body" %} + +

      + +Turniej Elektrybałtów: utwory wybrane do konkursu

      + + + +
      + +{% for poet in poets %} +

      {{ poet }}

      +
        + {% for poem in poet.contest_poems %} +
      • {{ poem }}
      • + {% endfor %} +
      +{% endfor %} + + +{% endblock %} diff --git a/src/poetry/templates/poetry/main.html b/src/poetry/templates/poetry/main.html new file mode 100644 index 0000000..6234003 --- /dev/null +++ b/src/poetry/templates/poetry/main.html @@ -0,0 +1,54 @@ +{% extends "edition1/base.html" %} + +{% block "body" %} + +

      + +Turniej Elektrybałtów

      + + + +

      Uczestnicy:

      + + +
      + +Twórz-że się! + +

      Utwory do konkursu zostały wybrane!

      + +

      Spośród wygenerowanych przz nas propozycji autorzy programów wybrali po trzy utwory.

      +

      Zobacz wiersze startujące w konkursie!

      +

      + + + + +

      Ostatnio opublikowane utwory:

      +
        +{% for poem in last %} +
      • {{ poem }}
      • +{% endfor %} +
      + +{% endblock %} diff --git a/src/poetry/templates/poetry/poem.html b/src/poetry/templates/poetry/poem.html new file mode 100644 index 0000000..0ac6b3c --- /dev/null +++ b/src/poetry/templates/poetry/poem.html @@ -0,0 +1,87 @@ + + + + Turniej Elektrybałtów: {{ poem }} + + + + + + + + +
      + + + + + + + +
      +

      + {{ poem.poet.name }} + {% if poem.title %}{{ poem.title }}{% else %}***{% endif %} +

      + {{ poem.text|linebreaksbr }} +
      +

      O utworze

      +

      Autor: {{ poem.poet.name }} (wszyscy autorzy). +
      Zobacz nowy wiersz tego autora, + albo nowy wiersz dowolnego autora.

      + + + +
      +

      Podziel się wierszem!

      + +
      +
      + + + +
      + albo użyj linku:
      + +
      + + + + +
      + + +{% load piwik_tags %} +{% tracking_code %} + + + + + + diff --git a/src/poetry/templates/poetry/poet.html b/src/poetry/templates/poetry/poet.html new file mode 100644 index 0000000..7947a66 --- /dev/null +++ b/src/poetry/templates/poetry/poet.html @@ -0,0 +1,58 @@ +{% extends "edition1/base.html" %} + + +{% block "extratitle" %}: {{ poet.name }}{% endblock %} + + +{% block "body" %} + +

      + +{{ poet.name }}

      + +
      + +
      +
      + + +
      + +

      Zobacz wszystkich autorów.

      + +
      + +

      Autor programu: {{ poet.author }}

      + +{{ poet.description|linebreaks }} + +

      Kod źródłowy: {{ poet.url }}

      + +Twórz-że! + +
      + +

      Utwory w konkursie (zobacz wszystkie)

      +
        +{% for poem in in_contest %} +
      • {{ poem }}
      • +{% endfor %} +
      + +

      Ostatnio opublikowane utwory:

      +
        +{% for poem in last %} +
      • {{ poem }}
      • +{% endfor %} +
      + +{% endblock %} diff --git a/src/poetry/urls.py b/src/poetry/urls.py new file mode 100644 index 0000000..eb9b4f3 --- /dev/null +++ b/src/poetry/urls.py @@ -0,0 +1,13 @@ +from django.conf.urls import url +from . import views + + +urlpatterns = [ + url(r'^wiersz/(?P[a-zA-Z0-9-]+)/$', views.poem, name='poetry_poem'), + + url(r"^$", views.main, name="poetry_main"), + url(r"^nowy/$", views.new, name="poetry_new"), + url(r"^konkurs/$", views.contest, name="poetry_contest"), + url(r"^(?P[a-zA-Z0-9-]+)/$", views.poet, name="poetry_poet"), + url(r"^(?P[a-zA-Z0-9-]+)/nowy/$", views.new, name="poetry_new"), +] diff --git a/src/poetry/utils.py b/src/poetry/utils.py new file mode 100644 index 0000000..6366f08 --- /dev/null +++ b/src/poetry/utils.py @@ -0,0 +1,10 @@ +import time + +from base64 import urlsafe_b64encode +from hashlib import sha1 + + +def get_hash(seed): + sha_digest = sha1(('%d%s' % (time.time(), str(seed)) + ).encode('utf-8', 'replace')).digest() + return urlsafe_b64encode(sha_digest).decode('latin1').replace('=', '').replace('_', '-').lower() diff --git a/src/poetry/views.py b/src/poetry/views.py new file mode 100644 index 0000000..71309d7 --- /dev/null +++ b/src/poetry/views.py @@ -0,0 +1,36 @@ +from django.shortcuts import render, get_object_or_404 +from poetry.models import Poet, Poem + + +def new(request, slug=None): + if slug is not None: + poet = get_object_or_404(Poet, slug=slug) + else: + poet = Poet.objects.order_by('?')[0] + + poem = poet.write() + return render(request, "poetry/poem.html", locals()) + + +def poem(request, slug): + poem = get_object_or_404(Poem, slug=slug) + return render(request, "poetry/poem.html", locals()) + + +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()) + + +def main(request): + 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()) + diff --git a/turniej/__init__.py b/turniej/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/turniej/localsettings.py.template b/turniej/localsettings.py.template deleted file mode 100644 index 3765080..0000000 --- a/turniej/localsettings.py.template +++ /dev/null @@ -1,27 +0,0 @@ -# This template is uploaded by `fab setup`. -# You should fill out the details in the version deployed on the server. - - -ADMINS = ( - #('Name', 'E-mail'), -) - -MANAGERS = ( - #('Name', 'E-mail'), -) - -# on -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. - 'NAME': '', # 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. - } -} - - -SECRET_KEY = %(secret_key)r -MEDIA_ROOT = '%(path)s/media/' diff --git a/turniej/settings.py b/turniej/settings.py deleted file mode 100644 index 03e2586..0000000 --- a/turniej/settings.py +++ /dev/null @@ -1,137 +0,0 @@ -# Django settings for turniej project. -import os.path - -PROJECT_DIR = os.path.abspath(os.path.dirname(__file__)) - -DEBUG = False - -ADMINS = [ - # ('Your Name', 'your_email@domain.com'), -] - -MANAGERS = ADMINS - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. - 'NAME': os.path.join(PROJECT_DIR, 'dev.db'), # 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 = None - -# Language code for this installation. All choices can be found here: -# http://www.i18nguy.com/unicode/language-identifiers.html -LANGUAGE_CODE = 'pl' - -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 - -# Absolute filesystem path to the directory that will hold user-uploaded files. -# Example: "/home/media/media.lawrence.com/media/" -MEDIA_ROOT = os.path.join(PROJECT_DIR, '../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 = os.path.join(PROJECT_DIR, '../static') - -# URL prefix for static files. -# Example: "http://media.lawrence.com/static/" -STATIC_URL = '/static/' - -# URL prefix for admin static files -- CSS, JavaScript and images. -# Make sure to use a trailing slash. -# Examples: "http://foo.com/static/admin/", "/static/admin/". -ADMIN_MEDIA_PREFIX = '/static/admin/' - -# Additional locations of static files -STATICFILES_DIRS = ( - # Put strings here, like "/home/html/static" or "C:/www/django/static". - # Always use forward slashes, even on Windows. - # Don't forget to use absolute paths, not relative paths. - - os.path.join(PROJECT_DIR, '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', -# 'django.contrib.staticfiles.finders.DefaultStorageFinder', -) - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'APP_DIRS': True, - 'DIRS': [ - os.path.join(PROJECT_DIR, 'templates'), - ], - 'OPTIONS': { - 'context_processors': [ - "django.template.context_processors.debug", - "django.template.context_processors.i18n", - "django.template.context_processors.media", - "django.template.context_processors.static", - "django.contrib.messages.context_processors.messages", - "django.template.context_processors.request", - ], - }, - }, -] - -MIDDLEWARE = [ - 'django.middleware.common.CommonMiddleware', -] - -ROOT_URLCONF = 'turniej.urls' - -INSTALLED_APPS = [ - 'django.contrib.sites', - 'django.contrib.staticfiles', - - 'piwik', - - 'fnpdjango', - 'poetry', - 'edition1', - 'edition2', -] - -POETRY_POEMS_FOR_CONTEST = 20 - -ALLOWED_HOSTS = [ - 'turniej.wolnelektury.pl', -] - -# Load localsettings, if they exist -try: - from .localsettings import * -except ImportError: - pass diff --git a/turniej/static/img/cc.png b/turniej/static/img/cc.png deleted file mode 100644 index 1de9d62..0000000 Binary files a/turniej/static/img/cc.png and /dev/null differ diff --git a/turniej/static/img/di.png b/turniej/static/img/di.png deleted file mode 100644 index 8136626..0000000 Binary files a/turniej/static/img/di.png and /dev/null differ diff --git a/turniej/static/img/favicon.ico b/turniej/static/img/favicon.ico deleted file mode 100644 index 89067a8..0000000 Binary files a/turniej/static/img/favicon.ico and /dev/null differ diff --git a/turniej/static/img/fnp.png b/turniej/static/img/fnp.png deleted file mode 100644 index fe75e2d..0000000 Binary files a/turniej/static/img/fnp.png and /dev/null differ diff --git a/turniej/static/img/fnp_black.png b/turniej/static/img/fnp_black.png deleted file mode 100644 index 411b2fd..0000000 Binary files a/turniej/static/img/fnp_black.png and /dev/null differ diff --git a/turniej/static/img/koed.png b/turniej/static/img/koed.png deleted file mode 100644 index 6bcce17..0000000 Binary files a/turniej/static/img/koed.png and /dev/null differ diff --git a/turniej/static/img/lempl.png b/turniej/static/img/lempl.png deleted file mode 100644 index 51c9b9e..0000000 Binary files a/turniej/static/img/lempl.png and /dev/null differ diff --git a/turniej/static/img/social/bigfacebook.png b/turniej/static/img/social/bigfacebook.png deleted file mode 100644 index 630416c..0000000 Binary files a/turniej/static/img/social/bigfacebook.png and /dev/null differ diff --git a/turniej/static/img/social/biggoogle.png b/turniej/static/img/social/biggoogle.png deleted file mode 100644 index 19ad19d..0000000 Binary files a/turniej/static/img/social/biggoogle.png and /dev/null differ diff --git a/turniej/static/img/social/bignk.png b/turniej/static/img/social/bignk.png deleted file mode 100644 index c119cd1..0000000 Binary files a/turniej/static/img/social/bignk.png and /dev/null differ diff --git a/turniej/static/img/social/bigtwitter.png b/turniej/static/img/social/bigtwitter.png deleted file mode 100644 index fafbe64..0000000 Binary files a/turniej/static/img/social/bigtwitter.png and /dev/null differ diff --git a/turniej/static/img/social/facebook.png b/turniej/static/img/social/facebook.png deleted file mode 100644 index dca6fe8..0000000 Binary files a/turniej/static/img/social/facebook.png and /dev/null differ diff --git a/turniej/static/img/social/google.png b/turniej/static/img/social/google.png deleted file mode 100644 index c8c2882..0000000 Binary files a/turniej/static/img/social/google.png and /dev/null differ diff --git a/turniej/static/img/social/nk.png b/turniej/static/img/social/nk.png deleted file mode 100644 index de6650f..0000000 Binary files a/turniej/static/img/social/nk.png and /dev/null differ diff --git a/turniej/static/img/social/twitter.png b/turniej/static/img/social/twitter.png deleted file mode 100644 index 6745ef4..0000000 Binary files a/turniej/static/img/social/twitter.png and /dev/null differ diff --git a/turniej/static/img/turniej-maly.png b/turniej/static/img/turniej-maly.png deleted file mode 100644 index b11f0d6..0000000 Binary files a/turniej/static/img/turniej-maly.png and /dev/null differ diff --git a/turniej/static/img/turniej.png b/turniej/static/img/turniej.png deleted file mode 100644 index dbcbda4..0000000 Binary files a/turniej/static/img/turniej.png and /dev/null differ diff --git a/turniej/static/img/wl.png b/turniej/static/img/wl.png deleted file mode 100644 index 1d6cb6a..0000000 Binary files a/turniej/static/img/wl.png and /dev/null differ diff --git a/turniej/static/img/wl_black.png b/turniej/static/img/wl_black.png deleted file mode 100644 index c729463..0000000 Binary files a/turniej/static/img/wl_black.png and /dev/null differ diff --git a/turniej/static/js/jquery.countdown-pl.js b/turniej/static/js/jquery.countdown-pl.js deleted file mode 100644 index b94665c..0000000 --- a/turniej/static/js/jquery.countdown-pl.js +++ /dev/null @@ -1,18 +0,0 @@ -/* http://keith-wood.name/countdown.html - * Polish initialisation for the jQuery countdown extension - * Written by Pawel Lewtak lewtak@gmail.com (2008) */ -(function($) { - $.countdown.regional['pl'] = { - labels: ['lat', 'miesięcy', 'tygodni', 'dni', 'godzin', 'minut', 'sekund'], - labels1: ['rok', 'miesiąc', 'tydzień', 'dzień', 'godzina', 'minuta', 'sekunda'], - labels2: ['lata', 'miesiące', 'tygodnie', 'dni', 'godziny', 'minuty', 'sekundy'], - compactLabels: ['l', 'm', 't', 'd'], compactLabels1: ['r', 'm', 't', 'd'], - whichLabels: function(amount) { - var units = amount % 10; - var tens = Math.floor((amount % 100) / 10); - return (amount == 1 ? 1 : (units >= 2 && units <= 4 && tens != 1 ? 2 : 0)); - }, - digits: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], - timeSeparator: ':', isRTL: false}; - $.countdown.setDefaults($.countdown.regional['pl']); -})(jQuery); diff --git a/turniej/static/js/jquery.countdown.css b/turniej/static/js/jquery.countdown.css deleted file mode 100644 index f47784b..0000000 --- a/turniej/static/js/jquery.countdown.css +++ /dev/null @@ -1,48 +0,0 @@ -/* jQuery Countdown styles 1.6.1. */ -.hasCountdown { -} -.countdown_rtl { - direction: rtl; -} -.countdown_holding span { - color: #888; -} -.countdown_row { - clear: both; - width: 100%; - padding: 0px 2px; - text-align: center; -} -.countdown_show1 .countdown_section { - width: 98%; -} -.countdown_show2 .countdown_section { - width: 48%; -} -.countdown_show3 .countdown_section { - width: 32.5%; -} -.countdown_show4 .countdown_section { - width: 24.5%; -} -.countdown_show5 .countdown_section { - width: 19.5%; -} -.countdown_show6 .countdown_section { - width: 16.25%; -} -.countdown_show7 .countdown_section { - width: 14%; -} -.countdown_section { - display: block; - float: left; - text-align: center; -} -.countdown_amount { - font-size: 360%; -} -.countdown_descr { - display: block; - width: 100%; -} diff --git a/turniej/static/js/jquery.countdown.min.js b/turniej/static/js/jquery.countdown.min.js deleted file mode 100644 index ebd1314..0000000 --- a/turniej/static/js/jquery.countdown.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/* http://keith-wood.name/countdown.html - Countdown for jQuery v1.6.1. - Written by Keith Wood (kbwood{at}iinet.com.au) January 2008. - Available under the MIT (https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt) license. - Please attribute the author if you use it. */ -(function($){function Countdown(){this.regional=[];this.regional['']={labels:['Years','Months','Weeks','Days','Hours','Minutes','Seconds'],labels1:['Year','Month','Week','Day','Hour','Minute','Second'],compactLabels:['y','m','w','d'],whichLabels:null,digits:['0','1','2','3','4','5','6','7','8','9'],timeSeparator:':',isRTL:false};this._defaults={until:null,since:null,timezone:null,serverSync:null,format:'dHMS',layout:'',compact:false,significant:0,description:'',expiryUrl:'',expiryText:'',alwaysExpire:false,onExpiry:null,onTick:null,tickInterval:1};$.extend(this._defaults,this.regional['']);this._serverSyncs=[];function timerCallBack(a){var b=(a<1e12?(b=performance.now?(performance.now()+performance.timing.navigationStart):Date.now()):a||new Date().getTime());if(b-d>=1000){x._updateTargets();d=b}c(timerCallBack)}var c=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||null;var d=0;if(!c||$.noRequestAnimationFrame){$.noRequestAnimationFrame=null;setInterval(function(){x._updateTargets()},980)}else{d=window.animationStartTime||window.webkitAnimationStartTime||window.mozAnimationStartTime||window.oAnimationStartTime||window.msAnimationStartTime||new Date().getTime();c(timerCallBack)}}var Y=0;var O=1;var W=2;var D=3;var H=4;var M=5;var S=6;$.extend(Countdown.prototype,{markerClassName:'hasCountdown',propertyName:'countdown',_rtlClass:'countdown_rtl',_sectionClass:'countdown_section',_amountClass:'countdown_amount',_rowClass:'countdown_row',_holdingClass:'countdown_holding',_showClass:'countdown_show',_descrClass:'countdown_descr',_timerTargets:[],setDefaults:function(a){this._resetExtraLabels(this._defaults,a);$.extend(this._defaults,a||{})},UTCDate:function(a,b,c,e,f,g,h,i){if(typeof b=='object'&&b.constructor==Date){i=b.getMilliseconds();h=b.getSeconds();g=b.getMinutes();f=b.getHours();e=b.getDate();c=b.getMonth();b=b.getFullYear()}var d=new Date();d.setUTCFullYear(b);d.setUTCDate(1);d.setUTCMonth(c||0);d.setUTCDate(e||1);d.setUTCHours(f||0);d.setUTCMinutes((g||0)-(Math.abs(a)<30?a*60:a));d.setUTCSeconds(h||0);d.setUTCMilliseconds(i||0);return d},periodsToSeconds:function(a){return a[0]*31557600+a[1]*2629800+a[2]*604800+a[3]*86400+a[4]*3600+a[5]*60+a[6]},_attachPlugin:function(a,b){a=$(a);if(a.hasClass(this.markerClassName)){return}var c={options:$.extend({},this._defaults),_periods:[0,0,0,0,0,0,0]};a.addClass(this.markerClassName).data(this.propertyName,c);this._optionPlugin(a,b)},_addTarget:function(a){if(!this._hasTarget(a)){this._timerTargets.push(a)}},_hasTarget:function(a){return($.inArray(a,this._timerTargets)>-1)},_removeTarget:function(b){this._timerTargets=$.map(this._timerTargets,function(a){return(a==b?null:a)})},_updateTargets:function(){for(var i=this._timerTargets.length-1;i>=0;i--){this._updateCountdown(this._timerTargets[i])}},_optionPlugin:function(a,b,c){a=$(a);var d=a.data(this.propertyName);if(!b||(typeof b=='string'&&c==null)){var e=b;b=(d||{}).options;return(b&&e?b[e]:b)}if(!a.hasClass(this.markerClassName)){return}b=b||{};if(typeof b=='string'){var e=b;b={};b[e]=c}this._resetExtraLabels(d.options,b);$.extend(d.options,b);this._adjustSettings(a,d);var f=new Date();if((d._since&&d._sincef)){this._addTarget(a[0])}this._updateCountdown(a,d)},_updateCountdown:function(a,b){var c=$(a);b=b||c.data(this.propertyName);if(!b){return}c.html(this._generateHTML(b)).toggleClass(this._rtlClass,b.options.isRTL);if($.isFunction(b.options.onTick)){var d=b._hold!='lap'?b._periods:this._calculatePeriods(b,b._show,b.options.significant,new Date());if(b.options.tickInterval==1||this.periodsToSeconds(d)%b.options.tickInterval==0){b.options.onTick.apply(a,[d])}}var e=b._hold!='pause'&&(b._since?b._now.getTime()=b._until.getTime());if(e&&!b._expiring){b._expiring=true;if(this._hasTarget(a)||b.options.alwaysExpire){this._removeTarget(a);if($.isFunction(b.options.onExpiry)){b.options.onExpiry.apply(a,[])}if(b.options.expiryText){var f=b.options.layout;b.options.layout=b.options.expiryText;this._updateCountdown(a,b);b.options.layout=f}if(b.options.expiryUrl){window.location=b.options.expiryUrl}}b._expiring=false}else if(b._hold=='pause'){this._removeTarget(a)}c.data(this.propertyName,b)},_resetExtraLabels:function(a,b){var c=false;for(var n in b){if(n!='whichLabels'&&n.match(/[Ll]abels/)){c=true;break}}if(c){for(var n in a){if(n.match(/[Ll]abels[02-9]/)){a[n]=null}}}},_adjustSettings:function(a,b){var c;var d=0;var e=null;for(var i=0;i0);h[i]=(c._show[i]=='?'&&!e?null:c._show[i]);f+=(h[i]?1:0);g-=(c._periods[i]>0?1:0)}var j=[false,false,false,false,false,false,false];for(var i=S;i>=Y;i--){if(c._show[i]){if(c._periods[i]){j[i]=true}else{j[i]=g>0;g--}}}var k=(c.options.compact?c.options.compactLabels:c.options.labels);var l=c.options.whichLabels||this._normalLabels;var m=function(a){var b=c.options['compactLabels'+l(c._periods[a])];return(h[a]?d._translateDigits(c,c._periods[a])+(b?b[a]:k[a])+' ':'')};var n=function(a){var b=c.options['labels'+l(c._periods[a])];return((!c.options.significant&&h[a])||(c.options.significant&&j[a])?''+''+d._translateDigits(c,c._periods[a])+'
      '+(b?b[a]:k[a])+'
      ':'')};return(c.options.layout?this._buildLayout(c,h,c.options.layout,c.options.compact,c.options.significant,j):((c.options.compact?''+m(Y)+m(O)+m(W)+m(D)+(h[H]?this._minDigits(c,c._periods[H],2):'')+(h[M]?(h[H]?c.options.timeSeparator:'')+this._minDigits(c,c._periods[M],2):'')+(h[S]?(h[H]||h[M]?c.options.timeSeparator:'')+this._minDigits(c,c._periods[S],2):''):''+n(Y)+n(O)+n(W)+n(D)+n(H)+n(M)+n(S))+''+(c.options.description?''+c.options.description+'':'')))},_buildLayout:function(c,d,e,f,g,h){var j=c.options[f?'compactLabels':'labels'];var k=c.options.whichLabels||this._normalLabels;var l=function(a){return(c.options[(f?'compactLabels':'labels')+k(c._periods[a])]||j)[a]};var m=function(a,b){return c.options.digits[Math.floor(a/b)%10]};var o={desc:c.options.description,sep:c.options.timeSeparator,yl:l(Y),yn:this._minDigits(c,c._periods[Y],1),ynn:this._minDigits(c,c._periods[Y],2),ynnn:this._minDigits(c,c._periods[Y],3),y1:m(c._periods[Y],1),y10:m(c._periods[Y],10),y100:m(c._periods[Y],100),y1000:m(c._periods[Y],1000),ol:l(O),on:this._minDigits(c,c._periods[O],1),onn:this._minDigits(c,c._periods[O],2),onnn:this._minDigits(c,c._periods[O],3),o1:m(c._periods[O],1),o10:m(c._periods[O],10),o100:m(c._periods[O],100),o1000:m(c._periods[O],1000),wl:l(W),wn:this._minDigits(c,c._periods[W],1),wnn:this._minDigits(c,c._periods[W],2),wnnn:this._minDigits(c,c._periods[W],3),w1:m(c._periods[W],1),w10:m(c._periods[W],10),w100:m(c._periods[W],100),w1000:m(c._periods[W],1000),dl:l(D),dn:this._minDigits(c,c._periods[D],1),dnn:this._minDigits(c,c._periods[D],2),dnnn:this._minDigits(c,c._periods[D],3),d1:m(c._periods[D],1),d10:m(c._periods[D],10),d100:m(c._periods[D],100),d1000:m(c._periods[D],1000),hl:l(H),hn:this._minDigits(c,c._periods[H],1),hnn:this._minDigits(c,c._periods[H],2),hnnn:this._minDigits(c,c._periods[H],3),h1:m(c._periods[H],1),h10:m(c._periods[H],10),h100:m(c._periods[H],100),h1000:m(c._periods[H],1000),ml:l(M),mn:this._minDigits(c,c._periods[M],1),mnn:this._minDigits(c,c._periods[M],2),mnnn:this._minDigits(c,c._periods[M],3),m1:m(c._periods[M],1),m10:m(c._periods[M],10),m100:m(c._periods[M],100),m1000:m(c._periods[M],1000),sl:l(S),sn:this._minDigits(c,c._periods[S],1),snn:this._minDigits(c,c._periods[S],2),snnn:this._minDigits(c,c._periods[S],3),s1:m(c._periods[S],1),s10:m(c._periods[S],10),s100:m(c._periods[S],100),s1000:m(c._periods[S],1000)};var p=e;for(var i=Y;i<=S;i++){var q='yowdhms'.charAt(i);var r=new RegExp('\\{'+q+'<\\}(.*)\\{'+q+'>\\}','g');p=p.replace(r,((!g&&d[i])||(g&&h[i])?'$1':''))}$.each(o,function(n,v){var a=new RegExp('\\{'+n+'\\}','g');p=p.replace(a,v)});return p},_minDigits:function(a,b,c){b=''+b;if(b.length>=c){return this._translateDigits(a,b)}b='0000000000'+b;return this._translateDigits(a,b.substr(b.length-c))},_translateDigits:function(b,c){return(''+c).replace(/[0-9]/g,function(a){return b.options.digits[a]})},_determineShow:function(a){var b=a.options.format;var c=[];c[Y]=(b.match('y')?'?':(b.match('Y')?'!':null));c[O]=(b.match('o')?'?':(b.match('O')?'!':null));c[W]=(b.match('w')?'?':(b.match('W')?'!':null));c[D]=(b.match('d')?'?':(b.match('D')?'!':null));c[H]=(b.match('h')?'?':(b.match('H')?'!':null));c[M]=(b.match('m')?'?':(b.match('M')?'!':null));c[S]=(b.match('s')?'?':(b.match('S')?'!':null));return c},_calculatePeriods:function(c,d,e,f){c._now=f;c._now.setMilliseconds(0);var g=new Date(c._now.getTime());if(c._since){if(f.getTime()c._until.getTime()){c._now=f=g}}var h=[0,0,0,0,0,0,0];if(d[Y]||d[O]){var i=x._getDaysInMonth(f.getFullYear(),f.getMonth());var j=x._getDaysInMonth(g.getFullYear(),g.getMonth());var k=(g.getDate()==f.getDate()||(g.getDate()>=Math.min(i,j)&&f.getDate()>=Math.min(i,j)));var l=function(a){return(a.getHours()*60+a.getMinutes())*60+a.getSeconds()};var m=Math.max(0,(g.getFullYear()-f.getFullYear())*12+g.getMonth()-f.getMonth()+((g.getDate()o){f.setDate(o)}f.setFullYear(f.getFullYear()+h[Y]);f.setMonth(f.getMonth()+h[O]);if(n){f.setDate(o)}}var p=Math.floor((g.getTime()-f.getTime())/1000);var q=function(a,b){h[a]=(d[a]?Math.floor(p/b):0);p-=h[a]*b};q(W,604800);q(D,86400);q(H,3600);q(M,60);q(S,1);if(p>0&&!c._since){var r=[1,12,4.3482,7,24,60,60];var s=S;var t=1;for(var u=S;u>=Y;u--){if(d[u]){if(h[s]>=t){h[s]=0;p=1}if(p>0){h[u]++;p=0;s=u;t=1}}t*=r[u]}}if(e){for(var u=Y;u<=S;u++){if(e&&h[u]){e--}else if(!e){h[u]=0}}}return h}});var w=['getTimes'];function isNotChained(a,b){if(a=='option'&&(b.length==0||(b.length==1&&typeof b[0]=='string'))){return true}return $.inArray(a,w)>-1}$.fn.countdown=function(a){var b=Array.prototype.slice.call(arguments,1);if(isNotChained(a,b)){return x['_'+a+'Plugin'].apply(x,[this[0]].concat(b))}return this.each(function(){if(typeof a=='string'){if(!x['_'+a+'Plugin']){throw'Unknown command: '+a;}x['_'+a+'Plugin'].apply(x,[this].concat(b))}else{x._attachPlugin(this,a||{})}})};var x=$.countdown=new Countdown()})(jQuery); \ No newline at end of file diff --git a/turniej/templates/404.html b/turniej/templates/404.html deleted file mode 100644 index 1189e68..0000000 --- a/turniej/templates/404.html +++ /dev/null @@ -1,8 +0,0 @@ -{% extends "edition2/base.html" %} - -{% block "body" %} -

      Nie znaleziono strony

      - -

      Nie ma tu żadnej strony. Przejdź do strony głównej.

      - -{% endblock %} diff --git a/turniej/templates/500.html b/turniej/templates/500.html deleted file mode 100644 index 5ce19fc..0000000 --- a/turniej/templates/500.html +++ /dev/null @@ -1,8 +0,0 @@ -{% extends "edition2/base.html" %} - -{% block "body" %} -

      Błąd

      - -

      Wystąpił błąd serwera. Przepraszamy!

      - -{% endblock %} diff --git a/turniej/templates/base.html b/turniej/templates/base.html deleted file mode 100644 index 132e4f3..0000000 --- a/turniej/templates/base.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - Turniej Elektrybałtów{% block "extratitle" %}{% endblock %} - - - - - - - - -
      - - - -
      -{% block "body" %}{% endblock %} -
      - - - -{% load piwik_tags %} -{% tracking_code %} - - - - diff --git a/turniej/urls.py b/turniej/urls.py deleted file mode 100644 index eafb8c9..0000000 --- a/turniej/urls.py +++ /dev/null @@ -1,8 +0,0 @@ -from django.conf.urls import include, url - - -urlpatterns = [ - url(r'^2011/', include('edition1.urls')), - url(r'^poezja/', include('poetry.urls')), - url(r'', include('edition2.urls')), -] diff --git a/turniej/wsgi.py b/turniej/wsgi.py deleted file mode 100644 index f97d8fd..0000000 --- a/turniej/wsgi.py +++ /dev/null @@ -1,18 +0,0 @@ -import os -import os.path -import sys - -ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - -# Add apps and lib directories to PYTHONPATH -sys.path = [ - os.path.join(ROOT, 'apps'), -] + sys.path - - -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "turniej.settings") - -# This application object is used by the development server -# as well as any WSGI server configured to use this file. -from django.core.wsgi import get_wsgi_application -application = get_wsgi_application()