From 050929a56d798fe5523fca2a836e7d442a51ea45 Mon Sep 17 00:00:00 2001 From: Ole Laursen Date: Sat, 28 Sep 2013 19:48:48 +0000 Subject: [PATCH] Remove ietfworkflows which is now obsolete - Legacy-Id: 6297 --- ietf/doc/views_draft.py | 4 +- ietf/ietfworkflows/.gitignore | 1 - ietf/ietfworkflows/__init__.py | 18 - ietf/ietfworkflows/accounts.py | 132 ---- ietf/ietfworkflows/constants.py | 13 - ietf/ietfworkflows/fixtures/.gitignore | 1 - ietf/ietfworkflows/fixtures/initial_data.xml | 686 ------------------ ietf/ietfworkflows/forms.py | 350 --------- ietf/ietfworkflows/migrations/.gitignore | 1 - ietf/ietfworkflows/migrations/0001_initial.py | 148 ---- .../0002_add_selected_states_and_tags.py | 107 --- .../migrations/0003_add_person_to_history.py | 119 --- .../migrations/0004_add_object_state_dates.py | 132 ---- .../migrations/0005_add_streams.py | 209 ------ .../0006_add_group_to_streamed_id.py | 198 ----- .../migrations/0007_do_stream_optional.py | 194 ----- .../0008_refactor_history_entries.py | 267 ------- .../0009_allow_null_in_from_date.py | 197 ----- .../migrations/0010_add_state_definitions.py | 207 ------ .../0011_remove_group_from_stream.py | 205 ------ .../0012_refactor_stream_group_descrition.py | 222 ------ .../migrations/0013_add_stream_delegates.py | 208 ------ .../0014_change_alt_streams_states.py | 234 ------ ietf/ietfworkflows/migrations/__init__.py | 0 ietf/ietfworkflows/models.py | 268 ------- ietf/ietfworkflows/streams.py | 102 --- ietf/ietfworkflows/templatetags/.gitignore | 1 - ietf/ietfworkflows/templatetags/__init__.py | 0 .../templatetags/ietf_streams.py | 112 --- .../templatetags/ietf_streams_redesign.py | 102 --- ietf/ietfworkflows/tests.py | 188 ----- ietf/ietfworkflows/urls.py | 13 - ietf/ietfworkflows/utils.py | 466 ------------ ietf/ietfworkflows/views.py | 150 ---- ietf/settings.py | 1 - .../annotation_tags_updated_mail.txt | 11 - .../templates/ietfworkflows/edit_actions.html | 6 - .../ietfworkflows/noworkflow_state_form.html | 23 - ietf/templates/ietfworkflows/state_edit.html | 51 -- ietf/templates/ietfworkflows/state_form.html | 32 - .../ietfworkflows/state_updated_mail.txt | 11 - .../ietfworkflows/stream_delegates.html | 43 -- ietf/templates/ietfworkflows/stream_form.html | 22 - .../ietfworkflows/stream_history.html | 44 -- .../templates/ietfworkflows/stream_state.html | 11 - .../ietfworkflows/stream_state_redesign.html | 10 - .../ietfworkflows/stream_updated_mail.txt | 11 - ietf/templates/ietfworkflows/tags_form.html | 22 - .../ietfworkflows/workflow_history_entry.html | 12 - 49 files changed, 1 insertion(+), 5564 deletions(-) delete mode 100644 ietf/ietfworkflows/.gitignore delete mode 100644 ietf/ietfworkflows/__init__.py delete mode 100644 ietf/ietfworkflows/accounts.py delete mode 100644 ietf/ietfworkflows/constants.py delete mode 100644 ietf/ietfworkflows/fixtures/.gitignore delete mode 100644 ietf/ietfworkflows/fixtures/initial_data.xml delete mode 100644 ietf/ietfworkflows/forms.py delete mode 100644 ietf/ietfworkflows/migrations/.gitignore delete mode 100644 ietf/ietfworkflows/migrations/0001_initial.py delete mode 100644 ietf/ietfworkflows/migrations/0002_add_selected_states_and_tags.py delete mode 100644 ietf/ietfworkflows/migrations/0003_add_person_to_history.py delete mode 100644 ietf/ietfworkflows/migrations/0004_add_object_state_dates.py delete mode 100644 ietf/ietfworkflows/migrations/0005_add_streams.py delete mode 100644 ietf/ietfworkflows/migrations/0006_add_group_to_streamed_id.py delete mode 100644 ietf/ietfworkflows/migrations/0007_do_stream_optional.py delete mode 100644 ietf/ietfworkflows/migrations/0008_refactor_history_entries.py delete mode 100644 ietf/ietfworkflows/migrations/0009_allow_null_in_from_date.py delete mode 100644 ietf/ietfworkflows/migrations/0010_add_state_definitions.py delete mode 100644 ietf/ietfworkflows/migrations/0011_remove_group_from_stream.py delete mode 100644 ietf/ietfworkflows/migrations/0012_refactor_stream_group_descrition.py delete mode 100644 ietf/ietfworkflows/migrations/0013_add_stream_delegates.py delete mode 100644 ietf/ietfworkflows/migrations/0014_change_alt_streams_states.py delete mode 100644 ietf/ietfworkflows/migrations/__init__.py delete mode 100644 ietf/ietfworkflows/models.py delete mode 100644 ietf/ietfworkflows/streams.py delete mode 100644 ietf/ietfworkflows/templatetags/.gitignore delete mode 100644 ietf/ietfworkflows/templatetags/__init__.py delete mode 100644 ietf/ietfworkflows/templatetags/ietf_streams.py delete mode 100644 ietf/ietfworkflows/templatetags/ietf_streams_redesign.py delete mode 100644 ietf/ietfworkflows/tests.py delete mode 100644 ietf/ietfworkflows/urls.py delete mode 100644 ietf/ietfworkflows/utils.py delete mode 100644 ietf/ietfworkflows/views.py delete mode 100644 ietf/templates/ietfworkflows/annotation_tags_updated_mail.txt delete mode 100644 ietf/templates/ietfworkflows/edit_actions.html delete mode 100644 ietf/templates/ietfworkflows/noworkflow_state_form.html delete mode 100644 ietf/templates/ietfworkflows/state_edit.html delete mode 100644 ietf/templates/ietfworkflows/state_form.html delete mode 100644 ietf/templates/ietfworkflows/state_updated_mail.txt delete mode 100644 ietf/templates/ietfworkflows/stream_delegates.html delete mode 100644 ietf/templates/ietfworkflows/stream_form.html delete mode 100644 ietf/templates/ietfworkflows/stream_history.html delete mode 100644 ietf/templates/ietfworkflows/stream_state.html delete mode 100644 ietf/templates/ietfworkflows/stream_state_redesign.html delete mode 100644 ietf/templates/ietfworkflows/stream_updated_mail.txt delete mode 100644 ietf/templates/ietfworkflows/tags_form.html delete mode 100644 ietf/templates/ietfworkflows/workflow_history_entry.html diff --git a/ietf/doc/views_draft.py b/ietf/doc/views_draft.py index 5f5b864eb..b225b9e0b 100644 --- a/ietf/doc/views_draft.py +++ b/ietf/doc/views_draft.py @@ -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() diff --git a/ietf/ietfworkflows/.gitignore b/ietf/ietfworkflows/.gitignore deleted file mode 100644 index a74b07aee..000000000 --- a/ietf/ietfworkflows/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.pyc diff --git a/ietf/ietfworkflows/__init__.py b/ietf/ietfworkflows/__init__.py deleted file mode 100644 index e8d53c9a3..000000000 --- a/ietf/ietfworkflows/__init__.py +++ /dev/null @@ -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) - diff --git a/ietf/ietfworkflows/accounts.py b/ietf/ietfworkflows/accounts.py deleted file mode 100644 index 5928628c6..000000000 --- a/ietf/ietfworkflows/accounts.py +++ /dev/null @@ -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) - diff --git a/ietf/ietfworkflows/constants.py b/ietf/ietfworkflows/constants.py deleted file mode 100644 index d29a1164f..000000000 --- a/ietf/ietfworkflows/constants.py +++ /dev/null @@ -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' diff --git a/ietf/ietfworkflows/fixtures/.gitignore b/ietf/ietfworkflows/fixtures/.gitignore deleted file mode 100644 index a74b07aee..000000000 --- a/ietf/ietfworkflows/fixtures/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.pyc diff --git a/ietf/ietfworkflows/fixtures/initial_data.xml b/ietf/ietfworkflows/fixtures/initial_data.xml deleted file mode 100644 index 51e06c12f..000000000 --- a/ietf/ietfworkflows/fixtures/initial_data.xml +++ /dev/null @@ -1,686 +0,0 @@ - - - - Default WG Workflow - 11 - - - IAB Workflow - - - - IRTF Workflow - - - - ISE Workflow - - - - Active IAB Document - 2 - - - - Active RG Document - 3 - - - - Adopted by a WG - 1 - - - - Adopted for WG Info Only - 1 - - - - Approved by IAB, To Be Sent to RFC Editor - 2 - - - - Awaiting IRSG Reviews - 3 - - - - Call For Adoption By WG Issued - 1 - - - - Candidate IAB Document - 2 - - - - Candidate RG Document - 3 - - - - Community Review - 2 - - - - Dead IAB Document - 2 - - - - Dead IRTF Document - 3 - - - - Dead WG Document - 1 - - - - Document on Hold Based On IESG Request - 3 - - - - Document on Hold Based On IESG Request - 4 - - - - Finding Reviewers - 4 - - - - IAB Review - 2 - - - - In IESG Review - 3 - - - - In IESG Review - 4 - - - - In IRSG Poll - 3 - - - - In ISE Review - 4 - - - - In RG Last Call - 3 - - - - In WG Last Call - 1 - - - - No Longer In Independent Submission Stream - 4 - - - - Parked IAB Document - 2 - - - - Parked RG Document - 3 - - - - Parked WG Document - 1 - - - - Response to Review Needed - 4 - - - - Sent to a Different Organization for Publication - 2 - - - - Sent to the RFC Editor - 2 - - - - Sent to the RFC Editor - 4 - - - - Sent to the RFC Editor - 3 - - - - Submission Received - 4 - - - - Submitted to IESG for Publication - 1 - - - - Waiting for Document Shepherd - 3 - - - - Waiting for IRTF Chair - 3 - - - - Waiting for WG Chair Go-Ahead - 1 - - - - WG Consensus: Waiting for Write-Up - 1 - - - - WG Document - 1 - - - - Wait for go-ahead - 1 - 18 - - - - - Reach consensus - 1 - 19 - - - - - Adopt - 1 - 12 - - - - - Adopt for WG info only - 1 - 13 - - - - - Develop - 1 - 14 - - - - - Park - 1 - 15 - - - - - Die - 1 - 16 - - - - - Submit to IESG - 1 - 20 - - - - - Raise last call - 1 - 17 - - - - - Revised I-D Needed - 3 - - - - Shepherd Needed - 3 - - - - Waiting for Dependency on Other Document - 3 - - - - Revised I-D Needed - 2 - - - - Document Shepherd Followup - 2 - - - - Editor Needed - 3 - - - - Awaiting Reviews - 2 - - - - Waiting for Partner Feedback - 2 - - - - Other - see Comment Log - 1 - - - - Editor Needed - 2 - - - - Doc Shepherd Follow-Up Underway - 1 - - - - Revised I-D Needed - Issue raised by IESG - 1 - - - - Awaiting Expert Review/Resolution of Issues Raised - 1 - - - - Awaiting External Review/Resolution of Issues Raised - 1 - - - - Awaiting Merge with Other Document - 1 - - - - Author or Editor Needed - 1 - - - - Waiting for Referenced Document - 1 - - - - Revised I-D Needed - Issue raised by AD - 1 - - - - Revised I-D Needed - Issue raised by WGLC - 1 - - - - Waiting for Referencing Document - 1 - - - - IESG Review Completed - 3 - - - - Waiting for Dependency on Other Document - 4 - - - - Awaiting Reviews - 4 - - - - Revised I-D Needed - 4 - - - - IESG Review Completed - 4 - - - - - - - - - - - - - - - - - - - - IETF - group.ietfwg - chairs - 1 - - - IAB - - - 2 - - - IRTF - - - 3 - - - ISE - - - 4 - - - 11 - <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. - - 1 - - - 12 - <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. - - 2 - - - 13 - <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. - - 3 - - - 14 - <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. - - - 4 - - - 15 - <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. - - - 5 - - - 16 - <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. - - - 6 - - - 17 - <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. - - - 7 - - - 18 - <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. - - - 8 - - - 19 - <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. - - - 9 - - - 20 - <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. - - - 10 - - diff --git a/ietf/ietfworkflows/forms.py b/ietf/ietfworkflows/forms.py deleted file mode 100644 index fc7e9a2c4..000000000 --- a/ietf/ietfworkflows/forms.py +++ /dev/null @@ -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 %s" % 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 %s (%s)" % (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) diff --git a/ietf/ietfworkflows/migrations/.gitignore b/ietf/ietfworkflows/migrations/.gitignore deleted file mode 100644 index a74b07aee..000000000 --- a/ietf/ietfworkflows/migrations/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.pyc diff --git a/ietf/ietfworkflows/migrations/0001_initial.py b/ietf/ietfworkflows/migrations/0001_initial.py deleted file mode 100644 index 7d9f29e4f..000000000 --- a/ietf/ietfworkflows/migrations/0001_initial.py +++ /dev/null @@ -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'] diff --git a/ietf/ietfworkflows/migrations/0002_add_selected_states_and_tags.py b/ietf/ietfworkflows/migrations/0002_add_selected_states_and_tags.py deleted file mode 100644 index 7545559b7..000000000 --- a/ietf/ietfworkflows/migrations/0002_add_selected_states_and_tags.py +++ /dev/null @@ -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'] diff --git a/ietf/ietfworkflows/migrations/0003_add_person_to_history.py b/ietf/ietfworkflows/migrations/0003_add_person_to_history.py deleted file mode 100644 index 85f634656..000000000 --- a/ietf/ietfworkflows/migrations/0003_add_person_to_history.py +++ /dev/null @@ -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'] diff --git a/ietf/ietfworkflows/migrations/0004_add_object_state_dates.py b/ietf/ietfworkflows/migrations/0004_add_object_state_dates.py deleted file mode 100644 index c71d2a08e..000000000 --- a/ietf/ietfworkflows/migrations/0004_add_object_state_dates.py +++ /dev/null @@ -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'] diff --git a/ietf/ietfworkflows/migrations/0005_add_streams.py b/ietf/ietfworkflows/migrations/0005_add_streams.py deleted file mode 100644 index 1e3de388c..000000000 --- a/ietf/ietfworkflows/migrations/0005_add_streams.py +++ /dev/null @@ -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'] diff --git a/ietf/ietfworkflows/migrations/0006_add_group_to_streamed_id.py b/ietf/ietfworkflows/migrations/0006_add_group_to_streamed_id.py deleted file mode 100644 index 9460f0ac6..000000000 --- a/ietf/ietfworkflows/migrations/0006_add_group_to_streamed_id.py +++ /dev/null @@ -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'] diff --git a/ietf/ietfworkflows/migrations/0007_do_stream_optional.py b/ietf/ietfworkflows/migrations/0007_do_stream_optional.py deleted file mode 100644 index bcb758aab..000000000 --- a/ietf/ietfworkflows/migrations/0007_do_stream_optional.py +++ /dev/null @@ -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'] diff --git a/ietf/ietfworkflows/migrations/0008_refactor_history_entries.py b/ietf/ietfworkflows/migrations/0008_refactor_history_entries.py deleted file mode 100644 index 40bc6f36d..000000000 --- a/ietf/ietfworkflows/migrations/0008_refactor_history_entries.py +++ /dev/null @@ -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'] diff --git a/ietf/ietfworkflows/migrations/0009_allow_null_in_from_date.py b/ietf/ietfworkflows/migrations/0009_allow_null_in_from_date.py deleted file mode 100644 index b2c19c982..000000000 --- a/ietf/ietfworkflows/migrations/0009_allow_null_in_from_date.py +++ /dev/null @@ -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'] diff --git a/ietf/ietfworkflows/migrations/0010_add_state_definitions.py b/ietf/ietfworkflows/migrations/0010_add_state_definitions.py deleted file mode 100644 index 503943c56..000000000 --- a/ietf/ietfworkflows/migrations/0010_add_state_definitions.py +++ /dev/null @@ -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'] diff --git a/ietf/ietfworkflows/migrations/0011_remove_group_from_stream.py b/ietf/ietfworkflows/migrations/0011_remove_group_from_stream.py deleted file mode 100644 index 5705f7ef8..000000000 --- a/ietf/ietfworkflows/migrations/0011_remove_group_from_stream.py +++ /dev/null @@ -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'] diff --git a/ietf/ietfworkflows/migrations/0012_refactor_stream_group_descrition.py b/ietf/ietfworkflows/migrations/0012_refactor_stream_group_descrition.py deleted file mode 100644 index e5a61fcbd..000000000 --- a/ietf/ietfworkflows/migrations/0012_refactor_stream_group_descrition.py +++ /dev/null @@ -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'] diff --git a/ietf/ietfworkflows/migrations/0013_add_stream_delegates.py b/ietf/ietfworkflows/migrations/0013_add_stream_delegates.py deleted file mode 100644 index 2647539a7..000000000 --- a/ietf/ietfworkflows/migrations/0013_add_stream_delegates.py +++ /dev/null @@ -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'] diff --git a/ietf/ietfworkflows/migrations/0014_change_alt_streams_states.py b/ietf/ietfworkflows/migrations/0014_change_alt_streams_states.py deleted file mode 100644 index a6ef0232e..000000000 --- a/ietf/ietfworkflows/migrations/0014_change_alt_streams_states.py +++ /dev/null @@ -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'] diff --git a/ietf/ietfworkflows/migrations/__init__.py b/ietf/ietfworkflows/migrations/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/ietf/ietfworkflows/models.py b/ietf/ietfworkflows/models.py deleted file mode 100644 index 5a455a6b3..000000000 --- a/ietf/ietfworkflows/models.py +++ /dev/null @@ -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 = '

