Merge from docusealco/wip
This commit is contained in:
@@ -0,0 +1,58 @@
|
|||||||
|
---
|
||||||
|
:position: before
|
||||||
|
:position_in_additional_file_patterns: before
|
||||||
|
:position_in_class: before
|
||||||
|
:position_in_factory: before
|
||||||
|
:position_in_fixture: before
|
||||||
|
:position_in_routes: before
|
||||||
|
:position_in_serializer: before
|
||||||
|
:position_in_test: before
|
||||||
|
:classified_sort: true
|
||||||
|
:exclude_controllers: true
|
||||||
|
:exclude_factories: true
|
||||||
|
:exclude_fixtures: false
|
||||||
|
:exclude_helpers: true
|
||||||
|
:exclude_scaffolds: true
|
||||||
|
:exclude_serializers: false
|
||||||
|
:exclude_sti_subclasses: false
|
||||||
|
:exclude_tests: false
|
||||||
|
:force: false
|
||||||
|
:format_markdown: false
|
||||||
|
:format_rdoc: false
|
||||||
|
:format_yard: false
|
||||||
|
:frozen: false
|
||||||
|
:ignore_model_sub_dir: false
|
||||||
|
:ignore_unknown_models: false
|
||||||
|
:include_version: false
|
||||||
|
:show_check_constraints: false
|
||||||
|
:show_complete_foreign_keys: false
|
||||||
|
:show_foreign_keys: true
|
||||||
|
:show_indexes: true
|
||||||
|
:simple_indexes: false
|
||||||
|
:sort: false
|
||||||
|
:timestamp: false
|
||||||
|
:trace: false
|
||||||
|
:with_comment: true
|
||||||
|
:with_column_comments: true
|
||||||
|
:with_table_comments: true
|
||||||
|
:active_admin: false
|
||||||
|
:command:
|
||||||
|
:debug: false
|
||||||
|
:hide_default_column_types: ''
|
||||||
|
:hide_limit_column_types: ''
|
||||||
|
:ignore_columns:
|
||||||
|
:ignore_routes:
|
||||||
|
:models: true
|
||||||
|
:routes: false
|
||||||
|
:skip_on_db_migrate: false
|
||||||
|
:target_action: :do_annotations
|
||||||
|
:wrapper:
|
||||||
|
:wrapper_close:
|
||||||
|
:wrapper_open:
|
||||||
|
:classes_default_to_s: []
|
||||||
|
:additional_file_patterns: []
|
||||||
|
:model_dir:
|
||||||
|
- app/models
|
||||||
|
:require: []
|
||||||
|
:root_dir:
|
||||||
|
- ''
|
||||||
@@ -77,6 +77,33 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
./node_modules/eslint/bin/eslint.js "app/javascript/**/*.js"
|
./node_modules/eslint/bin/eslint.js "app/javascript/**/*.js"
|
||||||
|
|
||||||
|
brakeman:
|
||||||
|
name: Brakeman
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install Ruby
|
||||||
|
uses: ruby/setup-ruby@v1
|
||||||
|
with:
|
||||||
|
ruby-version: 3.4.1
|
||||||
|
- name: Cache gems
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: vendor/bundle
|
||||||
|
key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-gem-
|
||||||
|
- name: Install gems
|
||||||
|
run: |
|
||||||
|
gem install bundler
|
||||||
|
bundle config path vendor/bundle
|
||||||
|
bundle install --jobs 4 --retry 4
|
||||||
|
yarn install
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install libvips
|
||||||
|
- name: Run Brakeman
|
||||||
|
run: bundle exec brakeman -q --exit-on-warn
|
||||||
|
|
||||||
rspec:
|
rspec:
|
||||||
name: RSpec
|
name: RSpec
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|||||||
@@ -46,7 +46,6 @@ gem 'twitter_cldr', require: false
|
|||||||
gem 'tzinfo-data'
|
gem 'tzinfo-data'
|
||||||
|
|
||||||
group :development, :test do
|
group :development, :test do
|
||||||
gem 'annotate'
|
|
||||||
gem 'better_html'
|
gem 'better_html'
|
||||||
gem 'bullet'
|
gem 'bullet'
|
||||||
gem 'debug'
|
gem 'debug'
|
||||||
@@ -63,6 +62,9 @@ group :development, :test do
|
|||||||
end
|
end
|
||||||
|
|
||||||
group :development do
|
group :development do
|
||||||
|
gem 'annotaterb'
|
||||||
|
gem 'brakeman', require: false
|
||||||
|
gem 'foreman', require: false
|
||||||
gem 'letter_opener_web'
|
gem 'letter_opener_web'
|
||||||
gem 'web-console'
|
gem 'web-console'
|
||||||
end
|
end
|
||||||
|
|||||||
+7
-4
@@ -74,9 +74,7 @@ GEM
|
|||||||
uri (>= 0.13.1)
|
uri (>= 0.13.1)
|
||||||
addressable (2.8.7)
|
addressable (2.8.7)
|
||||||
public_suffix (>= 2.0.2, < 7.0)
|
public_suffix (>= 2.0.2, < 7.0)
|
||||||
annotate (2.6.5)
|
annotaterb (4.14.0)
|
||||||
activerecord (>= 2.3.0)
|
|
||||||
rake (>= 0.8.7)
|
|
||||||
arabic-letter-connector (0.1.1)
|
arabic-letter-connector (0.1.1)
|
||||||
ast (2.4.2)
|
ast (2.4.2)
|
||||||
aws-eventstream (1.3.0)
|
aws-eventstream (1.3.0)
|
||||||
@@ -120,6 +118,8 @@ GEM
|
|||||||
bindex (0.8.1)
|
bindex (0.8.1)
|
||||||
bootsnap (1.18.4)
|
bootsnap (1.18.4)
|
||||||
msgpack (~> 1.2)
|
msgpack (~> 1.2)
|
||||||
|
brakeman (7.0.0)
|
||||||
|
racc
|
||||||
builder (3.3.0)
|
builder (3.3.0)
|
||||||
bullet (8.0.0)
|
bullet (8.0.0)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
@@ -229,6 +229,7 @@ GEM
|
|||||||
ffi (1.17.1-arm64-darwin)
|
ffi (1.17.1-arm64-darwin)
|
||||||
ffi (1.17.1-x86_64-linux-gnu)
|
ffi (1.17.1-x86_64-linux-gnu)
|
||||||
ffi (1.17.1-x86_64-linux-musl)
|
ffi (1.17.1-x86_64-linux-musl)
|
||||||
|
foreman (0.88.1)
|
||||||
geom2d (0.4.1)
|
geom2d (0.4.1)
|
||||||
globalid (1.2.1)
|
globalid (1.2.1)
|
||||||
activesupport (>= 6.1)
|
activesupport (>= 6.1)
|
||||||
@@ -588,13 +589,14 @@ PLATFORMS
|
|||||||
x86_64-linux-musl
|
x86_64-linux-musl
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
annotate
|
annotaterb
|
||||||
arabic-letter-connector
|
arabic-letter-connector
|
||||||
aws-sdk-s3
|
aws-sdk-s3
|
||||||
aws-sdk-secretsmanager
|
aws-sdk-secretsmanager
|
||||||
azure-storage-blob
|
azure-storage-blob
|
||||||
better_html
|
better_html
|
||||||
bootsnap
|
bootsnap
|
||||||
|
brakeman
|
||||||
bullet
|
bullet
|
||||||
cancancan
|
cancancan
|
||||||
capybara
|
capybara
|
||||||
@@ -610,6 +612,7 @@ DEPENDENCIES
|
|||||||
faker
|
faker
|
||||||
faraday
|
faraday
|
||||||
faraday-follow_redirects
|
faraday-follow_redirects
|
||||||
|
foreman
|
||||||
google-cloud-storage
|
google-cloud-storage
|
||||||
hexapdf
|
hexapdf
|
||||||
image_processing
|
image_processing
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ class AccountConfigsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def account_config_params
|
def account_config_params
|
||||||
params.required(:account_config).permit!.tap do |attrs|
|
params.required(:account_config).permit(:key, :value, { value: {} }, { value: [] }).tap do |attrs|
|
||||||
attrs[:value] = attrs[:value] == '1' if attrs[:value].in?(%w[1 0])
|
attrs[:value] = attrs[:value] == '1' if attrs[:value].in?(%w[1 0])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ class NotificationsSettingsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def email_config_params
|
def email_config_params
|
||||||
params.require(:account_config).permit!.tap do |attrs|
|
params.require(:account_config).permit(:key, :value, { value: {} }, { value: [] }).tap do |attrs|
|
||||||
attrs[:key] = nil unless attrs[:key].in?([AccountConfig::BCC_EMAILS, AccountConfig::SUBMITTER_REMINDERS])
|
attrs[:key] = nil unless attrs[:key].in?([AccountConfig::BCC_EMAILS, AccountConfig::SUBMITTER_REMINDERS])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class PersonalizationSettingsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def account_config_params
|
def account_config_params
|
||||||
attrs = params.require(:account_config).permit!
|
attrs = params.require(:account_config).permit(:key, :value, { value: {} }, { value: [] })
|
||||||
|
|
||||||
return attrs if attrs[:value].is_a?(String)
|
return attrs if attrs[:value].is_a?(String)
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class SubmissionsPreviewController < ApplicationController
|
|||||||
|
|
||||||
@submission ||= Submission.find_by!(slug: params[:slug])
|
@submission ||= Submission.find_by!(slug: params[:slug])
|
||||||
|
|
||||||
raise ActionController::RoutingError if @submission.account.archived_at?
|
raise ActionController::RoutingError, I18n.t('not_found') if @submission.account.archived_at?
|
||||||
|
|
||||||
if !@submission.submitters.all?(&:completed_at?) && !signature_valid &&
|
if !@submission.submitters.all?(&:completed_at?) && !signature_valid &&
|
||||||
(!current_user || !current_ability.can?(:read, @submission))
|
(!current_user || !current_ability.can?(:read, @submission))
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class UserConfigsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def user_config_params
|
def user_config_params
|
||||||
params.required(:user_config).permit!.tap do |attrs|
|
params.required(:user_config).permit(:key, :value, { value: {} }, { value: [] }).tap do |attrs|
|
||||||
attrs[:value] = attrs[:value] == '1' if attrs[:value].in?(%w[1 0])
|
attrs[:value] = attrs[:value] == '1' if attrs[:value].in?(%w[1 0])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -45,17 +45,16 @@ class UsersController < ApplicationController
|
|||||||
return redirect_to settings_users_path, notice: I18n.t('unable_to_update_user') if Docuseal.demo?
|
return redirect_to settings_users_path, notice: I18n.t('unable_to_update_user') if Docuseal.demo?
|
||||||
|
|
||||||
attrs = user_params.compact_blank.merge(user_params.slice(:archived_at))
|
attrs = user_params.compact_blank.merge(user_params.slice(:archived_at))
|
||||||
attrs.delete(:role) if !role_valid?(attrs[:role]) || current_user == @user
|
|
||||||
|
|
||||||
if params.dig(:user, :account_id).present?
|
if params.dig(:user, :account_id).present?
|
||||||
account = Account.accessible_by(current_ability).find(params[:user][:account_id])
|
account = Account.accessible_by(current_ability).find(params.dig(:user, :account_id))
|
||||||
|
|
||||||
authorize!(:manage, account)
|
authorize!(:manage, account)
|
||||||
|
|
||||||
@user.account = account
|
@user.account = account
|
||||||
end
|
end
|
||||||
|
|
||||||
if @user.update(attrs)
|
if @user.update(attrs.except(current_user == @user ? :role : nil))
|
||||||
redirect_back fallback_location: settings_users_path, notice: I18n.t('user_has_been_updated')
|
redirect_back fallback_location: settings_users_path, notice: I18n.t('user_has_been_updated')
|
||||||
else
|
else
|
||||||
render turbo_stream: turbo_stream.replace(:modal, template: 'users/edit'), status: :unprocessable_entity
|
render turbo_stream: turbo_stream.replace(:modal, template: 'users/edit'), status: :unprocessable_entity
|
||||||
@@ -84,8 +83,11 @@ class UsersController < ApplicationController
|
|||||||
|
|
||||||
def user_params
|
def user_params
|
||||||
if params.key?(:user)
|
if params.key?(:user)
|
||||||
params.require(:user).permit(:email, :first_name, :last_name, :password,
|
permitted_params = %i[email first_name last_name password archived_at]
|
||||||
:role, :archived_at, :account_id)
|
|
||||||
|
permitted_params << :role if role_valid?(params.dig(:user, :role))
|
||||||
|
|
||||||
|
params.require(:user).permit(permitted_params)
|
||||||
else
|
else
|
||||||
{}
|
{}
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ class Submitter < ApplicationRecord
|
|||||||
has_many_attached :attachments
|
has_many_attached :attachments
|
||||||
has_many_attached :preview_documents
|
has_many_attached :preview_documents
|
||||||
has_many :template_accesses, through: :template
|
has_many :template_accesses, through: :template
|
||||||
|
has_many :email_events, as: :emailable, dependent: (Docuseal.multitenant? ? nil : :destroy)
|
||||||
|
|
||||||
has_many :document_generation_events, dependent: :destroy
|
has_many :document_generation_events, dependent: :destroy
|
||||||
has_many :submission_events, dependent: :destroy
|
has_many :submission_events, dependent: :destroy
|
||||||
@@ -63,6 +64,8 @@ class Submitter < ApplicationRecord
|
|||||||
|
|
||||||
scope :completed, -> { where.not(completed_at: nil) }
|
scope :completed, -> { where.not(completed_at: nil) }
|
||||||
|
|
||||||
|
after_destroy :anonymize_email_events, if: -> { Docuseal.multitenant? }
|
||||||
|
|
||||||
def status
|
def status
|
||||||
if declined_at?
|
if declined_at?
|
||||||
'declined'
|
'declined'
|
||||||
@@ -108,4 +111,12 @@ class Submitter < ApplicationRecord
|
|||||||
fields.any? { |f| f['submitter_uuid'] == uuid && signature_field_types.include?(f['type']) }
|
fields.any? { |f| f['submitter_uuid'] == uuid && signature_field_types.include?(f['type']) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def anonymize_email_events
|
||||||
|
email_events.each do |event|
|
||||||
|
event.update!(email: Digest::MD5.base64digest(event.email))
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"ignored_warnings": [
|
||||||
|
{
|
||||||
|
"fingerprint": "25f4ce5fee1e1180fa1919dc4ee78db3ab3457a956e4679503aa745771a43836",
|
||||||
|
"note": "Permitted parameters are necessary for creating submitters via API"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class CreateConsole1984Tables < ActiveRecord::Migration[7.0]
|
||||||
|
def change
|
||||||
|
create_table :console1984_sessions do |t|
|
||||||
|
t.text :reason
|
||||||
|
t.references :user, null: false, index: false
|
||||||
|
t.timestamps
|
||||||
|
|
||||||
|
t.index :created_at
|
||||||
|
t.index %i[user_id created_at]
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table :console1984_users do |t|
|
||||||
|
t.string :username, null: false
|
||||||
|
t.timestamps
|
||||||
|
|
||||||
|
t.index [:username]
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table :console1984_commands do |t|
|
||||||
|
t.text :statements
|
||||||
|
t.references :sensitive_access
|
||||||
|
t.references :session, null: false, index: false
|
||||||
|
t.timestamps
|
||||||
|
|
||||||
|
t.index %i[session_id created_at sensitive_access_id], name: 'on_session_and_sensitive_chronologically'
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table :console1984_sensitive_accesses do |t|
|
||||||
|
t.text :justification
|
||||||
|
t.references :session, null: false
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
+35
-1
@@ -10,7 +10,7 @@
|
|||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema[7.2].define(version: 2024_12_07_172237) do
|
ActiveRecord::Schema[8.0].define(version: 2025_02_25_111255) do
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
|
||||||
@@ -112,6 +112,40 @@ ActiveRecord::Schema[7.2].define(version: 2024_12_07_172237) do
|
|||||||
t.index ["submitter_id"], name: "index_completed_submitters_on_submitter_id", unique: true
|
t.index ["submitter_id"], name: "index_completed_submitters_on_submitter_id", unique: true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "console1984_commands", force: :cascade do |t|
|
||||||
|
t.text "statements"
|
||||||
|
t.bigint "sensitive_access_id"
|
||||||
|
t.bigint "session_id", null: false
|
||||||
|
t.datetime "created_at", null: false
|
||||||
|
t.datetime "updated_at", null: false
|
||||||
|
t.index ["sensitive_access_id"], name: "index_console1984_commands_on_sensitive_access_id"
|
||||||
|
t.index ["session_id", "created_at", "sensitive_access_id"], name: "on_session_and_sensitive_chronologically"
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table "console1984_sensitive_accesses", force: :cascade do |t|
|
||||||
|
t.text "justification"
|
||||||
|
t.bigint "session_id", null: false
|
||||||
|
t.datetime "created_at", null: false
|
||||||
|
t.datetime "updated_at", null: false
|
||||||
|
t.index ["session_id"], name: "index_console1984_sensitive_accesses_on_session_id"
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table "console1984_sessions", force: :cascade do |t|
|
||||||
|
t.text "reason"
|
||||||
|
t.bigint "user_id", null: false
|
||||||
|
t.datetime "created_at", null: false
|
||||||
|
t.datetime "updated_at", null: false
|
||||||
|
t.index ["created_at"], name: "index_console1984_sessions_on_created_at"
|
||||||
|
t.index ["user_id", "created_at"], name: "index_console1984_sessions_on_user_id_and_created_at"
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table "console1984_users", force: :cascade do |t|
|
||||||
|
t.string "username", null: false
|
||||||
|
t.datetime "created_at", null: false
|
||||||
|
t.datetime "updated_at", null: false
|
||||||
|
t.index ["username"], name: "index_console1984_users_on_username"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "document_generation_events", force: :cascade do |t|
|
create_table "document_generation_events", force: :cascade do |t|
|
||||||
t.bigint "submitter_id", null: false
|
t.bigint "submitter_id", null: false
|
||||||
t.string "event_name", null: false
|
t.string "event_name", null: false
|
||||||
|
|||||||
@@ -3,10 +3,28 @@
|
|||||||
module SendWebhookRequest
|
module SendWebhookRequest
|
||||||
USER_AGENT = 'DocuSeal.com Webhook'
|
USER_AGENT = 'DocuSeal.com Webhook'
|
||||||
|
|
||||||
|
LOCALHOSTS = %w[0.0.0.0 127.0.0.1 localhost].freeze
|
||||||
|
|
||||||
|
HttpsError = Class.new(StandardError)
|
||||||
|
LocalhostError = Class.new(StandardError)
|
||||||
|
|
||||||
module_function
|
module_function
|
||||||
|
|
||||||
def call(webhook_url, event_type:, data:)
|
def call(webhook_url, event_type:, data:)
|
||||||
Faraday.post(webhook_url.url) do |req|
|
uri = begin
|
||||||
|
URI(webhook_url.url)
|
||||||
|
rescue URI::Error
|
||||||
|
Addressable::URI.parse(webhook_url.url).normalize
|
||||||
|
end
|
||||||
|
|
||||||
|
if Docuseal.multitenant?
|
||||||
|
raise HttpsError, 'Only HTTPS is allowed.' if uri.scheme != 'https' &&
|
||||||
|
!AccountConfig.exists?(key: :allow_http,
|
||||||
|
account_id: webhook_url.account_id)
|
||||||
|
raise LocalhostError, "Can't send to localhost." if uri.host.in?(LOCALHOSTS)
|
||||||
|
end
|
||||||
|
|
||||||
|
Faraday.post(uri) do |req|
|
||||||
req.headers['Content-Type'] = 'application/json'
|
req.headers['Content-Type'] = 'application/json'
|
||||||
req.headers['User-Agent'] = USER_AGENT
|
req.headers['User-Agent'] = USER_AGENT
|
||||||
req.headers.merge!(webhook_url.secret.to_h) if webhook_url.secret.present?
|
req.headers.merge!(webhook_url.secret.to_h) if webhook_url.secret.present?
|
||||||
|
|||||||
@@ -107,6 +107,7 @@ module Submissions
|
|||||||
|
|
||||||
def normalize_email(email)
|
def normalize_email(email)
|
||||||
return if email.blank?
|
return if email.blank?
|
||||||
|
return if email.is_a?(Numeric)
|
||||||
|
|
||||||
return email.downcase if email.to_s.include?(',') ||
|
return email.downcase if email.to_s.include?(',') ||
|
||||||
email.to_s.match?(/\.(?:gob|om|mm|cm|et|mo|nz|za|ie)\z/) ||
|
email.to_s.match?(/\.(?:gob|om|mm|cm|et|mo|nz|za|ie)\z/) ||
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
# This rake task was added by annotate_rb gem.
|
||||||
|
|
||||||
|
# Can set `ANNOTATERB_SKIP_ON_DB_TASKS` to be anything to skip this
|
||||||
|
if Rails.env.development? && ENV['ANNOTATERB_SKIP_ON_DB_TASKS'].nil?
|
||||||
|
require 'annotate_rb'
|
||||||
|
|
||||||
|
AnnotateRb::Core.load_rake_tasks
|
||||||
|
end
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
if Rails.env.development?
|
|
||||||
require 'annotate'
|
|
||||||
|
|
||||||
task set_annotation_options: :environment do
|
|
||||||
Annotate.set_defaults(
|
|
||||||
'active_admin' => 'false',
|
|
||||||
'additional_file_patterns' => [],
|
|
||||||
'routes' => 'false',
|
|
||||||
'models' => 'true',
|
|
||||||
'position_in_routes' => 'before',
|
|
||||||
'position_in_class' => 'before',
|
|
||||||
'position_in_test' => 'before',
|
|
||||||
'position_in_fixture' => 'before',
|
|
||||||
'position_in_factory' => 'before',
|
|
||||||
'position_in_serializer' => 'before',
|
|
||||||
'show_foreign_keys' => 'true',
|
|
||||||
'show_complete_foreign_keys' => 'false',
|
|
||||||
'show_indexes' => 'true',
|
|
||||||
'simple_indexes' => 'false',
|
|
||||||
'model_dir' => 'app/models',
|
|
||||||
'root_dir' => '',
|
|
||||||
'include_version' => 'false',
|
|
||||||
'require' => '',
|
|
||||||
'exclude_tests' => 'true',
|
|
||||||
'exclude_fixtures' => 'true',
|
|
||||||
'exclude_factories' => 'true',
|
|
||||||
'exclude_serializers' => 'false',
|
|
||||||
'exclude_scaffolds' => 'true',
|
|
||||||
'exclude_controllers' => 'true',
|
|
||||||
'exclude_helpers' => 'true',
|
|
||||||
'exclude_sti_subclasses' => 'false',
|
|
||||||
'ignore_model_sub_dir' => 'false',
|
|
||||||
'ignore_columns' => nil,
|
|
||||||
'ignore_routes' => nil,
|
|
||||||
'ignore_unknown_models' => 'false',
|
|
||||||
'hide_limit_column_types' => 'integer,bigint,boolean',
|
|
||||||
'hide_default_column_types' => 'json,jsonb,hstore',
|
|
||||||
'skip_on_db_migrate' => 'false',
|
|
||||||
'format_bare' => 'true',
|
|
||||||
'format_rdoc' => 'false',
|
|
||||||
'format_yard' => 'false',
|
|
||||||
'format_markdown' => 'false',
|
|
||||||
'sort' => 'false',
|
|
||||||
'force' => 'false',
|
|
||||||
'frozen' => 'false',
|
|
||||||
'classified_sort' => 'true',
|
|
||||||
'trace' => 'false',
|
|
||||||
'wrapper_open' => nil,
|
|
||||||
'wrapper_close' => nil,
|
|
||||||
'with_comment' => 'true'
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
Annotate.load_tasks
|
|
||||||
end
|
|
||||||
@@ -101,7 +101,7 @@ module Templates
|
|||||||
|
|
||||||
{
|
{
|
||||||
uuid: SecureRandom.uuid,
|
uuid: SecureRandom.uuid,
|
||||||
required: false,
|
required: field.flags.include?(:required),
|
||||||
preferences: {},
|
preferences: {},
|
||||||
areas:,
|
areas:,
|
||||||
**field_properties
|
**field_properties
|
||||||
|
|||||||
Reference in New Issue
Block a user