~technofluid-team/openobject-addons/technofluid_multiple_installations

« back to all changes in this revision

Viewing changes to project/report/gantt_report.py

  • Committer: pinky
  • Date: 2006-12-07 13:41:40 UTC
  • Revision ID: pinky-dedd7f8a42bd4557112a0513082691b8590ad6cc
New trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
##############################################################################
 
2
#
 
3
# Copyright (c) 2005 TINY SPRL. (http://tiny.be) All Rights Reserved.
 
4
#
 
5
# $Id: gantt_report.py 1005 2005-07-25 08:41:42Z nicoe $
 
6
#
 
7
# WARNING: This program as such is intended to be used by professional
 
8
# programmers who take the whole responsability of assessing all potential
 
9
# consequences resulting from its eventual inadequacies and bugs
 
10
# End users who are looking for a ready-to-use solution with commercial
 
11
# garantees and support are strongly adviced to contract a Free Software
 
12
# Service Company
 
13
#
 
14
# This program is Free Software; you can redistribute it and/or
 
15
# modify it under the terms of the GNU General Public License
 
16
# as published by the Free Software Foundation; either version 2
 
17
# of the License, or (at your option) any later version.
 
18
#
 
19
# This program is distributed in the hope that it will be useful,
 
20
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
21
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
22
# GNU General Public License for more details.
 
23
#
 
24
# You should have received a copy of the GNU General Public License
 
25
# along with this program; if not, write to the Free Software
 
26
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
27
#
 
28
##############################################################################
 
29
 
 
30
from sets import Set
 
31
from mx.DateTime import *
 
32
 
 
33
import StringIO
 
34
 
 
35
from report.render import render
 
36
from report.interface import report_int
 
37
 
 
38
from gantt import GanttCanvas
 
39
from _date_compute import _project_compute, _compute_tasks
 
40
import pooler
 
41
 
 
42
class external_pdf(render):
 
43
        def __init__(self, pdf):
 
44
                render.__init__(self)
 
45
                self.pdf = pdf
 
46
                self.output_type='pdf'
 
47
        
 
48
        def _render(self):
 
49
                return self.pdf
 
50
 
 
51
class report_tasks(report_int):
 
52
        def create(self, cr, uid, ids, datas, context={}):
 
53
                io = StringIO.StringIO()
 
54
 
 
55
                date_to_int = lambda x: int(x.ticks())
 
56
                int_to_date = lambda x: '/a60{}'+localtime(x).strftime('%d %m %Y')
 
57
                gt = GanttCanvas(io, convertors=(date_to_int, int_to_date))
 
58
 
 
59
                tasks = pooler.get_pool(cr.dbname).get('project.task').browse(cr, uid, ids)
 
60
                tasks, last_date = _compute_tasks(cr, uid, tasks, now())
 
61
                for user_id in tasks.keys():
 
62
                        for t in tasks[user_id]:
 
63
                                gt.add(t[3], t[2], [(t[0],t[1])])
 
64
                try:
 
65
                        gt.draw()
 
66
                except:
 
67
                        pass
 
68
                gt.close()
 
69
                self.obj = external_pdf(io.getvalue())
 
70
                self.obj.render()
 
71
                return (self.obj.pdf, 'pdf')
 
72
report_tasks('report.project.tasks.gantt')
 
73
 
 
74
 
 
75
class report_projects(report_int):
 
76
        def create(self, cr, uid, ids, datas, context={}):
 
77
                io = StringIO.StringIO()
 
78
                date_to_int = lambda x: int(x.ticks())
 
79
                int_to_date = lambda x: '/a60{}'+localtime(x).strftime('%d %m %Y')
 
80
                gt = GanttCanvas(io, convertors=(date_to_int, int_to_date))
 
81
                tasks, last_date = _project_compute(cr, uid, ids[0])
 
82
                for user_id in tasks.keys():
 
83
                        for t in tasks[user_id]:
 
84
                                gt.add(t[3], t[2], [(t[0],t[1])])
 
85
                gt.draw()
 
86
                gt.close()
 
87
                self.obj = external_pdf(io.getvalue())
 
88
                self.obj.render()
 
89
                return (self.obj.pdf, 'pdf')
 
90
report_projects('report.project.project.gantt')