repository-manager 0.0.2 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +1 -1
- data/app/models/app_file.rb +1 -0
- data/app/models/folder.rb +1 -0
- data/app/models/repository.rb +12 -3
- data/app/models/share.rb +7 -4
- data/app/models/shares_item.rb +1 -0
- data/lib/repository-manager.rb +17 -0
- data/lib/repository_manager/has_repository.rb +9 -3
- data/lib/repository_manager/version.rb +1 -1
- data/{repository_manager.gemspec → repository-manager.gemspec} +0 -0
- data/spec/dummy/config/application.rb +1 -1
- data/spec/dummy/db/test.sqlite3 +0 -0
- metadata +3 -5
- data/lib/repository_manager.rb +0 -6
- data/spec/factories.rb +0 -45
data/README.md
CHANGED
data/app/models/app_file.rb
CHANGED
data/app/models/folder.rb
CHANGED
data/app/models/repository.rb
CHANGED
@@ -1,13 +1,22 @@
|
|
1
1
|
class Repository < ActiveRecord::Base
|
2
|
+
attr_accessible :type if RepositoryManager.protected_attributes?
|
3
|
+
|
4
|
+
|
2
5
|
has_ancestry
|
3
6
|
|
4
7
|
# Associate with the User Classe
|
5
8
|
belongs_to :owner, :polymorphic => true
|
6
|
-
has_many :shares, dependent
|
9
|
+
has_many :shares, :dependent => :destroy
|
7
10
|
#has_many :items, through: :shares
|
8
11
|
|
9
|
-
|
10
|
-
|
12
|
+
if Rails::VERSION::MAJOR == 4
|
13
|
+
scope :files, -> { where type: 'AppFile' }
|
14
|
+
scope :folders, -> { where type: 'Folder' }
|
15
|
+
else
|
16
|
+
# Rails 3 does it this way
|
17
|
+
scope :files, where(type: 'AppFile')
|
18
|
+
scope :folders, where(type: 'Folder')
|
19
|
+
end
|
11
20
|
|
12
21
|
def copy(target_folder)
|
13
22
|
#new_file = self.dup
|
data/app/models/share.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
class Share < ActiveRecord::Base
|
2
|
-
|
2
|
+
attr_accessible :can_read, :can_create, :can_update, :can_delete, :can_share if RepositoryManager.protected_attributes?
|
3
|
+
|
4
|
+
|
5
|
+
has_many :shares_items, :dependent => :destroy
|
3
6
|
belongs_to :owner, :polymorphic => true
|
4
7
|
belongs_to :repository
|
5
8
|
|
@@ -15,7 +18,7 @@ class Share < ActiveRecord::Base
|
|
15
18
|
# If the item is the owner, he can do what he want !
|
16
19
|
if self.owner == item
|
17
20
|
return true
|
18
|
-
elsif i = self.shares_items.where(item_id: item.id, item_type: item.class.base_class.to_s).
|
21
|
+
elsif i = self.shares_items.where(item_id: item.id, item_type: item.class.base_class.to_s).first
|
19
22
|
return {can_add: i.can_add, can_remove: i.can_remove}
|
20
23
|
else
|
21
24
|
return false
|
@@ -45,10 +48,10 @@ class Share < ActiveRecord::Base
|
|
45
48
|
if items.kind_of?(Array)
|
46
49
|
# Add each item to this share
|
47
50
|
items.each do |item|
|
48
|
-
self.shares_items.where(item_id
|
51
|
+
self.shares_items.where(:item_id => item.id, :item_type => item.class.base_class.to_s).first.destroy
|
49
52
|
end
|
50
53
|
else
|
51
|
-
self.shares_items.where(item_id
|
54
|
+
self.shares_items.where(:item_id => items.id, :item_type => items.class.base_class.to_s).first.destroy
|
52
55
|
end
|
53
56
|
end
|
54
57
|
|
data/app/models/shares_item.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'repository_manager/has_repository'
|
2
|
+
|
3
|
+
module RepositoryManager
|
4
|
+
|
5
|
+
class << self
|
6
|
+
def setup
|
7
|
+
yield self
|
8
|
+
end
|
9
|
+
|
10
|
+
def protected_attributes?
|
11
|
+
Rails.version < '4' || defined?(ProtectedAttributes)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
require 'repository_manager/engine'
|
@@ -19,7 +19,7 @@ module RepositoryManager
|
|
19
19
|
#if Rails::VERSION::MAJOR == 4
|
20
20
|
# has_many :shares_repositories, -> { where can_read: true }, as: :item, through: :shares_items, class_name: 'Repository'
|
21
21
|
#else
|
22
|
-
|
22
|
+
# Rails 3 does it this way
|
23
23
|
has_many :shares_repositories, through: :shares, source: :repository, class_name: 'Repository'
|
24
24
|
#end
|
25
25
|
|
@@ -90,7 +90,9 @@ module RepositoryManager
|
|
90
90
|
# Delete the repository
|
91
91
|
def deleteRepository(repository)
|
92
92
|
if can_delete(repository)
|
93
|
-
repository.destroy
|
93
|
+
repository.destroy
|
94
|
+
else
|
95
|
+
return false
|
94
96
|
end
|
95
97
|
end
|
96
98
|
|
@@ -139,7 +141,7 @@ module RepositoryManager
|
|
139
141
|
# You can do what ever you want :)
|
140
142
|
return true
|
141
143
|
# Find if a share of this rep exist for the self instance
|
142
|
-
elsif s = self.shares.where(repository_id: repository.id).
|
144
|
+
elsif s = self.shares.where(repository_id: repository.id).first
|
143
145
|
# Ok, give an array with the permission of the actual share
|
144
146
|
# (we can't share with more permission then we have)
|
145
147
|
return {can_share: s.can_share, can_read: s.can_read, can_create: s.can_create, can_update: s.can_update, can_delete: s.can_delete}
|
@@ -209,6 +211,8 @@ module RepositoryManager
|
|
209
211
|
if can_add_to_share(share)
|
210
212
|
share_permissions = make_share_permissions(share_permissions, authorisations)
|
211
213
|
share.addItems(items, share_permissions)
|
214
|
+
else
|
215
|
+
return false
|
212
216
|
end
|
213
217
|
end
|
214
218
|
|
@@ -217,6 +221,8 @@ module RepositoryManager
|
|
217
221
|
def removeItemsToShare(share, items)
|
218
222
|
if can_remove_to_share(share)
|
219
223
|
share.removeItems(items)
|
224
|
+
else
|
225
|
+
return false
|
220
226
|
end
|
221
227
|
end
|
222
228
|
|
File without changes
|
data/spec/dummy/db/test.sqlite3
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: repository-manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -155,12 +155,12 @@ files:
|
|
155
155
|
- db/migrate/20131025085844_add_file_to_repositories.rb
|
156
156
|
- lib/generators/repository_manager/install_generator.rb
|
157
157
|
- lib/generators/repository_manager/templates/initializer.rb
|
158
|
-
- lib/
|
158
|
+
- lib/repository-manager.rb
|
159
159
|
- lib/repository_manager/engine.rb
|
160
160
|
- lib/repository_manager/has_repository.rb
|
161
161
|
- lib/repository_manager/version.rb
|
162
162
|
- lib/tasks/repository_manager_tasks.rake
|
163
|
-
-
|
163
|
+
- repository-manager.gemspec
|
164
164
|
- spec/dummy/Gemfile
|
165
165
|
- spec/dummy/README.rdoc
|
166
166
|
- spec/dummy/Rakefile
|
@@ -201,7 +201,6 @@ files:
|
|
201
201
|
- spec/dummy/public/422.html
|
202
202
|
- spec/dummy/public/500.html
|
203
203
|
- spec/dummy/public/favicon.ico
|
204
|
-
- spec/factories.rb
|
205
204
|
- spec/factories/app_file.rb
|
206
205
|
- spec/factories/folder.rb
|
207
206
|
- spec/factories/group.rb
|
@@ -279,7 +278,6 @@ test_files:
|
|
279
278
|
- spec/dummy/public/422.html
|
280
279
|
- spec/dummy/public/500.html
|
281
280
|
- spec/dummy/public/favicon.ico
|
282
|
-
- spec/factories.rb
|
283
281
|
- spec/factories/app_file.rb
|
284
282
|
- spec/factories/folder.rb
|
285
283
|
- spec/factories/group.rb
|
data/lib/repository_manager.rb
DELETED
data/spec/factories.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
FactoryGirl.define do
|
2
|
-
factory :folder do
|
3
|
-
sequence(:name) { |i| "test#{i}" }
|
4
|
-
parent { Folder.where(:name => 'Root folder').first_or_create }
|
5
|
-
end
|
6
|
-
end
|
7
|
-
|
8
|
-
FactoryGirl.define do
|
9
|
-
factory :group do
|
10
|
-
sequence(:name) { |i| "test#{i}" }
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
FactoryGirl.define do
|
15
|
-
factory :share_link do
|
16
|
-
emails 'email1@domain.com, email2@domain.com'
|
17
|
-
link_expires_at { 2.weeks.from_now.end_of_day }
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
FactoryGirl.define do
|
22
|
-
factory :user_file do
|
23
|
-
attachment { fixture_file }
|
24
|
-
sequence(:attachment_file_name) { |i| "test#{i}.txt" }
|
25
|
-
folder { Folder.where(:name => 'Root folder').first_or_create }
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
FactoryGirl.define do
|
30
|
-
factory :user do
|
31
|
-
sequence(:name) { |i| "test#{i}" }
|
32
|
-
sequence(:email) { |i| "test#{i}@test.com" }
|
33
|
-
password 'secret123'
|
34
|
-
password_confirmation { |u| u.password }
|
35
|
-
password_required true
|
36
|
-
reset_password_token ''
|
37
|
-
dont_clear_reset_password_token false
|
38
|
-
remember_token ''
|
39
|
-
is_admin false
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def fixture_file
|
44
|
-
File.open("#{Rails.root}/test/fixtures/textfile.txt")
|
45
|
-
end
|