コード例 #1
0
 def create(self, cr, uid, ids, datas, context=None):
     # ids = list of ids of projects
     # datas =  {'report_type': u'pdf'}
     
     if context is None:
         context = {}
     io = StringIO.StringIO()
     
     canv = canvas.init(fname=io, format='pdf')
     canv.set_author("David DRAPEAU")
     canv.set_title("Sprints Velocities")
     
     pool = pooler.get_pool(cr.dbname)
     sprint_pool = pool.get('project.scrum.sprint')
     project_pool = pool.get('project.project')
     
     # For add the report header on the top of the report.
     tb = text_box.T(loc=(320, 500), text="/hL/15/bSprints velocities (of project)", line_style=None)
     tb.draw()
     
     sprint_ids = sprint_pool.search(cr, uid, [('project_id', '=', ids[0])])
     sprint_ids.sort()
     #print "sprint_ids = ", sprint_ids
     planned_velocity = [(0, 0)]
     effective_velocity = [(0,0)]
     for sprint_obj in sprint_pool.browse(cr, uid, sprint_ids, context=context):
         planned_velocity.append((sprint_obj.id, sprint_obj.planned_velocity))
         print "planned_velocity = ", planned_velocity
         if sprint_obj.state == 'done':
             effective_velocity.append((sprint_obj.id, sprint_obj.effective_velocity_sprint_done))
             print "effective_velocity = ", effective_velocity
         #planned_velocity = [(1, 15), (2, 18), (3, 20), (4, 20), (5, 20)]
         #effective_velocity = [(1, 12), (2, 17)]
     planned_velocity.sort()
     effective_velocity.sort()
     ar = area.T(x_grid_style=line_style.gray50_dash1,
                 x_axis=axis.X(label="Velocity"),
                 y_axis=axis.Y(label="Sprint"),
                 x_grid_interval=1,
                 y_grid_interval=1,
                 x_range = (0, None),
                 y_range = (0, None),
                 legend = None,
                 size = (680,450))
     
     ar.add_plot(line_plot.T(label="plot1", data=planned_velocity, line_style=line_style.red))
     ar.add_plot(line_plot.T(label="plot2", data=effective_velocity, line_style=line_style.green))
     
     entr1 = pychart.legend.Entry(label="Planned Velocity", line_style=line_style.red)
     entr2 = pychart.legend.Entry(label="Effective Velocity",line_style=line_style.green)
     legend = pychart.legend.T(nr_rows=2, inter_row_sep=5)
     legend.draw(ar,[entr1,entr2],canv)
     
     ar.draw(canv)
     
     canv.close()
     
     self.obj = external_pdf(io.getvalue())
     self.obj.render()
     return (self.obj.pdf, 'pdf')
コード例 #2
0
 def create(self, cr, uid, ids, datas, context=None):
     # ids = list of ids of projects
     # datas =  {'report_type': u'pdf'}
     
     if context is None:
         context = {}
     io = StringIO.StringIO()
     
     canv = canvas.init(fname=io, format='pdf')
     canv.set_author("David DRAPEAU")
     canv.set_title("Sprints Velocities")
     
     pool = pooler.get_pool(cr.dbname)
     sprint_pool = pool.get('project.scrum.sprint')
     project_pool = pool.get('project.project')
     
     # For add the report header on the top of the report.
     tb = text_box.T(loc=(320, 500), text="/hL/15/bSprints velocities (of project)", line_style=None)
     tb.draw()
     
     sprint_ids = sprint_pool.search(cr, uid, [('project_id', '=', ids[0])])
     sprint_ids.sort()
     #print "sprint_ids = ", sprint_ids
     planned_velocity = [(0, 0)]
     effective_velocity = [(0,0)]
     for sprint_obj in sprint_pool.browse(cr, uid, sprint_ids, context=context):
         planned_velocity.append((sprint_obj.id, sprint_obj.planned_velocity))
         print "planned_velocity = ", planned_velocity
         if sprint_obj.state == 'done':
             effective_velocity.append((sprint_obj.id, sprint_obj.effective_velocity_sprint_done))
             print "effective_velocity = ", effective_velocity
         #planned_velocity = [(1, 15), (2, 18), (3, 20), (4, 20), (5, 20)]
         #effective_velocity = [(1, 12), (2, 17)]
     planned_velocity.sort()
     effective_velocity.sort()
     ar = area.T(x_grid_style=line_style.gray50_dash1,
                 x_axis=axis.X(label="Velocity"),
                 y_axis=axis.Y(label="Sprint"),
                 x_grid_interval=1,
                 y_grid_interval=1,
                 x_range = (0, None),
                 y_range = (0, None),
                 legend = None,
                 size = (680,450))
     
     ar.add_plot(line_plot.T(label="plot1", data=planned_velocity, line_style=line_style.red))
     ar.add_plot(line_plot.T(label="plot2", data=effective_velocity, line_style=line_style.green))
     
     entr1 = pychart.legend.Entry(label="Planned Velocity", line_style=line_style.red)
     entr2 = pychart.legend.Entry(label="Effective Velocity",line_style=line_style.green)
     legend = pychart.legend.T(nr_rows=2, inter_row_sep=5)
     legend.draw(ar,[entr1,entr2],canv)
     
     ar.draw(canv)
     
     canv.close()
     
     self.obj = external_pdf(io.getvalue())
     self.obj.render()
     return (self.obj.pdf, 'pdf')
