datatracker/ietf/liaisons/proxy.py
2012-01-24 17:17:24 +00:00

183 lines
6.5 KiB
Python

from ietf.utils.proxy import TranslatingManager
from ietf.liaisons.models import LiaisonStatement
from ietf.doc.models import Document
class LiaisonDetailProxy(LiaisonStatement):
objects = TranslatingManager(dict(submitted_date="submitted",
deadline_date="deadline",
to_body="to_name",
from_raw_body="from_name"))
def from_object(self, base):
for f in base._meta.fields:
setattr(self, f.name, getattr(base, f.name))
return self
#detail_id = models.AutoField(primary_key=True)
@property
def detail_id(self):
return self.id
#person = models.ForeignKey(PersonOrOrgInfo, null=True, db_column='person_or_org_tag')
@property
def person(self):
return self.from_contact.person if self.from_contact else ""
#submitted_date = models.DateField(null=True, blank=True)
@property
def submitted_date(self):
return self.submitted.date() if self.submitted else None
#last_modified_date = models.DateField(null=True, blank=True)
@property
def last_modified_date(self):
return self.modified.date() if self.modified else None
#from_id = models.IntegerField(null=True, blank=True)
@property
def from_id(self):
return self.from_group_id
#to_body = models.CharField(blank=True, null=True, max_length=255)
@property
def to_body(self):
return self.to_name
#title = models.CharField(blank=True, null=True, max_length=255) # same name
#response_contact = models.CharField(blank=True, null=True, max_length=255) # same name
#technical_contact = models.CharField(blank=True, null=True, max_length=255) # same name
#purpose_text = models.TextField(blank=True, null=True, db_column='purpose')
@property
def purpose_text(self):
return ""
#body = models.TextField(blank=True,null=True) # same name
#deadline_date = models.DateField(null=True, blank=True)
@property
def deadline_date(self):
return self.deadline
#cc1 = models.TextField(blank=True, null=True)
@property
def cc1(self):
return self.cc
#cc2 = models.CharField(blank=True, null=True, max_length=50) # unused
@property
def cc2(self):
return ""
#submitter_name = models.CharField(blank=True, null=True, max_length=255)
@property
def submitter_name(self):
i = self.to_name.find('<')
if i > 0:
return self.to_name[:i - 1]
else:
return self.to_name
#submitter_email = models.CharField(blank=True, null=True, max_length=255)
@property
def submitter_email(self):
import re
re_email = re.compile("<(.*)>")
match = re_email.search(self.to_name)
if match:
return match.group(1)
else:
return ""
#by_secretariat = models.IntegerField(null=True, blank=True)
@property
def by_secretariat(self):
return not self.from_contact
#to_poc = models.CharField(blank=True, null=True, max_length=255)
@property
def to_poc(self):
return self.to_contact
#to_email = models.CharField(blank=True, null=True, max_length=255)
@property
def to_email(self):
return ""
#purpose = models.ForeignKey(LiaisonPurpose,null=True)
#replyto = models.CharField(blank=True, null=True, max_length=255)
@property
def replyto(self):
return self.reply_to
#from_raw_body = models.CharField(blank=True, null=True, max_length=255)
@property
def from_raw_body(self):
return self.from_name
def raw_codify(self, group):
if not group:
return ""
if group.type_id in ("sdo", "wg", "area"):
return "%s_%s" % (group.type_id, group.id)
return group.acronym
#from_raw_code = models.CharField(blank=True, null=True, max_length=255)
@property
def from_raw_code(self):
return self.raw_codify(self.from_group)
#to_raw_code = models.CharField(blank=True, null=True, max_length=255)
@property
def to_raw_code(self):
return self.raw_codify(self.to_group)
#approval = models.ForeignKey(OutgoingLiaisonApproval, blank=True, null=True)
@property
def approval(self):
return bool(self.approved)
#action_taken = models.BooleanField(default=False, db_column='taken_care') # same name
#related_to = models.ForeignKey('LiaisonDetail', blank=True, null=True) # same name
@property
def uploads_set(self):
return UploadsProxy.objects.filter(liaisonstatement=self).order_by("name", "external_url")
@property
def liaisondetail_set(self):
return self.liaisonstatement_set
def __str__(self):
return unicode(self)
def __unicode__(self):
return self.title or "<no title>"
def from_body(self):
return self.from_name
def from_sdo(self):
return self.from_group if self.from_group and self.from_group.type_id == "sdo" else None
def from_email(self):
self.from_contact.address
def get_absolute_url(self):
return '/liaison/%d/' % self.detail_id
class Meta:
proxy = True
def send_by_email(self, fake=False):
# grab this from module instead of stuffing in on the model
from ietf.liaisons.mails import send_liaison_by_email
# we don't have a request so just pass None for the time being
return send_liaison_by_email(None, self, fake)
def is_pending(self):
return not self.approved
class UploadsProxy(Document):
#file_id = models.AutoField(primary_key=True)
@property
def file_id(self):
if not self.external_url or self.external_url.startswith(self.name):
return self.name # new data
else:
return int(self.external_url.split(".")[0][len("file"):]) # old data
#file_title = models.CharField(blank=True, max_length=255)
@property
def file_title(self):
return self.title
#person = models.ForeignKey(PersonOrOrgInfo, db_column='person_or_org_tag')
#file_extension = models.CharField(blank=True, max_length=10)
@property
def file_extension(self):
t = self.external_url.split(".")
if len(t) > 1:
return "." + t[1]
else:
return ""
#detail = models.ForeignKey(LiaisonDetail)
@property
def detail(self):
return self.liaisonstatement_set.all()[0]
def filename(self):
return self.external_url
class Meta:
proxy = True