symphonia 3.2.4 → 3.3.0
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/CHANGELOG.md +88 -0
- data/app/controllers/symphonia/accounts_controller.rb +0 -1
- data/app/controllers/symphonia/roles_controller.rb +3 -64
- data/app/controllers/symphonia/users_controller.rb +0 -5
- data/app/helpers/symphonia/application_helper.rb +1 -1
- data/app/models/symphonia/user.rb +1 -25
- data/lib/symphonia.rb +0 -1
- data/lib/symphonia/base_controller.rb +0 -1
- data/lib/symphonia/engine.rb +5 -4
- data/lib/symphonia/version.rb +1 -1
- data/spec/factories/factories.rb +11 -12
- data/spec/spec_helper.rb +1 -1
- metadata +29 -75
- data/app/controllers/concerns/symphonia/swagger/base_controller.rb +0 -134
- data/app/controllers/symphonia/api_controller.rb +0 -78
- data/app/controllers/symphonia/attachments_controller.rb +0 -37
- data/app/controllers/symphonia/images_controller.rb +0 -16
- data/app/models/symphonia/attachment.rb +0 -16
- data/app/models/symphonia/common_file.rb +0 -9
- data/app/models/symphonia/image.rb +0 -46
- data/app/models/symphonia/swagger/error_model.rb +0 -24
- data/app/models/symphonia/swagger/parameters.rb +0 -21
- data/app/models/symphonia/swagger/responses.rb +0 -27
- data/lib/symphonia/attachable.rb +0 -35
- data/spec/controllers/api_controller_spec.rb +0 -9
- data/spec/controllers/images_controller_spec.rb +0 -5
- data/spec/models/attachment_spec.rb +0 -22
- data/spec/requests/attachments_controller_spec.rb +0 -23
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7a195060e6fa12677b383245afdaa0d7cefb75e463031b21aca473c2b2eabc6d
|
|
4
|
+
data.tar.gz: ca98109a38542883af2f24a0eadbfb9363861b09fa98a146437c405ba4872338
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4b5a099d7ab9e70cbe8526a9e2a765220c3d137472a08dfcbedebaef43745c96f78dc90512335adf4da26b1e910052231c9fa49fcff11dc8eeda122bb8ef1554
|
|
7
|
+
data.tar.gz: 6f300e80b0373f6f19298f6a1c33a4e059be86e7f1110eeebe74f32e90a04960a3ab2edbadf2d5d54624fbc3b4b38c6734b02abd7f6e857d06c11c6648a49b03
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
All notable changes to this project will be documented in this file.
|
|
3
|
+
|
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
5
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
### Removed
|
|
9
|
+
- openapi (it seems to be uneccessary)
|
|
10
|
+
- paperclip support
|
|
11
|
+
### Changed
|
|
12
|
+
- upgrade authlogic to 6.1.0
|
|
13
|
+
## [3.2.4] - 2020-05-10
|
|
14
|
+
### Added
|
|
15
|
+
- sidekiq-cron gem
|
|
16
|
+
## [3.2.3] - 2020-05-07
|
|
17
|
+
### Fixed
|
|
18
|
+
- find user by token from session
|
|
19
|
+
## [3.2.2] - 2020-05-05
|
|
20
|
+
### Changed
|
|
21
|
+
- user/account form layout
|
|
22
|
+
- Sidekiq v6
|
|
23
|
+
### Fixed
|
|
24
|
+
- UsersController#update Role should be sorted
|
|
25
|
+
## [3.2.1] - 2020-05-01
|
|
26
|
+
### Added
|
|
27
|
+
- avatar_url to users
|
|
28
|
+
- uuid to users
|
|
29
|
+
- openapi support
|
|
30
|
+
### Changed
|
|
31
|
+
- improve setup generator
|
|
32
|
+
- anonymous user have no "enforced" language
|
|
33
|
+
### Fixed
|
|
34
|
+
- update .rubocop
|
|
35
|
+
- bootstrap_form update to 4.4.0
|
|
36
|
+
- show time in localtime
|
|
37
|
+
### Removed
|
|
38
|
+
- ckeditor-jquery
|
|
39
|
+
## [3.1.5] - 2020-01-20
|
|
40
|
+
### Changed
|
|
41
|
+
- improve split name (Symphonia::UserManagement#name=)
|
|
42
|
+
## [3.1.4] - 2020-01-17
|
|
43
|
+
### Changed
|
|
44
|
+
- improve role form
|
|
45
|
+
## [3.1.3] - 2019-12-21
|
|
46
|
+
### Added
|
|
47
|
+
- bootstrap_modal_helper extended by `link_to_modal` feature
|
|
48
|
+
### Changed
|
|
49
|
+
- helper Symphonia::BootstrapModalHelper in BaseController
|
|
50
|
+
- new argument options in `icon` method (pass into `fa_icon`)
|
|
51
|
+
## [3.1.2] - 2019-12-07
|
|
52
|
+
### Added
|
|
53
|
+
- skip permission check in link_to_new_entity method
|
|
54
|
+
### Fixed
|
|
55
|
+
- login form additional buttons
|
|
56
|
+
- lost_password form & mail
|
|
57
|
+
- reset_password form & mail
|
|
58
|
+
## [3.1.1] - 2019-12-07
|
|
59
|
+
### Changed
|
|
60
|
+
- accounts registration validation
|
|
61
|
+
- update static 500.html
|
|
62
|
+
## [3.1.0] - 2019-12-07
|
|
63
|
+
### Added
|
|
64
|
+
- BaseController for simplier create CRUD inheritance
|
|
65
|
+
- base views (new, form, edit, show and index)
|
|
66
|
+
- general EntityDecorator
|
|
67
|
+
- input field in model Attribute
|
|
68
|
+
- TextAttribute format
|
|
69
|
+
### Changed
|
|
70
|
+
- registration form refactored
|
|
71
|
+
- update dummy to Rails 6
|
|
72
|
+
### Removed
|
|
73
|
+
- wicked_pdf dependency
|
|
74
|
+
## [3.0.3] - 2019-10-06
|
|
75
|
+
### Changed
|
|
76
|
+
- rubocop.yml
|
|
77
|
+
- use real user in tests instead a dummy object
|
|
78
|
+
## [3.0.1] - 2019-07-08
|
|
79
|
+
### Changed
|
|
80
|
+
- do not require password for SSO users
|
|
81
|
+
- hide password field from form of SSO users
|
|
82
|
+
## [3.0.0] - 2019-07-06
|
|
83
|
+
### Added
|
|
84
|
+
- external_id on user
|
|
85
|
+
### Changed
|
|
86
|
+
- users/show only for logged users
|
|
87
|
+
- upgrade to authlogic 5
|
|
88
|
+
- minor improvements
|
|
@@ -14,87 +14,26 @@ module Symphonia
|
|
|
14
14
|
#
|
|
15
15
|
# before_action :authorize
|
|
16
16
|
before_action :load_permissions, only: [:new, :edit, :update, :create]
|
|
17
|
-
#
|
|
18
|
-
# #layout 'admin'
|
|
19
|
-
#
|
|
20
|
-
# def index
|
|
21
|
-
# @query = Symphonia::Role.query.new(self)
|
|
22
|
-
# @entities = @query.entities
|
|
23
|
-
# respond_to do |format|
|
|
24
|
-
# format.html do
|
|
25
|
-
# @entities = @entities.page(params[:page])
|
|
26
|
-
# render layout: !request.xhr?
|
|
27
|
-
# end
|
|
28
|
-
# format.xml { render xml: @entities.all }
|
|
29
|
-
# format.json { render json: @entities.all }
|
|
30
|
-
# end
|
|
31
|
-
# end
|
|
32
|
-
#
|
|
33
|
-
# def show
|
|
34
|
-
# @role = Role.find(params[:id])
|
|
35
|
-
# respond_to do |format|
|
|
36
|
-
# format.html
|
|
37
|
-
# format.json { render json: @role }
|
|
38
|
-
# end
|
|
39
|
-
# end
|
|
40
|
-
#
|
|
41
|
-
# def new
|
|
42
|
-
# @role = Role.new
|
|
43
|
-
# end
|
|
44
|
-
#
|
|
45
|
-
# def edit
|
|
46
|
-
# @role = Role.find(params[:id])
|
|
47
|
-
# end
|
|
48
17
|
|
|
49
18
|
def create
|
|
50
19
|
@entity = @role = Role.new(entity_params)
|
|
51
20
|
@role.permissions = Symphonia::Permissions.find_all(params[:permissions]).map(&:name)
|
|
52
21
|
super
|
|
53
|
-
# respond_to do |format|
|
|
54
|
-
# if @role.save
|
|
55
|
-
# format.html { redirect_to((params[:continue] ? new_role_path : roles_path), notice: t(:text_created)) }
|
|
56
|
-
# format.json { render(json: @role, status: :created, location: @role) }
|
|
57
|
-
# else
|
|
58
|
-
# format.html { render(action: 'new') }
|
|
59
|
-
# format.json { render(json: @role.errors, status: :unprocessable_entity) }
|
|
60
|
-
# end
|
|
61
|
-
# end
|
|
62
22
|
end
|
|
63
23
|
|
|
64
24
|
def update
|
|
65
25
|
@entity = @role = Role.find(params[:id])
|
|
66
26
|
@role.permissions = Symphonia::Permissions.find_all(params[:permissions]).map(&:name)
|
|
67
27
|
super
|
|
68
|
-
|
|
69
|
-
# if @role.update_attributes(role_params)
|
|
70
|
-
# format.html { redirect_to(edit_role_path(@role), notice: t(:text_updated)) }
|
|
71
|
-
# format.json { head(:no_content) }
|
|
72
|
-
# else
|
|
73
|
-
# format.html { render(action: 'edit') }
|
|
74
|
-
# format.json { render(json: @role.errors, status: :unprocessable_entity) }
|
|
75
|
-
# end
|
|
76
|
-
# end
|
|
28
|
+
|
|
77
29
|
end
|
|
78
30
|
|
|
79
|
-
# def destroy
|
|
80
|
-
# @role = Role.find(params[:id])
|
|
81
|
-
# @role.destroy
|
|
82
|
-
# respond_to do |format|
|
|
83
|
-
# format.html { redirect_to(roles_url, notice: t(:text_destroyed)) }
|
|
84
|
-
# format.json { head :no_content }
|
|
85
|
-
# format.js { render js: "Symphonia.filters.removeRow('#{view_context.dom_id(@role)}')"}
|
|
86
|
-
# end
|
|
87
|
-
# end
|
|
88
|
-
#
|
|
89
31
|
private
|
|
90
|
-
|
|
32
|
+
|
|
91
33
|
def load_permissions
|
|
92
34
|
@permissions = Symphonia::Permissions.all
|
|
93
35
|
end
|
|
94
|
-
|
|
95
|
-
# def role_params
|
|
96
|
-
# params.require(:role).permit(:name, :description, permissions: [])
|
|
97
|
-
# end
|
|
36
|
+
|
|
98
37
|
end
|
|
99
38
|
|
|
100
39
|
end
|
|
@@ -38,7 +38,7 @@ module Symphonia
|
|
|
38
38
|
end
|
|
39
39
|
options[:container_class] ||= 'mr-auto'
|
|
40
40
|
|
|
41
|
-
return content_tag(:ul, s.html_safe, itemscope: '', itemtype: 'http://
|
|
41
|
+
return content_tag(:ul, s.html_safe, itemscope: '', itemtype: 'http://schema.org/BreadcrumbList', class: "navbar-nav #{options[:container_class]}", id: menu.to_s)
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
def render_menu_node(menu, item, options = {})
|
|
@@ -19,6 +19,7 @@ module Symphonia
|
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
acts_as_authentic do |config|
|
|
22
|
+
config.crypto_provider = ::Authlogic::CryptoProviders::SCrypt
|
|
22
23
|
end
|
|
23
24
|
validates :email, uniqueness: { case_sensitive: false }
|
|
24
25
|
validates :password,
|
|
@@ -30,31 +31,6 @@ module Symphonia
|
|
|
30
31
|
|
|
31
32
|
include UserManagement
|
|
32
33
|
|
|
33
|
-
include ::Swagger::Blocks
|
|
34
|
-
swagger_component do
|
|
35
|
-
schema :User do
|
|
36
|
-
key :required, %w[id login email]
|
|
37
|
-
property :id do
|
|
38
|
-
key :type, "integer"
|
|
39
|
-
key :format, "int64"
|
|
40
|
-
end
|
|
41
|
-
property :fist_name do
|
|
42
|
-
key :type, "string"
|
|
43
|
-
end
|
|
44
|
-
property :last_name do
|
|
45
|
-
key :type, "string"
|
|
46
|
-
end
|
|
47
|
-
property :email do
|
|
48
|
-
key :type, "string"
|
|
49
|
-
key :format, "email"
|
|
50
|
-
end
|
|
51
|
-
property :status do
|
|
52
|
-
key :type, "string"
|
|
53
|
-
key :enum, Symphonia::User.statuses.keys
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
34
|
attr_writer :password_confirmation
|
|
59
35
|
|
|
60
36
|
has_and_belongs_to_many :preferences, foreign_key: 'user_id'
|
data/lib/symphonia.rb
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
module Symphonia
|
|
3
3
|
include ::ActiveSupport::Configurable
|
|
4
4
|
|
|
5
|
-
autoload :Attachable, 'symphonia/attachable'
|
|
6
5
|
autoload :BaseController, 'symphonia/base_controller'
|
|
7
6
|
autoload :BootstrapLinkRender, 'symphonia/bootstrap_link_render'
|
|
8
7
|
autoload :ControllerExtensions, 'symphonia/controller_extensions'
|
data/lib/symphonia/engine.rb
CHANGED
|
@@ -6,6 +6,7 @@ require 'symphonia/user_management'
|
|
|
6
6
|
require 'rails-i18n'
|
|
7
7
|
require 'turbolinks'
|
|
8
8
|
require 'authlogic'
|
|
9
|
+
require 'scrypt'
|
|
9
10
|
require 'bootstrap'
|
|
10
11
|
|
|
11
12
|
require 'will_paginate'
|
|
@@ -15,14 +16,14 @@ require 'jquery-rails'
|
|
|
15
16
|
require 'jquery-ui-rails'
|
|
16
17
|
require 'rdiscount'
|
|
17
18
|
require 'sortable-table'
|
|
18
|
-
require 'paperclip'
|
|
19
|
+
# require 'paperclip'
|
|
19
20
|
require 'awesome_nested_set'
|
|
20
|
-
require 'acts_as_list'
|
|
21
|
+
# require 'acts_as_list'
|
|
21
22
|
require 'bootstrap_form'
|
|
22
23
|
require 'the_sortable_tree'
|
|
23
24
|
require 'bootstrap-datepicker-rails'
|
|
24
25
|
# require 'wicked_pdf'
|
|
25
|
-
require 'swagger/blocks'
|
|
26
|
+
# require 'swagger/blocks'
|
|
26
27
|
|
|
27
28
|
module Symphonia
|
|
28
29
|
|
|
@@ -31,7 +32,7 @@ module Symphonia
|
|
|
31
32
|
|
|
32
33
|
config.generators do |g|
|
|
33
34
|
g.test_framework :rspec, fixture: false
|
|
34
|
-
|
|
35
|
+
g.fixture_replacement :factory_bot, dir: 'spec/factories'
|
|
35
36
|
end
|
|
36
37
|
|
|
37
38
|
# Rails 5
|
data/lib/symphonia/version.rb
CHANGED
data/spec/factories/factories.rb
CHANGED
|
@@ -6,7 +6,6 @@ FactoryBot.define do
|
|
|
6
6
|
login { email }
|
|
7
7
|
admin { false }
|
|
8
8
|
password { SecureRandom.hex(16) }
|
|
9
|
-
# password_confirmation { password }
|
|
10
9
|
last_request_at { Time.now }
|
|
11
10
|
|
|
12
11
|
trait :admin do
|
|
@@ -28,17 +27,17 @@ FactoryBot.define do
|
|
|
28
27
|
sequence(:name) { |n| "#{Faker::Job.title} #{n}" }
|
|
29
28
|
end
|
|
30
29
|
|
|
31
|
-
factory :attachment, class: 'Symphonia::Attachment' do
|
|
32
|
-
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
factory :file, parent: :attachment, class: 'Symphonia::CommonFile' do
|
|
36
|
-
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
factory :image, parent: :attachment, class: 'Symphonia::Image' do
|
|
40
|
-
|
|
41
|
-
end
|
|
30
|
+
# factory :attachment, class: 'Symphonia::Attachment' do
|
|
31
|
+
# association :attachable, factory: :user
|
|
32
|
+
# end
|
|
33
|
+
#
|
|
34
|
+
# factory :file, parent: :attachment, class: 'Symphonia::CommonFile' do
|
|
35
|
+
# attachment { File.new(File.expand_path('../../support/common_file.txt', __FILE__)) }
|
|
36
|
+
# end
|
|
37
|
+
#
|
|
38
|
+
# factory :image, parent: :attachment, class: 'Symphonia::Image' do
|
|
39
|
+
# attachment { File.new(File.expand_path('../../support/symphonia.jpg', __FILE__)) }
|
|
40
|
+
# end
|
|
42
41
|
|
|
43
42
|
factory :preference, class: 'Symphonia::Preference' do
|
|
44
43
|
|
data/spec/spec_helper.rb
CHANGED
|
@@ -13,7 +13,7 @@ end
|
|
|
13
13
|
|
|
14
14
|
# ActiveRecord::Migration.maintain_test_schema!
|
|
15
15
|
|
|
16
|
-
Paperclip::Attachment.default_options[:path] = "#{Rails.root}/spec/test_files/:class/:id_partition/:style.:extension"
|
|
16
|
+
# Paperclip::Attachment.default_options[:path] = "#{Rails.root}/spec/test_files/:class/:id_partition/:style.:extension"
|
|
17
17
|
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
|
18
18
|
RSpec.configure do |config|
|
|
19
19
|
# config.infer_spec_type_from_file_location!
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: symphonia
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Lukas Pokorny
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-06-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|
|
@@ -72,14 +72,28 @@ dependencies:
|
|
|
72
72
|
requirements:
|
|
73
73
|
- - "~>"
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version:
|
|
75
|
+
version: 6.1.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
|
-
version:
|
|
82
|
+
version: 6.1.0
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: scrypt
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '3.0'
|
|
90
|
+
type: :runtime
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '3.0'
|
|
83
97
|
- !ruby/object:Gem::Dependency
|
|
84
98
|
name: bootstrap
|
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -98,16 +112,16 @@ dependencies:
|
|
|
98
112
|
name: will_paginate
|
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
|
100
114
|
requirements:
|
|
101
|
-
- - "
|
|
115
|
+
- - "~>"
|
|
102
116
|
- !ruby/object:Gem::Version
|
|
103
|
-
version:
|
|
117
|
+
version: 3.3.0
|
|
104
118
|
type: :runtime
|
|
105
119
|
prerelease: false
|
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
121
|
requirements:
|
|
108
|
-
- - "
|
|
122
|
+
- - "~>"
|
|
109
123
|
- !ruby/object:Gem::Version
|
|
110
|
-
version:
|
|
124
|
+
version: 3.3.0
|
|
111
125
|
- !ruby/object:Gem::Dependency
|
|
112
126
|
name: api-pagination
|
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -192,48 +206,20 @@ dependencies:
|
|
|
192
206
|
- - ">="
|
|
193
207
|
- !ruby/object:Gem::Version
|
|
194
208
|
version: 0.1.1
|
|
195
|
-
- !ruby/object:Gem::Dependency
|
|
196
|
-
name: paperclip
|
|
197
|
-
requirement: !ruby/object:Gem::Requirement
|
|
198
|
-
requirements:
|
|
199
|
-
- - ">="
|
|
200
|
-
- !ruby/object:Gem::Version
|
|
201
|
-
version: '0'
|
|
202
|
-
type: :runtime
|
|
203
|
-
prerelease: false
|
|
204
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
205
|
-
requirements:
|
|
206
|
-
- - ">="
|
|
207
|
-
- !ruby/object:Gem::Version
|
|
208
|
-
version: '0'
|
|
209
209
|
- !ruby/object:Gem::Dependency
|
|
210
210
|
name: awesome_nested_set
|
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
|
212
212
|
requirements:
|
|
213
|
-
- - "
|
|
214
|
-
- !ruby/object:Gem::Version
|
|
215
|
-
version: '0'
|
|
216
|
-
type: :runtime
|
|
217
|
-
prerelease: false
|
|
218
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
219
|
-
requirements:
|
|
220
|
-
- - ">="
|
|
221
|
-
- !ruby/object:Gem::Version
|
|
222
|
-
version: '0'
|
|
223
|
-
- !ruby/object:Gem::Dependency
|
|
224
|
-
name: acts_as_list
|
|
225
|
-
requirement: !ruby/object:Gem::Requirement
|
|
226
|
-
requirements:
|
|
227
|
-
- - ">="
|
|
213
|
+
- - "~>"
|
|
228
214
|
- !ruby/object:Gem::Version
|
|
229
|
-
version:
|
|
215
|
+
version: 3.2.1
|
|
230
216
|
type: :runtime
|
|
231
217
|
prerelease: false
|
|
232
218
|
version_requirements: !ruby/object:Gem::Requirement
|
|
233
219
|
requirements:
|
|
234
|
-
- - "
|
|
220
|
+
- - "~>"
|
|
235
221
|
- !ruby/object:Gem::Version
|
|
236
|
-
version:
|
|
222
|
+
version: 3.2.1
|
|
237
223
|
- !ruby/object:Gem::Dependency
|
|
238
224
|
name: bootstrap_form
|
|
239
225
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -318,20 +304,6 @@ dependencies:
|
|
|
318
304
|
- - "~>"
|
|
319
305
|
- !ruby/object:Gem::Version
|
|
320
306
|
version: '0.2'
|
|
321
|
-
- !ruby/object:Gem::Dependency
|
|
322
|
-
name: swagger-blocks
|
|
323
|
-
requirement: !ruby/object:Gem::Requirement
|
|
324
|
-
requirements:
|
|
325
|
-
- - "~>"
|
|
326
|
-
- !ruby/object:Gem::Version
|
|
327
|
-
version: '3.0'
|
|
328
|
-
type: :runtime
|
|
329
|
-
prerelease: false
|
|
330
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
331
|
-
requirements:
|
|
332
|
-
- - "~>"
|
|
333
|
-
- !ruby/object:Gem::Version
|
|
334
|
-
version: '3.0'
|
|
335
307
|
- !ruby/object:Gem::Dependency
|
|
336
308
|
name: rspec-rails
|
|
337
309
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -408,14 +380,14 @@ dependencies:
|
|
|
408
380
|
requirements:
|
|
409
381
|
- - "~>"
|
|
410
382
|
- !ruby/object:Gem::Version
|
|
411
|
-
version:
|
|
383
|
+
version: 1.4.2
|
|
412
384
|
type: :runtime
|
|
413
385
|
prerelease: false
|
|
414
386
|
version_requirements: !ruby/object:Gem::Requirement
|
|
415
387
|
requirements:
|
|
416
388
|
- - "~>"
|
|
417
389
|
- !ruby/object:Gem::Version
|
|
418
|
-
version:
|
|
390
|
+
version: 1.4.2
|
|
419
391
|
- !ruby/object:Gem::Dependency
|
|
420
392
|
name: sass-rails
|
|
421
393
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -438,6 +410,7 @@ extensions: []
|
|
|
438
410
|
extra_rdoc_files: []
|
|
439
411
|
files:
|
|
440
412
|
- ".rubocop.yml"
|
|
413
|
+
- CHANGELOG.md
|
|
441
414
|
- LICENSE
|
|
442
415
|
- README.md
|
|
443
416
|
- Rakefile
|
|
@@ -464,14 +437,10 @@ files:
|
|
|
464
437
|
- app/assets/stylesheets/symphonia/symphonia_bootstrap.scss
|
|
465
438
|
- app/channels/application_cable/channel.rb
|
|
466
439
|
- app/controllers/base_controller.rb
|
|
467
|
-
- app/controllers/concerns/symphonia/swagger/base_controller.rb
|
|
468
440
|
- app/controllers/symphonia/accounts_controller.rb
|
|
469
441
|
- app/controllers/symphonia/admin_controller.rb
|
|
470
|
-
- app/controllers/symphonia/api_controller.rb
|
|
471
442
|
- app/controllers/symphonia/application_controller.rb
|
|
472
|
-
- app/controllers/symphonia/attachments_controller.rb
|
|
473
443
|
- app/controllers/symphonia/filters_controller.rb
|
|
474
|
-
- app/controllers/symphonia/images_controller.rb
|
|
475
444
|
- app/controllers/symphonia/login_controller.rb
|
|
476
445
|
- app/controllers/symphonia/roles_controller.rb
|
|
477
446
|
- app/controllers/symphonia/user_sessions_controller.rb
|
|
@@ -484,15 +453,9 @@ files:
|
|
|
484
453
|
- app/mailers/symphonia/notifier.rb
|
|
485
454
|
- app/models/symphonia/admin_module.rb
|
|
486
455
|
- app/models/symphonia/application_record.rb
|
|
487
|
-
- app/models/symphonia/attachment.rb
|
|
488
|
-
- app/models/symphonia/common_file.rb
|
|
489
456
|
- app/models/symphonia/email_preference.rb
|
|
490
|
-
- app/models/symphonia/image.rb
|
|
491
457
|
- app/models/symphonia/preference.rb
|
|
492
458
|
- app/models/symphonia/role.rb
|
|
493
|
-
- app/models/symphonia/swagger/error_model.rb
|
|
494
|
-
- app/models/symphonia/swagger/parameters.rb
|
|
495
|
-
- app/models/symphonia/swagger/responses.rb
|
|
496
459
|
- app/models/symphonia/user.rb
|
|
497
460
|
- app/models/symphonia/user_session.rb
|
|
498
461
|
- app/views/base/_form.html.erb
|
|
@@ -579,7 +542,6 @@ files:
|
|
|
579
542
|
- lib/symphonia.rb
|
|
580
543
|
- lib/symphonia/action_cable/connection.rb
|
|
581
544
|
- lib/symphonia/admin_constraint.rb
|
|
582
|
-
- lib/symphonia/attachable.rb
|
|
583
545
|
- lib/symphonia/base_controller.rb
|
|
584
546
|
- lib/symphonia/bootstrap_link_render.rb
|
|
585
547
|
- lib/symphonia/controller_extensions.rb
|
|
@@ -607,10 +569,8 @@ files:
|
|
|
607
569
|
- lib/symphonia/version.rb
|
|
608
570
|
- spec/controllers/account_controller_spec.rb
|
|
609
571
|
- spec/controllers/admin_controller_spec.rb
|
|
610
|
-
- spec/controllers/api_controller_spec.rb
|
|
611
572
|
- spec/controllers/base_controller_spec.rb
|
|
612
573
|
- spec/controllers/filters_controller_spec.rb
|
|
613
|
-
- spec/controllers/images_controller_spec.rb
|
|
614
574
|
- spec/controllers/login_controller_spec.rb
|
|
615
575
|
- spec/controllers/roles_controller_spec.rb
|
|
616
576
|
- spec/controllers/users_controller_spec.rb
|
|
@@ -620,7 +580,6 @@ files:
|
|
|
620
580
|
- spec/helpers/symphonia/renderer_helper_spec.rb
|
|
621
581
|
- spec/mailers/previews/symphonia/notifier_preview.rb
|
|
622
582
|
- spec/mailers/symphonia/notifier_spec.rb
|
|
623
|
-
- spec/models/attachment_spec.rb
|
|
624
583
|
- spec/models/query/attribute_spec.rb
|
|
625
584
|
- spec/models/query/filters_spec.rb
|
|
626
585
|
- spec/models/query/symphonia_query_spec.rb
|
|
@@ -628,7 +587,6 @@ files:
|
|
|
628
587
|
- spec/models/user_spec.rb
|
|
629
588
|
- spec/rails_helper.rb
|
|
630
589
|
- spec/requests/accounts_spec.rb
|
|
631
|
-
- spec/requests/attachments_controller_spec.rb
|
|
632
590
|
- spec/requests/login_spec.rb
|
|
633
591
|
- spec/requests/roles_spec.rb
|
|
634
592
|
- spec/requests/users_spec.rb
|
|
@@ -671,7 +629,6 @@ test_files:
|
|
|
671
629
|
- spec/mailers/symphonia/notifier_spec.rb
|
|
672
630
|
- spec/mailers/previews/symphonia/notifier_preview.rb
|
|
673
631
|
- spec/version_spec.rb
|
|
674
|
-
- spec/models/attachment_spec.rb
|
|
675
632
|
- spec/models/query/attribute_spec.rb
|
|
676
633
|
- spec/models/query/symphonia_query_spec.rb
|
|
677
634
|
- spec/models/query/filters_spec.rb
|
|
@@ -679,7 +636,6 @@ test_files:
|
|
|
679
636
|
- spec/models/role_spec.rb
|
|
680
637
|
- spec/requests/roles_spec.rb
|
|
681
638
|
- spec/requests/login_spec.rb
|
|
682
|
-
- spec/requests/attachments_controller_spec.rb
|
|
683
639
|
- spec/requests/accounts_spec.rb
|
|
684
640
|
- spec/requests/users_spec.rb
|
|
685
641
|
- spec/support/symphonia.jpg
|
|
@@ -694,12 +650,10 @@ test_files:
|
|
|
694
650
|
- spec/controllers/roles_controller_spec.rb
|
|
695
651
|
- spec/controllers/login_controller_spec.rb
|
|
696
652
|
- spec/controllers/users_controller_spec.rb
|
|
697
|
-
- spec/controllers/api_controller_spec.rb
|
|
698
653
|
- spec/controllers/filters_controller_spec.rb
|
|
699
654
|
- spec/controllers/admin_controller_spec.rb
|
|
700
655
|
- spec/controllers/account_controller_spec.rb
|
|
701
656
|
- spec/controllers/base_controller_spec.rb
|
|
702
|
-
- spec/controllers/images_controller_spec.rb
|
|
703
657
|
- spec/views/filters/options.html.erb_spec.rb
|
|
704
658
|
- spec/rails_helper.rb
|
|
705
659
|
- spec/helpers/symphonia/application_helper_spec.rb
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
module Symphonia
|
|
2
|
-
module Swagger
|
|
3
|
-
module BaseController
|
|
4
|
-
extend ActiveSupport::Concern
|
|
5
|
-
# General swagger description
|
|
6
|
-
#
|
|
7
|
-
# How to use:
|
|
8
|
-
# `include Symphonia::Swagger::BaseController`
|
|
9
|
-
# # it include all necessary methods then you need call
|
|
10
|
-
# `swagger_me entity: "MyModelName", base_path: "/my_entities"`
|
|
11
|
-
# for change which tags list are used with all this endpoints override method `tag_list`
|
|
12
|
-
#
|
|
13
|
-
class_methods do
|
|
14
|
-
|
|
15
|
-
# @param [String] name of swagger model
|
|
16
|
-
def entity=(name)
|
|
17
|
-
@entity = name
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
# @param [String] path - route
|
|
21
|
-
def base_path=(path)
|
|
22
|
-
@base_path = path
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
# @abstract guess entity name from controller
|
|
26
|
-
def entity
|
|
27
|
-
@entity || name.demodulize.remove("Controller").singularize
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
# @abstract base route to described controller
|
|
31
|
-
def base_path
|
|
32
|
-
@base_path || "/#{entity_name.pluralize}"
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# @abstract name used in params
|
|
36
|
-
def entity_name
|
|
37
|
-
entity.underscore
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# @return [Array]
|
|
41
|
-
def tag_list
|
|
42
|
-
[entity]
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# @param [String] entity is singular name of described model
|
|
46
|
-
# @param [String] base_path in URL where is model located in app
|
|
47
|
-
def swagger_me(entity: name.demodulize.remove("Controller").singularize, base_path: nil)
|
|
48
|
-
self.entity = entity
|
|
49
|
-
self.base_path = base_path || "/#{entity_name.pluralize}"
|
|
50
|
-
include GeneralDefinitions
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
end
|
|
54
|
-
module GeneralDefinitions
|
|
55
|
-
extend ActiveSupport::Concern
|
|
56
|
-
included do
|
|
57
|
-
include ::Swagger::Blocks
|
|
58
|
-
|
|
59
|
-
base = self
|
|
60
|
-
swagger_path "#{base.base_path}.json" do
|
|
61
|
-
operation :get do
|
|
62
|
-
key :summary, "List"
|
|
63
|
-
key :tags, base.tag_list
|
|
64
|
-
parameter do
|
|
65
|
-
key :name, "q"
|
|
66
|
-
key :description, "free-text filter of current entity - `like`"
|
|
67
|
-
key :in, "query"
|
|
68
|
-
schema type: "string"
|
|
69
|
-
end
|
|
70
|
-
parameter do
|
|
71
|
-
key :name, "set_filter"
|
|
72
|
-
key :description, "enable filtering"
|
|
73
|
-
key :in, "query"
|
|
74
|
-
schema type: "boolean"
|
|
75
|
-
end
|
|
76
|
-
parameter do
|
|
77
|
-
key :name, "sort"
|
|
78
|
-
key :description, "name of 'column' for sort. Can be also in format name:asc or :desc"
|
|
79
|
-
key :example, "email:desc (for reverse order users by e-mail"
|
|
80
|
-
key :in, "query"
|
|
81
|
-
schema type: "string"
|
|
82
|
-
end
|
|
83
|
-
parameter do
|
|
84
|
-
key :name, "page"
|
|
85
|
-
key :description, "number of requested page"
|
|
86
|
-
key :in, "query"
|
|
87
|
-
schema type: "integer"
|
|
88
|
-
end
|
|
89
|
-
extend Symphonia::Swagger::Responses
|
|
90
|
-
response 200 do
|
|
91
|
-
key :description, "ok"
|
|
92
|
-
content "application/json" do
|
|
93
|
-
schema type: "array" do
|
|
94
|
-
items do
|
|
95
|
-
key "$ref", base.entity
|
|
96
|
-
end
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
swagger_path "#{base.base_path}/{id}.json" do
|
|
104
|
-
operation :get do
|
|
105
|
-
key :summary, 'Find by ID'
|
|
106
|
-
key :description, 'Returns a single entity'
|
|
107
|
-
key :tags, base.tag_list
|
|
108
|
-
parameter do
|
|
109
|
-
key :name, "id"
|
|
110
|
-
key :in, "path"
|
|
111
|
-
key :description, 'ID to fetch'
|
|
112
|
-
key :required, true
|
|
113
|
-
schema do
|
|
114
|
-
key :type, "integer"
|
|
115
|
-
key :format, "int64"
|
|
116
|
-
end
|
|
117
|
-
end
|
|
118
|
-
extend Symphonia::Swagger::Responses
|
|
119
|
-
response 200 do
|
|
120
|
-
key :description, 'detail object response'
|
|
121
|
-
content "application/json" do
|
|
122
|
-
schema do
|
|
123
|
-
key :'$ref', base.entity
|
|
124
|
-
end
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
end
|
|
133
|
-
end
|
|
134
|
-
end
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
module Symphonia
|
|
2
|
-
class ApiController < ApplicationController
|
|
3
|
-
include ::Swagger::Blocks
|
|
4
|
-
# https://github.com/fotinakis/swagger-blocks
|
|
5
|
-
swagger_component do
|
|
6
|
-
security_scheme "token" do
|
|
7
|
-
key :type, "apiKey"
|
|
8
|
-
key :name, "key"
|
|
9
|
-
key :in, "header"
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
swagger_root openapi: "3.0.0" do
|
|
14
|
-
info do
|
|
15
|
-
key :version, '2.0.0'
|
|
16
|
-
key :title, "API"
|
|
17
|
-
key :description, ""
|
|
18
|
-
contact do
|
|
19
|
-
key :name, 'Lukas Pokorny'
|
|
20
|
-
key :email, 'pokorny@luk4s.cz'
|
|
21
|
-
end
|
|
22
|
-
license do
|
|
23
|
-
key :name, 'GPLv3'
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
security do
|
|
28
|
-
key :token, []
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
tag name: "admin" do
|
|
32
|
-
key :description, "endpoints required `admin`"
|
|
33
|
-
end
|
|
34
|
-
tag name: "User" do
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
# A list of all classes that have swagger_* declarations.
|
|
39
|
-
SWAGGERED_CLASSES = [
|
|
40
|
-
UsersController,
|
|
41
|
-
User,
|
|
42
|
-
Swagger::ErrorModel,
|
|
43
|
-
]
|
|
44
|
-
def self.for_documentation
|
|
45
|
-
SWAGGERED_CLASSES + Symphonia::ApiController::SWAGGERED_CLASSES
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# @param [String] name of tag
|
|
49
|
-
# @param [String] description
|
|
50
|
-
def self.add_tag(name:, description:)
|
|
51
|
-
swagger_root_node.tag name: name, description: description
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# @return [Swagger::Blocks::Nodes::RootNode]
|
|
55
|
-
def self.swagger_root_node
|
|
56
|
-
node = Symphonia::ApiController.send(:_swagger_nodes)
|
|
57
|
-
node[:root_node]
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# @param [String] text
|
|
61
|
-
def self.api_title=(text)
|
|
62
|
-
swagger_root_node.data[:info].data[:title] = text
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# @param [String] text
|
|
66
|
-
def self.api_description=(text)
|
|
67
|
-
swagger_root_node.data[:info].data[:description] = text
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def index
|
|
71
|
-
json = ::Swagger::Blocks.build_root_json(self.class.for_documentation + [self.class])
|
|
72
|
-
respond_to do |format|
|
|
73
|
-
format.yaml { render plain: json.deep_stringify_keys.to_yaml }
|
|
74
|
-
format.json { render json: json }
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
module Symphonia
|
|
2
|
-
class AttachmentsController < ApplicationController
|
|
3
|
-
|
|
4
|
-
before_action :require_login, :find_attachment
|
|
5
|
-
|
|
6
|
-
def show
|
|
7
|
-
# find_attachment
|
|
8
|
-
render(plain: @attachment.attachment.url(:original), layout: false)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def destroy
|
|
12
|
-
# find_attachment
|
|
13
|
-
@attachment.destroy
|
|
14
|
-
respond_to do |format|
|
|
15
|
-
format.html do
|
|
16
|
-
flash[:notice] = t(:"text_#{@attachment.type.underscore}_successfully_destroy")
|
|
17
|
-
redirect_back_or_default(polymorphic_path(@attachment.attachable))
|
|
18
|
-
end
|
|
19
|
-
format.js
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def reorder
|
|
24
|
-
# find_attachment
|
|
25
|
-
new_position = params.require(:position).to_i
|
|
26
|
-
@attachment.insert_at(new_position)
|
|
27
|
-
head :ok
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
private
|
|
31
|
-
|
|
32
|
-
def find_attachment
|
|
33
|
-
@attachment = Attachment.find(params.require(:id))
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
module Symphonia
|
|
2
|
-
class ImagesController < ApplicationController
|
|
3
|
-
# before_action :require_login
|
|
4
|
-
|
|
5
|
-
# raise '??? images ??'
|
|
6
|
-
# def index
|
|
7
|
-
# @images = Image.order(created_at: :asc)
|
|
8
|
-
# @images = @images.like(params[:q]) if params[:q].present?
|
|
9
|
-
# @images = @images.page(params[:page])
|
|
10
|
-
# respond_to do |format|
|
|
11
|
-
# format.html
|
|
12
|
-
# format.js
|
|
13
|
-
# end
|
|
14
|
-
# end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
require 'acts_as_list'
|
|
2
|
-
module Symphonia
|
|
3
|
-
class Attachment < ApplicationRecord
|
|
4
|
-
self.table_name = 'attachments'
|
|
5
|
-
|
|
6
|
-
belongs_to :attachable, polymorphic: true, touch: true, optional: true
|
|
7
|
-
acts_as_list scope: :attachable
|
|
8
|
-
|
|
9
|
-
scope :like, proc {|q| where(arel_table[:description].matches("%#{q}%"))}
|
|
10
|
-
|
|
11
|
-
def name
|
|
12
|
-
attachment_file_name
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
end
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
module Symphonia
|
|
2
|
-
class Image < Attachment
|
|
3
|
-
|
|
4
|
-
class_attribute :paperclip_options
|
|
5
|
-
|
|
6
|
-
def self.image_styles
|
|
7
|
-
Symphonia.config[:paperclip_styles] || {
|
|
8
|
-
tiny_thumb: '120x120>', thumb: '200x200>', medium: '400x300>', large: '800x600>', original: '1280x800>'
|
|
9
|
-
}
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
has_attached_file(:attachment, {
|
|
13
|
-
styles: image_styles,
|
|
14
|
-
url: :paperclip_attachment_url,
|
|
15
|
-
convert_options: {
|
|
16
|
-
thumb: '-strip -quality 75',
|
|
17
|
-
tiny_thumb: '-strip -quality 75',
|
|
18
|
-
large: '-strip -quality 90'
|
|
19
|
-
}
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
before_post_process :transliterate_file_name
|
|
23
|
-
|
|
24
|
-
validates_attachment :attachment, presence: true, content_type: {
|
|
25
|
-
content_type: %w(image/jpeg image/jpg image/JPG image/png image/gif)}, size: {in: 0..5.megabytes}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
def url(variant = :original)
|
|
29
|
-
attachment.url(variant)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
private
|
|
33
|
-
|
|
34
|
-
def paperclip_attachment_url
|
|
35
|
-
paperclip_options.try(:[], :url) || Paperclip::Attachment.default_options[:url]
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def transliterate_file_name
|
|
39
|
-
extension = File.extname(attachment_file_name).remove('.')
|
|
40
|
-
filename = File.basename(attachment_file_name, '.*')
|
|
41
|
-
self.attachment.instance_write(:file_name, "#{filename.parameterize}.#{extension}")
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
module Symphonia
|
|
2
|
-
module Swagger
|
|
3
|
-
class ErrorModel
|
|
4
|
-
include ::Swagger::Blocks
|
|
5
|
-
|
|
6
|
-
swagger_component do
|
|
7
|
-
schema :ErrorModel do
|
|
8
|
-
key :required, %w[attribute messages]
|
|
9
|
-
property :attribute do
|
|
10
|
-
key :type, "string"
|
|
11
|
-
key :example, "login"
|
|
12
|
-
end
|
|
13
|
-
property :messages do
|
|
14
|
-
key :type, "array"
|
|
15
|
-
items do
|
|
16
|
-
key :type, "string"
|
|
17
|
-
key :example, "cannot be blank"
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
module Symphonia
|
|
2
|
-
module Swagger
|
|
3
|
-
module Parameters
|
|
4
|
-
def self.extended(base)
|
|
5
|
-
|
|
6
|
-
base.parameter do
|
|
7
|
-
key :name, "format"
|
|
8
|
-
key :description, "specify format of response"
|
|
9
|
-
key :in, "path"
|
|
10
|
-
key :required, true
|
|
11
|
-
schema do
|
|
12
|
-
key :type, "string"
|
|
13
|
-
key :enum, %w[json]
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
module Symphonia
|
|
2
|
-
module Swagger
|
|
3
|
-
module Responses
|
|
4
|
-
def self.extended(base)
|
|
5
|
-
base.response 401 do
|
|
6
|
-
key :description, 'not authorized'
|
|
7
|
-
end
|
|
8
|
-
base.response 404 do
|
|
9
|
-
key :description, 'not found'
|
|
10
|
-
end
|
|
11
|
-
base.response 406 do
|
|
12
|
-
key :description, 'not allowed'
|
|
13
|
-
end
|
|
14
|
-
base.response 422 do
|
|
15
|
-
key :description, 'unprocessable entity'
|
|
16
|
-
content "application/json" do
|
|
17
|
-
schema "$ref": "ErrorModel"
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
base.response 500 do
|
|
21
|
-
key :description, 'internal server error'
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
end
|
|
27
|
-
end
|
data/lib/symphonia/attachable.rb
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
module Symphonia
|
|
2
|
-
module Attachable
|
|
3
|
-
|
|
4
|
-
extend ActiveSupport::Concern
|
|
5
|
-
|
|
6
|
-
included do
|
|
7
|
-
has_many :images, -> { order(:position) }, as: :attachable, dependent: :destroy, validate: false, class_name: 'Symphonia::Image'
|
|
8
|
-
has_many :common_files, -> { order(:position) }, as: :attachable, dependent: :destroy, class_name: 'Symphonia::CommonFile'
|
|
9
|
-
|
|
10
|
-
# validate do |container|
|
|
11
|
-
# container.images.each do |img|
|
|
12
|
-
# next if img.valid?
|
|
13
|
-
# img.errors.full_messages.each do |msg|
|
|
14
|
-
# errors.add(:base, "#{img.name}: #{msg}")
|
|
15
|
-
# end
|
|
16
|
-
# end
|
|
17
|
-
# end
|
|
18
|
-
|
|
19
|
-
def image_attachments=(form_images=[])
|
|
20
|
-
form_images.each do |attribute|
|
|
21
|
-
self.images.build(attachment: attribute)
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def file_attachments=(form_files=[])
|
|
26
|
-
form_files.each do |attribute|
|
|
27
|
-
self.common_files.build(attachment: attribute)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
end
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
describe Symphonia::Attachment do
|
|
2
|
-
|
|
3
|
-
context 'files' do
|
|
4
|
-
let(:file) { FactoryBot.create(:file) }
|
|
5
|
-
it '#create' do
|
|
6
|
-
expect { file }.to change(described_class, :count).by 1
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
it 'just create common file' do
|
|
10
|
-
f = nil
|
|
11
|
-
expect { f = FactoryBot.create(:file, attachable: nil) }.to change(described_class, :count).by 1
|
|
12
|
-
expect(f.attachable).to be_nil
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
context 'images' do
|
|
17
|
-
let(:image) { FactoryBot.create(:image) }
|
|
18
|
-
it '#create', pending: "When `identify` missing" do
|
|
19
|
-
expect { image }.to change(described_class, :count).by 1
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
describe Symphonia::AttachmentsController, logged: true do
|
|
2
|
-
|
|
3
|
-
let!(:file) { FactoryBot.create(:file) }
|
|
4
|
-
let(:images) { FactoryBot.create_list(:image, 3, attachable_id: nil, attachable_type: nil) }
|
|
5
|
-
|
|
6
|
-
it '#show' do
|
|
7
|
-
get symphonia.attachment_path(file)
|
|
8
|
-
expect(response.body).to match file.attachment.url(:original)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
it '#destroy' do
|
|
12
|
-
expect{ delete(symphonia.attachment_path(file)) }.to change(Symphonia::Attachment, :count).by -1
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it '#reorder', pending: "When `identify` missing" do
|
|
16
|
-
expect { images }.to change(Symphonia::Image, :count).by 3
|
|
17
|
-
patch symphonia.reorder_attachment_path images.last, 1
|
|
18
|
-
expect(response).to have_http_status :success
|
|
19
|
-
imgs = Symphonia::Image.order(:position).to_a
|
|
20
|
-
expect(imgs.first.id).to be > imgs.last.id
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
end
|