Package zinnia :: Package views :: Module trackback
[hide private]

Source Code for Module zinnia.views.trackback

 1  """Views for Zinnia trackback""" 
 2  from django.shortcuts import redirect 
 3  from django.shortcuts import get_object_or_404 
 4  from django.contrib.sites.models import Site 
 5  from django.contrib.comments.models import Comment 
 6  from django.views.decorators.csrf import csrf_exempt 
 7  from django.contrib.contenttypes.models import ContentType 
 8  from django.views.generic.simple import direct_to_template 
 9   
10  from zinnia.models import Entry 
11 12 13 @csrf_exempt 14 -def entry_trackback(request, slug):
15 """Set a TrackBack for an Entry""" 16 entry = get_object_or_404(Entry.published, slug=slug) 17 18 if request.POST.get('url'): 19 error = '' 20 url = request.POST['url'] 21 site = Site.objects.get_current() 22 23 if not entry.pingback_enabled: 24 error = u'Trackback is not enabled for %s' % entry.title 25 26 title = request.POST.get('title') or url 27 excerpt = request.POST.get('excerpt') or title 28 blog_name = request.POST.get('blog_name') or title 29 30 if not error: 31 comment, created = Comment.objects.get_or_create( 32 content_type=ContentType.objects.get_for_model(Entry), 33 object_pk=entry.pk, site=site, user_url=url, 34 user_name=blog_name, defaults={'comment': excerpt}) 35 if created: 36 user = entry.authors.all()[0] 37 comment.flags.create(user=user, flag='trackback') 38 else: 39 error = u'Trackback is already registered' 40 41 return direct_to_template(request, 'zinnia/entry_trackback.xml', 42 mimetype='text/xml', 43 extra_context={'error': error}) 44 45 return redirect(entry)
46