##// END OF EJS Templates
Rewrote url routes to make all validations and parsing for compare view + added compare fork button into forked repos
marcink -
r2363:745dda78 codereview
parent child Browse files
Show More
@@ -416,10 +416,12 b' def make_map(config):'
416 controller='changeset', action='raw_changeset',
416 controller='changeset', action='raw_changeset',
417 revision='tip', conditions=dict(function=check_repo))
417 revision='tip', conditions=dict(function=check_repo))
418
418
419 rmap.connect('compare_home',
419 rmap.connect('compare_url',
420 '/{repo_name:.*}/compare/{ref:.*}',
420 '/{repo_name:.*}/compare/{org_ref_type}@{org_ref}...{other_ref_type}@{other_ref}',
421 controller='compare', action='index',
421 controller='compare', action='index',
422 conditions=dict(function=check_repo))
422 conditions=dict(function=check_repo),
423 requirements=dict(org_ref_type='(branch|book|tag)',
424 other_ref_type='(branch|book|tag)'))
423
425
424 rmap.connect('pullrequest_home',
426 rmap.connect('pullrequest_home',
425 '/{repo_name:.*}/pull-request/new',
427 '/{repo_name:.*}/pull-request/new',
@@ -49,41 +49,6 b' class CompareController(BaseRepoControll'
49 def __before__(self):
49 def __before__(self):
50 super(CompareController, self).__before__()
50 super(CompareController, self).__before__()
51
51
52 def _handle_ref(self, ref):
53 """
54 Parse the org...other string
55 Possible formats are
56 `(branch|book|tag):<name>...(branch|book|tag):<othername>`
57
58 :param ref: <orginal_reference>...<other_reference>
59 :type ref: str
60 """
61 org_repo = c.rhodecode_db_repo.repo_name
62
63 def org_parser(org):
64 _repo = org_repo
65 name, val = org.split(':')
66 return _repo, (name, val)
67
68 def other_parser(other):
69 _other_repo = request.GET.get('repo')
70 _repo = org_repo
71 name, val = other.split(':')
72 if _other_repo:
73 _repo = _other_repo
74
75 return _repo, (name, val)
76
77 if '...' in ref:
78 try:
79 org, other = ref.split('...')
80 org_repo, org_ref = org_parser(org)
81 other_repo, other_ref = other_parser(other)
82 return org_repo, org_ref, other_repo, other_ref
83 except:
84 log.error(traceback.format_exc())
85
86 raise HTTPNotFound
87
52
88 def _get_discovery(self, org_repo, org_ref, other_repo, other_ref):
53 def _get_discovery(self, org_repo, org_ref, other_repo, other_ref):
89 from mercurial import discovery
54 from mercurial import discovery
@@ -125,13 +90,18 b' class CompareController(BaseRepoControll'
125
90
126 return changesets
91 return changesets
127
92
128 def index(self, ref):
93 def index(self, org_ref_type, org_ref, other_ref_type, other_ref):
129 org_repo, org_ref, other_repo, other_ref = self._handle_ref(ref)
130
94
131 c.swap_url = h.url('compare_home', repo_name=other_repo,
95 org_repo = c.rhodecode_db_repo.repo_name
132 ref='%s...%s' % (':'.join(other_ref),
96 org_ref = (org_ref_type, org_ref)
133 ':'.join(org_ref)),
97 other_ref = (other_ref_type, other_ref)
134 repo=org_repo)
98 other_repo = request.GET.get('repo', org_repo)
99
100 c.swap_url = h.url('compare_url', repo_name=other_repo,
101 org_ref_type=other_ref[0], org_ref=other_ref[1],
102 other_ref_type=org_ref[0], other_ref=org_ref[1],
103 repo=org_repo)
104
135 c.org_repo = org_repo = Repository.get_by_repo_name(org_repo)
105 c.org_repo = org_repo = Repository.get_by_repo_name(org_repo)
136 c.other_repo = other_repo = Repository.get_by_repo_name(other_repo)
106 c.other_repo = other_repo = Repository.get_by_repo_name(other_repo)
137
107
@@ -37,10 +37,11 b" YUE.on('compare_branches','click',functi"
37 YUE.preventDefault(e);
37 YUE.preventDefault(e);
38 var org = YUQ('input[name=compare_org]:checked')[0];
38 var org = YUQ('input[name=compare_org]:checked')[0];
39 var other = YUQ('input[name=compare_other]:checked')[0];
39 var other = YUQ('input[name=compare_other]:checked')[0];
40 var compare_url = "${h.url('compare_home',repo_name=c.repo_name,ref='__ORG__...__OTHER__')}";
40
41 if(org && other){
41 if(org && other){
42 var u = compare_url.replace('__ORG__','branch:'+org.value)
42 var compare_url = "${h.url('compare_url',repo_name=c.repo_name,org_ref_type='branch',org_ref='__ORG__',other_ref_type='branch',other_ref='__OTHER__')}";
43 .replace('__OTHER__','branch:'+other.value);
43 var u = compare_url.replace('__ORG__',org.value)
44 .replace('__OTHER__',other.value);
44 window.location=u;
45 window.location=u;
45 }
46 }
46
47
@@ -32,7 +32,12 b''
32 <canvas id="graph_canvas"></canvas>
32 <canvas id="graph_canvas"></canvas>
33 </div>
33 </div>
34 <div id="graph_content">
34 <div id="graph_content">
35 <div class="info_box" style="clear: both;padding: 10px 6px;vertical-align: right;text-align: right;"><a href="${h.url('pullrequest_home',repo_name=c.repo_name)}" class="ui-btn small">${_('Open new pull request')}</a></div>
35 <div class="info_box" style="clear: both;padding: 10px 6px;vertical-align: right;text-align: right;">
36 %if c.rhodecode_db_repo.fork:
37 <a title="${_('compare fork with %s' % c.rhodecode_db_repo.fork.repo_name)}" href="${h.url('compare_url',repo_name=c.repo_name,org_ref_type='branch',org_ref='default',other_ref_type='branch',other_ref='default',repo=c.rhodecode_db_repo.fork.repo_name)}" class="ui-btn small">${_('Compare fork')}</a>
38 %endif
39 <a href="${h.url('pullrequest_home',repo_name=c.repo_name)}" class="ui-btn small">${_('Open new pull request')}</a>
40 </div>
36 <div class="container_header">
41 <div class="container_header">
37 ${h.form(h.url.current(),method='get')}
42 ${h.form(h.url.current(),method='get')}
38 <div class="info_box" style="float:left">
43 <div class="info_box" style="float:left">
General Comments 0
You need to be logged in to leave comments. Login now