update db

This commit is contained in:
Fred 2017-11-16 22:21:58 +01:00
parent 61e887f71f
commit 5bb26bf415
41 changed files with 113 additions and 740 deletions

View File

@ -37,10 +37,11 @@ INSTALLED_APPS = [
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'evolus',
'dms',
'jci',
'reversion',
'process',
'mptt',
]
MIDDLEWARE = [

View File

@ -19,7 +19,7 @@ from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^docs/', include('evolus.urls')),
url(r'^docs/', include('dms.urls')),
url(r'^jci/', include('jci.urls')),
url(r'^p/', include('process.urls')),
]

Binary file not shown.

View File

@ -18,5 +18,5 @@ admin.site.register(Site)
admin.site.register(Node)
admin.site.register(Document, DocumentAdmin)
admin.site.register(DocumentType, DocumentTypeAdmin)
admin.site.register(Version, VersionAdmin)
admin.site.register(Version)
admin.site.register(Keyword)

View File

@ -2,4 +2,4 @@ from django.apps import AppConfig
class EvolusConfig(AppConfig):
name = 'evolus'
name = 'dms'

View File

@ -1,7 +1,7 @@
from django import forms
import django_filters
from evolus.models import Audience, Version, Site, Node
from dms.models import Audience, Version, Site, Node
class VersionFilter(django_filters.FilterSet):

