Vereinfachung Membership ist nun ein custom login model, keine Abhängikeiten mehr zu auth.User.

absofort können alle Benutzer ins Ranking eingetragen werden und nicht mehr nur "zahlende Mitglieder".
This commit is contained in:
Christian Berg
2015-08-10 20:49:07 +02:00
committed by Christian Berg
parent b96b485b61
commit bafbf38612
100 changed files with 3857 additions and 420 deletions

View File

@@ -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)

View File

@@ -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')]),
),
]

View File

View File

@@ -30,14 +30,14 @@
{% block redbox %}
{% block date_list %}
<h2>{% trans "Archive" %} {{year}}</h2>
<ul class="list" style="margin: 20px;">
<ul class="fa-ul">
{% if active_category %}
{% for date in date_list %}
<li class="date"><a href="{% url 'article-archive' category=active_category.slug year=date|date:'Y' %}">{{active_category.name}}: {{ date|date:'Y' }}</a></li>
<li><span class="fa fa-calendar-o fa-fw"></span> <a href="{% url 'article-archive' category=active_category.slug year=date|date:'Y' %}">{{active_category.name}}: {{ date|date:'Y' }}</a></li>
{% endfor %}
{% else %}
{% for date in date_list %}
<li class="date"><a href="{% url 'article-archive' year=date|date:'Y' %}">{{ date|date:'Y' }}</a></li>
<li><span class="fa fa-calendar-o fa-fw"></span> <a href="{% url 'article-archive' year=date|date:'Y' %}">{{ date|date:'Y' }}</a></li>
{% endfor %}
{% endif %}
</ul>
@@ -61,13 +61,13 @@
<article class="article">
<h3><a href="{{article.get_absolute_url}}">{{article.headline}}</a></h3>
<ul class="info">
<li><img src="{{STATIC_URL}}icons/calendar.png" alt="{% trans 'created on' %}:" title="{% trans 'created on' %}"/> <time datetime="{{article.date_created|date:'c'}}">{{ article.date_created|date }}</time></li>
<li><img src="{{STATIC_URL}}icons/user_red.png" alt="{% trans 'by' %}:" title="{% trans 'by' %}"/> <span class="author">{{ article.author }}</span></li>
<li><img src="{{STATIC_URL}}icons/comments.png" alt="{% trans 'comments' %}:" title="{% trans 'comments' %}"/> <a href="{{article.get_absolute_url}}#comments" >{{comment_count}} {% trans "comments" %}</a></li>
<li><span class="fa fa-calendar-o" title="{% trans 'created on' %}"></span> <time datetime="{{article.date_created|date:'c'}}">{{ article.date_created|date }}</time></li>
<li><span class="fa fa-user" title="{% trans 'by' %}"/> {{ article.author }}</li>
<li><span class="fa fa-comments" title="{% trans 'comments' %}"></span> <a href="{{article.get_absolute_url}}#comments" >{{comment_count}} {% trans "comments" %}</a></li>
</ul>
<a href="{{article.get_absolute_url}}"><img src="{{article.posting_image.url}}" alt="{{article.category}}:" class="posting_image"/></a>
<a href="{{article.get_absolute_url}}"><img src="{{article.posting_image.url}}" alt="{{article.category}}:" class="posting_image" width="200" height="120"/></a>
{{article.content|truncatewords_html:50}}
<p class="more_link"><a href="{{article.get_absolute_url}}" class="button">{% trans "Read More"%} <img src="{{STATIC_URL}}icons/page_go.png" alt="&raquo;" /></a></p>
<p class="more_link"><a href="{{article.get_absolute_url}}" class="button">{% trans "Read More"%} <span class="fa fa-arrow-right"></span></a></p>
</article>
{% empty %}
<p>{% trans "We're sorry. Your search yielded no results." %}</p>
@@ -88,6 +88,6 @@
{% block additional_buttonbar %}
{% if perms.content.add_article %}
<a href="{% url 'add-article' %}" class="button"><img src="{{ STATIC_URL }}icons/note_add.png" alt="" /> {% trans "Add Article" %}</a>
<a href="{% url 'add-article' %}" class="button"><span class="fa fa-newspaper-o"></span> {% trans "Add Article" %}</a>
{% endif %}
{% endblock %}

