24
24
import os .path
25
25
26
26
import werkzeug
27
+ import contextlib
27
28
28
29
29
30
def setup (app ):
@@ -36,6 +37,7 @@ def linkcode_resolve(domain, info):
36
37
# TODO: js?
37
38
if domain != 'py' :
38
39
return None
40
+
39
41
if not (app .config .github_user and app .config .github_project ):
40
42
return None
41
43
@@ -53,10 +55,8 @@ def linkcode_resolve(domain, info):
53
55
return None
54
56
55
57
# get original from decorated methods
56
- try :
57
- obj = getattr (obj , '_orig' )
58
- except AttributeError :
59
- pass
58
+ with contextlib .suppress (AttributeError ):
59
+ obj = obj ._orig
60
60
61
61
try :
62
62
obj_source_path = inspect .getsourcefile (obj )
@@ -65,37 +65,34 @@ def linkcode_resolve(domain, info):
65
65
# obj doesn't have a module, or something
66
66
return None
67
67
68
- import odoo
69
68
# FIXME: make finding project root project-independent
70
- project_root = os .path .join (os .path .dirname (odoo .__file__ ), '..' )
69
+ if module .startswith ('odoo.upgrade.util' ):
70
+ from odoo .upgrade import util
71
+ project = 'upgrade-util'
72
+ project_root = os .path .join (os .path .dirname (util .__file__ ), '../..' )
73
+ else :
74
+ import odoo
75
+ project = 'odoo'
76
+ project_root = os .path .join (os .path .dirname (odoo .__file__ ), '..' )
71
77
return make_github_link (
72
78
app ,
73
- os .path .relpath (obj_source_path , project_root ),
74
- line ,
75
- odoo_repository = True )
79
+ project = project ,
80
+ path = os .path .relpath (obj_source_path , project_root ),
81
+ line = line ,
82
+ )
76
83
app .config .linkcode_resolve = linkcode_resolve
77
84
78
85
return {
79
86
'parallel_read_safe' : True ,
80
87
'parallel_write_safe' : True
81
88
}
82
89
83
- def make_github_link (app , path , line = None , mode = "blob" , odoo_repository = False ):
84
- config = app .config
85
-
86
- user = config .github_user
87
- project = config .github_project
88
- if odoo_repository :
89
- user = 'odoo'
90
- project = 'odoo'
91
-
92
- urlpath = "/{user}/{project}/{mode}/{branch}/{path}" .format (
93
- user = user ,
94
- project = project ,
95
- branch = config .version or 'master' ,
96
- path = path ,
97
- mode = mode ,
98
- )
90
+ def make_github_link (app , project , path , line = None , mode = "blob" ):
91
+ branch = app .config .version or 'master'
92
+ if project == 'upgrade-util' :
93
+ branch = 'master'
94
+
95
+ urlpath = f"/{ app .config .github_user } /{ project } /{ mode } /{ branch } /{ path } "
99
96
return werkzeug .urls .url_unparse ((
100
97
'https' ,
101
98
'github.com' ,
@@ -116,4 +113,4 @@ def add_doc_link(app, pagename, templatename, context, doctree):
116
113
source_suffix = app .config .source_suffix
117
114
source_suffix = next (iter (source_suffix ))
118
115
context ['github_link' ] = lambda mode = 'edit' : make_github_link (
119
- app , f'content/{ pagename } { source_suffix } ' , mode = mode )
116
+ app , project = app . config . github_project , path = f'content/{ pagename } { source_suffix } ' , mode = mode )
0 commit comments