Merge pull request #9 from warpc/groups_repositories_fixes

Fixed bug with duplicate relations and removed unnecessary routes and views part in users and groups, close #4
This commit is contained in:
Vladimir Sharshov 2011-12-08 07:10:38 -08:00
commit dc95df1073
9 changed files with 29 additions and 10 deletions

View File

@ -26,7 +26,7 @@ class GroupsController < ApplicationController
def show def show
@platforms = @group.platforms.paginate(:page => params[:platform_page], :per_page => 10) @platforms = @group.platforms.paginate(:page => params[:platform_page], :per_page => 10)
@repositories = @group.repositories.paginate(:page => params[:repository_page], :per_page => 10) # @repositories = @group.repositories.paginate(:page => params[:repository_page], :per_page => 10)
@projects = @group.projects.paginate(:page => params[:project_page], :per_page => 10) @projects = @group.projects.paginate(:page => params[:project_page], :per_page => 10)
end end

View File

@ -12,7 +12,7 @@ class UsersController < ApplicationController
def show def show
@groups = @user.groups.uniq @groups = @user.groups.uniq
@platforms = @user.platforms.paginate(:page => params[:platform_page], :per_page => 10) @platforms = @user.platforms.paginate(:page => params[:platform_page], :per_page => 10)
@repositories = @user.repositories.paginate(:page => params[:repository_page], :per_page => 10) # @repositories = @user.repositories.paginate(:page => params[:repository_page], :per_page => 10)
@projects = @user.projects.paginate(:page => params[:project_page], :per_page => 10) @projects = @user.projects.paginate(:page => params[:project_page], :per_page => 10)
end end

View File

@ -23,7 +23,7 @@ class Group < ActiveRecord::Base
after_create :add_owner_to_members after_create :add_owner_to_members
include Modules::Models::PersonalRepository include Modules::Models::PersonalRepository
include Modules::Models::Owner # include Modules::Models::Owner
protected protected
def add_owner_to_members def add_owner_to_members

View File

@ -5,6 +5,7 @@ class Relation < ActiveRecord::Base
ROLES = %w[reader writer admin] ROLES = %w[reader writer admin]
validates :role, :inclusion => {:in => ROLES} validates :role, :inclusion => {:in => ROLES}
# validate { errors.add(:object, :taken) if Relation.where(:object_type => self.object_type, :object_id => self.object_id).present? }
before_validation :add_default_role before_validation :add_default_role
scope :by_object, lambda {|obj| {:conditions => ['object_id = ? AND object_type = ?', obj.id, obj.class.to_s]}} scope :by_object, lambda {|obj| {:conditions => ['object_id = ? AND object_type = ?', obj.id, obj.class.to_s]}}

View File

@ -62,9 +62,11 @@ class Repository < ActiveRecord::Base
def add_admin_relations def add_admin_relations
platform.relations.where(:role => 'admin').each do |rel| platform.relations.where(:role => 'admin').each do |rel|
r = relations.build(:role => 'admin', :object_type => rel.object_type) if !relations.exists?(:role => 'admin', :object_type => rel.object_type, :object_id => rel.object_id) && rel.object != owner
r.object_id = rel.object_id r = relations.build(:role => 'admin', :object_type => rel.object_type)
r.save r.object_id = rel.object_id
r.save
end
end end
end end
end end

View File

@ -45,7 +45,7 @@
.actions .actions
= will_paginate @platforms, :param_name => :platform_page = will_paginate @platforms, :param_name => :platform_page
.block -#.block
.secondary-navigation .secondary-navigation
%ul.wat-cf %ul.wat-cf
%li.first.active= link_to t("layout.repositories.list"), repositories_path %li.first.active= link_to t("layout.repositories.list"), repositories_path

View File

@ -47,7 +47,7 @@
.actions .actions
= will_paginate @platforms, :param_name => :platform_page = will_paginate @platforms, :param_name => :platform_page
.block -#.block
.secondary-navigation .secondary-navigation
%ul.wat-cf %ul.wat-cf
%li.first.active= link_to t("layout.repositories.list"), repositories_path %li.first.active= link_to t("layout.repositories.list"), repositories_path

View File

@ -124,7 +124,7 @@ Rosa::Application.routes.draw do
resources :projects, :only => [:new, :create, :index] resources :projects, :only => [:new, :create, :index]
resources :repositories, :only => [:new, :create] # resources :repositories, :only => [:new, :create]
end end
match '/catalogs', :to => 'categories#platforms', :as => :catalogs match '/catalogs', :to => 'categories#platforms', :as => :catalogs

View File

@ -1,5 +1,21 @@
require 'spec_helper' require 'spec_helper'
describe Repository do describe Repository do
pending "add some examples to (or delete) #{__FILE__}"
context 'when create with same owner that platform' do
before (:each) do
@platform = Factory(:platform)
@params = {:name => 'tst_platform', :description => 'test platform'}
end
it 'it should increase Relations.count by 1' do
rep = Repository.new(@params)
rep.platform = @platform
rep.owner = @platform.owner
rep.save!
Relation.by_object(rep.owner).by_target(rep).count.should eql(1)
# (@platform.owner.repositories.where(:platform_id => @platform.id).count == 1).should be_true
end
end
#pending "add some examples to (or delete) #{__FILE__}"
end end