Mercurial > kallithea
annotate rhodecode/controllers/admin/repos.py @ 1039:51b70569c330 beta
extended admin rescan to show what repositories was added and what removed
fixed found bugs, added expunge to cached getter since it introduce some more problems.
Added some relationship to properly clean related objects from database.
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sun, 13 Feb 2011 01:38:39 +0100 |
parents | 5554aa9c2480 |
children | c2440badab84 |
rev | line source |
---|---|
824
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
1 # -*- coding: utf-8 -*- |
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
2 """ |
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
3 rhodecode.controllers.admin.repos |
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
5 |
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
6 Admin controller for RhodeCode |
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
7 |
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
8 :created_on: Apr 7, 2010 |
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
9 :author: marcink |
902
07a6e8c65526
fixed copyright year to 2011
Marcin Kuzminski <marcin@python-works.com>
parents:
860
diff
changeset
|
10 :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com> |
824
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
11 :license: GPLv3, see COPYING for more details. |
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
12 """ |
252
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
248
diff
changeset
|
13 # This program is free software; you can redistribute it and/or |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
248
diff
changeset
|
14 # modify it under the terms of the GNU General Public License |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
248
diff
changeset
|
15 # as published by the Free Software Foundation; version 2 |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
248
diff
changeset
|
16 # of the License or (at your opinion) any later version of the license. |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
248
diff
changeset
|
17 # |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
248
diff
changeset
|
18 # This program is distributed in the hope that it will be useful, |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
248
diff
changeset
|
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
248
diff
changeset
|
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
248
diff
changeset
|
21 # GNU General Public License for more details. |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
248
diff
changeset
|
22 # |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
248
diff
changeset
|
23 # You should have received a copy of the GNU General Public License |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
248
diff
changeset
|
24 # along with this program; if not, write to the Free Software |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
248
diff
changeset
|
25 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
248
diff
changeset
|
26 # MA 02110-1301, USA. |
824
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
27 |
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
28 import logging |
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
29 import traceback |
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
30 import formencode |
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
31 from operator import itemgetter |
318
fdf9f6ee5217
Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
299
diff
changeset
|
32 from formencode import htmlfill |
824
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
33 |
376
7fbf81447c6c
Fixes #18, removing user, who owns some repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
371
diff
changeset
|
34 from paste.httpexceptions import HTTPInternalServerError |
318
fdf9f6ee5217
Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
299
diff
changeset
|
35 from pylons import request, response, session, tmpl_context as c, url |
215
70f645fa97cc
Moved repo creation to admin/repos, as part of crud controller. Now repo creation is based on a form, which can be auto filled with data from 404 page. Fixed the error controller to properly give the repo name.
Marcin Kuzminski <marcin@python-works.com>
parents:
191
diff
changeset
|
36 from pylons.controllers.util import abort, redirect |
248
fb7f066126cc
Added support for repository located in subdirectories.
Marcin Kuzminski <marcin@python-works.com>
parents:
247
diff
changeset
|
37 from pylons.i18n.translation import _ |
824
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
38 |
547
1e757ac98988
renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
537
diff
changeset
|
39 from rhodecode.lib import helpers as h |
1e757ac98988
renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
537
diff
changeset
|
40 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator, \ |
380
ca54622e39a1
Added separate create repository views for non administrative users.
Marcin Kuzminski <marcin@python-works.com>
parents:
376
diff
changeset
|
41 HasPermissionAnyDecorator |
547
1e757ac98988
renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
537
diff
changeset
|
42 from rhodecode.lib.base import BaseController, render |
1022
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1015
diff
changeset
|
43 from rhodecode.lib.utils import invalidate_cache, action_logger, repo_name_slug |
547
1e757ac98988
renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
537
diff
changeset
|
44 from rhodecode.model.db import User |
1e757ac98988
renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
537
diff
changeset
|
45 from rhodecode.model.forms import RepoForm |
691
7486da5f0628
Refactor codes for scm model
Marcin Kuzminski <marcin@python-works.com>
parents:
665
diff
changeset
|
46 from rhodecode.model.scm import ScmModel |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
604
diff
changeset
|
47 from rhodecode.model.repo import RepoModel |
824
ceb9f419b7fe
some extra fixes added docs string
Marcin Kuzminski <marcin@python-works.com>
parents:
821
diff
changeset
|
48 |
365
ec7b76d4bda4
Added initial query skipp when seting up the app.
Marcin Kuzminski <marcin@python-works.com>
parents:
357
diff
changeset
|
49 |
47
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
50 log = logging.getLogger(__name__) |
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
51 |
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
52 class ReposController(BaseController): |
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
53 """REST Controller styled on the Atom Publishing Protocol""" |
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
54 # To properly map this controller, ensure your config/routing.py |
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
55 # file has a resource setup: |
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
56 # map.resource('repo', 'repos') |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
57 |
235
fcab58c43ea1
Fixed access to repos and users.
Marcin Kuzminski <marcin@python-works.com>
parents:
220
diff
changeset
|
58 @LoginRequired() |
417
3ed2d46a2ca7
permission refactoring,
Marcin Kuzminski <marcin@python-works.com>
parents:
399
diff
changeset
|
59 @HasPermissionAnyDecorator('hg.admin', 'hg.create.repository') |
47
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
60 def __before__(self): |
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
61 c.admin_user = session.get('admin_user') |
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
62 c.admin_username = session.get('admin_username') |
191
b68b2246e5a6
Authenticated controller with LoginRequired decorator, and cleaned __before__ (used in baseController now). fixed User for clone url with logged in session user.
Marcin Kuzminski <marcin@python-works.com>
parents:
169
diff
changeset
|
63 super(ReposController, self).__before__() |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
64 |
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
65 @HasPermissionAllDecorator('hg.admin') |
47
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
66 def index(self, format='html'): |
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
67 """GET /repos: All items in the collection""" |
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
68 # url('repos') |
691
7486da5f0628
Refactor codes for scm model
Marcin Kuzminski <marcin@python-works.com>
parents:
665
diff
changeset
|
69 cached_repo_list = ScmModel().get_repos() |
247
51434007e21d
proper sorting fix
Marcin Kuzminski <marcin@python-works.com>
parents:
246
diff
changeset
|
70 c.repos_list = sorted(cached_repo_list, key=itemgetter('name_sort')) |
127
20dc7a5eb748
Html changes and cleanups, made folders for html templates, implemented tags and branches pages
Marcin Kuzminski <marcin@python-works.com>
parents:
101
diff
changeset
|
71 return render('admin/repos/repos.html') |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
72 |
417
3ed2d46a2ca7
permission refactoring,
Marcin Kuzminski <marcin@python-works.com>
parents:
399
diff
changeset
|
73 @HasPermissionAnyDecorator('hg.admin', 'hg.create.repository') |
47
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
74 def create(self): |
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
75 """POST /repos: Create a new item""" |
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
76 # url('repos') |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
77 repo_model = RepoModel() |
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
78 _form = RepoForm()() |
357
ebdd1a89cdd9
Added extra validation in creating users.
Marcin Kuzminski <marcin@python-works.com>
parents:
356
diff
changeset
|
79 form_result = {} |
215
70f645fa97cc
Moved repo creation to admin/repos, as part of crud controller. Now repo creation is based on a form, which can be auto filled with data from 404 page. Fixed the error controller to properly give the repo name.
Marcin Kuzminski <marcin@python-works.com>
parents:
191
diff
changeset
|
80 try: |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
81 form_result = _form.to_python(dict(request.POST)) |
548
b75b77ef649d
renamed hg_app to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
82 repo_model.create(form_result, c.rhodecode_user) |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
83 h.flash(_('created repository %s') % form_result['repo_name'], |
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
84 category='success') |
537
48be953851fc
extended user logs to create/delete/fork repositories for auditing
Marcin Kuzminski <marcin@python-works.com>
parents:
417
diff
changeset
|
85 |
48be953851fc
extended user logs to create/delete/fork repositories for auditing
Marcin Kuzminski <marcin@python-works.com>
parents:
417
diff
changeset
|
86 if request.POST.get('user_created'): |
564
ba7e24cd4786
refactor codes and setup for python 2.5
Marcin Kuzminski <marcin@python-works.com>
parents:
548
diff
changeset
|
87 action_logger(self.rhodecode_user, 'user_created_repo', |
537
48be953851fc
extended user logs to create/delete/fork repositories for auditing
Marcin Kuzminski <marcin@python-works.com>
parents:
417
diff
changeset
|
88 form_result['repo_name'], '', self.sa) |
48be953851fc
extended user logs to create/delete/fork repositories for auditing
Marcin Kuzminski <marcin@python-works.com>
parents:
417
diff
changeset
|
89 else: |
564
ba7e24cd4786
refactor codes and setup for python 2.5
Marcin Kuzminski <marcin@python-works.com>
parents:
548
diff
changeset
|
90 action_logger(self.rhodecode_user, 'admin_created_repo', |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
91 form_result['repo_name'], '', self.sa) |
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
92 |
564
ba7e24cd4786
refactor codes and setup for python 2.5
Marcin Kuzminski <marcin@python-works.com>
parents:
548
diff
changeset
|
93 except formencode.Invalid, errors: |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
94 c.new_repo = errors.value['repo_name'] |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
95 |
380
ca54622e39a1
Added separate create repository views for non administrative users.
Marcin Kuzminski <marcin@python-works.com>
parents:
376
diff
changeset
|
96 if request.POST.get('user_created'): |
ca54622e39a1
Added separate create repository views for non administrative users.
Marcin Kuzminski <marcin@python-works.com>
parents:
376
diff
changeset
|
97 r = render('admin/repos/repo_add_create_repository.html') |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
98 else: |
380
ca54622e39a1
Added separate create repository views for non administrative users.
Marcin Kuzminski <marcin@python-works.com>
parents:
376
diff
changeset
|
99 r = render('admin/repos/repo_add.html') |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
100 |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
101 return htmlfill.render( |
380
ca54622e39a1
Added separate create repository views for non administrative users.
Marcin Kuzminski <marcin@python-works.com>
parents:
376
diff
changeset
|
102 r, |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
103 defaults=errors.value, |
356
b0715a788432
Added new style error display,
Marcin Kuzminski <marcin@python-works.com>
parents:
323
diff
changeset
|
104 errors=errors.error_dict or {}, |
b0715a788432
Added new style error display,
Marcin Kuzminski <marcin@python-works.com>
parents:
323
diff
changeset
|
105 prefix_error=False, |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
106 encoding="UTF-8") |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
107 |
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
108 except Exception: |
356
b0715a788432
Added new style error display,
Marcin Kuzminski <marcin@python-works.com>
parents:
323
diff
changeset
|
109 log.error(traceback.format_exc()) |
860
5f7731e3ab4d
fixed spelling mistakes, and some minor docs bugs
Marcin Kuzminski <marcin@python-works.com>
parents:
832
diff
changeset
|
110 msg = _('error occurred during creation of repository %s') \ |
357
ebdd1a89cdd9
Added extra validation in creating users.
Marcin Kuzminski <marcin@python-works.com>
parents:
356
diff
changeset
|
111 % form_result.get('repo_name') |
356
b0715a788432
Added new style error display,
Marcin Kuzminski <marcin@python-works.com>
parents:
323
diff
changeset
|
112 h.flash(msg, category='error') |
380
ca54622e39a1
Added separate create repository views for non administrative users.
Marcin Kuzminski <marcin@python-works.com>
parents:
376
diff
changeset
|
113 if request.POST.get('user_created'): |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
114 return redirect(url('home')) |
380
ca54622e39a1
Added separate create repository views for non administrative users.
Marcin Kuzminski <marcin@python-works.com>
parents:
376
diff
changeset
|
115 return redirect(url('repos')) |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
116 |
380
ca54622e39a1
Added separate create repository views for non administrative users.
Marcin Kuzminski <marcin@python-works.com>
parents:
376
diff
changeset
|
117 @HasPermissionAllDecorator('hg.admin') |
47
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
118 def new(self, format='html'): |
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
119 """GET /repos/new: Form to create a new item""" |
215
70f645fa97cc
Moved repo creation to admin/repos, as part of crud controller. Now repo creation is based on a form, which can be auto filled with data from 404 page. Fixed the error controller to properly give the repo name.
Marcin Kuzminski <marcin@python-works.com>
parents:
191
diff
changeset
|
120 new_repo = request.GET.get('repo', '') |
1022
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1015
diff
changeset
|
121 c.new_repo = repo_name_slug(new_repo) |
215
70f645fa97cc
Moved repo creation to admin/repos, as part of crud controller. Now repo creation is based on a form, which can be auto filled with data from 404 page. Fixed the error controller to properly give the repo name.
Marcin Kuzminski <marcin@python-works.com>
parents:
191
diff
changeset
|
122 |
70f645fa97cc
Moved repo creation to admin/repos, as part of crud controller. Now repo creation is based on a form, which can be auto filled with data from 404 page. Fixed the error controller to properly give the repo name.
Marcin Kuzminski <marcin@python-works.com>
parents:
191
diff
changeset
|
123 return render('admin/repos/repo_add.html') |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
124 |
380
ca54622e39a1
Added separate create repository views for non administrative users.
Marcin Kuzminski <marcin@python-works.com>
parents:
376
diff
changeset
|
125 @HasPermissionAllDecorator('hg.admin') |
299
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
126 def update(self, repo_name): |
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
127 """PUT /repos/repo_name: Update an existing item""" |
47
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
128 # Forms posted to this method should contain a hidden field: |
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
129 # <input type="hidden" name="_method" value="PUT" /> |
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
130 # Or using helpers: |
299
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
131 # h.form(url('repo', repo_name=ID), |
47
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
132 # method='put') |
299
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
133 # url('repo', repo_name=ID) |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
134 repo_model = RepoModel() |
356
b0715a788432
Added new style error display,
Marcin Kuzminski <marcin@python-works.com>
parents:
323
diff
changeset
|
135 changed_name = repo_name |
b0715a788432
Added new style error display,
Marcin Kuzminski <marcin@python-works.com>
parents:
323
diff
changeset
|
136 _form = RepoForm(edit=True, old_data={'repo_name':repo_name})() |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
137 |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
138 try: |
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
139 form_result = _form.to_python(dict(request.POST)) |
299
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
140 repo_model.update(repo_name, form_result) |
665
070f32743632
Moved out reposcan into hg Model.
Marcin Kuzminski <marcin@python-works.com>
parents:
660
diff
changeset
|
141 invalidate_cache('get_repo_cached_%s' % repo_name) |
692
cb0d9ce6ac5c
#50 on point cache invalidation changes.
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
142 h.flash(_('Repository %s updated successfully' % repo_name), |
318
fdf9f6ee5217
Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
299
diff
changeset
|
143 category='success') |
356
b0715a788432
Added new style error display,
Marcin Kuzminski <marcin@python-works.com>
parents:
323
diff
changeset
|
144 changed_name = form_result['repo_name'] |
660
df61378032f3
#48 rewrote action logger, translated action logger messages, added some extra messages. Linked and showed pushed revisions in logs
Marcin Kuzminski <marcin@python-works.com>
parents:
636
diff
changeset
|
145 action_logger(self.rhodecode_user, 'admin_updated_repo', |
df61378032f3
#48 rewrote action logger, translated action logger messages, added some extra messages. Linked and showed pushed revisions in logs
Marcin Kuzminski <marcin@python-works.com>
parents:
636
diff
changeset
|
146 changed_name, '', self.sa) |
df61378032f3
#48 rewrote action logger, translated action logger messages, added some extra messages. Linked and showed pushed revisions in logs
Marcin Kuzminski <marcin@python-works.com>
parents:
636
diff
changeset
|
147 |
564
ba7e24cd4786
refactor codes and setup for python 2.5
Marcin Kuzminski <marcin@python-works.com>
parents:
548
diff
changeset
|
148 except formencode.Invalid, errors: |
735
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
711
diff
changeset
|
149 c.repo_info = repo_model.get_by_repo_name(repo_name) |
1038
5554aa9c2480
another major code rafactor, reimplemented (almost from scratch)
Marcin Kuzminski <marcin@python-works.com>
parents:
1033
diff
changeset
|
150 |
821
2b5f0e7678d4
bugfix when form had errors, it was crashing
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
151 if c.repo_info.stats: |
2b5f0e7678d4
bugfix when form had errors, it was crashing
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
152 last_rev = c.repo_info.stats.stat_on_revision |
2b5f0e7678d4
bugfix when form had errors, it was crashing
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
153 else: |
2b5f0e7678d4
bugfix when form had errors, it was crashing
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
154 last_rev = 0 |
2b5f0e7678d4
bugfix when form had errors, it was crashing
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
155 c.stats_revision = last_rev |
1039
51b70569c330
extended admin rescan to show what repositories was added and what removed
Marcin Kuzminski <marcin@python-works.com>
parents:
1038
diff
changeset
|
156 repo, dbrepo = ScmModel().get(repo_name, retval='repo') |
51b70569c330
extended admin rescan to show what repositories was added and what removed
Marcin Kuzminski <marcin@python-works.com>
parents:
1038
diff
changeset
|
157 c.repo_last_rev = repo.revisions[-1] if repo.revisions else 0 |
821
2b5f0e7678d4
bugfix when form had errors, it was crashing
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
158 |
2b5f0e7678d4
bugfix when form had errors, it was crashing
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
159 if last_rev == 0: |
2b5f0e7678d4
bugfix when form had errors, it was crashing
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
160 c.stats_percentage = 0 |
2b5f0e7678d4
bugfix when form had errors, it was crashing
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
161 else: |
2b5f0e7678d4
bugfix when form had errors, it was crashing
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
162 c.stats_percentage = '%.2f' % ((float((last_rev)) / |
2b5f0e7678d4
bugfix when form had errors, it was crashing
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
163 c.repo_last_rev) * 100) |
2b5f0e7678d4
bugfix when form had errors, it was crashing
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
164 |
298
15e96b5a2685
autocomplete for repository managment of users
Marcin Kuzminski <marcin@python-works.com>
parents:
296
diff
changeset
|
165 c.users_array = repo_model.get_users_js() |
1012
551c7d5ae89d
#56 added users/groups autocomplete for repository editing.
Marcin Kuzminski <marcin@python-works.com>
parents:
935
diff
changeset
|
166 c.users_groups_array = repo_model.get_users_groups_js() |
551c7d5ae89d
#56 added users/groups autocomplete for repository editing.
Marcin Kuzminski <marcin@python-works.com>
parents:
935
diff
changeset
|
167 |
296
29370bb76fa6
first permissions commit: added permission managment on repository edit. Changed db rmissions, validators.
Marcin Kuzminski <marcin@python-works.com>
parents:
266
diff
changeset
|
168 errors.value.update({'user':c.repo_info.user.username}) |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
169 return htmlfill.render( |
356
b0715a788432
Added new style error display,
Marcin Kuzminski <marcin@python-works.com>
parents:
323
diff
changeset
|
170 render('admin/repos/repo_edit.html'), |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
171 defaults=errors.value, |
356
b0715a788432
Added new style error display,
Marcin Kuzminski <marcin@python-works.com>
parents:
323
diff
changeset
|
172 errors=errors.error_dict or {}, |
b0715a788432
Added new style error display,
Marcin Kuzminski <marcin@python-works.com>
parents:
323
diff
changeset
|
173 prefix_error=False, |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
174 encoding="UTF-8") |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
175 |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
176 except Exception: |
356
b0715a788432
Added new style error display,
Marcin Kuzminski <marcin@python-works.com>
parents:
323
diff
changeset
|
177 log.error(traceback.format_exc()) |
692
cb0d9ce6ac5c
#50 on point cache invalidation changes.
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
178 h.flash(_('error occurred during update of repository %s') \ |
356
b0715a788432
Added new style error display,
Marcin Kuzminski <marcin@python-works.com>
parents:
323
diff
changeset
|
179 % repo_name, category='error') |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
180 |
356
b0715a788432
Added new style error display,
Marcin Kuzminski <marcin@python-works.com>
parents:
323
diff
changeset
|
181 return redirect(url('edit_repo', repo_name=changed_name)) |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
182 |
380
ca54622e39a1
Added separate create repository views for non administrative users.
Marcin Kuzminski <marcin@python-works.com>
parents:
376
diff
changeset
|
183 @HasPermissionAllDecorator('hg.admin') |
299
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
184 def delete(self, repo_name): |
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
185 """DELETE /repos/repo_name: Delete an existing item""" |
47
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
186 # Forms posted to this method should contain a hidden field: |
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
187 # <input type="hidden" name="_method" value="DELETE" /> |
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
188 # Or using helpers: |
299
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
189 # h.form(url('repo', repo_name=ID), |
47
f6ac79182600
Added rest controllers for repos and users,
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
190 # method='delete') |
299
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
191 # url('repo', repo_name=ID) |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
192 |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
193 repo_model = RepoModel() |
735
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
711
diff
changeset
|
194 repo = repo_model.get_by_repo_name(repo_name) |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
195 if not repo: |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
196 h.flash(_('%s repository is not mapped to db perhaps' |
266
32d6c955218c
added check for repo created outside of hg app
Marcin Kuzminski <marcin@python-works.com>
parents:
265
diff
changeset
|
197 ' it was moved or renamed from the filesystem' |
32d6c955218c
added check for repo created outside of hg app
Marcin Kuzminski <marcin@python-works.com>
parents:
265
diff
changeset
|
198 ' please run the application again' |
318
fdf9f6ee5217
Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
299
diff
changeset
|
199 ' in order to rescan repositories') % repo_name, |
fdf9f6ee5217
Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
299
diff
changeset
|
200 category='error') |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
201 |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
202 return redirect(url('repos')) |
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
203 try: |
564
ba7e24cd4786
refactor codes and setup for python 2.5
Marcin Kuzminski <marcin@python-works.com>
parents:
548
diff
changeset
|
204 action_logger(self.rhodecode_user, 'admin_deleted_repo', |
537
48be953851fc
extended user logs to create/delete/fork repositories for auditing
Marcin Kuzminski <marcin@python-works.com>
parents:
417
diff
changeset
|
205 repo_name, '', self.sa) |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
206 repo_model.delete(repo) |
665
070f32743632
Moved out reposcan into hg Model.
Marcin Kuzminski <marcin@python-works.com>
parents:
660
diff
changeset
|
207 invalidate_cache('get_repo_cached_%s' % repo_name) |
299
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
208 h.flash(_('deleted repository %s') % repo_name, category='success') |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
209 |
537
48be953851fc
extended user logs to create/delete/fork repositories for auditing
Marcin Kuzminski <marcin@python-works.com>
parents:
417
diff
changeset
|
210 except Exception, e: |
48be953851fc
extended user logs to create/delete/fork repositories for auditing
Marcin Kuzminski <marcin@python-works.com>
parents:
417
diff
changeset
|
211 log.error(traceback.format_exc()) |
860
5f7731e3ab4d
fixed spelling mistakes, and some minor docs bugs
Marcin Kuzminski <marcin@python-works.com>
parents:
832
diff
changeset
|
212 h.flash(_('An error occurred during deletion of %s') % repo_name, |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
213 category='error') |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
214 |
58
8fb1abd4178a
Added hg model,implemented removal of repos, added HgModel for fetching repos(with generator)
Marcin Kuzminski <marcin@python-blog.com>
parents:
52
diff
changeset
|
215 return redirect(url('repos')) |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
216 |
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
217 @HasPermissionAllDecorator('hg.admin') |
299
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
218 def delete_perm_user(self, repo_name): |
1015
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
219 """DELETE an existing repository permission user |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
220 |
604
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
564
diff
changeset
|
221 :param repo_name: |
299
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
222 """ |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
223 |
299
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
224 try: |
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
225 repo_model = RepoModel() |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
226 repo_model.delete_perm_user(request.POST, repo_name) |
564
ba7e24cd4786
refactor codes and setup for python 2.5
Marcin Kuzminski <marcin@python-works.com>
parents:
548
diff
changeset
|
227 except Exception, e: |
860
5f7731e3ab4d
fixed spelling mistakes, and some minor docs bugs
Marcin Kuzminski <marcin@python-works.com>
parents:
832
diff
changeset
|
228 h.flash(_('An error occurred during deletion of repository user'), |
299
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
229 category='error') |
365
ec7b76d4bda4
Added initial query skipp when seting up the app.
Marcin Kuzminski <marcin@python-works.com>
parents:
357
diff
changeset
|
230 raise HTTPInternalServerError() |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
231 |
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
232 @HasPermissionAllDecorator('hg.admin') |
1015
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
233 def delete_perm_users_group(self, repo_name): |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
234 """DELETE an existing repository permission users group |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
235 |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
236 :param repo_name: |
708
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
237 """ |
1015
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
238 try: |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
239 repo_model = RepoModel() |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
240 repo_model.delete_perm_users_group(request.POST, repo_name) |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
241 except Exception, e: |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
242 h.flash(_('An error occurred during deletion of repository' |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
243 ' users groups'), |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
244 category='error') |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
245 raise HTTPInternalServerError() |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
246 |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
247 @HasPermissionAllDecorator('hg.admin') |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
248 def repo_stats(self, repo_name): |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
249 """DELETE an existing repository statistics |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
250 |
708
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
251 :param repo_name: |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
252 """ |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
253 |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
254 try: |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
255 repo_model = RepoModel() |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
256 repo_model.delete_stats(repo_name) |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
257 except Exception, e: |
860
5f7731e3ab4d
fixed spelling mistakes, and some minor docs bugs
Marcin Kuzminski <marcin@python-works.com>
parents:
832
diff
changeset
|
258 h.flash(_('An error occurred during deletion of repository stats'), |
708
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
259 category='error') |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
260 return redirect(url('edit_repo', repo_name=repo_name)) |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
261 |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
262 @HasPermissionAllDecorator('hg.admin') |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
263 def repo_cache(self, repo_name): |
1015
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
264 """INVALIDATE existing repository cache |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
265 |
708
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
266 :param repo_name: |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
267 """ |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
268 |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
269 try: |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
270 ScmModel().mark_for_invalidation(repo_name) |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
271 except Exception, e: |
711
cda88b3eb09c
fixed error for empty revisions on admin repo edit
Marcin Kuzminski <marcin@python-works.com>
parents:
708
diff
changeset
|
272 h.flash(_('An error occurred during cache invalidation'), |
708
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
273 category='error') |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
274 return redirect(url('edit_repo', repo_name=repo_name)) |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
275 |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
276 @HasPermissionAllDecorator('hg.admin') |
299
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
277 def show(self, repo_name, format='html'): |
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
278 """GET /repos/repo_name: Show a specific item""" |
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
279 # url('repo', repo_name=ID) |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
280 |
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
281 @HasPermissionAllDecorator('hg.admin') |
299
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
282 def edit(self, repo_name, format='html'): |
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
283 """GET /repos/repo_name/edit: Form to edit an existing item""" |
d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Marcin Kuzminski <marcin@python-works.com>
parents:
298
diff
changeset
|
284 # url('edit_repo', repo_name=ID) |
1039
51b70569c330
extended admin rescan to show what repositories was added and what removed
Marcin Kuzminski <marcin@python-works.com>
parents:
1038
diff
changeset
|
285 repo, dbrepo = ScmModel().get(repo_name, retval='repo') |
1038
5554aa9c2480
another major code rafactor, reimplemented (almost from scratch)
Marcin Kuzminski <marcin@python-works.com>
parents:
1033
diff
changeset
|
286 |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
287 repo_model = RepoModel() |
1015
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
288 c.repo_info = repo_model.get_by_repo_name(repo_name) |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
289 |
831
165a97509a15
fixed small issue with caching, call to ScmModel().get needs to be before queries for new objects of Repository
Marcin Kuzminski <marcin@python-works.com>
parents:
829
diff
changeset
|
290 if c.repo_info is None: |
165a97509a15
fixed small issue with caching, call to ScmModel().get needs to be before queries for new objects of Repository
Marcin Kuzminski <marcin@python-works.com>
parents:
829
diff
changeset
|
291 h.flash(_('%s repository is not mapped to db perhaps' |
165a97509a15
fixed small issue with caching, call to ScmModel().get needs to be before queries for new objects of Repository
Marcin Kuzminski <marcin@python-works.com>
parents:
829
diff
changeset
|
292 ' it was created or renamed from the filesystem' |
165a97509a15
fixed small issue with caching, call to ScmModel().get needs to be before queries for new objects of Repository
Marcin Kuzminski <marcin@python-works.com>
parents:
829
diff
changeset
|
293 ' please run the application again' |
165a97509a15
fixed small issue with caching, call to ScmModel().get needs to be before queries for new objects of Repository
Marcin Kuzminski <marcin@python-works.com>
parents:
829
diff
changeset
|
294 ' in order to rescan repositories') % repo_name, |
165a97509a15
fixed small issue with caching, call to ScmModel().get needs to be before queries for new objects of Repository
Marcin Kuzminski <marcin@python-works.com>
parents:
829
diff
changeset
|
295 category='error') |
165a97509a15
fixed small issue with caching, call to ScmModel().get needs to be before queries for new objects of Repository
Marcin Kuzminski <marcin@python-works.com>
parents:
829
diff
changeset
|
296 |
165a97509a15
fixed small issue with caching, call to ScmModel().get needs to be before queries for new objects of Repository
Marcin Kuzminski <marcin@python-works.com>
parents:
829
diff
changeset
|
297 return redirect(url('repos')) |
829
9caca00de2b0
fixes #87, stupid __dict__ call on sqlalchemy session followed by update() for this dict object rewrote an object to string.
Marcin Kuzminski <marcin@python-works.com>
parents:
824
diff
changeset
|
298 |
821
2b5f0e7678d4
bugfix when form had errors, it was crashing
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
299 if c.repo_info.stats: |
2b5f0e7678d4
bugfix when form had errors, it was crashing
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
300 last_rev = c.repo_info.stats.stat_on_revision |
708
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
301 else: |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
302 last_rev = 0 |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
303 c.stats_revision = last_rev |
829
9caca00de2b0
fixes #87, stupid __dict__ call on sqlalchemy session followed by update() for this dict object rewrote an object to string.
Marcin Kuzminski <marcin@python-works.com>
parents:
824
diff
changeset
|
304 |
1039
51b70569c330
extended admin rescan to show what repositories was added and what removed
Marcin Kuzminski <marcin@python-works.com>
parents:
1038
diff
changeset
|
305 c.repo_last_rev = repo.revisions[-1] if repo.revisions else 0 |
711
cda88b3eb09c
fixed error for empty revisions on admin repo edit
Marcin Kuzminski <marcin@python-works.com>
parents:
708
diff
changeset
|
306 |
935
5e8c7d78abd5
fixes #98 protection against float division of percentage stats
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
307 if last_rev == 0 or c.repo_last_rev == 0: |
708
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
308 c.stats_percentage = 0 |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
309 else: |
821
2b5f0e7678d4
bugfix when form had errors, it was crashing
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
310 c.stats_percentage = '%.2f' % ((float((last_rev)) / |
2b5f0e7678d4
bugfix when form had errors, it was crashing
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
311 c.repo_last_rev) * 100) |
708
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
312 |
1015
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
313 c.users_array = repo_model.get_users_js() |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
314 c.users_groups_array = repo_model.get_users_groups_js() |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
315 |
832
634596f81cfd
new improved models with helper functions for easier data fetching
Marcin Kuzminski <marcin@python-works.com>
parents:
831
diff
changeset
|
316 defaults = c.repo_info.get_dict() |
1015
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
317 |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
318 #fill owner |
376
7fbf81447c6c
Fixes #18, removing user, who owns some repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
371
diff
changeset
|
319 if c.repo_info.user: |
7fbf81447c6c
Fixes #18, removing user, who owns some repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
371
diff
changeset
|
320 defaults.update({'user':c.repo_info.user.username}) |
7fbf81447c6c
Fixes #18, removing user, who owns some repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
371
diff
changeset
|
321 else: |
7fbf81447c6c
Fixes #18, removing user, who owns some repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
371
diff
changeset
|
322 replacement_user = self.sa.query(User)\ |
7fbf81447c6c
Fixes #18, removing user, who owns some repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
371
diff
changeset
|
323 .filter(User.admin == True).first().username |
7fbf81447c6c
Fixes #18, removing user, who owns some repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
371
diff
changeset
|
324 defaults.update({'user':replacement_user}) |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
325 |
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
326 |
1015
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
327 #fill repository users |
399
f5c1eec9f376
rename repo2perm into repo_to_perm
Marcin Kuzminski <marcin@python-works.com>
parents:
380
diff
changeset
|
328 for p in c.repo_info.repo_to_perm: |
1015
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
329 defaults.update({'u_perm_%s' % p.user.username: |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
330 p.permission.permission_name}) |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
331 |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
332 #fill repository groups |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
333 for p in c.repo_info.users_group_to_perm: |
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1012
diff
changeset
|
334 defaults.update({'g_perm_%s' % p.users_group.users_group_name: |
296
29370bb76fa6
first permissions commit: added permission managment on repository edit. Changed db rmissions, validators.
Marcin Kuzminski <marcin@python-works.com>
parents:
266
diff
changeset
|
335 p.permission.permission_name}) |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
336 |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
337 return htmlfill.render( |
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
338 render('admin/repos/repo_edit.html'), |
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
339 defaults=defaults, |
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
340 encoding="UTF-8", |
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
252
diff
changeset
|
341 force_defaults=False |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
342 ) |