update db
This commit is contained in:
parent
61e887f71f
commit
5bb26bf415
|
@ -37,10 +37,11 @@ INSTALLED_APPS = [
|
|||
'django.contrib.sessions',
|
||||
'django.contrib.messages',
|
||||
'django.contrib.staticfiles',
|
||||
'evolus',
|
||||
'dms',
|
||||
'jci',
|
||||
'reversion',
|
||||
'process',
|
||||
'mptt',
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
|
|
|
@ -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')),
|
||||
]
|
||||
|
|
BIN
db.sqlite3
BIN
db.sqlite3
Binary file not shown.
|
@ -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)
|
|
@ -2,4 +2,4 @@ from django.apps import AppConfig
|
|||
|
||||
|
||||
class EvolusConfig(AppConfig):
|
||||
name = 'evolus'
|
||||
name = 'dms'
|
|
@ -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):
|
|
@ -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(
|
|
@ -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)
|
|
@ -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 = [
|
|
@ -0,0 +1 @@
|
|||
Fred Pauchet,fred,quistis,16.11.2017 22:06,file:///home/fred/.config/libreoffice/4;
|
|
@ -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'),
|
||||
),
|
||||
]
|
|
@ -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'),
|
||||
),
|
||||
]
|
|
@ -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),
|
||||
),
|
||||
]
|
|
@ -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),
|
||||
),
|
||||
]
|
|
@ -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')]),
|
||||
),
|
||||
]
|
|
@ -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'),
|
||||
),
|
||||
]
|
|
@ -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),
|
||||
),
|
||||
]
|
|
@ -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',
|
||||
),
|
||||
]
|
|
@ -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'),
|
||||
),
|
||||
]
|
|
@ -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',
|
||||
),
|
||||
]
|
|
@ -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,
|
||||
),
|
||||
]
|
|
@ -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',
|
||||
),
|
||||
]
|
|
@ -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',
|
||||
),
|
||||
]
|
|
@ -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),
|
||||
),
|
||||
]
|
|
@ -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
|
@ -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)
|
||||
|
|
|
@ -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')]),
|
||||
),
|
||||
]
|
||||
|
|
|
@ -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),
|
||||
),
|
||||
]
|
|
@ -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')]),
|
||||
),
|
||||
]
|
|
@ -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',
|
||||
),
|
||||
]
|
|
@ -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,
|
||||
),
|
||||
]
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
Thermomètre de frigo
|
||||
Rétroviseur vélo
|
||||
Mysterium (jeu de plateau ou le bidule sur l'ordi?)
|
Loading…
Reference in New Issue