View File

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-09-20 18:56
# Generated by Django 1.11.5 on 2017-11-16 20:47
from __future__ import unicode_literals
from django.conf import settings
@ -12,8 +12,8 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('auth', '0008_alter_user_username_max_length'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('jci', '0014_auto_20170920_1436'),
]
operations = [
@ -22,7 +22,8 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=50)),
('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='evolus.Audience')),
('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='auth.Group')),
('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='dms.Audience')),
],
options={
'ordering': ('name',),
@ -33,11 +34,11 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('depth', models.IntegerField()),
('child', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='audienceclosure_parents', to='evolus.Audience')),
('parent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='audienceclosure_children', to='evolus.Audience')),
('child', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='audienceclosure_parents', to='dms.Audience')),
('parent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='audienceclosure_children', to='dms.Audience')),
],
options={
'db_table': 'evolus_audienceclosure',
'db_table': 'dms_audienceclosure',
},
),
migrations.CreateModel(
@ -47,8 +48,7 @@ class Migration(migrations.Migration):
('title', models.CharField(max_length=255)),
('overview', models.TextField(blank=True, null=True)),
('created_at', models.DateTimeField(auto_now_add=True)),
('revised_at', models.DateTimeField(blank=True, null=True)),
('audiences', models.ManyToManyField(to='evolus.Audience')),
('manager', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
@ -58,42 +58,60 @@ class Migration(migrations.Migration):
('name', models.CharField(max_length=50)),
('level', models.IntegerField()),
('template', models.FileField(blank=True, null=True, upload_to='documents_templates/')),
('description', models.TextField(blank=True, max_length=255)),
],
options={
'ordering': ['level'],
},
),
migrations.CreateModel(
name='HistoricalDocument',
name='Keyword',
fields=[
('id', models.IntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID')),
('title', models.CharField(max_length=255)),
('overview', models.TextField(blank=True, null=True)),
('created_at', models.DateTimeField(blank=True, editable=False)),
('revised_at', models.DateTimeField(blank=True, null=True)),
('history_id', models.AutoField(primary_key=True, serialize=False)),
('history_date', models.DateTimeField()),
('history_change_reason', models.CharField(max_length=100, null=True)),
('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
('type', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='evolus.DocumentType')),
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255)),
('selectable', models.BooleanField(default=True)),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='dms.Keyword')),
],
options={
'ordering': ('-history_date', '-history_id'),
'get_latest_by': 'history_date',
'verbose_name': 'historical document',
'abstract': False,
},
),
migrations.CreateModel(
name='Revision',
name='KeywordClosure',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('revision', models.FileField(upload_to='revisions/')),
('created_at', models.DateTimeField(auto_now_add=True)),
('minor', models.PositiveIntegerField()),
('depth', models.IntegerField()),
('child', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='keywordclosure_parents', to='dms.Keyword')),
('parent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='keywordclosure_children', to='dms.Keyword')),
],
options={
'ordering': ('-minor',),
'db_table': 'dms_keywordclosure',
},
),
migrations.CreateModel(
name='Node',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=50)),
('acronym', models.CharField(blank=True, max_length=20, null=True)),
('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='dms.Node')),
],
options={
'abstract': False,
},
),
migrations.CreateModel(
name='NodeClosure',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('depth', models.IntegerField()),
('child', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='nodeclosure_parents', to='dms.Node')),
('parent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='nodeclosure_children', to='dms.Node')),
],
options={
'db_table': 'dms_nodeclosure',
},
),
migrations.CreateModel(
@ -106,70 +124,41 @@ class Migration(migrations.Migration):
'ordering': ['name'],
},
),
migrations.CreateModel(
name='Structure',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=50)),
('acronym', models.CharField(blank=True, max_length=20, null=True)),
('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='evolus.Structure')),
],
options={
'abstract': False,
},
),
migrations.CreateModel(
name='StructureClosure',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('depth', models.IntegerField()),
('child', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='structureclosure_parents', to='evolus.Structure')),
('parent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='structureclosure_children', to='evolus.Structure')),
],
options={
'db_table': 'evolus_structureclosure',
},
),
migrations.CreateModel(
name='Version',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('file', models.FileField(upload_to='revisions/')),
('major', models.PositiveIntegerField()),
('document', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='evolus.Document')),
('published', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='published_version+', to='evolus.Revision')),
('revision', models.PositiveIntegerField()),
('is_published', models.BooleanField(default=False)),
('created_at', models.DateTimeField(auto_now_add=True)),
('restricted', models.BooleanField(default=False)),
('audiences', models.ManyToManyField(blank=True, related_name='versions', to='dms.Audience')),
('authors', models.ManyToManyField(related_name='versions_as_author', to=settings.AUTH_USER_MODEL)),
('document', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='versions', to='dms.Document')),
('keywords', models.ManyToManyField(blank=True, related_name='versions', to='dms.Keyword')),
('nodes', models.ManyToManyField(blank=True, to='dms.Node')),
('reviewers', models.ManyToManyField(related_name='versions_as_reviewer', to=settings.AUTH_USER_MODEL)),
('sites', models.ManyToManyField(blank=True, to='dms.Site')),
('validators', models.ManyToManyField(related_name='versions_as_validator', to=settings.AUTH_USER_MODEL)),
],
),
migrations.AddField(
model_name='revision',
name='version',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='revisions', to='evolus.Version'),
),
migrations.AddField(
model_name='document',
name='sites',
field=models.ManyToManyField(to='evolus.Site'),
),
migrations.AddField(
model_name='document',
name='standards',
field=models.ManyToManyField(related_name='documents', to='jci.Standard'),
),
migrations.AddField(
model_name='document',
name='structures',
field=models.ManyToManyField(to='evolus.Structure'),
),
migrations.AddField(
model_name='document',
name='type',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='evolus.DocumentType'),
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='dms.DocumentType'),
),
migrations.AlterUniqueTogether(
name='version',
unique_together=set([('document', 'major')]),
),
migrations.AlterUniqueTogether(
name='structureclosure',
name='nodeclosure',
unique_together=set([('parent', 'child')]),
),
migrations.AlterUniqueTogether(
name='keywordclosure',
unique_together=set([('parent', 'child')]),
),
migrations.AlterUniqueTogether(

View File

@ -135,6 +135,7 @@ class Document(models.Model):
@reversion.create_revision()
def save(self, *args, **kwargs):
# todo : should create a default version based on the document type template.
super().save()
def __str__(self):
@ -236,4 +237,4 @@ class Version(models.Model):
return 'Published' if self.is_published else 'Draft'
def __str__(self):
return 'v{}.{} ({})'.format(self.major, self.revision, self.status)
return '{} v{}.{} ({})'.format(self.document, self.major, self.revision, self.status)

View File

@ -1,6 +1,6 @@
from django.conf.urls import url
from evolus.views import document_details, filter_documents
from dms.views import document_details, filter_documents
urlpatterns = [

View File

@ -0,0 +1 @@
Fred Pauchet,fred,quistis,16.11.2017 22:06,file:///home/fred/.config/libreoffice/4;

View File

@ -1,21 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-09-20 19:00
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('evolus', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='version',
name='published',
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='published_version+', to='evolus.Revision'),
),
]

View File

