annotate rhodecode/controllers/admin/settings.py @ 3714:7e3d89d9d3a2 beta

- Manage User’s Groups: create, delete, rename, add/remove users inside. by user group admin. In this case, a user's group can be owned by several people thru an owner user's group. Some refactoring of naming, permission handling logic. - remove some code duplicity as well as inconsistent naming
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 08 Apr 2013 22:47:35 +0200
parents 08cf7741e5e1
children 1e5bb8ed77d6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
779
389d02a5df52 Added isanonymous decorator for checking permissions for anonymous access
Marcin Kuzminski <marcin@python-works.com>
parents: 765
diff changeset
1 # -*- coding: utf-8 -*-
389d02a5df52 Added isanonymous decorator for checking permissions for anonymous access
Marcin Kuzminski <marcin@python-works.com>
parents: 765
diff changeset
2 """
860
5f7731e3ab4d fixed spelling mistakes, and some minor docs bugs
Marcin Kuzminski <marcin@python-works.com>
parents: 832
diff changeset
3 rhodecode.controllers.admin.settings
5f7731e3ab4d fixed spelling mistakes, and some minor docs bugs
Marcin Kuzminski <marcin@python-works.com>
parents: 832
diff changeset
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1164
diff changeset
5
779
389d02a5df52 Added isanonymous decorator for checking permissions for anonymous access
Marcin Kuzminski <marcin@python-works.com>
parents: 765
diff changeset
6 settings controller for rhodecode admin
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1164
diff changeset
7
779
389d02a5df52 Added isanonymous decorator for checking permissions for anonymous access
Marcin Kuzminski <marcin@python-works.com>
parents: 765
diff changeset
8 :created_on: Jul 14, 2010
389d02a5df52 Added isanonymous decorator for checking permissions for anonymous access
Marcin Kuzminski <marcin@python-works.com>
parents: 765
diff changeset
9 :author: marcink
1824
89efedac4e6c 2012 copyrights
Marcin Kuzminski <marcin@python-works.com>
parents: 1798
diff changeset
10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
779
389d02a5df52 Added isanonymous decorator for checking permissions for anonymous access
Marcin Kuzminski <marcin@python-works.com>
parents: 765
diff changeset
11 :license: GPLv3, see COPYING for more details.
389d02a5df52 Added isanonymous decorator for checking permissions for anonymous access
Marcin Kuzminski <marcin@python-works.com>
parents: 765
diff changeset
12 """
1206
a671db5bdd58 fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
13 # This program is free software: you can redistribute it and/or modify
a671db5bdd58 fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
14 # it under the terms of the GNU General Public License as published by
a671db5bdd58 fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
15 # the Free Software Foundation, either version 3 of the License, or
a671db5bdd58 fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
16 # (at your option) any later version.
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1164
diff changeset
17 #
346
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
18 # This program is distributed in the hope that it will be useful,
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
21 # GNU General Public License for more details.
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1164
diff changeset
22 #
346
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
23 # You should have received a copy of the GNU General Public License
1206
a671db5bdd58 fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
779
389d02a5df52 Added isanonymous decorator for checking permissions for anonymous access
Marcin Kuzminski <marcin@python-works.com>
parents: 765
diff changeset
25
890
042d38683d42 implemented #89 google analytics code
Marcin Kuzminski <marcin@python-works.com>
parents: 860
diff changeset
26 import logging
042d38683d42 implemented #89 google analytics code
Marcin Kuzminski <marcin@python-works.com>
parents: 860
diff changeset
27 import traceback
042d38683d42 implemented #89 google analytics code
Marcin Kuzminski <marcin@python-works.com>
parents: 860
diff changeset
28 import formencode
2192
a801c4542f48 added useful system info + packages to settings page.
Marcin Kuzminski <marcin@python-works.com>
parents: 2086
diff changeset
29 import pkg_resources
a801c4542f48 added useful system info + packages to settings page.
Marcin Kuzminski <marcin@python-works.com>
parents: 2086
diff changeset
30 import platform
890
042d38683d42 implemented #89 google analytics code
Marcin Kuzminski <marcin@python-works.com>
parents: 860
diff changeset
31
1022
4f834b0abcd3 Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents: 902
diff changeset
32 from sqlalchemy import func
346
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
33 from formencode import htmlfill
1036
405b80e4ccd5 Major refactoring, removed when possible calls to app globals.
Marcin Kuzminski <marcin@python-works.com>
parents: 1027
diff changeset
34 from pylons import request, session, tmpl_context as c, url, config
346
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
35 from pylons.controllers.util import abort, redirect
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
36 from pylons.i18n.translation import _
890
042d38683d42 implemented #89 google analytics code
Marcin Kuzminski <marcin@python-works.com>
parents: 860
diff changeset
37
547
1e757ac98988 renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents: 537
diff changeset
38 from rhodecode.lib import helpers as h
1e757ac98988 renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents: 537
diff changeset
39 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator, \
3333
069884383cc7 Implemented #738 Giving a user WRITE+ permissions on folder should not allow repo creation in root folder.
Marcin Kuzminski <marcin@python-works.com>
parents: 3308
diff changeset
40 HasPermissionAnyDecorator, NotAnonymous, HasPermissionAny,\
3455
d5ae996eed11 show ip for my account, and only in editing your user, showing in all users next to API key is misleading
Marcin Kuzminski <marcin@python-works.com>
parents: 3404
diff changeset
41 HasReposGroupPermissionAll, HasReposGroupPermissionAny, AuthUser
547
1e757ac98988 renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents: 537
diff changeset
42 from rhodecode.lib.base import BaseController, render
705
9e9f1b919c0c implements #60, ldap configuration and authentication.
Marcin Kuzminski <marcin@python-works.com>
parents: 692
diff changeset
43 from rhodecode.lib.celerylib import tasks, run_task
3693
6843cabe9925 removed duplicated logic of how we invalidate caches for repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3629
diff changeset
44 from rhodecode.lib.utils import repo2db_mapper, set_rhodecode_config, \
6843cabe9925 removed duplicated logic of how we invalidate caches for repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3629
diff changeset
45 check_git_version
1633
2c0d35e336b5 refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents: 1547
diff changeset
46 from rhodecode.model.db import RhodeCodeUi, Repository, RepoGroup, \
2625
fc19979a8421 Added views for new ajax functions, got somehow lost in previos commit
Marcin Kuzminski <marcin@python-works.com>
parents: 2544
diff changeset
47 RhodeCodeSetting, PullRequest, PullRequestReviewers
547
1e757ac98988 renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents: 537
diff changeset
48 from rhodecode.model.forms import UserForm, ApplicationSettingsForm, \
2674
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
49 ApplicationUiSettingsForm, ApplicationVisualisationForm
3714
7e3d89d9d3a2 - Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents: 3712
diff changeset
50 from rhodecode.model.scm import ScmModel, RepoGroupList
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
51 from rhodecode.model.user import UserModel
3154
0226b6d6b2b5 Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents: 3145
diff changeset
52 from rhodecode.model.repo import RepoModel
1501
a828b83dfa4b Deprecated UserModel removals
Marcin Kuzminski <marcin@python-works.com>
parents: 1460
diff changeset
53 from rhodecode.model.db import User
1718
f78bee8eec78 reduce cookie size for better support of client side sessions
Marcin Kuzminski <marcin@python-works.com>
parents: 1717
diff changeset
54 from rhodecode.model.notification import EmailNotificationModel
1749
8ecc6b8229a5 commit less models
Marcin Kuzminski <marcin@python-works.com>
parents: 1718
diff changeset
55 from rhodecode.model.meta import Session
3145
bee09f317edc nicer representation of list of rescanned repositories
Marcin Kuzminski <marcin@python-works.com>
parents: 3142
diff changeset
56 from rhodecode.lib.utils2 import str2bool, safe_unicode
3154
0226b6d6b2b5 Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents: 3145
diff changeset
57 from rhodecode.lib.compat import json
346
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
58 log = logging.getLogger(__name__)
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
59
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
60
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
61 class SettingsController(BaseController):
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
62 """REST Controller styled on the Atom Publishing Protocol"""
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
63 # To properly map this controller, ensure your config/routing.py
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
64 # file has a resource setup:
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1164
diff changeset
65 # map.resource('setting', 'settings', controller='admin/settings',
346
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
66 # path_prefix='/admin', name_prefix='admin_')
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
67
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
68 @LoginRequired()
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
69 def __before__(self):
3712
08cf7741e5e1 removed obsolete admin_user tmpl context variables
Marcin Kuzminski <marcin@python-works.com>
parents: 3693
diff changeset
70 super(SettingsController, self).__before__()
2207
17ff5693566b white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 2192
diff changeset
71 c.modules = sorted([(p.project_name, p.version)
2890
84414d73c233 Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents: 2844
diff changeset
72 for p in pkg_resources.working_set]
84414d73c233 Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents: 2844
diff changeset
73 + [('git', check_git_version())],
2223
528f987f2459 fix ordering of system packages info
Marcin Kuzminski <marcin@python-works.com>
parents: 2207
diff changeset
74 key=lambda k: k[0].lower())
2192
a801c4542f48 added useful system info + packages to settings page.
Marcin Kuzminski <marcin@python-works.com>
parents: 2086
diff changeset
75 c.py_version = platform.python_version()
2207
17ff5693566b white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 2192
diff changeset
76 c.platform = platform.platform()
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
77
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
78 @HasPermissionAllDecorator('hg.admin')
346
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
79 def index(self, format='html'):
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
80 """GET /admin/settings: All items in the collection"""
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
81 # url('admin_settings')
350
664a5b8c551a Added application settings, are now customizable from database
Marcin Kuzminski <marcin@python-works.com>
parents: 348
diff changeset
82
1633
2c0d35e336b5 refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents: 1547
diff changeset
83 defaults = RhodeCodeSetting.get_app_settings()
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
84 defaults.update(self._get_hg_ui_settings())
2192
a801c4542f48 added useful system info + packages to settings page.
Marcin Kuzminski <marcin@python-works.com>
parents: 2086
diff changeset
85
350
664a5b8c551a Added application settings, are now customizable from database
Marcin Kuzminski <marcin@python-works.com>
parents: 348
diff changeset
86 return htmlfill.render(
664a5b8c551a Added application settings, are now customizable from database
Marcin Kuzminski <marcin@python-works.com>
parents: 348
diff changeset
87 render('admin/settings/settings.html'),
664a5b8c551a Added application settings, are now customizable from database
Marcin Kuzminski <marcin@python-works.com>
parents: 348
diff changeset
88 defaults=defaults,
664a5b8c551a Added application settings, are now customizable from database
Marcin Kuzminski <marcin@python-works.com>
parents: 348
diff changeset
89 encoding="UTF-8",
664a5b8c551a Added application settings, are now customizable from database
Marcin Kuzminski <marcin@python-works.com>
parents: 348
diff changeset
90 force_defaults=False
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
91 )
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
92
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
93 @HasPermissionAllDecorator('hg.admin')
346
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
94 def create(self):
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
95 """POST /admin/settings: Create a new item"""
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
96 # url('admin_settings')
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
97
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
98 @HasPermissionAllDecorator('hg.admin')
346
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
99 def new(self, format='html'):
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
100 """GET /admin/settings/new: Form to create a new item"""
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
101 # url('admin_new_setting')
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
102
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
103 @HasPermissionAllDecorator('hg.admin')
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
104 def update(self, setting_id):
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
105 """PUT /admin/settings/setting_id: Update an existing item"""
346
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
106 # Forms posted to this method should contain a hidden field:
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
107 # <input type="hidden" name="_method" value="PUT" />
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
108 # Or using helpers:
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
109 # h.form(url('admin_setting', setting_id=ID),
346
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
110 # method='put')
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
111 # url('admin_setting', setting_id=ID)
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
112
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
113 if setting_id == 'mapping':
348
e8fc875467bd implemented manual repo rescann and remapping
Marcin Kuzminski <marcin@python-works.com>
parents: 346
diff changeset
114 rm_obsolete = request.POST.get('destroy', False)
1976
Marcin Kuzminski <marcin@python-works.com>
parents: 1824
diff changeset
115 log.debug('Rescanning directories with destroy=%s' % rm_obsolete)
1036
405b80e4ccd5 Major refactoring, removed when possible calls to app globals.
Marcin Kuzminski <marcin@python-works.com>
parents: 1027
diff changeset
116 initial = ScmModel().repo_scan()
1039
51b70569c330 extended admin rescan to show what repositories was added and what removed
Marcin Kuzminski <marcin@python-works.com>
parents: 1036
diff changeset
117 log.debug('invalidating all repositories')
665
070f32743632 Moved out reposcan into hg Model.
Marcin Kuzminski <marcin@python-works.com>
parents: 661
diff changeset
118 for repo_name in initial.keys():
3693
6843cabe9925 removed duplicated logic of how we invalidate caches for repos
Marcin Kuzminski <marcin@python-works.com>
parents: 3629
diff changeset
119 ScmModel().mark_for_invalidation(repo_name)
665
070f32743632 Moved out reposcan into hg Model.
Marcin Kuzminski <marcin@python-works.com>
parents: 661
diff changeset
120
1039
51b70569c330 extended admin rescan to show what repositories was added and what removed
Marcin Kuzminski <marcin@python-works.com>
parents: 1036
diff changeset
121 added, removed = repo2db_mapper(initial, rm_obsolete)
3145
bee09f317edc nicer representation of list of rescanned repositories
Marcin Kuzminski <marcin@python-works.com>
parents: 3142
diff changeset
122 _repr = lambda l: ', '.join(map(safe_unicode, l)) or '-'
bee09f317edc nicer representation of list of rescanned repositories
Marcin Kuzminski <marcin@python-works.com>
parents: 3142
diff changeset
123 h.flash(_('Repositories successfully '
bee09f317edc nicer representation of list of rescanned repositories
Marcin Kuzminski <marcin@python-works.com>
parents: 3142
diff changeset
124 'rescanned added: %s ; removed: %s') %
bee09f317edc nicer representation of list of rescanned repositories
Marcin Kuzminski <marcin@python-works.com>
parents: 3142
diff changeset
125 (_repr(added), _repr(removed)),
3142
1e7839c0930a admin settings: show numbers in rescan flash message instead of python lists
Mads Kiilerich <madski@unity3d.com>
parents: 3140
diff changeset
126 category='success')
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
127
467
3fc3ce53659b starting celery branch
Marcin Kuzminski <marcin@python-works.com>
parents: 446
diff changeset
128 if setting_id == 'whoosh':
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
129 repo_location = self._get_hg_ui_settings()['paths_root_path']
489
460ad816820d fixed bug when new repo had no last commiter,
Marcin Kuzminski <marcin@python-works.com>
parents: 473
diff changeset
130 full_index = request.POST.get('full_index', False)
1164
Marcin Kuzminski <marcin@python-works.com>
parents: 1161
diff changeset
131 run_task(tasks.whoosh_index, repo_location, full_index)
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
132 h.flash(_('Whoosh reindex task scheduled'), category='success')
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
133
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
134 if setting_id == 'global':
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
135
350
664a5b8c551a Added application settings, are now customizable from database
Marcin Kuzminski <marcin@python-works.com>
parents: 348
diff changeset
136 application_form = ApplicationSettingsForm()()
664a5b8c551a Added application settings, are now customizable from database
Marcin Kuzminski <marcin@python-works.com>
parents: 348
diff changeset
137 try:
664a5b8c551a Added application settings, are now customizable from database
Marcin Kuzminski <marcin@python-works.com>
parents: 348
diff changeset
138 form_result = application_form.to_python(dict(request.POST))
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
139 except formencode.Invalid, errors:
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
140 return htmlfill.render(
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
141 render('admin/settings/settings.html'),
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
142 defaults=errors.value,
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
143 errors=errors.error_dict or {},
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
144 prefix_error=False,
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
145 encoding="UTF-8"
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
146 )
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
147
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
148 try:
2674
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
149 sett1 = RhodeCodeSetting.get_by_name_or_create('title')
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
150 sett1.app_settings_value = form_result['rhodecode_title']
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
151 Session().add(sett1)
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
152
2674
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
153 sett2 = RhodeCodeSetting.get_by_name_or_create('realm')
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
154 sett2.app_settings_value = form_result['rhodecode_realm']
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
155 Session().add(sett2)
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
156
2674
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
157 sett3 = RhodeCodeSetting.get_by_name_or_create('ga_code')
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
158 sett3.app_settings_value = form_result['rhodecode_ga_code']
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
159 Session().add(sett3)
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
160
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
161 Session().commit()
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
162 set_rhodecode_config(config)
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
163 h.flash(_('Updated application settings'), category='success')
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
164
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
165 except Exception:
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
166 log.error(traceback.format_exc())
3565
a8f2d78d14ea consistently capitalize initial letter in flash messages
Mads Kiilerich <madski@unity3d.com>
parents: 3455
diff changeset
167 h.flash(_('Error occurred during updating '
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
168 'application settings'),
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
169 category='error')
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
170
2674
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
171 if setting_id == 'visual':
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
172
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
173 application_form = ApplicationVisualisationForm()()
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
174 try:
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
175 form_result = application_form.to_python(dict(request.POST))
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
176 except formencode.Invalid, errors:
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
177 return htmlfill.render(
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
178 render('admin/settings/settings.html'),
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
179 defaults=errors.value,
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
180 errors=errors.error_dict or {},
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
181 prefix_error=False,
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
182 encoding="UTF-8"
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
183 )
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
184
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
185 try:
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
186 sett1 = RhodeCodeSetting.get_by_name_or_create('show_public_icon')
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
187 sett1.app_settings_value = \
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
188 form_result['rhodecode_show_public_icon']
2936
62e493c7f436 Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents: 2890
diff changeset
189 Session().add(sett1)
2674
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
190
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
191 sett2 = RhodeCodeSetting.get_by_name_or_create('show_private_icon')
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
192 sett2.app_settings_value = \
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
193 form_result['rhodecode_show_private_icon']
2936
62e493c7f436 Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents: 2890
diff changeset
194 Session().add(sett2)
2674
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
195
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
196 sett3 = RhodeCodeSetting.get_by_name_or_create('stylify_metatags')
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
197 sett3.app_settings_value = \
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
198 form_result['rhodecode_stylify_metatags']
2936
62e493c7f436 Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents: 2890
diff changeset
199 Session().add(sett3)
2674
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
200
2936
62e493c7f436 Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents: 2890
diff changeset
201 sett4 = RhodeCodeSetting.get_by_name_or_create('lightweight_dashboard')
62e493c7f436 Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents: 2890
diff changeset
202 sett4.app_settings_value = \
62e493c7f436 Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents: 2890
diff changeset
203 form_result['rhodecode_lightweight_dashboard']
62e493c7f436 Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents: 2890
diff changeset
204 Session().add(sett4)
62e493c7f436 Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents: 2890
diff changeset
205
3308
72a91632b731 repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 3239
diff changeset
206 sett4 = RhodeCodeSetting.get_by_name_or_create('repository_fields')
72a91632b731 repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 3239
diff changeset
207 sett4.app_settings_value = \
72a91632b731 repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 3239
diff changeset
208 form_result['rhodecode_repository_fields']
72a91632b731 repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 3239
diff changeset
209 Session().add(sett4)
72a91632b731 repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 3239
diff changeset
210
2674
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
211 Session().commit()
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
212 set_rhodecode_config(config)
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
213 h.flash(_('Updated visualisation settings'),
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
214 category='success')
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
215
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
216 except Exception:
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
217 log.error(traceback.format_exc())
3565
a8f2d78d14ea consistently capitalize initial letter in flash messages
Mads Kiilerich <madski@unity3d.com>
parents: 3455
diff changeset
218 h.flash(_('Error occurred during updating '
2674
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
219 'visualisation settings'),
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
220 category='error')
a221706dab50 merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents: 2662
diff changeset
221
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
222 if setting_id == 'vcs':
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
223 application_form = ApplicationUiSettingsForm()()
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
224 try:
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
225 form_result = application_form.to_python(dict(request.POST))
564
ba7e24cd4786 refactor codes and setup for python 2.5
Marcin Kuzminski <marcin@python-works.com>
parents: 549
diff changeset
226 except formencode.Invalid, errors:
350
664a5b8c551a Added application settings, are now customizable from database
Marcin Kuzminski <marcin@python-works.com>
parents: 348
diff changeset
227 return htmlfill.render(
664a5b8c551a Added application settings, are now customizable from database
Marcin Kuzminski <marcin@python-works.com>
parents: 348
diff changeset
228 render('admin/settings/settings.html'),
359
339d1368c10d new style error display for settings, added flash msg for repo rescan
Marcin Kuzminski <marcin@python-works.com>
parents: 350
diff changeset
229 defaults=errors.value,
339d1368c10d new style error display for settings, added flash msg for repo rescan
Marcin Kuzminski <marcin@python-works.com>
parents: 350
diff changeset
230 errors=errors.error_dict or {},
339d1368c10d new style error display for settings, added flash msg for repo rescan
Marcin Kuzminski <marcin@python-works.com>
parents: 350
diff changeset
231 prefix_error=False,
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
232 encoding="UTF-8"
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
233 )
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
234
388
3bcf9529d221 Added new application settings,Push ssl and repositories path
Marcin Kuzminski <marcin@python-works.com>
parents: 381
diff changeset
235 try:
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
236 sett = RhodeCodeUi.get_by_key('push_ssl')
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
237 sett.ui_value = form_result['web_push_ssl']
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
238 Session().add(sett)
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
239
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
240 sett = RhodeCodeUi.get_by_key('/')
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
241 sett.ui_value = form_result['paths_root_path']
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
242 Session().add(sett)
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
243
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
244 #HOOKS
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
245 sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_UPDATE)
3570
8173b0cfe9bd settings: simplify handling of form values for hooks and extensions
Mads Kiilerich <madski@unity3d.com>
parents: 3565
diff changeset
246 sett.ui_active = form_result['hooks_changegroup_update']
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
247 Session().add(sett)
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
248
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
249 sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_REPO_SIZE)
3570
8173b0cfe9bd settings: simplify handling of form values for hooks and extensions
Mads Kiilerich <madski@unity3d.com>
parents: 3565
diff changeset
250 sett.ui_active = form_result['hooks_changegroup_repo_size']
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
251 Session().add(sett)
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
252
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
253 sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_PUSH)
3570
8173b0cfe9bd settings: simplify handling of form values for hooks and extensions
Mads Kiilerich <madski@unity3d.com>
parents: 3565
diff changeset
254 sett.ui_active = form_result['hooks_changegroup_push_logger']
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
255 Session().add(sett)
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
256
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
257 sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_PULL)
3570
8173b0cfe9bd settings: simplify handling of form values for hooks and extensions
Mads Kiilerich <madski@unity3d.com>
parents: 3565
diff changeset
258 sett.ui_active = form_result['hooks_outgoing_pull_logger']
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
259
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
260 Session().add(sett)
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
261
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
262 ## EXTENSIONS
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
263 sett = RhodeCodeUi.get_by_key('largefiles')
2844
7b0f803229be autofix largefiles hggit hgsubversion options if they are not in the database
Marcin Kuzminski <marcin@python-works.com>
parents: 2835
diff changeset
264 if not sett:
7b0f803229be autofix largefiles hggit hgsubversion options if they are not in the database
Marcin Kuzminski <marcin@python-works.com>
parents: 2835
diff changeset
265 #make one if it's not there !
7b0f803229be autofix largefiles hggit hgsubversion options if they are not in the database
Marcin Kuzminski <marcin@python-works.com>
parents: 2835
diff changeset
266 sett = RhodeCodeUi()
7b0f803229be autofix largefiles hggit hgsubversion options if they are not in the database
Marcin Kuzminski <marcin@python-works.com>
parents: 2835
diff changeset
267 sett.ui_key = 'largefiles'
7b0f803229be autofix largefiles hggit hgsubversion options if they are not in the database
Marcin Kuzminski <marcin@python-works.com>
parents: 2835
diff changeset
268 sett.ui_section = 'extensions'
3570
8173b0cfe9bd settings: simplify handling of form values for hooks and extensions
Mads Kiilerich <madski@unity3d.com>
parents: 3565
diff changeset
269 sett.ui_active = form_result['extensions_largefiles']
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
270 Session().add(sett)
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
271
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
272 sett = RhodeCodeUi.get_by_key('hgsubversion')
2844
7b0f803229be autofix largefiles hggit hgsubversion options if they are not in the database
Marcin Kuzminski <marcin@python-works.com>
parents: 2835
diff changeset
273 if not sett:
7b0f803229be autofix largefiles hggit hgsubversion options if they are not in the database
Marcin Kuzminski <marcin@python-works.com>
parents: 2835
diff changeset
274 #make one if it's not there !
7b0f803229be autofix largefiles hggit hgsubversion options if they are not in the database
Marcin Kuzminski <marcin@python-works.com>
parents: 2835
diff changeset
275 sett = RhodeCodeUi()
7b0f803229be autofix largefiles hggit hgsubversion options if they are not in the database
Marcin Kuzminski <marcin@python-works.com>
parents: 2835
diff changeset
276 sett.ui_key = 'hgsubversion'
7b0f803229be autofix largefiles hggit hgsubversion options if they are not in the database
Marcin Kuzminski <marcin@python-works.com>
parents: 2835
diff changeset
277 sett.ui_section = 'extensions'
7b0f803229be autofix largefiles hggit hgsubversion options if they are not in the database
Marcin Kuzminski <marcin@python-works.com>
parents: 2835
diff changeset
278
3570
8173b0cfe9bd settings: simplify handling of form values for hooks and extensions
Mads Kiilerich <madski@unity3d.com>
parents: 3565
diff changeset
279 sett.ui_active = form_result['extensions_hgsubversion']
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
280 Session().add(sett)
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
281
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
282 # sett = RhodeCodeUi.get_by_key('hggit')
2844
7b0f803229be autofix largefiles hggit hgsubversion options if they are not in the database
Marcin Kuzminski <marcin@python-works.com>
parents: 2835
diff changeset
283 # if not sett:
7b0f803229be autofix largefiles hggit hgsubversion options if they are not in the database
Marcin Kuzminski <marcin@python-works.com>
parents: 2835
diff changeset
284 # #make one if it's not there !
7b0f803229be autofix largefiles hggit hgsubversion options if they are not in the database
Marcin Kuzminski <marcin@python-works.com>
parents: 2835
diff changeset
285 # sett = RhodeCodeUi()
7b0f803229be autofix largefiles hggit hgsubversion options if they are not in the database
Marcin Kuzminski <marcin@python-works.com>
parents: 2835
diff changeset
286 # sett.ui_key = 'hggit'
7b0f803229be autofix largefiles hggit hgsubversion options if they are not in the database
Marcin Kuzminski <marcin@python-works.com>
parents: 2835
diff changeset
287 # sett.ui_section = 'extensions'
7b0f803229be autofix largefiles hggit hgsubversion options if they are not in the database
Marcin Kuzminski <marcin@python-works.com>
parents: 2835
diff changeset
288 #
3570
8173b0cfe9bd settings: simplify handling of form values for hooks and extensions
Mads Kiilerich <madski@unity3d.com>
parents: 3565
diff changeset
289 # sett.ui_active = form_result['extensions_hggit']
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
290 # Session().add(sett)
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
291
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
292 Session().commit()
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
293
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
294 h.flash(_('Updated VCS settings'), category='success')
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
295
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
296 except Exception:
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
297 log.error(traceback.format_exc())
3565
a8f2d78d14ea consistently capitalize initial letter in flash messages
Mads Kiilerich <madski@unity3d.com>
parents: 3455
diff changeset
298 h.flash(_('Error occurred during updating '
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
299 'application settings'), category='error')
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
300
1460
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
301 if setting_id == 'hooks':
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
302 ui_key = request.POST.get('new_hook_ui_key')
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
303 ui_value = request.POST.get('new_hook_ui_value')
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
304 try:
1673
333b3e7c991f Added email sending test site
Marcin Kuzminski <marcin@python-works.com>
parents: 1633
diff changeset
305
1460
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
306 if ui_value and ui_key:
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
307 RhodeCodeUi.create_or_update_hook(ui_key, ui_value)
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
308 h.flash(_('Added new hook'),
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
309 category='success')
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
310
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
311 # check for edits
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
312 update = False
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
313 _d = request.POST.dict_of_lists()
1798
2ee93fba129e fixes testing email in settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1749
diff changeset
314 for k, v in zip(_d.get('hook_ui_key', []),
2ee93fba129e fixes testing email in settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1749
diff changeset
315 _d.get('hook_ui_value_new', [])):
1460
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
316 RhodeCodeUi.create_or_update_hook(k, v)
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
317 update = True
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
318
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
319 if update:
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
320 h.flash(_('Updated hooks'), category='success')
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
321 Session().commit()
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
322 except Exception:
1460
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
323 log.error(traceback.format_exc())
3565
a8f2d78d14ea consistently capitalize initial letter in flash messages
Mads Kiilerich <madski@unity3d.com>
parents: 3455
diff changeset
324 h.flash(_('Error occurred during hook creation'),
1460
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
325 category='error')
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
326
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
327 return redirect(url('admin_edit_setting', setting_id='hooks'))
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
328
1673
333b3e7c991f Added email sending test site
Marcin Kuzminski <marcin@python-works.com>
parents: 1633
diff changeset
329 if setting_id == 'email':
333b3e7c991f Added email sending test site
Marcin Kuzminski <marcin@python-works.com>
parents: 1633
diff changeset
330 test_email = request.POST.get('test_email')
333b3e7c991f Added email sending test site
Marcin Kuzminski <marcin@python-works.com>
parents: 1633
diff changeset
331 test_email_subj = 'RhodeCode TestEmail'
333b3e7c991f Added email sending test site
Marcin Kuzminski <marcin@python-works.com>
parents: 1633
diff changeset
332 test_email_body = 'RhodeCode Email test'
1798
2ee93fba129e fixes testing email in settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1749
diff changeset
333
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 1712
diff changeset
334 test_email_html_body = EmailNotificationModel()\
1798
2ee93fba129e fixes testing email in settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1749
diff changeset
335 .get_email_tmpl(EmailNotificationModel.TYPE_DEFAULT,
2ee93fba129e fixes testing email in settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1749
diff changeset
336 body=test_email_body)
1673
333b3e7c991f Added email sending test site
Marcin Kuzminski <marcin@python-works.com>
parents: 1633
diff changeset
337
3140
105a0374faa1 admin, email test: fix test for test_email recipients
Mads Kiilerich <madski@unity3d.com>
parents: 3056
diff changeset
338 recipients = [test_email] if test_email else None
1798
2ee93fba129e fixes testing email in settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1749
diff changeset
339
2ee93fba129e fixes testing email in settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1749
diff changeset
340 run_task(tasks.send_email, recipients, test_email_subj,
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 1712
diff changeset
341 test_email_body, test_email_html_body)
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 1712
diff changeset
342
1673
333b3e7c991f Added email sending test site
Marcin Kuzminski <marcin@python-works.com>
parents: 1633
diff changeset
343 h.flash(_('Email task created'), category='success')
348
e8fc875467bd implemented manual repo rescann and remapping
Marcin Kuzminski <marcin@python-works.com>
parents: 346
diff changeset
344 return redirect(url('admin_settings'))
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
345
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
346 @HasPermissionAllDecorator('hg.admin')
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
347 def delete(self, setting_id):
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
348 """DELETE /admin/settings/setting_id: Delete an existing item"""
346
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
349 # Forms posted to this method should contain a hidden field:
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
350 # <input type="hidden" name="_method" value="DELETE" />
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
351 # Or using helpers:
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
352 # h.form(url('admin_setting', setting_id=ID),
346
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
353 # method='delete')
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
354 # url('admin_setting', setting_id=ID)
1460
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
355 if setting_id == 'hooks':
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
356 hook_id = request.POST.get('hook_id')
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
357 RhodeCodeUi.delete(hook_id)
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
358 Session().commit()
1673
333b3e7c991f Added email sending test site
Marcin Kuzminski <marcin@python-works.com>
parents: 1633
diff changeset
359
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
360 @HasPermissionAllDecorator('hg.admin')
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
361 def show(self, setting_id, format='html'):
1245
5f2fbab7c429 PEP8ify - controllers
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
362 """
5f2fbab7c429 PEP8ify - controllers
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
363 GET /admin/settings/setting_id: Show a specific item"""
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
364 # url('admin_setting', setting_id=ID)
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
365
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
366 @HasPermissionAllDecorator('hg.admin')
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
367 def edit(self, setting_id, format='html'):
1245
5f2fbab7c429 PEP8ify - controllers
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
368 """
5f2fbab7c429 PEP8ify - controllers
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
369 GET /admin/settings/setting_id/edit: Form to
5f2fbab7c429 PEP8ify - controllers
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
370 edit an existing item"""
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
371 # url('admin_edit_setting', setting_id=ID)
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
372
1460
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
373 c.hooks = RhodeCodeUi.get_builtin_hooks()
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
374 c.custom_hooks = RhodeCodeUi.get_custom_hooks()
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
375
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
376 return htmlfill.render(
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
377 render('admin/settings/hooks.html'),
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
378 defaults={},
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
379 encoding="UTF-8",
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
380 force_defaults=False
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
381 )
b50348816a80 Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents: 1366
diff changeset
382
3159
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
383 def _load_my_repos_data(self):
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
384 repos_list = Session().query(Repository)\
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
385 .filter(Repository.user_id ==
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
386 self.rhodecode_user.user_id)\
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
387 .order_by(func.lower(Repository.repo_name)).all()
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
388
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
389 repos_data = RepoModel().get_repos_as_dict(repos_list=repos_list,
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
390 admin=True)
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
391 #json used to render the grid
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
392 return json.dumps(repos_data)
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
393
779
389d02a5df52 Added isanonymous decorator for checking permissions for anonymous access
Marcin Kuzminski <marcin@python-works.com>
parents: 765
diff changeset
394 @NotAnonymous()
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
395 def my_account(self):
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
396 """
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1164
diff changeset
397 GET /_admin/my_account Displays info about my account
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
398 """
779
389d02a5df52 Added isanonymous decorator for checking permissions for anonymous access
Marcin Kuzminski <marcin@python-works.com>
parents: 765
diff changeset
399 # url('admin_settings_my_account')
665
070f32743632 Moved out reposcan into hg Model.
Marcin Kuzminski <marcin@python-works.com>
parents: 661
diff changeset
400
1501
a828b83dfa4b Deprecated UserModel removals
Marcin Kuzminski <marcin@python-works.com>
parents: 1460
diff changeset
401 c.user = User.get(self.rhodecode_user.user_id)
3455
d5ae996eed11 show ip for my account, and only in editing your user, showing in all users next to API key is misleading
Marcin Kuzminski <marcin@python-works.com>
parents: 3404
diff changeset
402 c.perm_user = AuthUser(user_id=self.rhodecode_user.user_id,
d5ae996eed11 show ip for my account, and only in editing your user, showing in all users next to API key is misleading
Marcin Kuzminski <marcin@python-works.com>
parents: 3404
diff changeset
403 ip_addr=self.ip_addr)
3159
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
404 c.ldap_dn = c.user.ldap_dn
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
405
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
406 if c.user.username == 'default':
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
407 h.flash(_("You can't edit this user since it's"
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
408 " crucial for entire application"), category='warning')
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
409 return redirect(url('users'))
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
410
3154
0226b6d6b2b5 Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents: 3145
diff changeset
411 #json used to render the grid
3159
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
412 c.data = self._load_my_repos_data()
3154
0226b6d6b2b5 Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents: 3145
diff changeset
413
832
634596f81cfd new improved models with helper functions for easier data fetching
Marcin Kuzminski <marcin@python-works.com>
parents: 829
diff changeset
414 defaults = c.user.get_dict()
2353
ef71d7e63806 highly improved performance of my_account page by removing super heavy htmlfill call on whole page
Marcin Kuzminski <marcin@python-works.com>
parents: 2223
diff changeset
415
ef71d7e63806 highly improved performance of my_account page by removing super heavy htmlfill call on whole page
Marcin Kuzminski <marcin@python-works.com>
parents: 2223
diff changeset
416 c.form = htmlfill.render(
ef71d7e63806 highly improved performance of my_account page by removing super heavy htmlfill call on whole page
Marcin Kuzminski <marcin@python-works.com>
parents: 2223
diff changeset
417 render('admin/users/user_edit_my_account_form.html'),
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
418 defaults=defaults,
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
419 encoding="UTF-8",
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
420 force_defaults=False
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
421 )
2353
ef71d7e63806 highly improved performance of my_account page by removing super heavy htmlfill call on whole page
Marcin Kuzminski <marcin@python-works.com>
parents: 2223
diff changeset
422 return render('admin/users/user_edit_my_account.html')
346
51362853ac3b added settings rest controllers for admin, updated routes with easier submodule handling
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
423
2626
4abce2c11c5f My account pages shouldn't be accessible by anonymous users
Marcin Kuzminski <marcin@python-works.com>
parents: 2625
diff changeset
424 @NotAnonymous()
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
425 def my_account_update(self):
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
426 """PUT /_admin/my_account_update: Update an existing item"""
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
427 # Forms posted to this method should contain a hidden field:
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
428 # <input type="hidden" name="_method" value="PUT" />
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
429 # Or using helpers:
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
430 # h.form(url('admin_settings_my_account_update'),
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
431 # method='put')
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
432 # url('admin_settings_my_account_update', id=ID)
1121
f3f847712f87 replaced all global calls to template context (rhodecode_user), into instance attributes
Marcin Kuzminski <marcin@python-works.com>
parents: 1112
diff changeset
433 uid = self.rhodecode_user.user_id
3159
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
434 c.user = User.get(self.rhodecode_user.user_id)
3455
d5ae996eed11 show ip for my account, and only in editing your user, showing in all users next to API key is misleading
Marcin Kuzminski <marcin@python-works.com>
parents: 3404
diff changeset
435 c.perm_user = AuthUser(user_id=self.rhodecode_user.user_id,
d5ae996eed11 show ip for my account, and only in editing your user, showing in all users next to API key is misleading
Marcin Kuzminski <marcin@python-works.com>
parents: 3404
diff changeset
436 ip_addr=self.ip_addr)
3159
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
437 c.ldap_dn = c.user.ldap_dn
2544
6ce3387bf0ce Renamed name to firstname in forms
Marcin Kuzminski <marcin@python-works.com>
parents: 2484
diff changeset
438 email = self.rhodecode_user.email
1245
5f2fbab7c429 PEP8ify - controllers
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
439 _form = UserForm(edit=True,
2544
6ce3387bf0ce Renamed name to firstname in forms
Marcin Kuzminski <marcin@python-works.com>
parents: 2484
diff changeset
440 old_data={'user_id': uid, 'email': email})()
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
441 form_result = {}
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
442 try:
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
443 form_result = _form.to_python(dict(request.POST))
3159
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
444 skip_attrs = ['admin', 'active'] # skip attr for my account
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
445 if c.ldap_dn:
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
446 #forbid updating username for ldap accounts
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
447 skip_attrs.append('username')
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
448 UserModel().update(uid, form_result, skip_attrs=skip_attrs)
779
389d02a5df52 Added isanonymous decorator for checking permissions for anonymous access
Marcin Kuzminski <marcin@python-works.com>
parents: 765
diff changeset
449 h.flash(_('Your account was updated successfully'),
396
9416269860c9 little css update, and flash messages
Marcin Kuzminski <marcin@python-works.com>
parents: 395
diff changeset
450 category='success')
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
451 Session().commit()
564
ba7e24cd4786 refactor codes and setup for python 2.5
Marcin Kuzminski <marcin@python-works.com>
parents: 549
diff changeset
452 except formencode.Invalid, errors:
3159
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
453 #json used to render the grid
4910b2607a29 fixes issue #658, my account edit was missing this functionality
Marcin Kuzminski <marcin@python-works.com>
parents: 3154
diff changeset
454 c.data = self._load_my_repos_data()
2353
ef71d7e63806 highly improved performance of my_account page by removing super heavy htmlfill call on whole page
Marcin Kuzminski <marcin@python-works.com>
parents: 2223
diff changeset
455 c.form = htmlfill.render(
ef71d7e63806 highly improved performance of my_account page by removing super heavy htmlfill call on whole page
Marcin Kuzminski <marcin@python-works.com>
parents: 2223
diff changeset
456 render('admin/users/user_edit_my_account_form.html'),
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
457 defaults=errors.value,
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
458 errors=errors.error_dict or {},
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
459 prefix_error=False,
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
460 encoding="UTF-8")
2353
ef71d7e63806 highly improved performance of my_account page by removing super heavy htmlfill call on whole page
Marcin Kuzminski <marcin@python-works.com>
parents: 2223
diff changeset
461 return render('admin/users/user_edit_my_account.html')
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
462 except Exception:
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
463 log.error(traceback.format_exc())
3565
a8f2d78d14ea consistently capitalize initial letter in flash messages
Mads Kiilerich <madski@unity3d.com>
parents: 3455
diff changeset
464 h.flash(_('Error occurred during update of user %s') \
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
465 % form_result.get('username'), category='error')
629
7e536d1af60d Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents: 564
diff changeset
466
371
5cd6616b8673 routes python 2.5 compatible
Marcin Kuzminski <marcin@python-works.com>
parents: 359
diff changeset
467 return redirect(url('my_account'))
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
468
2626
4abce2c11c5f My account pages shouldn't be accessible by anonymous users
Marcin Kuzminski <marcin@python-works.com>
parents: 2625
diff changeset
469 @NotAnonymous()
2625
fc19979a8421 Added views for new ajax functions, got somehow lost in previos commit
Marcin Kuzminski <marcin@python-works.com>
parents: 2544
diff changeset
470 def my_account_my_pullrequests(self):
3404
7854097b189c Hide closed pull requests on my page.
Marcin Kuzminski <marcin@python-works.com>
parents: 3389
diff changeset
471 c.show_closed = request.GET.get('pr_show_closed')
7854097b189c Hide closed pull requests on my page.
Marcin Kuzminski <marcin@python-works.com>
parents: 3389
diff changeset
472
7854097b189c Hide closed pull requests on my page.
Marcin Kuzminski <marcin@python-works.com>
parents: 3389
diff changeset
473 def _filter(pr):
7854097b189c Hide closed pull requests on my page.
Marcin Kuzminski <marcin@python-works.com>
parents: 3389
diff changeset
474 s = sorted(pr, key=lambda o: o.created_on, reverse=True)
7854097b189c Hide closed pull requests on my page.
Marcin Kuzminski <marcin@python-works.com>
parents: 3389
diff changeset
475 if not c.show_closed:
7854097b189c Hide closed pull requests on my page.
Marcin Kuzminski <marcin@python-works.com>
parents: 3389
diff changeset
476 s = filter(lambda p: p.status != PullRequest.STATUS_CLOSED, s)
7854097b189c Hide closed pull requests on my page.
Marcin Kuzminski <marcin@python-works.com>
parents: 3389
diff changeset
477 return s
7854097b189c Hide closed pull requests on my page.
Marcin Kuzminski <marcin@python-works.com>
parents: 3389
diff changeset
478
7854097b189c Hide closed pull requests on my page.
Marcin Kuzminski <marcin@python-works.com>
parents: 3389
diff changeset
479 c.my_pull_requests = _filter(PullRequest.query()\
3154
0226b6d6b2b5 Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents: 3145
diff changeset
480 .filter(PullRequest.user_id ==
2625
fc19979a8421 Added views for new ajax functions, got somehow lost in previos commit
Marcin Kuzminski <marcin@python-works.com>
parents: 2544
diff changeset
481 self.rhodecode_user.user_id)\
3404
7854097b189c Hide closed pull requests on my page.
Marcin Kuzminski <marcin@python-works.com>
parents: 3389
diff changeset
482 .all())
3389
1c4505e3be5b show flags, and desc sort pull request based on created_date ref #765
Marcin Kuzminski <marcin@python-works.com>
parents: 3333
diff changeset
483
3404
7854097b189c Hide closed pull requests on my page.
Marcin Kuzminski <marcin@python-works.com>
parents: 3389
diff changeset
484 c.participate_in_pull_requests = _filter([
7854097b189c Hide closed pull requests on my page.
Marcin Kuzminski <marcin@python-works.com>
parents: 3389
diff changeset
485 x.pull_request for x in PullRequestReviewers.query()\
7854097b189c Hide closed pull requests on my page.
Marcin Kuzminski <marcin@python-works.com>
parents: 3389
diff changeset
486 .filter(PullRequestReviewers.user_id ==
7854097b189c Hide closed pull requests on my page.
Marcin Kuzminski <marcin@python-works.com>
parents: 3389
diff changeset
487 self.rhodecode_user.user_id).all()])
3389
1c4505e3be5b show flags, and desc sort pull request based on created_date ref #765
Marcin Kuzminski <marcin@python-works.com>
parents: 3333
diff changeset
488
2625
fc19979a8421 Added views for new ajax functions, got somehow lost in previos commit
Marcin Kuzminski <marcin@python-works.com>
parents: 2544
diff changeset
489 return render('admin/users/user_edit_my_account_pullrequests.html')
fc19979a8421 Added views for new ajax functions, got somehow lost in previos commit
Marcin Kuzminski <marcin@python-works.com>
parents: 2544
diff changeset
490
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
491 def _get_hg_ui_settings(self):
2662
91c442a489bb sqlalchemy sessions cleanup in admin
Marcin Kuzminski <marcin@python-works.com>
parents: 2626
diff changeset
492 ret = RhodeCodeUi.query().all()
756
01be209b9828 project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents: 709
diff changeset
493
01be209b9828 project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents: 709
diff changeset
494 if not ret:
01be209b9828 project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents: 709
diff changeset
495 raise Exception('Could not get application ui settings !')
01be209b9828 project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents: 709
diff changeset
496 settings = {}
01be209b9828 project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents: 709
diff changeset
497 for each in ret:
01be209b9828 project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents: 709
diff changeset
498 k = each.ui_key
01be209b9828 project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents: 709
diff changeset
499 v = each.ui_value
01be209b9828 project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents: 709
diff changeset
500 if k == '/':
01be209b9828 project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents: 709
diff changeset
501 k = 'root_path'
01be209b9828 project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents: 709
diff changeset
502
2821
9c90be87ae05 fixed issue #560 require push ssl checkbox wasn't shown when option was enabled
Marcin Kuzminski <marcin@python-works.com>
parents: 2708
diff changeset
503 if k == 'push_ssl':
9c90be87ae05 fixed issue #560 require push ssl checkbox wasn't shown when option was enabled
Marcin Kuzminski <marcin@python-works.com>
parents: 2708
diff changeset
504 v = str2bool(v)
9c90be87ae05 fixed issue #560 require push ssl checkbox wasn't shown when option was enabled
Marcin Kuzminski <marcin@python-works.com>
parents: 2708
diff changeset
505
756
01be209b9828 project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents: 709
diff changeset
506 if k.find('.') != -1:
01be209b9828 project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents: 709
diff changeset
507 k = k.replace('.', '_')
01be209b9828 project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents: 709
diff changeset
508
2708
9bce679a3f49 Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents: 2674
diff changeset
509 if each.ui_section in ['hooks', 'extensions']:
756
01be209b9828 project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents: 709
diff changeset
510 v = each.ui_active
01be209b9828 project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents: 709
diff changeset
511
01be209b9828 project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents: 709
diff changeset
512 settings[each.ui_section + '_' + k] = v
01be209b9828 project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents: 709
diff changeset
513 return settings