repository-manager 0.2.1 → 0.2.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -1
- data/app/models/repository_manager/repo_file.rb +29 -13
- data/app/models/repository_manager/repo_folder.rb +56 -23
- data/app/models/repository_manager/repo_item.rb +29 -6
- data/db/migrate/20131018214212_create_repository_manager.rb +2 -1
- data/lib/generators/repository_manager/templates/initializer.rb +9 -1
- data/lib/repository-manager.rb +5 -3
- data/lib/repository_manager/has_repository.rb +58 -18
- data/lib/repository_manager/version.rb +1 -1
- data/repository-manager.gemspec +1 -0
- data/spec/dummy/Gemfile +3 -0
- data/spec/dummy/db/migrate/20131018214212_create_repository_manager.rb +2 -1
- data/spec/dummy/doc/controllers_brief.svg +26 -0
- data/spec/dummy/doc/controllers_complete.svg +37 -0
- data/spec/dummy/doc/models_brief.svg +207 -0
- data/spec/dummy/doc/models_complete.svg +327 -0
- data/spec/has_repository_spec.rb +0 -1
- data/spec/models/repository_spec.rb +55 -4
- metadata +43 -29
- data/config/locales/en/repository_manager.en.yml +0 -19
- data/config/locales/fr/repository_manager.fr.yml +0 -19
- data/spec/dummy/db/schema.rb +0 -71
data/spec/has_repository_spec.rb
CHANGED
@@ -29,6 +29,9 @@ describe 'RepoItem' do
|
|
29
29
|
expect(folder).to eq(false)
|
30
30
|
end
|
31
31
|
|
32
|
+
it 'file has md5' do
|
33
|
+
expect(@user1_file.checksum).to eq(Digest::MD5.file(File.open("#{Rails.root}/../fixture/textfile.txt")).hexdigest)
|
34
|
+
end
|
32
35
|
|
33
36
|
it 'can\'t create a folder in another folder without permission' do
|
34
37
|
options = {source_folder: @user1_folder}
|
@@ -63,7 +66,7 @@ describe 'RepoItem' do
|
|
63
66
|
it 'can delete a folder an his files' do
|
64
67
|
@user1_folder.add(@user1_file)
|
65
68
|
@user1.delete_repo_item(@user1_folder)
|
66
|
-
expect(@user1.repo_items.count).to eq(0)
|
69
|
+
expect(@user1.reload.repo_items.count).to eq(0)
|
67
70
|
end
|
68
71
|
|
69
72
|
it 'can\'t delete a repo_item without permission' do
|
@@ -171,6 +174,14 @@ describe 'RepoItem' do
|
|
171
174
|
@user1.delete_download_path()
|
172
175
|
end
|
173
176
|
|
177
|
+
it 'can\'t copy directly a file in same ort' do
|
178
|
+
expect(@user1_file.copy).to eq(false)
|
179
|
+
end
|
180
|
+
|
181
|
+
it 'can copy directly a file' do
|
182
|
+
@user1_file.copy!(source_folder: @user1_folder)
|
183
|
+
end
|
184
|
+
|
174
185
|
it 'can\'t add a repo_item with the same name in a folder' do
|
175
186
|
root_folder = @user1.create_folder('Root folder')
|
176
187
|
root_folder.add(@user1_folder)
|
@@ -303,8 +314,6 @@ describe 'RepoItem' do
|
|
303
314
|
|
304
315
|
expect(@user2.move_repo_item(folder, source_folder: file)).to eq(false)
|
305
316
|
expect(folder.errors.messages).to eq({move: ['This item was not moved']})
|
306
|
-
|
307
|
-
|
308
317
|
end
|
309
318
|
|
310
319
|
it "move_repo_item default to the root of the self owner" do
|
@@ -327,8 +336,50 @@ describe 'RepoItem' do
|
|
327
336
|
file = @user1.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"), source_folder: @user1_folder)
|
328
337
|
expect(@user2.move_repo_item(file)).to eq(false)
|
329
338
|
expect(file.errors.messages).to eq({move: ['You don\'t have the permission to move this item']})
|
339
|
+
end
|
340
|
+
|
341
|
+
it "can move an item with the same name and overwrite it" do
|
342
|
+
file = @user1.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"), source_folder: @user1_folder)
|
343
|
+
expect(@user1.move_repo_item!(file, overwrite: true)).to eq(file)
|
344
|
+
overwrited = RepositoryManager::RepoItem.where(id: @user1_file.id).first
|
345
|
+
expect(overwrited).to eq(nil)
|
346
|
+
end
|
330
347
|
|
331
|
-
|
348
|
+
it "can copy an item with the same name and overwrite it" do
|
349
|
+
file = @user1.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"), source_folder: @user1_folder)
|
350
|
+
copied_file = @user1.copy_repo_item!(file, overwrite: true)
|
351
|
+
expect(@user1_file).to eq(copied_file)
|
352
|
+
end
|
353
|
+
|
354
|
+
|
355
|
+
it "can copy an item with the same name in folder and overwrite it" do
|
356
|
+
file = @user1.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"), source_folder: @user1_folder)
|
357
|
+
copied_file = @user1.copy_repo_item!(@user1_file, source_folder: @user1_folder, overwrite: true)
|
358
|
+
expect(copied_file).to eq(file)
|
359
|
+
end
|
360
|
+
|
361
|
+
it 'can create a folder with same name and overwrite the old one' do
|
362
|
+
folder = @user1.create_folder('Folder', overwrite: true)
|
363
|
+
|
364
|
+
overwrited = RepositoryManager::RepoItem.where(id: @user1_folder.id).first
|
365
|
+
expect(overwrited).to eq(nil)
|
366
|
+
expect(folder.name).to eq("Folder")
|
367
|
+
end
|
368
|
+
|
369
|
+
it 'can create a file with same name and update the old one' do
|
370
|
+
file = @user1.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"), overwrite: true)
|
371
|
+
|
372
|
+
overwrited = RepositoryManager::RepoItem.where(id: @user1_file.id).first
|
373
|
+
expect(overwrited).to eq(file)
|
374
|
+
end
|
375
|
+
|
376
|
+
it 'can create a file in folder with same name and update the old one' do
|
377
|
+
@user1.move_repo_item(@user1_file, source_folder: @user1_folder)
|
378
|
+
file = @user1.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"), source_folder: @user1_folder, overwrite: true)
|
379
|
+
overwrited = RepositoryManager::RepoItem.where(id: @user1_file.id).first
|
380
|
+
expect(overwrited).to eq(file)
|
381
|
+
#expect(folder.name).to eq("Folder")
|
382
|
+
end
|
332
383
|
|
333
384
|
it "can't copy a file without permission" do
|
334
385
|
expect(@user2.copy_repo_item(@user1_file)).to eq(false)
|
metadata
CHANGED
@@ -1,113 +1,127 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: repository-manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.8
|
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-
|
11
|
+
date: 2014-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 3.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: factory_girl
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 2.6.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 2.6.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: sqlite3
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec-rails
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 2.6.1
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 2.6.1
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: ancestry
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: carrierwave
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: 0.5.8
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 0.5.8
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rubyzip
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: 1.0.0
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 1.0.0
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: paper_trail
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 3.0.1
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 3.0.1
|
111
125
|
description: This project is based on the need for a system for easily create/delete
|
112
126
|
files and folders in a repository. For sharing these repositories easily with other
|
113
127
|
object with a flexible and complete permissions management. Each instance (users,
|
@@ -120,8 +134,8 @@ executables: []
|
|
120
134
|
extensions: []
|
121
135
|
extra_rdoc_files: []
|
122
136
|
files:
|
123
|
-
- .gitignore
|
124
|
-
- .rspec
|
137
|
+
- ".gitignore"
|
138
|
+
- ".rspec"
|
125
139
|
- Gemfile
|
126
140
|
- Gemfile.lock
|
127
141
|
- MIT-LICENSE
|
@@ -133,8 +147,6 @@ files:
|
|
133
147
|
- app/models/repository_manager/sharing.rb
|
134
148
|
- app/models/repository_manager/sharings_member.rb
|
135
149
|
- app/uploaders/repo_file_uploader.rb
|
136
|
-
- config/locales/en/repository_manager.en.yml
|
137
|
-
- config/locales/fr/repository_manager.fr.yml
|
138
150
|
- db/migrate/20131018214212_create_repository_manager.rb
|
139
151
|
- lib/generators/repository_manager/install_generator.rb
|
140
152
|
- lib/generators/repository_manager/templates/initializer.rb
|
@@ -173,13 +185,14 @@ files:
|
|
173
185
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
174
186
|
- spec/dummy/config/locales/en.yml
|
175
187
|
- spec/dummy/config/routes.rb
|
176
|
-
- spec/dummy/db/development.sqlite3
|
177
188
|
- spec/dummy/db/migrate/20131016193722_create_users.rb
|
178
189
|
- spec/dummy/db/migrate/20131016193834_create_groups.rb
|
179
190
|
- spec/dummy/db/migrate/20131016194207_create_groups_users.rb
|
180
191
|
- spec/dummy/db/migrate/20131018214212_create_repository_manager.rb
|
181
|
-
- spec/dummy/
|
182
|
-
- spec/dummy/
|
192
|
+
- spec/dummy/doc/controllers_brief.svg
|
193
|
+
- spec/dummy/doc/controllers_complete.svg
|
194
|
+
- spec/dummy/doc/models_brief.svg
|
195
|
+
- spec/dummy/doc/models_complete.svg
|
183
196
|
- spec/dummy/log/.keep
|
184
197
|
- spec/dummy/public/404.html
|
185
198
|
- spec/dummy/public/422.html
|
@@ -207,17 +220,17 @@ require_paths:
|
|
207
220
|
- lib
|
208
221
|
required_ruby_version: !ruby/object:Gem::Requirement
|
209
222
|
requirements:
|
210
|
-
- -
|
223
|
+
- - ">="
|
211
224
|
- !ruby/object:Gem::Version
|
212
225
|
version: '0'
|
213
226
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
214
227
|
requirements:
|
215
|
-
- -
|
228
|
+
- - ">="
|
216
229
|
- !ruby/object:Gem::Version
|
217
230
|
version: '0'
|
218
231
|
requirements: []
|
219
232
|
rubyforge_project:
|
220
|
-
rubygems_version: 2.
|
233
|
+
rubygems_version: 2.4.1
|
221
234
|
signing_key:
|
222
235
|
specification_version: 4
|
223
236
|
summary: Ruby on Rails plugin (gem) for managing repositories ( files / folders /
|
@@ -250,13 +263,14 @@ test_files:
|
|
250
263
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
251
264
|
- spec/dummy/config/locales/en.yml
|
252
265
|
- spec/dummy/config/routes.rb
|
253
|
-
- spec/dummy/db/development.sqlite3
|
254
266
|
- spec/dummy/db/migrate/20131016193722_create_users.rb
|
255
267
|
- spec/dummy/db/migrate/20131016193834_create_groups.rb
|
256
268
|
- spec/dummy/db/migrate/20131016194207_create_groups_users.rb
|
257
269
|
- spec/dummy/db/migrate/20131018214212_create_repository_manager.rb
|
258
|
-
- spec/dummy/
|
259
|
-
- spec/dummy/
|
270
|
+
- spec/dummy/doc/controllers_brief.svg
|
271
|
+
- spec/dummy/doc/controllers_complete.svg
|
272
|
+
- spec/dummy/doc/models_brief.svg
|
273
|
+
- spec/dummy/doc/models_complete.svg
|
260
274
|
- spec/dummy/log/.keep
|
261
275
|
- spec/dummy/public/404.html
|
262
276
|
- spec/dummy/public/422.html
|
@@ -1,19 +0,0 @@
|
|
1
|
-
en:
|
2
|
-
repository_manager:
|
3
|
-
models:
|
4
|
-
repo_folder:
|
5
|
-
name: Nouveau dossier
|
6
|
-
success:
|
7
|
-
repo_folder:
|
8
|
-
created: Le dossier a été créé avec succès !
|
9
|
-
repo_file:
|
10
|
-
created: Le fichier a été créé avec succès !
|
11
|
-
errors:
|
12
|
-
repo_folder:
|
13
|
-
not_created: Erreur, le dossier n'a pas été créé !
|
14
|
-
repo_file:
|
15
|
-
not_created: Erreur, le fichier n'a pas été envoyé !
|
16
|
-
form:
|
17
|
-
new:
|
18
|
-
repo_folder: Créer un dossier
|
19
|
-
repo_file: Envoyer un fichier
|
@@ -1,19 +0,0 @@
|
|
1
|
-
fr:
|
2
|
-
repository_manager:
|
3
|
-
models:
|
4
|
-
repo_folder:
|
5
|
-
name: Nouveau dossier
|
6
|
-
success:
|
7
|
-
repo_folder:
|
8
|
-
created: Le dossier a été créé avec succès !
|
9
|
-
repo_file:
|
10
|
-
created: Le fichier a été créé avec succès !
|
11
|
-
errors:
|
12
|
-
repo_folder:
|
13
|
-
not_created: Erreur, le dossier n'a pas été créé !
|
14
|
-
repo_file:
|
15
|
-
not_created: Erreur, le fichier n'a pas été envoyé !
|
16
|
-
form:
|
17
|
-
new:
|
18
|
-
repo_folder: Créer un dossier
|
19
|
-
repo_file: Envoyer un fichier
|
data/spec/dummy/db/schema.rb
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
# This file is auto-generated from the current state of the database. Instead
|
3
|
-
# of editing this file, please use the migrations feature of Active Record to
|
4
|
-
# incrementally modify your database, and then regenerate this schema definition.
|
5
|
-
#
|
6
|
-
# Note that this schema.rb definition is the authoritative source for your
|
7
|
-
# database schema. If you need to create the application database on another
|
8
|
-
# system, you should be using db:schema:load, not running all the migrations
|
9
|
-
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
|
10
|
-
# you'll amass, the slower it'll run and the greater likelihood for issues).
|
11
|
-
#
|
12
|
-
# It's strongly recommended that you check this file into your version control system.
|
13
|
-
|
14
|
-
ActiveRecord::Schema.define(version: 20131018214212) do
|
15
|
-
|
16
|
-
create_table "groups", force: true do |t|
|
17
|
-
t.string "name"
|
18
|
-
t.text "description"
|
19
|
-
t.datetime "created_at"
|
20
|
-
t.datetime "updated_at"
|
21
|
-
end
|
22
|
-
|
23
|
-
create_table "groups_users", id: false, force: true do |t|
|
24
|
-
t.integer "group_id", null: false
|
25
|
-
t.integer "user_id", null: false
|
26
|
-
end
|
27
|
-
|
28
|
-
create_table "rm_repo_items", force: true do |t|
|
29
|
-
t.integer "owner_id"
|
30
|
-
t.string "owner_type"
|
31
|
-
t.integer "sender_id"
|
32
|
-
t.string "sender_type"
|
33
|
-
t.string "ancestry"
|
34
|
-
t.integer "ancestry_depth", default: 0
|
35
|
-
t.string "name"
|
36
|
-
t.float "file_size"
|
37
|
-
t.string "content_type"
|
38
|
-
t.string "file"
|
39
|
-
t.string "type"
|
40
|
-
end
|
41
|
-
|
42
|
-
create_table "rm_sharings", force: true do |t|
|
43
|
-
t.integer "owner_id"
|
44
|
-
t.string "owner_type"
|
45
|
-
t.integer "creator_id"
|
46
|
-
t.string "creator_type"
|
47
|
-
t.integer "repo_item_id"
|
48
|
-
t.boolean "can_create", default: false
|
49
|
-
t.boolean "can_read", default: false
|
50
|
-
t.boolean "can_update", default: false
|
51
|
-
t.boolean "can_delete", default: false
|
52
|
-
t.boolean "can_share", default: false
|
53
|
-
end
|
54
|
-
|
55
|
-
create_table "rm_sharings_members", force: true do |t|
|
56
|
-
t.integer "sharing_id"
|
57
|
-
t.integer "member_id"
|
58
|
-
t.string "member_type"
|
59
|
-
t.boolean "can_add", default: false
|
60
|
-
t.boolean "can_remove", default: false
|
61
|
-
end
|
62
|
-
|
63
|
-
create_table "users", force: true do |t|
|
64
|
-
t.string "nickname"
|
65
|
-
t.string "password"
|
66
|
-
t.string "email"
|
67
|
-
t.datetime "created_at"
|
68
|
-
t.datetime "updated_at"
|
69
|
-
end
|
70
|
-
|
71
|
-
end
|