File: timesheet.py

package info (click to toggle)
tryton-modules-project 7.0.0-3
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 564 kB
  • sloc: python: 838; xml: 467; makefile: 11; sh: 3
file content (41 lines) | stat: -rw-r--r-- 1,288 bytes parent folder | download
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
# This file is part of Tryton.  The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.pool import Pool, PoolMeta
from trytond.transaction import Transaction


class Line(metaclass=PoolMeta):
    __name__ = 'timesheet.line'

    @classmethod
    def default_work(cls):
        pool = Pool()
        Work = pool.get('timesheet.work')
        try:
            default = super().default_work()
        except AttributeError:
            default = None
        project_works = Transaction().context.get('project.work')
        if project_works is not None:
            works = Work.search([
                    ('origin.id', 'in', project_works, 'project.work'),
                    ])
            if len(works) == 1:
                default = works[0].id
        return default


class Work(metaclass=PoolMeta):
    __name__ = 'timesheet.work'

    @classmethod
    def _get_origin(cls):
        return super()._get_origin() + ['project.work']

    def _validate_company(self):
        pool = Pool()
        ProjectWork = pool.get('project.work')
        result = super()._validate_company()
        if isinstance(self.origin, ProjectWork):
            result &= self.company == self.origin.company
        return result