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})
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,})
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
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()
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))
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))