repository-manager 0.2.1 → 0.2.8
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 +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
|