Commit 979fc7bc authored by Skia's avatar Skia
Browse files

Begin a PageRevision implementation, but this breaks currently everything!

parent edcbf7a3
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0012_auto_20151127_1504'),
]
operations = [
migrations.CreateModel(
name='PageRevision',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, primary_key=True, auto_created=True)),
('title', models.CharField(blank=True, verbose_name='page title', max_length=255)),
('content', models.TextField(blank=True, verbose_name='page content')),
],
),
migrations.RemoveField(
model_name='page',
name='content',
),
migrations.RemoveField(
model_name='page',
name='revision',
),
migrations.RemoveField(
model_name='page',
name='title',
),
migrations.AddField(
model_name='pagerevision',
name='parent_page',
field=models.ForeignKey(related_name='revisions', to='core.Page'),
),
migrations.AddField(
model_name='page',
name='last_revision',
field=models.OneToOneField(to='core.PageRevision', default=1),
preserve_default=False,
),
]
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0013_auto_20151127_1521'),
]
operations = [
migrations.RenameField(
model_name='page',
old_name='last_revision',
new_name='revision',
),
]
...@@ -151,10 +151,7 @@ class Page(GroupManagedObject, models.Model): ...@@ -151,10 +151,7 @@ class Page(GroupManagedObject, models.Model):
query, but don't rely on it when playing with a Page object, use get_full_name() instead! query, but don't rely on it when playing with a Page object, use get_full_name() instead!
""" """
name = models.CharField(_('page name'), max_length=30, blank=False) name = models.CharField(_('page name'), max_length=30, blank=False)
# TODO: move title and content to PageRev class with a OneToOne field revision = models.OneToOneField('PageRevision')
title = models.CharField(_("page title"), max_length=255, blank=True)
content = models.TextField(_("page content"), blank=True)
revision = models.PositiveIntegerField(_("current revision"), default=1)
is_locked = models.BooleanField(_("page mutex"), default=False) is_locked = models.BooleanField(_("page mutex"), default=False)
parent = models.ForeignKey('self', related_name="children", null=True, blank=True, on_delete=models.SET_NULL) parent = models.ForeignKey('self', related_name="children", null=True, blank=True, on_delete=models.SET_NULL)
# Attention: this field may not be valid until you call save(). It's made for fast query, but don't rely on it when # Attention: this field may not be valid until you call save(). It's made for fast query, but don't rely on it when
...@@ -178,6 +175,10 @@ class Page(GroupManagedObject, models.Model): ...@@ -178,6 +175,10 @@ class Page(GroupManagedObject, models.Model):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(Page, self).__init__(*args, **kwargs) super(Page, self).__init__(*args, **kwargs)
if self.revision is None:
self.revision = PageRevision()
self.revision.save()
def clean(self): def clean(self):
""" """
...@@ -190,6 +191,8 @@ class Page(GroupManagedObject, models.Model): ...@@ -190,6 +191,8 @@ class Page(GroupManagedObject, models.Model):
_('Duplicate page'), _('Duplicate page'),
code='duplicate', code='duplicate',
) )
if self.revision is not None:
self.revision = PageRevision(self.revision)
super(Page, self).clean() super(Page, self).clean()
if self.parent is not None and self in self.get_parent_list(): if self.parent is not None and self in self.get_parent_list():
raise ValidationError( raise ValidationError(
...@@ -238,3 +241,9 @@ class Page(GroupManagedObject, models.Model): ...@@ -238,3 +241,9 @@ class Page(GroupManagedObject, models.Model):
return self.get_full_name() return self.get_full_name()
class PageRevision(models.Model):
# TODO: move title and content to PageRev class with a OneToOne field
title = models.CharField(_("page title"), max_length=255, blank=True)
content = models.TextField(_("page content"), blank=True)
parent_page = models.ForeignKey(Page, related_name="revisions", null=False, blank=False)
...@@ -5,7 +5,7 @@ from django.views.generic.edit import UpdateView ...@@ -5,7 +5,7 @@ from django.views.generic.edit import UpdateView
from django.contrib.auth.decorators import login_required, permission_required from django.contrib.auth.decorators import login_required, permission_required
from django.utils.decorators import method_decorator from django.utils.decorators import method_decorator
from core.models import Page from core.models import Page, PageRevision
from core.views.forms import PagePropForm from core.views.forms import PagePropForm
from core.views import CanViewMixin, CanEditMixin, CanEditPropMixin from core.views import CanViewMixin, CanEditMixin, CanEditPropMixin
...@@ -60,17 +60,17 @@ class PagePropView(CanEditPropMixin, UpdateView): ...@@ -60,17 +60,17 @@ class PagePropView(CanEditPropMixin, UpdateView):
parent_name = '/'.join(page_name.split('/')[:-1]) parent_name = '/'.join(page_name.split('/')[:-1])
name = page_name.split('/')[-1] name = page_name.split('/')[-1]
if parent_name == "": if parent_name == "":
p = Page(name=name) p = Page(name=name, revision=PageRevision())
else: else:
parent = Page.get_page_by_full_name(parent_name) parent = Page.get_page_by_full_name(parent_name)
p = Page(name=name, parent=parent) p = Page(name=name, parent=parent, revision=PageRevision())
self.page = p self.page = p
return self.page return self.page
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(PagePropView, self).get_context_data(**kwargs) context = super(PagePropView, self).get_context_data(**kwargs)
if "page" in context.keys(): if "page" in context.keys():
context['tests'] = "PAGE_FOUND : "+context['page'].title context['tests'] = "PAGE_FOUND : "+context['page'].revision.title
else: else:
context['tests'] = "PAGE_NOT_FOUND" context['tests'] = "PAGE_NOT_FOUND"
context['new_page'] = self.kwargs['page_name'] context['new_page'] = self.kwargs['page_name']
...@@ -78,7 +78,7 @@ class PagePropView(CanEditPropMixin, UpdateView): ...@@ -78,7 +78,7 @@ class PagePropView(CanEditPropMixin, UpdateView):
class PageEditView(CanEditMixin, UpdateView): class PageEditView(CanEditMixin, UpdateView):
model = Page model = Page
fields = ['title', 'content',] fields = ['revision.title', 'revision.content',]
template_name_suffix = '_edit' template_name_suffix = '_edit'
def get_object(self): def get_object(self):
...@@ -88,7 +88,7 @@ class PageEditView(CanEditMixin, UpdateView): ...@@ -88,7 +88,7 @@ class PageEditView(CanEditMixin, UpdateView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(PageEditView, self).get_context_data(**kwargs) context = super(PageEditView, self).get_context_data(**kwargs)
if "page" in context.keys(): if "page" in context.keys():
context['tests'] = "PAGE_FOUND : "+context['page'].title context['tests'] = "PAGE_FOUND : "+context['page'].revision.title
else: else:
context['tests'] = "PAGE_NOT_FOUND" context['tests'] = "PAGE_NOT_FOUND"
context['new_page'] = self.kwargs['page_name'] context['new_page'] = self.kwargs['page_name']
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment