Ejemplo n.º 1
0
 def _createColumns(self):
     # pylint: disable=W0142
     kwargs = dict(renderDescriptionCallback=lambda effort: effort.description(),
                   resizeCallback=self.onResizeColumn)
     return [widgets.Column(name, columnHeader, eventType, 
             renderCallback=renderCallback,
             sortCallback=sortCallback,
             width=self.getColumnWidth(name), **kwargs) \
         for name, columnHeader, eventType, renderCallback, sortCallback in \
         ('period', _('Period'), effort.Effort.durationChangedEventType(), 
          self.__renderPeriod, 
          uicommand.ViewerSortByCommand(viewer=self, value='period')),
         ('task', _('Task'), effort.Effort.taskChangedEventType(), 
          lambda effort: effort.task().subject(recursive=True), None),
         ('description', _('Description'), 
          effort.Effort.descriptionChangedEventType(), 
          lambda effort: effort.description(), None)] + \
         [widgets.Column('categories', _('Categories'),
          width=self.getColumnWidth('categories'),
          renderCallback=self.renderCategories, **kwargs)] + \
         [widgets.Column(name, columnHeader, eventType, 
          width=self.getColumnWidth(name),
          renderCallback=renderCallback, alignment=wx.LIST_FORMAT_RIGHT,
          **kwargs) \
         for name, columnHeader, eventType, renderCallback in \
         ('timeSpent', _('Time spent'), 
          effort.Effort.durationChangedEventType(), self.__renderTimeSpent),
         ('totalTimeSpent', _('Total time spent'), 
          effort.Effort.durationChangedEventType(), 
          self.__renderTotalTimeSpent),
         ('revenue', _('Revenue'), effort.Effort.revenueChangedEventType(), 
          self.__renderRevenue),
         ('totalRevenue', _('Total revenue'), 
          effort.Effort.revenueChangedEventType(), self.__renderTotalRevenue)] + \
          [widgets.Column(name, columnHeader, eventType, 
           renderCallback=renderCallback, alignment=wx.LIST_FORMAT_RIGHT,
           width=self.getColumnWidth(name), **kwargs) \
          for name, columnHeader, eventType, renderCallback in \
             ('monday', _('Monday'), 
              effort.Effort.durationChangedEventType(),  
              lambda effort: self.__renderTimeSpentOnDay(effort, 0)),
             ('tuesday', _('Tuesday'), 
              effort.Effort.durationChangedEventType(),
              lambda effort: self.__renderTimeSpentOnDay(effort, 1)),
             ('wednesday', _('Wednesday'), 
              effort.Effort.durationChangedEventType(),  
              lambda effort: self.__renderTimeSpentOnDay(effort, 2)),
             ('thursday', _('Thursday'), 
              effort.Effort.durationChangedEventType(),  
              lambda effort: self.__renderTimeSpentOnDay(effort, 3)),
             ('friday', _('Friday'), 
              effort.Effort.durationChangedEventType(),  
              lambda effort: self.__renderTimeSpentOnDay(effort, 4)),
             ('saturday', _('Saturday'), 
              effort.Effort.durationChangedEventType(),  
              lambda effort: self.__renderTimeSpentOnDay(effort, 5)),
             ('sunday', _('Sunday'), 
              effort.Effort.durationChangedEventType(),  
              lambda effort: self.__renderTimeSpentOnDay(effort, 6))      
          ]
Ejemplo n.º 2
0
 def testNewEffortUsesSameTaskAsSelectedEffort(self):
     self.viewer.widget.select([self.task2.efforts()[-1]])
     self.viewer.updateSelection()
     dialog = self.viewer.newItemDialog(selectedTasks=[self.task2], 
                                        bitmap='new')
     for effort in dialog._command.efforts:
         self.assertEqual(self.task2, effort.task())
Ejemplo n.º 3
0
 def _createColumns(self):
     # pylint: disable=W0142
     kwargs = dict(resizeCallback=self.onResizeColumn)
     return [widgets.Column(name, columnHeader, eventType,
             renderCallback=renderCallback,
             sortCallback=sortCallback,
             width=self.getColumnWidth(name), **kwargs) \
         for name, columnHeader, eventType, renderCallback, sortCallback in \
         ('period', _('Period'), effort.Effort.durationChangedEventType(),
          self.__renderPeriod,
          uicommand.ViewerSortByCommand(viewer=self, value='period')),
         ('task', _('Task'), effort.Effort.taskChangedEventType(),
          lambda effort: effort.task().subject(recursive=True), None),
         ('description', _('Description'),
          effort.Effort.descriptionChangedEventType(),
          lambda effort: effort.description(), None)] + \
         [widgets.Column('categories', _('Categories'),
          width=self.getColumnWidth('categories'),
          renderCallback=self.renderCategories, **kwargs)] + \
         [widgets.Column(name, columnHeader, eventType,
          width=self.getColumnWidth(name),
          renderCallback=renderCallback, alignment=wx.LIST_FORMAT_RIGHT,
          **kwargs) \
         for name, columnHeader, eventType, renderCallback in \
         ('timeSpent', _('Time spent'),
          effort.Effort.durationChangedEventType(), self.__renderTimeSpent),
         ('totalTimeSpent', _('Total time spent'),
          effort.Effort.durationChangedEventType(),
          self.__renderTotalTimeSpent),
         ('revenue', _('Revenue'), effort.Effort.revenueChangedEventType(),
          self.__renderRevenue),
         ('totalRevenue', _('Total revenue'),
          effort.Effort.revenueChangedEventType(), self.__renderTotalRevenue)] + \
          [widgets.Column(name, columnHeader, eventType,
           renderCallback=renderCallback, alignment=wx.LIST_FORMAT_RIGHT,
           width=self.getColumnWidth(name), **kwargs) \
          for name, columnHeader, eventType, renderCallback in \
             ('monday', _('Monday'),
              effort.Effort.durationChangedEventType(),
              lambda effort: self.__renderTimeSpentOnDay(effort, 0)),
             ('tuesday', _('Tuesday'),
              effort.Effort.durationChangedEventType(),
              lambda effort: self.__renderTimeSpentOnDay(effort, 1)),
             ('wednesday', _('Wednesday'),
              effort.Effort.durationChangedEventType(),
              lambda effort: self.__renderTimeSpentOnDay(effort, 2)),
             ('thursday', _('Thursday'),
              effort.Effort.durationChangedEventType(),
              lambda effort: self.__renderTimeSpentOnDay(effort, 3)),
             ('friday', _('Friday'),
              effort.Effort.durationChangedEventType(),
              lambda effort: self.__renderTimeSpentOnDay(effort, 4)),
             ('saturday', _('Saturday'),
              effort.Effort.durationChangedEventType(),
              lambda effort: self.__renderTimeSpentOnDay(effort, 5)),
             ('sunday', _('Sunday'),
              effort.Effort.durationChangedEventType(),
              lambda effort: self.__renderTimeSpentOnDay(effort, 6))
          ]
Ejemplo n.º 4
0
 def do_command(self):
     super(NewEffortCommand, self).do_command()
     for effort in self.efforts:  # pylint: disable=W0621
         task = effort.task()
         if task not in self.__oldActualStartDateTimes and effort.getStart() < task.actualStartDateTime():
             self.__oldActualStartDateTimes[task] = task.actualStartDateTime()
             task.setActualStartDateTime(effort.getStart())
         task.addEffort(effort)
Ejemplo n.º 5
0
 def tasksToStopTracking(self):
     stoppable = lambda effort: effort.isBeingTracked(
     ) and not effort.isTotal()
     return set([
         effort.task()
         for effort in (self.items if self.items else self.list)
         if stoppable(effort)
     ])  # pylint: disable=W0621
Ejemplo n.º 6
0
 def undo_command(self):
     super(NewEffortCommand, self).undo_command()
     for effort in self.efforts:  # pylint: disable=W0621
         task = effort.task()
         task.removeEffort(effort)
         if task in self.__oldActualStartDateTimes:
             task.setActualStartDateTime(self.__oldActualStartDateTimes[task])
             del self.__oldActualStartDateTimes[task]
Ejemplo n.º 7
0
 def undo_command(self):
     super(NewEffortCommand, self).undo_command()
     for effort in self.efforts:  # pylint: disable=W0621
         task = effort.task()
         task.removeEffort(effort)
         if task in self.__oldActualStartDateTimes:
             task.setActualStartDateTime(
                 self.__oldActualStartDateTimes[task])
             del self.__oldActualStartDateTimes[task]
Ejemplo n.º 8
0
 def do_command(self):
     super(NewEffortCommand, self).do_command()
     for effort in self.efforts:  # pylint: disable=W0621
         task = effort.task()
         if task not in self.__oldActualStartDateTimes and effort.getStart(
         ) < task.actualStartDateTime():
             self.__oldActualStartDateTimes[
                 task] = task.actualStartDateTime()
             task.setActualStartDateTime(effort.getStart())
         task.addEffort(effort)
