Diverse Code Cleanups
*Code wurde PEP-8 gerecht formatiert * Kleine Fehler die der PyCharm Inspector beanstandet wurden korrigiert
This commit is contained in:
committed by
Christian Berg
parent
f34281089d
commit
86a0db050d
@@ -1,8 +1,8 @@
|
||||
'''
|
||||
"""
|
||||
Created on 19.09.2011
|
||||
|
||||
@author: christian
|
||||
'''
|
||||
"""
|
||||
# import stuff we need from django
|
||||
from django.contrib import admin
|
||||
from . import models
|
||||
@@ -44,17 +44,20 @@ class PageAdmin(admin.ModelAdmin):
|
||||
'classes': ('collapse', 'closed'),
|
||||
}),
|
||||
('Meta Data', {
|
||||
'fields': ('content_type', 'slug', ('parent', 'position'),
|
||||
'status', 'template',)
|
||||
'fields': (
|
||||
'content_type', 'slug', ('parent', 'position'),
|
||||
'status', 'template',
|
||||
)
|
||||
}),
|
||||
)
|
||||
|
||||
class Media:
|
||||
class Media(object):
|
||||
js = [
|
||||
'/static/js/tiny_mce/tiny_mce.js',
|
||||
'/static/js/tinymce_setup.js',
|
||||
'/static/js/tiny_mce/tiny_mce.js',
|
||||
'/static/js/tinymce_setup.js',
|
||||
]
|
||||
|
||||
|
||||
admin.site.register(models.Article, ArticleAdmin)
|
||||
admin.site.register(models.Page, PageAdmin)
|
||||
admin.site.register(models.Category, CategoryAdmin)
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# -*- encoding: UTF-8 -*-
|
||||
'''
|
||||
"""
|
||||
Created on 30.09.2011
|
||||
|
||||
@author: christian
|
||||
'''
|
||||
"""
|
||||
from . import models
|
||||
from django.core.cache import cache
|
||||
|
||||
@@ -16,7 +16,7 @@ def content_menus(request):
|
||||
# erzeuge das Top-Level Menü
|
||||
top_menu_items = []
|
||||
top_level_pages = cache.get('top_level_pages')
|
||||
if top_level_pages == None:
|
||||
if top_level_pages is None:
|
||||
top_level_pages = models.Page.objects.filter(parent=None)
|
||||
top_level_pages = top_level_pages.exclude(slug='index')
|
||||
top_level_pages = top_level_pages.order_by('position')
|
||||
@@ -31,7 +31,7 @@ def content_menus(request):
|
||||
|
||||
# Entdecke die aktuell geöffnete Seite
|
||||
all_pages = cache.get('all_pages')
|
||||
if all_pages == None:
|
||||
if all_pages is None:
|
||||
all_pages = models.Page.objects.values_list('path', 'id')
|
||||
all_pages = dict((path, page_id) for path, page_id in all_pages)
|
||||
cache.set('all_pages', all_pages, 360)
|
||||
|
||||
@@ -7,13 +7,14 @@ from django.utils.feedgenerator import Rss201rev2Feed
|
||||
from models import Article
|
||||
|
||||
|
||||
# noinspection PyMethodMayBeStatic
|
||||
class LatestNews(Feed):
|
||||
link = "http://www.kasu.at/"
|
||||
description = _("Current news from Kasu")
|
||||
title = "Kasu - traditonelle asiatische Spielkultur"
|
||||
feed_type = Rss201rev2Feed
|
||||
|
||||
def items(self, obj):
|
||||
def items(self):
|
||||
return Article.objects.published()[:10]
|
||||
|
||||
def item_title(self, item):
|
||||
@@ -23,7 +24,7 @@ class LatestNews(Feed):
|
||||
return item.author.username
|
||||
|
||||
def item_categories(self, item):
|
||||
return (item.category.name,)
|
||||
return item.category.name,
|
||||
|
||||
def item_description(self, item):
|
||||
return item.content
|
||||
@@ -32,6 +33,7 @@ class LatestNews(Feed):
|
||||
return datetime.combine(item.date_created, time())
|
||||
|
||||
|
||||
# noinspection PyMethodMayBeStatic
|
||||
class LatestComments(Feed):
|
||||
"""Feed of latest comments on the current site."""
|
||||
|
||||
@@ -41,8 +43,10 @@ class LatestComments(Feed):
|
||||
feed_type = Rss201rev2Feed
|
||||
|
||||
def items(self):
|
||||
qs = comments.get_model().objects.filter(site__pk=settings.SITE_ID,
|
||||
is_public=True, is_removed=False)
|
||||
qs = comments.get_model().objects.filter(
|
||||
site__pk=settings.SITE_ID,
|
||||
is_public=True, is_removed=False
|
||||
)
|
||||
return qs.order_by('-submit_date')[:40]
|
||||
|
||||
def item_author_name(self, item):
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
'''
|
||||
"""
|
||||
Created on 04.10.2011
|
||||
|
||||
@author: christian
|
||||
'''
|
||||
"""
|
||||
import django.forms
|
||||
from django.template.defaultfilters import slugify
|
||||
from django.utils.translation import ugettext as _
|
||||
@@ -17,8 +17,12 @@ class ArticleForm(forms.ModelForm):
|
||||
required_css_class = 'required'
|
||||
|
||||
class Meta(object):
|
||||
fields = ('headline_de', 'content_de', 'headline_en', 'content_en',
|
||||
'category', 'image')
|
||||
fields = (
|
||||
'headline_de', 'content_de',
|
||||
'headline_en', 'content_en',
|
||||
'category',
|
||||
'image'
|
||||
)
|
||||
model = models.Article
|
||||
|
||||
def save(self, force_insert=False, force_update=False, commit=True):
|
||||
|
||||
@@ -1,36 +1,41 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from content.models import Article, Category
|
||||
from django.contrib.auth.models import User
|
||||
import re
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.template.defaultfilters import slugify
|
||||
from django.utils.datetime_safe import datetime
|
||||
import re
|
||||
import xlrd #@UnresolvedImport
|
||||
|
||||
from content.models import Article, Category
|
||||
import xlrd
|
||||
|
||||
|
||||
# noinspection PyPep8
|
||||
class Command(BaseCommand):
|
||||
help = "Importiert die alten Daten aus einer CSV Datei" #@ReservedAssignment
|
||||
help = "Importiert die alten Daten aus einer CSV Datei" # @ReservedAssignment
|
||||
date_header_regex = r"""<h1><span class=\"small\">(?P<date>[\d\.]*)[\ -]*</span>[\ -]*(?P<title>.*)</h1>(?P<content>.*)"""
|
||||
header_regex = r"""<h1>[\ -]*(?P<title>.*)</h1>(?P<content>.*)"""
|
||||
|
||||
def __init__(self):
|
||||
self.author = User.objects.get(username="xeniac")
|
||||
self.author = get_user_model().objects.get(username="xeniac")
|
||||
self.category = Category.objects.get(slug='allgemeines')
|
||||
|
||||
super(Command, self).__init__()
|
||||
|
||||
def create_article(self):
|
||||
self.slug = slugify(self.headline[:50])
|
||||
article, created = Article.objects.get_or_create(slug=self.slug, date_created=self.date_created,
|
||||
defaults={
|
||||
'author': self.author,
|
||||
'headline_de': self.headline,
|
||||
'content_de': self.content,
|
||||
'category': self.category
|
||||
})
|
||||
article, created = Article.objects.get_or_create(slug=self.slug, date_created=self.date_created,
|
||||
defaults={
|
||||
'author': self.author,
|
||||
'headline_de': self.headline,
|
||||
'content_de': self.content,
|
||||
'category': self.category
|
||||
})
|
||||
if created:
|
||||
print "Created: %s - %s" % (self.date_created, self.headline)
|
||||
print "Created: %s - %s" % (self.date_created, self.headline)
|
||||
article.clean()
|
||||
article.save()
|
||||
|
||||
|
||||
def parse_with_date(self, original):
|
||||
match_obj = re.search(self.date_header_regex, original, re.IGNORECASE | re.DOTALL)
|
||||
if match_obj:
|
||||
@@ -60,7 +65,7 @@ class Command(BaseCommand):
|
||||
except IOError:
|
||||
print "Datei '%s' wurde nicht gefunden! " % args[0]
|
||||
return False
|
||||
|
||||
|
||||
table = xls_file.sheet_by_index(0)
|
||||
for row in xrange(1, table.nrows):
|
||||
if not table.cell_value(row, 2) in ('Archiv', 'News'):
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.utils.datetime_safe import datetime
|
||||
from events.models import Event, Location
|
||||
import xlrd # @UnresolvedImport
|
||||
import xlrd
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = "Importiert die alten Events" # @ReservedAssignment
|
||||
|
||||
def __init__(self):
|
||||
self.author = User.objects.get(username="xeniac")
|
||||
self.author = get_user_model().objects.get(username="xeniac")
|
||||
super(Command, self).__init__()
|
||||
|
||||
def handle(self, *args, **options):
|
||||
try:
|
||||
@@ -22,16 +23,15 @@ class Command(BaseCommand):
|
||||
|
||||
table = xls_file.sheet_by_index(0)
|
||||
for row in xrange(1, table.nrows):
|
||||
|
||||
name = table.cell_value(row, 0)
|
||||
print name
|
||||
|
||||
start = xlrd.xldate_as_tuple(table.cell_value(row, 1),
|
||||
xls_file.datemode)
|
||||
xls_file.datemode)
|
||||
start = datetime(start[0], start[1], start[2], 0, 0, 0)
|
||||
|
||||
end = xlrd.xldate_as_tuple(table.cell_value(row, 2),
|
||||
xls_file.datemode)
|
||||
xls_file.datemode)
|
||||
end = datetime(end[0], end[1], end[2], 23, 59, 59)
|
||||
|
||||
location = Location.objects.get(pk=table.cell_value(row, 3))
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from os import path
|
||||
|
||||
from django.conf import settings
|
||||
from django.utils.timezone import now
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.core.cache import cache
|
||||
@@ -9,19 +11,21 @@ from django.utils.safestring import mark_safe
|
||||
from django.utils.translation import get_language, ugettext as _
|
||||
from imagekit.models import ImageSpecField
|
||||
from imagekit.processors import SmartResize
|
||||
from utils import STATUS_CHOICES, STATUS_WAITING, STATUS_PUBLISHED, \
|
||||
STATUS_REJECTED, cleaner, OverwriteStorage # @UnusedImport
|
||||
from django.core.exceptions import ValidationError
|
||||
|
||||
from utils import STATUS_CHOICES, STATUS_WAITING, STATUS_PUBLISHED, \
|
||||
cleaner
|
||||
|
||||
|
||||
CONTENT_CHOICES = (
|
||||
(0, u'Django View'),
|
||||
(1, u'HTML'),
|
||||
(2, u'PDF')
|
||||
(0, u'Django View'),
|
||||
(1, u'HTML'),
|
||||
(2, u'PDF')
|
||||
)
|
||||
|
||||
|
||||
def get_upload_path(instance, filename):
|
||||
'''
|
||||
"""
|
||||
Generates the desired file path and filename for an uploaded Image.
|
||||
With this function Django can save the uploaded images to subfolders that
|
||||
also have a meaning for humans.
|
||||
@@ -30,7 +34,7 @@ def get_upload_path(instance, filename):
|
||||
@type instance: a instace of an models.Model sub-class.
|
||||
@param filename: The filename of the uploaded image.
|
||||
@type filename: String
|
||||
'''
|
||||
"""
|
||||
extension = filename[filename.rfind('.') + 1:]
|
||||
if isinstance(instance, Category):
|
||||
return "categories/%s.%s" % (instance.slug, extension)
|
||||
@@ -59,11 +63,11 @@ class Article(ImageModel):
|
||||
content_en = models.TextField('Content', blank=True)
|
||||
category = models.ForeignKey('Category', verbose_name=_('Category'))
|
||||
image = models.ImageField(_('Image'), upload_to='news/',
|
||||
blank=True, null=True)
|
||||
blank=True, null=True)
|
||||
slug = models.SlugField(_('Slug'), unique_for_month='date_created')
|
||||
author = models.ForeignKey('auth.User', verbose_name=_('Author'))
|
||||
author = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_('Author'))
|
||||
status = models.SmallIntegerField(_('Status'), choices=STATUS_CHOICES,
|
||||
default=STATUS_PUBLISHED)
|
||||
default=STATUS_PUBLISHED)
|
||||
date_created = models.DateField(_('Created'), blank=True)
|
||||
date_modified = models.DateTimeField(_('Modified'), auto_now=True)
|
||||
objects = ArticleManager()
|
||||
@@ -117,13 +121,13 @@ class Article(ImageModel):
|
||||
|
||||
|
||||
class Page(models.Model):
|
||||
'''
|
||||
"""
|
||||
Eine Seite auf der Homepage. Sie kann eine "statische" HTML Seite,
|
||||
die URL einer dynamische Django View, oder ein PDF Dokument sein.
|
||||
Jede Seite kann neben Deutsch auch auf Englisch angeboten werden.
|
||||
Ist keine englische Übersetzung vorhanden, wird die deutsche Version
|
||||
angeboten.
|
||||
'''
|
||||
"""
|
||||
menu_name_de = models.CharField(
|
||||
'Menü Name',
|
||||
max_length=255,
|
||||
@@ -136,26 +140,26 @@ class Page(models.Model):
|
||||
help_text=_('The short name for the menu-entry of this page')
|
||||
)
|
||||
title_de = models.CharField('Titel', max_length=255,
|
||||
help_text=_('This title appears in the HTML header'))
|
||||
help_text=_('This title appears in the HTML header'))
|
||||
title_en = models.CharField('Title', max_length=255, blank=True,
|
||||
help_text=_('This title appears in the HTML header'))
|
||||
help_text=_('This title appears in the HTML header'))
|
||||
slug = models.SlugField(_('slug'))
|
||||
path = models.CharField(_('Path'), max_length=100, db_index=True,
|
||||
editable=False, unique=True)
|
||||
editable=False, unique=True)
|
||||
|
||||
parent = models.ForeignKey('self', blank=True, null=True,
|
||||
related_name='subpages', on_delete=models.SET_NULL)
|
||||
related_name='subpages', on_delete=models.SET_NULL)
|
||||
position = models.PositiveSmallIntegerField(_('Position'),
|
||||
blank=True, null=True)
|
||||
blank=True, null=True)
|
||||
status = models.SmallIntegerField(_('status'), choices=STATUS_CHOICES,
|
||||
default=STATUS_WAITING)
|
||||
default=STATUS_WAITING)
|
||||
content_type = models.IntegerField(choices=CONTENT_CHOICES)
|
||||
|
||||
content_de = models.TextField('Inhalt', blank=True)
|
||||
content_en = models.TextField('Content', blank=True)
|
||||
enable_comments = models.BooleanField(_('enable comments'), default=True)
|
||||
template = models.CharField(_('Template'), max_length=100,
|
||||
default="content/page.html")
|
||||
default="content/page.html")
|
||||
pdf_de = models.FileField(upload_to='pdf/de/', blank=True, null=True)
|
||||
pdf_en = models.FileField(upload_to='pdf/en/', blank=True, null=True)
|
||||
|
||||
@@ -164,8 +168,8 @@ class Page(models.Model):
|
||||
|
||||
@property
|
||||
def content(self):
|
||||
return mark_safe(getattr(self, "content_%s" % get_language()) or \
|
||||
self.content_de)
|
||||
cont = getattr(self, "content_%s" % get_language()) or self.content_de
|
||||
return mark_safe(cont)
|
||||
|
||||
@property
|
||||
def css_class(self):
|
||||
@@ -173,8 +177,8 @@ class Page(models.Model):
|
||||
|
||||
@property
|
||||
def menu_name(self):
|
||||
return getattr(self, "menu_name_%s" % get_language()) or \
|
||||
self.menu_name_de
|
||||
return getattr(self,
|
||||
"menu_name_%s" % get_language()) or self.menu_name_de
|
||||
|
||||
@property
|
||||
def pdf_file(self):
|
||||
@@ -185,12 +189,12 @@ class Page(models.Model):
|
||||
return getattr(self, "title_%s" % get_language()) or self.title_de
|
||||
|
||||
def clean(self):
|
||||
if self.parent == None:
|
||||
if self.parent is None:
|
||||
self.path = self.slug
|
||||
else:
|
||||
self.path = path.join(self.parent.path, self.slug)
|
||||
|
||||
if self.content_type == None:
|
||||
if self.content_type is None:
|
||||
if self.pdf_de:
|
||||
self.content_type = 2
|
||||
if self.content_de:
|
||||
@@ -205,14 +209,14 @@ class Page(models.Model):
|
||||
_(u'Please upload a PDF-File to this PDF-Page.'))
|
||||
|
||||
def get_absolute_url(self):
|
||||
path = '/' + self.path
|
||||
aboslute_url = '/' + self.path
|
||||
if self.content_type == 1:
|
||||
path += '.html'
|
||||
aboslute_url += '.html'
|
||||
elif self.content_type == 2:
|
||||
path += '.pdf'
|
||||
aboslute_url += '.pdf'
|
||||
else:
|
||||
path += '/'
|
||||
return path
|
||||
aboslute_url += '/'
|
||||
return aboslute_url
|
||||
|
||||
class Meta(object):
|
||||
ordering = ['parent__id', 'position']
|
||||
@@ -227,7 +231,7 @@ class Category(ImageModel):
|
||||
description_de = models.TextField(_('Description'))
|
||||
description_en = models.TextField(_('Description'), blank=True)
|
||||
image = models.ImageField(_('Image'), upload_to='news/categories/',
|
||||
blank=True, null=True)
|
||||
blank=True, null=True)
|
||||
slug = models.SlugField(_('Slug'), unique=True, db_index=True)
|
||||
|
||||
class Meta(object):
|
||||
@@ -242,7 +246,7 @@ class Category(ImageModel):
|
||||
@property
|
||||
def description(self):
|
||||
return getattr(self, "description_%s" % get_language(),
|
||||
self.description_de)
|
||||
self.description_de)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('article-archive', kwargs={'category': self.slug})
|
||||
@@ -258,5 +262,6 @@ def force_cache_update(sender, instance, **kwargs):
|
||||
cache.delete('all_pages')
|
||||
cache.delete('top_level_pages')
|
||||
|
||||
|
||||
models.signals.post_delete.connect(force_cache_update, sender=Page)
|
||||
models.signals.post_save.connect(force_cache_update, sender=Page)
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
from imagekit.specs import ImageSpec
|
||||
from imagekit import processors
|
||||
|
||||
|
||||
# noinspection PyPep8
|
||||
class ResizeArticle(processors.Resize):
|
||||
width = 210
|
||||
height = 130
|
||||
crop = True
|
||||
|
||||
|
||||
class Article(ImageSpec):
|
||||
pre_cache = True
|
||||
processors = [ResizeArticle]
|
||||
@@ -45,11 +45,11 @@
|
||||
<ul class="list" style="margin: 20px;">
|
||||
{% 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 class="date"><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 class="date"><a href="{% url 'article-archive' year=date|date:'Y' %}">{{ date|date:'Y' }}</a></li>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</ul>
|
||||
@@ -62,7 +62,7 @@
|
||||
<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/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>
|
||||
</ul>
|
||||
@@ -89,6 +89,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"><img src="{{ STATIC_URL }}icons/note_add.png" alt="" /> {% trans "Add Article" %}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
@@ -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"><img src="{{ STATIC_URL }}icons/arrow_undo.png" alt="{% trans 'back' %}" /> {% trans 'back' %}</a>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
<ul class="list" style="margin: 20px;">
|
||||
{% 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 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>
|
||||
{% 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 class="date"><a href="{% url 'article-archive' year=year|date:'Y' month=date|date:'m' %}">{{ date|date:'F' }}</a></li>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</ul>
|
||||
|
||||
@@ -29,8 +29,8 @@
|
||||
<p> </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 date="{{article.date_created|date:"c"}}">{{ article.date_created|date }}</time></li>
|
||||
<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 date="{{article.date_created|date:'c'}}">{{ 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>
|
||||
|
||||
@@ -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"><img src="{{STATIC_URL}}icons/note_edit.png" alt="" />{% trans "Edit Article" %}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -33,13 +33,13 @@ body {
|
||||
}
|
||||
|
||||
@page {
|
||||
margin-right: 0mm;
|
||||
margin-bottom: 0mm;
|
||||
margin-right: 0;
|
||||
margin-bottom: 0;
|
||||
margin-top: 35mm;
|
||||
margin-left: 2cm;
|
||||
@frame header {
|
||||
-pdf-frame-content : page_header;
|
||||
top: 0mm;
|
||||
top: 0;
|
||||
margin: 5mm;
|
||||
height: 4cm;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
'''
|
||||
"""
|
||||
Created on 10.06.2012
|
||||
|
||||
@author: christian
|
||||
'''
|
||||
"""
|
||||
from django import template
|
||||
from django.utils.datastructures import SortedDict
|
||||
import copy
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@@ -31,7 +32,7 @@ class FieldSetNode(template.Node):
|
||||
def get_fieldset(parser, token):
|
||||
try:
|
||||
_name_, fields, _from_, form, _as_, variable_name = \
|
||||
token.split_contents()
|
||||
token.split_contents()
|
||||
fields = fields[1:-1]
|
||||
fields = [field.strip() for field in fields.split(',')]
|
||||
except ValueError:
|
||||
@@ -40,4 +41,5 @@ def get_fieldset(parser, token):
|
||||
)
|
||||
return FieldSetNode(form, variable_name, fields)
|
||||
|
||||
|
||||
get_fieldset = register.tag(get_fieldset)
|
||||
|
||||
@@ -21,6 +21,7 @@ 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'
|
||||
@@ -83,7 +84,7 @@ class ArticleForm(PermissionRequiredMixin, generic.UpdateView):
|
||||
form_class = forms.ArticleForm
|
||||
permission_required = 'content.change_article'
|
||||
|
||||
def get_object(self):
|
||||
def get_object(self, **kwargs):
|
||||
if self.kwargs.get('pk', None):
|
||||
return models.Article.objects.get(pk=self.kwargs['pk'])
|
||||
else:
|
||||
@@ -91,6 +92,7 @@ class ArticleForm(PermissionRequiredMixin, generic.UpdateView):
|
||||
|
||||
|
||||
class ImageList(generic.View):
|
||||
# noinspection PyMethodMayBeStatic
|
||||
def get(self, kwargs):
|
||||
image_list = []
|
||||
response = HttpResponse(content_type='text/javascript')
|
||||
@@ -137,11 +139,10 @@ class PageEditForm(PermissionRequiredMixin, generic.UpdateView):
|
||||
|
||||
|
||||
class PageHtml(generic.DetailView):
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
try:
|
||||
return models.Page.objects.get(path=self.kwargs['path'],
|
||||
content_type=1)
|
||||
content_type=1)
|
||||
except models.Page.DoesNotExist:
|
||||
raise Http404(
|
||||
_("No Page found matching the Path %s") % self.request.path
|
||||
@@ -152,11 +153,10 @@ class PageHtml(generic.DetailView):
|
||||
|
||||
|
||||
class PagePdf(generic.DeleteView):
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
try:
|
||||
return models.Page.objects.get(path=self.kwargs['path'],
|
||||
content_type=2)
|
||||
content_type=2)
|
||||
except models.Page.DoesNotExist:
|
||||
raise Http404(
|
||||
_("No PDF Document found matching the Path %s") %
|
||||
@@ -167,7 +167,7 @@ class PagePdf(generic.DeleteView):
|
||||
try:
|
||||
pdf_file = open(self.object.pdf_file.path, 'rb')
|
||||
response = HttpResponse(pdf_file.read(),
|
||||
content_type='application/pdf')
|
||||
content_type='application/pdf')
|
||||
pdf_file.close()
|
||||
return response
|
||||
except:
|
||||
@@ -175,7 +175,7 @@ class PagePdf(generic.DeleteView):
|
||||
|
||||
|
||||
class PageList(generic.View):
|
||||
|
||||
# noinspection PyMethodMayBeStatic
|
||||
def get(self, kwargs):
|
||||
response = HttpResponse(content_type='text/javascript')
|
||||
response.write('var tinyMCELinkList = new Array(')
|
||||
@@ -213,4 +213,5 @@ class StartPage(generic.TemplateView):
|
||||
'recent_comment_list': recent_comment_list,
|
||||
}
|
||||
return context
|
||||
|
||||
queryset = models.Article.objects.filter(status=models.STATUS_PUBLISHED)
|
||||
|
||||
Reference in New Issue
Block a user