zinnia.views.quick_entry
Covered: 44 lines
Missed: 0 lines
Skipped 10 lines
Percent: 100 %
 1
"""Views for Zinnia quick entry"""
 2
from urllib import urlencode
 4
from django import forms
 5
from django.utils.html import linebreaks
 6
from django.shortcuts import redirect
 7
from django.core.urlresolvers import reverse
 8
from django.contrib.sites.models import Site
 9
from django.template.defaultfilters import slugify
10
from django.utils.encoding import smart_str
11
from django.contrib.auth.decorators import permission_required
13
from zinnia.models import Entry
14
from zinnia.managers import DRAFT
15
from zinnia.managers import PUBLISHED
18
class QuickEntryForm(forms.Form):
19
    """Form for posting an entry quickly"""
21
    title = forms.CharField(required=True, max_length=255)
22
    content = forms.CharField(required=True)
23
    tags = forms.CharField(required=False, max_length=255)
26
@permission_required('zinnia.add_entry')
27
def view_quick_entry(request):
28
    """View for quickly post an Entry"""
29
    if request.POST:
30
        form = QuickEntryForm(request.POST)
31
        if form.is_valid():
32
            entry_dict = form.cleaned_data
33
            status = PUBLISHED
34
            if 'save_draft' in request.POST:
35
                status = DRAFT
36
            entry_dict['content'] = linebreaks(entry_dict['content'])
37
            entry_dict['slug'] = slugify(entry_dict['title'])
38
            entry_dict['status'] = status
39
            entry = Entry.objects.create(**entry_dict)
40
            entry.sites.add(Site.objects.get_current())
41
            entry.authors.add(request.user)
42
            return redirect(entry)
44
        data = {'title': smart_str(request.POST.get('title', '')),
45
                'content': smart_str(linebreaks(request.POST.get('content', ''))),
46
                'tags': smart_str(request.POST.get('tags', '')),
47
                'slug': slugify(request.POST.get('title', '')),
48
                'authors': request.user.pk,
49
                'sites': Site.objects.get_current().pk}
50
        return redirect('%s?%s' % (reverse('admin:zinnia_entry_add'),
51
                                   urlencode(data)))
53
    return redirect('admin:zinnia_entry_add')