mirror of
https://github.com/neocities/neocities.git
synced 2025-04-24 17:22:35 +02:00
tests for tagging, eliminate dupes, script to unify tags
This commit is contained in:
parent
5cb988b3e7
commit
f5814226a6
3 changed files with 68 additions and 1 deletions
45
Rakefile
45
Rakefile
|
@ -123,4 +123,49 @@ task :primenewstriperunonlyonce => [:environment] do
|
|||
site.plan_type = 'supporter'
|
||||
site.save_changes validate: false
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Clean tags'
|
||||
task :cleantags => [:environment] do
|
||||
|
||||
Site.select(:id).all.each do |site|
|
||||
site.tags.each do |tag|
|
||||
if tag.name == ''
|
||||
site.remove_tag tag
|
||||
end
|
||||
end
|
||||
|
||||
site.reload
|
||||
|
||||
if site.tags.length > 5
|
||||
site.tags.slice(5, site.tags.length).each {|tag| site.remove_tag tag}
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Tag.where(name: '').delete
|
||||
|
||||
Tag.all.each do |tag|
|
||||
if tag.name.length > Tag::NAME_LENGTH_MAX
|
||||
tag.sites.each { |site| tag.remove_site site }
|
||||
tag.delete
|
||||
end
|
||||
|
||||
tag.update name: tag.name.downcase.strip
|
||||
end
|
||||
|
||||
Tag.all.each do |tag|
|
||||
begin
|
||||
tag.reload
|
||||
rescue Sequel::Error => e
|
||||
next if e.message =~ /Record not found/
|
||||
end
|
||||
|
||||
matching_tags = Tag.exclude(id: tag.id).where(name: tag.name).all
|
||||
|
||||
matching_tags.each do |matching_tag|
|
||||
DB[:sites_tags].where(tag_id: matching_tag.id).update(tag_id: tag.id)
|
||||
matching_tag.delete
|
||||
end
|
||||
end
|
||||
end
|
|
@ -6,10 +6,13 @@ class Tag < Sequel::Model
|
|||
def before_create
|
||||
super
|
||||
values[:name].downcase!
|
||||
values[:name].strip!
|
||||
end
|
||||
|
||||
def self.create_unless_exists(name)
|
||||
dataset.filter(name: name.downcase).first || create(name: name)
|
||||
name = name.downcase.strip
|
||||
return nil if name == '' || name.nil?
|
||||
dataset.filter(name: name).first || create(name: name)
|
||||
end
|
||||
|
||||
def self.suggestions(name, limit=3)
|
||||
|
|
|
@ -9,5 +9,24 @@ describe Tag do
|
|||
Tag.create_unless_exists tag_name.upcase
|
||||
Tag.filter(name: tag_name).count.must_equal 1
|
||||
end
|
||||
|
||||
it 'prohibits junk tags' do
|
||||
Tag.where(name: '').delete
|
||||
tag = Tag.create_unless_exists ''
|
||||
Tag.where(name: '').count.must_equal 0
|
||||
end
|
||||
|
||||
it 'strips tags' do
|
||||
name = SecureRandom.hex(4)+' '
|
||||
Tag.create_unless_exists name
|
||||
|
||||
Tag[name: name.strip].wont_be_nil
|
||||
end
|
||||
|
||||
it 'does not duplicate' do
|
||||
name = SecureRandom.hex(4).upcase
|
||||
2.times { Tag.create_unless_exists name }
|
||||
Tag.where(name: name.downcase).count.must_equal 1
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Reference in a new issue