View File

@@ -4,6 +4,6 @@
{% block date_list %}
<h2>{% trans "Archive" %} {{month|date:'E'}}</h2>
<div class="buttonbar">
<a href="{% url 'article-archive' year=month|date:'Y' %}" class="button"><img src="{{ STATIC_URL }}icons/arrow_undo.png" alt="{% trans 'back' %}" /> {% trans 'back' %}</a>
<a href="{% url 'article-archive' year=month|date:'Y' %}" class="button"><span class="fa fa-undo"></span> {% trans 'back' %}</a>
</div>
{% endblock %}

View File

@@ -6,14 +6,14 @@
{% block date_list %}
<h2>{% trans "Archive" %} {{year}}</h2>
<ul class="list" style="margin: 20px;">
<ul class="fa-ul">
{% if active_category %}
{% for date in date_list %}
<li class="date"><a href="{% url 'article-archive' category=active_category.slug year=year|date:'Y' month=date|date:'m' %}">{{active_category.name}}: {{ date|date:'F' }}</a></li>
<li><span class="fa fa-calendar-o fa-fw"></span> <a href="{% url 'article-archive' category=active_category.slug year=year|date:'Y' month=date|date:'m' %}">{{active_category.name}}: {{ date|date:'F' }}</a></li>
{% endfor %}
{% else %}
{% for date in date_list %}
<li class="date"><a href="{% url 'article-archive' year=year|date:'Y' month=date|date:'m' %}">{{ date|date:'F' }}</a></li>
<li><span class="fa fa-calendar-o fa-fw"></span> <a href="{% url 'article-archive' year=year|date:'Y' month=date|date:'m' %}">{{ date|date:'F' }}</a></li>
{% endfor %}
{% endif %}
</ul>

View File

@@ -28,10 +28,10 @@
<img alt="{{article.category.name}}" src="{{article.posting_image.url}}" class="posting_image" itemprop="image"/>
<p>&nbsp;</p>
<ul class="info">
<li class="user"><strong>{% trans 'Author' %}:</strong> <a href="{% url 'membership-details' article.author %}" itemprop="author">{{article.author}}</a></li>
<li class="date"><strong>{% trans 'Created on' %}: </strong><time datetime="{{article.date_created|date:'Y-m-d H:i'}}">{{ article.date_created|date }}</time></li>
<li class="category"><strong>{% trans "Category"%}: </strong><a href="{{ article.category.get_absolute_url }}" itemprop="articleSection">{{article.category.name}}</a></li>
<ul class="fa-ul">
<li><span class="fa-li fa fa-user"></span> <strong>{% trans 'Author' %}:</strong> <a href="{% url 'membership-details' article.author %}" itemprop="author">{{article.author}}</a></li>
<li><span class="fa-li fa fa-calendar-o"></span> <strong>{% trans 'Created on' %}: </strong><time datetime="{{article.date_created|date:'Y-m-d H:i'}}">{{ article.date_created|date }}</time></li>
<li><span class="fa-li fa fa-tag"></span> <strong>{% trans "Category"%}: </strong><a href="{{ article.category.get_absolute_url }}" itemprop="articleSection">{{article.category.name}}</a></li>
</ul>
<p class="center">
@@ -49,6 +49,6 @@
{% block buttonbar %}
{% if perms.content.change_article %}
<a href="{% url 'edit-article' article.id %}" class="button"><img src="{{STATIC_URL}}icons/note_edit.png" alt="" />{% trans "Edit Article" %}</a>
<a href="{% url 'edit-article' article.id %}" class="button"><span class="fa fa-pencil"></span> {% trans "Edit Article" %}</a>
{% endif %}
{% endblock %}

View File

