Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

initial commit

  • Loading branch information...
commit 6ff9c231777c708be272563381a18ab5c296f7a5 0 parents
@fiee authored
14 .gitignore
@@ -0,0 +1,14 @@
+.DS_Store
+*.pyc
+*.pyo
+.project
+.pydevproject
+.settings
+.svn
+secret.txt
+settings_local.py
+dev.db
+.tmp*
+build
+*.tar.gz
+*.bak
12 croisee/admin.py
@@ -0,0 +1,12 @@
+# -*- coding: utf-8 -*-
+from django.contrib import admin
+from models import *
+
+class WordAdmin(admin.ModelAdmin):
+ search_fields = ('word')
+ #list_display = ('word')
+ #list_display_links = ['word',]
+ #list_filter = ('art',)
+
+
+admin.site.register(Word, WordAdmin)
BIN  croisee/locale/de/LC_MESSAGES/django.mo
Binary file not shown
444 croisee/locale/de/LC_MESSAGES/django.po
@@ -0,0 +1,444 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Geburt & Leben\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-03 17:32+0200\n"
+"PO-Revision-Date: 2009-08-03 17:33+0100\n"
+"Last-Translator: Henning Hraban Ramm <hraban@fiee.net>\n"
+"Language-Team: fiëé visuëlle <hraban@fiee.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: German\n"
+"X-Poedit-Country: Germany\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: models.py:18
+msgid "Standard template"
+msgstr "Musterseite"
+
+#: models.py:21
+#: models.py:29
+msgid "Main content area"
+msgstr "Hauptinhalt"
+
+#: models.py:26
+msgid "Person template"
+msgstr "Personen-Seite"
+
+#: models.py:30
+msgid "Right content area"
+msgstr "Rechts"
+
+#: models.py:41
+msgid "Event"
+msgstr "Termin"
+
+#: models.py:42
+msgid "Events"
+msgstr "Termine"
+
+#: models.py:52
+#: templates/root.html:81
+msgid "Calendar"
+msgstr "Kalender"
+
+#: models.py:53
+msgid "Calendars"
+msgstr "Kalender"
+
+#: models.py:84
+#: models.py:90
+msgid "right"
+msgstr "Rechts"
+
+#: models.py:85
+#: models.py:91
+msgid "center"
+msgstr "Mitte"
+
+#: settings.py:23
+msgid "STRING_NOT_SET"
+msgstr "ZEICHENKETTE_NICHT_DEFINIERT"
+
+#: settings.py:78
+msgid "English"
+msgstr "Englisch"
+
+#: settings.py:79
+msgid "German"
+msgstr "Deutsch"
+
+#: settings.py:166
+#, python-format
+msgid "Please create a %s file with random characters to generate your secret key!"
+msgstr "Bitte erzeugen Sie eine Datei %s mit zufälligen Zeichen, um Ihren geheimen Schlüssel zu erzeugen!"
+
+#: templates/404.html:4
+#: templates/404.html.py:7
+#: templates/500.html:4
+msgid "404 Page Not Found"
+msgstr "404 Seite nicht gefunden"
+
+#: templates/500.html:7
+msgid "500 Server Error"
+msgstr "500 Server-Fehler"
+
+#: templates/dummy.html:3
+msgid "TIME_FORMAT"
+msgstr "G:i"
+
+#: templates/root.html:7
+#: templates/root.html.py:64
+msgid "Home"
+msgstr "Startseite"
+
+#: templates/root.html:26
+msgid "logout"
+msgstr "Abmelden"
+
+#: templates/root.html:28
+msgid "login"
+msgstr "Anmelden"
+
+#: templates/root.html:32
+msgid "search"
+msgstr "Suchen"
+
+#: templates/root.html:36
+msgid "Imprint"
+msgstr "Impressum"
+
+#: templates/admin/feincms/splitpane_editor_tree.html:38
+msgid "Cannot remove this frame while inside this admin section."
+msgstr "Dieser Rahmen kann in diesem Admin-Bereich nicht entfernt werden."
+
+#: templates/admin/feincms/splitpane_editor_tree.html:91
+msgid "remove"
+msgstr "entfernen"
+
+#: templates/admin/feincms/splitpane_editor_tree.html:105
+#: templates/admin/feincms/tree_editor.html:33
+#, python-format
+msgid "Add %(name)s"
+msgstr "%(name)s hinzufügen"
+
+#: templates/admin/feincms/splitpane_editor_tree.html:106
+msgid "Reload"
+msgstr "Neu laden"
+
+#: templates/admin/feincms/splitpane_editor_tree.html:108
+#: templates/admin/feincms/splitpane_editor_tree.html:115
+msgid "Edit"
+msgstr "Bearbeiten"
+
+#: templates/admin/feincms/splitpane_editor_tree.html:109
+#: templates/admin/feincms/splitpane_editor_tree.html:116
+#: templates/admin/feincms/tree_editor.html:51
+msgid "Delete"
+msgstr "Löschen"
+
+#: templates/admin/feincms/tree_editor.html:37
+msgid "Save tree"
+msgstr "Baum speichern"
+
+#: templates/admin/feincms/tree_editor.html:40
+msgid "Expand all"
+msgstr "Alles ausklappen"
+
+#: templates/admin/feincms/tree_editor.html:41
+msgid "Collapse all"
+msgstr "Alles einklappen"
+
+#: templates/admin/feincms/tree_editor.html:60
+msgid "Insert after"
+msgstr "danach einfügen"
+
+#: templates/admin/feincms/tree_editor.html:61
+msgid "Insert before"
+msgstr "davor einfügen"
+
+#: templates/admin/feincms/tree_editor.html:62
+msgid "Insert as child"
+msgstr "untergeordnet einfügen"
+
+#: templates/content/mediafile/image.html:6
+#: templates/content/mediafile/image_center.html:3
+msgid "Foto:"
+msgstr "Foto: "
+
+#: templates/content/schedule/event.html:4
+msgid "Starts"
+msgstr "Beginn"
+
+#: templates/content/schedule/event.html:5
+#: templates/content/schedule/event.html:7
+#: templates/content/schedule/event.html:10
+msgid "DATETIME_FORMAT"
+msgstr "d.m.Y G:i"
+
+#: templates/content/schedule/event.html:6
+msgid "Ends"
+msgstr "Ende"
+
+#: templates/content/schedule/event.html:9
+msgid "Reoccurs"
+msgstr "Wiederholung"
+
+#: templates/content/schedule/event.html:10
+msgid "until"
+msgstr "bis"
+
+#: templates/content/schedule/event.html:14
+msgid "Description"
+msgstr "Beschreibung"
+
+#~ msgid "ReStructured Text"
+#~ msgstr "ReStructured Text"
+#~ msgid "ReStructured Texts"
+#~ msgstr "ReStructured Texts"
+#~ msgid "Add Event"
+#~ msgstr "Termin hinzufügen"
+#~ msgid "%(start_date)s"
+#~ msgstr "%(start_date)s"
+#~ msgid "%(end_date)s"
+#~ msgstr "%(end_date)s"
+#~ msgid "Details"
+#~ msgstr "Details"
+#~ msgid "Question"
+#~ msgstr "Frage"
+#~ msgid ""
+#~ "Do you want to cancel this occurrence or delete all occurrences of this "
+#~ "event?"
+#~ msgstr ""
+#~ "Möchten Sie nur diese eine Wiederholung des Termins löschen oder alle?"
+#~ msgid "This is a recurring event"
+#~ msgstr "Dies ist ein wiederkehrender Termin"
+#~ msgid "Do you want to edit this occurrence or all occurrences?"
+#~ msgstr ""
+#~ "Möchten Sie nur diese eine Wiederholung des Termins bearbeiten oder alle?"
+#~ msgid "Edit Event"
+#~ msgstr "Termin bearbeiten"
+#~ msgid "Delete Event"
+#~ msgstr "Termin löschen"
+#~ msgid "Add"
+#~ msgstr "Hinzufügen"
+#~ msgid "YEAR_MONTH_FORMAT"
+#~ msgstr "F Y"
+#~ msgid "Continues"
+#~ msgstr "Weiter bis"
+#~ msgid "Week"
+#~ msgstr "Woche"
+#~ msgid "Month"
+#~ msgstr "Monat"
+#~ msgid "Year"
+#~ msgstr "Jahr"
+#~ msgid "Available Calendars"
+#~ msgstr "Verfügbare Kalender"
+#~ msgid "Small Month"
+#~ msgstr "Kleiner Monat"
+#~ msgid "1 Month"
+#~ msgstr "Monat"
+#~ msgid "3 Months"
+#~ msgstr "3 Monate"
+#~ msgid "This Year"
+#~ msgstr "Dieses Jahr"
+#~ msgid "Weekly"
+#~ msgstr "Wöchentlich"
+#~ msgid "Daily"
+#~ msgstr "Täglich"
+#~ msgid "Feed"
+#~ msgstr "Liste"
+#~ msgid "This month"
+#~ msgstr "Dieser Monat"
+#~ msgid "Three Months"
+#~ msgstr "3 Monate"
+#~ msgid "This week"
+#~ msgstr "Diese Woche"
+#~ msgid "Current Month"
+#~ msgstr "Dieser Monat"
+#~ msgid "Current Year"
+#~ msgstr "Dieses Jahr"
+#~ msgid "Are you sure that you really want to cancel this occurrence?"
+#~ msgstr "Sind Sie sicher, dass Sie diese Wiederholung absagen möchten?"
+#~ msgid "From"
+#~ msgstr "Von"
+#~ msgid "to"
+#~ msgstr "bis"
+#~ msgid "Cancel"
+#~ msgstr "Absagen"
+#~ msgid "Are you sure that you really want to delete it?"
+#~ msgstr "Sind Sie sicher, dass Sie löschen möchten?"
+#~ msgid "Back"
+#~ msgstr "Zurück"
+#~ msgid "Change"
+#~ msgstr "Ändern"
+#~ msgid "%(end_recurring_date)s"
+#~ msgstr "%(end_recurring_date)s"
+#~ msgid "Never. This is a 'one time only' event."
+#~ msgstr "Nie. Dies ist ein einmaliger Termin."
+#~ msgid "Day"
+#~ msgstr "Tag"
+#~ msgid "left"
+#~ msgstr "Links"
+#~ msgid "Three Month Calendar"
+#~ msgstr "Drei-Monats-Kalender"
+#~ msgid "Full Year Calendar"
+#~ msgstr "Ganzjahres-Kalender"
+#~ msgid "Startseite"
+#~ msgstr "Startseite"
+#~ msgid "Impressum"
+#~ msgstr "Impressum"
+#~ msgid "monatlich"
+#~ msgstr "monatlich"
+#~ msgid "userwelcome"
+#~ msgstr "Willkommen!"
+#~ msgid "Addresses"
+#~ msgstr "Adressen"
+#~ msgid "key"
+#~ msgstr "Schlüssel"
+#~ msgid "inherited"
+#~ msgstr "Vererbt"
+#~ msgid ""
+#~ "Should the content be inherited by subpages if they do not define any "
+#~ "content for this region?"
+#~ msgstr ""
+#~ "Soll der Inhalt dieser Region durch Unterseiten geerbt werden, sofern "
+#~ "diese keinen eigenen Inhalt definieren?"
+#~ msgid "region"
+#~ msgstr "Region"
+#~ msgid "regions"
+#~ msgstr "Regionen"
+#~ msgid "ordering"
+#~ msgstr "Sortierung"
+#~ msgid "Database error"
+#~ msgstr "Datenbankfehler"
+#~ msgid "file"
+#~ msgstr "Datei"
+#~ msgid "files"
+#~ msgstr "Dateien"
+#~ msgid "image"
+#~ msgstr "Bild"
+#~ msgid "images"
+#~ msgstr "Bilder"
+#~ msgid "media file"
+#~ msgstr "Mediendatei"
+#~ msgid "media files"
+#~ msgstr "Mediendateien"
+#~ msgid "block"
+#~ msgstr "Block"
+#~ msgid "text"
+#~ msgstr "Text"
+#~ msgid "rich text"
+#~ msgstr "Text"
+#~ msgid "rich texts"
+#~ msgstr "Texte"
+#~ msgid ""
+#~ "The rss field is updated several times a day. A change in the title will "
+#~ "only be visible on the home page after the next feed update."
+#~ msgstr ""
+#~ "Der RSS Feed wird mehrmals täglich aktualisiert. Eine Änderung des Titels "
+#~ "erscheint erst nach der nächsten Feed-Aktualisierung auf der Webseite."
+#~ msgid "Pre-rendered content"
+#~ msgstr "Vor-gerenderter Inhalt"
+#~ msgid "Last updated"
+#~ msgstr "Letzte Aktualisierung"
+#~ msgid "Max. items"
+#~ msgstr "Maximale Anzahl"
+#~ msgid "RSS feed"
+#~ msgstr "RSS Feed"
+#~ msgid "RSS feeds"
+#~ msgstr "RSS Feeds"
+#~ msgid "video link"
+#~ msgstr "Video-Link"
+#~ msgid ""
+#~ "This should be a link to a youtube video, i.e.: http://www.youtube.com/"
+#~ "watch?v=zmj1rpzDRZ0"
+#~ msgstr ""
+#~ "Dies sollte ein Link zu einem Youtube-Video sein, z.B.: http://www."
+#~ "youtube.com/watch?v=zmj1rpzDRZ0"
+#~ msgid "video"
+#~ msgstr "Video"
+#~ msgid "videos"
+#~ msgstr "Videos"
+#~ msgid "Other options"
+#~ msgstr "Weitere Optionen"
+#~ msgid "navigation extension"
+#~ msgstr "Navigations-Erweiterung"
+#~ msgid "active"
+#~ msgstr "Aktiv"
+#~ msgid "This is used for the generated navigation too."
+#~ msgstr "Dies wird auch für die generierte Navigation verwendet."
+#~ msgid "in navigation"
+#~ msgstr "In der Navigation"
+#~ msgid "override URL"
+#~ msgstr "Überschriebene URL"
+#~ msgid "Override the target URL for the navigation."
+#~ msgstr "Überschreibe die Ziel-URL für die Navigation."
+#~ msgid "redirect to"
+#~ msgstr "Weiterleiten zu"
+#~ msgid "Target URL for automatic redirects."
+#~ msgstr "Ziel-URL für automatische Weiterleitungen."
+#~ msgid "Cached URL"
+#~ msgstr "Zwischengespeicherte URL"
+#~ msgid ""
+#~ "Select the module providing subpages for this page if you need to "
+#~ "customize the navigation."
+#~ msgstr "Wähle das Modul aus, welches weitere Navigationspunkte erstellt."
+#~ msgid "The first line is the main title, the following lines are subtitles."
+#~ msgstr "Die erste Zeile ist der Haupttitel, die weiteren Zeilen Untertitel"
+#~ msgid "page title"
+#~ msgstr "Seitentitel"
+#~ msgid "Page title for browser window. Same as title by default."
+#~ msgstr ""
+#~ "Seitentitel für das Browser-Fenster. Standardmässig gleich wie der Titel."
+#~ msgid "meta keywords"
+#~ msgstr "Meta Begriffe"
+#~ msgid "This will be prepended to the default keyword list."
+#~ msgstr "Diese Begriffe werden vor die Standard-Begriffsliste eingefügt."
+#~ msgid "This will be prepended to the default description."
+#~ msgstr "Diese Beschreibung wird vor der Standard-Beschreibung eingefügt."
+#~ msgid "language"
+#~ msgstr "Sprache"
+#~ msgid "page"
+#~ msgstr "Seite"
+#~ msgid "pages"
+#~ msgstr "Seiten"
+#~ msgid "Choose"
+#~ msgstr "Auswählen"
+#~ msgid "View on site"
+#~ msgstr "Auf der Webseite anzeigen"
+#~ msgid "Change Template"
+#~ msgstr "Template ändern"
+#~ msgid "Region empty"
+#~ msgstr "Region leer"
+#~ msgid ""
+#~ "Content from the parent site is automatically inherited. To override this "
+#~ "behaviour, add some content."
+#~ msgstr ""
+#~ "Inhalt wird von der übergeordneten Seite geerbt. Füge Inhalt hinzu, um "
+#~ "dieses Verhalten zu ändern"
+#~ msgid "Page"
+#~ msgstr "Seite"
+#~ msgid "in navi"
+#~ msgstr "Im Menü"
+#~ msgid "delete"
+#~ msgstr "Löschen"
+#~ msgid "category"
+#~ msgstr "Kategorie"
+#~ msgid "categories"
+#~ msgstr "Kategorien"
+#~ msgid "caption"
+#~ msgstr "Legende"
+#~ msgid "copyright"
+#~ msgstr "Copyright"
+#~ msgid "media file translation"
+#~ msgstr "Mediendatei-Übersetzung"
+#~ msgid "media file translations"
+#~ msgstr "Mediendatei-Übersetzungen"
+
BIN  croisee/locale/en/LC_MESSAGES/django.mo
Binary file not shown
302 croisee/locale/en/LC_MESSAGES/django.po
@@ -0,0 +1,302 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Geburt & Leben\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-03 17:32+0200\n"
+"PO-Revision-Date: 2009-08-03 17:33+0100\n"
+"Last-Translator: Henning Hraban Ramm <hraban@fiee.net>\n"
+"Language-Team: fiëé visuëlle <hraban@fiee.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: English\n"
+"X-Poedit-Country: UNITED STATES\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: models.py:18
+msgid "Standard template"
+msgstr "Standard template"
+
+#: models.py:21
+#: models.py:29
+msgid "Main content area"
+msgstr "Main content area"
+
+#: models.py:26
+msgid "Person template"
+msgstr "Person template"
+
+#: models.py:30
+msgid "Right content area"
+msgstr "Right content area"
+
+#: models.py:41
+msgid "Event"
+msgstr "Event"
+
+#: models.py:42
+msgid "Events"
+msgstr "Events"
+
+#: models.py:52
+#: templates/root.html:81
+msgid "Calendar"
+msgstr "Calendar"
+
+#: models.py:53
+#, fuzzy
+msgid "Calendars"
+msgstr "Calendar"
+
+#: models.py:84
+#: models.py:90
+msgid "right"
+msgstr "right"
+
+#: models.py:85
+#: models.py:91
+msgid "center"
+msgstr "center"
+
+#: settings.py:23
+msgid "STRING_NOT_SET"
+msgstr "STRING_NOT_SET"
+
+#: settings.py:78
+msgid "English"
+msgstr "English"
+
+#: settings.py:79
+msgid "German"
+msgstr "German"
+
+#: settings.py:166
+#, python-format
+msgid "Please create a %s file with random characters to generate your secret key!"
+msgstr "Please create a %s file with random characters to generate your secret key!"
+
+#: templates/404.html:4
+#: templates/404.html.py:7
+#: templates/500.html:4
+msgid "404 Page Not Found"
+msgstr "404 Page Not Found"
+
+#: templates/500.html:7
+msgid "500 Server Error"
+msgstr "500 Server Error"
+
+#: templates/dummy.html:3
+msgid "TIME_FORMAT"
+msgstr "G:i"
+
+#: templates/root.html:7
+#: templates/root.html.py:64
+msgid "Home"
+msgstr "Home"
+
+#: templates/root.html:26
+msgid "logout"
+msgstr "logout"
+
+#: templates/root.html:28
+msgid "login"
+msgstr "login"
+
+#: templates/root.html:32
+msgid "search"
+msgstr "search"
+
+#: templates/root.html:36
+msgid "Imprint"
+msgstr "Imprint"
+
+#: templates/admin/feincms/splitpane_editor_tree.html:38
+msgid "Cannot remove this frame while inside this admin section."
+msgstr "Cannot remove this frame while inside this admin section."
+
+#: templates/admin/feincms/splitpane_editor_tree.html:91
+msgid "remove"
+msgstr "remove"
+
+#: templates/admin/feincms/splitpane_editor_tree.html:105
+#: templates/admin/feincms/tree_editor.html:33
+#, python-format
+msgid "Add %(name)s"
+msgstr "Add %(name)s"
+
+#: templates/admin/feincms/splitpane_editor_tree.html:106
+msgid "Reload"
+msgstr "Reload"
+
+#: templates/admin/feincms/splitpane_editor_tree.html:108
+#: templates/admin/feincms/splitpane_editor_tree.html:115
+msgid "Edit"
+msgstr "Edit"
+
+#: templates/admin/feincms/splitpane_editor_tree.html:109
+#: templates/admin/feincms/splitpane_editor_tree.html:116
+#: templates/admin/feincms/tree_editor.html:51
+msgid "Delete"
+msgstr "Delete"
+
+#: templates/admin/feincms/tree_editor.html:37
+msgid "Save tree"
+msgstr "Save tree"
+
+#: templates/admin/feincms/tree_editor.html:40
+msgid "Expand all"
+msgstr "Expand all"
+
+#: templates/admin/feincms/tree_editor.html:41
+msgid "Collapse all"
+msgstr "Collapse all"
+
+#: templates/admin/feincms/tree_editor.html:60
+msgid "Insert after"
+msgstr "Insert after"
+
+#: templates/admin/feincms/tree_editor.html:61
+msgid "Insert before"
+msgstr "Insert before"
+
+#: templates/admin/feincms/tree_editor.html:62
+msgid "Insert as child"
+msgstr "Insert as child"
+
+#: templates/content/mediafile/image.html:6
+#: templates/content/mediafile/image_center.html:3
+msgid "Foto:"
+msgstr "Photo: "
+
+#: templates/content/schedule/event.html:4
+msgid "Starts"
+msgstr "Starts"
+
+#: templates/content/schedule/event.html:5
+#: templates/content/schedule/event.html:7
+#: templates/content/schedule/event.html:10
+msgid "DATETIME_FORMAT"
+msgstr "Y-m-d G:i"
+
+#: templates/content/schedule/event.html:6
+msgid "Ends"
+msgstr "Ends"
+
+#: templates/content/schedule/event.html:9
+msgid "Reoccurs"
+msgstr "Reoccurs"
+
+#: templates/content/schedule/event.html:10
+msgid "until"
+msgstr "until"
+
+#: templates/content/schedule/event.html:14
+msgid "Description"
+msgstr "Description"
+
+#~ msgid "ReStructured Text"
+#~ msgstr "ReStructured Text"
+#~ msgid "ReStructured Texts"
+#~ msgstr "ReStructured Texts"
+#~ msgid "Add Event"
+#~ msgstr "Add Event"
+#~ msgid "%(start_date)s"
+#~ msgstr "%(start_date)s"
+#~ msgid "%(end_date)s"
+#~ msgstr "%(end_date)s"
+#~ msgid "Details"
+#~ msgstr "Details"
+#~ msgid "Question"
+#~ msgstr "Question"
+#~ msgid ""
+#~ "Do you want to cancel this occurrence or delete all occurrences of this "
+#~ "event?"
+#~ msgstr ""
+#~ "Do you want to cancel this occurrence or delete all occurrences of this "
+#~ "event?"
+#~ msgid "This is a recurring event"
+#~ msgstr "This is a recurring event"
+#~ msgid "Do you want to edit this occurrence or all occurrences?"
+#~ msgstr "Do you want to edit this occurrence or all occurrences?"
+#~ msgid "Edit Event"
+#~ msgstr "Edit Event"
+#~ msgid "Delete Event"
+#~ msgstr "Delete Event"
+#~ msgid "Add"
+#~ msgstr "Add"
+#~ msgid "YEAR_MONTH_FORMAT"
+#~ msgstr "F Y"
+#~ msgid "Continues"
+#~ msgstr "Continues"
+#~ msgid "Week"
+#~ msgstr "Week"
+#~ msgid "Month"
+#~ msgstr "Month"
+#~ msgid "Year"
+#~ msgstr "Year"
+#~ msgid "Available Calendars"
+#~ msgstr "Available Calendars"
+#~ msgid "Small Month"
+#~ msgstr "Small Month"
+#~ msgid "1 Month"
+#~ msgstr "1 Month"
+#~ msgid "3 Months"
+#~ msgstr "3 Months"
+#~ msgid "This Year"
+#~ msgstr "This Year"
+#~ msgid "Weekly"
+#~ msgstr "Weekly"
+#~ msgid "Daily"
+#~ msgstr "Daily"
+#~ msgid "Feed"
+#~ msgstr "Feed"
+#~ msgid "This month"
+#~ msgstr "This month"
+#~ msgid "Three Months"
+#~ msgstr "Three Months"
+#~ msgid "This week"
+#~ msgstr "This week"
+#~ msgid "Current Month"
+#~ msgstr "Current Month"
+#~ msgid "Current Year"
+#~ msgstr "Current Year"
+#~ msgid "Are you sure that you really want to cancel this occurrence?"
+#~ msgstr "Are you sure that you really want to cancel this occurrence?"
+#~ msgid "From"
+#~ msgstr "From"
+#~ msgid "to"
+#~ msgstr "to"
+#~ msgid "Cancel"
+#~ msgstr "Cancel"
+#~ msgid "Are you sure that you really want to delete it?"
+#~ msgstr "Are you sure that you really want to delete it?"
+#~ msgid "Back"
+#~ msgstr "Back"
+#~ msgid "Change"
+#~ msgstr "Change"
+#~ msgid "%(end_recurring_date)s"
+#~ msgstr "%(end_recurring_date)s"
+#~ msgid "Never. This is a 'one time only' event."
+#~ msgstr "Never. This is a 'one time only' event."
+#~ msgid "Day"
+#~ msgstr "Day"
+#~ msgid "left"
+#~ msgstr "left"
+#~ msgid "Three Month Calendar"
+#~ msgstr "Three Month Calendar"
+#~ msgid "Full Year Calendar"
+#~ msgstr "Full Year Calendar"
+#~ msgid "Startseite"
+#~ msgstr "Home"
+#~ msgid "Impressum"
+#~ msgstr "Imprint"
+#~ msgid "monatlich"
+#~ msgstr "monthly"
+#~ msgid "userwelcome"
+#~ msgstr "userwelcome"
+
89 croisee/models.py
@@ -0,0 +1,89 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import unicodedata
+import re
+from django.utils.translation import ugettext_lazy as _
+from django.db import models
+from django.template.loader import render_to_string
+from django.conf import settings
+
+class Word(models.Model):
+ """
+ A word
+ """
+ REPLACEMENTS = (
+ # international characters that need more than just stripping accents
+ (u'Ä', 'AE'),
+ (u'Ö', 'OE'),
+ (u'Ü', 'UE'),
+ (u'ß', 'SS'),
+ )
+ reASCIIonly = re.compile(r'[^A-Z]+', re.I)
+
+ class Meta:
+ verbose_name = _(u'Word')
+ verbose_name_plural = _(u'Words')
+
+ word = models.CharField(_(u'Word'), max_length=20,
+ unique=True, primary_key=True,
+ help_text=_(u'a word fitting a crossword puzzle; will become uppercased; no numbers, hyphens etc.'))
+
+ def __unicode__(self):
+ return self.word
+
+ def length(self):
+ return len(self.word)
+
+ def cleanword(self, word=None):
+ if word==None: word = self.word
+ word = word.upper()
+ for k,v in self.REPLACEMENTS:
+ word = word.replace(k,v)
+ word = unicodedata.normalize('NFD', word).encode('ASCII', 'ignore') # decompose international chars
+ word = self.reASCIIonly.sub(word)
+ return word
+
+
+ def save(self, force_insert=False, force_update=False):
+ self.word = self.cleanword()
+ super(Word, self).save(force_insert, force_update)
+
+
+
+class Dictionary(models.Model):
+ """
+ A dictionary
+ """
+ class Meta:
+ verbose_name = _(u'Dictionary')
+ verbose_name_plural = _(u'Dictionaries')
+ ordering = ['language','name']
+ unique_together = (('name','language'),)
+
+ name = models.CharField(_(u'Name'), max_length=31, help_text=_(u'A short descriptive name'))
+ language = models.CharField(_(u'Language'), max_length=15,
+ default=settings.LANGUAGE_CODE, choices=settings.LANGUAGES,
+ help_text=_(u'Language of (most of) the words in this dictionary'))
+ description = models.CharField(_(u'Description'), max_length=255, blank=True)
+
+ def __unicode__(self):
+ return "%s (%s)" % (self.name, self.language)
+
+class Description(models.Model):
+ """
+ A description or question for a word, according to a dictionary
+ """
+ class Meta:
+ verbose_name = _(u'Dictionary')
+ verbose_name_plural = _(u'Dictionaries')
+ order_with_respect_to = 'word'
+ ordering = ['priority','word']
+ unique_together = (('word','dictionary'),)
+
+ word = models.ForeignKey(Word, verbose_name=_(u'Word'))
+ dictionary = models.ForeignKey(Dictionary, verbose_name=_(u'Dictionary'))
+ description = models.CharField(_(u'Description'), max_length=31, help_text=_(u'Meaning of the word within the context of the selected dictionary'))
+ priority = models.SmallIntegerField(_(u'Priority'), default=0, help_text=_(u'0 is neutral, you can increase or decrease the priority'))
+
+ def __unicode__(self):
+ return "%s\t%s" % (self.word, self.description)
171 croisee/settings.py
@@ -0,0 +1,171 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import os, sys
+from django.utils.translation import ugettext_lazy as _
+
+PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
+PROJECT_NAME = os.path.split(PROJECT_ROOT)[-1]
+
+rel = lambda p: os.path.join(PROJECT_ROOT, p) # this is release and virtualenv dependent
+rootrel = lambda p: os.path.join('/var/www', PROJECT_NAME, p) # this is not
+
+sys.path += [PROJECT_ROOT, os.path.join(PROJECT_ROOT,'lib/python2.5/site-packages'), '/var/www/python']
+
+# ==============================================================================
+# debug settings
+# ==============================================================================
+
+DEBUG = False
+TEMPLATE_DEBUG = DEBUG
+INTERNAL_IPS = ('127.0.0.1')
+if DEBUG:
+ TEMPLATE_STRING_IF_INVALID = _(u'STRING_NOT_SET')
+
+# ==============================================================================
+# cache settings
+# ==============================================================================
+
+CACHE_BACKEND = 'locmem://'
+CACHE_MIDDLEWARE_KEY_PREFIX = '%s_' % PROJECT_NAME
+CACHE_MIDDLEWARE_SECONDS = 600
+
+# ==============================================================================
+# email and error-notify settings
+# ==============================================================================
+
+ADMINS = (
+ ('Henning Hraban Ramm', 'hraban@fiee.net'),
+)
+
+MANAGERS = ADMINS
+
+DEFAULT_FROM_EMAIL = 'website@fiee.net'
+SERVER_EMAIL = 'error-notify@fiee.net'
+
+EMAIL_SUBJECT_PREFIX = '[%s] ' % PROJECT_NAME
+EMAIL_HOST = 'mail.fiee.net'
+EMAIL_PORT = 25
+EMAIL_HOST_USER = PROJECT_NAME
+EMAIL_HOST_PASSWORD = ''
+EMAIL_USE_TLS = False
+
+# ==============================================================================
+# auth settings
+# ==============================================================================
+
+LOGIN_URL = '/accounts/login/'
+LOGOUT_URL = '/accounts/logout/'
+LOGIN_REDIRECT_URL = '/'
+
+# ==============================================================================
+# database settings
+# ==============================================================================
+
+DATABASE_ENGINE = 'mysql'
+DATABASE_NAME = PROJECT_NAME #os.path.join(PROJECT_ROOT, 'dev.db')
+DATABASE_USER = PROJECT_NAME
+DATABASE_PASSWORD = ''
+DATABASE_HOST = 'localhost'
+DATABASE_PORT = ''
+
+# ==============================================================================
+# i18n and url settings
+# ==============================================================================
+
+TIME_ZONE = 'Europe/Zurich'
+LANGUAGE_CODE = 'de'
+"""
+LANGUAGES = (('en', _(u'English')),
+ ('de', _(u'German')))
+"""
+USE_I18N = True
+
+SITE_ID = 1
+
+MEDIA_ROOT = rel('static')
+MEDIA_URL = '/media/'
+ADMIN_MEDIA_PREFIX = '/django_admin_media/'
+
+ROOT_URLCONF = '%s.urls' % PROJECT_NAME
+
+# ==============================================================================
+# application and middleware settings
+# ==============================================================================
+
+INSTALLED_APPS = (
+ 'django.contrib.auth',
+ 'django.contrib.contenttypes',
+ 'django.contrib.sessions',
+ 'django.contrib.sites',
+ 'django.contrib.admin',
+ #'django.contrib.humanize',
+ #'django.contrib.sitemaps',
+ #'tagging',
+ PROJECT_NAME,
+)
+
+MIDDLEWARE_CLASSES = (
+ 'django.contrib.sessions.middleware.SessionMiddleware',
+ 'django.middleware.locale.LocaleMiddleware',
+ 'django.contrib.auth.middleware.AuthenticationMiddleware',
+ 'django.middleware.http.ConditionalGetMiddleware',
+# 'django.middleware.gzip.GZipMiddleware',
+ 'django.middleware.doc.XViewMiddleware',
+ 'django.middleware.common.CommonMiddleware',
+)
+
+TEMPLATE_CONTEXT_PROCESSORS = (
+ 'django.core.context_processors.auth',
+ 'django.core.context_processors.debug',
+ 'django.core.context_processors.i18n',
+ 'django.core.context_processors.media',
+ 'django.core.context_processors.request',
+)
+
+TEMPLATE_DIRS = (
+ os.path.join(PROJECT_ROOT, 'templates'),
+)
+
+TEMPLATE_LOADERS = (
+ 'django.template.loaders.filesystem.load_template_source',
+ 'django.template.loaders.app_directories.load_template_source',
+# 'django.template.loaders.eggs.load_template_source',
+)
+
+# ==============================================================================
+# the secret key
+# ==============================================================================
+
+try:
+ SECRET_KEY
+except NameError:
+ if DEBUG:
+ SECRET_FILE = rel('secret.txt')
+ else:
+ SECRET_FILE = rootrel('secret.txt')
+ try:
+ SECRET_KEY = open(SECRET_FILE).read().strip()
+ except IOError:
+ try:
+ from random import choice
+ SECRET_KEY = ''.join([choice('abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)') for i in range(50)])
+ secret = file(SECRET_FILE, 'w')
+ secret.write(SECRET_KEY)
+ secret.close()
+ except IOError:
+ Exception(_(u'Please create a %s file with random characters to generate your secret key!' % SECRET_FILE))
+
+# ==============================================================================
+# third party
+# ==============================================================================
+
+# ..third party app settings here
+
+# ==============================================================================
+# host specific settings
+# ==============================================================================
+
+try:
+ from settings_local import *
+except ImportError:
+ pass
0  croisee/static/css/index.html
No changes.
168 croisee/static/css/preview.css
@@ -0,0 +1,168 @@
+html {
+ quotes: "\201E" "\201C" "\201A" "\2018";
+ color: black;
+ background-color: #fff1cd;
+}
+
+body {
+ margin: 0 0 0 0;
+ font-family: "Trebuchet MS", Helvetica, Arial, sans-serif;
+ text-align: left;
+ font-size: 85%;
+}
+
+/* General*/
+.clear {
+ clear: both;
+}
+.nobreak {
+ white-space: nowrap;
+}
+.left {
+ vertical-align: middle;
+ float: left;
+ text-align: left;
+}
+.right {
+ float: right;
+ text-align: right;
+}
+
+
+/* Titelei */
+
+h1, h2, h3, h4, h5, legend {
+ font-style: italic;
+ color: #c33;
+ line-height: 1.0;
+ font-weight: bold;
+}
+
+h1 {
+ font-size: 182%;
+ margin: 0 0 1em 0;
+}
+
+h2 {
+ font-size: 167%;
+ margin: 0 0 1em 0;
+}
+
+h2.center {
+ font-size: 154%;
+ margin: 0 0 1em 0;
+}
+
+h3 {
+ font-size: 138.5%;
+ margin: 1em 0 1em 0;
+}
+
+h4 {
+ font-size: 116%;
+ margin: 0.5em 0 0.25em 0;
+}
+
+h5, th, dt {
+ font-size: 100%;
+ font-weight:bold;
+}
+
+p,
+li, dd,
+td {
+ line-height: 1.3;
+}
+
+.author, .autor {
+ text-align: right;
+ font-style: italic;
+}
+
+.hidden, .imagetext {
+ display: none;
+ visibility: hidden;
+}
+
+/* Bilder */
+
+img {
+ border: none;
+}
+
+img.intext-right,
+#maincol p img {
+ float:right;
+ width: 300px;
+ margin-left: 2em;
+}
+
+
+/* Listen */
+
+ul, ol, dl {
+ margin-left: 0;
+ margin-top: 0;
+}
+
+li {
+ list-style-position: outside;
+ margin-left: 1.5em;
+}
+
+ol li {
+ list-style-type: decimal;
+}
+
+ul li, dl dd {
+ list-style-type: disc;
+ margin-bottom: 0.25em;
+}
+
+dt {
+}
+
+dd {
+ margin-left: 1em;
+ background: none;
+}
+
+li li {
+ margin-left: 3em;
+}
+
+
+li li li {
+ margin-left: 4.5em;
+}
+
+/* Links */
+
+a:link,
+a:visited,
+a:active {
+ color: black;
+ text-decoration: none !important;
+}
+
+a:active {
+ font-weight: bold;
+}
+
+a:hover {
+ color: red;
+}
+
+a img, a:link img, a:visited img, a:active img {
+ border-bottom: none !important;
+}
+
+/* Auszeichnungen */
+
+i, em {
+ font-style: italic;
+}
+
+b, strong {
+ font-weight: bold;
+}
30 croisee/static/css/print.css
@@ -0,0 +1,30 @@
+body {
+ quotes: "\201E" "\201C" "\201A" "\2018";
+ color: #000;
+ background: #FFF;
+ margin: 0px;
+ padding: 0px;
+}
+
+#header, #topmenu, #leftcol, #rightcol, #footer,
+.hidden {
+ display: none;
+}
+
+h1, h2, h3, h4, p, td {
+ color: #000;
+}
+
+h1 a, h2 a, h3 a, h4 a {
+ text-decoration: none;
+ color: #000;
+}
+
+a {
+ text-decoration: underline;
+ color: #000;
+}
+
+img {
+ border: none;
+}
380 croisee/static/css/style.css
@@ -0,0 +1,380 @@
+html {
+ quotes: "\201E" "\201C" "\201A" "\2018";
+ color: black;
+ background-color: #fff1cd;
+ background-image: url(../img/hintergrund.png);
+ background-position: top left;
+ background-repeat: no-repeat;
+}
+
+body {
+ margin: 0 0 0 0;
+ font-family: "Trebuchet MS", Helvetica, Arial, sans-serif;
+ text-align: left;
+ font-size: 85%;
+ volume: medium;
+ voice-family: female;
+ pitch: medium;
+}
+
+/* General*/
+.clear {
+ clear: both;
+}
+.nobreak {
+ white-space: nowrap;
+}
+.left {
+ vertical-align: middle;
+ float: left;
+ text-align: left;
+}
+.right {
+ float: right;
+ text-align: right;
+}
+
+
+/* Titelei */
+
+h1, h2, h3, h4, h5, legend {
+ font-style: italic;
+ color: #c33;
+ line-height: 1.0;
+ font-weight: bold;
+ page-break-after: avoid;
+ voice-family: male;
+}
+
+h1 {
+ font-size: 182%;
+ margin: 0 0 1em 0;
+}
+
+h2 {
+ font-size: 167%;
+ margin: 0 0 1em 0;
+}
+
+h2.center {
+ font-size: 154%;
+ margin: 0 0 1em 0;
+}
+
+h3 {
+ font-size: 138.5%;
+ margin: 1em 0 1em 0;
+}
+
+h4 {
+ font-size: 116%;
+ margin: 0.5em 0 0.25em 0;
+}
+
+h5, th, dt {
+ font-size: 100%;
+ font-weight:bold;
+}
+
+p,
+li, dd,
+td {
+ line-height: 1.3;
+}
+
+.author, .autor {
+ text-align: right;
+ font-style: italic;
+}
+
+.hidden, .imagetext {
+ display: none;
+ visibility: hidden;
+}
+
+/* Bilder */
+
+img {
+ border: none;
+ max-width: 100%;
+}
+
+img.intext-right,
+.intext-right img,
+#maincol p img {
+ float:right;
+ max-width: 300px;
+ margin-left: 2em;
+}
+
+img.logotop {
+ float:left;
+ padding: 0 20px 0 20px;
+ max-height: 110px;
+ max-width: 50%;
+ vertical-align: middle;
+}
+
+.image, .image_center {
+ padding: 1em 0 1em 0;
+}
+
+/* Listen */
+
+ul, ol, dl {
+ margin-left: 0;
+ margin-top: 0;
+}
+
+li {
+ list-style-position: outside;
+ margin-left: 1.5em;
+}
+
+ol li {
+ list-style-type: decimal;
+}
+
+ul li, dl dd {
+ list-style-type: disc;
+ margin-bottom: 0.25em;
+}
+
+dt {
+}
+
+dd {
+ margin-left: 1em;
+ background: none;
+}
+
+li li {
+ margin-left: 3em;
+}
+
+
+li li li {
+ margin-left: 4.5em;
+}
+
+
+.rightbox li {
+ list-style-image: none;
+ list-style-type: none;
+ margin-left: 0;
+ font-weight: bold;
+}
+
+.rightbox li li {
+ margin-left: 1.5em;
+ font-weight: normal;
+ background: none;
+}
+
+.rightbox li li li {
+ margin-left: 3em;
+ font-size: 77%;
+}
+
+/* Links */
+
+a:link,
+a:visited,
+a:active {
+ color: black;
+ text-decoration: none !important;
+}
+
+a:active {
+ font-weight: bold;
+}
+
+a:hover {
+ color: red;
+}
+
+a img, a:link img, a:visited img, a:active img {
+ border-bottom: none !important;
+}
+
+/* Auszeichnungen */
+
+i, em {
+ font-style: italic;
+ pitch: high;
+}
+
+b, strong {
+ font-weight: bold;
+ volume: loud;
+}
+
+/* Forms */
+
+input, textarea {
+ font-size: 77%;
+ line-height: 1.0;
+}
+
+.mainmenu a:link, .mainmenu a:visited .mainmenu a:active {
+ border-bottom: none;
+ text-decoration: none;
+}
+
+.mainmenu a:hover {
+ color: #006;
+ border-bottom: 1px solid #006;
+}
+/* top right bottom left */
+
+/* Microformats */
+
+.vcard {
+ font-size: 85%;
+ margin: 1em 0 1em 0;
+}
+
+.vcard .n div,
+.vcard .postal-code {
+ display: inline;
+}
+
+/* Bereiche */
+
+#header {
+ width: 100%;
+ height: 160px;
+ clear: both;
+ /* background-color: #fc6;
+ border-bottom: 2px solid #ccc; */
+ background-image: url(../img/kopf_934x156.png);
+ background-position: top left;
+ background-repeat: no-repeat;
+ z-index: 20;
+}
+
+#toptext {
+ width: 99%;
+ height: 20px;
+ padding: 0.25em 0.5em 0.5em 0.5em;
+ font-size: 77%;
+ color: #fc6;
+}
+
+#toplogo {
+}
+
+#header ul.headmenu {
+ font-weight: bold;
+}
+
+#header ul.headmenu li {
+ position: relative;
+ list-style-type: none;
+ list-style-position: outside;
+ display: inline;
+}
+
+#header ul.headmenu a {
+ border: none;
+ color: #fc6;
+}
+
+#header ul.headmenu ul {
+ display: none;
+}
+
+#rightcol, #leftcol {
+ height: 100%;
+ width: 180px;
+ position: absolute;
+ z-index: 1;
+}
+
+#rightcol {
+ right: 0;
+ top:100px;
+ float: right;
+ margin-left: 2em;
+ padding: 1em 0.5em 1em 0.5em;
+}
+
+#leftcol {
+ left: 0;
+ top:140px;
+ float: left;
+ margin-right: 2em;
+ padding: 4em 0.5em 0 35px;
+ background-image: url(../img/leftbox.png);
+ background-repeat: no-repeat;
+ background-position: top left;
+}
+
+#leftcol ul.navlist {
+ color: #c00;
+}
+
+#leftcol ul.navlist a {
+ border: none;
+ color: #c00;
+}
+
+#leftcol ul.navlist > li {
+ color: #c00;
+ min-height: 40px;
+ padding: 8px 0 0 15px;
+ list-style-type: none;
+ list-style-position: outside;
+ background-image: url(../img/button_gelb.png);
+ background-repeat: no-repeat;
+}
+
+#leftcol ul.navlist > li:hover,
+#leftcol ul.navlist > li.active {
+ background-image: url(../img/button_blau.png);
+}
+
+#leftcol ul.subnavlist {
+ display: none;
+ font-size: 85%;
+}
+
+#leftcol li:hover ul.subnavlist {
+ display: block;
+}
+
+#leftcol ul.subnavlist > li {
+ padding: 0 0 0 0;
+}
+
+#leftcol ul.subnavlist > li:hover {
+ color: white;
+}
+
+#maincol {
+ position: absolute;
+ top: 215px;
+ left: 270px;
+ height: 100%;
+ min-width: 300px;
+ max-width: 60em;
+ padding: 0 5em 2em 0;
+ display: inline-block;
+}
+
+#breadcrumbs {
+ font-size: 85%;
+ position: relative;
+ top: -3em;
+}
+
+#main-right {
+ float: right;
+ margin-left: 2em;
+ max-width: 50%;
+}
+
+#main-right img {
+ width: 200px;
+ max-width: 100%;
+}
BIN  croisee/static/favicon.ico
Binary file not shown
0  croisee/static/js/index.html
No changes.
8 croisee/templates/404.html
@@ -0,0 +1,8 @@
+{% extends "root.html" %}
+{% load cache i18n %}
+
+{% block title %}{% trans "404 Page Not Found" %}{% endblock %}
+
+{% block maincontent %}
+<h2>{% trans "404 Page Not Found" %}</h2>
+{% endblock %}
8 croisee/templates/500.html
@@ -0,0 +1,8 @@
+{% extends "root.html" %}
+{% load cache i18n %}
+
+{% block title %}{% trans "500 Server Error" %}{% endblock %}
+
+{% block maincontent %}
+<h2>{% trans "500 Server Error" %}</h2>
+{% endblock %}
10 croisee/templates/admin/base_site.html
@@ -0,0 +1,10 @@
+{% extends "admin/base.html" %}
+{% load i18n %}
+
+{% block title %}{{ title }} | {% trans 'fiëé croisée Site Admin' %}{% endblock %}
+
+{% block branding %}
+<h1 id="site-name">{% trans 'fiëé croisée Administration' %}</h1>
+{% endblock %}
+
+{% block nav-global %}{% endblock %}
23 croisee/templates/root.html
@@ -0,0 +1,23 @@
+{% load cache i18n %}{% get_current_language as LANGUAGE_CODE %}
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{ LANGUAGE_CODE }}" lang="{{ LANGUAGE_CODE }}">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>fiëé croisée :: {% block title %}{% trans "Home" %}{% endblock %}</title>
+ <link rel="stylesheet" type="text/css" media="all" href="http://yui.yahooapis.com/2.7.0/build/reset-fonts-grids/reset-fonts-grids.css">
+ <link rel="stylesheet" type="text/css" media="all" href="http://yui.yahooapis.com/2.7.0/build/base/base.css">
+ <link rel="stylesheet" href="{{ MEDIA_URL }}css/style.css" type="text/css" media="screen,projection" />
+ <link rel="stylesheet" href="{{ MEDIA_URL }}css/print.css" type="text/css" media="print" />
+ <link rel="shortcut icon" href="{{ MEDIA_URL }}favicon.ico" />
+ <link rel="icon" href="{{ MEDIA_URL }}favicon.ico" type="image/ico" />
+ <script type="text/javascript" src="http://www.google.com/jsapi">
+ </script>
+ <script type="text/javascript">
+ google.load("jquery", "1.3.2");
+ </script>
+ {% block extra_head %}
+ {% endblock %}
+</head>
+<body>
+</body>
+</html>
54 croisee/urls.py
@@ -0,0 +1,54 @@
+from django.conf import settings
+from django.conf.urls.defaults import *
+from django.contrib import admin
+from django.contrib.sitemaps import GenericSitemap
+from feincms.module.page.models import Page
+from schedule.models import Event
+import os
+
+admin.autodiscover()
+
+mysitemaps = {
+ 'page' : GenericSitemap({
+ 'queryset':Page.objects.all(),
+ 'changefreq':'monthly',
+ 'date_field':'modification_date',
+ }, priority=0.6),
+ 'event' : GenericSitemap({
+ 'queryset':Event.objects.all(),
+ 'changefreq':'daily',
+ 'date_field':'created_on',
+ }, priority=0.5),
+}
+
+urlpatterns = patterns('')
+
+# serve static content in debug mode
+if settings.DEBUG:
+ urlpatterns += patterns('',
+ (r'^media/(?P<path>.*)$', 'django.views.static.serve', {
+ 'document_root': settings.MEDIA_ROOT,
+ 'show_indexes' : True
+ }),
+ (r'^medialibrary/(?P<path>.*)$', 'django.views.static.serve', {
+ 'document_root': ('%s/medialibrary/') % settings.MEDIA_ROOT,
+ 'show_indexes' : True
+ }),
+ (r'^feincms_admin_media/(?P<path>.*)$', 'django.views.static.serve', {
+ 'document_root': settings.MEDIA_ROOT+'/feincms_admin_media',
+ 'show_indexes' : True
+ }),
+ (r'^(?P<path>favicon.*)$', 'django.views.static.serve', {
+ 'document_root': settings.MEDIA_ROOT,
+ }),
+ )
+
+
+urlpatterns += patterns('',
+ (r'^/?$', '%s.views.home' % settings.PROJECT_NAME),
+ (r'^calendar/', include('schedule.urls')),
+ (r'^admin/doc/', include('django.contrib.admindocs.urls')),
+ (r'^admin/', include(admin.site.urls)),
+ (r'sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': mysitemaps}),
+ (r'^$|^(.*)/$', 'feincms.views.base.handler'),
+)
9 croisee/views.py
@@ -0,0 +1,9 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+from feincms.views.base import handler
+
+def home(request):
+ """
+ This is only a redirect to the 'home' page of feincms, handled by feincms.views.base.handler
+ """
+ return handler(request, '/home/')
7 django.wsgi
@@ -0,0 +1,7 @@
+import os
+import sys
+# put the Django project on sys.path
+sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
+os.environ["DJANGO_SETTINGS_MODULE"] = "croisee.settings"
+from django.core.handlers.wsgi import WSGIHandler
+application = WSGIHandler()
140 fabfile.py
@@ -0,0 +1,140 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# fabfile for Django:
+# http://morethanseven.net/2009/07/27/fabric-django-git-apache-mod_wsgi-virtualenv-and-p/
+# modified for fabric 0.9/1.0
+from __future__ import with_statement # needed for python 2.5
+from fabric.api import *
+
+# globals
+env.project_name = 'croisee'
+env.use_photologue = False # django-photologue gallery module
+env.use_medialibrary = False # feincms.medialibrary or similar
+
+# environments
+
+def localhost():
+ "Use the local virtual server"
+ env.hosts = ['localhost']
+ env.user = 'hraban'
+ env.path = '/Users/%(user)s/workspace/%(project_name)s' % env
+ env.virtualhost_path = env.path
+
+def webserver():
+ "Use the actual webserver"
+ env.hosts = ['zipanu.fiee.net']
+ env.user = env.project_name
+ env.path = '/var/www/%(project_name)s' % env
+ env.virtualhost_path = env.path
+
+# tasks
+
+def test():
+ "Run the test suite and bail out if it fails"
+ local("cd %(path)s; python manage.py test" % env) #, fail="abort")
+
+
+def setup():
+ """
+ Setup a fresh virtualenv as well as a few useful directories, then run
+ a full deployment
+ """
+ require('hosts', provided_by=[localhost,webserver])
+ require('path')
+ #sudo('aptitude install -y python-setuptools')
+ #sudo('easy_install pip')
+ #sudo('pip install virtualenv')
+ #sudo('aptitude install -y apache2-threaded')
+ #sudo('aptitude install -y libapache2-mod-wsgi') # outdated on hardy!
+ # we want to get rid of the default apache config
+ sudo('cd /etc/apache2/sites-available/; a2dissite default;', pty=True)
+ sudo('mkdir -p %(path)s; chown %(user)s:%(user)s %(path)s;' % env, pty=True)
+ run('ln -s %(path)s www;' % env, pty=True) # symlink web dir in home
+ with cd(env.path):
+ run('virtualenv .;' % env, pty=True)
+ run('mkdir logs; chmod a+w logs; mkdir releases; mkdir shared; mkdir packages;' % env, pty=True)
+ if env.use_photologue: run('mkdir photologue', pty=True);
+ if env.use_medialibrary: run('mkdir medialibrary', pty=True);
+ run('cd releases; ln -s . current; ln -s . previous;', pty=True)
+ deploy()
+
+def deploy():
+ """
+ Deploy the latest version of the site to the servers, install any
+ required third party modules, install the virtual host and
+ then restart the webserver
+ """
+ require('hosts', provided_by=[localhost,webserver])
+ require('path')
+ import time
+ env.release = time.strftime('%Y%m%d%H%M%S')
+ upload_tar_from_git()
+ install_requirements()
+ install_site()
+ symlink_current_release()
+ migrate()
+ restart_webserver()
+
+def deploy_version(version):
+ "Specify a specific version to be made live"
+ require('hosts', provided_by=[localhost,webserver])
+ require('path')
+ env.version = version
+ with cd(env.path):
+ run('rm -rf releases/previous; mv releases/current releases/previous;', pty=True)
+ run('ln -s %(version)s releases/current' % env, pty=True)
+ restart_webserver()
+
+def rollback():
+ """
+ Limited rollback capability. Simple loads the previously current
+ version of the code. Rolling back again will swap between the two.
+ """
+ require('hosts', provided_by=[localhost,webserver])
+ require('path')
+ with cd(env.path):
+ run('mv releases/current releases/_previous;', pty=True)
+ run('mv releases/previous releases/current;', pty=True)
+ run('mv releases/_previous releases/previous;', pty=True)
+ restart_webserver()
+
+# Helpers. These are called by other functions rather than directly
+
+def upload_tar_from_git():
+ "Create an archive from the current Git master branch and upload it"
+ require('release', provided_by=[deploy, setup])
+ local('git archive --format=tar master | gzip > %(release)s.tar.gz' % env)
+ run('mkdir -p %(path)s/releases/%(release)s' % env, pty=True)
+ put('%(release)s.tar.gz' % env, '%(path)s/packages/' % env)
+ run('cd %(path)s/releases/%(release)s && tar zxf ../../packages/%(release)s.tar.gz' % env, pty=True)
+ local('rm %(release)s.tar.gz' % env)
+
+def install_site():
+ "Add the virtualhost file to apache"
+ require('release', provided_by=[deploy, setup])
+ #sudo('cd %(path)s/releases/%(release)s; cp %(project_name)s%(virtualhost_path)s%(project_name)s /etc/apache2/sites-available/' % env, pty=True)
+ sudo('cd %(path)s/releases/%(release)s; cp vhost.conf /etc/apache2/sites-available/%(project_name)s' % env, pty=True)
+ sudo('cd /etc/apache2/sites-available/; a2ensite %(project_name)s' % env, pty=True)
+
+def install_requirements():
+ "Install the required packages from the requirements file using pip"
+ require('release', provided_by=[deploy, setup])
+ run('cd %(path)s; pip install -E . -r ./releases/%(release)s/requirements.txt' % env, pty=True)
+
+def symlink_current_release():
+ "Symlink our current release"
+ require('release', provided_by=[deploy, setup])
+ with cd(env.path):
+ run('rm releases/previous; mv releases/current releases/previous;', pty=True)
+ run('ln -s %(release)s releases/current' % env, pty=True)
+ if env.use_photologue:
+ run('cd releases/current/%(project_name)s/static; rm -rf photologue; ln -s %(path)s/photologue;' % env, pty=True)
+
+def migrate():
+ "Update the database"
+ require('project_name')
+ run('cd %(path)s/releases/current/%(project_name)s; ../../../bin/python manage.py syncdb --noinput' % env, pty=True)
+
+def restart_webserver():
+ "Restart the web server"
+ sudo('/etc/init.d/apache2 reload', pty=True)
6 requirements.txt
@@ -0,0 +1,6 @@
+Django
+#django-tagging
+#django-tinymce
+#django-mptt # nötiger Patch nur im SVN!
+#feincms # nur direkt auf github
+#schedule # nur direkt auf github
45 vhost.conf
@@ -0,0 +1,45 @@
+<VirtualHost *>
+ ServerName croisee.fiee.net
+
+ # disable listing and "guessing" of static files
+ <Directory /var/www/>
+ Options -Indexes FollowSymLinks -MultiViews
+ AllowOverride None
+ Order deny,allow
+ Allow from all
+ </Directory>
+
+ Alias /favicon.ico /var/www/croisee/releases/current/croisee/static/favicon.ico
+
+ # project media
+ Alias /media /var/www/croisee/releases/current/croisee/static
+ <Location "/media">
+ SetHandler None
+ </Location>
+
+ # general admin media
+ Alias /django_admin_media /var/www/croisee/lib/python2.5/site-packages/django/contrib/admin/media
+ <Location "/django_admin_media">
+ SetHandler None
+ </Location>
+
+ # feincms admin media
+ Alias /feincms_admin_media /var/www/python/feincms/media/feincms
+ <Location "/feincms_admin_media">
+ SetHandler None
+ </Location>
+
+ # feincms media library
+ Alias /medialibrary /var/www/croisee/medialibrary
+ <Location "/medialibrary">
+ SetHandler None
+ </Location>
+
+ WSGIDaemonProcess croisee-production user=croisee group=croisee threads=10 python-path=/var/www/croisee/lib/python2.5/site-packages:/var/www/python
+ WSGIProcessGroup croisee-production
+ WSGIScriptAlias / /var/www/croisee/releases/current/django.wsgi
+
+ ErrorLog /var/www/croisee/logs/error.log
+ LogLevel warn
+ CustomLog /var/www/croisee/logs/access.log combined
+</VirtualHost>
Please sign in to comment.
Something went wrong with that request. Please try again.