# -*- encoding : utf-8 -*- module ClassMethods def empty_trash Card.where(:trash=>true).delete_all User.delete_cardless Card::Revision.delete_cardless Card::Reference.repair_missing_referees Card.delete_trashed_files end def delete_trashed_files #deletes any file not associated with a real card. dir = Wagn.paths['files'].existent.first card_ids = Card.connection.select_all( %{ select id from cards where trash is false } ).map( &:values ).flatten file_ids = Dir.entries( dir )[2..-1].map( &:to_i ) file_ids.each do |file_id| if !card_ids.member?(file_id) raise Card::Error, "Narrowly averted deleting current file" if Card.exists?(file_id) #double check! FileUtils.rm_rf "#{dir}/#{file_id}", :secure => true end end end def delete_tmp_files id=nil dir = Wagn.paths['files'].existent.first + '/tmp' dir += "/#{id}" if id FileUtils.rm_rf dir, :secure=>true rescue Rails.logger.info "failed to remove tmp files" end def merge_list attribs, opts unmerged = [] attribs.each do |row| result = begin merge row['name'], row, opts rescue false end unmerged.push row unless result == true end if unmerged.empty? Rails.logger.info "successfully merged all!" else unmerged_json = JSON.pretty_generate unmerged if output_file = opts[:output_file] File.open output_file, 'w' do |f| f.write unmerged_json end else Rails.logger.info "failed to merge:\n\n#{ unmerged_json }" end end end def merge name, attribs={}, opts={} card = fetch name, :new=>{} if opts[:pristine] && !card.pristine? false else card.attributes = attribs card.save! end end end def debug_type "#{type_code||'no code'}:#{type_id}" end def to_s "#<#{self.class.name}[#{debug_type}]#{self.attributes['name']}>" end def inspect "#<#{self.class.name}" + "##{id}" + "###{object_id}" + #"l#{left_id}r#{right_id}" + "[#{debug_type}]" + "(#{self.name})" + #"#{object_id}" + #(errors.any? ? '*Errors*' : 'noE') + (errors.any? ? "" : '') + #"{#{references_expired==1 ? 'Exp' : "noEx"}:" + "{#{trash&&'trash:'||''}#{new_card? &&'new:'||''}#{frozen? ? 'Fz' : readonly? ? 'RdO' : ''}" + "#{@virtual &&'virtual:'||''}#{@set_mods_loaded&&'I'||'!loaded' }:#{references_expired.inspect}}" + '>' end