##// END OF EJS Templates
moved locking of commit stats into the task itself to remove race conditions when lock was not removed before starting another task.
moved locking of commit stats into the task itself to remove race conditions when lock was not removed before starting another task.

File last commit:

r1206:a671db5b beta
r1264:0c43c667 beta
Show More
users_group.py
109 lines | 3.6 KiB | text/x-python | PythonLexer
#56 fixed found bugs, implemented adding of new group + forms+validators...
r959 # -*- coding: utf-8 -*-
"""
rhodecode.model.user_group
~~~~~~~~~~~~~~~~~~~~~~~~~~
users groups model for RhodeCode
source code cleanup: remove trailing white space, normalize file endings
r1203
#56 fixed found bugs, implemented adding of new group + forms+validators...
r959 :created_on: Jan 25, 2011
:author: marcink
source code cleanup: remove trailing white space, normalize file endings
r1203 :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com>
#56 fixed found bugs, implemented adding of new group + forms+validators...
r959 :license: GPLv3, see COPYING for more details.
"""
fixed license issue #149
r1206 # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
#56 fixed found bugs, implemented adding of new group + forms+validators...
r959 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
#56 fixed found bugs, implemented adding of new group + forms+validators...
r959 # You should have received a copy of the GNU General Public License
fixed license issue #149
r1206 # along with this program. If not, see <http://www.gnu.org/licenses/>.
#56 fixed found bugs, implemented adding of new group + forms+validators...
r959
import logging
import traceback
from pylons.i18n.translation import _
from rhodecode.model import BaseModel
from rhodecode.model.caching_query import FromCache
#56 implemented users groups editing,...
r972 from rhodecode.model.db import UsersGroup, UsersGroupMember
#56 fixed found bugs, implemented adding of new group + forms+validators...
r959
from sqlalchemy.exc import DatabaseError
log = logging.getLogger(__name__)
class UsersGroupModel(BaseModel):
def get(self, users_group_id, cache=False):
users_group = self.sa.query(UsersGroup)
if cache:
users_group = users_group.options(FromCache("sql_cache_short",
"get_users_group_%s" % users_group_id))
return users_group.get(users_group_id)
#56 implemented users groups editing,...
r972 def get_by_groupname(self, users_group_name, cache=False,
case_insensitive=False):
#56 fixed found bugs, implemented adding of new group + forms+validators...
r959
if case_insensitive:
user = self.sa.query(UsersGroup)\
.filter(UsersGroup.users_group_name.ilike(users_group_name))
else:
user = self.sa.query(UsersGroup)\
.filter(UsersGroup.users_group_name == users_group_name)
if cache:
user = user.options(FromCache("sql_cache_short",
"get_user_%s" % users_group_name))
return user.scalar()
def create(self, form_data):
try:
new_users_group = UsersGroup()
for k, v in form_data.items():
setattr(new_users_group, k, v)
self.sa.add(new_users_group)
self.sa.commit()
except:
log.error(traceback.format_exc())
self.sa.rollback()
raise
#56 implemented users groups editing,...
r972 def update(self, users_group_id, form_data):
try:
users_group = self.get(users_group_id, cache=False)
for k, v in form_data.items():
if k == 'users_group_members':
users_group.members = []
self.sa.flush()
members_list = []
if v:
for u_id in set(v):
members_list.append(UsersGroupMember(users_group_id,
u_id))
setattr(users_group, 'members', members_list)
setattr(users_group, k, v)
self.sa.add(users_group)
self.sa.commit()
except:
log.error(traceback.format_exc())
self.sa.rollback()
raise
#56 implemented users groups deletes
r973
def delete(self, users_group_id):
try:
users_group = self.get(users_group_id, cache=False)
self.sa.delete(users_group)
self.sa.commit()
except:
log.error(traceback.format_exc())
self.sa.rollback()
raise