Esempio n. 1
0
def add(request, form_class=RedirectForm, template_name="redirects/add.html"):

    # check permission
    if not has_perm(request.user, 'redirects.add_redirect'):
        raise Http403

    if request.method == "POST":
        form = form_class(request.POST)
        if form.is_valid():
            redirect = form.save(commit=False)
            redirect.save()  # get pk

            messages.add_message(request, messages.SUCCESS, _('Successfully added %(r)s' % {'r':redirect}))

            # reload the urls
            from imp import reload
            reload(dynamic_urls)

            return HttpResponseRedirect(reverse('redirects'))
    else:
        form = form_class()

    return render_to_resp(request=request,
                          template_name=template_name,
                          context={'form': form})
Esempio n. 2
0
def edit(request, id, form_class=RedirectForm, template_name="redirects/edit.html"):
    redirect = get_object_or_404(Redirect, pk=id)

    # check permission
    if not has_perm(request.user,'redirects.change_redirect'):
        raise Http403

    form = form_class(instance=redirect)

    if request.method == "POST":
        form = form_class(request.POST, instance=redirect)
        if form.is_valid():
            redirect = form.save(commit=False)
            redirect.save() # get pk

            messages.add_message(request, messages.SUCCESS, _('Successfully edited %(r)s' % {'r':redirect}))

            # reload the urls
            from imp import reload
            reload(dynamic_urls)

            return HttpResponseRedirect(reverse('redirects'))

    return render_to_resp(request=request,
                          template_name=template_name,
                          context={'redirect': redirect,'form':form,})
Esempio n. 3
0
    def save(self, *args, **kwargs):
        self.full_clean()

        update_descendant_url_paths = False
        is_new = self.id is None

        if is_new:
            # we are creating a record. If we're doing things properly, this should happen
            # through a treebeard method like add_child, in which case the 'path' field
            # has been set and so we can safely call get_parent
            self.set_url_path(self.get_parent())
        else:
            # Check that we are committing the slug to the database
            # Basically: If update_fields has been specified, and slug is not included, skip this step
            if not ('update_fields' in kwargs
                    and 'slug' not in kwargs['update_fields']):
                # see if the slug has changed from the record in the db, in which case we need to
                # update url_path of self and all descendants
                old_record = Page.objects.get(id=self.id)
                if old_record.slug != self.slug:
                    self.set_url_path(self.get_parent())
                    update_descendant_url_paths = True
                    old_url_path = old_record.url_path
                    new_url_path = self.url_path
                    new_redirect = self.versioned_redirects.create()
                    redirect_url = ('/' +
                                    '/'.join(old_url_path.split('/')[2:]))[:-1]
                    new_redirect.old_path = redirect_url
                    new_redirect.redirect_page = self
                    new_redirect.site = self.get_site()
                    new_redirect.save()
                    self.redirect_set.add(new_redirect)

        for redirect in self.versioned_redirects.all():
            redirect.versioned_redirect_page = self
            redirect.redirect_page = self
            redirect.save()

        result = super(Page, self).save(*args, **kwargs)

        if update_descendant_url_paths:
            self._update_descendant_url_paths(old_url_path, new_url_path)

        # Check if this is a root page of any sites and clear the 'wagtail_site_root_paths' key if so
        if Site.objects.filter(root_page=self).exists():
            cache.delete('wagtail_site_root_paths')

        # Log
        if is_new:
            cls = type(self)
            logger.info(
                "Page created: \"%s\" id=%d content_type=%s.%s path=%s",
                self.title, self.id, cls._meta.app_label, cls.__name__,
                self.url_path)

        return result
Esempio n. 4
0
    def __create_redirect_page(self):
        # Verify we're changing more than case
        if self.kwargs['namespace'].lower() == self.object.namespace.lower():
            if self.kwargs['slug'].lower() == self.object.slug.lower():
                return

        redirect = Article(
            title=self.object.title,
            is_published=self.object.is_published,
            is_nsfw=self.object.is_nsfw,
            is_spoiler=self.object.is_spoiler,
            **self.kwargs,
        )
        redirect.markdown = '[[REDIRECT:/{article}]]'.format(
            article=utils.join_path(self.object.namespace, self.object.slug), )
        redirect.save()
Esempio n. 5
0
def add(request, form_class=RedirectForm, template_name="redirects/add.html"):

    # check permission
    if not has_perm(request.user, 'redirects.add_redirect'):
        raise Http403

    if request.method == "POST":
        form = form_class(request.POST)
        if form.is_valid():
            redirect = form.save(commit=False)
            redirect.save()  # get pk

            messages.add_message(request, messages.SUCCESS, 'Successfully added %s' % redirect)

            # reload the urls
            reload(dynamic_urls)

            return HttpResponseRedirect(reverse('redirects'))
    else:
        form = form_class()

    return render_to_response(template_name, {'form': form}, context_instance=RequestContext(request))
Esempio n. 6
0
def edit(request, id, form_class=RedirectForm, template_name="redirects/edit.html"):
    redirect = get_object_or_404(Redirect, pk=id)

    # check permission
    if not has_perm(request.user,'redirects.add_redirect'):  
        raise Http403

    form = form_class(instance=redirect)
    
    if request.method == "POST":
        form = form_class(request.POST, instance=redirect)
        if form.is_valid():
            redirect = form.save(commit=False)     
            redirect.save() # get pk
            
            messages.add_message(request, messages.SUCCESS, 'Successfully edited %s' % redirect)
 
            # reload the urls
            reload(dynamic_urls)
                       
            return HttpResponseRedirect(reverse('redirects'))
       
    return render_to_response(template_name, {'redirect': redirect,'form':form}, context_instance=RequestContext(request))
Esempio n. 7
0
def add(request, form_class=RedirectForm, template_name="redirects/add.html"):

    # check permission
    if not has_perm(request.user, 'redirects.add_redirect'):
        raise Http403

    if request.method == "POST":
        form = form_class(request.POST)
        if form.is_valid():
            redirect = form.save(commit=False)
            redirect.save()  # get pk

            messages.add_message(request, messages.SUCCESS,
                                 'Successfully added %s' % redirect)

            # reload the urls
            reload(dynamic_urls)

            return HttpResponseRedirect(reverse('redirects'))
    else:
        form = form_class()

    return render_to_response(template_name, {'form': form},
                              context_instance=RequestContext(request))