Skip to content

Commit 4be1155

Browse files
Saran440newtratip
authored andcommitted
[IMP] project_key: black, isort
1 parent 9c926e0 commit 4be1155

File tree

9 files changed

+101
-157
lines changed

9 files changed

+101
-157
lines changed

project_key/__manifest__.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,11 @@
55
"name": "Project key",
66
"summary": "Module decorates projects and tasks with Project Key",
77
"category": "Project",
8-
"version": "12.0.1.0.0",
8+
"version": "13.0.1.0.0",
99
"license": "LGPL-3",
1010
"author": "Modoolar, Odoo Community Association (OCA)",
1111
"website": "https://github.com/OCA/project/",
12-
"depends": [
13-
"project",
14-
],
15-
"data": [
16-
"views/project_key_views.xml",
17-
],
12+
"depends": ["project"],
13+
"data": ["views/project_key_views.xml"],
1814
"post_init_hook": "post_init_hook",
1915
}

project_key/controllers/main.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,40 @@
22
# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html).
33

44
import werkzeug
5+
56
from odoo import http
7+
68
# from odoo.http import request
79

810

911
class ProjectBrowser(http.Controller):
10-
1112
def get_record_url(self, model, domain, action_xml_id):
1213
env = http.request.env()
1314

1415
records = env[model].search(domain)
1516
record_id = records and records.id or -1
1617
action_id = env.ref(action_xml_id).id
1718

18-
return "/web#id=%s&view_type=form&model=%s&action=%s" % (
19+
return "/web#id={}&view_type=form&model={}&action={}".format(
1920
record_id, model, action_id
2021
)
2122

2223
def get_task_url(self, key):
2324
return self.get_record_url(
24-
"project.task",
25-
[('key', '=ilike', key)],
26-
"project.action_view_task"
25+
"project.task", [("key", "=ilike", key)], "project.action_view_task"
2726
)
2827

2928
def get_project_url(self, key):
3029
return self.get_record_url(
3130
"project.project",
32-
[('key', '=ilike', key)],
33-
"project.open_view_project_all_config"
31+
[("key", "=ilike", key)],
32+
"project.open_view_project_all_config",
3433
)
3534

36-
@http.route(['/projects/<string:key>'], type='http', auth='user')
35+
@http.route(["/projects/<string:key>"], type="http", auth="user")
3736
def open_project(self, key, **kwargs):
3837
return werkzeug.utils.redirect(self.get_project_url(key), 301)
3938

40-
@http.route(['/tasks/<string:key>'], type='http', auth='user')
39+
@http.route(["/tasks/<string:key>"], type="http", auth="user")
4140
def open_task(self, key, **kwargs):
4241
return werkzeug.utils.redirect(self.get_task_url(key), 301)

project_key/hooks.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44

55
def post_init_hook(cr, registry):
66
from odoo import api, SUPERUSER_ID
7+
78
env = api.Environment(cr, SUPERUSER_ID, {})
8-
env['project.project']._set_default_project_key()
9+
env["project.project"]._set_default_project_key()

project_key/models/project_project.py

Lines changed: 31 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Copyright 2017 - 2018 Modoolar <[email protected]>
22
# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html).
33

4-
from odoo import models, fields, api, _
4+
from odoo import _, api, fields, models
55
from odoo.osv import expression
66
from odoo.tools import config
77

@@ -10,25 +10,17 @@ class Project(models.Model):
1010
_inherit = "project.project"
1111

1212
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"
1614
)
1715

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)
2517

2618
_sql_constraints = [
2719
("project_key_unique", "UNIQUE(key)", "Project key must be unique")
2820
]
2921

3022
@api.multi
31-
@api.onchange('name')
23+
@api.onchange("name")
3224
def _onchange_project_name(self):
3325
for rec in self:
3426
if rec.key:
@@ -37,12 +29,12 @@ def _onchange_project_name(self):
3729
if rec.name:
3830
rec.key = self.generate_project_key(rec.name)
3931
else:
40-
rec.key = ''
32+
rec.key = ""
4133

4234
@api.model
4335
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"])
4638

4739
new_project = super(Project, self).create(vals)
4840
new_project.create_sequence()
@@ -53,8 +45,8 @@ def create(self, vals):
5345
def write(self, values):
5446
update_key = False
5547

56-
if 'key' in values:
57-
key = values['key']
48+
if "key" in values:
49+
key = values["key"]
5850
update_key = self.key != key
5951

6052
res = super(Project, self).write(values)
@@ -76,16 +68,16 @@ def unlink(self):
7668
return super(Project, self).unlink()
7769

7870
@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):
8072
res = super(Project, self).name_search(name, args, operator, limit)
8173
if name:
8274
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]),
8678
]
8779
if operator in expression.NEGATIVE_TERM_OPERATORS:
88-
domain = ['&', '!'] + domain[1:]
80+
domain = ["&", "!"] + domain[1:]
8981
projects = self.search(domain + (args or []), limit=limit)
9082
return projects.name_get()
9183
else:
@@ -98,8 +90,8 @@ def create_sequence(self):
9890
"""
9991
self.ensure_one()
10092
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})
10395
return sequence
10496

10597
def update_sequence(self):
@@ -117,13 +109,11 @@ def _prepare_sequence_data(self, init=True):
117109
for number_increment and number_next_actual
118110
"""
119111
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,
127117
}
128118

129119
if init:
@@ -132,20 +122,20 @@ def _prepare_sequence_data(self, init=True):
132122
return values
133123

134124
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:
137127
return False
138128
return self.sudo().task_key_sequence_id.next_by_id()
139129

140130
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:
143133
return False
144134

145135
if not text:
146-
return ''
136+
return ""
147137

148-
data = text.split(' ')
138+
data = text.split(" ")
149139
if len(data) == 1:
150140
return data[0][:3].upper()
151141

@@ -174,7 +164,7 @@ def _update_task_keys(self):
174164
"""
175165

176166
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)
178168

179169
@api.model
180170
def _set_default_project_key(self):
@@ -185,9 +175,9 @@ def _set_default_project_key(self):
185175
installation.
186176
:return:
187177
"""
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+
):
191181
project.key = self.generate_project_key(project.name)
192182
project.create_sequence()
193183

project_key/models/project_task.py

Lines changed: 21 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,51 @@
11
# Copyright 2017 - 2018 Modoolar <[email protected]>
22
# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html).
33

4-
from odoo import models, fields, api
4+
from odoo import api, fields, models
55
from odoo.osv import expression
66

77
TASK_URL = "/web#id=%s&view_type=form&model=project.task&action=%s"
88

99

1010
class Task(models.Model):
11-
_inherit = 'project.task'
11+
_inherit = "project.task"
1212

13-
key = fields.Char(
14-
string='key',
15-
size=20,
16-
required=False,
17-
index=True,
18-
)
13+
key = fields.Char(string="key", size=20, required=False, index=True)
1914

20-
url = fields.Char(
21-
string='URL',
22-
compute="_compute_task_url",
23-
)
15+
url = fields.Char(string="URL", compute="_compute_task_url")
2416

25-
_sql_constraints = [
26-
("task_key_unique", "UNIQUE(key)", "Task key must be unique!")
27-
]
17+
_sql_constraints = [("task_key_unique", "UNIQUE(key)", "Task key must be unique!")]
2818

2919
@api.multi
3020
def _compute_task_url(self):
31-
action_id = self.env.ref('project.action_view_task').id
21+
action_id = self.env.ref("project.action_view_task").id
3222
for task in self:
3323
task.url = TASK_URL % (task.id, action_id)
3424

3525
@api.model
36-
@api.returns('self', lambda value: value.id)
26+
@api.returns("self", lambda value: value.id)
3727
def create(self, vals):
3828
get = self.env.context.get
3929

40-
project_id = vals.get('project_id', False)
30+
project_id = vals.get("project_id", False)
4131
if not project_id:
42-
project_id = get('default_project_id', False)
32+
project_id = get("default_project_id", False)
4333

44-
if not project_id and get('active_model', False) == 'project.project':
45-
project_id = get('active_id', False)
34+
if not project_id and get("active_model", False) == "project.project":
35+
project_id = get("active_id", False)
4636

4737
if project_id:
48-
project = self.env['project.project'].browse(project_id)
49-
vals['key'] = project.get_next_task_key()
38+
project = self.env["project.project"].browse(project_id)
39+
vals["key"] = project.get_next_task_key()
5040
return super(Task, self).create(vals)
5141

5242
@api.multi
5343
def write(self, vals):
54-
project_id = vals.get('project_id', False)
44+
project_id = vals.get("project_id", False)
5545
if not project_id:
5646
return super(Task, self).write(vals)
5747

58-
project = self.env['project.project'].browse(project_id)
48+
project = self.env["project.project"].browse(project_id)
5949
for task in self:
6050
if task.key and task.project_id.id == project.id:
6151
continue
@@ -66,32 +56,23 @@ def write(self, vals):
6656
return super(Task, self).write(vals)
6757

6858
def prepare_task_for_project_switch(self, task, project):
69-
data = {
70-
'key': project.get_next_task_key(),
71-
'project_id': project.id
72-
}
59+
data = {"key": project.get_next_task_key(), "project_id": project.id}
7360

7461
if len(task.child_ids) > 0:
75-
data['child_ids'] = [
76-
(1, child.id, self.prepare_task_for_project_switch(
77-
child, project
78-
))
62+
data["child_ids"] = [
63+
(1, child.id, self.prepare_task_for_project_switch(child, project))
7964
for child in task.child_ids
8065
]
8166
return data
8267

8368
@api.model
84-
def name_search(self, name, args=None, operator='ilike', limit=100):
69+
def name_search(self, name, args=None, operator="ilike", limit=100):
8570
args = args or []
8671
domain = []
8772
if name:
88-
domain = [
89-
'|',
90-
('key', '=ilike', name + '%'),
91-
('name', operator, name)
92-
]
73+
domain = ["|", ("key", "=ilike", name + "%"), ("name", operator, name)]
9374
if operator in expression.NEGATIVE_TERM_OPERATORS:
94-
domain = ['&', '!'] + domain[1:]
75+
domain = ["&", "!"] + domain[1:]
9576
tasks = self.search(domain + args, limit=limit)
9677
return tasks.name_get()
9778

0 commit comments

Comments
 (0)