@ -1,62 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-09-21 18:39
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('evolus', '0002_auto_20170920_1900'),
]
operations = [
migrations.RemoveField(
model_name='document',
name='revised_at',
),
migrations.RemoveField(
model_name='historicaldocument',
name='revised_at',
),
migrations.AddField(
model_name='document',
name='manager',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
preserve_default=False,
),
migrations.AddField(
model_name='historicaldocument',
name='manager',
field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='version',
name='authors',
field=models.ManyToManyField(related_name='authors', to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='version',
name='reviewers',
field=models.ManyToManyField(related_name='reviewers', to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='version',
name='revised_at',
field=models.DateTimeField(blank=True, null=True),
),
migrations.AddField(
model_name='version',
name='validators',
field=models.ManyToManyField(related_name='validators', to=settings.AUTH_USER_MODEL),
),
migrations.AlterField(
model_name='version',
name='document',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='versions', to='evolus.Document'),
),
]

View File

@ -1,20 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-24 09:02
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('evolus', '0003_auto_20170921_1839'),
]
operations = [
migrations.AddField(
model_name='documenttype',
name='description',
field=models.CharField(blank=True, max_length=255),
),
]

View File

@ -1,20 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-24 09:05
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('evolus', '0004_documenttype_description'),
]
operations = [
migrations.AlterField(
model_name='documenttype',
name='description',
field=models.TextField(blank=True, max_length=255),
),
]

View File

@ -1,48 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-25 07:58
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('evolus', '0005_auto_20171024_1105'),
]
operations = [
migrations.CreateModel(
name='Keyword',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255)),
('selectable', models.BooleanField(default=True)),
],
options={
'abstract': False,
},
),
migrations.CreateModel(
name='KeywordClosure',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('depth', models.IntegerField()),
('child', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='keywordclosure_parents', to='evolus.Keyword')),
('parent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='keywordclosure_children', to='evolus.Keyword')),
],
options={
'db_table': 'evolus_keywordclosure',
},
),
migrations.AddField(
model_name='version',
name='keywords',
field=models.ManyToManyField(related_name='document_versions', to='evolus.Keyword'),
),
migrations.AlterUniqueTogether(
name='keywordclosure',
unique_together=set([('parent', 'child')]),
),
]

View File

@ -1,21 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-26 08:36
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('evolus', '0006_auto_20171025_0958'),
]
operations = [
migrations.AddField(
model_name='keyword',
name='parent',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='evolus.Keyword'),
),
]

View File

@ -1,27 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-26 13:55
from __future__ import unicode_literals
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('evolus', '0007_keyword_parent'),
]
operations = [
migrations.AddField(
model_name='keyword',
name='created_at',
field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
preserve_default=False,
),
migrations.AddField(
model_name='keyword',
name='updated_at',
field=models.DateTimeField(auto_now=True),
),
]

View File

@ -1,63 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-27 11:46
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('evolus', '0008_auto_20171026_1555'),
]
operations = [
migrations.CreateModel(
name='HistoricalVersion',
fields=[
('id', models.IntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID')),
('document', models.TextField(max_length=100)),
('major', models.PositiveIntegerField()),
('published', models.BooleanField(default=False)),
('revised_at', models.DateTimeField(blank=True, null=True)),
('created_at', models.DateTimeField(blank=True, editable=False)),
('history_id', models.AutoField(primary_key=True, serialize=False)),
('history_date', models.DateTimeField()),
('history_change_reason', models.CharField(max_length=100, null=True)),
('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
],
options={
'verbose_name': 'historical version',
'ordering': ('-history_date', '-history_id'),
'get_latest_by': 'history_date',
},
),
migrations.RemoveField(
model_name='revision',
name='version',
),
migrations.AddField(
model_name='version',
name='created_at',
field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
preserve_default=False,
),
migrations.AlterField(
model_name='version',
name='document',
field=models.FileField(upload_to='revisions/'),
),
migrations.AlterField(
model_name='version',
name='published',
field=models.BooleanField(default=False),
),
migrations.DeleteModel(
name='Revision',
),
]

View File

@ -1,32 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-27 11:51
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('evolus', '0009_auto_20171027_1346'),
]
operations = [
migrations.AddField(
model_name='historicalversion',
name='revision',
field=models.PositiveIntegerField(default=1),
preserve_default=False,
),
migrations.AddField(
model_name='version',
name='revision',
field=models.PositiveIntegerField(default=1),
preserve_default=False,
),
migrations.AlterField(
model_name='version',
name='keywords',
field=models.ManyToManyField(blank=True, related_name='document_versions', to='evolus.Keyword'),
),
]

View File

@ -1,34 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-27 13:12
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('evolus', '0010_auto_20171027_1351'),
]
operations = [
migrations.RemoveField(
model_name='historicalversion',
name='history_user',
),
migrations.AddField(
model_name='version',
name='file',
field=models.FileField(default=1, upload_to='revisions/'),
preserve_default=False,
),
migrations.AlterField(
model_name='version',
name='document',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='evolus.Document'),
),
migrations.DeleteModel(
name='HistoricalVersion',
),
]