' - html += 'Changed state %s to %s' % (self.from_state, self.to_state) - html += '

' - 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 += '

' - html += 'Annotation tags set: ' - html += self.setted - html += '

' - if self.unsetted: - html += '

' - html += 'Annotation tags reset: ' - html += self.unsetted - html += '

' - 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 = '

' - html += 'Changed doc from stream %s to %s' % (self.from_stream, self.to_stream) - html += '

' - 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 diff --git a/ietf/ietfworkflows/streams.py b/ietf/ietfworkflows/streams.py deleted file mode 100644 index 9540a2825..000000000 --- a/ietf/ietfworkflows/streams.py +++ /dev/null @@ -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 diff --git a/ietf/ietfworkflows/templatetags/.gitignore b/ietf/ietfworkflows/templatetags/.gitignore deleted file mode 100644 index a74b07aee..000000000 --- a/ietf/ietfworkflows/templatetags/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.pyc diff --git a/ietf/ietfworkflows/templatetags/__init__.py b/ietf/ietfworkflows/templatetags/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/ietf/ietfworkflows/templatetags/ietf_streams.py b/ietf/ietfworkflows/templatetags/ietf_streams.py deleted file mode 100644 index 5d8b5ca51..000000000 --- a/ietf/ietfworkflows/templatetags/ietf_streams.py +++ /dev/null @@ -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) diff --git a/ietf/ietfworkflows/templatetags/ietf_streams_redesign.py b/ietf/ietfworkflows/templatetags/ietf_streams_redesign.py deleted file mode 100644 index 852911126..000000000 --- a/ietf/ietfworkflows/templatetags/ietf_streams_redesign.py +++ /dev/null @@ -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) diff --git a/ietf/ietfworkflows/tests.py b/ietf/ietfworkflows/tests.py deleted file mode 100644 index ad467a9e7..000000000 --- a/ietf/ietfworkflows/tests.py +++ /dev/null @@ -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 diff --git a/ietf/ietfworkflows/urls.py b/ietf/ietfworkflows/urls.py deleted file mode 100644 index af7a885d4..000000000 --- a/ietf/ietfworkflows/urls.py +++ /dev/null @@ -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[^/]+)/history/$', 'stream_history', name='stream_history'), - url(r'^(?P[^/]+)/edit/adopt/$', 'edit_adopt', name='edit_adopt'), - # FIXME: the name edit_state is far too generic - url(r'^(?P[^/]+)/edit/state/$', 'edit_state', name='edit_state'), - url(r'^(?P[^/]+)/edit/stream/$', redirect_to, { 'url': '/doc/%(name)s/edit/info/'}) , - url(r'^delegates/(?P[^/]+)/$', 'stream_delegates', name='stream_delegates'), -) diff --git a/ietf/ietfworkflows/utils.py b/ietf/ietfworkflows/utils.py deleted file mode 100644 index 5d724be4d..000000000 --- a/ietf/ietfworkflows/utils.py +++ /dev/null @@ -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" ', ] - - 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 %s 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 %s" % 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, - ) diff --git a/ietf/ietfworkflows/views.py b/ietf/ietfworkflows/views.py deleted file mode 100644 index 75ad58700..000000000 --- a/ietf/ietfworkflows/views.py +++ /dev/null @@ -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)) diff --git a/ietf/settings.py b/ietf/settings.py index 4d9c29d29..0d24d4a95 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -175,7 +175,6 @@ INSTALLED_APPS = ( 'ietf.idrfc', 'ietf.wginfo', 'ietf.submit', - 'ietf.ietfworkflows', 'ietf.wgcharter', 'ietf.sync', 'ietf.community', diff --git a/ietf/templates/ietfworkflows/annotation_tags_updated_mail.txt b/ietf/templates/ietfworkflows/annotation_tags_updated_mail.txt deleted file mode 100644 index dafe2376b..000000000 --- a/ietf/templates/ietfworkflows/annotation_tags_updated_mail.txt +++ /dev/null @@ -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 %} diff --git a/ietf/templates/ietfworkflows/edit_actions.html b/ietf/templates/ietfworkflows/edit_actions.html deleted file mode 100644 index 214905233..000000000 --- a/ietf/templates/ietfworkflows/edit_actions.html +++ /dev/null @@ -1,6 +0,0 @@ -
- {% for action_name, url in actions %} - {% if not forloop.first %} | {% endif%} {{ action_name }} - {% endfor %} -
- diff --git a/ietf/templates/ietfworkflows/noworkflow_state_form.html b/ietf/templates/ietfworkflows/noworkflow_state_form.html deleted file mode 100644 index d5e3f0372..000000000 --- a/ietf/templates/ietfworkflows/noworkflow_state_form.html +++ /dev/null @@ -1,23 +0,0 @@ -
- - - - - -
Adopt this draft in your group
-
- {{ form.comment.errors }} - Comment:
- -
-
- {{ form.weeks.errors }} - Estimated time in 'Call for Adoption by WG/RG Issued': (in weeks) -
-
- Adopt in Group: {{ form.group }} - {{ form.group.errors }} -
- -
-
diff --git a/ietf/templates/ietfworkflows/state_edit.html b/ietf/templates/ietfworkflows/state_edit.html deleted file mode 100644 index 5cef5eb00..000000000 --- a/ietf/templates/ietfworkflows/state_edit.html +++ /dev/null @@ -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 %} -

