mirror of
				https://github.com/ae-utbm/sith.git
				synced 2025-11-04 11:03:04 +00:00 
			
		
		
		
	Begin a PageRevision implementation, but this breaks currently everything!
This commit is contained in:
		
							
								
								
									
										45
									
								
								core/migrations/0013_auto_20151127_1521.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								core/migrations/0013_auto_20151127_1521.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
# -*- 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,
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
							
								
								
									
										19
									
								
								core/migrations/0014_auto_20151127_1533.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								core/migrations/0014_auto_20151127_1533.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
# -*- 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):
 | 
			
		||||
    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)
 | 
			
		||||
# 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)
 | 
			
		||||
    revision = models.PositiveIntegerField(_("current revision"), default=1)
 | 
			
		||||
    revision = models.OneToOneField('PageRevision')
 | 
			
		||||
    is_locked = models.BooleanField(_("page mutex"), default=False)
 | 
			
		||||
    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
 | 
			
		||||
@@ -178,6 +175,10 @@ class Page(GroupManagedObject, models.Model):
 | 
			
		||||
 | 
			
		||||
    def __init__(self, *args, **kwargs):
 | 
			
		||||
        super(Page, self).__init__(*args, **kwargs)
 | 
			
		||||
        if self.revision is None:
 | 
			
		||||
            self.revision = PageRevision()
 | 
			
		||||
            self.revision.save()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def clean(self):
 | 
			
		||||
        """
 | 
			
		||||
@@ -190,6 +191,8 @@ class Page(GroupManagedObject, models.Model):
 | 
			
		||||
                _('Duplicate page'),
 | 
			
		||||
                code='duplicate',
 | 
			
		||||
            )
 | 
			
		||||
        if self.revision is not None:
 | 
			
		||||
            self.revision = PageRevision(self.revision)
 | 
			
		||||
        super(Page, self).clean()
 | 
			
		||||
        if self.parent is not None and self in self.get_parent_list():
 | 
			
		||||
            raise ValidationError(
 | 
			
		||||
@@ -238,3 +241,9 @@ class Page(GroupManagedObject, models.Model):
 | 
			
		||||
        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
 | 
			
		||||
from django.contrib.auth.decorators import login_required, permission_required
 | 
			
		||||
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 import CanViewMixin, CanEditMixin, CanEditPropMixin
 | 
			
		||||
 | 
			
		||||
@@ -60,17 +60,17 @@ class PagePropView(CanEditPropMixin, UpdateView):
 | 
			
		||||
            parent_name = '/'.join(page_name.split('/')[:-1])
 | 
			
		||||
            name = page_name.split('/')[-1]
 | 
			
		||||
            if parent_name == "":
 | 
			
		||||
                p = Page(name=name)
 | 
			
		||||
                p = Page(name=name, revision=PageRevision())
 | 
			
		||||
            else:
 | 
			
		||||
                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
 | 
			
		||||
        return self.page
 | 
			
		||||
 | 
			
		||||
    def get_context_data(self, **kwargs):
 | 
			
		||||
        context = super(PagePropView, self).get_context_data(**kwargs)
 | 
			
		||||
        if "page" in context.keys():
 | 
			
		||||
            context['tests'] = "PAGE_FOUND : "+context['page'].title
 | 
			
		||||
            context['tests'] = "PAGE_FOUND : "+context['page'].revision.title
 | 
			
		||||
        else:
 | 
			
		||||
            context['tests'] = "PAGE_NOT_FOUND"
 | 
			
		||||
            context['new_page'] = self.kwargs['page_name']
 | 
			
		||||
@@ -78,7 +78,7 @@ class PagePropView(CanEditPropMixin, UpdateView):
 | 
			
		||||
 | 
			
		||||
class PageEditView(CanEditMixin, UpdateView):
 | 
			
		||||
    model = Page
 | 
			
		||||
    fields = ['title', 'content',]
 | 
			
		||||
    fields = ['revision.title', 'revision.content',]
 | 
			
		||||
    template_name_suffix = '_edit'
 | 
			
		||||
 | 
			
		||||
    def get_object(self):
 | 
			
		||||
@@ -88,7 +88,7 @@ class PageEditView(CanEditMixin, UpdateView):
 | 
			
		||||
    def get_context_data(self, **kwargs):
 | 
			
		||||
        context = super(PageEditView, self).get_context_data(**kwargs)
 | 
			
		||||
        if "page" in context.keys():
 | 
			
		||||
            context['tests'] = "PAGE_FOUND : "+context['page'].title
 | 
			
		||||
            context['tests'] = "PAGE_FOUND : "+context['page'].revision.title
 | 
			
		||||
        else:
 | 
			
		||||
            context['tests'] = "PAGE_NOT_FOUND"
 | 
			
		||||
            context['new_page'] = self.kwargs['page_name']
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user