1010class 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