View File

@ -1,23 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-27 19:13
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('auth', '0008_alter_user_username_max_length'),
('evolus', '0011_auto_20171027_1512'),
]
operations = [
migrations.AddField(
model_name='audience',
name='group',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='auth.Group'),
preserve_default=False,
),
]

View File

@ -1,47 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-27 20:32
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('evolus', '0012_audience_group'),
]
operations = [
migrations.RemoveField(
model_name='historicaldocument',
name='history_user',
),
migrations.RemoveField(
model_name='historicaldocument',
name='manager',
),
migrations.RemoveField(
model_name='historicaldocument',
name='type',
),
migrations.RenameField(
model_name='version',
old_name='published',
new_name='is_published',
),
migrations.AlterField(
model_name='document',
name='type',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='evolus.DocumentType'),
preserve_default=False,
),
migrations.AlterField(
model_name='version',
name='document',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='versions', to='evolus.Document'),
),
migrations.DeleteModel(
name='HistoricalDocument',
),
]

View File

@ -1,31 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-27 20:55
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('evolus', '0013_auto_20171027_2032'),
]
operations = [
migrations.RemoveField(
model_name='document',
name='audiences',
),
migrations.RemoveField(
model_name='document',
name='sites',
),
migrations.RemoveField(
model_name='document',
name='standards',
),
migrations.RemoveField(
model_name='document',
name='structures',
),
]

View File

@ -1,20 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-30 13:56
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('evolus', '0014_auto_20171027_2055'),
]
operations = [
migrations.AddField(
model_name='version',
name='restricted',
field=models.BooleanField(default=False),
),
]

View File

@ -1,74 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-30 14:28
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('evolus', '0015_version_restricted'),
]
operations = [
migrations.CreateModel(
name='NodeClosure',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('depth', models.IntegerField()),
],
options={
'db_table': 'evolus_nodeclosure',
},
),
migrations.RenameModel(
old_name='Structure',
new_name='Node',
),
migrations.AlterUniqueTogether(
name='structureclosure',
unique_together=set([]),
),
migrations.RemoveField(
model_name='structureclosure',
name='child',
),
migrations.RemoveField(
model_name='structureclosure',
name='parent',
),
migrations.AddField(
model_name='version',
name='audiences',
field=models.ManyToManyField(blank=True, to='evolus.Audience'),
),
migrations.AddField(
model_name='version',
name='nodes',
field=models.ManyToManyField(blank=True, to='evolus.Node'),
),
migrations.AddField(
model_name='version',
name='sites',
field=models.ManyToManyField(blank=True, to='evolus.Site'),
),
migrations.DeleteModel(
name='StructureClosure',
),
migrations.AddField(
model_name='nodeclosure',
name='child',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='nodeclosure_parents', to='evolus.Node'),
),
migrations.AddField(
model_name='nodeclosure',
name='parent',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='nodeclosure_children', to='evolus.Node'),
),
migrations.AlterUniqueTogether(
name='nodeclosure',
unique_together=set([('parent', 'child')]),
),
]

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
from django.contrib import admin
from process.models import Approval, Review, GatherComments, Knowledge, Task
from process.models import Approval, Review, GatherComments, Task
class ProcessAdmin(admin.ModelAdmin):
@ -14,5 +14,4 @@ class TaskAdmin(admin.ModelAdmin):
admin.site.register(Approval, ProcessAdmin)
admin.site.register(Review, ProcessAdmin)
admin.site.register(GatherComments, ProcessAdmin)
admin.site.register(Knowledge, ProcessAdmin)
admin.site.register(Task, TaskAdmin)

View File

