class Employee: def __init__(self, id, name, email): self.id = id self.name = name self.email = email @classmethod def from_result(cls, result): id, name, email = result[:3] return cls(id, name, email) def __unicode__(self): if type(self.name) is not unicode: name = unicode(self.name, "ISO-8859-1") else: name = self.name return u"{} ({})".format(name, self.id) def __str__(self): return "{} ({})".format(self.name, self.id) class Timesheet: def __init__(self, week, submitted, approved, employee, approver): self.week = week self.submitted = submitted self.approved = approved self.employee = employee self.approver = approver @classmethod def from_result(cls, result): employee = Employee.from_result(result) week, submitted, approved, approver = result[3:7] return cls(week, submitted, approved, employee, approver) def status(self): return "submitted" if self.is_submitted() else "unsubmitted" def is_submitted(self): return self.submitted == 1 def is_missing(self): return self.submitted is None def is_approved(self): return self.approved == 1 def is_done(self): return self.is_submitted() and self.is_approved() def __str__(self): return self.__unicode__() def status_summary(self): status = u"[OK]" if self.is_missing(): status = u"[Missing]" elif not self.is_submitted(): status = u"[Unsubmitted]" elif not self.is_approved(): status = u"[Not approved]" return u"{} {}".format(status, self.employee) def __unicode__(self): u"{} ({})".format(self.week, self.status)