Add antenna elements limit
This commit is contained in:
parent
db6d1f5c75
commit
e336542063
7 changed files with 50 additions and 0 deletions
|
@ -21,6 +21,8 @@ class Api::V1::Antennas::KeywordsController < Api::BaseController
|
|||
new_keywords << keyword
|
||||
end
|
||||
|
||||
raise Mastodon::ValidationError, I18n.t('antennas.errors.limit.keywords') if new_keywords.size > Antenna::KEYWORDS_PER_ANTENNA_LIMIT
|
||||
|
||||
@antenna.update!(keywords: new_keywords, any_keywords: new_keywords.empty?)
|
||||
|
||||
render_empty
|
||||
|
|
|
@ -30,6 +30,10 @@ class Antenna < ApplicationRecord
|
|||
include Expireable
|
||||
|
||||
LIMIT = 30
|
||||
DOMAINS_PER_ANTENNA_LIMIT = 20
|
||||
ACCOUNTS_PER_ANTENNA_LIMIT = 100
|
||||
TAGS_PER_ANTENNA_LIMIT = 50
|
||||
KEYWORDS_PER_ANTENNA_LIMIT = 100
|
||||
|
||||
has_many :antenna_domains, inverse_of: :antenna, dependent: :destroy
|
||||
has_many :antenna_tags, inverse_of: :antenna, dependent: :destroy
|
||||
|
|
|
@ -14,4 +14,17 @@
|
|||
class AntennaAccount < ApplicationRecord
|
||||
belongs_to :antenna
|
||||
belongs_to :account
|
||||
|
||||
validate :duplicate_account
|
||||
validate :limit_per_antenna
|
||||
|
||||
private
|
||||
|
||||
def duplicate_account
|
||||
raise Mastodon::ValidationError, I18n.t('antennas.errors.duplicate_account') if AntennaAccount.exists?(antenna_id: antenna_id, account_id: account_id, exclude: exclude)
|
||||
end
|
||||
|
||||
def limit_per_antenna
|
||||
raise Mastodon::ValidationError, I18n.t('antennas.errors.limit.accounts') if AntennaAccount.where(antenna_id: antenna_id).count >= Antenna::ACCOUNTS_PER_ANTENNA_LIMIT
|
||||
end
|
||||
end
|
||||
|
|
|
@ -15,8 +15,15 @@ class AntennaDomain < ApplicationRecord
|
|||
belongs_to :antenna
|
||||
|
||||
validate :duplicate_domain
|
||||
validate :limit_per_antenna
|
||||
|
||||
private
|
||||
|
||||
def duplicate_domain
|
||||
raise Mastodon::ValidationError, I18n.t('antennas.errors.duplicate_domain') if AntennaDomain.exists?(antenna_id: antenna_id, name: name, exclude: exclude)
|
||||
end
|
||||
|
||||
def limit_per_antenna
|
||||
raise Mastodon::ValidationError, I18n.t('antennas.errors.limit.domains') if AntennaDomain.where(antenna_id: antenna_id).count >= Antenna::DOMAINS_PER_ANTENNA_LIMIT
|
||||
end
|
||||
end
|
||||
|
|
|
@ -14,4 +14,17 @@
|
|||
class AntennaTag < ApplicationRecord
|
||||
belongs_to :antenna
|
||||
belongs_to :tag
|
||||
|
||||
validate :duplicate_tag
|
||||
validate :limit_per_antenna
|
||||
|
||||
private
|
||||
|
||||
def duplicate_tag
|
||||
raise Mastodon::ValidationError, I18n.t('antennas.errors.duplicate_tag') if AntennaTag.exists?(antenna_id: antenna_id, tag_id: tag_id, exclude: exclude)
|
||||
end
|
||||
|
||||
def limit_per_antenna
|
||||
raise Mastodon::ValidationError, I18n.t('antennas.errors.limit.tags') if AntennaTag.where(antenna_id: antenna_id).count >= Antenna::TAGS_PER_ANTENNA_LIMIT
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1028,6 +1028,12 @@ en:
|
|||
domain: Domains
|
||||
keyword: Keywords
|
||||
tag: Tags
|
||||
errors:
|
||||
limit:
|
||||
accounts: 登録できるアカウント数の上限に達しています
|
||||
domains: 登録できるドメイン数の上限に達しています
|
||||
keywords: 登録できるキーワード数の上限に達しています
|
||||
tags: 登録できるタグ数の上限に達しています
|
||||
edit:
|
||||
accounts_hint: \@askyq or @askyq@example.com
|
||||
accounts_raw: Account list
|
||||
|
|
|
@ -1027,6 +1027,11 @@ ja:
|
|||
duplicate_keyword: すでに同じキーワードが登録されています
|
||||
empty_contexts: 絞り込み条件が1つも指定されていないため無効です(除外条件はカウントされません)
|
||||
invalid_list_owner: これはあなたのリストではありません
|
||||
limit:
|
||||
accounts: 登録できるアカウント数の上限に達しています
|
||||
domains: 登録できるドメイン数の上限に達しています
|
||||
keywords: 登録できるキーワード数の上限に達しています
|
||||
tags: 登録できるタグ数の上限に達しています
|
||||
over_limit: 所持できるアンテナ数 %{limit}を超えています
|
||||
over_stl_limit: 所持できるSTLモード付きアンテナ数 (ホーム/リストそれぞれにつき%{limit}) を超えています
|
||||
remove_list_with_antenna: アンテナが関連付けられているリストは削除できません
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue