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!