From bafbf38612feffc73f3a89272db8424e72e7ef1e Mon Sep 17 00:00:00 2001 From: Christian Berg Date: Mon, 10 Aug 2015 20:49:07 +0200 Subject: [PATCH] =?UTF-8?q?Vereinfachung=20Membership=20ist=20nun=20ein=20?= =?UTF-8?q?custom=20login=20model,=20keine=20Abh=C3=A4ngikeiten=20mehr=20z?= =?UTF-8?q?u=20auth.User.=20absofort=20k=C3=B6nnen=20alle=20Benutzer=20ins?= =?UTF-8?q?=20Ranking=20eingetragen=20werden=20und=20nicht=20mehr=20nur=20?= =?UTF-8?q?"zahlende=20Mitglieder".?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/aggregator/migrations/0001_initial.py | 45 ++ src/aggregator/migrations/__init__.py | 0 .../management/commands/syncfacebook.py | 34 + src/content/migrations/0001_initial.py | 90 +++ src/content/migrations/__init__.py | 0 .../templates/content/article_archive.html | 18 +- .../content/article_archive_month.html | 2 +- .../content/article_archive_year.html | 6 +- .../templates/content/article_detail.html | 10 +- .../templates/content/article_form.html | 4 +- src/content/templates/content/page_form.html | 4 +- src/content/views.py | 40 +- src/events/migrations/0001_initial.py | 59 ++ src/events/migrations/__init__.py | 0 .../templates/events/event_archive.html | 24 +- src/events/templates/events/event_detail.html | 31 +- src/events/templates/events/event_form.html | 4 +- src/events/templates/events/event_list.html | 21 +- src/events/templates/events/page.html | 5 +- src/events/views.py | 2 +- src/gallery/migrations/0001_initial.py | 41 ++ src/gallery/migrations/__init__.py | 0 .../gallery/photo_confirm_delete.html | 25 + src/gallery/templates/gallery/photo_list.html | 47 ++ src/kasu/static/css/kasu.css | 697 +++++++++++++++++- src/kasu/static/fonts/FontAwesome.otf | Bin 0 -> 106260 bytes src/kasu/static/fonts/fontawesome-webfont.eot | Bin 0 -> 68875 bytes src/kasu/static/fonts/fontawesome-webfont.svg | 640 ++++++++++++++++ src/kasu/static/fonts/fontawesome-webfont.ttf | Bin 0 -> 138204 bytes .../static/fonts/fontawesome-webfont.woff | Bin 0 -> 81284 bytes .../static/fonts/fontawesome-webfont.woff2 | Bin 0 -> 64464 bytes src/kasu/static/img/background.gif | Bin 524 -> 0 bytes src/kasu/static/img/background.png | Bin 1410 -> 0 bytes src/kasu/static/img/footer-bg.png | Bin 93160 -> 0 bytes src/kasu/static/img/footer-bg.xcf | Bin 190227 -> 0 bytes src/kasu/static/img/footer_bg.png | Bin 82965 -> 0 bytes src/kasu/static/img/header_bg.jpg | Bin 0 -> 31368 bytes src/kasu/static/img/header_bg.png | Bin 129528 -> 0 bytes src/kasu/static/img/kranich.jpg | Bin 0 -> 23876 bytes src/kasu/static/img/navigation-bg.png | Bin 61928 -> 47691 bytes src/kasu/static/img/navigation-hover.png | Bin 3361 -> 1996 bytes src/kasu/static/{css => less}/common.less | 0 src/kasu/static/{css => less}/desktop.less | 77 +- .../static/less/font-aweseome/animated.less | 34 + .../less/font-aweseome/bordered-pulled.less | 25 + src/kasu/static/less/font-aweseome/core.less | 12 + .../less/font-aweseome/fixed-width.less | 6 + .../less/font-aweseome/font-awesome.less | 17 + src/kasu/static/less/font-aweseome/icons.less | 677 +++++++++++++++++ .../static/less/font-aweseome/larger.less | 13 + src/kasu/static/less/font-aweseome/list.less | 19 + .../static/less/font-aweseome/mixins.less | 26 + src/kasu/static/less/font-aweseome/path.less | 15 + .../less/font-aweseome/rotated-flipped.less | 20 + .../static/less/font-aweseome/stacked.less | 20 + .../static/less/font-aweseome/variables.less | 688 +++++++++++++++++ src/kasu/static/{css => less}/kasu.less | 3 +- src/kasu/static/{css => less}/mobile.less | 8 +- src/kasu/static/{css => less}/print.less | 0 src/kasu/templates/base.html | 100 ++- src/kasu/templates/comments/form.html | 12 +- src/kasu/templates/index.html | 33 +- src/kasu/templates/registration/login.html | 16 +- .../registration/password_change_form.html | 2 +- .../registration/password_reset_complete.html | 5 +- .../registration/password_reset_confirm.html | 2 +- .../registration/password_reset_form.html | 2 +- src/kasu/utils.py | 9 +- src/mahjong_ranking/forms.py | 15 +- .../migrations/0001_initial.py | 143 ++++ src/mahjong_ranking/migrations/__init__.py | 0 src/mahjong_ranking/models.py | 4 +- .../hanchan_confirm_delete.html | 10 +- .../mahjong_ranking/hanchan_form.html | 4 +- .../mahjong_ranking/hanchan_list.html | 14 +- .../mahjong_ranking/kyudanranking_list.html | 20 +- .../mahjong_ranking/ladderranking_list.html | 17 +- .../mahjong_ranking/player_dan_score.html | 12 +- .../mahjong_ranking/player_invalid_score.html | 8 +- .../mahjong_ranking/player_kyu_score.html | 8 +- .../mahjong_ranking/player_ladder_score.html | 10 +- src/mahjong_ranking/views.py | 6 +- .../migrations/0001_initial.py | 62 ++ src/maistar_ranking/migrations/__init__.py | 0 .../templates/maistar_ranking/game_form.html | 8 +- .../templates/maistar_ranking/game_list.html | 10 +- .../hanchan_confirm_delete.html | 12 +- .../maistar_ranking/player_game_list.html | 10 +- .../maistar_ranking/ranking_list.html | 9 +- src/maistar_ranking/views.py | 2 +- src/membership/admin.py | 25 +- src/membership/forms.py | 2 +- src/membership/migrations/0001_initial.py | 73 ++ src/membership/migrations/__init__.py | 0 src/membership/models.py | 40 +- .../membership/membership_detail.html | 30 +- .../templates/membership/membership_form.html | 10 +- .../templates/membership/register_form.html | 7 +- src/membership/views.py | 8 +- src/utils/massmailer.py | 8 +- 100 files changed, 3857 insertions(+), 420 deletions(-) create mode 100644 src/aggregator/migrations/0001_initial.py create mode 100644 src/aggregator/migrations/__init__.py create mode 100644 src/content/management/commands/syncfacebook.py create mode 100644 src/content/migrations/0001_initial.py create mode 100644 src/content/migrations/__init__.py create mode 100644 src/events/migrations/0001_initial.py create mode 100644 src/events/migrations/__init__.py create mode 100644 src/gallery/migrations/0001_initial.py create mode 100644 src/gallery/migrations/__init__.py create mode 100644 src/gallery/templates/gallery/photo_confirm_delete.html create mode 100644 src/gallery/templates/gallery/photo_list.html create mode 100644 src/kasu/static/fonts/FontAwesome.otf create mode 100644 src/kasu/static/fonts/fontawesome-webfont.eot create mode 100644 src/kasu/static/fonts/fontawesome-webfont.svg create mode 100644 src/kasu/static/fonts/fontawesome-webfont.ttf create mode 100644 src/kasu/static/fonts/fontawesome-webfont.woff create mode 100644 src/kasu/static/fonts/fontawesome-webfont.woff2 delete mode 100644 src/kasu/static/img/background.gif delete mode 100644 src/kasu/static/img/background.png delete mode 100644 src/kasu/static/img/footer-bg.png delete mode 100644 src/kasu/static/img/footer-bg.xcf delete mode 100644 src/kasu/static/img/footer_bg.png create mode 100644 src/kasu/static/img/header_bg.jpg delete mode 100644 src/kasu/static/img/header_bg.png create mode 100644 src/kasu/static/img/kranich.jpg rename src/kasu/static/{css => less}/common.less (100%) rename src/kasu/static/{css => less}/desktop.less (91%) create mode 100644 src/kasu/static/less/font-aweseome/animated.less create mode 100644 src/kasu/static/less/font-aweseome/bordered-pulled.less create mode 100644 src/kasu/static/less/font-aweseome/core.less create mode 100644 src/kasu/static/less/font-aweseome/fixed-width.less create mode 100644 src/kasu/static/less/font-aweseome/font-awesome.less create mode 100644 src/kasu/static/less/font-aweseome/icons.less create mode 100644 src/kasu/static/less/font-aweseome/larger.less create mode 100644 src/kasu/static/less/font-aweseome/list.less create mode 100644 src/kasu/static/less/font-aweseome/mixins.less create mode 100644 src/kasu/static/less/font-aweseome/path.less create mode 100644 src/kasu/static/less/font-aweseome/rotated-flipped.less create mode 100644 src/kasu/static/less/font-aweseome/stacked.less create mode 100644 src/kasu/static/less/font-aweseome/variables.less rename src/kasu/static/{css => less}/kasu.less (66%) rename src/kasu/static/{css => less}/mobile.less (99%) rename src/kasu/static/{css => less}/print.less (100%) create mode 100644 src/mahjong_ranking/migrations/0001_initial.py create mode 100644 src/mahjong_ranking/migrations/__init__.py create mode 100644 src/maistar_ranking/migrations/0001_initial.py create mode 100644 src/maistar_ranking/migrations/__init__.py create mode 100644 src/membership/migrations/0001_initial.py create mode 100644 src/membership/migrations/__init__.py diff --git a/src/aggregator/migrations/0001_initial.py b/src/aggregator/migrations/0001_initial.py new file mode 100644 index 0000000..82e4d31 --- /dev/null +++ b/src/aggregator/migrations/0001_initial.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations +import utils.html5.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sites', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Feed', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('title', utils.html5.models.CharField(max_length=500)), + ('feed_url', utils.html5.models.URLField(unique=True, max_length=255)), + ('public_url', utils.html5.models.URLField(max_length=255)), + ('last_update', utils.html5.models.DateTimeField(null=True, blank=True)), + ('is_functional', utils.html5.models.BooleanField(default=True)), + ('site', utils.html5.models.ForeignKey(to='sites.Site')), + ], + options={ + 'ordering': ('title',), + }, + ), + migrations.CreateModel( + name='FeedItem', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('title', utils.html5.models.CharField(max_length=500)), + ('link', utils.html5.models.URLField(max_length=500)), + ('guid', utils.html5.models.CharField(unique=True, max_length=255, db_index=True)), + ('summary', utils.html5.models.TextField(blank=True)), + ('date_modified', utils.html5.models.DateTimeField()), + ('feed', utils.html5.models.ForeignKey(related_name='feed_items', to='aggregator.Feed')), + ], + options={ + 'ordering': ('-date_modified',), + }, + ), + ] diff --git a/src/aggregator/migrations/__init__.py b/src/aggregator/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/content/management/commands/syncfacebook.py b/src/content/management/commands/syncfacebook.py new file mode 100644 index 0000000..bc9024e --- /dev/null +++ b/src/content/management/commands/syncfacebook.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +__author__ = 'Christian Berg' + +import urllib + +from datetime import datetime +from django.core.management.base import BaseCommand +from django.conf import settings +import json + + +class Command(BaseCommand): + help = "Synchornisiert den Facenbook Feed für die Anzeige auf der Homepage" + + + def handle(self, *args, **options): + #graph_api = facebook.GraphAPI(settings.FACEBOOK_ACCESS_TOKEN) + #facebook_page = graph_api.get_object(settings.FACEBOOK_APP_ID+'/feed/') + #print facebook_page + #print graph_api.get_connections(facebook_page['id'], ) + self.login() + + def login(self): + args = {'access_token': settings.FACEBOOK_ACCESS_TOKEN} + query = "https://graph.facebook.com/{object}/feed?{args}".format( + object=settings.FACEBOOK_APP_ID, + args=urllib.urlencode(args), + ) + print query + request = urllib.urlopen(query) + print request + response = request.read() + print response + print json.loads(response) \ No newline at end of file diff --git a/src/content/migrations/0001_initial.py b/src/content/migrations/0001_initial.py new file mode 100644 index 0000000..d12d159 --- /dev/null +++ b/src/content/migrations/0001_initial.py @@ -0,0 +1,90 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations +import django.db.models.deletion +from django.conf import settings + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Article', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('headline_de', models.CharField(max_length=255, verbose_name='Schlagzeile')), + ('headline_en', models.CharField(max_length=255, verbose_name=b'Headline', blank=True)), + ('content_de', models.TextField(verbose_name='Inhalt')), + ('content_en', models.TextField(verbose_name=b'Content', blank=True)), + ('image', models.ImageField(upload_to=b'news/', null=True, verbose_name='Bild', blank=True)), + ('slug', models.SlugField(unique_for_month=b'date_created', verbose_name='Slug')), + ('status', models.SmallIntegerField(default=1, verbose_name='Status', choices=[(-1, 'Zur\xfcckgewiesen'), (0, 'Wartend...'), (1, 'Ver\xf6ffentlicht')])), + ('date_created', models.DateTimeField(verbose_name='Erstellt', blank=True)), + ('date_modified', models.DateTimeField(auto_now=True, verbose_name='Bearbeitet')), + ('author', models.ForeignKey(verbose_name='Autor', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'ordering': ('-date_created',), + 'verbose_name': 'Artikel', + 'verbose_name_plural': 'Artikel', + }, + ), + migrations.CreateModel( + name='Category', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('name_de', models.CharField(max_length=80, verbose_name='Name')), + ('name_en', models.CharField(max_length=80, verbose_name='Name', blank=True)), + ('description_de', models.TextField(verbose_name='Beschreibung')), + ('description_en', models.TextField(verbose_name='Beschreibung', blank=True)), + ('image', models.ImageField(upload_to=b'news/categories/', null=True, verbose_name='Bild', blank=True)), + ('slug', models.SlugField(unique=True, verbose_name='Slug')), + ], + options={ + 'ordering': ('slug',), + 'verbose_name': 'Kategorie', + 'verbose_name_plural': 'Kategorien', + }, + ), + migrations.CreateModel( + name='Page', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('menu_name_de', models.CharField(help_text='Ein kurzer Name f\xfcr den Men\xfceintrag', max_length=255, verbose_name=b'Men\xc3\xbc Name')), + ('menu_name_en', models.CharField(help_text='Ein kurzer Name f\xfcr den Men\xfceintrag', max_length=255, verbose_name=b'Menu Name', blank=True)), + ('title_de', models.CharField(help_text='Der Titel erscheint im HTML Header', max_length=255, verbose_name=b'Titel')), + ('title_en', models.CharField(help_text='Der Titel erscheint im HTML Header', max_length=255, verbose_name=b'Title', blank=True)), + ('slug', models.SlugField(verbose_name='Slug')), + ('path', models.CharField(verbose_name='Pfad', unique=True, max_length=100, editable=False, db_index=True)), + ('position', models.PositiveSmallIntegerField(null=True, verbose_name='Position', blank=True)), + ('status', models.SmallIntegerField(default=0, verbose_name='Status', choices=[(-1, 'Zur\xfcckgewiesen'), (0, 'Wartend...'), (1, 'Ver\xf6ffentlicht')])), + ('content_type', models.IntegerField(choices=[(0, 'Django View'), (1, 'HTML'), (2, 'PDF')])), + ('content_de', models.TextField(verbose_name=b'Inhalt', blank=True)), + ('content_en', models.TextField(verbose_name=b'Content', blank=True)), + ('enable_comments', models.BooleanField(default=True, verbose_name='Kommentare m\xf6glich')), + ('template', models.CharField(default=b'content/page.html', max_length=100, verbose_name='Vorlage')), + ('pdf_de', models.FileField(null=True, upload_to=b'pdf/de/', blank=True)), + ('pdf_en', models.FileField(null=True, upload_to=b'pdf/en/', blank=True)), + ('parent', models.ForeignKey(related_name='subpages', on_delete=django.db.models.deletion.SET_NULL, blank=True, to='content.Page', null=True)), + ], + options={ + 'ordering': ['parent__id', 'position'], + 'verbose_name': 'Seite', + 'verbose_name_plural': 'Seiten', + }, + ), + migrations.AddField( + model_name='article', + name='category', + field=models.ForeignKey(verbose_name='Kategorie', to='content.Category'), + ), + migrations.AlterUniqueTogether( + name='page', + unique_together=set([('slug', 'parent')]), + ), + ] diff --git a/src/content/migrations/__init__.py b/src/content/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/content/templates/content/article_archive.html b/src/content/templates/content/article_archive.html index be45095..7d22412 100644 --- a/src/content/templates/content/article_archive.html +++ b/src/content/templates/content/article_archive.html @@ -30,14 +30,14 @@ {% block redbox %} {% block date_list %}

{% trans "Archive" %} {{year}}

-