diff rhodecode/controllers/admin/settings.py @ 3700:3563bb7b4b82

merge with rc1
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 07 Apr 2013 18:37:22 +0200
parents cd50d1b5f35b 802c94bdfc85
children 5293d4bbb1ea
line wrap: on
line diff
--- a/rhodecode/controllers/admin/settings.py	Mon Mar 11 17:59:38 2013 +0100
+++ b/rhodecode/controllers/admin/settings.py	Sun Apr 07 18:37:22 2013 +0200
@@ -37,7 +37,8 @@
 
 from rhodecode.lib import helpers as h
 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator, \
-    HasPermissionAnyDecorator, NotAnonymous
+    HasPermissionAnyDecorator, NotAnonymous, HasPermissionAny,\
+    HasReposGroupPermissionAll, HasReposGroupPermissionAny, AuthUser
 from rhodecode.lib.base import BaseController, render
 from rhodecode.lib.celerylib import tasks, run_task
 from rhodecode.lib.utils import repo2db_mapper, invalidate_cache, \
@@ -46,7 +47,7 @@
     RhodeCodeSetting, PullRequest, PullRequestReviewers
 from rhodecode.model.forms import UserForm, ApplicationSettingsForm, \
     ApplicationUiSettingsForm, ApplicationVisualisationForm
-from rhodecode.model.scm import ScmModel
+from rhodecode.model.scm import ScmModel, GroupList
 from rhodecode.model.user import UserModel
 from rhodecode.model.repo import RepoModel
 from rhodecode.model.db import User
@@ -54,6 +55,7 @@
 from rhodecode.model.meta import Session
 from rhodecode.lib.utils2 import str2bool, safe_unicode
 from rhodecode.lib.compat import json
+from webob.exc import HTTPForbidden
 log = logging.getLogger(__name__)
 
 
@@ -165,7 +167,7 @@
 
             except Exception:
                 log.error(traceback.format_exc())
-                h.flash(_('error occurred during updating '
+                h.flash(_('Error occurred during updating '
                           'application settings'),
                           category='error')
 
@@ -204,6 +206,11 @@
                     form_result['rhodecode_lightweight_dashboard']
                 Session().add(sett4)
 
+                sett4 = RhodeCodeSetting.get_by_name_or_create('repository_fields')
+                sett4.app_settings_value = \
+                    form_result['rhodecode_repository_fields']
+                Session().add(sett4)
+
                 Session().commit()
                 set_rhodecode_config(config)
                 h.flash(_('Updated visualisation settings'),
@@ -211,7 +218,7 @@
 
             except Exception:
                 log.error(traceback.format_exc())
-                h.flash(_('error occurred during updating '
+                h.flash(_('Error occurred during updating '
                           'visualisation settings'),
                         category='error')
 
@@ -229,9 +236,6 @@
                 )
 
             try:
-                # fix namespaces for hooks and extensions
-                _f = lambda s: s.replace('.', '_')
-
                 sett = RhodeCodeUi.get_by_key('push_ssl')
                 sett.ui_value = form_result['web_push_ssl']
                 Session().add(sett)
@@ -242,23 +246,19 @@
 
                 #HOOKS
                 sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_UPDATE)
-                sett.ui_active = form_result[_f('hooks_%s' %
-                                                RhodeCodeUi.HOOK_UPDATE)]
+                sett.ui_active = form_result['hooks_changegroup_update']
                 Session().add(sett)
 
                 sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_REPO_SIZE)
-                sett.ui_active = form_result[_f('hooks_%s' %
-                                                RhodeCodeUi.HOOK_REPO_SIZE)]
+                sett.ui_active = form_result['hooks_changegroup_repo_size']
                 Session().add(sett)
 
                 sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_PUSH)
-                sett.ui_active = form_result[_f('hooks_%s' %
-                                                RhodeCodeUi.HOOK_PUSH)]
+                sett.ui_active = form_result['hooks_changegroup_push_logger']
                 Session().add(sett)
 
                 sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_PULL)
-                sett.ui_active = form_result[_f('hooks_%s' %
-                                                 RhodeCodeUi.HOOK_PULL)]
+                sett.ui_active = form_result['hooks_outgoing_pull_logger']
 
                 Session().add(sett)
 
@@ -269,7 +269,7 @@
                     sett = RhodeCodeUi()
                     sett.ui_key = 'largefiles'
                     sett.ui_section = 'extensions'
-                sett.ui_active = form_result[_f('extensions_largefiles')]
+                sett.ui_active = form_result['extensions_largefiles']
                 Session().add(sett)
 
                 sett = RhodeCodeUi.get_by_key('hgsubversion')