コード例 #3
0
    def create(self, cr, uid, ids, datas, context=None):
        if context is None:
            context = {}

        pool = pooler.get_pool(cr.dbname)
        sprint_pool = pool.get('project.scrum.sprint')
        userStory_pool = pool.get('project.scrum.product.backlog')

        for sprint in sprint_pool.browse(cr, uid, ids, context=context):
            io = StringIO.StringIO(
            )  # <StringIO.StringIO instance at 0xba6c0ec>
            canv = canvas.init(
                fname=io,
                format='pdf')  # <pychart.pdfcanvas.T object at 0xba6c1ac>
            canv.set_author("David DRAPEAU")
            canv.set_title("Burndown Chart")

            total_points = self._get_total_points(cr, uid, sprint.id,
                                                  userStory_pool)
            nb_days = self._get_days_number(cr, uid, sprint.id, sprint_pool)
            guideline_data = self._get_guideline_data(cr, uid, sprint.id,
                                                      sprint_pool,
                                                      total_points, nb_days)
            effective_data = self._get_effective_data(cr, uid, sprint.id,
                                                      sprint_pool,
                                                      userStory_pool,
                                                      total_points, nb_days)

            ar = area.T(x_grid_style=line_style.gray50_dash1,
                        x_axis=axis.X(label="Dates"),
                        y_axis=axis.Y(label="Points"),
                        x_range=(1, nb_days + 1),
                        y_range=(0, total_points + 2),
                        legend=None,
                        size=(680, 450))

            draw_guideline = line_plot.T(label="Guideline",
                                         data=guideline_data,
                                         ycol=1,
                                         line_style=line_style.red)
            draw_effective_line = line_plot.T(label="Effective",
                                              data=effective_data,
                                              ycol=1,
                                              line_style=line_style.green)
            ar.add_plot(draw_guideline, draw_effective_line)

            entr1 = pychart.legend.Entry(label="guideline",
                                         line_style=line_style.red)
            entr2 = pychart.legend.Entry(label="burndownchart",
                                         line_style=line_style.green)
            legend = pychart.legend.T(nr_rows=2, inter_row_sep=5)
            legend.draw(ar, [entr1, entr2], canv)

            ar.draw()
        canv.close()

        self.obj = _burndown_story_point.external_pdf(io.getvalue())
        self.obj.render()
        return (self.obj.pdf, 'pdf')
