def get_context_data(self, **kwargs): context = super(EntryView, self).get_context_data(**kwargs) slug = self.kwargs['slug'] entry = Entry.all().filter('slug =', slug).get() if not entry: raise Http404 context['entry'] = entry return context
def entry_delete(request, slug=None): data = {} if slug is None: raise Http404 entry = Entry.all().filter('slug =', slug).get() if not entry: raise Http404 entry.delete() messages.warning(request, 'Entry deleted') data['redirect_url'] = reverse('blog_index') return HttpResponse(simplejson.dumps(data), mimetype="application/json")
def entry_create(request, slug=None): if slug is not None: entry = Entry.all().filter('slug =', slug).get() action_url = reverse('entry_edit', args=[slug]) initial = {'title': entry.title, 'content': entry.content, 'tags': "\n".join(tag.name() for tag in entry.tags), 'status': entry.status} else: entry = None action_url = reverse('entry_create') initial = None if request.method == 'POST': form = EntryForm(request.POST, initial) if form.is_valid(): if not initial: tags = [] for tagtitle in form.cleaned_data['tags']: tag = Tag.inc_or_insert(tagtitle) tags.append(tag.key()) form.cleaned_data['tags'] = tags entry = Entry(**form.cleaned_data) entry.put() messages.success(request, 'Post created successfully') else: initial_tags = [tag.name() for tag in entry.tags] new_tags = form.cleaned_data['tags'] new = set(new_tags) - set(initial_tags) existing = set(new_tags) & set(initial_tags) deleted = set(initial_tags) - set(new_tags) tags = [] for tagtitle in deleted: Tag.try_dec(tagtitle) for tagtitle in new_tags: if tagtitle in new: tag = Tag.inc_or_insert(tagtitle) tags.append(tag.key()) elif tagtitle in existing: tag = Tag.get_by_key_name(tagtitle) tags.append(tag.key()) else: raise Exception("what?") entry.tags = tags entry.title = form.cleaned_data['title'] entry.status = form.cleaned_data['status'] entry.content = form.cleaned_data['content'] entry.put() messages.success(request, 'Post modified successfully') if entry.status == 'draft': msg = ('<strong>Warning</strong> The post was saved as a ' 'draft and will not be visisble from the homepage. ' 'Click <a href="%s">here</a> to view all your posts.' % reverse('all_index')) messages.warning(request, mark_safe(msg)) return redirect('entry_view', entry.slug) else: form = EntryForm(initial) return render_to_response('blog/create.html', { 'form': form, 'action_url': action_url }, context_instance=RequestContext(request))
def get_query(self): tag = Tag.get_by_key_name(self.kwargs['tag']) return Entry.all().filter('status =', 'published') \ .filter('tags =', tag.key()) \ .order('-published_at')
def get_query(self): return Entry.all().order('-created_at')
def get_query(self): return Entry.all().filter('status =', 'published') \ .order('-published_at')