Change state for {{ draft }}

- -{% if state and state.slug == "wg-doc" and not milestones %} -

This document is not part of any milestone. You may wish to add it to one.

-{% endif %} - -{% if state and state.slug == "sub-pub" and milestones %} -

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 -update the -milestone{{ milestones|pluralize }}.

-{% endif %} - -{{ form }} - -{% endblock %} diff --git a/ietf/templates/ietfworkflows/state_form.html b/ietf/templates/ietfworkflows/state_form.html deleted file mode 100644 index a96b20f3e..000000000 --- a/ietf/templates/ietfworkflows/state_form.html +++ /dev/null @@ -1,32 +0,0 @@ -
- -
- {% with form.get_next_states as next_states %} - {% if next_states %} - Recommended next state{{next_states|pluralize}}: -
    - {% for state in next_states %} -
  • '{{ state.name }}'{% if not forloop.last %}, {% endif %}
  • - {% endfor %} -
- {% endif %} - {% endwith %} -
- - - {% for field in form.visible_fields %} - - - - - {% endfor %} -
{{ field.label_tag }}:{{ field }} - {% if field.help_text %}
{{ field.help_text }}
{% endif %} - - {{ field.errors }} -
-
- - -
-
diff --git a/ietf/templates/ietfworkflows/state_updated_mail.txt b/ietf/templates/ietfworkflows/state_updated_mail.txt deleted file mode 100644 index 074b93431..000000000 --- a/ietf/templates/ietfworkflows/state_updated_mail.txt +++ /dev/null @@ -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 %} diff --git a/ietf/templates/ietfworkflows/stream_delegates.html b/ietf/templates/ietfworkflows/stream_delegates.html deleted file mode 100644 index ca77c9575..000000000 --- a/ietf/templates/ietfworkflows/stream_delegates.html +++ /dev/null @@ -1,43 +0,0 @@ -{% extends "base.html" %} -{% load ietf_streams ietf_filters %} - -{% block title %}Manage delegates for {{ stream.name }} stream{% endblock %} - -{% block content %} -

