Introduce generic states, not fully incorporated yet, and rename tag

name model
 - Legacy-Id: 3616
This commit is contained in:
Ole Laursen 2011-11-14 19:29:05 +00:00
parent f6261a9a49
commit e01ba98af1
11 changed files with 925 additions and 126 deletions

View file

@ -10,7 +10,7 @@ from ietf.idtracker.models import InternetDraft, IDDates, IDStatus, IDState, Doc
from ietf.utils.mail import send_mail, send_mail_subj
from ietf.idrfc.utils import log_state_changed, add_document_comment
from doc.models import Document, DocEvent, save_document_in_history
from name.models import IesgDocStateName, DocStateName, DocInfoTagName
from name.models import IesgDocStateName, DocStateName, DocTagName
from person.models import Person, Email
INTERNET_DRAFT_DAYS_TO_EXPIRE = 185
@ -349,7 +349,7 @@ def clean_up_id_filesREDESIGN():
# revert version after having deleted tombstone
doc.rev = "%02d" % (int(revision) - 1) # FIXME: messed up
doc.save()
doc.tags.add(DocInfoTagName.objects.get(slug='exp-tomb'))
doc.tags.add(DocTagName.objects.get(slug='exp-tomb'))
else:
move_file_to("expired_without_tombstone")

View file

@ -196,14 +196,14 @@ def insert_into_database(drafts, refs):
import django.db.transaction
def get_rfc_tag_mapping():
"""Return dict with RFC Editor state name -> DocInfoTagName"""
from name.models import DocInfoTagName
"""Return dict with RFC Editor state name -> DocTagName"""
from name.models import DocTagName
from name.utils import name
return {
'IANA': name(DocInfoTagName, 'iana-crd', 'IANA coordination', "RFC-Editor/IANA Registration Coordination"),
'REF': name(DocInfoTagName, 'ref', 'Holding for references', "Holding for normative reference"),
'MISSREF': name(DocInfoTagName, 'missref', 'Missing references', "Awaiting missing normative reference"),
'IANA': name(DocTagName, 'iana-crd', 'IANA coordination', "RFC-Editor/IANA Registration Coordination"),
'REF': name(DocTagName, 'ref', 'Holding for references', "Holding for normative reference"),
'MISSREF': name(DocTagName, 'missref', 'Missing references', "Awaiting missing normative reference"),
}
def get_rfc_state_mapping():
@ -229,7 +229,7 @@ def get_rfc_state_mapping():
@django.db.transaction.commit_on_success
def insert_into_databaseREDESIGN(drafts, refs):
from doc.models import Document
from name.models import DocInfoTagName
from name.models import DocTagName
tags = get_rfc_tag_mapping()
states = get_rfc_state_mapping()

View file

@ -168,7 +168,7 @@ def get_stream_mapping():
return {
"Legacy": name(DocStreamName, "legacy", "Legacy"),
"IETF": name(DocStreamName, "ietf", "IETF"),
"INDEPENDENT": name(DocStreamName, "ise", "Independent Submission"),
"INDEPENDENT": name(DocStreamName, "ise", "ISE", desc="Independent submission editor stream"),
"IAB": name(DocStreamName, "iab", "IAB"),
"IRTF": name(DocStreamName, "irtf", "IRTF"),
}
@ -181,13 +181,13 @@ def insert_to_databaseREDESIGN(data):
from person.models import Person
from doc.models import Document, DocAlias, DocEvent, RelatedDocument
from group.models import Group
from name.models import DocInfoTagName, DocRelationshipName
from name.models import DocTagName, DocRelationshipName
from name.utils import name
system = Person.objects.get(name="(System)")
std_level_mapping = get_std_level_mapping()
stream_mapping = get_stream_mapping()
tag_has_errata = name(DocInfoTagName, 'errata', "Has errata")
tag_has_errata = name(DocTagName, 'errata', "Has errata")
relationship_obsoletes = name(DocRelationshipName, "obs", "Obsoletes")
relationship_updates = name(DocRelationshipName, "updates", "Updates")

View file

@ -24,7 +24,7 @@ from ietf.idrfc.utils import *
from ietf.idrfc.lastcall import request_last_call
from doc.models import Document, DocEvent, StatusDateDocEvent, TelechatDocEvent, save_document_in_history, DocHistory
from name.models import IesgDocStateName, IntendedStdLevelName, DocInfoTagName, get_next_iesg_states, DocStateName
from name.models import IesgDocStateName, IntendedStdLevelName, DocTagName, get_next_iesg_states, DocStateName
from person.models import Person, Email
class ChangeStateForm(forms.Form):
@ -548,7 +548,7 @@ def edit_infoREDESIGN(request, name):
e.save()
if has_role(request.user, 'Secretariat'):
via_rfc = DocInfoTagName.objects.get(slug="via-rfc")
via_rfc = DocTagName.objects.get(slug="via-rfc")
if r['via_rfc_editor']:
doc.tags.add(via_rfc)
else:

View file