@@ -279,7 +279,7 @@
                     sett.ui_key = 'hgsubversion'
                     sett.ui_section = 'extensions'
 
-                sett.ui_active = form_result[_f('extensions_hgsubversion')]
+                sett.ui_active = form_result['extensions_hgsubversion']
                 Session().add(sett)
 
 #                sett = RhodeCodeUi.get_by_key('hggit')
@@ -289,7 +289,7 @@
 #                    sett.ui_key = 'hggit'
 #                    sett.ui_section = 'extensions'
 #
-#                sett.ui_active = form_result[_f('extensions_hggit')]
+#                sett.ui_active = form_result['extensions_hggit']
 #                Session().add(sett)
 
                 Session().commit()
@@ -298,7 +298,7 @@
 
             except Exception:
                 log.error(traceback.format_exc())
-                h.flash(_('error occurred during updating '
+                h.flash(_('Error occurred during updating '
                           'application settings'), category='error')
 
         if setting_id == 'hooks':
@@ -324,7 +324,7 @@
                 Session().commit()
             except Exception:
                 log.error(traceback.format_exc())
-                h.flash(_('error occurred during hook creation'),
+                h.flash(_('Error occurred during hook creation'),
                         category='error')
 
             return redirect(url('admin_edit_setting', setting_id='hooks'))
@@ -402,6 +402,8 @@
         # url('admin_settings_my_account')
 
         c.user = User.get(self.rhodecode_user.user_id)
+        c.perm_user = AuthUser(user_id=self.rhodecode_user.user_id,
+                               ip_addr=self.ip_addr)
         c.ldap_dn = c.user.ldap_dn
 
         if c.user.username == 'default':
@@ -433,6 +435,8 @@
         # url('admin_settings_my_account_update', id=ID)
         uid = self.rhodecode_user.user_id
         c.user = User.get(self.rhodecode_user.user_id)
+        c.perm_user = AuthUser(user_id=self.rhodecode_user.user_id,
+                               ip_addr=self.ip_addr)
         c.ldap_dn = c.user.ldap_dn
         email = self.rhodecode_user.email
         _form = UserForm(edit=True,
@@ -460,45 +464,32 @@
             return render('admin/users/user_edit_my_account.html')
         except Exception:
             log.error(traceback.format_exc())
-            h.flash(_('error occurred during update of user %s') \
+            h.flash(_('Error occurred during update of user %s') \
                     % form_result.get('username'), category='error')
 
         return redirect(url('my_account'))
 
     @NotAnonymous()
     def my_account_my_pullrequests(self):
-        c.my_pull_requests = PullRequest.query()\
+        c.show_closed = request.GET.get('pr_show_closed')
+
+        def _filter(pr):
+            s = sorted(pr, key=lambda o: o.created_on, reverse=True)
+            if not c.show_closed:
+                s = filter(lambda p: p.status != PullRequest.STATUS_CLOSED, s)
+            return s
+
+        c.my_pull_requests = _filter(PullRequest.query()\
                                 .filter(PullRequest.user_id ==
                                         self.rhodecode_user.user_id)\
-                                .all()
-        c.participate_in_pull_requests = \
-            [x.pull_request for x in PullRequestReviewers.query()\
-                                    .filter(PullRequestReviewers.user_id ==
-                                            self.rhodecode_user.user_id)\
-                                    .all()]
-        return render('admin/users/user_edit_my_account_pullrequests.html')
-
-    @NotAnonymous()
-    @HasPermissionAnyDecorator('hg.admin', 'hg.create.repository')
-    def create_repository(self):
-        """GET /_admin/create_repository: Form to create a new item"""
+                                .all())
 
-        c.repo_groups = RepoGroup.groups_choices(check_perms=True)
-        c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups)
-        choices, c.landing_revs = ScmModel().get_repo_landing_revs()
-
-        new_repo = request.GET.get('repo', '')
-        c.new_repo = repo_name_slug(new_repo)
+        c.participate_in_pull_requests = _filter([
+                    x.pull_request for x in PullRequestReviewers.query()\
+                    .filter(PullRequestReviewers.user_id ==
+                            self.rhodecode_user.user_id).all()])
 
-        ## apply the defaults from defaults page
-        defaults = RhodeCodeSetting.get_default_repo_settings(strip_prefix=True)
-        return htmlfill.render(
-            render('admin/repos/repo_add_create_repository.html'),
-            defaults=defaults,
-            errors={},
-            prefix_error=False,
-            encoding="UTF-8"
-        )
+        return render('admin/users/user_edit_my_account_pullrequests.html')
 
     def _get_hg_ui_settings(self):
         ret = RhodeCodeUi.query().all()