Ejemplo n.º 9
0
 def _createColumns(self):
     return [widgets.Column(name, columnHeader, eventType, 
             renderCallback=renderCallback, width=self.getColumnWidth(name),
             resizeCallback=self.onResizeColumn) \
         for name, columnHeader, eventType, renderCallback in \
         ('period', _('Period'), 'effort.duration', self.renderPeriod),
         ('task', _('Task'), effort.Effort.taskChangedEventType(), lambda effort: effort.task().subject(recursive=True)),
         ('description', _('Description'), effort.Effort.descriptionChangedEventType(), lambda effort: effort.description())] + \
         [widgets.Column('categories', _('Categories'),
          width=self.getColumnWidth('categories'),
          renderCallback=self.renderCategory, 
          renderDescriptionCallback=lambda effort: effort.description(),
          resizeCallback=self.onResizeColumn)] + \
         [widgets.Column('totalCategories', _('Overall categories'),
          width=self.getColumnWidth('totalCategories'),
          renderCallback=lambda effort: self.renderCategory(effort, recursive=True),
          renderDescriptionCallback=lambda effort: effort.description(),
          resizeCallback=self.onResizeColumn)] + \
         [widgets.Column(name, columnHeader, eventType, 
          width=self.getColumnWidth(name), resizeCallback=self.onResizeColumn,
          renderCallback=renderCallback, alignment=wx.LIST_FORMAT_RIGHT) \
         for name, columnHeader, eventType, renderCallback in \
         ('timeSpent', _('Time spent'), 'effort.duration', 
             lambda effort: render.timeSpent(effort.duration())),
         ('revenue', _('Revenue'), 'effort.revenue', 
             lambda effort: render.amount(effort.revenue())),
         ('totalTimeSpent', _('Total time spent'), 'effort.totalDuration',  
              lambda effort: render.timeSpent(effort.duration(recursive=True))),
         ('totalRevenue', _('Total revenue'), 'effort.totalRevenue',
              lambda effort: render.amount(effort.revenue(recursive=True)))] + \
          [widgets.Column(name, columnHeader, eventType, 
           renderCallback=renderCallback, alignment=wx.LIST_FORMAT_RIGHT,
           width=self.getColumnWidth(name), resizeCallback=self.onResizeColumn) \
          for name, columnHeader, eventType, renderCallback in \
             ('monday', _('Monday'), 'effort.duration',  
              lambda effort: self.renderTimeSpentOnDay(effort, 0)),                             
             ('tuesday', _('Tuesday'), 'effort.duration',  
              lambda effort: self.renderTimeSpentOnDay(effort, 1)),
             ('wednesday', _('Wednesday'), 'effort.duration',  
              lambda effort: self.renderTimeSpentOnDay(effort, 2)),
             ('thursday', _('Thursday'), 'effort.duration',  
              lambda effort: self.renderTimeSpentOnDay(effort, 3)),
             ('friday', _('Friday'), 'effort.duration',  
              lambda effort: self.renderTimeSpentOnDay(effort, 4)),
             ('saturday', _('Saturday'), 'effort.duration',  
              lambda effort: self.renderTimeSpentOnDay(effort, 5)),
             ('sunday', _('Sunday'), 'effort.duration',  
              lambda effort: self.renderTimeSpentOnDay(effort, 6))      
          ]
Ejemplo n.º 10
0
 def do_command(self):
     for effort in self.efforts:
         effort.task().addEffort(effort)
Ejemplo n.º 11
0
 def name_subject(self, effort):  # pylint: disable=W0621
     return effort.task().subject()
Ejemplo n.º 12
0
 def undo_command(self):
     for effort in self.efforts: # pylint: disable-msg=W0621
         effort.task().removeEffort(effort)
Ejemplo n.º 13
0
 def do_command(self):
     for effort in self.efforts: # pylint: disable-msg=W0621
         effort.task().addEffort(effort)
Ejemplo n.º 14
0
 def name_subject(self, effort):
     return effort.task().subject()
Ejemplo n.º 15
0
 def getBackgroundColor(self, effort):
     return effort.task().color()
Ejemplo n.º 16
0
 def tasksToStopTracking(self):
     stoppable = lambda effort: effort.isBeingTracked() and not effort.isTotal()
     return set([effort.task() for effort in (self.items if self.items else self.list) if stoppable(effort)])  # pylint: disable=W0621 
Ejemplo n.º 17
0
 def tasksToStopTracking(self):
     return set([effort.task() for effort in self.list if effort.isBeingTracked() and not effort.isTotal()])
