Beispiel #1
0
    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
Beispiel #2
0
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")
Beispiel #3
0
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))
Beispiel #4
0
 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')
Beispiel #5
0
 def get_query(self):
     return Entry.all().order('-created_at')
Beispiel #6
0
 def get_query(self):
     return Entry.all().filter('status =', 'published') \
                       .order('-published_at')