Stream: {{ stream.name }}

- -{% if chairs %} -

{{ stream.name }} stream chairs

- - -{% for chair in chairs %} - -{% endfor %} -
NameEmail
{{ chair }}{{ chair.email.0 }} <{{ chair.email.1 }}>
-{% endif %} - -

{{ stream.name }} stream delegates

-
-{% if delegates %} - - -{% for delegate in delegates %} - -{% endfor %} -
NameEmail
{{ delegate }}{{ delegate.email.0 }} <{{ delegate.email.1 }}>
-

- -

-{% else %} -

-No delegates for {{ stream.name }} stream assigned. -

-{% endif %} -

-Enter a valid e-mail address to add a new delegate. -

-{% if form.errors.email %}{{ form.errors.email }}{% endif %} -{{ form.email }} - -
-{% endblock %} diff --git a/ietf/templates/ietfworkflows/stream_form.html b/ietf/templates/ietfworkflows/stream_form.html deleted file mode 100644 index 268f9ecef..000000000 --- a/ietf/templates/ietfworkflows/stream_form.html +++ /dev/null @@ -1,22 +0,0 @@ -
- - - - - - - - -
Select the new stream
-
- {{ form.comment.errors }} - Comment: *
- -
-
-
- {{ form.stream.errors }} - {{ form.stream }} -
-
-
diff --git a/ietf/templates/ietfworkflows/stream_history.html b/ietf/templates/ietfworkflows/stream_history.html deleted file mode 100644 index ae4fb7b19..000000000 --- a/ietf/templates/ietfworkflows/stream_history.html +++ /dev/null @@ -1,44 +0,0 @@ -{% load ietf_streams %} - - - - - -
- {% if workflow %} -
    - {% for tag in tags %} - {{ tag }} - {% endfor %} -
