Skip to content

Commit 34d9f5f

Browse files
committed
Import some attributes, aliases and relationships from the rfc_index_mirror table
- Legacy-Id: 2737
1 parent daf08da commit 34d9f5f

7 files changed

Lines changed: 216 additions & 111 deletions

File tree

ietf/idrfc/idrfc_wrapper.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,10 +287,10 @@ def __init__(self, rfcindex, rfc=None, idinternal=None):
287287
self.draft_name = self._rfcindex.draft
288288

289289
def _rfc_doc_list(self, name):
290-
if (not self._rfcindex) or (not self._rfcindex.__dict__[name]):
290+
if (not self._rfcindex) or (not getattr(self._rfcindex, name)):
291291
return None
292292
else:
293-
s = self._rfcindex.__dict__[name]
293+
s = getattr(self._rfcindex, name)
294294
s = s.replace(",", ", ")
295295
s = re.sub("([A-Z])([0-9])", "\\1 \\2", s)
296296
return s

ietf/idrfc/models.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,4 +96,8 @@ def __str__(self):
9696
return "DraftVersions"+self.filename+self.revision+str(self.revision_date)
9797
class Meta:
9898
db_table = "draft_versions_mirror"
99-
99+
100+
101+
from django.conf import settings
102+
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
103+
from redesign.doc.proxy import RfcIndex

ietf/idrfc/views_doc.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ def _get_history(doc, versions):
149149
results = []
150150
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
151151
versions = [] # clear versions
152-
for e in doc._draft.event_set.all().select_related('by').order_by('-time'):
152+
event_holder = doc._draft if hasattr(doc, "_draft") else doc._rfcindex
153+
for e in event_holder.event_set.all().select_related('by').order_by('-time'):
153154
info = {}
154155
if e.type == "new_revision":
155156
filename = u"%s-%s" % (e.doc.name, e.newrevision.rev)

redesign/doc/models.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
class DocumentInfo(models.Model):
1212
"""Any kind of document. Draft, RFC, Charter, IPR Statement, Liaison Statement"""
13-
time = models.DateTimeField() # should probably have auto_now=True
13+
time = models.DateTimeField(default=datetime.datetime.now) # should probably have auto_now=True
1414
# Document related
1515
type = models.ForeignKey(DocTypeName, blank=True, null=True) # Draft, Agenda, Minutes, Charter, Discuss, Guideline, Email, Review, Issue, Wiki, External ...
1616
title = models.CharField(max_length=255)
@@ -103,8 +103,8 @@ def save_with_history(self, force_insert=False, force_update=False):
103103
super(Document, self).save(force_insert, force_update)
104104

105105
class RelatedDocHistory(models.Model):
106-
document = models.ForeignKey('DocHistory')
107-
doc_alias = models.ForeignKey('DocAlias', related_name="reversely_related_document_history_set")
106+
document = models.ForeignKey('DocHistory') # source
107+
doc_alias = models.ForeignKey('DocAlias', related_name="reversely_related_document_history_set") # target
108108
relationship = models.ForeignKey(DocRelationshipName)
109109
def __unicode__(self):
110110
return u"%s %s %s" % (self.document.name, self.relationship.name.lower(), self.doc_alias.name)
@@ -127,7 +127,8 @@ def __unicode__(self):
127127
return "%s-->%s" % (self.name, self.document.name)
128128
document_link = admin_link("document")
129129
class Meta:
130-
verbose_name_plural = "aliases"
130+
verbose_name = "document alias"
131+
verbose_name_plural = "document aliases"
131132

132133
class SendQueue(models.Model):
133134
time = models.DateTimeField() # Scheduled at this time
@@ -165,6 +166,7 @@ class SendQueue(models.Model):
165166
("expired_document", "Expired document"),
166167
("requested_resurrect", "Requested resurrect"),
167168
("completed_resurrect", "Completed resurrect"),
169+
("published_rfc", "Published RFC"),
168170

169171
# IESG events
170172
("sent_ballot_announcement", "Sent ballot announcement"),

redesign/doc/proxy.py

Lines changed: 70 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
class InternetDraft(Document):
1111
objects = TranslatingManager(dict(filename="name",
1212
id_document_tag="id",
13-
status="state"))
13+
status="state",
14+
rfc_number=lambda v: ("docalias__name", "rfc%s" % v)))
1415

1516
DAYS_TO_EXPIRE=185
1617

