summaryrefslogtreecommitdiff
path: root/maconomy/templates.py
blob: 4889c487f447c8784c840ff18549e04861d4151f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
from string import Template

class BaseTemplate(object):
    def __init__(self, template_file):
        self.set_template(template_file)

    def build(self, **kwargs):
        return self.template.substitute(**kwargs)

    def set_template(self, template_file):
        with open(template_file, 'r') as f:
            template_base = f.read()
        self.template = Template(template_base)


class UnsubmittedEmailTemplate(BaseTemplate):
    def __init__(self):
        self.set_template("templates/unsubmitted.html")

    def build(self, week, maconomyurl, helpurl):
        return self.template.substitute(week=week, maconomyurl=maconomyurl, helpurl=helpurl)

class MissingEmailTemplate(BaseTemplate):
    def __init__(self):
        self.set_template("templates/missing.html")

    def build(self, maconomyurl, helpurl):
        return self.template.substitute(maconomyurl=maconomyurl, helpurl=helpurl)

class ManagerEmailTemplate(BaseTemplate):
    def __init__(self):
        self.set_template("templates/manager.html")
        self.status_template = EmployeeStatusTemplate()

    def build(self, timesheets, maconomyurl):
        statuslist = self.build_statuslist(timesheets)
        return self.template.substitute(statuslist=statuslist,maconomyurl=maconomyurl)

    def build_statuslist(self, timesheets):
        statuslist = [self.status_template.build(timesheet) for timesheet in timesheets]
        return "\n".join(statuslist)

class EmployeeStatusTemplate(BaseTemplate):
    def __init__(self, include_approver=False):
        self.set_template("templates/_employee_status.html")
        self.include_approver = include_approver

    def build(self, timesheet):
        employee = timesheet.employee
        submitted = '' if timesheet.is_submitted() else 'not'
        approver =  timesheet.approver if self.include_approver else 'you'
        approved = '' if timesheet.is_approved() else 'not'
        return self.template.substitute(employee=employee.__unicode__(), submitted=submitted, approved=approved, approver=approver)

class CEOEmailTemplate(BaseTemplate):
    def __init__(self):
        self.set_template("templates/ceo.html")
        self.status_template = EmployeeStatusTemplate(include_approver=True)

    def build(self, timesheets):
        statuslist = self.build_statuslist(timesheets)
        return self.template.substitute(statuslist=statuslist)

    def build_statuslist(self, timesheets):
        statuslist = [self.status_template.build(timesheet) for timesheet in timesheets]
        return "\n".join(statuslist)