@@ -33,8 +33,8 @@
</fieldset>
</div>
<p class="buttonbar">
<button type="reset"><img src="{{STATIC_URL}}icons/arrow_undo.png" alt="{% trans 'reset' %}" /> {% trans 'reset' %}</button>
<button type="submit"><img src="{{STATIC_URL}}icons/disk.png" alt="{% trans 'save' %}" /> {% trans 'save' %}</button>
<button type="reset"><span class="fa fa-undo"></span> {% trans 'reset' %}</button>
<button type="submit"><span class="fa fa-hdd-o"></span> {% trans 'save' %}</button>
</p>
</form>
{% endblock %}

View File

@@ -58,8 +58,8 @@
</fieldset>
<p class="buttonbar">
<button type="reset"><img src="{{STATIC_URL}}icons/arrow_undo.png" alt="{% trans 'reset' %}" /> {% trans 'reset' %}</button>
<button type="submit"><img src="{{STATIC_URL}}icons/page_save.png" alt="{% trans 'save' %}" /> {% trans 'save' %}</button>
<button type="reset"><span class="fa fa-undo"></span> {% trans 'reset' %}</button>
<button type="submit"><span class="fa fa-hdd-o"></span> {% trans 'save' %}</button>
</p>
</form>

View File

@@ -1,21 +1,29 @@
# Create your views here.
import os
from django.conf import settings
import django_comments as comments
import os
from django.conf import settings
from django.http import HttpResponse, Http404
from django.utils.translation import ugettext as _
from django.views import generic
from django.shortcuts import get_object_or_404
from . import models, forms
from aggregator.models import Feed
from events.models import Photo
from utils.mixins import PermissionRequiredMixin
import events.models
class ArticleArchiveMixin(object):
def get_category(self, queryset):
try:
self.category = models.Category.objects.get(slug=self.kwargs['category'])
return queryset.filter(category=self.category)
except models.Category.DoesNotExist:
raise Http404(_("This Category does not exist."))
except KeyError:
self.category = None
return self.queryset
def get_context_data(self, **kwargs):
context = super(ArticleArchiveMixin, self).get_context_data(**kwargs)
context['categories'] = models.Category.objects.all()
@@ -24,7 +32,6 @@ class ArticleArchiveMixin(object):
return context
# noinspection PyAttributeOutsideInit
class ArticleArchiveIndex(ArticleArchiveMixin, generic.ArchiveIndexView):
queryset = models.Article.objects.filter(status=models.STATUS_PUBLISHED)
date_field = 'date_created'
@@ -34,13 +41,7 @@ class ArticleArchiveIndex(ArticleArchiveMixin, generic.ArchiveIndexView):
def get_queryset(self):
queryset = generic.ArchiveIndexView.get_queryset(self)
self.category = self.kwargs.get('category')
if self.category:
try:
self.category = models.Category.objects.get(slug=self.category)
queryset = queryset.filter(category=self.category)
except models.Category.DoesNotExist:
raise Http404(_("This Category does not exist."))
queryset = self.get_category(queryset)
return queryset
@@ -54,11 +55,7 @@ class ArticleYearArchive(ArticleArchiveMixin, generic.YearArchiveView):
def get_queryset(self):
queryset = generic.YearArchiveView.get_queryset(self)
self.category = self.kwargs.get('category')
if self.category:
self.category = get_object_or_404(models.Category,
slug=self.category)
queryset = queryset.filter(category=self.category)
queryset = self.get_category(queryset)
return queryset
@@ -72,10 +69,7 @@ class ArticleMonthArchive(ArticleArchiveMixin, generic.MonthArchiveView):
def get_queryset(self):
queryset = generic.MonthArchiveView.get_queryset(self)
self.category = self.kwargs.get('category')
if self.category:
self.category = models.Category.objects.get(slug=self.category)
queryset = queryset.filter(category=self.category)
queryset = self.get_category(queryset)
return queryset
@@ -208,7 +202,7 @@ class StartPage(generic.TemplateView):
def get_context_data(self, **kwargs):
page = models.Page.objects.get(slug='index')
random_photo = events.models.Photo.objects.get_random(startpage=True)
random_photo = Photo.objects.get_random(startpage=True)
recent_comment_list = comments.get_model().objects.filter(
site__pk=settings.SITE_ID,
is_public=True,