@@ -46,7 +47,7 @@ def revision_date(self):
4647
#file_type = models.CharField(max_length=20)
4748
@property
4849
def file_type(self):
49-
matches = glob.glob(os.path.join(settings.INTERNET_DRAFT_PATH, self.filename + "*.*"))
50+
matches = glob.glob(os.path.join(settings.INTERNET_DRAFT_PATH, self.name + "*.*"))
5051
possible_types = [".txt", ".pdf", ".xml", ".ps"]
5152
res = set()
5253
for m in matches:
@@ -133,7 +134,7 @@ def last_modified_date(self):
133134
#replaced_by = models.ForeignKey('self', db_column='replaced_by', blank=True, null=True, related_name='replaces_set')
134135
@property
135136
def replaced_by(self):
136-
r = InternetDraft.objects.filter(related__document=self, related__relateddocument__relationship="replaces")
137+
r = InternetDraft.objects.filter(relateddocument__doc_alias__document=self, relateddocument__relationship="replaces")
137138
return r[0] if r else None
138139

139140
#replaces = FKAsOneToOne('replaces', reverse=True)
@@ -144,7 +145,7 @@ def replaces(self):
144145

145146
@property
146147
def replaces_set(self):
147-
return InternetDraft.objects.filter(docalias__relateddocument__relationship="replaces", docalias__relateddocument__document=self)
148+
return InternetDraft.objects.filter(docalias__relateddocument__document=self, docalias__relateddocument__relationship="replaces")
148149

149150
#review_by_rfc_editor = models.BooleanField()
150151
@property
@@ -548,6 +549,71 @@ def needed(self, standardsTrack=True):
548549

549550
return answer.rstrip()
550551

552+
553+
# things from RfcIndex
554+
555+
#rfc_number = models.IntegerField(primary_key=True) # already taken care of
556+
#title = models.CharField(max_length=250) # same name
557+
#authors = models.CharField(max_length=250) FIXME
558+
#rfc_published_date = models.DateField()
559+
@property
560+
def rfc_published_date(self):
561+
e = self.latest_event(type="published_rfc")
562+
return e.time.date() if e else None
551563

564+
#current_status = models.CharField(max_length=50,null=True)
565+
@property
566+
def current_status(self):
567+
return self.std_level
568+
569+
#updates = models.CharField(max_length=200,blank=True,null=True)
570+
@property
571+
def updates(self):
572+
return ",".join(sorted("RFC%s" % d.rfc_number for d in InternetDraft.objects.filter(docalias__relateddocument__document=self, docalias__relateddocument__relationship="updates")))
573+
574+
#updated_by = models.CharField(max_length=200,blank=True,null=True)
575+
@property
576+
def updated_by(self):
577+
return ",".join(sorted("RFC%s" % d.rfc_number for d in InternetDraft.objects.filter(relateddocument__doc_alias__document=self, relateddocument__relationship="updates")))
578+
579+
#obsoletes = models.CharField(max_length=200,blank=True,null=True)
580+
@property
581+
def obsoletes(self):
582+
return ",".join(sorted("RFC%s" % d.rfc_number for d in InternetDraft.objects.filter(docalias__relateddocument__document=self, docalias__relateddocument__relationship="obs")))
583+
584+
#obsoleted_by = models.CharField(max_length=200,blank=True,null=True)
585+
@property
586+
def obsoleted_by(self):
587+
return ",".join(sorted("RFC%s" % d.rfc_number for d in InternetDraft.objects.filter(relateddocument__doc_alias__document=self, relateddocument__relationship="obs")))
588+
589+
#also = models.CharField(max_length=50,blank=True,null=True)
590+
@property
591+
def also(self):
592+
aliases = self.docalias_set.filter(models.Q(name__startswith="bcp") |
593+
models.Q(name__startswith="std") |
594+
models.Q(name__startswith="bcp"))
595+
return aliases[0].name.upper() if aliases else None
596+
597+
#draft = models.CharField(max_length=200,null=True)
598+
@property
599+
def draft(self):
600+
if not self.name.startswith("rfc"):
601+
return self.name
602+
else:
603+
return None
604+
605+
#has_errata = models.BooleanField() FIXME
606+
#stream = models.CharField(max_length=15,blank=True,null=True)
607+
@property
608+
def stream(self):
609+
return super(InternetDraft, self).stream.name
610+
#wg = models.CharField(max_length=15,blank=True,null=True) FIXME
611+
#file_formats = models.CharField(max_length=20,blank=True,null=True)
612+
@property
613+
def file_formats(self):
614+
return self.file_type.replace(".", "").replace("txt", "ascii")
615+
552616
class Meta:
553617
proxy = True
618+
619+
RfcIndex = InternetDraft

0 commit comments

Comments
 (0)