1
1
# Copyright 2017 - 2018 Modoolar <[email protected] >
2
2
# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html).
3
3
4
- from odoo import models , fields , api , _
4
+ from odoo import _ , api , fields , models
5
5
from odoo .osv import expression
6
6
from odoo .tools import config
7
7
@@ -10,25 +10,17 @@ class Project(models.Model):
10
10
_inherit = "project.project"
11
11
12
12
task_key_sequence_id = fields .Many2one (
13
- comodel_name = 'ir.sequence' ,
14
- string = 'Key Sequence' ,
15
- ondelete = "restrict" ,
13
+ comodel_name = "ir.sequence" , string = "Key Sequence" , ondelete = "restrict"
16
14
)
17
15
18
- key = fields .Char (
19
- string = 'Key' ,
20
- size = 10 ,
21
- required = False ,
22
- index = True ,
23
- copy = False
24
- )
16
+ key = fields .Char (string = "Key" , size = 10 , required = False , index = True , copy = False )
25
17
26
18
_sql_constraints = [
27
19
("project_key_unique" , "UNIQUE(key)" , "Project key must be unique" )
28
20
]
29
21
30
22
@api .multi
31
- @api .onchange (' name' )
23
+ @api .onchange (" name" )
32
24
def _onchange_project_name (self ):
33
25
for rec in self :
34
26
if rec .key :
@@ -37,12 +29,12 @@ def _onchange_project_name(self):
37
29
if rec .name :
38
30
rec .key = self .generate_project_key (rec .name )
39
31
else :
40
- rec .key = ''
32
+ rec .key = ""
41
33
42
34
@api .model
43
35
def create (self , vals ):
44
- if ' key' not in vals :
45
- vals [' key' ] = self .generate_project_key (vals [' name' ])
36
+ if " key" not in vals :
37
+ vals [" key" ] = self .generate_project_key (vals [" name" ])
46
38
47
39
new_project = super (Project , self ).create (vals )
48
40
new_project .create_sequence ()
@@ -53,8 +45,8 @@ def create(self, vals):
53
45
def write (self , values ):
54
46
update_key = False
55
47
56
- if ' key' in values :
57
- key = values [' key' ]
48
+ if " key" in values :
49
+ key = values [" key" ]
58
50
update_key = self .key != key
59
51
60
52
res = super (Project , self ).write (values )
@@ -76,16 +68,16 @@ def unlink(self):
76
68
return super (Project , self ).unlink ()
77
69
78
70
@api .model
79
- def name_search (self , name , args = None , operator = ' ilike' , limit = 100 ):
71
+ def name_search (self , name , args = None , operator = " ilike" , limit = 100 ):
80
72
res = super (Project , self ).name_search (name , args , operator , limit )
81
73
if name :
82
74
domain = [
83
- '|' ,
84
- (' key' , ' ilike' , name + '%' ),
85
- ('id' , 'in' , [x [0 ] for x in res ])
75
+ "|" ,
76
+ (" key" , " ilike" , name + "%" ),
77
+ ("id" , "in" , [x [0 ] for x in res ]),
86
78
]
87
79
if operator in expression .NEGATIVE_TERM_OPERATORS :
88
- domain = ['&' , '!' ] + domain [1 :]
80
+ domain = ["&" , "!" ] + domain [1 :]
89
81
projects = self .search (domain + (args or []), limit = limit )
90
82
return projects .name_get ()
91
83
else :
@@ -98,8 +90,8 @@ def create_sequence(self):
98
90
"""
99
91
self .ensure_one ()
100
92
sequence_data = self ._prepare_sequence_data ()
101
- sequence = self .env [' ir.sequence' ].sudo ().create (sequence_data )
102
- self .write ({' task_key_sequence_id' : sequence .id })
93
+ sequence = self .env [" ir.sequence" ].sudo ().create (sequence_data )
94
+ self .write ({" task_key_sequence_id" : sequence .id })
103
95
return sequence
104
96
105
97
def update_sequence (self ):
@@ -117,13 +109,11 @@ def _prepare_sequence_data(self, init=True):
117
109
for number_increment and number_next_actual
118
110
"""
119
111
values = {
120
- 'name' : "%s %s" % (
121
- _ ("Project task sequence for project " ), self .name
122
- ),
123
- 'implementation' : 'standard' ,
124
- 'code' : 'project.task.key.%s' % (self .id ,),
125
- 'prefix' : "%s-" % (self .key ,),
126
- 'use_date_range' : False ,
112
+ "name" : "{} {}" .format (_ ("Project task sequence for project " ), self .name ),
113
+ "implementation" : "standard" ,
114
+ "code" : "project.task.key.{}" .format (self .id ),
115
+ "prefix" : "{}-" .format (self .key ),
116
+ "use_date_range" : False ,
127
117
}
128
118
129
119
if init :
@@ -132,20 +122,20 @@ def _prepare_sequence_data(self, init=True):
132
122
return values
133
123
134
124
def get_next_task_key (self ):
135
- test_project_key = self .env .context .get (' test_project_key' )
136
- if config [' test_enable' ] and not test_project_key :
125
+ test_project_key = self .env .context .get (" test_project_key" )
126
+ if config [" test_enable" ] and not test_project_key :
137
127
return False
138
128
return self .sudo ().task_key_sequence_id .next_by_id ()
139
129
140
130
def generate_project_key (self , text ):
141
- test_project_key = self .env .context .get (' test_project_key' )
142
- if config [' test_enable' ] and not test_project_key :
131
+ test_project_key = self .env .context .get (" test_project_key" )
132
+ if config [" test_enable" ] and not test_project_key :
143
133
return False
144
134
145
135
if not text :
146
- return ''
136
+ return ""
147
137
148
- data = text .split (' ' )
138
+ data = text .split (" " )
149
139
if len (data ) == 1 :
150
140
return data [0 ][:3 ].upper ()
151
141
@@ -174,7 +164,7 @@ def _update_task_keys(self):
174
164
"""
175
165
176
166
self .env .cr .execute (reindex_query , (self .id ,))
177
- self .env [' project.task' ].invalidate_cache ([' key' ], self .task_ids .ids )
167
+ self .env [" project.task" ].invalidate_cache ([" key" ], self .task_ids .ids )
178
168
179
169
@api .model
180
170
def _set_default_project_key (self ):
@@ -185,9 +175,9 @@ def _set_default_project_key(self):
185
175
installation.
186
176
:return:
187
177
"""
188
- for project in self .with_context (active_test = False ).search ([
189
- ( ' key' , '=' , False )
190
- ] ):
178
+ for project in self .with_context (active_test = False ).search (
179
+ [( " key" , "=" , False )]
180
+ ):
191
181
project .key = self .generate_project_key (project .name )
192
182
project .create_sequence ()
193
183
0 commit comments