summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormguetlein <martin.guetlein@gmail.com>2012-07-04 16:52:08 +0200
committermguetlein <martin.guetlein@gmail.com>2012-07-04 16:52:08 +0200
commit31fc01263fddab5faf0b307d61a8c4f7f8c6105b (patch)
tree17ef056692146bcfeea68dfc02b8bd8a103473a8
parentbbbd2bc47855f6c42f858031a3160e60c6bb6bdd (diff)
fix last commit
-rw-r--r--lib/overwrite.rb46
1 files changed, 38 insertions, 8 deletions
diff --git a/lib/overwrite.rb b/lib/overwrite.rb
index 7154c65..76f8fa5 100644
--- a/lib/overwrite.rb
+++ b/lib/overwrite.rb
@@ -12,15 +12,45 @@ before {
}
-class Ohm::Model
- def self.find(p)
- if (p!=nil)
- p.delete(:captures)
- p.delete(:splat)
+module Lib
+ module OhmUtil
+
+ def self.check_params(model, params)
+ prop_names = model.attributes.collect{|p| p.to_s}
+ params.keys.each do |k|
+ key = k.to_s
+ if (key == "subjectid" || key == "media" || key == "captures" || key == "splat")
+ params.delete(k)
+ else
+ unless prop_names.include?(key)
+ key = key.from_rdf_format
+ unless prop_names.include?(key)
+ key = key+"_uri"
+ unless prop_names.include?(key)
+ key = key+"s"
+ unless prop_names.include?(key)
+ raise OpenTox::BadRequestError.new "no attribute found: '"+k.to_s+"'"
+ end
+ end
+ end
+ end
+ params[key.to_sym] = params.delete(k)
+ end
+ end
+ params
end
- super p
- end
-end
+
+ def self.find(model, filter_params)
+ params = check_params(model,filter_params)
+ if (params.size==0)
+ model.all
+ else
+ model.find(params)
+ end
+ end
+
+ end
+end
# Error handling