ontology_version.rb revision 4c1d51e9760c808027ec7f559e80067744c78541
2454dfa32c93c20a8522c6ed42fe057baaac9f9aStephan Boschclass OntologyVersion < ActiveRecord::Base
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen include CodeReferencable
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen include Numbering
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
bdd36cfdba3ff66d25570a9ff568d69e1eb543cfTimo Sirainen include OntologyVersion::Files
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen include OntologyVersion::States
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen include OntologyVersion::Parsing
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen include OntologyVersion::Proving
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen include OntologyVersion::OopsRequests
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen include IRIUrlBuilder::Includeable
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
9522aa5f33cc37fe8ccd0d647cc51dd3ba6a9b55Timo Sirainen include Rails.application.routes.url_helpers
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen include ActionDispatch::Routing::UrlFor
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen numbering_parent_column 'ontology_id'
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen belongs_to :user
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen belongs_to :ontology, :counter_cache => :versions_count
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen belongs_to :commit
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen # Provers that can be used for proving goals in this ontology.
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen has_and_belongs_to_many :provers
f158d9a303bb15a6848ca276c9391c7ca52e452bTimo Sirainen
f158d9a303bb15a6848ca276c9391c7ca52e452bTimo Sirainen# before_validation :set_checksum
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen# validate :raw_file_size_maximum
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen# validates_presence_of :basepath
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen scope :latest, order('id DESC')
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen scope :done, state('done')
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen scope :failed, state('failed')
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen delegate :repository, :theorems, to: :ontology
b44033e45e9f48f8a6e1ac5905234fec5de6d6ccAki Tuomi
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen acts_as_tree
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen # updated_at of the latest version
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen def self.last_updated_at
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen latest.first.try(:updated_at)
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen end
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen def to_param
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen self.number
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen end
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen def to_s
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen "#{ontology.name} (version #{number})"
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen end
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen
0dffa25d211be541ee3c953b23566a1a990789dfTimo Sirainen # Public URL to this version
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen #
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen # TODO: This returns a path without the commit id and filename for now,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen # because the FilesController or the routes were not supporting it.
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen def url(params={})
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen #Rails.application.routes.url_helpers.repository_ref_path(repository, commit_oid, ontology.path, params.reverse_merge(host: Ontohub::Application.config.fqdn, port: Ontohub::Application.config.port, only_path: false))
11ee3b40320a31669bd717fecbe1e332dad4fd84Timo Sirainen url_for [repository, ontology, self]
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen end
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen def default_url_options
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen {host: Ontohub::Application.config.fqdn,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen port: Ontohub::Application.config.port}
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen end
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
cf9d67e4a9bfee31cf3be05244555d51a3d1b9feTimo Sirainen def path
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen "#{basepath}#{file_extension}"
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen end
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
093b42b11c1236a687d3da564b26a324e2189ae6Timo Sirainen def file_in_repository
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainen ontology.repository.get_file(path, commit_oid)
a5ddfd7a8b473f73135b93d5e081e470a87f0f7eTimo Sirainen end
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen def locid
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen "/ref/#{number}#{ontology.locid}"
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen end
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen alias_method :versioned_locid, :locid
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen protected
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen def raw_file_size_maximum
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen if raw_file.size > 10.megabytes.to_i
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen errors.add :raw_file, 'The maximum file size is 10M.'
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen end
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen end
b44033e45e9f48f8a6e1ac5905234fec5de6d6ccAki Tuomi
b44033e45e9f48f8a6e1ac5905234fec5de6d6ccAki Tuomi def refresh_checksum!
b44033e45e9f48f8a6e1ac5905234fec5de6d6ccAki Tuomi self.checksum = Digest::SHA1.file(raw_path!).hexdigest
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen save! if checksum_changed?
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen end
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainenend
8b16d3b00f051401c97568697ccdbba48663759aTimo Sirainen