コード例 #4
0
    def create(self, cr, uid, ids, datas, context=None):
        if context is None:
            context = {}
        io = StringIO.StringIO()

        canv = canvas.init(fname=io, format='pdf')
        canv.set_author("OpenERP")
        canv.set_title("Burndown Chart")
        pool = pooler.get_pool(cr.dbname)
        sprint_pool = pool.get('project.scrum.sprint')
        task_pool = pool.get('project.task')
        # For add the report header on the top of the report.
        tb = text_box.T(loc=(320, 500), text="/hL/15/bBurndown Chart", line_style=None)
        tb.draw()
        int_to_date = lambda x: '/a60{}' + datetime(time.localtime(x).tm_year, time.localtime(x).tm_mon, time.localtime(x).tm_mday).strftime('%d %m %Y')
        for sprint in sprint_pool.browse(cr, uid, ids, context=context):
            task_ids = task_pool.search(cr, uid, [('sprint_id','=',sprint.id)], context=context)
            datas = _burndown.compute_burndown(cr, uid, task_ids, sprint.date_start, sprint.date_stop)
            max_hour = reduce(lambda x,y: max(y[1],x), datas, 0) or None 
            def _interval_get(*args):
                result = []
                for i in range(20):
                    d = time.localtime(datas[0][0] + (((datas[-1][0]-datas[0][0])/20)*(i+1)))
                    res = time.mktime(d)
                    if (not result) or result[-1]<>res:
                        result.append(res)
                return result

            guideline__data=[(datas[0][0],max_hour), (datas[-1][0],0)]
            
            ar = area.T(x_grid_style=line_style.gray50_dash1,
                x_axis=axis.X(label="Date", format=int_to_date),
                y_axis=axis.Y(label="Burndown Chart - Planned Hours"),
                x_grid_interval=_interval_get,
                x_range = (datas[0][0],datas[-1][0]),
                y_range = (0,max_hour),
                legend = None,
                size = (680,450))
            ar.add_plot(line_plot.T(data=guideline__data, line_style=line_style.red))
            ar.add_plot(line_plot.T(data=datas, line_style=line_style.green))

            entr1 = pychart.legend.Entry(label="guideline", line_style=line_style.red)
            entr2 = pychart.legend.Entry(label="burndownchart",line_style=line_style.green)
            legend = pychart.legend.T(nr_rows=2, inter_row_sep=5)
            legend.draw(ar,[entr1,entr2],canv)

            ar.draw(canv)
        canv.close()

        self.obj = _burndown.external_pdf(io.getvalue())
        self.obj.render()
        return (self.obj.pdf, 'pdf')
コード例 #5
0
 def create(self, cr, uid, ids, datas, context=None):
     if context is None:
         context = {}
     
     pool = pooler.get_pool(cr.dbname)
     sprint_pool = pool.get('project.scrum.sprint')
     userStory_pool = pool.get('project.scrum.product.backlog')
     
     for sprint in sprint_pool.browse(cr, uid, ids, context=context):
         io = StringIO.StringIO() # <StringIO.StringIO instance at 0xba6c0ec>
         canv = canvas.init(fname=io, format='pdf') # <pychart.pdfcanvas.T object at 0xba6c1ac>
         canv.set_author("David DRAPEAU")
         canv.set_title("Burndown Chart")
         
         total_points = self._get_total_points(cr, uid, sprint.id, userStory_pool)
         nb_days = self._get_days_number(cr, uid, sprint.id, sprint_pool)
         guideline_data = self._get_guideline_data(cr, uid, sprint.id, sprint_pool, total_points, nb_days)
         effective_data = self._get_effective_data(cr, uid, sprint.id, sprint_pool, userStory_pool, total_points, nb_days)
         
         ar = area.T(x_grid_style=line_style.gray50_dash1,
                     x_axis=axis.X(label="Dates"),
                     y_axis= axis.Y(label="Points"),
                     x_range = (1, nb_days+1),
                     y_range = (0, total_points+2),
                     legend = None,
                     size = (680, 450))
         
         draw_guideline = line_plot.T(label="Guideline", data=guideline_data, ycol=1, line_style=line_style.red)
         draw_effective_line = line_plot.T(label="Effective", data=effective_data, ycol=1, line_style=line_style.green)
         ar.add_plot(draw_guideline, draw_effective_line)
         
         entr1 = pychart.legend.Entry(label="guideline", line_style=line_style.red)
         entr2 = pychart.legend.Entry(label="burndownchart",line_style=line_style.green)
         legend = pychart.legend.T(nr_rows=2, inter_row_sep=5)
         legend.draw(ar,[entr1,entr2],canv)
 
         ar.draw()
     canv.close()
     
     self.obj = _burndown_story_point.external_pdf(io.getvalue())
     self.obj.render()
     return (self.obj.pdf, 'pdf')