- {% endif %} -
-
- {% if stream %} -

- {{ stream|default:"Without stream" }}{% if stream.with_groups and streamed.group %} :: {{ streamed.group|default:"" }}{% endif %} -

-

Current state: {{ state|default:"None" }}

- {% else %} -

Without stream

- {% endif %} -
- - {% if history %} -
- {% if show_more %} -

Viewing the last 20 entries. Show full log.

- {% endif %} - {% for entry in history %} - {% workflow_history_entry entry %} - {% endfor %} - {% if show_more %} -

Viewing the last 20 entries. Show full log.

- {% endif %} -
- {% else %} -

- There is no stream history for this document. -

- {% endif %} -
diff --git a/ietf/templates/ietfworkflows/stream_state.html b/ietf/templates/ietfworkflows/stream_state.html deleted file mode 100644 index d06c4ac1e..000000000 --- a/ietf/templates/ietfworkflows/stream_state.html +++ /dev/null @@ -1,11 +0,0 @@ -{% if draft %} -
-
-{% if stream %} -{% if state %}{{ state.name }}{% else %}{{ stream }}{% endif %} -{% if milestones %}{% for m in milestones %}{{ m.due|date:"M Y" }}{% endfor %}{% endif %} -{% else %} - No stream assigned -{% endif %} -
-{% endif %} diff --git a/ietf/templates/ietfworkflows/stream_state_redesign.html b/ietf/templates/ietfworkflows/stream_state_redesign.html deleted file mode 100644 index 0c334f865..000000000 --- a/ietf/templates/ietfworkflows/stream_state_redesign.html +++ /dev/null @@ -1,10 +0,0 @@ -{% if doc %} -
-
-{% if stream %} -{% if state %}{{ state.name }}{% else %}{{ stream }}{% endif %} -{% else %} - No stream assigned -{% endif %} -
-{% endif %} diff --git a/ietf/templates/ietfworkflows/stream_updated_mail.txt b/ietf/templates/ietfworkflows/stream_updated_mail.txt deleted file mode 100644 index b98640b88..000000000 --- a/ietf/templates/ietfworkflows/stream_updated_mail.txt +++ /dev/null @@ -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 %} diff --git a/ietf/templates/ietfworkflows/tags_form.html b/ietf/templates/ietfworkflows/tags_form.html deleted file mode 100644 index e3388a868..000000000 --- a/ietf/templates/ietfworkflows/tags_form.html +++ /dev/null @@ -1,22 +0,0 @@ -
- - - - - - -
1. Input information about change2. Select annotation tags
-
- {{ form.errors.comment }} - Comment: *
- -
-
-
- {{ form.tags }} -
-
- -
-
-
diff --git a/ietf/templates/ietfworkflows/workflow_history_entry.html b/ietf/templates/ietfworkflows/workflow_history_entry.html deleted file mode 100644 index 3f30673f2..000000000 --- a/ietf/templates/ietfworkflows/workflow_history_entry.html +++ /dev/null @@ -1,12 +0,0 @@ -
-
- - {{ entry.person }} -
-
- {{ entry.describe_change|safe|linebreaks }} -
-
- {{ entry.comment }} -
-