- Legacy-Id: 2731
This commit is contained in:
parent
1e5f2df379
commit
82a852a5d5
|
@ -0,0 +1,107 @@
|
|||
|
||||
from south.db import db
|
||||
from django.db import models
|
||||
from ietf.ietfworkflows.models import *
|
||||
|
||||
class Migration:
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding ManyToManyField 'WGWorkflow.selected_tags'
|
||||
db.create_table('ietfworkflows_wgworkflow_selected_tags', (
|
||||
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||
('wgworkflow', models.ForeignKey(orm.WGWorkflow, null=False)),
|
||||
('annotationtag', models.ForeignKey(orm.AnnotationTag, null=False))
|
||||
))
|
||||
|
||||
# Adding ManyToManyField 'WGWorkflow.selected_states'
|
||||
db.create_table('ietfworkflows_wgworkflow_selected_states', (
|
||||
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||
('wgworkflow', models.ForeignKey(orm.WGWorkflow, null=False)),
|
||||
('state', models.ForeignKey(orm['workflows.State'], null=False))
|
||||
))
|
||||
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Dropping ManyToManyField 'WGWorkflow.selected_tags'
|
||||
db.delete_table('ietfworkflows_wgworkflow_selected_tags')
|
||||
|
||||
# Dropping ManyToManyField 'WGWorkflow.selected_states'
|
||||
db.delete_table('ietfworkflows_wgworkflow_selected_states')
|
||||
|
||||
|
||||
|
||||
models = {
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'ietfworkflows.annotationtag': {
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['permissions.Permission']", 'null': 'True', 'blank': 'True'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'annotation_tags'", 'to': "orm['workflows.Workflow']"})
|
||||
},
|
||||
'ietfworkflows.annotationtagobjectrelation': {
|
||||
'annotation_tag': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.AnnotationTag']"}),
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'annotation_tags'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'ietfworkflows.objectannotationtaghistoryentry': {
|
||||
'change_date': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'comment': ('django.db.models.fields.TextField', [], {}),
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'annotation_tags_history'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'setted': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'unsetted': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.objectworkflowhistoryentry': {
|
||||
'comment': ('django.db.models.fields.TextField', [], {}),
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'workflow_history'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'from_state': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'to_state': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'transition_date': ('django.db.models.fields.DateTimeField', [], {})
|
||||
},
|
||||
'ietfworkflows.wgworkflow': {
|
||||
'selected_states': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['workflows.State']"}),
|
||||
'selected_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ietfworkflows.AnnotationTag']"}),
|
||||
'workflow_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['workflows.Workflow']", 'unique': 'True', 'primary_key': 'True'})
|
||||
},
|
||||
'permissions.permission': {
|
||||
'codename': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}),
|
||||
'content_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
|
||||
},
|
||||
'workflows.state': {
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'transitions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['workflows.Transition']", 'null': 'True', 'blank': 'True'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'states'", 'to': "orm['workflows.Workflow']"})
|
||||
},
|
||||
'workflows.transition': {
|
||||
'condition': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
|
||||
'destination': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'destination_state'", 'null': 'True', 'to': "orm['workflows.State']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['permissions.Permission']", 'null': 'True', 'blank': 'True'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'transitions'", 'to': "orm['workflows.Workflow']"})
|
||||
},
|
||||
'workflows.workflow': {
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'initial_state': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'workflow_state'", 'null': 'True', 'to': "orm['workflows.State']"}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['permissions.Permission']", 'symmetrical': 'False'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['ietfworkflows']
|
|
@ -3,7 +3,7 @@ from django.contrib.contenttypes.models import ContentType
|
|||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from workflows.models import Workflow
|
||||
from workflows.models import Workflow, State
|
||||
from permissions.models import Permission
|
||||
|
||||
|
||||
|
@ -47,6 +47,5 @@ class ObjectAnnotationTagHistoryEntry(models.Model):
|
|||
|
||||
|
||||
class WGWorkflow(Workflow):
|
||||
|
||||
class Meta:
|
||||
proxy = True
|
||||
selected_states = models.ManyToManyField(State)
|
||||
selected_tags = models.ManyToManyField(AnnotationTag)
|
||||
|
|
|
@ -1,15 +1,53 @@
|
|||
import copy
|
||||
|
||||
from workflows.utils import get_workflow_for_object, set_workflow_for_object
|
||||
|
||||
from ietf.ietfworkflows.models import WGWorkflow
|
||||
|
||||
|
||||
def get_default_workflow_for_wg():
|
||||
try:
|
||||
workflow = WGWorkflow.objects.get(name='Default WG Workflow')
|
||||
return workflow
|
||||
except WGWorkflow.DoesNotExist:
|
||||
return None
|
||||
|
||||
def clone_transition(transition):
|
||||
new = copy.copy(transition)
|
||||
new.pk = None
|
||||
new.save()
|
||||
|
||||
# Reference original initial states
|
||||
for state in transition.states.all():
|
||||
new.states.add(state)
|
||||
return new
|
||||
|
||||
def clone_workflow(workflow, name):
|
||||
new = WGWorkflow.objects.create(name=name, initial_state=workflow.initial_state)
|
||||
|
||||
# Reference default states
|
||||
for state in workflow.states.all():
|
||||
new.selected_states.add(state)
|
||||
|
||||
# Reference default annotation tags
|
||||
for tag in workflow.annotation_tags.all():
|
||||
new.selected_tags.add(tag)
|
||||
|
||||
# Reference cloned transitions
|
||||
for transition in workflow.transitions.all():
|
||||
new.transitions.add(clone_transition(transition))
|
||||
return new
|
||||
|
||||
def get_workflow_for_wg(wg):
|
||||
workflow = get_workflow_for_object(wg)
|
||||
try:
|
||||
workflow = workflow and workflow.wgworkflow
|
||||
except WGWorkflow.DoesNotExist:
|
||||
workflow = None
|
||||
if not workflow:
|
||||
try:
|
||||
workflow = WGWorkflow.objects.get(name='Default WG Workflow')
|
||||
set_workflow_for_object(wg, workflow)
|
||||
except WGWorkflow.DoesNotExist:
|
||||
workflow = get_default_workflow_for_wg()
|
||||
if not workflow:
|
||||
return None
|
||||
workflow = clone_workflow(workflow, name='%s workflow' % wg)
|
||||
set_workflow_for_object(wg, workflow)
|
||||
return workflow
|
||||
|
||||
|
|
Loading…
Reference in a new issue