@ -1,7 +1,8 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-09-20 18:56
# Generated by Django 1.11.5 on 2017-11-16 20:47
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import process.models
@ -12,7 +13,8 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('evolus', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('dms', '0001_initial'),
]
operations = [
@ -20,15 +22,15 @@ class Migration(migrations.Migration):
name='Process',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('process_type', models.CharField(max_length=50)),
('created_at', models.DateTimeField(auto_now_add=True)),
],
),
migrations.CreateModel(
name='Task',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('assigned_to', models.EmailField(max_length=254)),
('status', models.IntegerField(choices=[(1, 'Created'), (3, 'Completed')])),
('assigned_to', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
@ -45,13 +47,6 @@ class Migration(migrations.Migration):
],
bases=('process.process', process.models.DraftProcessMixin),
),
migrations.CreateModel(
name='Knowledge',
fields=[
('process_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='process.Process')),
],
bases=('process.process', process.models.PublishedProcessMixin),
),
migrations.CreateModel(
name='Review',
fields=[
@ -62,11 +57,15 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='task',
name='process',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='process.Process'),
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tasks', to='process.Process'),
),
migrations.AddField(
model_name='process',
name='document_version',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='evolus.Version'),
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='processes', to='dms.Version'),
),
migrations.AlterUniqueTogether(
name='task',
unique_together=set([('assigned_to', 'process', 'status')]),
),
]

View File

@ -1,22 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-09-21 18:47
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('process', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='task',
name='assigned_to',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
]

View File

@ -1,27 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-09-21 18:55
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('process', '0002_auto_20170921_1847'),
]
operations = [
migrations.AlterField(
model_name='task',
name='process',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tasks', to='process.Process'),
),
migrations.AlterUniqueTogether(
name='task',
unique_together=set([('assigned_to', 'process', 'status')]),
),
]

View File

@ -1,19 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-27 20:55
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('process', '0003_auto_20170921_1855'),
]
operations = [
migrations.RemoveField(
model_name='process',
name='process_type',
),
]

View File

@ -1,22 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-31 09:14
from __future__ import unicode_literals
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('process', '0004_remove_process_process_type'),
]
operations = [
migrations.AddField(
model_name='process',
name='created_at',
field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
preserve_default=False,
),
]

View File

@ -4,16 +4,31 @@ from django.contrib.auth.models import User
class Process(models.Model):
document_version = models.ForeignKey('evolus.Version', related_name='processes')
"""A process is a group of tasks that needs to be completed by several users.
Attributes:
document_version
created_at (datetime - auto)
"""
document_version = models.ForeignKey('dms.Version', related_name='processes')
created_at = models.DateTimeField(auto_now_add=True)
def percentage_of_completion(self):
"""Defines how much the current has progressed.
At 100%, the process is considered finished.
Returns:
The number of status where status = 3 'Completed', divided by the total number of tasks, times 100.
If there are no tasks associated to the current process, we simply return 'NaN'
"""
total = self.tasks.count()
if total:
return self.tasks.filter(status=3).count() / self.tasks.count() * 100
return 'NaN'
def __str__(self):
"""Returns the current document version on which the process applies."""
return 'Process on {}'.format(self.document_version)
def create_task(self, assigned_to):
@ -66,6 +81,7 @@ class Task(models.Model):
class PublishedProcessMixin(object):
"""Defines a specific mixin that only applies on published version"""
def save(self, *args, **kwargs):
if self.document_version.status == 'Draft':
raise TypeError('Review flow cant apply to draft documents')
@ -73,6 +89,7 @@ class PublishedProcessMixin(object):
class DraftProcessMixin(object):
"""Defines a specific mixin that only applies on draft version."""
def save(self, *args, **kwargs):
if self.document_version.status == 'Published':
raise TypeError('Review flow cant apply to published documents')
@ -80,6 +97,7 @@ class DraftProcessMixin(object):
class Review(Process, PublishedProcessMixin):
"""A review process is a process that will apply when a document has been published."""
PROCESS_TYPE = 'Review'
def __str__(self):
@ -87,6 +105,7 @@ class Review(Process, PublishedProcessMixin):
class Approval(Process, DraftProcessMixin):
"""Approval process, to published a draft version and make it accessible to other people."""
PROCESS_TYPE = 'Approval'
def save(self, *args, **kwargs):
@ -109,10 +128,3 @@ class GatherComments(Process, DraftProcessMixin):
super().save()
for reviewer in self.document_version.reviewers.all():
self.create_task(reviewer)
class Knowledge(Process, PublishedProcessMixin):
PROCESS_TYPE = 'Knowledge'
def allow_tasks_delegation(self):
return False

View File

@ -3,5 +3,6 @@ django-closuretree<1.2
django-filter==1.0.4
django-simple-history==1.9.0
django-simple-history==1.9.0
django-mptt==0.8.7
pylint
markdown

3
revisions/a_acheter.md Normal file
View File

@ -0,0 +1,3 @@
Thermomètre de frigo
Rétroviseur vélo
Mysterium (jeu de plateau ou le bidule sur l'ordi?)