mirror of
https://github.com/ae-utbm/sith.git
synced 2024-11-26 02:54:20 +00:00
Fix accents in wiki page name and allow to delete a page
This commit is contained in:
parent
b90d930594
commit
95f984824a
@ -736,9 +736,9 @@ class Page(models.Model):
|
||||
name = models.CharField(_('page unix name'), max_length=30,
|
||||
validators=[
|
||||
validators.RegexValidator(
|
||||
r'^[\w.+-]+$',
|
||||
r'^[A-z.+-]+$',
|
||||
_('Enter a valid page name. This value may contain only '
|
||||
'letters, numbers ' 'and ./+/-/_ characters.')
|
||||
'unaccented letters, numbers ' 'and ./+/-/_ characters.')
|
||||
),
|
||||
],
|
||||
blank=False)
|
||||
@ -846,6 +846,14 @@ class Page(models.Model):
|
||||
p.set_lock_recursive(user)
|
||||
self.set_lock(user)
|
||||
|
||||
def unset_lock_recursive(self):
|
||||
"""
|
||||
Unlocks recursively all the child pages
|
||||
"""
|
||||
for p in self.children.all():
|
||||
p.unset_lock_recursive()
|
||||
self.unset_lock()
|
||||
|
||||
def unset_lock(self):
|
||||
"""Always try to unlock, even if there is no lock"""
|
||||
self.lock_user = None
|
||||
@ -886,6 +894,16 @@ class Page(models.Model):
|
||||
except:
|
||||
return self.name
|
||||
|
||||
def delete(self):
|
||||
self.unset_lock_recursive()
|
||||
self.set_lock_recursive(User.objects.get(id=0))
|
||||
for child in self.children.all():
|
||||
child.parent = self.parent
|
||||
child.save()
|
||||
child.unset_lock_recursive()
|
||||
super(Page, self).delete()
|
||||
|
||||
|
||||
class PageRev(models.Model):
|
||||
"""
|
||||
This is the true content of the page.
|
||||
|
@ -23,6 +23,7 @@ function make_preview() {
|
||||
<p><input type="button" value="{% trans %}Preview{% endtrans %}" onclick="javascript:make_preview();" /></p>
|
||||
<p><input type="submit" value="{% trans %}Save{% endtrans %}" /></p>
|
||||
</form>
|
||||
<a href="{{ url('core:page_delete', page_id=page.id)}}">{% trans %}Delete{% endtrans %}</a>
|
||||
<div id="preview">
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
@ -61,6 +61,7 @@ urlpatterns = [
|
||||
# Page views
|
||||
url(r'^page/$', PageListView.as_view(), name='page_list'),
|
||||
url(r'^page/create$', PageCreateView.as_view(), name='page_new'),
|
||||
url(r'^page/(?P<page_id>[0-9]*)/delete$', PageDeleteView.as_view(), name='page_delete'),
|
||||
url(r'^page/(?P<page_name>[a-z0-9/-_]*)/edit$', PageEditView.as_view(), name='page_edit'),
|
||||
url(r'^page/(?P<page_name>[a-z0-9/-_]*)/prop$', PagePropView.as_view(), name='page_prop'),
|
||||
url(r'^page/(?P<page_name>[a-z0-9/-_]*)/hist$', PageHistView.as_view(), name='page_hist'),
|
||||
|
@ -1,7 +1,8 @@
|
||||
# This file contains all the views that concern the page model
|
||||
from django.shortcuts import render, redirect, get_object_or_404
|
||||
from django.core.urlresolvers import reverse_lazy
|
||||
from django.views.generic import ListView, DetailView
|
||||
from django.views.generic.edit import UpdateView, CreateView
|
||||
from django.views.generic.edit import UpdateView, CreateView, DeleteView
|
||||
from django.contrib.auth.decorators import login_required, permission_required
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.forms.models import modelform_factory
|
||||
@ -159,3 +160,11 @@ class PageEditView(CanEditMixin, UpdateView):
|
||||
form.instance = new_rev
|
||||
return super(PageEditView, self).form_valid(form)
|
||||
|
||||
|
||||
class PageDeleteView(CanEditPropMixin, DeleteView):
|
||||
model = Page
|
||||
template_name = 'core/delete_confirm.jinja'
|
||||
pk_url_kwarg = 'page_id'
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
return reverse_lazy('core:page_list')
|
||||
|
Loading…
Reference in New Issue
Block a user