Mercurial > kallithea
comparison rhodecode/controllers/admin/settings.py @ 3960:5293d4bbb1ea
Merged dev into stable/default/master branch
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Fri, 07 Jun 2013 00:31:11 +0200 |
parents | 3563bb7b4b82 fc63a1d93803 |
children | 9b4ba12ef8c3 |
comparison
equal
deleted
inserted
replaced
3879:51596d9ef2f8 | 3960:5293d4bbb1ea |
---|---|
39 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator, \ | 39 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator, \ |
40 HasPermissionAnyDecorator, NotAnonymous, HasPermissionAny,\ | 40 HasPermissionAnyDecorator, NotAnonymous, HasPermissionAny,\ |
41 HasReposGroupPermissionAll, HasReposGroupPermissionAny, AuthUser | 41 HasReposGroupPermissionAll, HasReposGroupPermissionAny, AuthUser |
42 from rhodecode.lib.base import BaseController, render | 42 from rhodecode.lib.base import BaseController, render |
43 from rhodecode.lib.celerylib import tasks, run_task | 43 from rhodecode.lib.celerylib import tasks, run_task |
44 from rhodecode.lib.utils import repo2db_mapper, invalidate_cache, \ | 44 from rhodecode.lib.utils import repo2db_mapper, set_rhodecode_config, \ |
45 set_rhodecode_config, repo_name_slug, check_git_version | 45 check_git_version |
46 from rhodecode.model.db import RhodeCodeUi, Repository, RepoGroup, \ | 46 from rhodecode.model.db import RhodeCodeUi, Repository, RepoGroup, \ |
47 RhodeCodeSetting, PullRequest, PullRequestReviewers | 47 RhodeCodeSetting, PullRequest, PullRequestReviewers |
48 from rhodecode.model.forms import UserForm, ApplicationSettingsForm, \ | 48 from rhodecode.model.forms import UserForm, ApplicationSettingsForm, \ |
49 ApplicationUiSettingsForm, ApplicationVisualisationForm | 49 ApplicationUiSettingsForm, ApplicationVisualisationForm |
50 from rhodecode.model.scm import ScmModel, GroupList | 50 from rhodecode.model.scm import ScmModel, RepoGroupList |
51 from rhodecode.model.user import UserModel | 51 from rhodecode.model.user import UserModel |
52 from rhodecode.model.repo import RepoModel | 52 from rhodecode.model.repo import RepoModel |
53 from rhodecode.model.db import User | 53 from rhodecode.model.db import User |
54 from rhodecode.model.notification import EmailNotificationModel | 54 from rhodecode.model.notification import EmailNotificationModel |
55 from rhodecode.model.meta import Session | 55 from rhodecode.model.meta import Session |
56 from rhodecode.lib.utils2 import str2bool, safe_unicode | 56 from rhodecode.lib.utils2 import str2bool, safe_unicode |
57 from rhodecode.lib.compat import json | 57 from rhodecode.lib.compat import json |
58 from webob.exc import HTTPForbidden | |
59 log = logging.getLogger(__name__) | 58 log = logging.getLogger(__name__) |
60 | 59 |
61 | 60 |
62 class SettingsController(BaseController): | 61 class SettingsController(BaseController): |
63 """REST Controller styled on the Atom Publishing Protocol""" | 62 """REST Controller styled on the Atom Publishing Protocol""" |
66 # map.resource('setting', 'settings', controller='admin/settings', | 65 # map.resource('setting', 'settings', controller='admin/settings', |
67 # path_prefix='/admin', name_prefix='admin_') | 66 # path_prefix='/admin', name_prefix='admin_') |
68 | 67 |
69 @LoginRequired() | 68 @LoginRequired() |
70 def __before__(self): | 69 def __before__(self): |
71 c.admin_user = session.get('admin_user') | 70 super(SettingsController, self).__before__() |
72 c.admin_username = session.get('admin_username') | |
73 c.modules = sorted([(p.project_name, p.version) | 71 c.modules = sorted([(p.project_name, p.version) |
74 for p in pkg_resources.working_set] | 72 for p in pkg_resources.working_set] |
75 + [('git', check_git_version())], | 73 + [('git', check_git_version())], |
76 key=lambda k: k[0].lower()) | 74 key=lambda k: k[0].lower()) |
77 c.py_version = platform.python_version() | 75 c.py_version = platform.python_version() |
78 c.platform = platform.platform() | 76 c.platform = platform.platform() |
79 super(SettingsController, self).__before__() | |
80 | 77 |
81 @HasPermissionAllDecorator('hg.admin') | 78 @HasPermissionAllDecorator('hg.admin') |
82 def index(self, format='html'): | 79 def index(self, format='html'): |
83 """GET /admin/settings: All items in the collection""" | 80 """GET /admin/settings: All items in the collection""" |
84 # url('admin_settings') | 81 # url('admin_settings') |
113 # method='put') | 110 # method='put') |
114 # url('admin_setting', setting_id=ID) | 111 # url('admin_setting', setting_id=ID) |
115 | 112 |
116 if setting_id == 'mapping': | 113 if setting_id == 'mapping': |
117 rm_obsolete = request.POST.get('destroy', False) | 114 rm_obsolete = request.POST.get('destroy', False) |
118 log.debug('Rescanning directories with destroy=%s' % rm_obsolete) | 115 invalidate_cache = request.POST.get('invalidate', False) |
119 initial = ScmModel().repo_scan() | 116 log.debug('rescanning repo location with destroy obsolete=%s' |
120 log.debug('invalidating all repositories') | 117 % (rm_obsolete,)) |
121 for repo_name in initial.keys(): | 118 |
122 invalidate_cache('get_repo_cached_%s' % repo_name) | 119 if invalidate_cache: |
123 | 120 log.debug('invalidating all repositories cache') |
124 added, removed = repo2db_mapper(initial, rm_obsolete) | 121 for repo in Repository.get_all(): |
122 ScmModel().mark_for_invalidation(repo.repo_name) | |
123 | |
124 filesystem_repos = ScmModel().repo_scan() | |
125 added, removed = repo2db_mapper(filesystem_repos, rm_obsolete) | |
125 _repr = lambda l: ', '.join(map(safe_unicode, l)) or '-' | 126 _repr = lambda l: ', '.join(map(safe_unicode, l)) or '-' |
126 h.flash(_('Repositories successfully ' | 127 h.flash(_('Repositories successfully ' |
127 'rescanned added: %s ; removed: %s') % | 128 'rescanned added: %s ; removed: %s') % |
128 (_repr(added), _repr(removed)), | 129 (_repr(added), _repr(removed)), |
129 category='success') | 130 category='success') |
184 prefix_error=False, | 185 prefix_error=False, |
185 encoding="UTF-8" | 186 encoding="UTF-8" |
186 ) | 187 ) |
187 | 188 |
188 try: | 189 try: |
190 #TODO: rewrite this to something less ugly | |
189 sett1 = RhodeCodeSetting.get_by_name_or_create('show_public_icon') | 191 sett1 = RhodeCodeSetting.get_by_name_or_create('show_public_icon') |
190 sett1.app_settings_value = \ | 192 sett1.app_settings_value = \ |
191 form_result['rhodecode_show_public_icon'] | 193 form_result['rhodecode_show_public_icon'] |
192 Session().add(sett1) | 194 Session().add(sett1) |
193 | 195 |
199 sett3 = RhodeCodeSetting.get_by_name_or_create('stylify_metatags') | 201 sett3 = RhodeCodeSetting.get_by_name_or_create('stylify_metatags') |
200 sett3.app_settings_value = \ | 202 sett3.app_settings_value = \ |
201 form_result['rhodecode_stylify_metatags'] | 203 form_result['rhodecode_stylify_metatags'] |
202 Session().add(sett3) | 204 Session().add(sett3) |
203 | 205 |
204 sett4 = RhodeCodeSetting.get_by_name_or_create('lightweight_dashboard') | |
205 sett4.app_settings_value = \ | |
206 form_result['rhodecode_lightweight_dashboard'] | |
207 Session().add(sett4) | |
208 | |
209 sett4 = RhodeCodeSetting.get_by_name_or_create('repository_fields') | 206 sett4 = RhodeCodeSetting.get_by_name_or_create('repository_fields') |
210 sett4.app_settings_value = \ | 207 sett4.app_settings_value = \ |
211 form_result['rhodecode_repository_fields'] | 208 form_result['rhodecode_repository_fields'] |
212 Session().add(sett4) | 209 Session().add(sett4) |
210 | |
211 sett5 = RhodeCodeSetting.get_by_name_or_create('dashboard_items') | |
212 sett5.app_settings_value = \ | |
213 form_result['rhodecode_dashboard_items'] | |
214 Session().add(sett5) | |
215 | |
216 sett6 = RhodeCodeSetting.get_by_name_or_create('show_version') | |
217 sett6.app_settings_value = \ | |
218 form_result['rhodecode_show_version'] | |
219 Session().add(sett6) | |
213 | 220 |
214 Session().commit() | 221 Session().commit() |
215 set_rhodecode_config(config) | 222 set_rhodecode_config(config) |
216 h.flash(_('Updated visualisation settings'), | 223 h.flash(_('Updated visualisation settings'), |
217 category='success') | 224 category='success') |
237 | 244 |
238 try: | 245 try: |
239 sett = RhodeCodeUi.get_by_key('push_ssl') | 246 sett = RhodeCodeUi.get_by_key('push_ssl') |
240 sett.ui_value = form_result['web_push_ssl'] | 247 sett.ui_value = form_result['web_push_ssl'] |
241 Session().add(sett) | 248 Session().add(sett) |
242 | 249 if c.visual.allow_repo_location_change: |
243 sett = RhodeCodeUi.get_by_key('/') | 250 sett = RhodeCodeUi.get_by_key('/') |
244 sett.ui_value = form_result['paths_root_path'] | 251 sett.ui_value = form_result['paths_root_path'] |
245 Session().add(sett) | 252 Session().add(sett) |
246 | 253 |
247 #HOOKS | 254 #HOOKS |
248 sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_UPDATE) | 255 sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_UPDATE) |
249 sett.ui_active = form_result['hooks_changegroup_update'] | 256 sett.ui_active = form_result['hooks_changegroup_update'] |
250 Session().add(sett) | 257 Session().add(sett) |