repository-manager 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +19 -3
- data/app/models/repository_manager/repo_item.rb +7 -0
- data/lib/repository_manager/has_repository.rb +16 -5
- data/lib/repository_manager/version.rb +1 -1
- data/spec/models/repository_spec.rb +20 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50b78ee29a456a6211cc629dbfc3f6b4615eb3e3
|
4
|
+
data.tar.gz: 59d453429c31b032a41ad838458a9abd6001fcc4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dc3b40e3c529e73ac7548609563dfbd6cf9b80b0d3dba434ca6d7e6eba966bc355d80a787248a111753e1822aa71097042d4c0121ac087802579afa658de48e3
|
7
|
+
data.tar.gz: ce8bd6910fc8349ed60512af898efc8e95f1a8107ad965a962ff5e2e97604d0c8a827abe3023bb6eb7351d493ad1e2a9e9b8bf3c95b27b76bcf758078834d79a
|
data/README.md
CHANGED
@@ -106,8 +106,8 @@ end
|
|
106
106
|
### Introduction
|
107
107
|
|
108
108
|
A `repo_item` is an item in a repository, it can be:
|
109
|
-
- A file (`repo_file`, class name : `RepoFile`)
|
110
|
-
- A folder (`repo_folder`, class name : `RepoFolder`).
|
109
|
+
- A file (`repo_file`, class name : `RepositoryManager::RepoFile`)
|
110
|
+
- A folder (`repo_folder`, class name : `RepositoryManager::RepoFolder`).
|
111
111
|
|
112
112
|
A folder can contains files and folders. Like in a real tree files and folders.
|
113
113
|
|
@@ -115,7 +115,7 @@ A few methods are written in those two ways :
|
|
115
115
|
- method(arg, options)
|
116
116
|
- method!(arg, options) (note the "!")
|
117
117
|
|
118
|
-
The two methods do the same, but the one with the "!" returns an Exception error if it is a problem (AuthorisationException for instance) and the method without "!" return false if it has a problem.
|
118
|
+
The two methods do the same, but the one with the "!" returns an Exception error if it is a problem (AuthorisationException or RepositoryManagerException for instance) and the method without "!" return false if it has a problem.
|
119
119
|
|
120
120
|
### How can I create/delete/move a repo_item (file or folder)
|
121
121
|
|
@@ -192,6 +192,22 @@ user1.delete_repo_item(file2)
|
|
192
192
|
|
193
193
|
```
|
194
194
|
|
195
|
+
If a user (sender of the file/folder) send a file or folder into a group (owner of the file/folder), you can specify the owner and the sender like this :
|
196
|
+
|
197
|
+
```ruby
|
198
|
+
# user1 wants to create a folder and a file into group1
|
199
|
+
folder = group1.create_folder('Folder created by user1', sender: user1)
|
200
|
+
|
201
|
+
# Now he send the file into the folder
|
202
|
+
file = group1.create_file(params[:file], source_folder: params[:file], sender: user1)
|
203
|
+
|
204
|
+
file.owner # Returns group1
|
205
|
+
file.sender # Returns user1
|
206
|
+
|
207
|
+
# If you don't specify the sender, the owner becomes the sender
|
208
|
+
|
209
|
+
```
|
210
|
+
|
195
211
|
### How can I share a repo_item (file/folder)
|
196
212
|
|
197
213
|
Now, user1 want to share his folder 'The new folder' with a Group object `group1` et another User object `user2`. You can use the `has_repository` method `share(repo_item, member, options = nil)`.
|
@@ -3,6 +3,8 @@ class RepositoryManager::RepoItem < ActiveRecord::Base
|
|
3
3
|
|
4
4
|
attr_accessible :type if RepositoryManager.protected_attributes?
|
5
5
|
|
6
|
+
before_save :put_sender
|
7
|
+
|
6
8
|
has_ancestry
|
7
9
|
|
8
10
|
# Associate with the User Class
|
@@ -67,4 +69,9 @@ class RepositoryManager::RepoItem < ActiveRecord::Base
|
|
67
69
|
false
|
68
70
|
end
|
69
71
|
end
|
72
|
+
|
73
|
+
private
|
74
|
+
def put_sender
|
75
|
+
self.sender = owner unless sender
|
76
|
+
end
|
70
77
|
end
|
@@ -84,7 +84,10 @@ module RepositoryManager
|
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
|
-
# Create a folder with the name (name)
|
87
|
+
# Create a folder with the name (name)
|
88
|
+
# options :
|
89
|
+
# :source_folder = The directory in with the folder is created
|
90
|
+
# :sender = The object of the sender (ex : current_user)
|
88
91
|
# Returns the object of the folder created if it is ok
|
89
92
|
# Returns an Exception if the folder is not created
|
90
93
|
# RepositoryManagerException if the name already exist
|
@@ -102,7 +105,7 @@ module RepositoryManager
|
|
102
105
|
folder.name = name
|
103
106
|
end
|
104
107
|
folder.owner = self
|
105
|
-
|
108
|
+
folder.sender = options[:sender]
|
106
109
|
|
107
110
|
# If we are in root path we check if we can add this folder name
|
108
111
|
if !source_folder && repo_item_name_exist_in_root?(name)
|
@@ -121,6 +124,8 @@ module RepositoryManager
|
|
121
124
|
folder
|
122
125
|
end
|
123
126
|
|
127
|
+
# Like create_folder!
|
128
|
+
# Returns false if the folder is not created instead of an exception
|
124
129
|
def create_folder(name = '', options = {})
|
125
130
|
begin
|
126
131
|
create_folder!(name, options)
|
@@ -147,9 +152,15 @@ module RepositoryManager
|
|
147
152
|
end
|
148
153
|
|
149
154
|
# Create the file (file) in the directory (source_folder)
|
155
|
+
# options :
|
156
|
+
# :source_folder = The directory in with the folder is created
|
157
|
+
# :sender = The object of the sender (ex : current_user)
|
158
|
+
#
|
150
159
|
# Param file can be a File, or a instance of RepoFile
|
151
|
-
#
|
152
|
-
#
|
160
|
+
# Returns the object of the file created if it is ok
|
161
|
+
# Returns an Exception if the folder is not created
|
162
|
+
# RepositoryManagerException if the file already exist
|
163
|
+
# AuthorisationException if the object don't have the permission
|
153
164
|
def create_file!(file, options = {})
|
154
165
|
source_folder = options[:source_folder]
|
155
166
|
# If he want to create a file in a directory, we have to check if he have the authorisation
|
@@ -162,7 +173,7 @@ module RepositoryManager
|
|
162
173
|
end
|
163
174
|
|
164
175
|
repo_file.owner = self
|
165
|
-
|
176
|
+
repo_file.sender = options[:sender]
|
166
177
|
|
167
178
|
|
168
179
|
# If we are in root path we check if we can add this file name
|
@@ -200,4 +200,24 @@ describe 'RepoItem' do
|
|
200
200
|
|
201
201
|
#@user1.create_file!(File.open("#{Rails.root}/../fixture/textfile.txt"), source_folder: @user1_folder)
|
202
202
|
end
|
203
|
+
|
204
|
+
it 'sender is equal to owner if no sender in create_folder' do
|
205
|
+
folder = @user1.create_folder('test')
|
206
|
+
expect(folder.sender).to eq(@user1)
|
207
|
+
end
|
208
|
+
|
209
|
+
it 'sender is equal to owner if no sender in create_file' do
|
210
|
+
file = @user2.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"))
|
211
|
+
expect(file.sender).to eq(@user2)
|
212
|
+
end
|
213
|
+
|
214
|
+
it 'can specify a sender in create_folder method' do
|
215
|
+
folder = @user1.create_folder('test', sender: @user2)
|
216
|
+
expect(folder.sender).to eq(@user2)
|
217
|
+
end
|
218
|
+
|
219
|
+
it 'can specify a sender in create_file method' do
|
220
|
+
file = @user2.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"), sender: @user1)
|
221
|
+
expect(file.sender).to eq(@user1)
|
222
|
+
end
|
203
223
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: repository-manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yves Baumann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|