Ejemplo n.º 18
0
 def _createColumns(self):
     # pylint: disable=W0142
     kwargs = dict(resizeCallback=self.onResizeColumn)
     return (
         [
             widgets.Column(
                 name,
                 columnHeader,
                 eventType,
                 renderCallback=renderCallback,
                 sortCallback=sortCallback,
                 width=self.getColumnWidth(name),
                 **kwargs
             )
             for name, columnHeader, eventType, renderCallback, sortCallback in (
                 "period",
                 _("Period"),
                 effort.Effort.durationChangedEventType(),
                 self.__renderPeriod,
                 uicommand.ViewerSortByCommand(viewer=self, value="period"),
             ),
             (
                 "task",
                 _("Task"),
                 effort.Effort.taskChangedEventType(),
                 lambda effort: effort.task().subject(recursive=True),
                 None,
             ),
             (
                 "description",
                 _("Description"),
                 effort.Effort.descriptionChangedEventType(),
                 lambda effort: effort.description(),
                 None,
             ),
         ]
         + [
             widgets.Column(
                 "categories",
                 _("Categories"),
                 width=self.getColumnWidth("categories"),
                 renderCallback=self.renderCategories,
                 **kwargs
             )
         ]
         + [
             widgets.Column(
                 name,
                 columnHeader,
                 eventType,
                 width=self.getColumnWidth(name),
                 renderCallback=renderCallback,
                 alignment=wx.LIST_FORMAT_RIGHT,
                 **kwargs
             )
             for name, columnHeader, eventType, renderCallback in (
                 "timeSpent",
                 _("Time spent"),
                 effort.Effort.durationChangedEventType(),
                 self.__renderTimeSpent,
             ),
             (
                 "totalTimeSpent",
                 _("Total time spent"),
                 effort.Effort.durationChangedEventType(),
                 self.__renderTotalTimeSpent,
             ),
             ("revenue", _("Revenue"), effort.Effort.revenueChangedEventType(), self.__renderRevenue),
             (
                 "totalRevenue",
                 _("Total revenue"),
                 effort.Effort.revenueChangedEventType(),
                 self.__renderTotalRevenue,
             ),
         ]
         + [
             widgets.Column(
                 name,
                 columnHeader,
                 eventType,
                 renderCallback=renderCallback,
                 alignment=wx.LIST_FORMAT_RIGHT,
                 width=self.getColumnWidth(name),
                 **kwargs
             )
             for name, columnHeader, eventType, renderCallback in (
                 "monday",
                 _("Monday"),
                 effort.Effort.durationChangedEventType(),
                 lambda effort: self.__renderTimeSpentOnDay(effort, 0),
             ),
             (
                 "tuesday",
                 _("Tuesday"),
                 effort.Effort.durationChangedEventType(),
                 lambda effort: self.__renderTimeSpentOnDay(effort, 1),
             ),
             (
                 "wednesday",
                 _("Wednesday"),
                 effort.Effort.durationChangedEventType(),
                 lambda effort: self.__renderTimeSpentOnDay(effort, 2),
             ),
             (
                 "thursday",
                 _("Thursday"),
                 effort.Effort.durationChangedEventType(),
                 lambda effort: self.__renderTimeSpentOnDay(effort, 3),
             ),
             (
                 "friday",
                 _("Friday"),
                 effort.Effort.durationChangedEventType(),
                 lambda effort: self.__renderTimeSpentOnDay(effort, 4),
             ),
             (
                 "saturday",
                 _("Saturday"),
                 effort.Effort.durationChangedEventType(),
                 lambda effort: self.__renderTimeSpentOnDay(effort, 5),
             ),
             (
                 "sunday",
                 _("Sunday"),
                 effort.Effort.durationChangedEventType(),
                 lambda effort: self.__renderTimeSpentOnDay(effort, 6),
             ),
         ]
     )
Ejemplo n.º 19
0
 def name_subject(self, effort):  # pylint: disable=W0621
     return effort.task().subject()
Ejemplo n.º 20
0
 def undo_command(self):
     for effort in self.efforts:
         effort.task().removeEffort(effort)
Ejemplo n.º 21
0
 def testNewEffortUsesSameTaskAsSelectedEffort(self):
     self.viewer.widget.select([self.task2.efforts()[-1]])
     dialog = self.viewer.newItemDialog(selectedTasks=[self.task2],
                                        bitmap='new')
     for effort in dialog._command.efforts:
         self.assertEqual(self.task2, effort.task())