@ -308,7 +308,7 @@ if settings.USE_DB_REDESIGN_PROXY_CLASSES:
inactive_ads.sort(key=extract_last_name)
self.fields['ad'].choices = c = [('', 'any AD')] + [(ad.pk, ad.name) for ad in active_ads] + [('', '------------------')] + [(ad.pk, ad.name) for ad in inactive_ads]
self.fields['subState'].choices = [('', 'any substate'), ('0', 'no substate')] + [(n.slug, n.name) for n in DocInfoTagName.objects.filter(slug__in=('point', 'ad-f-up', 'need-rev', 'extpty'))]
self.fields['subState'].choices = [('', 'any substate'), ('0', 'no substate')] + [(n.slug, n.name) for n in DocTagName.objects.filter(slug__in=('point', 'ad-f-up', 'need-rev', 'extpty'))]
def clean_name(self):
value = self.cleaned_data.get('name','')
return normalize_draftname(value)

View file

@ -12,14 +12,14 @@ admin.site.register(RoleName, NameAdmin)
admin.site.register(DocStreamName, NameAdmin)
admin.site.register(DocStateName, NameAdmin)
admin.site.register(DocRelationshipName, NameAdmin)
admin.site.register(WgDocStateName, NameAdmin)
admin.site.register(IesgDocStateName, NameAdmin)
admin.site.register(IanaDocStateName, NameAdmin)
admin.site.register(RfcDocStateName, NameAdmin)
admin.site.register(DocTypeName, NameAdmin)
admin.site.register(DocInfoTagName, NameAdmin)
admin.site.register(DocTagName, NameAdmin)
admin.site.register(StdLevelName, NameAdmin)
admin.site.register(IntendedStdLevelName, NameAdmin)
admin.site.register(DocReminderTypeName, NameAdmin)
admin.site.register(BallotPositionName, NameAdmin)
admin.site.register(SessionStatusName, NameAdmin)
admin.site.register(TimeSlotTypeName, NameAdmin)

File diff suppressed because it is too large Load diff

View file

@ -27,14 +27,19 @@ def output(name, qs):
raise
# pick all name models directly out of the module
names = []
objects = []
import redesign.name.models
for n in dir(redesign.name.models):
if n[:1].upper() == n[:1] and n.endswith("Name"):
model = getattr(redesign.name.models, n)
if not model._meta.abstract:
names.extend(model.objects.all())
output("names", names)
objects.extend(model.objects.all())
import redesign.doc.models # FIXME
objects += redesign.doc.models.StateType.objects.all()
objects += redesign.doc.models.State.objects.all()
output("names", objects)

View file

@ -28,16 +28,13 @@ class IesgGroupStateName(NameModel):
class RoleName(NameModel):
"""AD, Chair"""
class DocStreamName(NameModel):
"""IETF, IAB, IRTF, Independent Submission, Legacy"""
"""IETF, IAB, IRTF, ISE, Legacy"""
class DocStateName(NameModel):
"""Active, Expired, RFC, Replaced, Withdrawn"""
class DocRelationshipName(NameModel):
"""Updates, Replaces, Obsoletes, Reviews, ... The relationship is
always recorded in one direction.
"""
class WgDocStateName(NameModel):
"""Not, Candidate, Active, Parked, LastCall, WriteUp, Submitted,
Dead"""
class IesgDocStateName(NameModel):
"""Pub Request, Ad Eval, Expert Review, Last Call Requested, In
Last Call, Waiting for Writeup, Waiting for AD Go-Ahead, IESG
@ -51,15 +48,17 @@ class RfcDocStateName(NameModel):
class DocTypeName(NameModel):
"""Draft, Agenda, Minutes, Charter, Discuss, Guideline, Email,
Review, Issue, Wiki"""
class DocInfoTagName(NameModel):
class DocTagName(NameModel):
"""Waiting for Reference, IANA Coordination, Revised ID Needed,
External Party, AD Followup, Point Raised - Writeup Needed"""
External Party, AD Followup, Point Raised - Writeup Needed, ..."""
class StdLevelName(NameModel):
"""Proposed Standard, Draft Standard, Standard, Experimental,
Informational, Best Current Practice, Historic, ..."""
class IntendedStdLevelName(NameModel):
"""Standards Track, Experimental, Informational, Best Current
Practice, Historic, ..."""
class DocReminderTypeName(NameModel):
"Stream state"
class BallotPositionName(NameModel):
""" Yes, NoObjection, Abstain, Discuss, Recuse """
class MeetingTypeName(NameModel):

View file

@ -87,7 +87,7 @@ class IDSubStateManager(TranslatingManager):
def all(self):
return self.filter(slug__in=['extpty', 'need-rev', 'ad-f-up', 'point'])
class IDSubState(DocInfoTagName):
class IDSubState(DocTagName):
objects = IDSubStateManager(dict(pk="order"))
def from_object(self, base):
@ -116,3 +116,13 @@ class IDSubState(DocInfoTagName):
class Meta:
proxy = True
class AnnotationTagObjectRelationProxy(DocTagName):
objects = TranslatingManager(dict(annotation_tag__name="name"))
@property
def annotation_tag(self):
return self
class Meta:
proxy = True

View file

@ -1,8 +1,10 @@
def name(name_class, slug, name, desc="", order=0):
def name(name_class, slug, name, desc="", order=0, **kwargs):
# create if it doesn't exist, set name and desc
obj, _ = name_class.objects.get_or_create(slug=slug)
obj.name = name
obj.desc = desc
obj.order = order
for k, v in kwargs.iteritems():
setattr(obj, k, v)
obj.save()
return obj