Show More
@@ -63,19 +63,36 b' class ReposController(BaseController):' | |||||
63 | c.admin_username = session.get('admin_username') |
|
63 | c.admin_username = session.get('admin_username') | |
64 | super(ReposController, self).__before__() |
|
64 | super(ReposController, self).__before__() | |
65 |
|
65 | |||
66 |
|
66 | def __load_defaults(self): | ||
|
67 | repo_model = RepoModel() | |||
67 |
|
68 | |||
68 | def __load_data(self, repo_name): |
|
69 | c.repo_groups = [('', '')] | |
|
70 | parents_link = lambda k:h.literal('»'.join( | |||
|
71 | map(lambda k:k.group_name, | |||
|
72 | k.parents + [k]) | |||
|
73 | ) | |||
|
74 | ) | |||
|
75 | ||||
|
76 | c.repo_groups.extend([(x.group_id, parents_link(x)) for \ | |||
|
77 | x in self.sa.query(Group).all()]) | |||
|
78 | c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups) | |||
|
79 | c.users_array = repo_model.get_users_js() | |||
|
80 | c.users_groups_array = repo_model.get_users_groups_js() | |||
|
81 | ||||
|
82 | def __load_data(self, repo_name=None): | |||
69 | """ |
|
83 | """ | |
70 | Load defaults settings for edit, and update |
|
84 | Load defaults settings for edit, and update | |
71 |
|
85 | |||
72 | :param repo_name: |
|
86 | :param repo_name: | |
73 | """ |
|
87 | """ | |
|
88 | self.__load_defaults() | |||
|
89 | ||||
74 | repo, dbrepo = ScmModel().get(repo_name, retval='repo') |
|
90 | repo, dbrepo = ScmModel().get(repo_name, retval='repo') | |
75 |
|
91 | |||
76 | repo_model = RepoModel() |
|
92 | repo_model = RepoModel() | |
77 | c.repo_info = repo_model.get_by_repo_name(repo_name) |
|
93 | c.repo_info = repo_model.get_by_repo_name(repo_name) | |
78 |
|
94 | |||
|
95 | ||||
79 | if c.repo_info is None: |
|
96 | if c.repo_info is None: | |
80 | h.flash(_('%s repository is not mapped to db perhaps' |
|
97 | h.flash(_('%s repository is not mapped to db perhaps' | |
81 | ' it was created or renamed from the filesystem' |
|
98 | ' it was created or renamed from the filesystem' | |
@@ -86,10 +103,6 b' class ReposController(BaseController):' | |||||
86 | return redirect(url('repos')) |
|
103 | return redirect(url('repos')) | |
87 |
|
104 | |||
88 |
|
105 | |||
89 |
|
||||
90 | c.repo_groups = [('', '')] |
|
|||
91 | c.repo_groups.extend([(x.group_id, x.group_name) for x in self.sa.query(Group).all()]) |
|
|||
92 |
|
||||
93 | c.default_user_id = User.by_username('default').user_id |
|
106 | c.default_user_id = User.by_username('default').user_id | |
94 | c.in_public_journal = self.sa.query(UserFollowing)\ |
|
107 | c.in_public_journal = self.sa.query(UserFollowing)\ | |
95 | .filter(UserFollowing.user_id == c.default_user_id)\ |
|
108 | .filter(UserFollowing.user_id == c.default_user_id)\ | |
@@ -109,13 +122,13 b' class ReposController(BaseController):' | |||||
109 | c.stats_percentage = '%.2f' % ((float((last_rev)) / |
|
122 | c.stats_percentage = '%.2f' % ((float((last_rev)) / | |
110 | c.repo_last_rev) * 100) |
|
123 | c.repo_last_rev) * 100) | |
111 |
|
124 | |||
112 | c.users_array = repo_model.get_users_js() |
|
125 | ||
113 | c.users_groups_array = repo_model.get_users_groups_js() |
|
|||
114 |
|
126 | |||
115 | defaults = c.repo_info.get_dict() |
|
127 | defaults = c.repo_info.get_dict() | |
116 | group, repo_name = c.repo_info.groups_and_repo |
|
128 | group, repo_name = c.repo_info.groups_and_repo | |
117 | defaults['repo_name'] = repo_name |
|
129 | defaults['repo_name'] = repo_name | |
118 | defaults['repo_group'] = getattr(group, 'group_id', None) |
|
130 | defaults['repo_group'] = getattr(group[-1], 'group_id', None) | |
|
131 | ||||
119 | #fill owner |
|
132 | #fill owner | |
120 | if c.repo_info.user: |
|
133 | if c.repo_info.user: | |
121 | defaults.update({'user':c.repo_info.user.username}) |
|
134 | defaults.update({'user':c.repo_info.user.username}) | |
@@ -153,11 +166,11 b' class ReposController(BaseController):' | |||||
153 | POST /repos: Create a new item""" |
|
166 | POST /repos: Create a new item""" | |
154 | # url('repos') |
|
167 | # url('repos') | |
155 | repo_model = RepoModel() |
|
168 | repo_model = RepoModel() | |
156 | c.repo_groups = [('', '')] |
|
169 | self.__load_defaults() | |
157 | c.repo_groups.extend([(x.group_id, x.group_name) for x in self.sa.query(Group).all()]) |
|
|||
158 | form_result = {} |
|
170 | form_result = {} | |
159 | try: |
|
171 | try: | |
160 |
form_result = RepoForm( |
|
172 | form_result = RepoForm(repo_groups=c.repo_groups_choices)()\ | |
|
173 | .to_python(dict(request.POST)) | |||
161 | repo_model.create(form_result, self.rhodecode_user) |
|
174 | repo_model.create(form_result, self.rhodecode_user) | |
162 | if form_result['clone_uri']: |
|
175 | if form_result['clone_uri']: | |
163 | h.flash(_('created repository %s from %s') \ |
|
176 | h.flash(_('created repository %s from %s') \ | |
@@ -177,8 +190,6 b' class ReposController(BaseController):' | |||||
177 | except formencode.Invalid, errors: |
|
190 | except formencode.Invalid, errors: | |
178 |
|
191 | |||
179 | c.new_repo = errors.value['repo_name'] |
|
192 | c.new_repo = errors.value['repo_name'] | |
180 | c.repo_groups = [('', '')] |
|
|||
181 | c.repo_groups.extend([(x.group_id, x.group_name) for x in self.sa.query(Group).all()]) |
|
|||
182 |
|
193 | |||
183 | if request.POST.get('user_created'): |
|
194 | if request.POST.get('user_created'): | |
184 | r = render('admin/repos/repo_add_create_repository.html') |
|
195 | r = render('admin/repos/repo_add_create_repository.html') | |
@@ -206,8 +217,7 b' class ReposController(BaseController):' | |||||
206 | """GET /repos/new: Form to create a new item""" |
|
217 | """GET /repos/new: Form to create a new item""" | |
207 | new_repo = request.GET.get('repo', '') |
|
218 | new_repo = request.GET.get('repo', '') | |
208 | c.new_repo = repo_name_slug(new_repo) |
|
219 | c.new_repo = repo_name_slug(new_repo) | |
209 | c.repo_groups = [('', '')] |
|
220 | self.__load_defaults() | |
210 | c.repo_groups.extend([(x.group_id, x.group_name) for x in self.sa.query(Group).all()]) |
|
|||
211 | return render('admin/repos/repo_add.html') |
|
221 | return render('admin/repos/repo_add.html') | |
212 |
|
222 | |||
213 | @HasPermissionAllDecorator('hg.admin') |
|
223 | @HasPermissionAllDecorator('hg.admin') | |
@@ -220,9 +230,11 b' class ReposController(BaseController):' | |||||
220 | # h.form(url('repo', repo_name=ID), |
|
230 | # h.form(url('repo', repo_name=ID), | |
221 | # method='put') |
|
231 | # method='put') | |
222 | # url('repo', repo_name=ID) |
|
232 | # url('repo', repo_name=ID) | |
|
233 | self.__load_defaults() | |||
223 | repo_model = RepoModel() |
|
234 | repo_model = RepoModel() | |
224 | changed_name = repo_name |
|
235 | changed_name = repo_name | |
225 |
_form = RepoForm(edit=True, old_data={'repo_name':repo_name} |
|
236 | _form = RepoForm(edit=True, old_data={'repo_name':repo_name}, | |
|
237 | repo_groups=c.repo_groups_choices)() | |||
226 | try: |
|
238 | try: | |
227 | form_result = _form.to_python(dict(request.POST)) |
|
239 | form_result = _form.to_python(dict(request.POST)) | |
228 | repo_model.update(repo_name, form_result) |
|
240 | repo_model.update(repo_name, form_result) |
@@ -680,3 +680,18 b' def changed_tooltip(nodes):' | |||||
680 | return literal(pref + '<br/> '.join([x.path.decode('utf-8', 'replace') for x in nodes[:30]]) + suf) |
|
680 | return literal(pref + '<br/> '.join([x.path.decode('utf-8', 'replace') for x in nodes[:30]]) + suf) | |
681 | else: |
|
681 | else: | |
682 | return ': ' + _('No Files') |
|
682 | return ': ' + _('No Files') | |
|
683 | ||||
|
684 | ||||
|
685 | ||||
|
686 | def repo_link(groups_and_repos): | |||
|
687 | groups, repo_name = groups_and_repos | |||
|
688 | ||||
|
689 | if not groups: | |||
|
690 | return repo_name | |||
|
691 | else: | |||
|
692 | def make_link(group): | |||
|
693 | return link_to(group.group_name, url('/', group.group_id)) | |||
|
694 | return literal(' » '.join(map(make_link, groups)) + \ | |||
|
695 | " » " + repo_name) | |||
|
696 | ||||
|
697 |
@@ -255,6 +255,21 b' class Group(Base):' | |||||
255 | return "<%s('%s:%s')>" % (self.__class__.__name__, self.group_id, |
|
255 | return "<%s('%s:%s')>" % (self.__class__.__name__, self.group_id, | |
256 | self.group_name) |
|
256 | self.group_name) | |
257 |
|
257 | |||
|
258 | @property | |||
|
259 | def parents(self): | |||
|
260 | groups = [] | |||
|
261 | if self.parent_group is None: | |||
|
262 | return groups | |||
|
263 | cur_gr = self.parent_group | |||
|
264 | groups.insert(0, cur_gr) | |||
|
265 | while 1: | |||
|
266 | gr = getattr(cur_gr, 'parent_group', None) | |||
|
267 | cur_gr = cur_gr.parent_group | |||
|
268 | if gr is None: | |||
|
269 | break | |||
|
270 | groups.insert(0, gr) | |||
|
271 | return groups | |||
|
272 | ||||
258 | class Permission(Base): |
|
273 | class Permission(Base): | |
259 | __tablename__ = 'permissions' |
|
274 | __tablename__ = 'permissions' | |
260 | __table_args__ = {'useexisting':True} |
|
275 | __table_args__ = {'useexisting':True} |
@@ -458,7 +458,7 b' def RepoForm(edit=False, old_data={}, su' | |||||
458 | repo_name = All(UnicodeString(strip=True, min=1, not_empty=True), |
|
458 | repo_name = All(UnicodeString(strip=True, min=1, not_empty=True), | |
459 | ValidRepoName(edit, old_data)) |
|
459 | ValidRepoName(edit, old_data)) | |
460 | clone_uri = UnicodeString(strip=True, min=1, not_empty=False) |
|
460 | clone_uri = UnicodeString(strip=True, min=1, not_empty=False) | |
461 | repo_group = OneOf(repo_groups) |
|
461 | repo_group = OneOf(repo_groups, hideList=True) | |
462 | repo_type = OneOf(supported_backends) |
|
462 | repo_type = OneOf(supported_backends) | |
463 | description = UnicodeString(strip=True, min=1, not_empty=True) |
|
463 | description = UnicodeString(strip=True, min=1, not_empty=True) | |
464 | private = StringBoolean(if_missing=False) |
|
464 | private = StringBoolean(if_missing=False) |
@@ -10,7 +10,7 b'' | |||||
10 | » |
|
10 | » | |
11 | ${h.link_to(_('Repositories'),h.url('repos'))} |
|
11 | ${h.link_to(_('Repositories'),h.url('repos'))} | |
12 | » |
|
12 | » | |
13 | ${_('edit')} » ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))} |
|
13 | ${_('edit')} » ${h.link_to(c.repo_info.just_name,h.url('summary_home',repo_name=c.repo_name))} | |
14 | </%def> |
|
14 | </%def> | |
15 |
|
15 | |||
16 | <%def name="page_nav()"> |
|
16 | <%def name="page_nav()"> | |
@@ -40,7 +40,7 b'' | |||||
40 | <label for="clone_uri">${_('Clone uri')}:</label> |
|
40 | <label for="clone_uri">${_('Clone uri')}:</label> | |
41 | </div> |
|
41 | </div> | |
42 | <div class="input"> |
|
42 | <div class="input"> | |
43 |
${h.text('clone_uri',class_=" |
|
43 | ${h.text('clone_uri',class_="medium")} | |
44 | </div> |
|
44 | </div> | |
45 | </div> |
|
45 | </div> | |
46 | <div class="field"> |
|
46 | <div class="field"> |
General Comments 0
You need to be logged in to leave comments.
Login now