Remove ietfworkflows which is now obsolete
- Legacy-Id: 6297
This commit is contained in:
parent
8145d688de
commit
050929a56d
|
@ -25,8 +25,6 @@ from ietf.utils.textupload import get_cleaned_text_file_content
|
|||
from ietf.person.forms import EmailsField
|
||||
from ietf.group.models import Group
|
||||
|
||||
from ietf.ietfworkflows.accounts import can_edit_state
|
||||
|
||||
from ietf.doc.models import *
|
||||
from ietf.doc.utils import *
|
||||
from ietf.name.models import IntendedStdLevelName, DocTagName, StreamName
|
||||
|
@ -1026,7 +1024,7 @@ def request_publication(request, name):
|
|||
|
||||
doc = get_object_or_404(Document, type="draft", name=name, stream__in=("iab", "ise", "irtf"))
|
||||
|
||||
if not can_edit_state(request.user, doc):
|
||||
if not is_authorized_in_doc_stream(request.user, doc):
|
||||
return HttpResponseForbidden("You do not have the necessary permissions to view this page")
|
||||
|
||||
m = Message()
|
||||
|
|
1
ietf/ietfworkflows/.gitignore
vendored
1
ietf/ietfworkflows/.gitignore
vendored
|
@ -1 +0,0 @@
|
|||
/*.pyc
|
|
@ -1,18 +0,0 @@
|
|||
# coding: latin-1
|
||||
|
||||
from types import ModuleType
|
||||
import urls, models, views, forms, accounts
|
||||
|
||||
# These people will be sent a stack trace if there's an uncaught exception in
|
||||
# code any of the modules imported above:
|
||||
DEBUG_EMAILS = [
|
||||
('Emilio A. Sánchez', 'esanchez@yaco.es'),
|
||||
]
|
||||
|
||||
for k in locals().keys():
|
||||
m = locals()[k]
|
||||
if isinstance(m, ModuleType):
|
||||
if hasattr(m, "DEBUG_EMAILS"):
|
||||
DEBUG_EMAILS += list(getattr(m, "DEBUG_EMAILS"))
|
||||
setattr(m, "DEBUG_EMAILS", DEBUG_EMAILS)
|
||||
|
|
@ -1,132 +0,0 @@
|
|||
from django.conf import settings
|
||||
|
||||
from django.db.models import Q
|
||||
|
||||
from ietf.ietfworkflows.streams import get_streamed_draft
|
||||
from ietf.group.models import Role
|
||||
|
||||
|
||||
def get_person_for_user(user):
|
||||
try:
|
||||
return user.get_profile().person()
|
||||
except:
|
||||
return None
|
||||
|
||||
|
||||
def is_secretariat(user):
|
||||
if not user or not user.is_authenticated():
|
||||
return False
|
||||
return bool(user.groups.filter(name='Secretariat'))
|
||||
|
||||
|
||||
def is_wgchair(person):
|
||||
return bool(person.wgchair_set.all())
|
||||
|
||||
def is_wgchairREDESIGN(person):
|
||||
return bool(Role.objects.filter(name="chair", group__type="wg", group__state="active", person=person))
|
||||
|
||||
def is_rgchairREDESIGN(person):
|
||||
return bool(Role.objects.filter(name="chair", group__type="rg", group__state="active", person=person))
|
||||
|
||||
def is_wgdelegate(person):
|
||||
return bool(person.wgdelegate_set.all())
|
||||
|
||||
def is_wgdelegateREDESIGN(person):
|
||||
return bool(Role.objects.filter(name="delegate", group__type="wg", group__state="active", person=person))
|
||||
|
||||
def is_rgdelegateREDESIGN(person):
|
||||
return bool(Role.objects.filter(name="delegate", group__type="rg", group__state="active", person=person))
|
||||
|
||||
def is_delegate_of_stream(user, stream):
|
||||
if is_secretariat(user):
|
||||
return True
|
||||
person = get_person_for_user(user)
|
||||
return stream.check_delegate(person)
|
||||
|
||||
def is_delegate_of_streamREDESIGN(user, stream):
|
||||
if is_secretariat(user):
|
||||
return True
|
||||
return user.is_authenticated() and bool(Role.objects.filter(group__acronym=stream.slug, name="delegate", person__user=user))
|
||||
|
||||
|
||||
def is_chair_of_stream(user, stream):
|
||||
if is_secretariat(user):
|
||||
return True
|
||||
person = get_person_for_user(user)
|
||||
return stream.check_chair(person)
|
||||
|
||||
def is_chair_of_streamREDESIGN(user, stream):
|
||||
if is_secretariat(user):
|
||||
return True
|
||||
if isinstance(user, basestring):
|
||||
return False
|
||||
return user.is_authenticated() and bool(Role.objects.filter(group__acronym=stream.slug, name="chair", person__user=user))
|
||||
|
||||
def is_authorized_in_draft_stream(user, draft):
|
||||
if is_secretariat(user):
|
||||
return True
|
||||
person = get_person_for_user(user)
|
||||
if not person:
|
||||
return False
|
||||
streamed = get_streamed_draft(draft)
|
||||
if not streamed or not streamed.stream:
|
||||
return False
|
||||
# Check if the person is chair of the stream
|
||||
if is_chair_of_stream(user, streamed.stream):
|
||||
return True
|
||||
# Check if the person is delegate of the stream
|
||||
if is_delegate_of_stream(user, streamed.stream):
|
||||
return True
|
||||
# Check if the person is chair of the related group
|
||||
chairs = streamed.stream.get_chairs_for_document(draft)
|
||||
if chairs and person in [i.person for i in chairs]:
|
||||
return True
|
||||
# Check if the person is authorized by a delegate system
|
||||
delegates = streamed.stream.get_delegates_for_document(draft)
|
||||
return bool(person in delegates)
|
||||
|
||||
def is_authorized_in_draft_streamREDESIGN(user, draft):
|
||||
if is_secretariat(user):
|
||||
return True
|
||||
|
||||
from ietf.doc.models import Document
|
||||
|
||||
if not super(Document, draft).stream:
|
||||
return False
|
||||
|
||||
# must be a chair or delegate of the stream group (or draft group)
|
||||
group_req = Q(group__acronym=super(Document, draft).stream.slug)
|
||||
if draft.group and super(Document, draft).stream.slug in ["ietf", "irtf"]:
|
||||
group_req |= Q(group=draft.group)
|
||||
|
||||
return user.is_authenticated() and bool(Role.objects.filter(name__in=("chair", "secr", "delegate"), person__user=user).filter(group_req))
|
||||
|
||||
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
from ietf.liaisons.accounts import is_secretariat, get_person_for_user
|
||||
is_wgdelegate = is_wgdelegateREDESIGN
|
||||
is_wgchair = is_wgchairREDESIGN
|
||||
is_rgdelegate = is_rgdelegateREDESIGN
|
||||
is_rgchair = is_rgchairREDESIGN
|
||||
is_chair_of_stream = is_chair_of_streamREDESIGN
|
||||
is_delegate_of_stream = is_delegate_of_streamREDESIGN
|
||||
is_authorized_in_draft_stream = is_authorized_in_draft_streamREDESIGN
|
||||
|
||||
|
||||
def can_edit_state(user, draft):
|
||||
return (is_secretariat(user) or
|
||||
is_authorized_in_draft_stream(user, draft))
|
||||
|
||||
|
||||
def can_edit_stream(user, draft):
|
||||
return is_secretariat(user)
|
||||
|
||||
def can_adopt(user, draft):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES and (not draft.stream_id or draft.stream_id in ["ietf", "irtf"]) and draft.group.type_id == "individ":
|
||||
person = get_person_for_user(user)
|
||||
if not person:
|
||||
return False
|
||||
return is_wgchair(person) or is_rgchair(person) or is_wgdelegate(person) or is_rgdelegate(person) or is_secretariat(user)
|
||||
else:
|
||||
return is_secretariat(user)
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
# Required states
|
||||
CALL_FOR_ADOPTION = 'Call For Adoption By WG Issued'
|
||||
WG_DOCUMENT = 'WG Document'
|
||||
SUBMITTED_TO_IESG = 'Submitted to IESG for Publication'
|
||||
|
||||
REQUIRED_STATES = (
|
||||
CALL_FOR_ADOPTION,
|
||||
WG_DOCUMENT,
|
||||
SUBMITTED_TO_IESG,
|
||||
)
|
||||
|
||||
# IETF Stream
|
||||
IETF_STREAM = 'IETF'
|
1
ietf/ietfworkflows/fixtures/.gitignore
vendored
1
ietf/ietfworkflows/fixtures/.gitignore
vendored
|
@ -1 +0,0 @@
|
|||
/*.pyc
|
|
@ -1,686 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<django-objects version="1.0">
|
||||
<object pk="1" model="workflows.workflow">
|
||||
<field type="CharField" name="name">Default WG Workflow</field>
|
||||
<field to="workflows.state" name="initial_state" rel="ManyToOneRel">11</field>
|
||||
</object>
|
||||
<object pk="2" model="workflows.workflow">
|
||||
<field type="CharField" name="name">IAB Workflow</field>
|
||||
<field to="workflows.state" name="initial_state" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="3" model="workflows.workflow">
|
||||
<field type="CharField" name="name">IRTF Workflow</field>
|
||||
<field to="workflows.state" name="initial_state" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="4" model="workflows.workflow">
|
||||
<field type="CharField" name="name">ISE Workflow</field>
|
||||
<field to="workflows.state" name="initial_state" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="32" model="workflows.state">
|
||||
<field type="CharField" name="name">Active IAB Document</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">2</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="42" model="workflows.state">
|
||||
<field type="CharField" name="name">Active RG Document</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">3</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="12" model="workflows.state">
|
||||
<field type="CharField" name="name">Adopted by a WG</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"><object pk="12"></object></field>
|
||||
</object>
|
||||
<object pk="13" model="workflows.state">
|
||||
<field type="CharField" name="name">Adopted for WG Info Only</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="36" model="workflows.state">
|
||||
<field type="CharField" name="name">Approved by IAB, To Be Sent to RFC Editor</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">2</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="47" model="workflows.state">
|
||||
<field type="CharField" name="name">Awaiting IRSG Reviews</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">3</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="11" model="workflows.state">
|
||||
<field type="CharField" name="name">Call For Adoption By WG Issued</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"><object pk="10"></object><object pk="11"></object></field>
|
||||
</object>
|
||||
<object pk="31" model="workflows.state">
|
||||
<field type="CharField" name="name">Candidate IAB Document</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">2</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="41" model="workflows.state">
|
||||
<field type="CharField" name="name">Candidate RG Document</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">3</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="35" model="workflows.state">
|
||||
<field type="CharField" name="name">Community Review</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">2</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="40" model="workflows.state">
|
||||
<field type="CharField" name="name">Dead IAB Document</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">2</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="53" model="workflows.state">
|
||||
<field type="CharField" name="name">Dead IRTF Document</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">3</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="16" model="workflows.state">
|
||||
<field type="CharField" name="name">Dead WG Document</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"><object pk="12"></object></field>
|
||||
</object>
|
||||
<object pk="51" model="workflows.state">
|
||||
<field type="CharField" name="name">Document on Hold Based On IESG Request</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">3</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="62" model="workflows.state">
|
||||
<field type="CharField" name="name">Document on Hold Based On IESG Request</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">4</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="55" model="workflows.state">
|
||||
<field type="CharField" name="name">Finding Reviewers</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">4</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="34" model="workflows.state">
|
||||
<field type="CharField" name="name">IAB Review</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">2</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="49" model="workflows.state">
|
||||
<field type="CharField" name="name">In IESG Review</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">3</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="58" model="workflows.state">
|
||||
<field type="CharField" name="name">In IESG Review</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">4</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="48" model="workflows.state">
|
||||
<field type="CharField" name="name">In IRSG Poll</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">3</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="56" model="workflows.state">
|
||||
<field type="CharField" name="name">In ISE Review</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">4</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="44" model="workflows.state">
|
||||
<field type="CharField" name="name">In RG Last Call</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">3</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="17" model="workflows.state">
|
||||
<field type="CharField" name="name">In WG Last Call</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"><object pk="12"></object><object pk="17"></object><object pk="18"></object></field>
|
||||
</object>
|
||||
<object pk="61" model="workflows.state">
|
||||
<field type="CharField" name="name">No Longer In Independent Submission Stream</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">4</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="33" model="workflows.state">
|
||||
<field type="CharField" name="name">Parked IAB Document</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">2</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="43" model="workflows.state">
|
||||
<field type="CharField" name="name">Parked RG Document</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">3</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="15" model="workflows.state">
|
||||
<field type="CharField" name="name">Parked WG Document</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"><object pk="12"></object></field>
|
||||
</object>
|
||||
<object pk="57" model="workflows.state">
|
||||
<field type="CharField" name="name">Response to Review Needed</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">4</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="37" model="workflows.state">
|
||||
<field type="CharField" name="name">Sent to a Different Organization for Publication</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">2</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="38" model="workflows.state">
|
||||
<field type="CharField" name="name">Sent to the RFC Editor</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">2</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="59" model="workflows.state">
|
||||
<field type="CharField" name="name">Sent to the RFC Editor</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">4</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="50" model="workflows.state">
|
||||
<field type="CharField" name="name">Sent to the RFC Editor</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">3</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="54" model="workflows.state">
|
||||
<field type="CharField" name="name">Submission Received</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">4</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="20" model="workflows.state">
|
||||
<field type="CharField" name="name">Submitted to IESG for Publication</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"><object pk="12"></object></field>
|
||||
</object>
|
||||
<object pk="45" model="workflows.state">
|
||||
<field type="CharField" name="name">Waiting for Document Shepherd</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">3</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="46" model="workflows.state">
|
||||
<field type="CharField" name="name">Waiting for IRTF Chair</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">3</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="18" model="workflows.state">
|
||||
<field type="CharField" name="name">Waiting for WG Chair Go-Ahead</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"><object pk="16"></object><object pk="17"></object></field>
|
||||
</object>
|
||||
<object pk="19" model="workflows.state">
|
||||
<field type="CharField" name="name">WG Consensus: Waiting for Write-Up</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"><object pk="15"></object></field>
|
||||
</object>
|
||||
<object pk="14" model="workflows.state">
|
||||
<field type="CharField" name="name">WG Document</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.transition" name="transitions" rel="ManyToManyRel"><object pk="13"></object><object pk="14"></object><object pk="16"></object><object pk="17"></object></field>
|
||||
</object>
|
||||
<object pk="18" model="workflows.transition">
|
||||
<field type="CharField" name="name">Wait for go-ahead</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.state" name="destination" rel="ManyToOneRel">18</field>
|
||||
<field type="CharField" name="condition"></field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="17" model="workflows.transition">
|
||||
<field type="CharField" name="name">Reach consensus</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.state" name="destination" rel="ManyToOneRel">19</field>
|
||||
<field type="CharField" name="condition"></field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="10" model="workflows.transition">
|
||||
<field type="CharField" name="name">Adopt</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.state" name="destination" rel="ManyToOneRel">12</field>
|
||||
<field type="CharField" name="condition"></field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="11" model="workflows.transition">
|
||||
<field type="CharField" name="name">Adopt for WG info only</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.state" name="destination" rel="ManyToOneRel">13</field>
|
||||
<field type="CharField" name="condition"></field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="12" model="workflows.transition">
|
||||
<field type="CharField" name="name">Develop</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.state" name="destination" rel="ManyToOneRel">14</field>
|
||||
<field type="CharField" name="condition"></field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="13" model="workflows.transition">
|
||||
<field type="CharField" name="name">Park</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.state" name="destination" rel="ManyToOneRel">15</field>
|
||||
<field type="CharField" name="condition"></field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="14" model="workflows.transition">
|
||||
<field type="CharField" name="name">Die</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.state" name="destination" rel="ManyToOneRel">16</field>
|
||||
<field type="CharField" name="condition"></field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="15" model="workflows.transition">
|
||||
<field type="CharField" name="name">Submit to IESG</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.state" name="destination" rel="ManyToOneRel">20</field>
|
||||
<field type="CharField" name="condition"></field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="16" model="workflows.transition">
|
||||
<field type="CharField" name="name">Raise last call</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="workflows.state" name="destination" rel="ManyToOneRel">17</field>
|
||||
<field type="CharField" name="condition"></field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="31" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Revised I-D Needed</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">3</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="29" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Shepherd Needed</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">3</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="30" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Waiting for Dependency on Other Document</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">3</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="26" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Revised I-D Needed</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">2</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="27" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Document Shepherd Followup</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">2</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="28" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Editor Needed</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">3</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="25" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Awaiting Reviews</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">2</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="24" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Waiting for Partner Feedback</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">2</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="11" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Other - see Comment Log</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="23" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Editor Needed</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">2</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="10" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Doc Shepherd Follow-Up Underway</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="9" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Revised I-D Needed - Issue raised by IESG</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="1" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Awaiting Expert Review/Resolution of Issues Raised</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="2" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Awaiting External Review/Resolution of Issues Raised</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="3" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Awaiting Merge with Other Document</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="4" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Author or Editor Needed</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="5" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Waiting for Referenced Document</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="8" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Revised I-D Needed - Issue raised by AD</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="7" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Revised I-D Needed - Issue raised by WGLC</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="6" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Waiting for Referencing Document</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="32" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">IESG Review Completed</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">3</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="33" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Waiting for Dependency on Other Document</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">4</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="34" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Awaiting Reviews</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">4</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="35" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">Revised I-D Needed</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">4</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="36" model="ietfworkflows.annotationtag">
|
||||
<field type="CharField" name="name">IESG Review Completed</field>
|
||||
<field to="workflows.workflow" name="workflow" rel="ManyToOneRel">4</field>
|
||||
<field to="permissions.permission" name="permission" rel="ManyToOneRel"><None></None></field>
|
||||
</object>
|
||||
<object pk="1" model="ietfworkflows.wgworkflow">
|
||||
<field to="workflows.state" name="selected_states" rel="ManyToManyRel"></field>
|
||||
<field to="ietfworkflows.annotationtag" name="selected_tags" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="2" model="ietfworkflows.wgworkflow">
|
||||
<field to="workflows.state" name="selected_states" rel="ManyToManyRel"></field>
|
||||
<field to="ietfworkflows.annotationtag" name="selected_tags" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="3" model="ietfworkflows.wgworkflow">
|
||||
<field to="workflows.state" name="selected_states" rel="ManyToManyRel"></field>
|
||||
<field to="ietfworkflows.annotationtag" name="selected_tags" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="4" model="ietfworkflows.wgworkflow">
|
||||
<field to="workflows.state" name="selected_states" rel="ManyToManyRel"></field>
|
||||
<field to="ietfworkflows.annotationtag" name="selected_tags" rel="ManyToManyRel"></field>
|
||||
</object>
|
||||
<object pk="1" model="ietfworkflows.stream">
|
||||
<field type="CharField" name="name">IETF</field>
|
||||
<field type="CharField" name="document_group_attribute">group.ietfwg</field>
|
||||
<field type="CharField" name="group_chair_attribute">chairs</field>
|
||||
<field to="ietfworkflows.wgworkflow" name="workflow" rel="ManyToOneRel">1</field>
|
||||
</object>
|
||||
<object pk="2" model="ietfworkflows.stream">
|
||||
<field type="CharField" name="name">IAB</field>
|
||||
<field type="CharField" name="document_group_attribute"></field>
|
||||
<field type="CharField" name="group_chair_attribute"></field>
|
||||
<field to="ietfworkflows.wgworkflow" name="workflow" rel="ManyToOneRel">2</field>
|
||||
</object>
|
||||
<object pk="3" model="ietfworkflows.stream">
|
||||
<field type="CharField" name="name">IRTF</field>
|
||||
<field type="CharField" name="document_group_attribute"></field>
|
||||
<field type="CharField" name="group_chair_attribute"></field>
|
||||
<field to="ietfworkflows.wgworkflow" name="workflow" rel="ManyToOneRel">3</field>
|
||||
</object>
|
||||
<object pk="4" model="ietfworkflows.stream">
|
||||
<field type="CharField" name="name">ISE</field>
|
||||
<field type="CharField" name="document_group_attribute"></field>
|
||||
<field type="CharField" name="group_chair_attribute"></field>
|
||||
<field to="ietfworkflows.wgworkflow" name="workflow" rel="ManyToOneRel">4</field>
|
||||
</object>
|
||||
<object pk="1" model="ietfworkflows.statedescription">
|
||||
<field to="workflows.state" name="state" rel="ManyToOneRel">11</field>
|
||||
<field type="TextField" name="definition"><a href="http://tools.ietf.org/html/rfc6174#section-4.2.1" target="_blank">4.2.1. Call for Adoption by WG Issued</a>
|
||||
|
||||
|
||||
The "Call for Adoption by WG Issued" state should be used to indicate
|
||||
when an I-D is being considered for adoption by an IETF WG. An I-D
|
||||
that is in this state is actively being considered for adoption and
|
||||
has not yet achieved consensus, preference, or selection in the WG.
|
||||
|
||||
This state may be used to describe an I-D that someone has asked a WG
|
||||
to consider for adoption, if the WG Chair has agreed with the
|
||||
request. This state may also be used to identify an I-D that a WG
|
||||
Chair asked an author to write specifically for consideration as a
|
||||
candidate WG item [WGDTSPEC], and/or an I-D that is listed as a
|
||||
'candidate draft' in the WG's charter.
|
||||
|
||||
Under normal conditions, it should not be possible for an I-D to be
|
||||
in the "Call for Adoption by WG Issued" state in more than one
|
||||
working group at the same time. This said, it is not uncommon for
|
||||
authors to "shop" their I-Ds to more than one WG at a time, with the
|
||||
hope of getting their documents adopted somewhere.
|
||||
|
||||
After this state is implemented in the Datatracker, an I-D that is in
|
||||
the "Call for Adoption by WG Issued" state will not be able to be
|
||||
"shopped" to any other WG without the consent of the WG Chairs and
|
||||
the responsible ADs impacted by the shopping.
|
||||
|
||||
Note that Figure 1 includes an arc leading from this state to outside
|
||||
of the WG state machine. This illustrates that some I-Ds that are
|
||||
considered do not get adopted as WG drafts. An I-D that is not
|
||||
adopted as a WG draft will transition out of the WG state machine and
|
||||
revert back to having no stream-specific state; however, the status
|
||||
change history log of the I-D will record that the I-D was previously
|
||||
in the "Call for Adoption by WG Issued" state.
|
||||
</field>
|
||||
<field type="PositiveIntegerField" name="order">1</field>
|
||||
</object>
|
||||
<object pk="2" model="ietfworkflows.statedescription">
|
||||
<field to="workflows.state" name="state" rel="ManyToOneRel">12</field>
|
||||
<field type="TextField" name="definition"><a href="http://tools.ietf.org/html/rfc6174#section-4.2.2" target="_blank">4.2.2. Adopted by a WG</a>
|
||||
|
||||
|
||||
The "Adopted by a WG" state describes an individual submission I-D
|
||||
that an IETF WG has agreed to adopt as one of its WG drafts.
|
||||
|
||||
WG Chairs who use this state will be able to clearly indicate when
|
||||
their WGs adopt individual submission I-Ds. This will facilitate the
|
||||
Datatracker's ability to correctly capture "Replaces" information for
|
||||
WG drafts and correct "Replaced by" information for individual
|
||||
submission I-Ds that have been replaced by WG drafts.
|
||||
|
||||
This state is needed because the Datatracker uses the filename of an
|
||||
I-D as a key to search its database for status information about the
|
||||
I-D, and because the filename of a WG I-D is supposed to be different
|
||||
from the filename of an individual submission I-D.
|
||||
The filename of an individual submission I-D will typically be
|
||||
formatted as 'draft-author-wgname-topic-nn'.
|
||||
|
||||
The filename of a WG document is supposed to be formatted as 'draft-
|
||||
ietf-wgname-topic-nn'.
|
||||
|
||||
An individual I-D that is adopted by a WG may take weeks or months to
|
||||
be resubmitted by the author as a new (version-00) WG draft. If the
|
||||
"Adopted by a WG" state is not used, the Datatracker has no way to
|
||||
determine that an I-D has been adopted until a new version of the I-D
|
||||
is submitted to the WG by the author and until the I-D is approved
|
||||
for posting by a WG Chair.
|
||||
</field>
|
||||
<field type="PositiveIntegerField" name="order">2</field>
|
||||
</object>
|
||||
<object pk="3" model="ietfworkflows.statedescription">
|
||||
<field to="workflows.state" name="state" rel="ManyToOneRel">13</field>
|
||||
<field type="TextField" name="definition"><a href="http://tools.ietf.org/html/rfc6174#section-4.2.3" target="_blank">4.2.3. Adopted for WG Info Only</a>
|
||||
|
||||
|
||||
The "Adopted for WG Info Only" state describes a document that
|
||||
contains useful information for the WG that adopted it, but the
|
||||
document is not intended to be published as an RFC. The WG will not
|
||||
actively develop the contents of the I-D or progress it for
|
||||
publication as an RFC. The only purpose of the I-D is to provide
|
||||
information for internal use by the WG.
|
||||
</field>
|
||||
<field type="PositiveIntegerField" name="order">3</field>
|
||||
</object>
|
||||
<object pk="4" model="ietfworkflows.statedescription">
|
||||
<field to="workflows.state" name="state" rel="ManyToOneRel">14</field>
|
||||
<field type="TextField" name="definition"><a href="http://tools.ietf.org/html/rfc6174#section-4.2.4" target="_blank">4.2.4. WG Document</a>
|
||||
|
||||
|
||||
The "WG Document" state describes an I-D that has been adopted by an
|
||||
IETF WG and is being actively developed.
|
||||
|
||||
A WG Chair may transition an I-D into the "WG Document" state at any
|
||||
time as long as the I-D is not being considered or developed in any
|
||||
other WG.
|
||||
|
||||
Alternatively, WG Chairs may rely upon new functionality to be added
|
||||
to the Datatracker to automatically move version-00 drafts into the
|
||||
"WG Document" state as described in Section 4.1.
|
||||
|
||||
Under normal conditions, it should not be possible for an I-D to be
|
||||
in the "WG Document" state in more than one WG at a time. This said,
|
||||
I-Ds may be transferred from one WG to another with the consent of
|
||||
the WG Chairs and the responsible ADs.
|
||||
|
||||
</field>
|
||||
<field type="PositiveIntegerField" name="order">4</field>
|
||||
</object>
|
||||
<object pk="5" model="ietfworkflows.statedescription">
|
||||
<field to="workflows.state" name="state" rel="ManyToOneRel">15</field>
|
||||
<field type="TextField" name="definition"><a href="http://tools.ietf.org/html/rfc6174#section-4.2.5" target="_blank">4.2.5. Parked WG Document</a>
|
||||
|
||||
|
||||
A "Parked WG Document" is an I-D that has lost its author or editor,
|
||||
is waiting for another document to be written or for a review to be
|
||||
completed, or cannot be progressed by the working group for some
|
||||
other reason.
|
||||
|
||||
Some of the annotation tags described in Section 4.3 may be used in
|
||||
conjunction with this state to indicate why an I-D has been parked,
|
||||
and/or what may need to happen for the I-D to be un-parked.
|
||||
|
||||
Parking a WG draft will not prevent it from expiring; however, this
|
||||
state can be used to indicate why the I-D has stopped progressing in
|
||||
the WG.
|
||||
|
||||
A "Parked WG Document" that is not expired may be transferred from
|
||||
one WG to another with the consent of the WG Chairs and the
|
||||
responsible ADs.
|
||||
|
||||
</field>
|
||||
<field type="PositiveIntegerField" name="order">5</field>
|
||||
</object>
|
||||
<object pk="6" model="ietfworkflows.statedescription">
|
||||
<field to="workflows.state" name="state" rel="ManyToOneRel">16</field>
|
||||
<field type="TextField" name="definition"><a href="http://tools.ietf.org/html/rfc6174#section-4.2.6" target="_blank">4.2.6. Dead WG Document</a>
|
||||
|
||||
|
||||
A "Dead WG Document" is an I-D that has been abandoned. Note that
|
||||
'Dead' is not always a final state for a WG I-D. If consensus is
|
||||
subsequently achieved, a "Dead WG Document" may be resurrected. A
|
||||
"Dead WG Document" that is not resurrected will eventually expire.
|
||||
|
||||
Note that an I-D that is declared to be "Dead" in one WG and that is
|
||||
not expired may be transferred to a non-dead state in another WG with
|
||||
the consent of the WG Chairs and the responsible ADs.
|
||||
|
||||
</field>
|
||||
<field type="PositiveIntegerField" name="order">6</field>
|
||||
</object>
|
||||
<object pk="7" model="ietfworkflows.statedescription">
|
||||
<field to="workflows.state" name="state" rel="ManyToOneRel">17</field>
|
||||
<field type="TextField" name="definition"><a href="http://tools.ietf.org/html/rfc6174#section-4.2.7" target="_blank">4.2.7. In WG Last Call</a>
|
||||
|
||||
|
||||
A document "In WG Last Call" is an I-D for which a WG Last Call
|
||||
(WGLC) has been issued and is in progress.
|
||||
|
||||
Note that conducting a WGLC is an optional part of the IETF WG
|
||||
process, per Section 7.4 of RFC 2418 [RFC2418].
|
||||
|
||||
If a WG Chair decides to conduct a WGLC on an I-D, the "In WG Last
|
||||
Call" state can be used to track the progress of the WGLC. The Chair
|
||||
may configure the Datatracker to send a WGLC message to one or more
|
||||
mailing lists when the Chair moves the I-D into this state. The WG
|
||||
Chair may also be able to select a different set of mailing lists for
|
||||
a different document undergoing a WGLC; some documents may deserve
|
||||
coordination with other WGs.
|
||||
|
||||
A WG I-D in this state should remain "In WG Last Call" until the WG
|
||||
Chair moves it to another state. The WG Chair may configure the
|
||||
Datatracker to send an e-mail after a specified period of time to
|
||||
remind or 'nudge' the Chair to conclude the WGLC and to determine the
|
||||
next state for the document.
|
||||
|
||||
It is possible for one WGLC to lead into another WGLC for the same
|
||||
document. For example, an I-D that completed a WGLC as an
|
||||
"Informational" document may need another WGLC if a decision is taken
|
||||
to convert the I-D into a Standards Track document.
|
||||
|
||||
</field>
|
||||
<field type="PositiveIntegerField" name="order">7</field>
|
||||
</object>
|
||||
<object pk="8" model="ietfworkflows.statedescription">
|
||||
<field to="workflows.state" name="state" rel="ManyToOneRel">18</field>
|
||||
<field type="TextField" name="definition"><a href="http://tools.ietf.org/html/rfc6174#section-4.2.8" target="_blank">4.2.8. Waiting for WG Chair Go-Ahead</a>
|
||||
|
||||
|
||||
A WG Chair may wish to place an I-D that receives a lot of comments
|
||||
during a WGLC into the "Waiting for WG Chair Go-Ahead" state. This
|
||||
state describes an I-D that has undergone a WGLC; however, the Chair
|
||||
is not yet ready to call consensus on the document.
|
||||
|
||||
If comments from the WGLC need to be responded to, or a revision to
|
||||
the I-D is needed, the Chair may place an I-D into this state until
|
||||
all of the WGLC comments are adequately addressed and the (possibly
|
||||
revised) document is in the I-D repository.
|
||||
|
||||
</field>
|
||||
<field type="PositiveIntegerField" name="order">8</field>
|
||||
</object>
|
||||
<object pk="9" model="ietfworkflows.statedescription">
|
||||
<field to="workflows.state" name="state" rel="ManyToOneRel">19</field>
|
||||
<field type="TextField" name="definition"><a href="http://tools.ietf.org/html/rfc6174#section-4.2.9" target="_blank">4.2.9. WG Consensus: Waiting for Writeup</a>
|
||||
|
||||
|
||||
A document in the "WG Consensus: Waiting for Writeup" state has
|
||||
essentially completed its development within the working group, and
|
||||
is nearly ready to be sent to the IESG for publication. The last
|
||||
thing to be done is the preparation of a protocol writeup by a
|
||||
Document Shepherd. The IESG requires that a document shepherd
|
||||
writeup be completed before publication of the I-D is requested. The
|
||||
IETF document shepherding process and the role of a WG Document
|
||||
Shepherd is described in RFC 4858 [RFC4858]
|
||||
|
||||
A WG Chair may call consensus on an I-D without a formal WGLC and
|
||||
transition an I-D that was in the "WG Document" state directly into
|
||||
this state.
|
||||
|
||||
The name of this state includes the words "Waiting for Writeup"
|
||||
because a good document shepherd writeup takes time to prepare.
|
||||
|
||||
</field>
|
||||
<field type="PositiveIntegerField" name="order">9</field>
|
||||
</object>
|
||||
<object pk="10" model="ietfworkflows.statedescription">
|
||||
<field to="workflows.state" name="state" rel="ManyToOneRel">20</field>
|
||||
<field type="TextField" name="definition"><a href="http://tools.ietf.org/html/rfc6174#section-4.2.10" target="_blank">4.2.10. Submitted to IESG for Publication</a>
|
||||
|
||||
|
||||
This state describes a WG document that has been submitted to the
|
||||
IESG for publication and that has not been sent back to the working
|
||||
group for revision.
|
||||
|
||||
An I-D in this state may be under review by the IESG, it may have
|
||||
been approved and be in the RFC Editor's queue, or it may have been
|
||||
published as an RFC. Other possibilities exist too. The document
|
||||
may be "Dead" (in the IESG state machine) or in a "Do Not Publish"
|
||||
state.
|
||||
|
||||
</field>
|
||||
<field type="PositiveIntegerField" name="order">10</field>
|
||||
</object>
|
||||
</django-objects>
|
|
@ -1,350 +0,0 @@
|
|||
import datetime
|
||||
|
||||
from django.conf import settings
|
||||
from django import forms
|
||||
from django.template.loader import render_to_string
|
||||
from workflows.models import State
|
||||
from workflows.utils import set_workflow_for_object
|
||||
|
||||
from ietf.idtracker.models import PersonOrOrgInfo, IETFWG, InternetDraft
|
||||
from ietf.ietfworkflows.models import Stream, StreamDelegate
|
||||
from ietf.ietfworkflows.utils import (get_workflow_for_draft, get_workflow_for_wg,
|
||||
get_state_for_draft, get_state_by_name,
|
||||
update_state, FOLLOWUP_TAG,
|
||||
get_annotation_tags_for_draft,
|
||||
update_tags, update_stream)
|
||||
from ietf.ietfworkflows.accounts import is_secretariat
|
||||
from ietf.ietfworkflows.streams import (get_stream_from_draft, get_streamed_draft,
|
||||
get_stream_by_name, set_stream_for_draft)
|
||||
from ietf.ietfworkflows.constants import CALL_FOR_ADOPTION, IETF_STREAM
|
||||
from ietf.doc.utils import get_tags_for_stream_id
|
||||
from ietf.doc.models import save_document_in_history, DocEvent, Document
|
||||
from ietf.name.models import DocTagName, StreamName, RoleName
|
||||
from ietf.group.models import Group, GroupStateTransitions, Role
|
||||
from ietf.group.utils import save_group_in_history
|
||||
from ietf.person.models import Person, Email
|
||||
|
||||
class StreamDraftForm(forms.Form):
|
||||
|
||||
can_cancel = False
|
||||
template = None
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.draft = kwargs.pop('draft', None)
|
||||
self.user = kwargs.pop('user', None)
|
||||
try:
|
||||
self.person = self.user.get_profile()
|
||||
except:
|
||||
self.person = None
|
||||
self.workflow = get_workflow_for_draft(self.draft)
|
||||
self.message = {}
|
||||
super(StreamDraftForm, self).__init__(*args, **kwargs)
|
||||
|
||||
def get_message(self):
|
||||
return self.message
|
||||
|
||||
def set_message(self, msg_type, msg_value):
|
||||
self.message = {'type': msg_type,
|
||||
'value': msg_value,
|
||||
}
|
||||
|
||||
def __unicode__(self):
|
||||
return render_to_string(self.template, {'form': self})
|
||||
|
||||
|
||||
class NoWorkflowStateForm(StreamDraftForm):
|
||||
comment = forms.CharField(widget=forms.Textarea, required=False)
|
||||
weeks = forms.IntegerField(required=False)
|
||||
group = forms.ChoiceField(required=False)
|
||||
|
||||
template = 'ietfworkflows/noworkflow_state_form.html'
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(NoWorkflowStateForm, self).__init__(*args, **kwargs)
|
||||
self.groups = None
|
||||
if is_secretariat(self.user):
|
||||
groups = IETFWG.objects.all().order_by('group_acronym__acronym')
|
||||
else:
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
groups = IETFWG.objects.filter(type__in=["wg", "rg"], state="active", role__name__in=("chair", "secr", "delegate"), role__person__user=self.user).order_by('acronym').distinct()
|
||||
else:
|
||||
groups = set([i.group_acronym for i in self.person.wgchair_set.all()]).union(set([i.wg for i in self.person.wgdelegate_set.all()]))
|
||||
groups = list(groups)
|
||||
groups.sort(lambda x, y: cmp(x.group_acronym.acronym, y.group_acronym.acronym))
|
||||
self.groups = groups
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
self.fields['group'].choices = [(i.pk, '%s - %s' % (i.acronym, i.name)) for i in self.groups]
|
||||
else:
|
||||
self.fields['group'].choices = [(i.pk, '%s - %s' % (i.group_acronym.acronym, i.group_acronym.name)) for i in self.groups]
|
||||
|
||||
def save(self):
|
||||
comment = self.cleaned_data.get('comment').strip()
|
||||
weeks = self.cleaned_data.get('weeks')
|
||||
group = IETFWG.objects.get(pk=self.cleaned_data.get('group'))
|
||||
estimated_date = None
|
||||
if weeks:
|
||||
now = datetime.date.today()
|
||||
estimated_date = now + datetime.timedelta(weeks=weeks)
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
# do changes on real Document object instead of proxy to avoid trouble
|
||||
doc = Document.objects.get(pk=self.draft.pk)
|
||||
save_document_in_history(doc)
|
||||
|
||||
doc.time = datetime.datetime.now()
|
||||
|
||||
if group.type.slug == "rg":
|
||||
new_stream = StreamName.objects.get(slug="irtf")
|
||||
else:
|
||||
new_stream = StreamName.objects.get(slug="ietf")
|
||||
|
||||
if doc.stream != new_stream:
|
||||
e = DocEvent(type="changed_stream")
|
||||
e.time = doc.time
|
||||
e.by = self.user.get_profile()
|
||||
e.doc = doc
|
||||
e.desc = u"Changed to <b>%s</b>" % new_stream.name
|
||||
if doc.stream:
|
||||
e.desc += u" from %s" % doc.stream.name
|
||||
e.save()
|
||||
doc.stream = new_stream
|
||||
|
||||
if doc.group.pk != group.pk:
|
||||
e = DocEvent(type="changed_group")
|
||||
e.time = doc.time
|
||||
e.by = self.user.get_profile()
|
||||
e.doc = doc
|
||||
e.desc = u"Changed group to <b>%s (%s)</b>" % (group.name, group.acronym.upper())
|
||||
if doc.group.type_id != "individ":
|
||||
e.desc += " from %s (%s)" % (doc.group.name, doc.group.acronym)
|
||||
e.save()
|
||||
doc.group_id = group.pk
|
||||
|
||||
doc.save()
|
||||
self.draft = InternetDraft.objects.get(pk=doc.pk) # make sure proxy object is updated
|
||||
else:
|
||||
workflow = get_workflow_for_wg(wg)
|
||||
set_workflow_for_object(self.draft, workflow)
|
||||
stream = get_stream_by_name(IETF_STREAM)
|
||||
streamed = get_streamed_draft(self.draft)
|
||||
if not streamed:
|
||||
set_stream_for_draft(self.draft, stream)
|
||||
streamed = get_streamed_draft(self.draft)
|
||||
streamed.stream = stream
|
||||
streamed.group = wg
|
||||
streamed.save()
|
||||
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
from ietf.doc.models import State
|
||||
if self.draft.stream_id == "irtf":
|
||||
to_state = State.objects.get(used=True, slug="active", type="draft-stream-irtf")
|
||||
else:
|
||||
to_state = State.objects.get(used=True, slug="c-adopt", type="draft-stream-%s" % self.draft.stream_id)
|
||||
else:
|
||||
to_state = get_state_by_name(CALL_FOR_ADOPTION)
|
||||
update_state(self.request, self.draft,
|
||||
comment=comment,
|
||||
person=self.person,
|
||||
to_state=to_state,
|
||||
estimated_date=estimated_date)
|
||||
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
if comment:
|
||||
e = DocEvent(type="added_comment")
|
||||
e.time = self.draft.time
|
||||
e.by = self.person
|
||||
e.doc_id = self.draft.pk
|
||||
e.desc = comment
|
||||
e.save()
|
||||
|
||||
class DraftTagsStateForm(StreamDraftForm):
|
||||
|
||||
new_state = forms.ChoiceField(label='State')
|
||||
weeks = forms.IntegerField(label='Expected weeks in state',required=False)
|
||||
comment = forms.CharField(widget=forms.Textarea, required=False)
|
||||
tags = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, required=False)
|
||||
|
||||
template = 'ietfworkflows/state_form.html'
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(DraftTagsStateForm, self).__init__(*args, **kwargs)
|
||||
self.state = get_state_for_draft(self.draft)
|
||||
self.fields['new_state'].choices = self.get_states()
|
||||
self.fields['new_state'].initial = self.state.pk if self.state else None
|
||||
if self.draft.stream_id == 'ietf':
|
||||
self.fields['new_state'].help_text = "Only select 'Submitted to IESG for Publication' to correct errors. Use the document's main page to request publication."
|
||||
if self.is_bound:
|
||||
for key, value in self.data.items():
|
||||
if key.startswith('transition_'):
|
||||
new_state = self.get_new_state(key)
|
||||
if new_state:
|
||||
self.data = self.data.copy()
|
||||
self.data.update({'new_state': new_state.id})
|
||||
if key.startswith('new_state_'): # hack to get value from submit buttons
|
||||
self.data = self.data.copy()
|
||||
self.data['new_state'] = key.replace('new_state_', '')
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
possible_tags = get_tags_for_stream_id(self.draft.stream_id)
|
||||
if self.draft.stream_id == "ietf" and self.draft.group:
|
||||
unused_tags = self.draft.group.unused_tags.values_list("slug", flat=True)
|
||||
possible_tags = [t for t in possible_tags if t not in unused_tags]
|
||||
self.available_tags = DocTagName.objects.filter(slug__in=possible_tags)
|
||||
self.tags = self.draft.tags.filter(slug__in=possible_tags)
|
||||
else:
|
||||
self.available_tags = self.workflow.get_tags()
|
||||
self.tags = [i.annotation_tag for i in get_annotation_tags_for_draft(self.draft)]
|
||||
|
||||
self.fields['tags'].choices = [(i.pk, i.name) for i in self.available_tags]
|
||||
self.fields['tags'].initial = [i.pk for i in self.tags]
|
||||
|
||||
def get_new_state(self, key):
|
||||
transition_id = key.replace('transition_', '')
|
||||
transition = self.get_transitions().filter(id=transition_id)
|
||||
if transition:
|
||||
return transition[0].destination
|
||||
return None
|
||||
|
||||
def get_transitions(self):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
return []
|
||||
return self.state.transitions.filter(workflow=self.workflow)
|
||||
|
||||
def get_next_states(self):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
if not self.draft.stream_id:
|
||||
return []
|
||||
|
||||
from ietf.doc.models import State
|
||||
state_type = "draft-stream-%s" % self.draft.stream_id
|
||||
s = self.draft.get_state(state_type)
|
||||
next_states = []
|
||||
if s:
|
||||
next_states = s.next_states.all()
|
||||
|
||||
if self.draft.stream_id == "ietf" and self.draft.group:
|
||||
transitions = self.draft.group.groupstatetransitions_set.filter(state=s)
|
||||
if transitions:
|
||||
next_states = transitions[0].next_states.all()
|
||||
else:
|
||||
# return the initial state
|
||||
states = State.objects.filter(used=True, type=state_type).order_by('order')
|
||||
if states:
|
||||
next_states = states[:1]
|
||||
|
||||
unused = []
|
||||
if self.draft.group:
|
||||
unused = self.draft.group.unused_states.values_list("pk", flat=True)
|
||||
return [n for n in next_states if n.pk not in unused]
|
||||
|
||||
return []
|
||||
|
||||
|
||||
def get_states(self):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
if not self.draft.stream_id:
|
||||
return []
|
||||
|
||||
from ietf.doc.models import State
|
||||
states = State.objects.filter(used=True, type="draft-stream-%s" % self.draft.stream_id)
|
||||
if self.draft.stream_id == "ietf" and self.draft.group:
|
||||
unused_states = self.draft.group.unused_states.values_list("pk", flat=True)
|
||||
states = [s for s in states if s.pk not in unused_states]
|
||||
return [(i.pk, i.name) for i in states]
|
||||
|
||||
return [(i.pk, i.name) for i in self.workflow.get_states()]
|
||||
|
||||
def save_tags(self):
|
||||
comment = self.cleaned_data.get('comment')
|
||||
new_tags = self.cleaned_data.get('tags')
|
||||
|
||||
set_tags = [tag for tag in self.available_tags if str(tag.pk) in new_tags and tag not in self.tags]
|
||||
reset_tags = [tag for tag in self.available_tags if str(tag.pk) not in new_tags and tag in self.tags]
|
||||
followup = bool([tag for tag in set_tags if tag.name == FOLLOWUP_TAG])
|
||||
extra_notify = []
|
||||
if followup:
|
||||
try:
|
||||
shepherd = self.draft.shepherd
|
||||
if shepherd:
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
extra_notify = [shepherd.formatted_email()]
|
||||
else:
|
||||
extra_notify = ['%s <%s>' % shepherd.email()]
|
||||
except PersonOrOrgInfo.DoesNotExist:
|
||||
pass
|
||||
if not set_tags and not reset_tags:
|
||||
return
|
||||
update_tags(self.request, self.draft,
|
||||
comment=comment,
|
||||
person=self.person,
|
||||
set_tags=set_tags,
|
||||
reset_tags=reset_tags,
|
||||
extra_notify=extra_notify)
|
||||
|
||||
def save_state(self):
|
||||
comment = self.cleaned_data.get('comment')
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
from ietf.doc.models import State
|
||||
state = State.objects.get(pk=self.cleaned_data.get('new_state'))
|
||||
weeks = self.cleaned_data.get('weeks')
|
||||
estimated_date = None
|
||||
if weeks:
|
||||
now = datetime.date.today()
|
||||
estimated_date = now + datetime.timedelta(weeks=weeks)
|
||||
|
||||
update_state(self.request, self.draft,
|
||||
comment=comment,
|
||||
person=self.person,
|
||||
to_state=state,
|
||||
estimated_date=estimated_date)
|
||||
|
||||
def save(self):
|
||||
self.save_tags()
|
||||
if 'only_tags' not in self.data.keys():
|
||||
self.save_state()
|
||||
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
comment = self.cleaned_data.get('comment').strip()
|
||||
if comment:
|
||||
e = DocEvent(type="added_comment")
|
||||
e.time = datetime.datetime.now()
|
||||
e.by = self.person
|
||||
e.doc_id = self.draft.pk
|
||||
e.desc = comment
|
||||
e.save()
|
||||
|
||||
|
||||
class StreamDelegatesForm(forms.Form):
|
||||
email = forms.EmailField()
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.stream = kwargs.pop('stream')
|
||||
super(StreamDelegatesForm, self).__init__(*args, **kwargs)
|
||||
|
||||
def get_person(self, email):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
persons = Person.objects.filter(email__address=email).distinct()
|
||||
else:
|
||||
persons = PersonOrOrgInfo.objects.filter(emailaddress__address=email).distinct()
|
||||
if not persons:
|
||||
return None
|
||||
return persons[0]
|
||||
|
||||
def clean_email(self):
|
||||
email = self.cleaned_data.get('email')
|
||||
self.person = self.get_person(email)
|
||||
if not self.person:
|
||||
raise forms.ValidationError('There is no user with this email in the system')
|
||||
return email
|
||||
|
||||
def save(self):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
stream_group = Group.objects.get(acronym=self.stream.slug)
|
||||
save_group_in_history(stream_group)
|
||||
Role.objects.get_or_create(person=self.person,
|
||||
group=stream_group,
|
||||
name=RoleName.objects.get(slug="delegate"),
|
||||
email=Email.objects.get(address=self.cleaned_data.get('email')))
|
||||
return
|
||||
|
||||
StreamDelegate.objects.get_or_create(
|
||||
person=self.person,
|
||||
stream=self.stream)
|
1
ietf/ietfworkflows/migrations/.gitignore
vendored
1
ietf/ietfworkflows/migrations/.gitignore
vendored
|
@ -1 +0,0 @@
|
|||
/*.pyc
|
|
@ -1,148 +0,0 @@
|
|||
|
||||
from south.db import db
|
||||
from django.db import models
|
||||
from ietf.ietfworkflows.models import *
|
||||
|
||||
class Migration:
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding model 'WGWorkflow'
|
||||
db.create_table('ietfworkflows_wgworkflow', (
|
||||
('workflow_ptr', orm['ietfworkflows.WGWorkflow:workflow_ptr']),
|
||||
))
|
||||
db.send_create_signal('ietfworkflows', ['WGWorkflow'])
|
||||
|
||||
# Adding model 'ObjectWorkflowHistoryEntry'
|
||||
db.create_table('ietfworkflows_objectworkflowhistoryentry', (
|
||||
('id', orm['ietfworkflows.ObjectWorkflowHistoryEntry:id']),
|
||||
('content_type', orm['ietfworkflows.ObjectWorkflowHistoryEntry:content_type']),
|
||||
('content_id', orm['ietfworkflows.ObjectWorkflowHistoryEntry:content_id']),
|
||||
('from_state', orm['ietfworkflows.ObjectWorkflowHistoryEntry:from_state']),
|
||||
('to_state', orm['ietfworkflows.ObjectWorkflowHistoryEntry:to_state']),
|
||||
('transition_date', orm['ietfworkflows.ObjectWorkflowHistoryEntry:transition_date']),
|
||||
('comment', orm['ietfworkflows.ObjectWorkflowHistoryEntry:comment']),
|
||||
))
|
||||
db.send_create_signal('ietfworkflows', ['ObjectWorkflowHistoryEntry'])
|
||||
|
||||
# Adding model 'ObjectAnnotationTagHistoryEntry'
|
||||
db.create_table('ietfworkflows_objectannotationtaghistoryentry', (
|
||||
('id', orm['ietfworkflows.ObjectAnnotationTagHistoryEntry:id']),
|
||||
('content_type', orm['ietfworkflows.ObjectAnnotationTagHistoryEntry:content_type']),
|
||||
('content_id', orm['ietfworkflows.ObjectAnnotationTagHistoryEntry:content_id']),
|
||||
('setted', orm['ietfworkflows.ObjectAnnotationTagHistoryEntry:setted']),
|
||||
('unsetted', orm['ietfworkflows.ObjectAnnotationTagHistoryEntry:unsetted']),
|
||||
('change_date', orm['ietfworkflows.ObjectAnnotationTagHistoryEntry:change_date']),
|
||||
('comment', orm['ietfworkflows.ObjectAnnotationTagHistoryEntry:comment']),
|
||||
))
|
||||
db.send_create_signal('ietfworkflows', ['ObjectAnnotationTagHistoryEntry'])
|
||||
|
||||
# Adding model 'AnnotationTag'
|
||||
db.create_table('ietfworkflows_annotationtag', (
|
||||
('id', orm['ietfworkflows.AnnotationTag:id']),
|
||||
('name', orm['ietfworkflows.AnnotationTag:name']),
|
||||
('workflow', orm['ietfworkflows.AnnotationTag:workflow']),
|
||||
('permission', orm['ietfworkflows.AnnotationTag:permission']),
|
||||
))
|
||||
db.send_create_signal('ietfworkflows', ['AnnotationTag'])
|
||||
|
||||
# Adding model 'AnnotationTagObjectRelation'
|
||||
db.create_table('ietfworkflows_annotationtagobjectrelation', (
|
||||
('id', orm['ietfworkflows.AnnotationTagObjectRelation:id']),
|
||||
('content_type', orm['ietfworkflows.AnnotationTagObjectRelation:content_type']),
|
||||
('content_id', orm['ietfworkflows.AnnotationTagObjectRelation:content_id']),
|
||||
('annotation_tag', orm['ietfworkflows.AnnotationTagObjectRelation:annotation_tag']),
|
||||
))
|
||||
db.send_create_signal('ietfworkflows', ['AnnotationTagObjectRelation'])
|
||||
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'WGWorkflow'
|
||||
db.delete_table('ietfworkflows_wgworkflow')
|
||||
|
||||
# Deleting model 'ObjectWorkflowHistoryEntry'
|
||||
db.delete_table('ietfworkflows_objectworkflowhistoryentry')
|
||||
|
||||
# Deleting model 'ObjectAnnotationTagHistoryEntry'
|
||||
db.delete_table('ietfworkflows_objectannotationtaghistoryentry')
|
||||
|
||||
# Deleting model 'AnnotationTag'
|
||||
db.delete_table('ietfworkflows_annotationtag')
|
||||
|
||||
# Deleting model 'AnnotationTagObjectRelation'
|
||||
db.delete_table('ietfworkflows_annotationtagobjectrelation')
|
||||
|
||||
|
||||
|
||||
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': {
|
||||
'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']
|
|
@ -1,107 +0,0 @@
|
|||
|
||||
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']
|
|
@ -1,119 +0,0 @@
|
|||
|
||||
from south.db import db
|
||||
from django.db import models
|
||||
from ietf.ietfworkflows.models import *
|
||||
|
||||
class Migration:
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding field 'ObjectWorkflowHistoryEntry.person'
|
||||
db.add_column('ietfworkflows_objectworkflowhistoryentry', 'person', orm['ietfworkflows.objectworkflowhistoryentry:person'])
|
||||
|
||||
# Adding field 'ObjectAnnotationTagHistoryEntry.person'
|
||||
db.add_column('ietfworkflows_objectannotationtaghistoryentry', 'person', orm['ietfworkflows.objectannotationtaghistoryentry:person'])
|
||||
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting field 'ObjectWorkflowHistoryEntry.person'
|
||||
db.delete_column('ietfworkflows_objectworkflowhistoryentry', 'person_id')
|
||||
|
||||
# Deleting field 'ObjectAnnotationTagHistoryEntry.person'
|
||||
db.delete_column('ietfworkflows_objectannotationtaghistoryentry', 'person_id')
|
||||
|
||||
|
||||
|
||||
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'})
|
||||
},
|
||||
'idtracker.personororginfo': {
|
||||
'Meta': {'db_table': "'person_or_org_info'"},
|
||||
'address_type': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'created_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'date_modified': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'first_name_key': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'last_name_key': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'middle_initial': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'middle_initial_key': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'modified_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'name_prefix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'name_suffix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'person_or_org_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'record_type': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'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'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"}),
|
||||
'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'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"}),
|
||||
'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']", 'symmetrical': 'False'}),
|
||||
'selected_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ietfworkflows.AnnotationTag']", 'symmetrical': 'False'}),
|
||||
'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', [], {'symmetrical': 'False', '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', [], {'symmetrical': 'False', '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']
|
|
@ -1,132 +0,0 @@
|
|||
|
||||
from south.db import db
|
||||
from django.db import models
|
||||
from ietf.ietfworkflows.models import *
|
||||
|
||||
class Migration:
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding model 'StateObjectRelationMetadata'
|
||||
db.create_table('ietfworkflows_stateobjectrelationmetadata', (
|
||||
('id', orm['ietfworkflows.stateobjectrelationmetadata:id']),
|
||||
('relation', orm['ietfworkflows.stateobjectrelationmetadata:relation']),
|
||||
('from_date', orm['ietfworkflows.stateobjectrelationmetadata:from_date']),
|
||||
('estimated_date', orm['ietfworkflows.stateobjectrelationmetadata:estimated_date']),
|
||||
))
|
||||
db.send_create_signal('ietfworkflows', ['StateObjectRelationMetadata'])
|
||||
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'StateObjectRelationMetadata'
|
||||
db.delete_table('ietfworkflows_stateobjectrelationmetadata')
|
||||
|
||||
|
||||
|
||||
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'})
|
||||
},
|
||||
'idtracker.personororginfo': {
|
||||
'Meta': {'db_table': "'person_or_org_info'"},
|
||||
'address_type': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'created_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'date_modified': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'first_name_key': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'last_name_key': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'middle_initial': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'middle_initial_key': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'modified_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'name_prefix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'name_suffix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'person_or_org_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'record_type': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'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'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"}),
|
||||
'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'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"}),
|
||||
'to_state': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'transition_date': ('django.db.models.fields.DateTimeField', [], {})
|
||||
},
|
||||
'ietfworkflows.stateobjectrelationmetadata': {
|
||||
'estimated_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'from_date': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'relation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.StateObjectRelation']"})
|
||||
},
|
||||
'ietfworkflows.wgworkflow': {
|
||||
'selected_states': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['workflows.State']", 'symmetrical': 'False'}),
|
||||
'selected_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ietfworkflows.AnnotationTag']", 'symmetrical': 'False'}),
|
||||
'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', [], {'symmetrical': 'False', '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', [], {'symmetrical': 'False', 'to': "orm['workflows.Transition']", 'null': 'True', 'blank': 'True'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'states'", 'to': "orm['workflows.Workflow']"})
|
||||
},
|
||||
'workflows.stateobjectrelation': {
|
||||
'Meta': {'unique_together': "(('content_type', 'content_id', 'state'),)"},
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'state_object'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.State']"})
|
||||
},
|
||||
'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']
|
|
@ -1,209 +0,0 @@
|
|||
|
||||
from south.db import db
|
||||
from django.db import models
|
||||
from ietf.ietfworkflows.models import *
|
||||
|
||||
class Migration:
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding model 'StreamedID'
|
||||
db.create_table('ietfworkflows_streamedid', (
|
||||
('id', orm['ietfworkflows.streamedid:id']),
|
||||
('draft', orm['ietfworkflows.streamedid:draft']),
|
||||
('stream', orm['ietfworkflows.streamedid:stream']),
|
||||
))
|
||||
db.send_create_signal('ietfworkflows', ['StreamedID'])
|
||||
|
||||
# Adding model 'Stream'
|
||||
db.create_table('ietfworkflows_stream', (
|
||||
('id', orm['ietfworkflows.stream:id']),
|
||||
('name', orm['ietfworkflows.stream:name']),
|
||||
('with_groups', orm['ietfworkflows.stream:with_groups']),
|
||||
('group_model', orm['ietfworkflows.stream:group_model']),
|
||||
('group_chair_model', orm['ietfworkflows.stream:group_chair_model']),
|
||||
('workflow', orm['ietfworkflows.stream:workflow']),
|
||||
))
|
||||
db.send_create_signal('ietfworkflows', ['Stream'])
|
||||
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'StreamedID'
|
||||
db.delete_table('ietfworkflows_streamedid')
|
||||
|
||||
# Deleting model 'Stream'
|
||||
db.delete_table('ietfworkflows_stream')
|
||||
|
||||
|
||||
|
||||
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'})
|
||||
},
|
||||
'idtracker.acronym': {
|
||||
'Meta': {'db_table': "'acronym'"},
|
||||
'acronym': ('django.db.models.fields.CharField', [], {'max_length': '12'}),
|
||||
'acronym_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name_key': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'idtracker.idintendedstatus': {
|
||||
'Meta': {'db_table': "'id_intended_status'"},
|
||||
'intended_status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'intended_status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.idstatus': {
|
||||
'Meta': {'db_table': "'id_status'"},
|
||||
'status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.internetdraft': {
|
||||
'Meta': {'db_table': "'internet_drafts'"},
|
||||
'abstract': ('django.db.models.fields.TextField', [], {}),
|
||||
'b_approve_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_discussion_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'dunn_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True'}),
|
||||
'expired_tombstone': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'extension_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'file_type': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
|
||||
'filename': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.Acronym']", 'db_column': "'group_acronym_id'"}),
|
||||
'id_document_key': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'id_document_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'intended_status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDIntendedStatus']"}),
|
||||
'last_modified_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'lc_changes': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True'}),
|
||||
'lc_expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'lc_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'local_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'replaced_by': ('django.db.models.fields.related.ForeignKey', ["orm['idtracker.InternetDraft']"], {'related_name': "'replaces_set'", 'null': 'True', 'db_column': "'replaced_by'", 'blank': 'True'}),
|
||||
'review_by_rfc_editor': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'revision': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
|
||||
'revision_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'rfc_number': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'shepherd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']", 'null': 'True', 'blank': 'True'}),
|
||||
'start_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDStatus']"}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_column': "'id_document_name'"}),
|
||||
'txt_page_count': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'wgreturn_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'idtracker.personororginfo': {
|
||||
'Meta': {'db_table': "'person_or_org_info'"},
|
||||
'address_type': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'created_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'date_modified': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'first_name_key': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'last_name_key': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'middle_initial': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'middle_initial_key': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'modified_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'name_prefix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'name_suffix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'person_or_org_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'record_type': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'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'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"}),
|
||||
'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'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"}),
|
||||
'to_state': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'transition_date': ('django.db.models.fields.DateTimeField', [], {})
|
||||
},
|
||||
'ietfworkflows.stateobjectrelationmetadata': {
|
||||
'estimated_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'from_date': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'relation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.StateObjectRelation']"})
|
||||
},
|
||||
'ietfworkflows.stream': {
|
||||
'group_chair_model': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
|
||||
'group_model': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'with_groups': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.WGWorkflow']"})
|
||||
},
|
||||
'ietfworkflows.streamedid': {
|
||||
'draft': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['idtracker.InternetDraft']", 'unique': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'stream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.Stream']"})
|
||||
},
|
||||
'ietfworkflows.wgworkflow': {
|
||||
'selected_states': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['workflows.State']", 'null': 'True', 'blank': 'True'}),
|
||||
'selected_tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ietfworkflows.AnnotationTag']", 'null': 'True', 'blank': 'True'}),
|
||||
'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', [], {'symmetrical': 'False', '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', [], {'symmetrical': 'False', 'to': "orm['workflows.Transition']", 'null': 'True', 'blank': 'True'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'states'", 'to': "orm['workflows.Workflow']"})
|
||||
},
|
||||
'workflows.stateobjectrelation': {
|
||||
'Meta': {'unique_together': "(('content_type', 'content_id', 'state'),)"},
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'state_object'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.State']"})
|
||||
},
|
||||
'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']
|
|
@ -1,198 +0,0 @@
|
|||
|
||||
from south.db import db
|
||||
from django.db import models
|
||||
from ietf.ietfworkflows.models import *
|
||||
|
||||
class Migration:
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding field 'StreamedID.content_type'
|
||||
db.add_column('ietfworkflows_streamedid', 'content_type', orm['ietfworkflows.streamedid:content_type'])
|
||||
|
||||
# Adding field 'StreamedID.content_id'
|
||||
db.add_column('ietfworkflows_streamedid', 'content_id', orm['ietfworkflows.streamedid:content_id'])
|
||||
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting field 'StreamedID.content_type'
|
||||
db.delete_column('ietfworkflows_streamedid', 'content_type_id')
|
||||
|
||||
# Deleting field 'StreamedID.content_id'
|
||||
db.delete_column('ietfworkflows_streamedid', 'content_id')
|
||||
|
||||
|
||||
|
||||
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'})
|
||||
},
|
||||
'idtracker.acronym': {
|
||||
'Meta': {'db_table': "'acronym'"},
|
||||
'acronym': ('django.db.models.fields.CharField', [], {'max_length': '12'}),
|
||||
'acronym_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name_key': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'idtracker.idintendedstatus': {
|
||||
'Meta': {'db_table': "'id_intended_status'"},
|
||||
'intended_status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'intended_status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.idstatus': {
|
||||
'Meta': {'db_table': "'id_status'"},
|
||||
'status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.internetdraft': {
|
||||
'Meta': {'db_table': "'internet_drafts'"},
|
||||
'abstract': ('django.db.models.fields.TextField', [], {}),
|
||||
'b_approve_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_discussion_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'dunn_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True'}),
|
||||
'expired_tombstone': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'extension_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'file_type': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
|
||||
'filename': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.Acronym']", 'db_column': "'group_acronym_id'"}),
|
||||
'id_document_key': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'id_document_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'intended_status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDIntendedStatus']"}),
|
||||
'last_modified_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'lc_changes': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True'}),
|
||||
'lc_expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'lc_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'local_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'replaced_by': ('django.db.models.fields.related.ForeignKey', ["orm['idtracker.InternetDraft']"], {'related_name': "'replaces_set'", 'null': 'True', 'db_column': "'replaced_by'", 'blank': 'True'}),
|
||||
'review_by_rfc_editor': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'revision': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
|
||||
'revision_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'rfc_number': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'shepherd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']", 'null': 'True', 'blank': 'True'}),
|
||||
'start_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDStatus']"}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_column': "'id_document_name'"}),
|
||||
'txt_page_count': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'wgreturn_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'idtracker.personororginfo': {
|
||||
'Meta': {'db_table': "'person_or_org_info'"},
|
||||
'address_type': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'created_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'date_modified': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'first_name_key': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'last_name_key': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'middle_initial': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'middle_initial_key': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'modified_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'name_prefix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'name_suffix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'person_or_org_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'record_type': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'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'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"}),
|
||||
'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'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"}),
|
||||
'to_state': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'transition_date': ('django.db.models.fields.DateTimeField', [], {})
|
||||
},
|
||||
'ietfworkflows.stateobjectrelationmetadata': {
|
||||
'estimated_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'from_date': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'relation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.StateObjectRelation']"})
|
||||
},
|
||||
'ietfworkflows.stream': {
|
||||
'group_chair_model': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
|
||||
'group_model': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'with_groups': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.WGWorkflow']"})
|
||||
},
|
||||
'ietfworkflows.streamedid': {
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'streamed_id'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'draft': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['idtracker.InternetDraft']", 'unique': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'stream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.Stream']"})
|
||||
},
|
||||
'ietfworkflows.wgworkflow': {
|
||||
'selected_states': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['workflows.State']", 'null': 'True', 'blank': 'True'}),
|
||||
'selected_tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ietfworkflows.AnnotationTag']", 'null': 'True', 'blank': 'True'}),
|
||||
'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', [], {'symmetrical': 'False', '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', [], {'symmetrical': 'False', 'to': "orm['workflows.Transition']", 'null': 'True', 'blank': 'True'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'states'", 'to': "orm['workflows.Workflow']"})
|
||||
},
|
||||
'workflows.stateobjectrelation': {
|
||||
'Meta': {'unique_together': "(('content_type', 'content_id', 'state'),)"},
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'state_object'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.State']"})
|
||||
},
|
||||
'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']
|
|
@ -1,194 +0,0 @@
|
|||
|
||||
from south.db import db
|
||||
from django.db import models
|
||||
from ietf.ietfworkflows.models import *
|
||||
|
||||
class Migration:
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Changing field 'StreamedID.stream'
|
||||
# (to signature: django.db.models.fields.related.ForeignKey(to=orm['ietfworkflows.Stream'], null=True, blank=True))
|
||||
db.alter_column('ietfworkflows_streamedid', 'stream_id', orm['ietfworkflows.streamedid:stream'])
|
||||
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Changing field 'StreamedID.stream'
|
||||
# (to signature: django.db.models.fields.related.ForeignKey(to=orm['ietfworkflows.Stream']))
|
||||
db.alter_column('ietfworkflows_streamedid', 'stream_id', orm['ietfworkflows.streamedid:stream'])
|
||||
|
||||
|
||||
|
||||
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'})
|
||||
},
|
||||
'idtracker.acronym': {
|
||||
'Meta': {'db_table': "'acronym'"},
|
||||
'acronym': ('django.db.models.fields.CharField', [], {'max_length': '12'}),
|
||||
'acronym_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name_key': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'idtracker.idintendedstatus': {
|
||||
'Meta': {'db_table': "'id_intended_status'"},
|
||||
'intended_status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'intended_status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.idstatus': {
|
||||
'Meta': {'db_table': "'id_status'"},
|
||||
'status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.internetdraft': {
|
||||
'Meta': {'db_table': "'internet_drafts'"},
|
||||
'abstract': ('django.db.models.fields.TextField', [], {}),
|
||||
'b_approve_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_discussion_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'dunn_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True'}),
|
||||
'expired_tombstone': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'extension_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'file_type': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
|
||||
'filename': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.Acronym']", 'db_column': "'group_acronym_id'"}),
|
||||
'id_document_key': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'id_document_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'intended_status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDIntendedStatus']"}),
|
||||
'last_modified_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'lc_changes': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True'}),
|
||||
'lc_expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'lc_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'local_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'replaced_by': ('django.db.models.fields.related.ForeignKey', ["orm['idtracker.InternetDraft']"], {'related_name': "'replaces_set'", 'null': 'True', 'db_column': "'replaced_by'", 'blank': 'True'}),
|
||||
'review_by_rfc_editor': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'revision': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
|
||||
'revision_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'rfc_number': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'shepherd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']", 'null': 'True', 'blank': 'True'}),
|
||||
'start_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDStatus']"}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_column': "'id_document_name'"}),
|
||||
'txt_page_count': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'wgreturn_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'idtracker.personororginfo': {
|
||||
'Meta': {'db_table': "'person_or_org_info'"},
|
||||
'address_type': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'created_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'date_modified': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'first_name_key': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'last_name_key': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'middle_initial': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'middle_initial_key': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'modified_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'name_prefix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'name_suffix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'person_or_org_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'record_type': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'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'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"}),
|
||||
'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'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"}),
|
||||
'to_state': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'transition_date': ('django.db.models.fields.DateTimeField', [], {})
|
||||
},
|
||||
'ietfworkflows.stateobjectrelationmetadata': {
|
||||
'estimated_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'from_date': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'relation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.StateObjectRelation']"})
|
||||
},
|
||||
'ietfworkflows.stream': {
|
||||
'group_chair_model': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
|
||||
'group_model': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'with_groups': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.WGWorkflow']"})
|
||||
},
|
||||
'ietfworkflows.streamedid': {
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'streamed_id'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'draft': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['idtracker.InternetDraft']", 'unique': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'stream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.Stream']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.wgworkflow': {
|
||||
'selected_states': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['workflows.State']", 'null': 'True', 'blank': 'True'}),
|
||||
'selected_tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ietfworkflows.AnnotationTag']", 'null': 'True', 'blank': 'True'}),
|
||||
'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', [], {'symmetrical': 'False', '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', [], {'symmetrical': 'False', 'to': "orm['workflows.Transition']", 'null': 'True', 'blank': 'True'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'states'", 'to': "orm['workflows.Workflow']"})
|
||||
},
|
||||
'workflows.stateobjectrelation': {
|
||||
'Meta': {'unique_together': "(('content_type', 'content_id', 'state'),)"},
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'state_object'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.State']"})
|
||||
},
|
||||
'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']
|
|
@ -1,267 +0,0 @@
|
|||
|
||||
from south.db import db
|
||||
from django.db import models
|
||||
from ietf.ietfworkflows.models import *
|
||||
|
||||
class Migration:
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Deleting model 'objectworkflowhistoryentry'
|
||||
db.delete_table('ietfworkflows_objectworkflowhistoryentry')
|
||||
|
||||
# Deleting model 'objectannotationtaghistoryentry'
|
||||
db.delete_table('ietfworkflows_objectannotationtaghistoryentry')
|
||||
|
||||
# Adding model 'ObjectAnnotationTagHistoryEntry'
|
||||
db.create_table('ietfworkflows_objectannotationtaghistoryentry', (
|
||||
('objecthistoryentry_ptr', orm['ietfworkflows.objectannotationtaghistoryentry:objecthistoryentry_ptr']),
|
||||
('setted', orm['ietfworkflows.objectannotationtaghistoryentry:setted']),
|
||||
('unsetted', orm['ietfworkflows.objectannotationtaghistoryentry:unsetted']),
|
||||
))
|
||||
db.send_create_signal('ietfworkflows', ['ObjectAnnotationTagHistoryEntry'])
|
||||
|
||||
# Adding model 'ObjectHistoryEntry'
|
||||
db.create_table('ietfworkflows_objecthistoryentry', (
|
||||
('id', orm['ietfworkflows.objecthistoryentry:id']),
|
||||
('content_type', orm['ietfworkflows.objecthistoryentry:content_type']),
|
||||
('content_id', orm['ietfworkflows.objecthistoryentry:content_id']),
|
||||
('date', orm['ietfworkflows.objecthistoryentry:date']),
|
||||
('comment', orm['ietfworkflows.objecthistoryentry:comment']),
|
||||
('person', orm['ietfworkflows.objecthistoryentry:person']),
|
||||
))
|
||||
db.send_create_signal('ietfworkflows', ['ObjectHistoryEntry'])
|
||||
|
||||
# Adding model 'ObjectStreamHistoryEntry'
|
||||
db.create_table('ietfworkflows_objectstreamhistoryentry', (
|
||||
('objecthistoryentry_ptr', orm['ietfworkflows.objectstreamhistoryentry:objecthistoryentry_ptr']),
|
||||
('from_stream', orm['ietfworkflows.objectstreamhistoryentry:from_stream']),
|
||||
('to_stream', orm['ietfworkflows.objectstreamhistoryentry:to_stream']),
|
||||
))
|
||||
db.send_create_signal('ietfworkflows', ['ObjectStreamHistoryEntry'])
|
||||
|
||||
# Adding model 'ObjectWorkflowHistoryEntry'
|
||||
db.create_table('ietfworkflows_objectworkflowhistoryentry', (
|
||||
('objecthistoryentry_ptr', orm['ietfworkflows.objectworkflowhistoryentry:objecthistoryentry_ptr']),
|
||||
('from_state', orm['ietfworkflows.objectworkflowhistoryentry:from_state']),
|
||||
('to_state', orm['ietfworkflows.objectworkflowhistoryentry:to_state']),
|
||||
))
|
||||
db.send_create_signal('ietfworkflows', ['ObjectWorkflowHistoryEntry'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'ObjectAnnotationTagHistoryEntry'
|
||||
db.delete_table('ietfworkflows_objectannotationtaghistoryentry')
|
||||
|
||||
# Deleting model 'ObjectHistoryEntry'
|
||||
db.delete_table('ietfworkflows_objecthistoryentry')
|
||||
|
||||
# Deleting model 'ObjectStreamHistoryEntry'
|
||||
db.delete_table('ietfworkflows_objectstreamhistoryentry')
|
||||
|
||||
# Deleting model 'ObjectWorkflowHistoryEntry'
|
||||
db.delete_table('ietfworkflows_objectworkflowhistoryentry')
|
||||
|
||||
# Adding model 'objectworkflowhistoryentry'
|
||||
db.create_table('ietfworkflows_objectworkflowhistoryentry', (
|
||||
('comment', orm['ietfworkflows.objectworkflowhistoryentry:comment']),
|
||||
('from_state', orm['ietfworkflows.objectworkflowhistoryentry:from_state']),
|
||||
('to_state', orm['ietfworkflows.objectworkflowhistoryentry:to_state']),
|
||||
('content_type', orm['ietfworkflows.objectworkflowhistoryentry:content_type']),
|
||||
('person', orm['ietfworkflows.objectworkflowhistoryentry:person']),
|
||||
('content_id', orm['ietfworkflows.objectworkflowhistoryentry:content_id']),
|
||||
('id', orm['ietfworkflows.objectworkflowhistoryentry:id']),
|
||||
('transition_date', orm['ietfworkflows.objectworkflowhistoryentry:transition_date']),
|
||||
))
|
||||
db.send_create_signal('ietfworkflows', ['objectworkflowhistoryentry'])
|
||||
|
||||
# Adding model 'objectannotationtaghistoryentry'
|
||||
db.create_table('ietfworkflows_objectannotationtaghistoryentry', (
|
||||
('comment', orm['ietfworkflows.objectannotationtaghistoryentry:comment']),
|
||||
('person', orm['ietfworkflows.objectannotationtaghistoryentry:person']),
|
||||
('unsetted', orm['ietfworkflows.objectannotationtaghistoryentry:unsetted']),
|
||||
('content_type', orm['ietfworkflows.objectannotationtaghistoryentry:content_type']),
|
||||
('change_date', orm['ietfworkflows.objectannotationtaghistoryentry:change_date']),
|
||||
('setted', orm['ietfworkflows.objectannotationtaghistoryentry:setted']),
|
||||
('content_id', orm['ietfworkflows.objectannotationtaghistoryentry:content_id']),
|
||||
('id', orm['ietfworkflows.objectannotationtaghistoryentry:id']),
|
||||
))
|
||||
db.send_create_signal('ietfworkflows', ['objectannotationtaghistoryentry'])
|
||||
|
||||
|
||||
|
||||
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'})
|
||||
},
|
||||
'idtracker.acronym': {
|
||||
'Meta': {'db_table': "'acronym'"},
|
||||
'acronym': ('django.db.models.fields.CharField', [], {'max_length': '12'}),
|
||||
'acronym_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name_key': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'idtracker.idintendedstatus': {
|
||||
'Meta': {'db_table': "'id_intended_status'"},
|
||||
'intended_status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'intended_status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.idstatus': {
|
||||
'Meta': {'db_table': "'id_status'"},
|
||||
'status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.internetdraft': {
|
||||
'Meta': {'db_table': "'internet_drafts'"},
|
||||
'abstract': ('django.db.models.fields.TextField', [], {}),
|
||||
'b_approve_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_discussion_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'dunn_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True'}),
|
||||
'expired_tombstone': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'extension_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'file_type': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
|
||||
'filename': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.Acronym']", 'db_column': "'group_acronym_id'"}),
|
||||
'id_document_key': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'id_document_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'intended_status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDIntendedStatus']"}),
|
||||
'last_modified_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'lc_changes': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True'}),
|
||||
'lc_expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'lc_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'local_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'replaced_by': ('django.db.models.fields.related.ForeignKey', ["orm['idtracker.InternetDraft']"], {'related_name': "'replaces_set'", 'null': 'True', 'db_column': "'replaced_by'", 'blank': 'True'}),
|
||||
'review_by_rfc_editor': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'revision': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
|
||||
'revision_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'rfc_number': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'shepherd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']", 'null': 'True', 'blank': 'True'}),
|
||||
'start_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDStatus']"}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_column': "'id_document_name'"}),
|
||||
'txt_page_count': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'wgreturn_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'idtracker.personororginfo': {
|
||||
'Meta': {'db_table': "'person_or_org_info'"},
|
||||
'address_type': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'created_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'date_modified': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'first_name_key': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'last_name_key': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'middle_initial': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'middle_initial_key': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'modified_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'name_prefix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'name_suffix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'person_or_org_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'record_type': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'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': {
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'setted': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'unsetted': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.objecthistoryentry': {
|
||||
'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']"}),
|
||||
'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"})
|
||||
},
|
||||
'ietfworkflows.objectstreamhistoryentry': {
|
||||
'from_stream': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'to_stream': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.objectworkflowhistoryentry': {
|
||||
'from_state': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'to_state': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'ietfworkflows.stateobjectrelationmetadata': {
|
||||
'estimated_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'from_date': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'relation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.StateObjectRelation']"})
|
||||
},
|
||||
'ietfworkflows.stream': {
|
||||
'group_chair_model': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
|
||||
'group_model': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'with_groups': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.WGWorkflow']"})
|
||||
},
|
||||
'ietfworkflows.streamedid': {
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'streamed_id'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'draft': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['idtracker.InternetDraft']", 'unique': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'stream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.Stream']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.wgworkflow': {
|
||||
'selected_states': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['workflows.State']", 'null': 'True', 'blank': 'True'}),
|
||||
'selected_tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ietfworkflows.AnnotationTag']", 'null': 'True', 'blank': 'True'}),
|
||||
'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', [], {'symmetrical': 'False', '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', [], {'symmetrical': 'False', 'to': "orm['workflows.Transition']", 'null': 'True', 'blank': 'True'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'states'", 'to': "orm['workflows.Workflow']"})
|
||||
},
|
||||
'workflows.stateobjectrelation': {
|
||||
'Meta': {'unique_together': "(('content_type', 'content_id', 'state'),)"},
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'state_object'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.State']"})
|
||||
},
|
||||
'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']
|
|
@ -1,197 +0,0 @@
|
|||
|
||||
from south.db import db
|
||||
from django.db import models
|
||||
from ietf.ietfworkflows.models import *
|
||||
|
||||
class Migration:
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Changing field 'StateObjectRelationMetadata.from_date'
|
||||
# (to signature: django.db.models.fields.DateTimeField(null=True, blank=True))
|
||||
db.alter_column('ietfworkflows_stateobjectrelationmetadata', 'from_date', orm['ietfworkflows.stateobjectrelationmetadata:from_date'])
|
||||
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Changing field 'StateObjectRelationMetadata.from_date'
|
||||
# (to signature: django.db.models.fields.DateTimeField())
|
||||
db.alter_column('ietfworkflows_stateobjectrelationmetadata', 'from_date', orm['ietfworkflows.stateobjectrelationmetadata:from_date'])
|
||||
|
||||
|
||||
|
||||
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'})
|
||||
},
|
||||
'idtracker.acronym': {
|
||||
'Meta': {'db_table': "'acronym'"},
|
||||
'acronym': ('django.db.models.fields.CharField', [], {'max_length': '12'}),
|
||||
'acronym_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name_key': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'idtracker.idintendedstatus': {
|
||||
'Meta': {'db_table': "'id_intended_status'"},
|
||||
'intended_status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'intended_status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.idstatus': {
|
||||
'Meta': {'db_table': "'id_status'"},
|
||||
'status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.internetdraft': {
|
||||
'Meta': {'db_table': "'internet_drafts'"},
|
||||
'abstract': ('django.db.models.fields.TextField', [], {}),
|
||||
'b_approve_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_discussion_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'dunn_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True'}),
|
||||
'expired_tombstone': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'extension_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'file_type': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
|
||||
'filename': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.Acronym']", 'db_column': "'group_acronym_id'"}),
|
||||
'id_document_key': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'id_document_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'intended_status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDIntendedStatus']"}),
|
||||
'last_modified_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'lc_changes': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True'}),
|
||||
'lc_expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'lc_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'local_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'replaced_by': ('django.db.models.fields.related.ForeignKey', ["orm['idtracker.InternetDraft']"], {'related_name': "'replaces_set'", 'null': 'True', 'db_column': "'replaced_by'", 'blank': 'True'}),
|
||||
'review_by_rfc_editor': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'revision': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
|
||||
'revision_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'rfc_number': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'shepherd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']", 'null': 'True', 'blank': 'True'}),
|
||||
'start_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDStatus']"}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_column': "'id_document_name'"}),
|
||||
'txt_page_count': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'wgreturn_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'idtracker.personororginfo': {
|
||||
'Meta': {'db_table': "'person_or_org_info'"},
|
||||
'address_type': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'created_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'date_modified': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'first_name_key': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'last_name_key': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'middle_initial': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'middle_initial_key': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'modified_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'name_prefix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'name_suffix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'person_or_org_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'record_type': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'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': {
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'setted': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'unsetted': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.objecthistoryentry': {
|
||||
'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']"}),
|
||||
'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"})
|
||||
},
|
||||
'ietfworkflows.objectstreamhistoryentry': {
|
||||
'from_stream': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'to_stream': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.objectworkflowhistoryentry': {
|
||||
'from_state': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'to_state': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'ietfworkflows.stateobjectrelationmetadata': {
|
||||
'estimated_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'from_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'relation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.StateObjectRelation']"})
|
||||
},
|
||||
'ietfworkflows.stream': {
|
||||
'group_chair_model': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
|
||||
'group_model': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'with_groups': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.WGWorkflow']"})
|
||||
},
|
||||
'ietfworkflows.streamedid': {
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'streamed_id'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'draft': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['idtracker.InternetDraft']", 'unique': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'stream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.Stream']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.wgworkflow': {
|
||||
'selected_states': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['workflows.State']", 'null': 'True', 'blank': 'True'}),
|
||||
'selected_tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ietfworkflows.AnnotationTag']", 'null': 'True', 'blank': 'True'}),
|
||||
'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', [], {'symmetrical': 'False', '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', [], {'symmetrical': 'False', 'to': "orm['workflows.Transition']", 'null': 'True', 'blank': 'True'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'states'", 'to': "orm['workflows.Workflow']"})
|
||||
},
|
||||
'workflows.stateobjectrelation': {
|
||||
'Meta': {'unique_together': "(('content_type', 'content_id', 'state'),)"},
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'state_object'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.State']"})
|
||||
},
|
||||
'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']
|
|
@ -1,207 +0,0 @@
|
|||
|
||||
from south.db import db
|
||||
from django.db import models
|
||||
from ietf.ietfworkflows.models import *
|
||||
|
||||
class Migration:
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding model 'StateDescription'
|
||||
db.create_table('ietfworkflows_statedescription', (
|
||||
('id', orm['ietfworkflows.statedescription:id']),
|
||||
('state', orm['ietfworkflows.statedescription:state']),
|
||||
('definition', orm['ietfworkflows.statedescription:definition']),
|
||||
('order', orm['ietfworkflows.statedescription:order']),
|
||||
))
|
||||
db.send_create_signal('ietfworkflows', ['StateDescription'])
|
||||
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'StateDescription'
|
||||
db.delete_table('ietfworkflows_statedescription')
|
||||
|
||||
|
||||
|
||||
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'})
|
||||
},
|
||||
'idtracker.acronym': {
|
||||
'Meta': {'db_table': "'acronym'"},
|
||||
'acronym': ('django.db.models.fields.CharField', [], {'max_length': '12'}),
|
||||
'acronym_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name_key': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'idtracker.idintendedstatus': {
|
||||
'Meta': {'db_table': "'id_intended_status'"},
|
||||
'intended_status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'intended_status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.idstatus': {
|
||||
'Meta': {'db_table': "'id_status'"},
|
||||
'status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.internetdraft': {
|
||||
'Meta': {'db_table': "'internet_drafts'"},
|
||||
'abstract': ('django.db.models.fields.TextField', [], {}),
|
||||
'b_approve_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_discussion_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'dunn_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True'}),
|
||||
'expired_tombstone': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'extension_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'file_type': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
|
||||
'filename': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.Acronym']", 'db_column': "'group_acronym_id'"}),
|
||||
'id_document_key': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'id_document_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'intended_status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDIntendedStatus']"}),
|
||||
'last_modified_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'lc_changes': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True'}),
|
||||
'lc_expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'lc_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'local_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'replaced_by': ('django.db.models.fields.related.ForeignKey', ["orm['idtracker.InternetDraft']"], {'related_name': "'replaces_set'", 'null': 'True', 'db_column': "'replaced_by'", 'blank': 'True'}),
|
||||
'review_by_rfc_editor': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'revision': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
|
||||
'revision_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'rfc_number': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'shepherd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']", 'null': 'True', 'blank': 'True'}),
|
||||
'start_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDStatus']"}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_column': "'id_document_name'"}),
|
||||
'txt_page_count': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'wgreturn_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'idtracker.personororginfo': {
|
||||
'Meta': {'db_table': "'person_or_org_info'"},
|
||||
'address_type': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'created_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'date_modified': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'first_name_key': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'last_name_key': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'middle_initial': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'middle_initial_key': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'modified_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'name_prefix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'name_suffix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'person_or_org_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'record_type': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'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': {
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'setted': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'unsetted': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.objecthistoryentry': {
|
||||
'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']"}),
|
||||
'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"})
|
||||
},
|
||||
'ietfworkflows.objectstreamhistoryentry': {
|
||||
'from_stream': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'to_stream': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.objectworkflowhistoryentry': {
|
||||
'from_state': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'to_state': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'ietfworkflows.statedescription': {
|
||||
'definition': ('django.db.models.fields.TextField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'order': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.State']"})
|
||||
},
|
||||
'ietfworkflows.stateobjectrelationmetadata': {
|
||||
'estimated_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'from_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'relation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.StateObjectRelation']"})
|
||||
},
|
||||
'ietfworkflows.stream': {
|
||||
'group_chair_model': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
|
||||
'group_model': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'with_groups': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.WGWorkflow']"})
|
||||
},
|
||||
'ietfworkflows.streamedid': {
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'streamed_id'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'draft': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['idtracker.InternetDraft']", 'unique': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'stream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.Stream']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.wgworkflow': {
|
||||
'selected_states': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['workflows.State']", 'null': 'True', 'blank': 'True'}),
|
||||
'selected_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ietfworkflows.AnnotationTag']", 'null': 'True', 'blank': 'True'}),
|
||||
'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.stateobjectrelation': {
|
||||
'Meta': {'unique_together': "(('content_type', 'content_id', 'state'),)"},
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'state_object'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.State']"})
|
||||
},
|
||||
'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']
|
|
@ -1,205 +0,0 @@
|
|||
|
||||
from south.db import db
|
||||
from django.db import models
|
||||
from ietf.ietfworkflows.models import *
|
||||
|
||||
class Migration:
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Deleting field 'StreamedID.content_type'
|
||||
db.delete_column('ietfworkflows_streamedid', 'content_type_id')
|
||||
|
||||
# Deleting field 'StreamedID.content_id'
|
||||
db.delete_column('ietfworkflows_streamedid', 'content_id')
|
||||
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Adding field 'StreamedID.content_type'
|
||||
db.add_column('ietfworkflows_streamedid', 'content_type', orm['ietfworkflows.streamedid:content_type'])
|
||||
|
||||
# Adding field 'StreamedID.content_id'
|
||||
db.add_column('ietfworkflows_streamedid', 'content_id', orm['ietfworkflows.streamedid:content_id'])
|
||||
|
||||
|
||||
|
||||
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'})
|
||||
},
|
||||
'idtracker.acronym': {
|
||||
'Meta': {'db_table': "'acronym'"},
|
||||
'acronym': ('django.db.models.fields.CharField', [], {'max_length': '12'}),
|
||||
'acronym_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name_key': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'idtracker.idintendedstatus': {
|
||||
'Meta': {'db_table': "'id_intended_status'"},
|
||||
'intended_status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'intended_status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.idstatus': {
|
||||
'Meta': {'db_table': "'id_status'"},
|
||||
'status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.internetdraft': {
|
||||
'Meta': {'db_table': "'internet_drafts'"},
|
||||
'abstract': ('django.db.models.fields.TextField', [], {}),
|
||||
'b_approve_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_discussion_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'dunn_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True'}),
|
||||
'expired_tombstone': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'extension_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'file_type': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
|
||||
'filename': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.Acronym']", 'db_column': "'group_acronym_id'"}),
|
||||
'id_document_key': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'id_document_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'intended_status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDIntendedStatus']"}),
|
||||
'last_modified_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'lc_changes': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True'}),
|
||||
'lc_expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'lc_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'local_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'replaced_by': ('django.db.models.fields.related.ForeignKey', ["orm['idtracker.InternetDraft']"], {'related_name': "'replaces_set'", 'null': 'True', 'db_column': "'replaced_by'", 'blank': 'True'}),
|
||||
'review_by_rfc_editor': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'revision': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
|
||||
'revision_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'rfc_number': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'shepherd': ('django.db.models.fields.related.ForeignKey', ["orm['idtracker.PersonOrOrgInfo']"], {'null': 'True', 'blank': 'True'}),
|
||||
'start_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDStatus']"}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_column': "'id_document_name'"}),
|
||||
'txt_page_count': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'wgreturn_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'idtracker.personororginfo': {
|
||||
'Meta': {'db_table': "'person_or_org_info'"},
|
||||
'address_type': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'created_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'date_modified': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'first_name_key': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'last_name_key': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'middle_initial': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'middle_initial_key': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'modified_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'name_prefix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'name_suffix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'person_or_org_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'record_type': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'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': {
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'setted': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'unsetted': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.objecthistoryentry': {
|
||||
'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']"}),
|
||||
'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"})
|
||||
},
|
||||
'ietfworkflows.objectstreamhistoryentry': {
|
||||
'from_stream': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'to_stream': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.objectworkflowhistoryentry': {
|
||||
'from_state': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'to_state': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'ietfworkflows.statedescription': {
|
||||
'definition': ('django.db.models.fields.TextField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'order': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.State']"})
|
||||
},
|
||||
'ietfworkflows.stateobjectrelationmetadata': {
|
||||
'estimated_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'from_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'relation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.StateObjectRelation']"})
|
||||
},
|
||||
'ietfworkflows.stream': {
|
||||
'group_chair_model': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
|
||||
'group_model': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'with_groups': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.WGWorkflow']"})
|
||||
},
|
||||
'ietfworkflows.streamedid': {
|
||||
'draft': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['idtracker.InternetDraft']", 'unique': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'stream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.Stream']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.wgworkflow': {
|
||||
'selected_states': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['workflows.State']", 'null': 'True', 'blank': 'True'}),
|
||||
'selected_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ietfworkflows.AnnotationTag']", 'null': 'True', 'blank': 'True'}),
|
||||
'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.stateobjectrelation': {
|
||||
'Meta': {'unique_together': "(('content_type', 'content_id', 'state'),)"},
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'state_object'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.State']"})
|
||||
},
|
||||
'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']
|
|
@ -1,222 +0,0 @@
|
|||
|
||||
from south.db import db
|
||||
from django.db import models
|
||||
from ietf.ietfworkflows.models import *
|
||||
|
||||
class Migration:
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding field 'Stream.group_chair_attribute'
|
||||
db.add_column('ietfworkflows_stream', 'group_chair_attribute', orm['ietfworkflows.stream:group_chair_attribute'])
|
||||
|
||||
# Adding field 'Stream.document_group_attribute'
|
||||
db.add_column('ietfworkflows_stream', 'document_group_attribute', orm['ietfworkflows.stream:document_group_attribute'])
|
||||
|
||||
# Deleting field 'Stream.group_chair_model'
|
||||
db.delete_column('ietfworkflows_stream', 'group_chair_model')
|
||||
|
||||
# Deleting field 'Stream.with_groups'
|
||||
db.delete_column('ietfworkflows_stream', 'with_groups')
|
||||
|
||||
# Deleting field 'Stream.group_model'
|
||||
db.delete_column('ietfworkflows_stream', 'group_model')
|
||||
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting field 'Stream.group_chair_attribute'
|
||||
db.delete_column('ietfworkflows_stream', 'group_chair_attribute')
|
||||
|
||||
# Deleting field 'Stream.document_group_attribute'
|
||||
db.delete_column('ietfworkflows_stream', 'document_group_attribute')
|
||||
|
||||
# Adding field 'Stream.group_chair_model'
|
||||
db.add_column('ietfworkflows_stream', 'group_chair_model', orm['ietfworkflows.stream:group_chair_model'])
|
||||
|
||||
# Adding field 'Stream.with_groups'
|
||||
db.add_column('ietfworkflows_stream', 'with_groups', orm['ietfworkflows.stream:with_groups'])
|
||||
|
||||
# Adding field 'Stream.group_model'
|
||||
db.add_column('ietfworkflows_stream', 'group_model', orm['ietfworkflows.stream:group_model'])
|
||||
|
||||
|
||||
|
||||
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'})
|
||||
},
|
||||
'idtracker.acronym': {
|
||||
'Meta': {'db_table': "'acronym'"},
|
||||
'acronym': ('django.db.models.fields.CharField', [], {'max_length': '12'}),
|
||||
'acronym_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name_key': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'idtracker.idintendedstatus': {
|
||||
'Meta': {'db_table': "'id_intended_status'"},
|
||||
'intended_status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'intended_status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.idstatus': {
|
||||
'Meta': {'db_table': "'id_status'"},
|
||||
'status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.internetdraft': {
|
||||
'Meta': {'db_table': "'internet_drafts'"},
|
||||
'abstract': ('django.db.models.fields.TextField', [], {}),
|
||||
'b_approve_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_discussion_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'dunn_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True'}),
|
||||
'expired_tombstone': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'extension_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'file_type': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
|
||||
'filename': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.Acronym']", 'db_column': "'group_acronym_id'"}),
|
||||
'id_document_key': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'id_document_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'intended_status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDIntendedStatus']"}),
|
||||
'last_modified_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'lc_changes': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True'}),
|
||||
'lc_expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'lc_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'local_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'replaced_by': ('django.db.models.fields.related.ForeignKey', ["orm['idtracker.InternetDraft']"], {'related_name': "'replaces_set'", 'null': 'True', 'db_column': "'replaced_by'", 'blank': 'True'}),
|
||||
'review_by_rfc_editor': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'revision': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
|
||||
'revision_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'rfc_number': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'shepherd': ('django.db.models.fields.related.ForeignKey', ["orm['idtracker.PersonOrOrgInfo']"], {'null': 'True', 'blank': 'True'}),
|
||||
'start_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDStatus']"}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_column': "'id_document_name'"}),
|
||||
'txt_page_count': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'wgreturn_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'idtracker.personororginfo': {
|
||||
'Meta': {'db_table': "'person_or_org_info'"},
|
||||
'address_type': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'created_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'date_modified': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'first_name_key': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'last_name_key': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'middle_initial': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'middle_initial_key': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'modified_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'name_prefix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'name_suffix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'person_or_org_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'record_type': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'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': {
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'setted': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'unsetted': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.objecthistoryentry': {
|
||||
'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']"}),
|
||||
'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"})
|
||||
},
|
||||
'ietfworkflows.objectstreamhistoryentry': {
|
||||
'from_stream': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'to_stream': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.objectworkflowhistoryentry': {
|
||||
'from_state': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'to_state': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'ietfworkflows.statedescription': {
|
||||
'definition': ('django.db.models.fields.TextField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'order': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.State']"})
|
||||
},
|
||||
'ietfworkflows.stateobjectrelationmetadata': {
|
||||
'estimated_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'from_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'relation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.StateObjectRelation']"})
|
||||
},
|
||||
'ietfworkflows.stream': {
|
||||
'document_group_attribute': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'group_chair_attribute': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.WGWorkflow']"})
|
||||
},
|
||||
'ietfworkflows.streamedid': {
|
||||
'draft': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['idtracker.InternetDraft']", 'unique': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'stream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.Stream']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.wgworkflow': {
|
||||
'selected_states': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['workflows.State']", 'null': 'True', 'blank': 'True'}),
|
||||
'selected_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ietfworkflows.AnnotationTag']", 'null': 'True', 'blank': 'True'}),
|
||||
'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.stateobjectrelation': {
|
||||
'Meta': {'unique_together': "(('content_type', 'content_id', 'state'),)"},
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'state_object'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.State']"})
|
||||
},
|
||||
'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']
|
|
@ -1,208 +0,0 @@
|
|||
|
||||
from south.db import db
|
||||
from django.db import models
|
||||
from ietf.ietfworkflows.models import *
|
||||
|
||||
class Migration:
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding model 'StreamDelegate'
|
||||
db.create_table('ietfworkflows_streamdelegate', (
|
||||
('id', orm['ietfworkflows.streamdelegate:id']),
|
||||
('stream', orm['ietfworkflows.streamdelegate:stream']),
|
||||
('person', orm['ietfworkflows.streamdelegate:person']),
|
||||
))
|
||||
db.send_create_signal('ietfworkflows', ['StreamDelegate'])
|
||||
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'StreamDelegate'
|
||||
db.delete_table('ietfworkflows_streamdelegate')
|
||||
|
||||
|
||||
|
||||
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'})
|
||||
},
|
||||
'idtracker.acronym': {
|
||||
'Meta': {'db_table': "'acronym'"},
|
||||
'acronym': ('django.db.models.fields.CharField', [], {'max_length': '12'}),
|
||||
'acronym_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name_key': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'idtracker.idintendedstatus': {
|
||||
'Meta': {'db_table': "'id_intended_status'"},
|
||||
'intended_status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'intended_status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.idstatus': {
|
||||
'Meta': {'db_table': "'id_status'"},
|
||||
'status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.internetdraft': {
|
||||
'Meta': {'db_table': "'internet_drafts'"},
|
||||
'abstract': ('django.db.models.fields.TextField', [], {}),
|
||||
'b_approve_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_discussion_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'dunn_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True'}),
|
||||
'expired_tombstone': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'extension_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'file_type': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
|
||||
'filename': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.Acronym']", 'db_column': "'group_acronym_id'"}),
|
||||
'id_document_key': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'id_document_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'intended_status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDIntendedStatus']"}),
|
||||
'last_modified_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'lc_changes': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True'}),
|
||||
'lc_expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'lc_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'local_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'replaced_by': ('django.db.models.fields.related.ForeignKey', ["orm['idtracker.InternetDraft']"], {'related_name': "'replaces_set'", 'null': 'True', 'db_column': "'replaced_by'", 'blank': 'True'}),
|
||||
'review_by_rfc_editor': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'revision': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
|
||||
'revision_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'rfc_number': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'shepherd': ('django.db.models.fields.related.ForeignKey', ["orm['idtracker.PersonOrOrgInfo']"], {'null': 'True', 'blank': 'True'}),
|
||||
'start_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDStatus']"}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_column': "'id_document_name'"}),
|
||||
'txt_page_count': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'wgreturn_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'idtracker.personororginfo': {
|
||||
'Meta': {'db_table': "'person_or_org_info'"},
|
||||
'address_type': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'created_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'date_modified': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'first_name_key': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'last_name_key': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'middle_initial': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'middle_initial_key': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'modified_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'name_prefix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'name_suffix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'person_or_org_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'record_type': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'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': {
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'setted': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'unsetted': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.objecthistoryentry': {
|
||||
'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']"}),
|
||||
'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"})
|
||||
},
|
||||
'ietfworkflows.objectstreamhistoryentry': {
|
||||
'from_stream': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'to_stream': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.objectworkflowhistoryentry': {
|
||||
'from_state': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'to_state': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'ietfworkflows.statedescription': {
|
||||
'definition': ('django.db.models.fields.TextField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'order': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.State']"})
|
||||
},
|
||||
'ietfworkflows.stateobjectrelationmetadata': {
|
||||
'estimated_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'from_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'relation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.StateObjectRelation']"})
|
||||
},
|
||||
'ietfworkflows.stream': {
|
||||
'document_group_attribute': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'group_chair_attribute': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.WGWorkflow']"})
|
||||
},
|
||||
'ietfworkflows.streamdelegate': {
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"}),
|
||||
'stream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.Stream']"})
|
||||
},
|
||||
'ietfworkflows.streamedid': {
|
||||
'draft': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['idtracker.InternetDraft']", 'unique': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'stream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.Stream']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.wgworkflow': {
|
||||
'selected_states': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['workflows.State']", 'null': 'True', 'blank': 'True'}),
|
||||
'selected_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ietfworkflows.AnnotationTag']", 'null': 'True', 'blank': 'True'}),
|
||||
'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.stateobjectrelation': {
|
||||
'Meta': {'unique_together': "(('content_type', 'content_id', 'state'),)"},
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'state_object'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.State']"})
|
||||
},
|
||||
'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']
|
|
@ -1,234 +0,0 @@
|
|||
|
||||
from south.db import db
|
||||
from django.db import models
|
||||
from ietf.ietfworkflows.models import *
|
||||
|
||||
class Migration:
|
||||
|
||||
no_dry_run = True
|
||||
|
||||
def forwards(self, orm):
|
||||
# Remove all 'Published RFC' status
|
||||
for state in orm['workflows.state'].objects.filter(name='Published RFC'):
|
||||
state.delete()
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
"Write your backwards migration here"
|
||||
|
||||
|
||||
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'})
|
||||
},
|
||||
'idtracker.acronym': {
|
||||
'Meta': {'db_table': "'acronym'"},
|
||||
'acronym': ('django.db.models.fields.CharField', [], {'max_length': '12'}),
|
||||
'acronym_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name_key': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'idtracker.idintendedstatus': {
|
||||
'Meta': {'db_table': "'id_intended_status'"},
|
||||
'intended_status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'intended_status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.idstatus': {
|
||||
'Meta': {'db_table': "'id_status'"},
|
||||
'status': ('django.db.models.fields.CharField', [], {'max_length': '25', 'db_column': "'status_value'"}),
|
||||
'status_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
'idtracker.internetdraft': {
|
||||
'Meta': {'db_table': "'internet_drafts'"},
|
||||
'abstract': ('django.db.models.fields.TextField', [], {}),
|
||||
'b_approve_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_discussion_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'b_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'dunn_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True'}),
|
||||
'expired_tombstone': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'extension_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'file_type': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
|
||||
'filename': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.Acronym']", 'db_column': "'group_acronym_id'"}),
|
||||
'id_document_key': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'id_document_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'intended_status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDIntendedStatus']"}),
|
||||
'last_modified_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'lc_changes': ('django.db.models.fields.CharField', [], {'max_length': '3', 'null': 'True'}),
|
||||
'lc_expiration_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'lc_sent_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'local_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'replaced_by': ('django.db.models.fields.related.ForeignKey', ["orm['idtracker.InternetDraft']"], {'related_name': "'replaces_set'", 'null': 'True', 'db_column': "'replaced_by'", 'blank': 'True'}),
|
||||
'review_by_rfc_editor': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'revision': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
|
||||
'revision_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'rfc_number': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'shepherd': ('django.db.models.fields.related.ForeignKey', ["orm['idtracker.PersonOrOrgInfo']"], {'null': 'True', 'blank': 'True'}),
|
||||
'start_date': ('django.db.models.fields.DateField', [], {}),
|
||||
'status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.IDStatus']"}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_column': "'id_document_name'"}),
|
||||
'txt_page_count': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'wgreturn_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'idtracker.personororginfo': {
|
||||
'Meta': {'db_table': "'person_or_org_info'"},
|
||||
'address_type': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'created_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'date_created': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'date_modified': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'first_name_key': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'last_name_key': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'middle_initial': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'middle_initial_key': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
|
||||
'modified_by': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'}),
|
||||
'name_prefix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'name_suffix': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||
'person_or_org_tag': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'record_type': ('django.db.models.fields.CharField', [], {'max_length': '8', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'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': {
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'setted': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'unsetted': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.objecthistoryentry': {
|
||||
'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']"}),
|
||||
'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"})
|
||||
},
|
||||
'ietfworkflows.objectstreamhistoryentry': {
|
||||
'from_stream': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'to_stream': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.objectworkflowhistoryentry': {
|
||||
'from_state': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'objecthistoryentry_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['ietfworkflows.ObjectHistoryEntry']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'to_state': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'ietfworkflows.statedescription': {
|
||||
'definition': ('django.db.models.fields.TextField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'order': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.State']"})
|
||||
},
|
||||
'ietfworkflows.stateobjectrelationmetadata': {
|
||||
'estimated_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'from_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'relation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.StateObjectRelation']"})
|
||||
},
|
||||
'ietfworkflows.stream': {
|
||||
'document_group_attribute': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'group_chair_attribute': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.WGWorkflow']"})
|
||||
},
|
||||
'ietfworkflows.streamdelegate': {
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['idtracker.PersonOrOrgInfo']"}),
|
||||
'stream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.Stream']"})
|
||||
},
|
||||
'ietfworkflows.streamedid': {
|
||||
'draft': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['idtracker.InternetDraft']", 'unique': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'stream': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ietfworkflows.Stream']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'ietfworkflows.wgworkflow': {
|
||||
'selected_states': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['workflows.State']", 'null': 'True', 'blank': 'True'}),
|
||||
'selected_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ietfworkflows.AnnotationTag']", 'null': 'True', 'blank': 'True'}),
|
||||
'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'})
|
||||
},
|
||||
'permissions.role': {
|
||||
'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.stateinheritanceblock': {
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['permissions.Permission']"}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.State']"})
|
||||
},
|
||||
'workflows.stateobjectrelation': {
|
||||
'Meta': {'unique_together': "(('content_type', 'content_id', 'state'),)"},
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'state_object'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.State']"})
|
||||
},
|
||||
'workflows.statepermissionrelation': {
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['permissions.Permission']"}),
|
||||
'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['permissions.Role']"}),
|
||||
'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.State']"})
|
||||
},
|
||||
'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'})
|
||||
},
|
||||
'workflows.workflowmodelrelation': {
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'unique': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'wmrs'", 'to': "orm['workflows.Workflow']"})
|
||||
},
|
||||
'workflows.workflowobjectrelation': {
|
||||
'Meta': {'unique_together': "(('content_type', 'content_id'),)"},
|
||||
'content_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'workflow_object'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'wors'", 'to': "orm['workflows.Workflow']"})
|
||||
},
|
||||
'workflows.workflowpermissionrelation': {
|
||||
'Meta': {'unique_together': "(('workflow', 'permission'),)"},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'permission': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'permissions'", 'to': "orm['permissions.Permission']"}),
|
||||
'workflow': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['workflows.Workflow']"})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['ietfworkflows', 'workflows']
|
|
@ -1,268 +0,0 @@
|
|||
from django.contrib.contenttypes import generic
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.conf import settings
|
||||
|
||||
from ietf.idtracker.models import PersonOrOrgInfo, InternetDraft, Role, IRTF
|
||||
from ietf.utils.admin import admin_link
|
||||
from workflows.models import Workflow, State, StateObjectRelation
|
||||
from permissions.models import Permission
|
||||
|
||||
|
||||
class ObjectHistoryEntry(models.Model):
|
||||
content_type = models.ForeignKey(ContentType, verbose_name=_(u"Content type"), related_name="workflow_history", blank=True, null=True)
|
||||
content_id = models.PositiveIntegerField(_(u"Content id"), blank=True, null=True)
|
||||
content = generic.GenericForeignKey(ct_field="content_type", fk_field="content_id")
|
||||
|
||||
date = models.DateTimeField(_('Date'), auto_now_add=True)
|
||||
comment = models.TextField(_('Comment'))
|
||||
person = models.ForeignKey(PersonOrOrgInfo)
|
||||
|
||||
class Meta:
|
||||
ordering = ('-date', )
|
||||
|
||||
def get_real_instance(self):
|
||||
if hasattr(self, '_real_instance'):
|
||||
return self._real_instance
|
||||
for i in ('objectworkflowhistoryentry', 'objectannotationtaghistoryentry', 'objectstreamhistoryentry'):
|
||||
try:
|
||||
real_instance = getattr(self, i, None)
|
||||
if real_instance:
|
||||
self._real_instance = real_instance
|
||||
return real_instance
|
||||
except models.ObjectDoesNotExist:
|
||||
continue
|
||||
self._real_instance = self
|
||||
return self
|
||||
|
||||
|
||||
class ObjectWorkflowHistoryEntry(ObjectHistoryEntry):
|
||||
from_state = models.CharField(_('From state'), max_length=100)
|
||||
to_state = models.CharField(_('To state'), max_length=100)
|
||||
|
||||
def describe_change(self):
|
||||
html = '<p class="describe_state_change">'
|
||||
html += 'Changed state <i>%s</i> to <b>%s</b>' % (self.from_state, self.to_state)
|
||||
html += '</p>'
|
||||
return html
|
||||
|
||||
|
||||
class ObjectAnnotationTagHistoryEntry(ObjectHistoryEntry):
|
||||
setted = models.TextField(_('Setted tags'), blank=True, null=True)
|
||||
unsetted = models.TextField(_('Unsetted tags'), blank=True, null=True)
|
||||
|
||||
def describe_change(self):
|
||||
html = ''
|
||||
if self.setted:
|
||||
html += '<p class="describe_tags_set">'
|
||||
html += 'Annotation tags set: '
|
||||
html += self.setted
|
||||
html += '</p>'
|
||||
if self.unsetted:
|
||||
html += '<p class="describe_tags_reset">'
|
||||
html += 'Annotation tags reset: '
|
||||
html += self.unsetted
|
||||
html += '</p>'
|
||||
return html
|
||||
|
||||
|
||||
class ObjectStreamHistoryEntry(ObjectHistoryEntry):
|
||||
from_stream = models.TextField(_('From stream'), blank=True, null=True)
|
||||
to_stream = models.TextField(_('To stream'), blank=True, null=True)
|
||||
|
||||
def describe_change(self):
|
||||
html = '<p class="describe_stream_change">'
|
||||
html += 'Changed doc from stream <i>%s</i> to <b>%s</b>' % (self.from_stream, self.to_stream)
|
||||
html += '</p>'
|
||||
return html
|
||||
|
||||
|
||||
class StateDescription(models.Model):
|
||||
state = models.ForeignKey(State)
|
||||
definition = models.TextField()
|
||||
order = models.PositiveIntegerField()
|
||||
|
||||
class Meta:
|
||||
ordering = ('order', )
|
||||
|
||||
def __unicode__(self):
|
||||
return unicode(self.state)
|
||||
|
||||
|
||||
class AnnotationTag(models.Model):
|
||||
name = models.CharField(_(u"Name"), max_length=100)
|
||||
workflow = models.ForeignKey(Workflow, verbose_name=_(u"Workflow"), related_name="annotation_tags")
|
||||
permission = models.ForeignKey(Permission, verbose_name=_(u"Permission"), blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
ordering = ('name', )
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class AnnotationTagObjectRelation(models.Model):
|
||||
content_type = models.ForeignKey(ContentType, verbose_name=_(u"Content type"), related_name="annotation_tags", blank=True, null=True)
|
||||
content_id = models.PositiveIntegerField(_(u"Content id"), blank=True, null=True)
|
||||
content = generic.GenericForeignKey(ct_field="content_type", fk_field="content_id")
|
||||
|
||||
annotation_tag = models.ForeignKey(AnnotationTag, verbose_name=_(u"Annotation tag"))
|
||||
|
||||
|
||||
class StateObjectRelationMetadata(models.Model):
|
||||
relation = models.ForeignKey(StateObjectRelation)
|
||||
from_date = models.DateTimeField(_('Initial date'), blank=True, null=True)
|
||||
estimated_date = models.DateTimeField(_('Estimated date'), blank=True, null=True)
|
||||
|
||||
|
||||
class WGWorkflow(Workflow):
|
||||
selected_states = models.ManyToManyField(State, blank=True, null=True)
|
||||
selected_tags = models.ManyToManyField(AnnotationTag, blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'IETF Workflow'
|
||||
verbose_name_plural = 'IETF Workflows'
|
||||
|
||||
def get_tags(self):
|
||||
tags = self.annotation_tags.all()
|
||||
if tags.count():
|
||||
return tags
|
||||
else:
|
||||
return self.selected_tags.all()
|
||||
|
||||
def get_states(self):
|
||||
states = self.states.all()
|
||||
if states.count():
|
||||
return states
|
||||
else:
|
||||
return self.selected_states.all()
|
||||
|
||||
|
||||
class Stream(models.Model):
|
||||
name = models.CharField(_(u"Name"), max_length=100)
|
||||
document_group_attribute = models.CharField(_(u'Document group attribute'), max_length=255, blank=True, null=True)
|
||||
group_chair_attribute = models.CharField(_(u'Group chair attribute'), max_length=255, blank=True, null=True)
|
||||
workflow = models.ForeignKey(WGWorkflow)
|
||||
|
||||
def __unicode__(self):
|
||||
return u'%s stream' % self.name
|
||||
workflow_link = admin_link('workflow')
|
||||
|
||||
def _irtf_group(self, document):
|
||||
filename = document.filename.split('-')
|
||||
if len(filename) > 2 and filename[0] == 'draft' and filename[1] == 'irtf':
|
||||
try:
|
||||
return IRTF.objects.get(acronym=filename[2])
|
||||
except IRTF.DoesNotExist:
|
||||
return None
|
||||
return None
|
||||
|
||||
def _irtf_chairs_for_document(self, document):
|
||||
group = self._irtf_group(document)
|
||||
if not group:
|
||||
return []
|
||||
chairs = [i.person for i in group.chairs()]
|
||||
chairs.append(Role.objects.get(pk=Role.IRTF_CHAIR).person)
|
||||
return chairs
|
||||
|
||||
def _ietf_delegates_for_document(self, document):
|
||||
group = self.get_group_for_document(document)
|
||||
if not group:
|
||||
return False
|
||||
return [i.person for i in group.wgdelegate_set.all()]
|
||||
|
||||
def get_group_for_document(self, document):
|
||||
if hasattr(self, '_%s_group' % self.name.lower()):
|
||||
return getattr(self, '_%s_group' % self.name.lower())(document)
|
||||
|
||||
if not self.document_group_attribute:
|
||||
return None
|
||||
attr = None
|
||||
obj = document
|
||||
for attr_name in self.document_group_attribute.split('.'):
|
||||
attr = getattr(obj, attr_name, None)
|
||||
if not attr:
|
||||
return None
|
||||
if callable(attr):
|
||||
attr = attr()
|
||||
obj = attr
|
||||
return attr
|
||||
|
||||
def get_chairs_for_document(self, document):
|
||||
if hasattr(self, '_%s_chairs_for_document' % self.name.lower()):
|
||||
return getattr(self, '_%s_chairs_for_document' % self.name.lower())(document)
|
||||
|
||||
group = self.get_group_for_document(document)
|
||||
if not group or not self.group_chair_attribute:
|
||||
return []
|
||||
attr = None
|
||||
obj = group
|
||||
for attr_name in self.group_chair_attribute.split('.'):
|
||||
attr = getattr(obj, attr_name, None)
|
||||
if not attr:
|
||||
return None
|
||||
if callable(attr):
|
||||
attr = attr()
|
||||
obj = attr
|
||||
return attr
|
||||
|
||||
def get_delegates_for_document(self, document):
|
||||
delegates = []
|
||||
if hasattr(self, '_%s_delegates_for_document' % self.name.lower()):
|
||||
delegates = getattr(self, '_%s_delegates_for_document' % self.name.lower())(document)
|
||||
delegates += [i.person for i in self.streamdelegate_set.all()]
|
||||
return delegates
|
||||
|
||||
def _ise_chairs_for_document(self, document):
|
||||
return self._ise_stream_chairs()
|
||||
|
||||
def _ise_stream_chairs(self):
|
||||
chairs = []
|
||||
try:
|
||||
chairs.append(Role.objects.get(role_name='ISE').person)
|
||||
except Role.DoesNotExist:
|
||||
pass
|
||||
return chairs
|
||||
|
||||
def get_chairs(self):
|
||||
chairs = []
|
||||
if hasattr(self, '_%s_stream_chairs' % self.name.lower()):
|
||||
chairs += list(getattr(self, '_%s_stream_chairs' % self.name.lower())())
|
||||
|
||||
role_key = getattr(Role, '%s_CHAIR' % self.name.upper(), None)
|
||||
if role_key:
|
||||
try:
|
||||
chairs.append(Role.objects.get(pk=role_key).person)
|
||||
except Role.DoesNotExist:
|
||||
pass
|
||||
return list(set(chairs))
|
||||
|
||||
def get_delegates(self):
|
||||
delegates = []
|
||||
if hasattr(self, '_%s_stream_delegates' % self.name.lower()):
|
||||
delegates += list(getattr(self, '_%s_stream_delegates' % self.name.lower())())
|
||||
delegates += [i.person for i in StreamDelegate.objects.filter(stream=self)]
|
||||
return list(set(delegates))
|
||||
|
||||
def check_chair(self, person):
|
||||
return person in self.get_chairs()
|
||||
|
||||
def check_delegate(self, person):
|
||||
return person in self.get_delegates()
|
||||
|
||||
|
||||
class StreamedID(models.Model):
|
||||
draft = models.OneToOneField(InternetDraft)
|
||||
stream = models.ForeignKey(Stream, blank=True, null=True)
|
||||
|
||||
def get_group(self):
|
||||
return self.stream.get_group_for_document(self.draft)
|
||||
|
||||
|
||||
class StreamDelegate(models.Model):
|
||||
stream = models.ForeignKey(Stream)
|
||||
person = models.ForeignKey(PersonOrOrgInfo)
|
||||
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
from ietf.name.proxy import StreamProxy as Stream
|
|
@ -1,102 +0,0 @@
|
|||
from django.db import models
|
||||
from django.conf import settings
|
||||
from ietf.idtracker.models import InternetDraft
|
||||
|
||||
from ietf.idrfc.idrfc_wrapper import IdRfcWrapper, IdWrapper
|
||||
from ietf.ietfworkflows.models import StreamedID, Stream
|
||||
|
||||
|
||||
def get_streamed_draft(draft):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
class Dummy: pass
|
||||
o = Dummy()
|
||||
o.draft = draft
|
||||
o.stream = super(InternetDraft, draft).stream
|
||||
o.group = draft.group
|
||||
o.get_group = lambda: draft.group
|
||||
return o
|
||||
|
||||
if not draft:
|
||||
return None
|
||||
try:
|
||||
return draft.streamedid
|
||||
except StreamedID.DoesNotExist:
|
||||
return None
|
||||
|
||||
|
||||
def get_stream_from_draft(draft):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
s = super(InternetDraft, draft).stream
|
||||
if s:
|
||||
s.with_groups = s.slug in ["ietf", "irtf"]
|
||||
return s
|
||||
|
||||
streamedid = get_streamed_draft(draft)
|
||||
if streamedid:
|
||||
return streamedid.stream
|
||||
return False
|
||||
|
||||
|
||||
def get_stream_by_name(stream_name):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
raise NotImplementedError
|
||||
|
||||
try:
|
||||
return Stream.objects.get(name=stream_name)
|
||||
except Stream.DoesNotExist:
|
||||
return None
|
||||
|
||||
|
||||
def get_stream_from_id(stream_id):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
raise NotImplementedError
|
||||
|
||||
try:
|
||||
return Stream.objects.get(id=stream_id)
|
||||
except Stream.DoesNotExist:
|
||||
return None
|
||||
|
||||
|
||||
def _set_stream_automatically(draft, stream):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
raise NotImplementedError
|
||||
(streamed, created) = StreamedID.objects.get_or_create(draft=draft)
|
||||
if created:
|
||||
streamed.stream = stream
|
||||
streamed.save()
|
||||
return
|
||||
|
||||
|
||||
def get_stream_from_wrapper(idrfc_wrapper):
|
||||
idwrapper = None
|
||||
if isinstance(idrfc_wrapper, IdRfcWrapper):
|
||||
idwrapper = idrfc_wrapper.id
|
||||
elif isinstance(idrfc_wrapper, IdWrapper):
|
||||
idwrapper = idrfc_wrapper
|
||||
if not idwrapper:
|
||||
return None
|
||||
draft = idwrapper._draft
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
return super(InternetDraft, draft).stream
|
||||
|
||||
stream = get_stream_from_draft(draft)
|
||||
if stream == False:
|
||||
stream_id = idwrapper.stream_id()
|
||||
stream = get_stream_from_id(stream_id)
|
||||
_set_stream_automatically(draft, stream)
|
||||
return stream
|
||||
else:
|
||||
return stream
|
||||
return None
|
||||
|
||||
|
||||
def set_stream_for_draft(draft, stream):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
raise NotImplementedError
|
||||
|
||||
(streamed, created) = StreamedID.objects.get_or_create(draft=draft)
|
||||
if streamed.stream != stream:
|
||||
streamed.stream = stream
|
||||
streamed.group = None
|
||||
streamed.save()
|
||||
return streamed.stream
|
1
ietf/ietfworkflows/templatetags/.gitignore
vendored
1
ietf/ietfworkflows/templatetags/.gitignore
vendored
|
@ -1 +0,0 @@
|
|||
/*.pyc
|
|
@ -1,112 +0,0 @@
|
|||
from django import template
|
||||
from django.conf import settings
|
||||
from django.core.urlresolvers import reverse as urlreverse
|
||||
|
||||
from ietf.idrfc.idrfc_wrapper import IdRfcWrapper, IdWrapper
|
||||
from ietf.ietfworkflows.utils import (get_workflow_for_draft,
|
||||
get_state_for_draft)
|
||||
from ietf.ietfworkflows.streams import get_stream_from_wrapper
|
||||
from ietf.ietfworkflows.models import Stream
|
||||
from ietf.ietfworkflows.accounts import (can_edit_state, can_edit_stream,
|
||||
is_chair_of_stream, can_adopt)
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@register.inclusion_tag('ietfworkflows/stream_state.html', takes_context=True)
|
||||
def stream_state(context, doc):
|
||||
data = {}
|
||||
stream = get_stream_from_wrapper(doc)
|
||||
data.update({'stream': stream})
|
||||
if not stream:
|
||||
return data
|
||||
|
||||
idwrapper = None
|
||||
if isinstance(doc, IdRfcWrapper):
|
||||
idwrapper = doc.id
|
||||
elif isinstance(doc, IdWrapper):
|
||||
idwrapper = doc
|
||||
if not idwrapper:
|
||||
return data
|
||||
|
||||
draft = getattr(idwrapper, '_draft', None)
|
||||
if not draft:
|
||||
return data
|
||||
|
||||
workflow = get_workflow_for_draft(draft)
|
||||
state = get_state_for_draft(draft)
|
||||
|
||||
data.update({'workflow': workflow,
|
||||
'draft': draft,
|
||||
'state': state,
|
||||
'milestones': draft.groupmilestone_set.filter(state="active")
|
||||
})
|
||||
|
||||
return data
|
||||
|
||||
|
||||
@register.inclusion_tag('ietfworkflows/workflow_history_entry.html', takes_context=True)
|
||||
def workflow_history_entry(context, entry):
|
||||
real_entry = entry.get_real_instance()
|
||||
return {'entry': real_entry,
|
||||
'entry_class': real_entry.__class__.__name__.lower()}
|
||||
|
||||
|
||||
@register.inclusion_tag('ietfworkflows/edit_actions.html', takes_context=True)
|
||||
def edit_actions(context, wrapper):
|
||||
request = context.get('request', None)
|
||||
user = request and request.user
|
||||
if not user:
|
||||
return {}
|
||||
idwrapper = None
|
||||
if isinstance(wrapper, IdRfcWrapper):
|
||||
idwrapper = wrapper.id
|
||||
elif isinstance(wrapper, IdWrapper):
|
||||
idwrapper = wrapper
|
||||
if not idwrapper:
|
||||
return None
|
||||
doc = wrapper
|
||||
draft = wrapper._draft
|
||||
|
||||
actions = []
|
||||
if can_adopt(user, draft):
|
||||
actions.append(("Adopt in WG", urlreverse('edit_adopt', kwargs=dict(name=doc.draft_name))))
|
||||
|
||||
if can_edit_state(user, draft):
|
||||
actions.append(("Change stream state", urlreverse('edit_state', kwargs=dict(name=doc.draft_name))))
|
||||
if draft.stream_id in ("iab", "ise", "irtf"):
|
||||
actions.append(("Request publication", urlreverse('doc_request_publication', kwargs=dict(name=doc.draft_name))))
|
||||
|
||||
return dict(actions=actions)
|
||||
|
||||
|
||||
class StreamListNode(template.Node):
|
||||
|
||||
def __init__(self, user, var_name):
|
||||
self.user = user
|
||||
self.var_name = var_name
|
||||
|
||||
def render(self, context):
|
||||
user = self.user.resolve(context)
|
||||
streams = []
|
||||
for i in Stream.objects.all():
|
||||
if "Legacy" in i.name:
|
||||
continue
|
||||
if is_chair_of_stream(user, i):
|
||||
streams.append(i)
|
||||
context.update({self.var_name: streams})
|
||||
return ''
|
||||
|
||||
|
||||
@register.tag
|
||||
def get_user_managed_streams(parser, token):
|
||||
firstbits = token.contents.split(None, 2)
|
||||
if len(firstbits) != 3:
|
||||
raise template.TemplateSyntaxError("'get_user_managed_streams' tag takes three arguments")
|
||||
user = parser.compile_filter(firstbits[1])
|
||||
lastbits_reversed = firstbits[2][::-1].split(None, 2)
|
||||
if lastbits_reversed[1][::-1] != 'as':
|
||||
raise template.TemplateSyntaxError("next-to-last argument to 'get_user_managed_stream' tag must"
|
||||
" be 'as'")
|
||||
var_name = lastbits_reversed[0][::-1]
|
||||
return StreamListNode(user, var_name)
|
|
@ -1,102 +0,0 @@
|
|||
from django import template
|
||||
from django.conf import settings
|
||||
from django.core.urlresolvers import reverse as urlreverse
|
||||
|
||||
from ietf.idrfc.idrfc_wrapper import IdRfcWrapper, IdWrapper
|
||||
from ietf.ietfworkflows.utils import (get_workflow_for_draft,
|
||||
get_state_for_draft)
|
||||
from ietf.ietfworkflows.streams import get_stream_from_wrapper
|
||||
from ietf.ietfworkflows.models import Stream
|
||||
from ietf.ietfworkflows.accounts import (can_edit_state, can_edit_stream,
|
||||
is_chair_of_stream, can_adopt)
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@register.inclusion_tag('ietfworkflows/stream_state_redesign.html', takes_context=True)
|
||||
def stream_state(context, doc):
|
||||
data = {}
|
||||
stream = doc.stream
|
||||
data.update({'stream': stream})
|
||||
if not stream:
|
||||
return data
|
||||
|
||||
if doc.type.slug != 'draft':
|
||||
return data
|
||||
|
||||
state = get_state_for_draft(doc)
|
||||
|
||||
data.update({
|
||||
'state': state,
|
||||
'doc': doc,
|
||||
})
|
||||
|
||||
return data
|
||||
|
||||
|
||||
@register.inclusion_tag('ietfworkflows/workflow_history_entry.html', takes_context=True)
|
||||
def workflow_history_entry(context, entry):
|
||||
real_entry = entry.get_real_instance()
|
||||
return {'entry': real_entry,
|
||||
'entry_class': real_entry.__class__.__name__.lower()}
|
||||
|
||||
|
||||
@register.inclusion_tag('ietfworkflows/edit_actions.html', takes_context=True)
|
||||
def edit_actions(context, wrapper):
|
||||
request = context.get('request', None)
|
||||
user = request and request.user
|
||||
if not user:
|
||||
return {}
|
||||
idwrapper = None
|
||||
if isinstance(wrapper, IdRfcWrapper):
|
||||
idwrapper = wrapper.id
|
||||
elif isinstance(wrapper, IdWrapper):
|
||||
idwrapper = wrapper
|
||||
if not idwrapper:
|
||||
return None
|
||||
doc = wrapper
|
||||
draft = wrapper._draft
|
||||
|
||||
actions = []
|
||||
if can_adopt(user, draft):
|
||||
actions.append(("Adopt in WG", urlreverse('edit_adopt', kwargs=dict(name=doc.draft_name))))
|
||||
|
||||
if can_edit_state(user, draft):
|
||||
actions.append(("Change stream state", urlreverse('edit_state', kwargs=dict(name=doc.draft_name))))
|
||||
|
||||
if can_edit_stream(user, draft):
|
||||
actions.append(("Change stream", urlreverse('edit_stream', kwargs=dict(name=doc.draft_name))))
|
||||
|
||||
return dict(actions=actions)
|
||||
|
||||
|
||||
class StreamListNode(template.Node):
|
||||
|
||||
def __init__(self, user, var_name):
|
||||
self.user = user
|
||||
self.var_name = var_name
|
||||
|
||||
def render(self, context):
|
||||
user = self.user.resolve(context)
|
||||
streams = []
|
||||
for i in Stream.objects.all():
|
||||
if "Legacy" in i.name:
|
||||
continue
|
||||
if is_chair_of_stream(user, i):
|
||||
streams.append(i)
|
||||
context.update({self.var_name: streams})
|
||||
return ''
|
||||
|
||||
|
||||
@register.tag
|
||||
def get_user_managed_streams(parser, token):
|
||||
firstbits = token.contents.split(None, 2)
|
||||
if len(firstbits) != 3:
|
||||
raise template.TemplateSyntaxError("'get_user_managed_streams' tag takes three arguments")
|
||||
user = parser.compile_filter(firstbits[1])
|
||||
lastbits_reversed = firstbits[2][::-1].split(None, 2)
|
||||
if lastbits_reversed[1][::-1] != 'as':
|
||||
raise template.TemplateSyntaxError("next-to-last argument to 'get_user_managed_stream' tag must"
|
||||
" be 'as'")
|
||||
var_name = lastbits_reversed[0][::-1]
|
||||
return StreamListNode(user, var_name)
|
|
@ -1,188 +0,0 @@
|
|||
import datetime, os, shutil
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import User
|
||||
from django.core.urlresolvers import reverse as urlreverse
|
||||
import django.test
|
||||
from StringIO import StringIO
|
||||
from pyquery import PyQuery
|
||||
|
||||
from ietf.utils.test_utils import login_testing_unauthorized
|
||||
from ietf.utils.test_data import make_test_data
|
||||
from ietf.utils.mail import outbox
|
||||
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
from ietf.person.models import Person, Email
|
||||
from ietf.group.models import Group, Role
|
||||
from ietf.doc.models import Document, State
|
||||
from ietf.doc.utils import *
|
||||
from ietf.name.models import DocTagName
|
||||
|
||||
class EditStreamInfoTestCase(django.test.TestCase):
|
||||
fixtures = ['names']
|
||||
|
||||
def test_adopt_document(self):
|
||||
draft = make_test_data()
|
||||
draft.stream = None
|
||||
draft.group = Group.objects.get(type="individ")
|
||||
draft.save()
|
||||
draft.unset_state("draft-stream-ietf")
|
||||
|
||||
url = urlreverse('edit_adopt', kwargs=dict(name=draft.name))
|
||||
login_testing_unauthorized(self, "marschairman", url)
|
||||
|
||||
# get
|
||||
r = self.client.get(url)
|
||||
self.assertEquals(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertEquals(len(q('form input[type=submit][value*=adopt]')), 1)
|
||||
self.assertEquals(len(q('form select[name="group"] option')), 1) # we can only select "mars"
|
||||
|
||||
# adopt in mars WG
|
||||
mailbox_before = len(outbox)
|
||||
events_before = draft.docevent_set.count()
|
||||
r = self.client.post(url,
|
||||
dict(comment="some comment",
|
||||
group=Group.objects.get(acronym="mars").pk,
|
||||
weeks="10"))
|
||||
self.assertEquals(r.status_code, 302)
|
||||
|
||||
draft = Document.objects.get(pk=draft.pk)
|
||||
self.assertEquals(draft.group.acronym, "mars")
|
||||
self.assertEquals(draft.stream_id, "ietf")
|
||||
self.assertEquals(draft.docevent_set.count() - events_before, 4)
|
||||
self.assertEquals(len(outbox), mailbox_before + 1)
|
||||
self.assertTrue("state changed" in outbox[-1]["Subject"].lower())
|
||||
self.assertTrue("wgchairman@ietf.org" in unicode(outbox[-1]))
|
||||
self.assertTrue("wgdelegate@ietf.org" in unicode(outbox[-1]))
|
||||
|
||||
def test_set_tags(self):
|
||||
draft = make_test_data()
|
||||
draft.tags = DocTagName.objects.filter(slug="w-expert")
|
||||
draft.group.unused_tags.add("w-refdoc")
|
||||
|
||||
url = urlreverse('edit_state', kwargs=dict(name=draft.name))
|
||||
login_testing_unauthorized(self, "marschairman", url)
|
||||
|
||||
# get
|
||||
r = self.client.get(url)
|
||||
self.assertEquals(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
# make sure the unused tags are hidden
|
||||
unused = draft.group.unused_tags.values_list("slug", flat=True)
|
||||
for t in q("input[name=tags]"):
|
||||
self.assertTrue(t.attrib["value"] not in unused)
|
||||
|
||||
# set tags
|
||||
mailbox_before = len(outbox)
|
||||
events_before = draft.docevent_set.count()
|
||||
r = self.client.post(url,
|
||||
dict(comment="some comment",
|
||||
weeks="10",
|
||||
tags=["need-aut", "sheph-u"],
|
||||
only_tags="1",
|
||||
# unused but needed for validation
|
||||
new_state=draft.get_state("draft-stream-%s" % draft.stream_id).pk,
|
||||
))
|
||||
self.assertEquals(r.status_code, 302)
|
||||
|
||||
draft = Document.objects.get(pk=draft.pk)
|
||||
self.assertEquals(draft.tags.count(), 2)
|
||||
self.assertEquals(draft.tags.filter(slug="w-expert").count(), 0)
|
||||
self.assertEquals(draft.tags.filter(slug="need-aut").count(), 1)
|
||||
self.assertEquals(draft.tags.filter(slug="sheph-u").count(), 1)
|
||||
self.assertEquals(draft.docevent_set.count() - events_before, 2)
|
||||
self.assertEquals(len(outbox), mailbox_before + 1)
|
||||
self.assertTrue("tags changed" in outbox[-1]["Subject"].lower())
|
||||
self.assertTrue("wgchairman@ietf.org" in unicode(outbox[-1]))
|
||||
self.assertTrue("wgdelegate@ietf.org" in unicode(outbox[-1]))
|
||||
self.assertTrue("plain@example.com" in unicode(outbox[-1]))
|
||||
|
||||
def test_set_state(self):
|
||||
draft = make_test_data()
|
||||
|
||||
url = urlreverse('edit_state', kwargs=dict(name=draft.name))
|
||||
login_testing_unauthorized(self, "marschairman", url)
|
||||
|
||||
# get
|
||||
r = self.client.get(url)
|
||||
self.assertEquals(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
# make sure the unused states are hidden
|
||||
unused = draft.group.unused_states.values_list("pk", flat=True)
|
||||
for t in q("select[name=new_state]").find("option[name=tags]"):
|
||||
self.assertTrue(t.attrib["value"] not in unused)
|
||||
self.assertEquals(len(q('select[name=new_state]')), 1)
|
||||
|
||||
old_state = draft.get_state("draft-stream-%s" % draft.stream_id )
|
||||
new_state = State.objects.get(used=True, type="draft-stream-%s" % draft.stream_id, slug="parked")
|
||||
self.assertTrue(old_state!=new_state)
|
||||
mailbox_before = len(outbox)
|
||||
events_before = draft.docevent_set.count()
|
||||
|
||||
# First make sure cancel doesn't change anything
|
||||
r = self.client.post(url,
|
||||
dict(comment="some comment",
|
||||
weeks="10",
|
||||
tags=[x.pk for x in draft.tags.filter(slug__in=get_tags_for_stream_id(draft.stream_id))],
|
||||
new_state=new_state.pk,
|
||||
cancel="1",
|
||||
))
|
||||
self.assertEquals(r.status_code, 302)
|
||||
|
||||
draft = Document.objects.get(pk=draft.pk)
|
||||
self.assertEquals(draft.get_state("draft-stream-%s" % draft.stream_id), old_state)
|
||||
|
||||
# Set new state
|
||||
r = self.client.post(url,
|
||||
dict(comment="some comment",
|
||||
weeks="10",
|
||||
tags=[x.pk for x in draft.tags.filter(slug__in=get_tags_for_stream_id(draft.stream_id))],
|
||||
new_state=new_state.pk,
|
||||
))
|
||||
self.assertEquals(r.status_code, 302)
|
||||
|
||||
draft = Document.objects.get(pk=draft.pk)
|
||||
self.assertEquals(draft.get_state("draft-stream-%s" % draft.stream_id), new_state)
|
||||
self.assertEquals(draft.docevent_set.count() - events_before, 2)
|
||||
reminder = DocReminder.objects.filter(event__doc=draft, type="stream-s")
|
||||
self.assertEquals(len(reminder), 1)
|
||||
due = datetime.datetime.now() + datetime.timedelta(weeks=10)
|
||||
self.assertTrue(due - datetime.timedelta(days=1) <= reminder[0].due <= due + datetime.timedelta(days=1))
|
||||
self.assertEquals(len(outbox), mailbox_before + 1)
|
||||
self.assertTrue("state changed" in outbox[-1]["Subject"].lower())
|
||||
self.assertTrue("wgchairman@ietf.org" in unicode(outbox[-1]))
|
||||
self.assertTrue("wgdelegate@ietf.org" in unicode(outbox[-1]))
|
||||
|
||||
def test_manage_stream_delegates(self):
|
||||
make_test_data()
|
||||
|
||||
url = urlreverse('stream_delegates', kwargs=dict(stream_name="IETF"))
|
||||
login_testing_unauthorized(self, "secretary", url)
|
||||
|
||||
# get
|
||||
r = self.client.get(url)
|
||||
self.assertEquals(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertEquals(len(q('input[type=submit][value*=Add]')), 1)
|
||||
|
||||
delegate = Email.objects.get(address="plain@example.com")
|
||||
|
||||
# add delegate
|
||||
r = self.client.post(url,
|
||||
dict(email=delegate.address))
|
||||
self.assertEquals(r.status_code, 200)
|
||||
|
||||
self.assertEquals(Role.objects.filter(group__acronym="ietf", name="delegate", person__email__address=delegate.address).count(), 1)
|
||||
|
||||
# remove delegate again
|
||||
r = self.client.post(url,
|
||||
dict(remove_delegate=[delegate.person.pk],
|
||||
delete="1"))
|
||||
self.assertEquals(r.status_code, 200)
|
||||
|
||||
self.assertEquals(Role.objects.filter(group__acronym="ietf", name="delegate", person__email__address=delegate.address).count(), 0)
|
||||
|
||||
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
# the above tests only work with the new schema
|
||||
del EditStreamInfoTestCase
|
|
@ -1,13 +0,0 @@
|
|||
# Copyright The IETF Trust 2008, All Rights Reserved
|
||||
|
||||
from django.conf.urls.defaults import patterns, url
|
||||
from django.views.generic.simple import redirect_to
|
||||
|
||||
urlpatterns = patterns('ietf.ietfworkflows.views',
|
||||
url(r'^(?P<name>[^/]+)/history/$', 'stream_history', name='stream_history'),
|
||||
url(r'^(?P<name>[^/]+)/edit/adopt/$', 'edit_adopt', name='edit_adopt'),
|
||||
# FIXME: the name edit_state is far too generic
|
||||
url(r'^(?P<name>[^/]+)/edit/state/$', 'edit_state', name='edit_state'),
|
||||
url(r'^(?P<name>[^/]+)/edit/stream/$', redirect_to, { 'url': '/doc/%(name)s/edit/info/'}) ,
|
||||
url(r'^delegates/(?P<stream_name>[^/]+)/$', 'stream_delegates', name='stream_delegates'),
|
||||
)
|
|
@ -1,466 +0,0 @@
|
|||
import copy
|
||||
import datetime
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.core.mail import EmailMessage
|
||||
from django.template.loader import render_to_string
|
||||
from django.template.defaultfilters import pluralize
|
||||
|
||||
from workflows.models import State, StateObjectRelation
|
||||
from workflows.utils import (get_workflow_for_object, set_workflow_for_object,
|
||||
get_state, set_state)
|
||||
|
||||
from ietf.ietfworkflows.streams import (get_streamed_draft, get_stream_from_draft,
|
||||
set_stream_for_draft)
|
||||
from ietf.ietfworkflows.models import (WGWorkflow, AnnotationTagObjectRelation,
|
||||
AnnotationTag, ObjectAnnotationTagHistoryEntry,
|
||||
ObjectHistoryEntry, StateObjectRelationMetadata,
|
||||
ObjectWorkflowHistoryEntry, ObjectStreamHistoryEntry)
|
||||
from ietf.idtracker.models import InternetDraft
|
||||
from ietf.utils.mail import send_mail
|
||||
from ietf.doc.models import Document, DocEvent, save_document_in_history, DocReminder, DocReminderTypeName
|
||||
from ietf.group.models import Role
|
||||
|
||||
WAITING_WRITEUP = 'WG Consensus: Waiting for Write-Up'
|
||||
FOLLOWUP_TAG = 'Doc Shepherd Follow-up Underway'
|
||||
|
||||
|
||||
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, default=None):
|
||||
workflow = get_workflow_for_object(wg)
|
||||
try:
|
||||
workflow = workflow and workflow.wgworkflow
|
||||
except WGWorkflow.DoesNotExist:
|
||||
workflow = None
|
||||
if not workflow:
|
||||
if default:
|
||||
workflow = default
|
||||
else:
|
||||
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
|
||||
|
||||
|
||||
def get_workflow_for_draft(draft):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
return True if get_streamed_draft(draft) else None
|
||||
|
||||
workflow = get_workflow_for_object(draft)
|
||||
try:
|
||||
workflow = workflow and workflow.wgworkflow
|
||||
except WGWorkflow.DoesNotExist:
|
||||
workflow = None
|
||||
if not workflow:
|
||||
streamed_draft = get_streamed_draft(draft)
|
||||
if not streamed_draft or not streamed_draft.stream:
|
||||
return None
|
||||
stream = streamed_draft.stream
|
||||
if stream.document_group_attribute:
|
||||
group = streamed_draft.get_group()
|
||||
if not group:
|
||||
return None
|
||||
else:
|
||||
workflow = get_workflow_for_wg(group, streamed_draft.stream.workflow)
|
||||
else:
|
||||
workflow = stream.workflow
|
||||
set_workflow_for_object(draft, workflow)
|
||||
return workflow
|
||||
|
||||
|
||||
def get_workflow_history_for_draft(draft, entry_type=None):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
from ietf.doc.proxy import ObjectHistoryEntryProxy
|
||||
return ObjectHistoryEntryProxy.objects.filter(doc=draft).order_by('-time', '-id').select_related('by')
|
||||
|
||||
ctype = ContentType.objects.get_for_model(draft)
|
||||
filter_param = {'content_type': ctype,
|
||||
'content_id': draft.pk}
|
||||
if entry_type:
|
||||
filter_param.update({'%s__isnull' % entry_type: False})
|
||||
history = ObjectHistoryEntry.objects.filter(**filter_param).\
|
||||
select_related('objectworkflowhistoryentry', 'objectannotationtaghistoryentry',
|
||||
'objectstreamhistoryentry')
|
||||
return history
|
||||
|
||||
|
||||
def get_annotation_tags_for_draft(draft):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
from ietf.name.proxy import AnnotationTagObjectRelationProxy
|
||||
from ietf.doc.utils import get_tags_for_stream_id
|
||||
return AnnotationTagObjectRelationProxy.objects.filter(document=draft.pk, slug__in=get_tags_for_stream_id(draft.stream_id))
|
||||
|
||||
ctype = ContentType.objects.get_for_model(draft)
|
||||
tags = AnnotationTagObjectRelation.objects.filter(content_type=ctype, content_id=draft.pk)
|
||||
return tags
|
||||
|
||||
|
||||
def get_state_for_draft(draft):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
return draft.get_state("draft-stream-%s" % draft.stream_id)
|
||||
return get_state(draft)
|
||||
|
||||
|
||||
def get_state_by_name(state_name):
|
||||
try:
|
||||
return State.objects.get(used=True, name=state_name)
|
||||
except State.DoesNotExist:
|
||||
return None
|
||||
|
||||
|
||||
def get_annotation_tag_by_name(tag_name):
|
||||
try:
|
||||
return AnnotationTag.objects.get(name=tag_name)
|
||||
except AnnotationTag.DoesNotExist:
|
||||
return None
|
||||
|
||||
|
||||
def set_tag(obj, tag):
|
||||
ctype = ContentType.objects.get_for_model(obj)
|
||||
(relation, created) = AnnotationTagObjectRelation.objects.get_or_create(
|
||||
content_type=ctype,
|
||||
content_id=obj.pk,
|
||||
annotation_tag=tag)
|
||||
return relation
|
||||
|
||||
|
||||
def set_tag_by_name(obj, tag_name):
|
||||
try:
|
||||
tag = AnnotationTag.objects.get(name=tag_name)
|
||||
return set_tag(obj, tag)
|
||||
except AnnotationTag.DoesNotExist:
|
||||
return None
|
||||
|
||||
|
||||
def reset_tag(obj, tag):
|
||||
ctype = ContentType.objects.get_for_model(obj)
|
||||
try:
|
||||
tag_relation = AnnotationTagObjectRelation.objects.get(
|
||||
content_type=ctype,
|
||||
content_id=obj.pk,
|
||||
annotation_tag=tag)
|
||||
tag_relation.delete()
|
||||
return True
|
||||
except AnnotationTagObjectRelation.DoesNotExist:
|
||||
return False
|
||||
|
||||
|
||||
def reset_tag_by_name(obj, tag_name):
|
||||
try:
|
||||
tag = AnnotationTag.objects.get(name=tag_name)
|
||||
return reset_tag(obj, tag)
|
||||
except AnnotationTag.DoesNotExist:
|
||||
return False
|
||||
|
||||
|
||||
def set_state_for_draft(draft, state, estimated_date=None):
|
||||
workflow = get_workflow_for_draft(draft)
|
||||
if state in workflow.get_states():
|
||||
set_state(draft, state)
|
||||
relation = StateObjectRelation.objects.get(
|
||||
content_type=ContentType.objects.get_for_model(draft),
|
||||
content_id=draft.pk)
|
||||
metadata = StateObjectRelationMetadata.objects.get_or_create(relation=relation)[0]
|
||||
metadata.from_date = datetime.date.today()
|
||||
metadata.to_date = estimated_date
|
||||
metadata.save()
|
||||
return state
|
||||
return False
|
||||
|
||||
|
||||
def notify_entry(entry, template, extra_notify=[]):
|
||||
doc = entry.content
|
||||
wg = doc.group.ietfwg
|
||||
mail_list = set(['%s <%s>' % i.person.email() for i in wg.wgchair_set.all() if i.person.email()])
|
||||
mail_list = mail_list.union(['%s <%s>' % i.person.email() for i in wg.wgdelegate_set.all() if i.person.email()])
|
||||
mail_list = mail_list.union(['%s <%s>' % i.person.email() for i in doc.authors.all() if i.person.email()])
|
||||
mail_list = mail_list.union(extra_notify)
|
||||
mail_list = list(mail_list)
|
||||
|
||||
subject = 'Annotation tags have changed for draft %s' % doc
|
||||
body = render_to_string(template, {'doc': doc,
|
||||
'entry': entry,
|
||||
})
|
||||
mail = EmailMessage(subject=subject,
|
||||
body=body,
|
||||
to=mail_list,
|
||||
from_email=settings.DEFAULT_FROM_EMAIL)
|
||||
# Only send emails if we are not debug mode
|
||||
if not settings.DEBUG:
|
||||
mail.send()
|
||||
return mail
|
||||
|
||||
|
||||
def notify_tag_entry(entry, extra_notify=[]):
|
||||
return notify_entry(entry, 'ietfworkflows/annotation_tags_updated_mail.txt', extra_notify)
|
||||
|
||||
|
||||
def notify_state_entry(entry, extra_notify=[]):
|
||||
return notify_entry(entry, 'ietfworkflows/state_updated_mail.txt', extra_notify)
|
||||
|
||||
|
||||
def notify_stream_entry(entry, extra_notify=[]):
|
||||
return notify_entry(entry, 'ietfworkflows/stream_updated_mail.txt', extra_notify)
|
||||
|
||||
def get_notification_receivers(doc, extra_notify):
|
||||
persons = set()
|
||||
res = []
|
||||
for r in Role.objects.filter(group=doc.group, name__in=("chair", "delegate")):
|
||||
res.append(u'"%s" <%s>' % (r.person.plain_name(), r.email.address))
|
||||
persons.add(r.person)
|
||||
|
||||
for email in doc.authors.all():
|
||||
if email.person not in persons:
|
||||
res.append(email.formatted_email())
|
||||
persons.add(email.person)
|
||||
|
||||
for x in extra_notify:
|
||||
if not x in res:
|
||||
res.append(x)
|
||||
|
||||
return res
|
||||
|
||||
def get_pubreq_receivers(doc, extra_notify):
|
||||
res = [u'"IESG Secretary" <iesg-secretary@ietf.org>', ]
|
||||
|
||||
for r in Role.objects.filter(person=doc.group.ad,name__slug='ad'):
|
||||
res.append(u'"%s" <%s>' % (r.person.plain_name(), r.email.address))
|
||||
|
||||
for x in extra_notify:
|
||||
if not x in res:
|
||||
res.append(x)
|
||||
|
||||
return res
|
||||
|
||||
def get_pubreq_cc_receivers(doc):
|
||||
res = []
|
||||
|
||||
for r in Role.objects.filter(group=doc.group, name__in=("chair", "delegate")):
|
||||
res.append(u'"%s" <%s>' % (r.person.plain_name(), r.email.address))
|
||||
|
||||
return res
|
||||
|
||||
def update_tags(request, obj, comment, person, set_tags=[], reset_tags=[], extra_notify=[]):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
doc = Document.objects.get(pk=obj.pk)
|
||||
save_document_in_history(doc)
|
||||
|
||||
obj.tags.remove(*reset_tags)
|
||||
obj.tags.add(*set_tags)
|
||||
|
||||
doc.time = datetime.datetime.now()
|
||||
|
||||
e = DocEvent(type="changed_document", time=doc.time, by=person, doc=doc)
|
||||
l = []
|
||||
if set_tags:
|
||||
l.append(u"Annotation tag%s %s set." % (pluralize(set_tags), ", ".join(x.name for x in set_tags)))
|
||||
if reset_tags:
|
||||
l.append(u"Annotation tag%s %s cleared." % (pluralize(reset_tags), ", ".join(x.name for x in reset_tags)))
|
||||
e.desc = " ".join(l)
|
||||
e.save()
|
||||
|
||||
receivers = get_notification_receivers(doc, extra_notify)
|
||||
send_mail(request, receivers, settings.DEFAULT_FROM_EMAIL,
|
||||
u"Annotations tags changed for draft %s" % doc.name,
|
||||
'ietfworkflows/annotation_tags_updated_mail.txt',
|
||||
dict(doc=doc,
|
||||
entry=dict(setted=", ".join(x.name for x in set_tags),
|
||||
unsetted=", ".join(x.name for x in reset_tags),
|
||||
change_date=doc.time,
|
||||
person=person,
|
||||
comment=comment)))
|
||||
return
|
||||
|
||||
ctype = ContentType.objects.get_for_model(obj)
|
||||
setted = []
|
||||
resetted = []
|
||||
for tag in set_tags:
|
||||
if isinstance(tag, basestring):
|
||||
if set_tag_by_name(obj, tag):
|
||||
setted.append(tag)
|
||||
else:
|
||||
if set_tag(obj, tag):
|
||||
setted.append(tag.name)
|
||||
for tag in reset_tags:
|
||||
if isinstance(tag, basestring):
|
||||
if reset_tag_by_name(obj, tag):
|
||||
resetted.append(tag)
|
||||
else:
|
||||
if reset_tag(obj, tag):
|
||||
resetted.append(tag.name)
|
||||
entry = ObjectAnnotationTagHistoryEntry.objects.create(
|
||||
content_type=ctype,
|
||||
content_id=obj.pk,
|
||||
setted=','.join(setted),
|
||||
unsetted=','.join(resetted),
|
||||
date=datetime.datetime.now(),
|
||||
comment=comment,
|
||||
person=person)
|
||||
notify_tag_entry(entry, extra_notify)
|
||||
|
||||
|
||||
def update_state(request, doc, comment, person, to_state, estimated_date=None, extra_notify=[]):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
doc = Document.objects.get(pk=doc.pk)
|
||||
save_document_in_history(doc)
|
||||
|
||||
doc.time = datetime.datetime.now()
|
||||
from_state = doc.get_state("draft-stream-%s" % doc.stream_id)
|
||||
doc.set_state(to_state)
|
||||
|
||||
e = DocEvent(type="changed_document", time=doc.time, by=person, doc=doc)
|
||||
e.desc = u"%s changed to <b>%s</b> from %s" % (to_state.type.label, to_state, from_state)
|
||||
e.save()
|
||||
|
||||
# reminder
|
||||
reminder_type = DocReminderTypeName.objects.get(slug="stream-s")
|
||||
try:
|
||||
reminder = DocReminder.objects.get(event__doc=doc, type=reminder_type,
|
||||
active=True)
|
||||
except DocReminder.DoesNotExist:
|
||||
reminder = None
|
||||
|
||||
if estimated_date:
|
||||
if not reminder:
|
||||
reminder = DocReminder(type=reminder_type)
|
||||
|
||||
reminder.event = e
|
||||
reminder.due = estimated_date
|
||||
reminder.active = True
|
||||
reminder.save()
|
||||
elif reminder:
|
||||
reminder.active = False
|
||||
reminder.save()
|
||||
|
||||
receivers = get_notification_receivers(doc, extra_notify)
|
||||
send_mail(request, receivers, settings.DEFAULT_FROM_EMAIL,
|
||||
u"State changed for draft %s" % doc.name,
|
||||
'ietfworkflows/state_updated_mail.txt',
|
||||
dict(doc=doc,
|
||||
entry=dict(from_state=from_state,
|
||||
to_state=to_state,
|
||||
transition_date=doc.time,
|
||||
person=person,
|
||||
comment=comment)))
|
||||
|
||||
if (to_state.slug=='sub-pub'):
|
||||
receivers = get_pubreq_receivers(doc, extra_notify)
|
||||
cc_receivers = get_pubreq_cc_receivers(doc)
|
||||
|
||||
send_mail(request, receivers, settings.DEFAULT_FROM_EMAIL,
|
||||
u"Publication has been requested for draft %s" % doc.name,
|
||||
'ietfworkflows/state_updated_mail.txt',
|
||||
dict(doc=doc,
|
||||
entry=dict(from_state=from_state,
|
||||
to_state=to_state,
|
||||
transition_date=doc.time,
|
||||
person=person,
|
||||
comment=comment)), cc=cc_receivers)
|
||||
|
||||
return
|
||||
|
||||
ctype = ContentType.objects.get_for_model(doc)
|
||||
from_state = get_state_for_draft(doc)
|
||||
to_state = set_state_for_draft(doc, to_state, estimated_date)
|
||||
if not to_state:
|
||||
return False
|
||||
entry = ObjectWorkflowHistoryEntry.objects.create(
|
||||
content_type=ctype,
|
||||
content_id=doc.pk,
|
||||
from_state=from_state and from_state.name or '',
|
||||
to_state=to_state and to_state.name or '',
|
||||
date=datetime.datetime.now(),
|
||||
comment=comment,
|
||||
person=person)
|
||||
notify_state_entry(entry, extra_notify)
|
||||
|
||||
|
||||
def update_stream(request, doc, comment, person, to_stream, extra_notify=[]):
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
doc = Document.objects.get(pk=doc.pk)
|
||||
save_document_in_history(doc)
|
||||
|
||||
doc.time = datetime.datetime.now()
|
||||
from_stream = doc.stream
|
||||
doc.stream = to_stream
|
||||
doc.save()
|
||||
|
||||
e = DocEvent(type="changed_stream", time=doc.time, by=person, doc=doc)
|
||||
e.desc = u"Stream changed to <b>%s</b>" % to_stream.name
|
||||
if from_stream:
|
||||
e.desc += u"from %s" % from_stream.name
|
||||
e.save()
|
||||
|
||||
receivers = get_notification_receivers(doc, extra_notify)
|
||||
send_mail(request, receivers, settings.DEFAULT_FROM_EMAIL,
|
||||
u"Stream changed for draft %s" % doc.name,
|
||||
'ietfworkflows/stream_updated_mail.txt',
|
||||
dict(doc=doc,
|
||||
entry=dict(from_stream=from_stream,
|
||||
to_stream=to_stream,
|
||||
transition_date=doc.time,
|
||||
person=person,
|
||||
comment=comment)))
|
||||
return
|
||||
|
||||
ctype = ContentType.objects.get_for_model(doc)
|
||||
from_stream = get_stream_from_draft(doc)
|
||||
to_stream = set_stream_for_draft(doc, to_stream)
|
||||
entry = ObjectStreamHistoryEntry.objects.create(
|
||||
content_type=ctype,
|
||||
content_id=doc.pk,
|
||||
from_stream=from_stream and from_stream.name or '',
|
||||
to_stream=to_stream and to_stream.name or '',
|
||||
date=datetime.datetime.now(),
|
||||
comment=comment,
|
||||
person=person)
|
||||
notify_stream_entry(entry, extra_notify)
|
||||
|
||||
|
||||
def get_full_info_for_draft(draft):
|
||||
return dict(
|
||||
streamed=get_streamed_draft(draft),
|
||||
stream=get_stream_from_draft(draft),
|
||||
workflow=get_workflow_for_draft(draft),
|
||||
tags=[i.annotation_tag for i in get_annotation_tags_for_draft(draft)],
|
||||
state=get_state_for_draft(draft),
|
||||
shepherd=draft.shepherd if draft.shepherd_id else None,
|
||||
)
|
|
@ -1,150 +0,0 @@
|
|||
from django.http import HttpResponseRedirect, HttpResponseForbidden
|
||||
from django.shortcuts import get_object_or_404, render_to_response
|
||||
from django.template import RequestContext
|
||||
from django.conf import settings
|
||||
from django.core.urlresolvers import reverse as urlreverse
|
||||
|
||||
from ietf.idtracker.models import InternetDraft
|
||||
from ietf.ietfworkflows.models import Stream, StreamDelegate
|
||||
from ietf.ietfworkflows.forms import (DraftTagsStateForm,
|
||||
NoWorkflowStateForm,
|
||||
StreamDelegatesForm)
|
||||
from ietf.ietfworkflows.streams import (get_stream_from_draft,
|
||||
get_streamed_draft)
|
||||
from ietf.ietfworkflows.utils import (get_workflow_history_for_draft,
|
||||
get_workflow_for_draft,
|
||||
get_annotation_tags_for_draft,
|
||||
get_state_for_draft)
|
||||
from ietf.ietfworkflows.accounts import (can_edit_state, can_edit_stream,
|
||||
is_chair_of_stream, can_adopt)
|
||||
from ietf.doc.utils import get_tags_for_stream_id
|
||||
from ietf.name.models import DocTagName
|
||||
from ietf.group.utils import save_group_in_history
|
||||
from ietf.group.models import Group, Role
|
||||
|
||||
|
||||
REDUCED_HISTORY_LEN = 20
|
||||
|
||||
|
||||
def stream_history(request, name):
|
||||
draft = get_object_or_404(InternetDraft, filename=name)
|
||||
streamed = get_streamed_draft(draft)
|
||||
stream = get_stream_from_draft(draft)
|
||||
workflow = get_workflow_for_draft(draft)
|
||||
tags = []
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
used = list(draft.tags.all())
|
||||
tags = DocTagName.objects.filter(slug__in=get_tags_for_stream_id(draft.stream_id))
|
||||
for t in tags:
|
||||
t.setted = t.slug in used
|
||||
else:
|
||||
if workflow:
|
||||
tags_setted = [i.annotation_tag.pk for i in get_annotation_tags_for_draft(draft)]
|
||||
for tag in workflow.get_tags():
|
||||
tag.setted = tag.pk in tags_setted
|
||||
tags.append(tag)
|
||||
state = get_state_for_draft(draft)
|
||||
history = get_workflow_history_for_draft(draft)
|
||||
show_more = False
|
||||
if len(history) > REDUCED_HISTORY_LEN:
|
||||
show_more = True
|
||||
|
||||
return render_to_response('ietfworkflows/stream_history.html',
|
||||
{'stream': stream,
|
||||
'streamed': streamed,
|
||||
'draft': draft,
|
||||
'tags': tags,
|
||||
'state': state,
|
||||
'workflow': workflow,
|
||||
'show_more': show_more,
|
||||
'history': history[:REDUCED_HISTORY_LEN],
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def _edit_draft_stream(request, draft, form_class=DraftTagsStateForm):
|
||||
user = request.user
|
||||
workflow = get_workflow_for_draft(draft)
|
||||
if not workflow and form_class == DraftTagsStateForm:
|
||||
form_class = NoWorkflowStateForm
|
||||
if request.method == 'POST':
|
||||
form = form_class(user=user, draft=draft, data=request.POST)
|
||||
form.request = request
|
||||
if request.POST.get("cancel",""):
|
||||
return HttpResponseRedirect(draft.get_absolute_url())
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
|
||||
# This behavior surprises folks. Let's try running awhile without it.
|
||||
#if form_class == NoWorkflowStateForm and settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
# return HttpResponseRedirect(urlreverse('ietf.ietfworkflows.views.edit_state', kwargs={ 'name': draft.filename } ))
|
||||
|
||||
return HttpResponseRedirect(draft.get_absolute_url())
|
||||
else:
|
||||
form = form_class(user=user, draft=draft)
|
||||
form.request = request
|
||||
state = get_state_for_draft(draft)
|
||||
stream = get_stream_from_draft(draft)
|
||||
history = get_workflow_history_for_draft(draft, 'objectworkflowhistoryentry')
|
||||
tags = get_annotation_tags_for_draft(draft)
|
||||
milestones = draft.groupmilestone_set.all()
|
||||
return render_to_response('ietfworkflows/state_edit.html',
|
||||
{'draft': draft,
|
||||
'state': state,
|
||||
'stream': stream,
|
||||
'workflow': workflow,
|
||||
'history': history,
|
||||
'tags': tags,
|
||||
'form': form,
|
||||
'milestones': milestones,
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
# these three views are reusing the same view really, which apart from
|
||||
# being somewhat obscure means that there are subtle bugs (like the
|
||||
# title being wrong) - would probably be better to switch to a model
|
||||
# where each part is edited on its own, we come from an overview page
|
||||
# anyway, so there's not a big win in putting in a common
|
||||
# overview/edit page here
|
||||
def edit_adopt(request, name):
|
||||
draft = get_object_or_404(InternetDraft, filename=name)
|
||||
if not can_adopt(request.user, draft):
|
||||
return HttpResponseForbidden("You don't have permission to access this view")
|
||||
return _edit_draft_stream(request, draft, NoWorkflowStateForm)
|
||||
|
||||
def edit_state(request, name):
|
||||
draft = get_object_or_404(InternetDraft, filename=name, stream__isnull=False)
|
||||
if not can_edit_state(request.user, draft, ):
|
||||
return HttpResponseForbidden("You don't have permission to access this view")
|
||||
return _edit_draft_stream(request, draft, DraftTagsStateForm)
|
||||
|
||||
|
||||
|
||||
def stream_delegates(request, stream_name):
|
||||
stream = get_object_or_404(Stream, name=stream_name)
|
||||
if not is_chair_of_stream(request.user, stream):
|
||||
return HttpResponseForbidden('You have no permission to access this view')
|
||||
chairs = stream.get_chairs()
|
||||
form = StreamDelegatesForm(stream=stream)
|
||||
if request.method == 'POST':
|
||||
if request.POST.get('delete', False):
|
||||
pk_list = request.POST.getlist('remove_delegate')
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
stream_group = Group.objects.get(acronym=stream.slug)
|
||||
save_group_in_history(stream_group)
|
||||
Role.objects.filter(person__in=pk_list, group=stream_group, name="delegate").delete()
|
||||
else:
|
||||
StreamDelegate.objects.filter(stream=stream, person__pk__in=pk_list).delete()
|
||||
else:
|
||||
form = StreamDelegatesForm(request.POST, stream=stream)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
form = StreamDelegatesForm(stream=stream)
|
||||
delegates = stream.get_delegates()
|
||||
return render_to_response('ietfworkflows/stream_delegates.html',
|
||||
{'stream': stream,
|
||||
'chairs': chairs,
|
||||
'delegates': delegates,
|
||||
'form': form,
|
||||
},
|
||||
context_instance=RequestContext(request))
|
|
@ -175,7 +175,6 @@ INSTALLED_APPS = (
|
|||
'ietf.idrfc',
|
||||
'ietf.wginfo',
|
||||
'ietf.submit',
|
||||
'ietf.ietfworkflows',
|
||||
'ietf.wgcharter',
|
||||
'ietf.sync',
|
||||
'ietf.community',
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
{% autoescape off %}
|
||||
The annotation tags of document {{ doc }} have been updated. See more information below.
|
||||
|
||||
Annotation tags set: {{ entry.setted }}
|
||||
Annotation tags reset: {{ entry.unsetted }}
|
||||
Date of the change: {{ entry.change_date }}
|
||||
Author of the change: {{ entry.person }}
|
||||
|
||||
Comment:
|
||||
{{ entry.comment }}
|
||||
{% endautoescape %}
|
|
@ -1,6 +0,0 @@
|
|||
<div style="margin-bottom: 1em;">
|
||||
{% for action_name, url in actions %}
|
||||
{% if not forloop.first %} | {% endif%} <a href="{{ url}}">{{ action_name }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
<form action="" method="post">
|
||||
<table class="ietf-table edit-form" style="width: 100%;">
|
||||
<tr>
|
||||
<th>Adopt this draft in your group</th>
|
||||
</tr>
|
||||
<tr style="vertical-align: top;"><td style="width: 50%;">
|
||||
<div class="field{% if form.errors.comment %} error{% endif %}">
|
||||
{{ form.comment.errors }}
|
||||
Comment: <br/>
|
||||
<textarea name="comment">{{ form.data.comment }}</textarea>
|
||||
</div>
|
||||
<div class="field{% if form.errors.weeks %} error{% endif %}">
|
||||
{{ form.weeks.errors }}
|
||||
Estimated time in 'Call for Adoption by WG/RG Issued': <input type="text" name="weeks" value="{{ form.data.weeks }}" /> (in weeks)
|
||||
</div>
|
||||
<div class="field{% if form.errors.group %} error{% endif %}">
|
||||
Adopt in Group: {{ form.group }}
|
||||
{{ form.group.errors }}
|
||||
</div>
|
||||
<input type="submit" name="change" value="Call for adoption" />
|
||||
</td></tr>
|
||||
</table>
|
||||
</form>
|
|
@ -1,51 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
{% load ietf_streams %}
|
||||
|
||||
{% block morecss %}
|
||||
table.state-history p { margin: 0px; }
|
||||
table.edit-form ul { padding: 0px; list-style-type: none; margin: 0px; margin-bottom: 2em; }
|
||||
table.edit-form ul li, table.edit-form div.free-change { padding: 0px 2em; }
|
||||
table.edit-form ul li.evenrow { background-color: #edf5ff; }
|
||||
table.edit-form textarea { width: 95%; height: 120px; }
|
||||
table.edit-form span.required { color: red; }
|
||||
table.edit-form ul.errorlist { border-width: 0px; padding: 0px; margin: 0px;}
|
||||
table.edit-form ul.errorlist li { color: red; margin: 0px; padding: 0px;}
|
||||
table.edit-form div.field { margin: 1em 0px; }
|
||||
table.edit-form div.submit-row { margin: 0px 2em; }
|
||||
table.edit-form div.error { border: 1px solid red; background-color: #ffeebb; padding: 5px 10px; }
|
||||
table.edit-form-tags tr { vertical-align: top; }
|
||||
table.edit-form-tags textarea { height: 200px; }
|
||||
table.edit-form-tags ul { border-width: 0px; padding: 0px 2em; }
|
||||
table.edit-form-tags ul li { padding: 0px; }
|
||||
|
||||
#new-edit-form { clear:both; padding-top: 1em; }
|
||||
#new-edit-form th { padding-left:0; max-width: 8em;}
|
||||
#new-edit-form #id_comment { width: 30em; height: 5em; }
|
||||
#new-edit-form #id_weeks { width: 2em;}
|
||||
#new-edit-form ul {list-style-type: none; padding-left:0; margin-top:0; margin-bottom:0; }
|
||||
.rec-state-header { float:left; padding-left:2px; padding-right:.5em; }
|
||||
.rec-statelist {list-style-type: none; padding-left:0; margin-top:0; margin-bottom:0; }
|
||||
.rec-state { float:left; padding-right:.5em; }
|
||||
|
||||
{% endblock morecss %}
|
||||
|
||||
{% block title %}Change state for {{ draft }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Change state for {{ draft }}</h1>
|
||||
|
||||
{% if state and state.slug == "wg-doc" and not milestones %}
|
||||
<p>This document is not part of any milestone. You may wish to <a href="{% url wg_edit_milestones acronym=draft.group.acronym %}">add it to one</a>.</p>
|
||||
{% endif %}
|
||||
|
||||
{% if state and state.slug == "sub-pub" and milestones %}
|
||||
<p>This document is part of {% if milestones|length > 1 %}{{ milestones|length }}
|
||||
milestones{% else %}a milestone{% endif %}. Now that the draft is
|
||||
submitted to IESG for publication, you may wish to
|
||||
<a href="{% url wg_edit_milestones acronym=draft.group.acronym %}">update the
|
||||
milestone{{ milestones|pluralize }}</a>.</p>
|
||||
{% endif %}
|
||||
|
||||
{{ form }}
|
||||
|
||||
{% endblock %}
|
|
@ -1,32 +0,0 @@
|
|||
<form action="" method="post">
|
||||
|
||||
<div class="rec-states">
|
||||
{% with form.get_next_states as next_states %}
|
||||
{% if next_states %}
|
||||
<span class="rec-state-header">Recommended next state{{next_states|pluralize}}:</span>
|
||||
<ul class="rec-statelist">
|
||||
{% for state in next_states %}
|
||||
<li class="rec-state">'{{ state.name }}'{% if not forloop.last %}, {% endif %}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
</div>
|
||||
|
||||
<table id="new-edit-form">
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
<th>{{ field.label_tag }}:</th>
|
||||
<td>{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
|
||||
{{ field.errors }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
<div class="actions">
|
||||
<input type="submit" name="save" value="Save" />
|
||||
<input type="submit" name="cancel" value="Cancel" />
|
||||
</div>
|
||||
</form>
|
|
@ -1,11 +0,0 @@
|
|||
{% autoescape off %}
|
||||
The state of document {{ doc }} has been updated. See more information below.
|
||||
|
||||
Previous state: {{ entry.from_state }}
|
||||
Current state: {{ entry.to_state }}
|
||||
Transition date: {{ entry.transition_date }}
|
||||
Author of the change: {{ entry.person }}
|
||||
|
||||
Comment:
|
||||
{{ entry.comment }}
|
||||
{% endautoescape %}
|
|
@ -1,43 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
{% load ietf_streams ietf_filters %}
|
||||
|
||||
{% block title %}Manage delegates for {{ stream.name }} stream{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Stream: {{ stream.name }}</h1>
|
||||
|
||||
{% if chairs %}
|
||||
<h2>{{ stream.name }} stream chairs</h2>
|
||||
<table class="ietf-table">
|
||||
<tr><th>Name</th><th>Email</th></tr>
|
||||
{% for chair in chairs %}
|
||||
<tr class="{% cycle "oddrow" "evenrow" %}"><td>{{ chair }}</td><td>{{ chair.email.0 }} <{{ chair.email.1 }}></td></tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endif %}
|
||||
|
||||
<h2>{{ stream.name }} stream delegates</h2>
|
||||
<form action="" method="POST">
|
||||
{% if delegates %}
|
||||
<table class="ietf-table">
|
||||
<tr><th></th><th>Name</th><th>Email</th></tr>
|
||||
{% for delegate in delegates %}
|
||||
<tr class="{% cycle "oddrow" "evenrow" %}"><td><input type="checkbox" name="remove_delegate" value="{{ delegate.pk }}" /></td><td>{{ delegate }}</td><td>{{ delegate.email.0 }} <{{ delegate.email.1 }}></td></tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
<p>
|
||||
<input type="submit" value="Remove selected delegates" name="delete" />
|
||||
</p>
|
||||
{% else %}
|
||||
<p>
|
||||
No delegates for {{ stream.name }} stream assigned.
|
||||
</p>
|
||||
{% endif %}
|
||||
<p>
|
||||
Enter a valid e-mail address to add a new delegate.
|
||||
</p>
|
||||
{% if form.errors.email %}{{ form.errors.email }}{% endif %}
|
||||
{{ form.email }}
|
||||
<input type="submit" value="Add new delegate" />
|
||||
</form>
|
||||
{% endblock %}
|
|
@ -1,22 +0,0 @@
|
|||
<form action="" method="post">
|
||||
<table class="ietf-table edit-form" style="width: 100%;">
|
||||
<tr>
|
||||
<th>Select the new stream</th>
|
||||
</tr>
|
||||
<tr><td>
|
||||
<div class="field{% if form.comment.errors %} error{% endif %}">
|
||||
{{ form.comment.errors }}
|
||||
Comment: <span class="required">*</span><br />
|
||||
<textarea name="comment">{{ form.data.comment }}</textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="field{% if form.stream.errors %} error{% endif %}">
|
||||
{{ form.stream.errors }}
|
||||
{{ form.stream }} <input type="submit" value="Change stream" />
|
||||
</div>
|
||||
</td></tr>
|
||||
</table>
|
||||
</form>
|
|
@ -1,44 +0,0 @@
|
|||
{% load ietf_streams %}
|
||||
<table class="ietf-ballot ietf-stream">
|
||||
<tr>
|
||||
<td class="left">
|
||||
{% if workflow %}
|
||||
<ul class="ietf-stream-tag-list">
|
||||
{% for tag in tags %}
|
||||
<li{% if tag.setted %} class="tag_set"{% endif %}>{{ tag }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="right">
|
||||
<div class="ietf-stream-head">
|
||||
{% if stream %}
|
||||
<h2>
|
||||
{{ stream|default:"Without stream" }}{% if stream.with_groups and streamed.group %} :: {{ streamed.group|default:"" }}{% endif %}
|
||||
</h2>
|
||||
<h3>Current state: {{ state|default:"None" }}</h3>
|
||||
{% else %}
|
||||
<h2>Without stream</h2>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if history %}
|
||||
<div class="ietf-stream-history">
|
||||
{% if show_more %}
|
||||
<p> Viewing the last 20 entries. <a href="">Show full log</a>.</p>
|
||||
{% endif %}
|
||||
{% for entry in history %}
|
||||
{% workflow_history_entry entry %}
|
||||
{% endfor %}
|
||||
{% if show_more %}
|
||||
<p> Viewing the last 20 entries. <a href="">Show full log</a>.</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% else %}
|
||||
<p>
|
||||
There is no stream history for this document.
|
||||
</p>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
|
@ -1,11 +0,0 @@
|
|||
{% if draft %}
|
||||
<div class="stream_state">
|
||||
<div class="stream_state_more" style="float: left; margin: 1px 0.5em 0 0;"><a href="{% url stream_history draft.filename %}" class="show_stream_info" title="Stream information for {{ draft.filename }}" style="text-decoration: none; color:transparent; margin: 0; padding: 0; border: 0;"><img src="/images/plus.png" style="margin: 0; padding: 0; border:0;"></img></a></div>
|
||||
{% if stream %}
|
||||
{% if state %}{{ state.name }}{% else %}{{ stream }}{% endif %}
|
||||
{% if milestones %}{% for m in milestones %}<span title="Included in milestone: {{ m.desc }}" class="milestone">{{ m.due|date:"M Y" }}</span>{% endfor %}{% endif %}
|
||||
{% else %}
|
||||
No stream assigned
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
|
@ -1,10 +0,0 @@
|
|||
{% if doc %}
|
||||
<div class="stream_state">
|
||||
<div class="stream_state_more" style="float: left; margin: 1px 0.5em 0 0;"><a href="{% url stream_history doc.name %}" class="show_stream_info" title="Stream information for {{ doc.name }}" style="text-decoration: none; color:transparent; margin: 0; padding: 0; border: 0;"><img src="/images/plus.png" style="margin: 0; padding: 0; border:0;"></img></a></div>
|
||||
{% if stream %}
|
||||
{% if state %}{{ state.name }}{% else %}{{ stream }}{% endif %}
|
||||
{% else %}
|
||||
No stream assigned
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
|
@ -1,11 +0,0 @@
|
|||
{% autoescape off %}
|
||||
The stream of document {{ doc }} has been updated. See more information below.
|
||||
|
||||
Previous stream: {{ entry.from_stream }}
|
||||
Current stream: {{ entry.to_stream }}
|
||||
Transition date: {{ entry.transition_date }}
|
||||
Author of the change: {{ entry.person }}
|
||||
|
||||
Comment:
|
||||
{{ entry.comment }}
|
||||
{% endautoescape %}
|
|
@ -1,22 +0,0 @@
|
|||
<form action="" method="post">
|
||||
<table class="ietf-table edit-form edit-form-tags" style="width: 100%;">
|
||||
<tr>
|
||||
<th>1. Input information about change</th>
|
||||
<th>2. Select annotation tags</th>
|
||||
</tr>
|
||||
<tr><td style="width: 50%;">
|
||||
<div class="field comment{% if form.errors.comment %} error{% endif %}">
|
||||
{{ form.errors.comment }}
|
||||
Comment: <span class="required">*</span><br />
|
||||
<textarea name="comment">{{ form.data.comment }}</textarea>
|
||||
</div>
|
||||
</td><td style="padding: 0px; vertical-align: top;">
|
||||
<div class="field">
|
||||
{{ form.tags }}
|
||||
</div>
|
||||
<div class="submit-row">
|
||||
<input type="submit" value="Edit tags" />
|
||||
</div>
|
||||
</td></tr>
|
||||
</table>
|
||||
</form>
|
|
@ -1,12 +0,0 @@
|
|||
<div class="workflow-history-entry workflow-history-entry-{{ entry_class }}">
|
||||
<div class="entry-title">
|
||||
<span class="entry-date">{{ entry.date }}</span>
|
||||
{{ entry.person }}
|
||||
</div>
|
||||
<div class="entry-action">
|
||||
{{ entry.describe_change|safe|linebreaks }}
|
||||
</div>
|
||||
<div class="entry-comment">
|
||||
{{ entry.comment }}
|
||||
</div>
|
||||
</pre>
|
Loading…
Reference in a new issue