Ejemplo n.º 1
0
class EditForm(forms.Form):
    text = forms.CharField(label=_('Text'), widget=forms.Textarea)
    comment = forms.CharField(label=_('Comment'), max_length=255, required=False,
        help_text=_('A short description of the changes you have made.'))
    
    def __init__(self, request, page, *args, **kwargs):
        super(EditForm, self).__init__(*args, **kwargs)
        self.request = request
        self.page = page
        self.instance = Revision()
    
    def save(self, *args, **kwargs):
        if self.request.user.is_anonymous():
            self.instance.author_ip = self.request.META['REMOTE_ADDR']
        else:
            self.instance.author = self.request.user
        
        if not self.page.pk:
            self.page.save()
        self.instance.page = self.page
        
        text, created = Text.objects.get_or_create(content=self.cleaned_data['text'])
        self.instance.text = text
        
        self.instance.comment = self.cleaned_data['comment']
        
        if not created:
            try:
                revision = text.revision_set.latest('pub_date')
                self.instance.comment = _(u'Reverted to revision %(revision)s by %(author)s') % {'revision':revision.pk, 'author':revision.author or revision.author_ip}
            except ObjectDoesNotExist:
                pass
        
        self.instance.save()
Ejemplo n.º 2
0
def revision_revert(request, slug, pk):
    try:
        revision = Revision.objects.filter(page__slug=slug, pk=pk).get()
    except ObjectDoesNotExist:
        raise Http404, "No revision found matching the query"

    if not revision.page.user_can_edit(request.user):
        if request.user.is_anonymous():
            return HttpResponseRedirect(
                "%s?%s=%s" % (settings.LOGIN_URL, REDIRECT_FIELD_NAME, urlquote(request.get_full_path()))
            )
        else:
            return render_to_response("wiki/permission_denied.html", context_instance=RequestContext(request))

    r = Revision(text=revision.text, page=revision.page)
    r.comment = _(u"Reverted to revision %(revision)s by %(author)s") % {
        "revision": revision.pk,
        "author": revision.author or revision.author_ip,
    }

    if request.user.is_anonymous():
        r.author_ip = request.META["REMOTE_ADDR"]
    else:
        r.author = request.user

    r.save()

    return HttpResponseRedirect(r.get_absolute_url())
Ejemplo n.º 3
0
 def __init__(self, request, page, *args, **kwargs):
     super(EditForm, self).__init__(*args, **kwargs)
     self.request = request
     self.page = page
     self.instance = Revision()