app/controllers/concepts/versions_controller.rb in iqvoc-4.1.3 vs app/controllers/concepts/versions_controller.rb in iqvoc-4.2.0

- old
+ new

@@ -18,14 +18,20 @@ class Concepts::VersionsController < ApplicationController include Iqvoc::RDFSync::Helper def merge - current_concept = Iqvoc::Concept.base_class.by_origin(params[:origin]).published.last - new_version = Iqvoc::Concept.base_class.by_origin(params[:origin]).unpublished.last - raise ActiveRecord::RecordNotFound.new("Couldn't find unpublished concept with origin '#{params[:origin]}'") unless new_version + concept_scope = Iqvoc::Concept.base_class.by_origin(params[:origin]) + current_concept = concept_scope.published.last + new_version = concept_scope.unpublished.last + + unless new_version + raise ActiveRecord::RecordNotFound, + "Can't find draft concept with origin '#{params[:origin]}'" + end + authorize! :merge, new_version ActiveRecord::Base.transaction do if current_concept.blank? || current_concept.destroy new_version.rdf_updated_at = nil @@ -51,14 +57,17 @@ end end end def branch - current_concept = Iqvoc::Concept.base_class.by_origin(params[:origin]).published.last - raise ActiveRecord::RecordNotFound.new("Couldn't find published concept with origin '#{params[:origin]}'") unless current_concept - raise "There already is an unpublished version for concept '#{params[:origin]}'" if Iqvoc::Concept.base_class.by_origin(params[:origin]).unpublished.last + concept_scope = Iqvoc::Concept.base_class.by_origin(params[:origin]) + current_concept = concept_scope.published.last! + if draft_concept = concept_scope.unpublished.last + raise "There already is an unpublished version for concept '#{draft_concept.origin}'" + end + authorize! :branch, current_concept new_version = nil ActiveRecord::Base.transaction do new_version = current_concept.branch(current_user) @@ -67,28 +76,38 @@ flash[:success] = t("txt.controllers.versioning.branched") redirect_to edit_concept_path(:published => 0, :id => new_version) end def lock - new_version = Iqvoc::Concept.base_class.by_origin(params[:origin]).unpublished.last - raise ActiveRecord::RecordNotFound.new("Couldn't find unpublished concept with origin '#{params[:origin]}'") unless new_version - raise "Concept with origin '#{params[:origin]}' has already been locked." if new_version.locked? + new_version = Iqvoc::Concept.base_class. + by_origin(params[:origin]). + unpublished. + last! + if new_version.locked? + raise "Concept with origin '#{new_version.origin}' is already locked." + end + authorize! :lock, new_version new_version.lock_by_user(current_user.id) new_version.save :validate => false flash[:success] = t("txt.controllers.versioning.locked") redirect_to edit_concept_path(:published => 0, :id => new_version) end def unlock - new_version = Iqvoc::Concept.base_class.by_origin(params[:origin]).unpublished.last - raise ActiveRecord::RecordNotFound.new("Couldn't find unpublished concept with origin '#{params[:origin]}'") unless new_version - raise "Concept with origin '#{params[:origin]}' wasn't locked." unless new_version.locked? + new_version = Iqvoc::Concept.base_class. + by_origin(params[:origin]). + unpublished. + last! + unless new_version.locked? + raise "Concept with origin '#{new_version.origin}' is not locked." + end + authorize! :unlock, new_version new_version.unlock new_version.save :validate => false @@ -96,12 +115,14 @@ redirect_to concept_path(:published => 0, :id => new_version) end def consistency_check - concept = Iqvoc::Concept.base_class.by_origin(params[:origin]).unpublished.last - raise ActiveRecord::RecordNotFound unless concept + concept = Iqvoc::Concept.base_class. + by_origin(params[:origin]). + unpublished. + last! authorize! :check_consistency, concept if concept.valid_with_full_validation? flash[:success] = t("txt.controllers.versioning.consistency_check_success") @@ -111,11 +132,13 @@ redirect_to edit_concept_path(:published => 0, :id => concept, :full_consistency_check => "1") end end def to_review - concept = Iqvoc::Concept.base_class.by_origin(params[:origin]).unpublished.last - raise ActiveRecord::RecordNotFound unless concept + concept = Iqvoc::Concept.base_class. + by_origin(params[:origin]). + unpublished. + last! authorize! :send_to_review, concept concept.to_review concept.save!