diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index c8a3ca1b..0c3d0ba0 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -3,7 +3,7 @@ class HomeController < ApplicationController def index @currentOrders = Order.open - @ordergroup = @current_user.find_ordergroup + @ordergroup = @current_user.ordergroup if @ordergroup @financial_transactions = @ordergroup.financial_transactions.find(:all, :order => 'created_on desc', :limit => 3) end @@ -37,7 +37,7 @@ class HomeController < ApplicationController def ordergroup @user = @current_user - @ordergroup = @user.find_ordergroup + @ordergroup = @user.ordergroup @ordergroup_column_names = ["Description", "Actual Size", "Balance", "Updated"] @ordergroup_columns = ["description", "actual_size", "account_balance", "account_updated"] diff --git a/app/controllers/ordering_controller.rb b/app/controllers/ordering_controller.rb index ab4bcb22..f3469888 100644 --- a/app/controllers/ordering_controller.rb +++ b/app/controllers/ordering_controller.rb @@ -149,7 +149,7 @@ class OrderingController < ApplicationController # Returns true if @current_user is member of an Ordergroup. # Used as a :before_filter by OrderingController. def ensure_ordergroup_member - @ordergroup = @current_user.find_ordergroup + @ordergroup = @current_user.ordergroup if @ordergroup.nil? flash[:notice] = 'Sie gehören keiner Bestellgruppe an.' redirect_to :controller => root_path diff --git a/app/models/group.rb b/app/models/group.rb index 86089228..9dd619c6 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -40,13 +40,7 @@ class Group < ActiveRecord::Base # Returns all NONmembers and a checks for possible multiple Ordergroup-Memberships def non_members - nonMembers = Array.new - for user in User.find(:all, :order => "nick") - unless self.users.include?(user) || ( self.is_a?(Ordergroup) && user.find_ordergroup ) - nonMembers << user - end - end - return nonMembers + User.all(:order => 'nick').reject { |u| users.include?(u) } end # Check before destroy a group, if this is the last group with admin role @@ -56,11 +50,6 @@ class Group < ActiveRecord::Base end end - # get all groups, which are NOT Ordergroups - def self.workgroups - Workgroup.all - end - protected # validates uniqueness of the Group.name. Checks groups and ordergroups diff --git a/app/models/ordergroup.rb b/app/models/ordergroup.rb index 85930711..9a975820 100644 --- a/app/models/ordergroup.rb +++ b/app/models/ordergroup.rb @@ -42,7 +42,10 @@ class Ordergroup < Group validates_numericality_of :account_balance, :message => 'ist keine gültige Zahl' attr_accessible :actual_size, :account_updated - + + def non_members + User.all(:order => 'nick').reject { |u| (users.include?(u) || u.ordergroup) } + end def value_of_open_orders(exclude = nil) group_orders.open.reject{|go| go == exclude}.collect(&:price).sum diff --git a/app/models/user.rb b/app/models/user.rb index ea2a4c51..942e5857 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -23,7 +23,7 @@ require 'digest/sha1' class User < ActiveRecord::Base has_many :memberships, :dependent => :destroy has_many :groups, :through => :memberships - has_many :ordergroups, :through => :memberships, :source => :group + has_one :ordergroup, :through => :memberships, :source => :group has_many :assignments, :dependent => :destroy has_many :tasks, :through => :assignments has_many :send_messages, :class_name => "Message", :foreign_key => "sender_id" @@ -147,13 +147,7 @@ class User < ActiveRecord::Base groups.detect {|group| group.role_orders?} end - # Returns the user's Ordergroup or nil if none found. - def find_ordergroup - ordergroups.first - end - def ordergroup_name - ordergroup = find_ordergroup ordergroup ? ordergroup.name : "keine Bestellgruppe" end diff --git a/app/views/home/_start_nav.haml b/app/views/home/_start_nav.haml index 63302497..de7a03c5 100644 --- a/app/views/home/_start_nav.haml +++ b/app/views/home/_start_nav.haml @@ -8,7 +8,7 @@ %li= link_to _("Write message"), :controller => "messages", :action => "new" // Orders - - hasOrdergroup = !@current_user.find_ordergroup.nil? + - hasOrdergroup = !@current_user.ordergroup.nil? - hasOrdersRole = @current_user.role_orders? - if hasOrdergroup || hasOrdersRole %li diff --git a/app/views/shared/_auto_complete_users.rhtml b/app/views/shared/_auto_complete_users.rhtml index e9030919..18c0d3c9 100644 --- a/app/views/shared/_auto_complete_users.rhtml +++ b/app/views/shared/_auto_complete_users.rhtml @@ -1,5 +1,5 @@ \ No newline at end of file diff --git a/app/views/shared/_workgroup_members.haml b/app/views/shared/_workgroup_members.haml index b068b262..6703e1e4 100644 --- a/app/views/shared/_workgroup_members.haml +++ b/app/views/shared/_workgroup_members.haml @@ -2,5 +2,5 @@ %h4= link_to_function group.name, "Element.toggle('group_#{group.id}')" %ul{:style => "display:none"}[group] - for user in group.users.find :all, :order => "nick" - %li= user.nick + " (#{user.find_ordergroup.name if user.find_ordergroup})" + %li= user.nick + " (#{user.ordergroup.name if user.ordergroup})" \ No newline at end of file diff --git a/config/environment.rb b/config/environment.rb index fc8465ad..37e19c82 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -67,7 +67,6 @@ Rails::Initializer.run do |config| # library for parsing/writing files from/to csv-file config.gem "fastercsv" config.gem "prawn" - config.gem "rubyist-aasm", :lib => 'aasm', :version => '2.0.5', :source => "http://gems.github.com" # acts_as_statemachine # The internationalization framework can be changed to have another default locale (standard is :en) or more load paths. # All files from config/locales/*.rb,yml are added automatically. diff --git a/lib/tasks/foodsoft.rake b/lib/tasks/foodsoft.rake index 072398d5..b34110ae 100644 --- a/lib/tasks/foodsoft.rake +++ b/lib/tasks/foodsoft.rake @@ -3,24 +3,25 @@ namespace :foodsoft do - # "rake foodsoft:create_admin" - desc "creates Administrators-group and admin-user" - task :create_admin => :environment do - puts "Create Group 'Administators'" - administrators = Group.create(:name => "Administrators", - :description => "System administrators.", - :role_admin => true, - :role_finance => true, - :role_article_meta => true, - :role_suppliers => true, - :role_orders => true) - - puts "Create User 'admin' with password 'secret'" - admin = User.new(:nick => "admin", :first_name => "Anton", :last_name => "Administrator", :email => "admin@foo.test") - admin.password = "secret" - admin.save - - puts "Joining 'admin' user to 'Administrators' group" - Membership.create(:group => administrators, :user => admin) - end + # "rake foodsoft:create_admin" + desc "creates Administrators-group and admin-user" + task :create_admin => :environment do + puts "Create Workgroup 'Administators'" + administrators = Workgroup.create( + :name => "Administrators", + :description => "System administrators.", + :role_admin => true, + :role_finance => true, + :role_article_meta => true, + :role_suppliers => true, + :role_orders => true + ) + + puts "Create User 'admin' with password 'secret'" + admin = User.create(:nick => "admin", :first_name => "Anton", :last_name => "Administrator", + :email => "admin@foo.test", :password => "secret") + + puts "Joining 'admin' user to 'Administrators' group" + Membership.create(:group => administrators, :user => admin) + end end \ No newline at end of file