--- /dev/null
+.PHONY: deploy
+
+
+deploy: prawokultury/settings.d/local.py
+ pip install -r requirements.txt
+ ./manage.py migrate --noinput
+ ./manage.py collectstatic --noinput
+
# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Adding model 'Chunk'
- db.create_table('chunks_chunk', (
- ('key', self.gf('django.db.models.fields.CharField')(max_length=255, primary_key=True)),
- ('description', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)),
- ('content_pl', self.gf('markupfield.fields.MarkupField')(rendered_field=True, blank=True)),
- ('content_en', self.gf('markupfield.fields.MarkupField')(rendered_field=True, blank=True)),
- ('content_pl_markup_type', self.gf('django.db.models.fields.CharField')(default=None, max_length=30, blank=True)),
- ('content_en_markup_type', self.gf('django.db.models.fields.CharField')(default=None, max_length=30, blank=True)),
- ('_content_pl_rendered', self.gf('django.db.models.fields.TextField')()),
- ('_content_en_rendered', self.gf('django.db.models.fields.TextField')()),
- ))
- db.send_create_signal('chunks', ['Chunk'])
-
- # Adding model 'Attachment'
- db.create_table('chunks_attachment', (
- ('key', self.gf('django.db.models.fields.CharField')(max_length=255, primary_key=True)),
- ('attachment', self.gf('django.db.models.fields.files.FileField')(max_length=100)),
- ))
- db.send_create_signal('chunks', ['Attachment'])
-
-
- def backwards(self, orm):
- # Deleting model 'Chunk'
- db.delete_table('chunks_chunk')
-
- # Deleting model 'Attachment'
- db.delete_table('chunks_attachment')
-
-
- models = {
- 'chunks.attachment': {
- 'Meta': {'ordering': "('key',)", 'object_name': 'Attachment'},
- 'attachment': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
- 'key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'primary_key': 'True'})
- },
- 'chunks.chunk': {
- 'Meta': {'ordering': "('key',)", 'object_name': 'Chunk'},
- '_content_en_rendered': ('django.db.models.fields.TextField', [], {}),
- '_content_pl_rendered': ('django.db.models.fields.TextField', [], {}),
- 'content_en': ('markupfield.fields.MarkupField', [], {'rendered_field': 'True', 'blank': 'True'}),
- 'content_en_markup_type': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '30', 'blank': 'True'}),
- 'content_pl': ('markupfield.fields.MarkupField', [], {'rendered_field': 'True', 'blank': 'True'}),
- 'content_pl_markup_type': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '30', 'blank': 'True'}),
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'primary_key': 'True'})
- }
- }
-
- complete_apps = ['chunks']
\ No newline at end of file
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+import markupfield.fields
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Attachment',
+ fields=[
+ ('key', models.CharField(help_text='A unique name for this attachment', max_length=255, serialize=False, verbose_name='key', primary_key=True)),
+ ('attachment', models.FileField(upload_to=b'chunks/attachment')),
+ ],
+ options={
+ 'ordering': ('key',),
+ 'verbose_name': 'attachment',
+ 'verbose_name_plural': 'attachments',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Chunk',
+ fields=[
+ ('key', models.CharField(help_text='A unique name for this piece of content', max_length=255, serialize=False, verbose_name='key', primary_key=True)),
+ ('description', models.CharField(max_length=255, verbose_name='description', blank=True)),
+ ('content_pl', markupfield.fields.MarkupField(help_text='Use <a href="http://textile.thresholdstate.com/">Textile</a> syntax.', verbose_name='content', blank=True)),
+ ('content_en', markupfield.fields.MarkupField(help_text='Use <a href="http://textile.thresholdstate.com/">Textile</a> syntax.', verbose_name='content', blank=True)),
+ ('content_pl_markup_type', models.CharField(default=b'textile_pl', max_length=30, editable=False, blank=True, choices=[(b'', b'--'), (b'textile_pl', b'textile_pl')])),
+ ('content_en_markup_type', models.CharField(default=b'textile_pl', max_length=30, editable=False, blank=True, choices=[(b'', b'--'), (b'textile_pl', b'textile_pl')])),
+ ('_content_pl_rendered', models.TextField(editable=False)),
+ ('_content_en_rendered', models.TextField(editable=False)),
+ ],
+ options={
+ 'ordering': ('key',),
+ 'verbose_name': 'piece',
+ 'verbose_name_plural': 'pieces',
+ },
+ bases=(models.Model,),
+ ),
+ ]
# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Adding model 'Contact'
- db.create_table('contact_contact', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('created_at', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
- ('ip', self.gf('django.db.models.fields.IPAddressField')(max_length=15)),
- ('contact', self.gf('django.db.models.fields.CharField')(max_length=128)),
- ('form_tag', self.gf('django.db.models.fields.CharField')(max_length=32)),
- ('body', self.gf('jsonfield.fields.JSONField')()),
- ))
- db.send_create_signal('contact', ['Contact'])
-
-
- def backwards(self, orm):
- # Deleting model 'Contact'
- db.delete_table('contact_contact')
-
-
- models = {
- 'contact.contact': {
- 'Meta': {'ordering': "('-created_at',)", 'object_name': 'Contact'},
- 'body': ('jsonfield.fields.JSONField', [], {}),
- 'contact': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'form_tag': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'})
- }
- }
-
- complete_apps = ['contact']
\ No newline at end of file
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+import jsonfield.fields
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Attachment',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('tag', models.CharField(max_length=64)),
+ ('file', models.FileField(upload_to=b'contact/attachment')),
+ ],
+ options={
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Contact',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='submission date')),
+ ('ip', models.IPAddressField(default=b'127.0.0.1', verbose_name='IP address')),
+ ('contact', models.CharField(max_length=128, verbose_name='contact')),
+ ('form_tag', models.CharField(max_length=32, verbose_name='form', db_index=True)),
+ ('body', jsonfield.fields.JSONField(verbose_name='body')),
+ ('key', models.CharField(db_index=True, max_length=64, verbose_name='key', blank=True)),
+ ],
+ options={
+ 'ordering': ('-created_at',),
+ 'verbose_name': 'submitted form',
+ 'verbose_name_plural': 'submitted forms',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.AddField(
+ model_name='attachment',
+ name='contact',
+ field=models.ForeignKey(to='contact.Contact'),
+ preserve_default=True,
+ ),
+ ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Adding model 'Attachment'
- db.create_table('contact_attachment', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('contact', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contact.Contact'])),
- ('tag', self.gf('django.db.models.fields.CharField')(max_length=64)),
- ('file', self.gf('django.db.models.fields.files.FileField')(max_length=100)),
- ))
- db.send_create_signal('contact', ['Attachment'])
-
- # Adding index on 'Contact', fields ['form_tag']
- db.create_index('contact_contact', ['form_tag'])
-
-
- def backwards(self, orm):
- # Removing index on 'Contact', fields ['form_tag']
- db.delete_index('contact_contact', ['form_tag'])
-
- # Deleting model 'Attachment'
- db.delete_table('contact_attachment')
-
-
- models = {
- 'contact.attachment': {
- 'Meta': {'object_name': 'Attachment'},
- 'contact': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contact.Contact']"}),
- 'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'tag': ('django.db.models.fields.CharField', [], {'max_length': '64'})
- },
- 'contact.contact': {
- 'Meta': {'ordering': "('-created_at',)", 'object_name': 'Contact'},
- 'body': ('jsonfield.fields.JSONField', [], {}),
- 'contact': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'form_tag': ('django.db.models.fields.CharField', [], {'max_length': '32', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'})
- }
- }
-
- complete_apps = ['contact']
\ No newline at end of file
+++ /dev/null
-# -*- coding: utf-8 -*-
-from south.utils import datetime_utils as datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Adding field 'Contact.key'
- db.add_column(u'contact_contact', 'key',
- self.gf('django.db.models.fields.CharField')(db_index=True, default='', max_length=64, blank=True),
- keep_default=False)
-
-
- def backwards(self, orm):
- # Deleting field 'Contact.key'
- db.delete_column(u'contact_contact', 'key')
-
-
- models = {
- u'contact.attachment': {
- 'Meta': {'object_name': 'Attachment'},
- 'contact': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contact.Contact']"}),
- 'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'tag': ('django.db.models.fields.CharField', [], {'max_length': '64'})
- },
- u'contact.contact': {
- 'Meta': {'ordering': "('-created_at',)", 'object_name': 'Contact'},
- 'body': ('jsonfield.fields.JSONField', [], {}),
- 'contact': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'form_tag': ('django.db.models.fields.CharField', [], {'max_length': '32', 'db_index': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip': ('django.db.models.fields.IPAddressField', [], {'default': "'127.0.0.1'", 'max_length': '15'}),
- 'key': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '64', 'blank': 'True'})
- }
- }
-
- complete_apps = ['contact']
\ No newline at end of file
+++ /dev/null
-from fnpdjango.utils.app import AppSettings
-
-
-class Settings(AppSettings):
- BOX_LENGTH = 3
-
-
-app_settings = Settings('EVENTS')
+++ /dev/null
-# -*- coding: utf-8 -*-
-# This file is part of PrawoKultury, licensed under GNU Affero GPLv3 or later.
-# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
-#
-from django.conf import settings
-from django.contrib import admin
-from fnpdjango.utils.models.translation import translated_fields
-from events.models import Event
-
-
-class EventAdmin(admin.ModelAdmin):
- fieldsets = (
- (None, {'fields': ('date', 'link')}),
- ) + tuple(
- (ln, {'fields': (
- ('published_%s' % lc),
- 'title_%s' % lc,
- 'organizer_%s' % lc,
- 'place_%s' % lc,
- )})
- for lc, ln in settings.LANGUAGES
- )
- list_display = translated_fields(
- ('title', 'place', 'organizer', 'published'), settings.LANGUAGES
- ) + ('date',)
- date_hierarchy = 'date'
- list_filter = translated_fields(('published',))
-
-
-admin.site.register(Event, EventAdmin)
+++ /dev/null
-# 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: prawokultury-events\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 15:58+0200\n"
-"PO-Revision-Date: 2012-08-30 15:59+0100\n"
-"Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
-"Language-Team: FNP <fundacja@nowoczesnapolska.org.pl>\n"
-"Language: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
-
-#: models.py:13
-msgid "date"
-msgstr "data"
-
-#: models.py:14
-msgid "link"
-msgstr "link"
-
-#: models.py:17
-msgid "event"
-msgstr "wydarzenie"
-
-#: models.py:18
-msgid "events"
-msgstr "wydarzenia"
-
-#: models.py:29
-#, python-format
-msgid "Published event should have a title in relevant language (%s)."
-msgstr "Opublikowane wydarzenie powinno mieć tytuł w odpowiednim języku (%s)."
-
-#: models.py:33
-msgid "title"
-msgstr "tytuł"
-
-#: models.py:34
-msgid "organizer"
-msgstr "organizator"
-
-#: models.py:36
-msgid "place"
-msgstr "miejsce"
-
-#: models.py:37
-msgid "published"
-msgstr "opublikowane"
-
-#: urls.py:11
-msgid "past"
-msgstr "przeszle"
-
-#: templates/events/event_list.html:7
-msgid "Events"
-msgstr "Wydarzenia"
-
-#: templates/events/event_list.html:18
-msgid "see upcoming events"
-msgstr "zobaczy nadchodzące wydarzenia"
-
-#: templates/events/event_list.html:22
-msgid "see past events"
-msgstr "zobacz przeszłe wydarzenia"
-
-#: templates/events/snippets/event_short.html:9
-msgid "Organizer"
-msgstr "Organizator"
-
-#: templates/events/snippets/events_box.html:21
-msgid "more events"
-msgstr "więcej wydarzeń"
-
+++ /dev/null
-# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Adding model 'Event'
- db.create_table('events_event', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('date', self.gf('django.db.models.fields.DateTimeField')(max_length=255, db_index=True)),
- ('link', self.gf('django.db.models.fields.URLField')(max_length=200)),
- ('title_pl', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('title_en', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('organizer_pl', self.gf('django.db.models.fields.CharField')(max_length=255, db_index=True)),
- ('organizer_en', self.gf('django.db.models.fields.CharField')(max_length=255, db_index=True)),
- ('place_pl', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('place_en', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ))
- db.send_create_signal('events', ['Event'])
-
-
- def backwards(self, orm):
- # Deleting model 'Event'
- db.delete_table('events_event')
-
-
- models = {
- 'events.event': {
- 'Meta': {'ordering': "['date']", 'object_name': 'Event'},
- 'date': ('django.db.models.fields.DateTimeField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'link': ('django.db.models.fields.URLField', [], {'max_length': '200'}),
- 'organizer_en': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'organizer_pl': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
- 'place_en': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'place_pl': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'title_en': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'title_pl': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- }
- }
-
- complete_apps = ['events']
\ No newline at end of file
+++ /dev/null
-# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Adding field 'Event.published_pl'
- db.add_column('events_event', 'published_pl',
- self.gf('django.db.models.fields.BooleanField')(default=False),
- keep_default=False)
-
- # Adding field 'Event.published_en'
- db.add_column('events_event', 'published_en',
- self.gf('django.db.models.fields.BooleanField')(default=False),
- keep_default=False)
-
- if not db.dry_run:
- orm.Event.objects.all().update(published_pl=True, published_en=True)
-
-
- def backwards(self, orm):
- # Deleting field 'Event.published_pl'
- db.delete_column('events_event', 'published_pl')
-
- # Deleting field 'Event.published_en'
- db.delete_column('events_event', 'published_en')
-
-
- models = {
- 'events.event': {
- 'Meta': {'ordering': "['date']", 'object_name': 'Event'},
- 'date': ('django.db.models.fields.DateTimeField', [], {'max_length': '255', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'link': ('django.db.models.fields.URLField', [], {'max_length': '200'}),
- 'organizer_en': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
- 'organizer_pl': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}),
- 'place_en': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'place_pl': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'published_en': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'published_pl': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'title_en': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'title_pl': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
- }
- }
-
- complete_apps = ['events']
\ No newline at end of file
+++ /dev/null
-# -*- coding: utf-8 -*-
-# This file is part of PrawoKultury, licensed under GNU Affero GPLv3 or later.
-# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
-#
-from django.conf import settings
-from django.core.exceptions import ValidationError
-from django.db import models
-from django.utils.translation import ugettext_lazy as _, ugettext
-from fnpdjango.utils.models.translation import add_translatable
-
-
-class Event(models.Model):
- date = models.DateTimeField(_('date'), max_length=255, db_index=True)
- link = models.URLField(_('link'))
-
- class Meta:
- verbose_name = _('event')
- verbose_name_plural = _('events')
- ordering = ['date']
-
- def __unicode__(self):
- return self.title
-
- def clean(self):
- for lc, ln in settings.LANGUAGES:
- if (getattr(self, "published_%s" % lc) and
- not getattr(self, "title_%s" % lc)):
- raise ValidationError(
- ugettext("Published event should have a title in relevant language (%s).") % lc)
-
-
-add_translatable(Event, {
- 'title': models.CharField(_('title'), max_length=255, blank=True),
- 'organizer': models.CharField(_('organizer'), max_length=255,
- db_index=True, blank=True),
- 'place': models.CharField(_('place'), max_length=255, blank=True),
- 'published': models.BooleanField(_('published'), default=False),
-})
+++ /dev/null
-from django.conf import settings
-import datetime
-from haystack import indexes
-from events.models import Event
-from fnpdjango.utils.models.translation import add_translatable_index
-
-
-class EventIndex(indexes.RealTimeSearchIndex, indexes.Indexable):
- def get_model(self):
- return Event
-
- def index_queryset(self):
- """Used when the entire index for model is updated."""
- return self.get_model().objects.all()
-
-
-add_translatable_index(EventIndex, {
-# Haystack needs a main field to be the same across all indexes
-# so we treat title of the event as this main content, named 'body'
- 'body': indexes.CharField(model_attr='title', null=True),
- 'organizer': indexes.CharField(null=True),
- 'place': indexes.CharField(null=True)
- })
-
-
-getattr(EventIndex, "body_%s" % settings.LANGUAGE_CODE).document = True
+++ /dev/null
-.event {
- margin-top: 2em;
- padding-bottom: 2em;
- border-bottom: 1px solid #8b8b87; }
- .event h2 {
- color: #01519a;
- font-weight: normal;
- font-size: 1.4em;
- margin-bottom: 1.1em; }
- .event a {
- display: block;
- color: #363a3b; }
- .event .title {
- font-size: 1.3em; }
- .event .description {
- font-size: 1.3em;
- margin-top: 1.4em; }
+++ /dev/null
-.event {
- margin-top: 2em;
- padding-bottom: 2em;
- border-bottom: 1px solid #8b8b87;
-
- h2 {
- color: #01519a;
- font-weight: normal;
- font-size: 1.4em;
- margin-bottom: 1.1em;
- }
-
- a {
- display: block;
- color: #363a3b;
- }
-
- .title {
- font-size: 1.3em;
- }
-
- .description {
- font-size: 1.3em;
- margin-top: 1.4em;
- }
-
-
-}
+++ /dev/null
-{% extends "base.html" %}
-{% load url from future %}
-{% load i18n pagination_tags fnp_prevnext %}
-{% load events_tags %}
-
-{% block body %}
-<h1>{% trans "Events" %}</h1>
-
-{% autopaginate object_list 10 %}
-{% for event in object_list %}
- {% event_short event %}
-{% endfor %}
-
-<p class="prevnext">
-{% next_page %}
-{% if past %}
- {% url "events" as prev_url %}
- {% trans "see upcoming events" as prev_label %}
- {% previous_page prev_url prev_label %}
-{% else %}
- {% url "events_past" as prev_url %}
- {% trans "see past events" as prev_label %}
- {% previous_page prev_url prev_label %}
-{% endif %}
-</p>
-
-{% endblock %}
+++ /dev/null
-{% load i18n %}
- <div class="event">
- <a href="{{ event.link }}">
- <h2>{{ event.date }}</h2>{# just date #}
- <strong class="title">{{ event.title }}</strong>
-
- <div class="description">
- {{ event.date }}, {{ event.place }}<br/>
- {% trans "Organizer" %}: {{ event.organizer }}<br/>
- </div>
- </a>
- </div>
-
+++ /dev/null
-{% load i18n %}
-{% load url from future %}
-
-<ul class="event-list">
-{% for event in objects %}
- <li class="event-list-item">
- <a target="_blank" href="{{ event.link }}">
- <div class="date">
- <div class="day">{{ event.date|date:"j" }}</div>
- <div class="mon">{{ event.date|date:"b" }}</div>
- </div>
- <div class="description">
- {{ event.title }}
- ({{ event.organizer }}, {{ event.place }})
- </div>
- <div style="clear: both"></div>
- </a>
- </li>
-{% endfor %}
-</ul>
-<!--p class="more"><a href="{% url 'events' %}">{% trans "more events" %}</a></p-->
+++ /dev/null
-# -*- coding: utf-8 -*-
-# This file is part of PrawoKultury, licensed under GNU Affero GPLv3 or later.
-# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
-#
-from django import template
-from events import app_settings
-from events.models import Event
-
-register = template.Library()
-from datetime import datetime
-
-
-@register.inclusion_tag('events/snippets/events_box.html', takes_context=True)
-def events_box(context, limit=app_settings.BOX_LENGTH):
- lang = context['request'].LANGUAGE_CODE
- objects = Event.objects.filter(**{"published_%s" % lang: True})
- objects = objects.filter(date__gte=datetime.now())[:limit]
- return {'objects': objects}
-
-
-@register.inclusion_tag('events/snippets/event_short.html')
-def event_short(event):
- return {'event': event}
+++ /dev/null
-# -*- coding: utf-8 -*-
-# This file is part of PrawoKultury, licensed under GNU Affero GPLv3 or later.
-# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
-#
-"""
-This file demonstrates writing tests using the unittest module. These will pass
-when you run "manage.py test".
-
-Replace this with more appropriate tests for your application.
-"""
-
-from django.test import TestCase
-
-
-class SimpleTest(TestCase):
- def test_basic_addition(self):
- """
- Tests that 1 + 1 always equals 2.
- """
- self.assertEqual(1 + 1, 2)
+++ /dev/null
-# -*- coding: utf-8 -*-
-# This file is part of PrawoKultury, licensed under GNU Affero GPLv3 or later.
-# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
-#
-from django.conf.urls import patterns, include, url
-from django.utils.translation import string_concat, ugettext_lazy as _
-
-
-urlpatterns = patterns('events.views',
- url(r'^$', 'events', name='events'),
- url(string_concat('^', _('past'), '/$'), 'events_past', name='events_past'),
-)
+++ /dev/null
-from datetime import datetime
-from django.shortcuts import render
-from events.models import Event
-
-
-def events(request):
- events = Event.objects.filter(date__gte=datetime.now())
- events = events.filter(**{"published_%s" % request.LANGUAGE_CODE: True})
- return render(request, 'events/event_list.html', {
- 'object_list': events,
- })
-
-
-def events_past(request):
- events = Event.objects.filter(date__lte=datetime.now()).order_by('-date')
- events = events.filter(**{"published_%s" % request.LANGUAGE_CODE: True})
- return render(request, 'events/event_list.html', {
- 'object_list': events,
- 'past': True,
- })
If no url or title is provided, get_absolute_url and __unicode__ are used.
You can also provide a reverse lookup dictionary, as in {model: field_name}.
"""
- def __init__(self, obj, url=None, rev_lookups=None, title=None, html_id=None):
+ def __init__(self, obj_lookup, url=None, rev_lookups=None, title=None, html_id=None):
super(ObjectMenuItem, self).__init__(url=url, title=title, html_id=html_id)
- self.obj = obj
+ self.obj_lookup = obj_lookup
self.rev_lookups = rev_lookups
+ @property
+ def obj(self):
+ from migdal.models import Entry
+ try:
+ entry = Entry.objects.get(**self.obj_lookup)
+ except Entry.DoesNotExist:
+ return
+ if not entry.published:
+ return None
+ return entry
+
def get_title(self):
return self.title or unicode(self.obj)
{% load i18n %}
{% for item in items %}
+ {% if item.obj %}
<li{% if item.active %}
class="active"{%endif %} {% if item.html_id %}
id="{{ item.html_id}}"{% endif %}>
<a href="{{ item.get_url }}">{{ item.get_title }}</a></li>
+ {% endif %}
{% endfor %}
# -*- coding: utf-8 -*-
-from migdal.models import Entry
from menu.helpers import ObjectMenuItem
ITEMS = []
def add_entry(**qs):
- try:
- entry = Entry.objects.get(**qs)
- except Entry.DoesNotExist:
- return
- if not entry.published:
- return
- ITEMS.append(ObjectMenuItem(entry))
+ ITEMS.append(ObjectMenuItem(qs))
+
add_entry(slug_pl='co')
add_entry(slug_pl='gdzie')
'prawokultury',
'fnpdjango',
- #'events',
'menu',
'migdal',
'contact',
'sponsors',
'django_gravatar',
- 'south',
- 'django.contrib.comments',
+ 'django_comments',
'django_comments_xtd',
'pipeline',
'haystack',
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.utils.translation import ugettext_lazy as _, string_concat
from fnpdjango.utils.urls import i18n_patterns
-from events.urls import urlpatterns as events_urlpatterns
from migdal.urls import urlpatterns as migdal_urlpatterns
admin.autodiscover()
(r'^accounts/login/$', 'django_cas.views.login'),
(r'^accounts/logout/$', 'django_cas.views.logout'),
-) + i18n_patterns('',
- #url(string_concat(r'^', _('events'), r'/'), include('events.urls')),
+) + i18n_patterns(
url(r'^comments/', include('django_comments_xtd.urls')),
url(r'^contact/', include('contact.urls')),
) + migdal_urlpatterns
--i https://py.mdrn.pl:8443/simple
+-i https://py.mdrn.pl/simple
-Django>=1.6,<1.7
-fnpdjango==0.2.4
+Django>=1.7,<1.8
+fnpdjango==0.3
django_cas>=2.1,<2.2
-South>=0.7.4
Pillow
-sorl-thumbnail>=11.09,<12
+sorl-thumbnail==12.2
django-pagination
-django-migdal==0.5.2
+django-migdal==0.8.5
pytz
-jsonfield>=0.9.20
+jsonfield==1.0.3
-django-markupfield>=1.2,<1.3
+django-markupfield==1.4.3
django-gravatar2
-django-comments-xtd==1.3a1
+django-comments-xtd==1.4.0 # for migdal
+django-contrib-comments==1.6.0 # for migdal
django-pipeline>=1.3.23,<1.4
django-extensions
six
pysolr
django-piwik
-django-sponsors>=1.2.1,<2.0
+django-sponsors==2.1
-mailchimp3
\ No newline at end of file
+
+mailchimp3
+
+python-slugify==1.2.2