simplec 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +23 -20
- data/app/models/simplec/document.rb +37 -0
- data/app/models/simplec/document_set.rb +29 -0
- data/db/migrate/20170814211816_create_simplec_documents.rb +26 -0
- data/db/migrate/20170814211929_create_simplec_document_sets.rb +22 -0
- data/lib/simplec/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc12728b3f36924c9748feeaf9b913adf6f2f4c5
|
4
|
+
data.tar.gz: acf72f1d1f5116208a044018df7e50ca298f458e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7bd9cd9bc1007492113fc583e5c3eca2023938f6ab50f326e2f2ea194c946d24ec6bc5fe06aee34c88722f13ba8da53751282c8e233fb9e8fa21ea0ed190634
|
7
|
+
data.tar.gz: 0fb75e9fa2898854726b89dca64b5c3c610059835c5eecbf2dad81c53fd6aa3cd1a7f8e9071536b7edf59f8aa805ed57eec1644ec75d79bfde4833ab85a35b7f
|
data/README.md
CHANGED
@@ -18,7 +18,8 @@ over the entire ecosystem.
|
|
18
18
|
|
19
19
|
- imagemagick
|
20
20
|
|
21
|
-
For image processing.
|
21
|
+
For image processing. Note there is a known vulnerability, please update
|
22
|
+
accordingly: https://imagetragick.com/
|
22
23
|
|
23
24
|
- dragonfly
|
24
25
|
|
@@ -76,12 +77,6 @@ fallout. ;-)_
|
|
76
77
|
|
77
78
|
## Usage
|
78
79
|
|
79
|
-
1. Add to gemfile
|
80
|
-
2. Mount engine
|
81
|
-
3. Create pages and corresponding templates
|
82
|
-
4. Build, generator, or use an auxilary gem for page admin.
|
83
|
-
5. Let users loose.
|
84
|
-
|
85
80
|
'www' is considered the default subdomain.
|
86
81
|
|
87
82
|
'admin' subdomain is reserved for administration functions if you wish.
|
@@ -103,6 +98,8 @@ TODO override field types howto
|
|
103
98
|
|
104
99
|
TODO explain using uuids for keys + pgcrypto
|
105
100
|
|
101
|
+
TODO explain how to augment model classes (example in `test/dummy/config/initializers/simplec.rb`)
|
102
|
+
|
106
103
|
### Steps
|
107
104
|
|
108
105
|
1. Install simplec in your Rails application.
|
@@ -245,7 +242,25 @@ See this page for a good cheat sheet: http://markevans.github.io/dragonfly/image
|
|
245
242
|
|
246
243
|
## Roadmap
|
247
244
|
|
248
|
-
1.
|
245
|
+
1. TODOS:
|
246
|
+
|
247
|
+
- Embedded image id (integer -> uuid)
|
248
|
+
|
249
|
+
- Check doc view helpers
|
250
|
+
|
251
|
+
- Throw clear warning when creating a page without a type
|
252
|
+
|
253
|
+
- Document `lib/simplec/controller_extensions.rb`
|
254
|
+
|
255
|
+
- Document why _subdomain in subdomain form in admin.
|
256
|
+
|
257
|
+
- rails generate simplec:install
|
258
|
+
Install app/models/page.rb, app/models/page/
|
259
|
+
initializer if needed, with options documented
|
260
|
+
|
261
|
+
- rewrite beginning part of usage
|
262
|
+
|
263
|
+
- simplec_path/simplec_url caching
|
249
264
|
|
250
265
|
1. Installer `rails generater simplec:install`
|
251
266
|
|
@@ -264,18 +279,6 @@ See this page for a good cheat sheet: http://markevans.github.io/dragonfly/image
|
|
264
279
|
relegated to 3rd party extensions.
|
265
280
|
2. Pull requests are welcome. See rule #1.
|
266
281
|
|
267
|
-
## TODO
|
268
|
-
|
269
|
-
- Document `lib/simplec/controller_extensions.rb`
|
270
|
-
|
271
|
-
- Document why _subdomain in subdomain form in admin.
|
272
|
-
|
273
|
-
- rails generate simplec:install
|
274
|
-
Install app/models/page.rb, app/models/page/
|
275
|
-
initializer if needed, with options documented
|
276
|
-
|
277
|
-
- simplec_path/simplec_url caching
|
278
|
-
|
279
282
|
## Running dummy application
|
280
283
|
|
281
284
|
1. Create simplec postgres user
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Simplec
|
2
|
+
class Document < ApplicationRecord
|
3
|
+
|
4
|
+
belongs_to :document_set,
|
5
|
+
optional: true
|
6
|
+
has_and_belongs_to_many :subdomains
|
7
|
+
|
8
|
+
dragonfly_accessor :file
|
9
|
+
|
10
|
+
validates :name,
|
11
|
+
presence: true
|
12
|
+
validate :validate_subdomain_or_set!
|
13
|
+
validate :validate_slug!
|
14
|
+
|
15
|
+
def path
|
16
|
+
self.file.url
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def validate_subdomain_or_set!
|
22
|
+
return if self.subdomains.length > 0
|
23
|
+
return if self.document_set
|
24
|
+
errors.add :subdomain_ids, 'either a document set or at least one subdomain is required'
|
25
|
+
end
|
26
|
+
|
27
|
+
def validate_slug!
|
28
|
+
similar = self.class.where(slug: self.slug).where.not(id: self.id)
|
29
|
+
return if similar.size == 0
|
30
|
+
return if (
|
31
|
+
similar.map(&:subdomain_ids).flatten & self.subdomain_ids
|
32
|
+
).length == 0
|
33
|
+
errors.add :slug, 'slug must be unique across linked subdomains'
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Simplec
|
2
|
+
class DocumentSet < ApplicationRecord
|
3
|
+
|
4
|
+
has_many :documents
|
5
|
+
has_and_belongs_to_many :subdomains
|
6
|
+
|
7
|
+
validates :name,
|
8
|
+
presence: true
|
9
|
+
validate :validate_subdomain!
|
10
|
+
validate :validate_slug!
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def validate_subdomain!
|
15
|
+
return if self.subdomains.length > 0
|
16
|
+
errors.add :subdomain_ids, 'at least one is required'
|
17
|
+
end
|
18
|
+
|
19
|
+
def validate_slug!
|
20
|
+
similar = self.class.where(slug: self.slug).where.not(id: self.id)
|
21
|
+
return if similar.size == 0
|
22
|
+
return if (
|
23
|
+
similar.map(&:subdomain_ids).flatten & self.subdomain_ids
|
24
|
+
).length == 0
|
25
|
+
errors.add :slug, 'slug must be unique across linked subdomains'
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class CreateSimplecDocuments < ActiveRecord::Migration[5.1]
|
2
|
+
def change
|
3
|
+
create_table :simplec_documents, id: :uuid, default: 'gen_random_uuid()' do |t|
|
4
|
+
t.uuid :document_set_id
|
5
|
+
t.string :slug
|
6
|
+
t.string :name
|
7
|
+
t.boolean :required, default: false
|
8
|
+
t.text :description
|
9
|
+
t.string :file_uid
|
10
|
+
t.string :file_name
|
11
|
+
|
12
|
+
t.timestamps
|
13
|
+
end
|
14
|
+
add_index :simplec_documents, :document_set_id
|
15
|
+
add_index :simplec_documents, :slug
|
16
|
+
add_index :simplec_documents, :name
|
17
|
+
|
18
|
+
create_table :simplec_documents_subdomains, index: false do |t|
|
19
|
+
t.uuid :document_id
|
20
|
+
t.uuid :subdomain_id
|
21
|
+
end
|
22
|
+
add_index :simplec_documents_subdomains, [:document_id, :subdomain_id],
|
23
|
+
unique: true,
|
24
|
+
name: 'index_simplec_documents_subdomains_unique'
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class CreateSimplecDocumentSets < ActiveRecord::Migration[5.1]
|
2
|
+
def change
|
3
|
+
create_table :simplec_document_sets, id: :uuid, default: 'gen_random_uuid()' do |t|
|
4
|
+
t.string :slug
|
5
|
+
t.string :name
|
6
|
+
t.boolean :required, default: false
|
7
|
+
t.text :description
|
8
|
+
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
add_index :simplec_document_sets, :slug
|
12
|
+
add_index :simplec_document_sets, :name
|
13
|
+
|
14
|
+
create_table :simplec_document_sets_subdomains, index: false do |t|
|
15
|
+
t.uuid :document_set_id
|
16
|
+
t.uuid :subdomain_id
|
17
|
+
end
|
18
|
+
add_index :simplec_document_sets_subdomains, [:document_set_id, :subdomain_id],
|
19
|
+
unique: true,
|
20
|
+
name: 'index_simplec_document_sets_subdomains_unique'
|
21
|
+
end
|
22
|
+
end
|
data/lib/simplec/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simplec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Smith
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -120,6 +120,8 @@ files:
|
|
120
120
|
- app/jobs/simplec/application_job.rb
|
121
121
|
- app/mailers/simplec/application_mailer.rb
|
122
122
|
- app/models/simplec/application_record.rb
|
123
|
+
- app/models/simplec/document.rb
|
124
|
+
- app/models/simplec/document_set.rb
|
123
125
|
- app/models/simplec/embedded_image.rb
|
124
126
|
- app/models/simplec/page.rb
|
125
127
|
- app/models/simplec/subdomain.rb
|
@@ -133,6 +135,8 @@ files:
|
|
133
135
|
- db/migrate/20170809204353_create_simplec_pages.rb
|
134
136
|
- db/migrate/20170809204511_create_simplec_subdomains.rb
|
135
137
|
- db/migrate/20170809210304_create_simplec_embedded_images.rb
|
138
|
+
- db/migrate/20170814211816_create_simplec_documents.rb
|
139
|
+
- db/migrate/20170814211929_create_simplec_document_sets.rb
|
136
140
|
- lib/simplec.rb
|
137
141
|
- lib/simplec/action_controller/extensions.rb
|
138
142
|
- lib/simplec/action_view/helper.rb
|