| 
									
										
										
										
											2016-11-15 16:56:29 +01:00
										 |  |  | # frozen_string_literal: true | 
					
						
							| 
									
										
										
										
											2017-05-02 09:14:47 +09:00
										 |  |  | # == Schema Information | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # Table name: domain_blocks | 
					
						
							|  |  |  | # | 
					
						
							| 
									
										
										
										
											2017-11-18 00:16:48 +01:00
										 |  |  | #  id           :integer          not null, primary key | 
					
						
							| 
									
										
										
										
											2017-05-02 09:14:47 +09:00
										 |  |  | #  domain       :string           default(""), not null | 
					
						
							|  |  |  | #  created_at   :datetime         not null | 
					
						
							|  |  |  | #  updated_at   :datetime         not null | 
					
						
							|  |  |  | #  severity     :integer          default("silence") | 
					
						
							| 
									
										
										
										
											2017-07-13 03:12:25 +02:00
										 |  |  | #  reject_media :boolean          default(FALSE), not null | 
					
						
							| 
									
										
										
										
											2017-05-02 09:14:47 +09:00
										 |  |  | # | 
					
						
							| 
									
										
										
										
											2016-11-15 16:56:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-09 14:48:43 +02:00
										 |  |  | class DomainBlock < ApplicationRecord | 
					
						
							| 
									
										
										
										
											2017-07-24 22:26:55 +10:00
										 |  |  |   enum severity: [:silence, :suspend, :noop] | 
					
						
							| 
									
										
										
										
											2017-01-23 17:38:38 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-16 12:51:30 +02:00
										 |  |  |   attr_accessor :retroactive | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-09 14:48:43 +02:00
										 |  |  |   validates :domain, presence: true, uniqueness: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-16 13:37:01 -04:00
										 |  |  |   has_many :accounts, foreign_key: :domain, primary_key: :domain | 
					
						
							|  |  |  |   delegate :count, to: :accounts, prefix: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-09 14:48:43 +02:00
										 |  |  |   def self.blocked?(domain) | 
					
						
							| 
									
										
										
										
											2017-02-19 20:25:54 +01:00
										 |  |  |     where(domain: domain, severity: :suspend).exists? | 
					
						
							| 
									
										
										
										
											2016-10-09 14:48:43 +02:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2017-04-25 02:47:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   before_validation :normalize_domain | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   private | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def normalize_domain | 
					
						
							|  |  |  |     self.domain = TagManager.instance.normalize_domain(domain) | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2016-10-09 14:48:43 +02:00
										 |  |  | end |