1 """Views for Zinnia quick entry"""
2 from urllib import urlencode
3
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
12
13 from zinnia.models import Entry
14 from zinnia.managers import DRAFT
15 from zinnia.managers import PUBLISHED
19 """Form for posting an entry quickly"""
20
21 title = forms.CharField(required=True, max_length=255)
22 content = forms.CharField(required=True)
23 tags = forms.CharField(required=False, max_length=255)
24
25
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)
43
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)))
52
53 return redirect('admin:zinnia_entry_add')
54