Fix an error where creating an invalid group would fail.
[gitorious:pkong23s-mainline.git] / app / models / finders / ldap_group_finder.rb
1 # encoding: utf-8
2 #--
3 #   Copyright (C) 2012 Gitorious AS
4 #
5 #   This program is free software: you can redistribute it and/or modify
6 #   it under the terms of the GNU Affero General Public License as published by
7 #   the Free Software Foundation, either version 3 of the License, or
8 #   (at your option) any later version.
9 #
10 #   This program is distributed in the hope that it will be useful,
11 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 #   GNU Affero General Public License for more details.
14 #
15 #   You should have received a copy of the GNU Affero General Public License
16 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 #++
18 class LdapGroupFinder
19   def paginate_all(current_page = nil)
20     LdapGroup.paginate(:all, :page => current_page)
21   end
22
23   def find_by_name!(name)
24     includes = [:projects, :repositories]
25     LdapGroup.find_by_name!(name,:include => includes)
26   end
27
28   def new_group(params={})
29     LdapGroup.new(params)
30   end
31
32   def create_group(params, user)
33     group = new_group(params)
34     begin
35       group.transaction do
36         group.creator = user
37         group.save!
38       end
39     rescue ActiveRecord::RecordInvalid
40     end
41     return group
42   end
43
44   def by_admin(user)
45     LdapGroup.find_all_by_user_id(user.id)
46   end
47
48   def find(id)
49     LdapGroup.find(id)
50   end
51
52   def find_fuzzy(q)
53     LdapGroup.find_fuzzy(q)
54   end
55
56   def for_user(user)
57     LdapGroup.groups_for_user(user)
58   end
59 end