##// END OF EJS Templates
Changes for repo groups
marcink -
r1159:187a924e beta
parent child Browse files
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()(repo_groups=c.repo_groups).to_python(dict(request.POST))
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(' &raquo; '.join(map(make_link, groups)) + \
695 " &raquo; " + 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 &raquo;
10 &raquo;
11 ${h.link_to(_('Repositories'),h.url('repos'))}
11 ${h.link_to(_('Repositories'),h.url('repos'))}
12 &raquo;
12 &raquo;
13 ${_('edit')} &raquo; ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
13 ${_('edit')} &raquo; ${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_="small")}
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