abstracted 0.4.4 → 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2d62ef34e6eda7534a240438d48bcec809a1224c
4
- data.tar.gz: ef8bce56fb10fb85cea1d6fe9306b24bb61ed455
3
+ metadata.gz: cf6732f8f5b0d977b55623928fd4c597835d84b2
4
+ data.tar.gz: cb180722ccb44e23296b3f67eb0fc8e6f7d6871a
5
5
  SHA512:
6
- metadata.gz: 10fc887a95b21ed69df1917c2b4c0069629c6338aac5c9139f661073de582c6a61c9d66d0498e5af30b6edffff2610033dc595e42283e3bf027a145d0f93357f
7
- data.tar.gz: 57599f9c9a0eb24561c980c656b9aec3a700112cfb3ff2e08c7ada46fbc3252bb273a9f9d00fd069748cb846676b4b0ab79fd232afe4c1e68ce22d833eb7de1e
6
+ metadata.gz: 4f255f1c62b45a3ebf1089d23aaf53d977c8216930b017737140a7965539f040db7f821aa030dab57efc336f8aac7fa4978e19e83cf32762b49b1891bc38c69d
7
+ data.tar.gz: d6c6aae54640fd64f6b4a15514b02390e7c10c091fec8dfb56a830ea4264f51cf86b1d767eecf8572bb8bf4199e72d29c285fc347b34313bc012e9c010eebbef
@@ -7,11 +7,12 @@ class AbstractResourcesController < ApplicationController
7
7
  self.responder = ::AbstractedResponder
8
8
  respond_to :html, :xml, :js, :json
9
9
 
10
+ before_action :authenticate_user!
11
+
10
12
  include PrintControl
11
13
  include ResourceControl
12
14
  include ParentControl
13
15
 
14
- before_filter :authenticate_user!
15
16
  before_action :set_fab_button_options
16
17
  before_action :set_variant_template
17
18
  after_action :verify_authorized
@@ -107,8 +107,9 @@ module PrintControl
107
107
  def display_print_result
108
108
  params[:print][:output_type] ||= 'html'
109
109
  case params[:print][:output_type].downcase
110
- when 'html'; render params[:print][:view_template_path], layout: 'print'
111
- when 'pdf'; render action: :new, status: :unprocessable_entity
110
+ # when 'html'; render params[:print][:view_template_path], layout: 'print'
111
+ when 'html'; render "stock_items/print/_stock_items_list", layout: 'print'
112
+ when 'pdf'; render action: :new, status: :unprocessable_entity
112
113
  end
113
114
  end
114
115
 
@@ -107,7 +107,7 @@ module ResourceControl
107
107
  def resources_url options={}
108
108
  r=request.path
109
109
  options = case params[:action]
110
- when 'create','update','delete','destroy'; ""
110
+ when 'create','update','delete','destroy'; {}
111
111
  else resource_options(options)
112
112
  end
113
113
  return "%s%s" % [r,options] if r.match "#{resource.class.to_s.tableize}$"
@@ -134,6 +134,10 @@ module ResourceControl
134
134
  else
135
135
  # search
136
136
  r = _search options
137
+
138
+ # filter
139
+ r = _filter r, options
140
+
137
141
  # sort
138
142
  r = _sort r, options
139
143
 
@@ -155,6 +159,15 @@ module ResourceControl
155
159
  end
156
160
  end
157
161
 
162
+ #
163
+ # filter - it at all
164
+ #
165
+ def _filter r, options
166
+ return r if params[:f].blank?
167
+ return resource_class.filter r, params[:f], options if resource_class.respond_to? :filter
168
+ r
169
+ end
170
+
158
171
  #
159
172
  # sort - it at all
160
173
  #
@@ -123,6 +123,7 @@ module AbstractResourcesHelper
123
123
  #
124
124
  # lnk = parent? ? (parent_url + "/#{resource_name}") : "/#{resource_name}"
125
125
  # lnk += options.empty? ? "" : "?" + options.collect{ |k,v| "#{k}=#{v}" }.join("&")
126
+ options = resources if resources.class == Hash
126
127
  opt = {}
127
128
  opt.merge!(options) if options.class==Hash
128
129
  opt[:controller] ||= resource_class.table_name
@@ -36,6 +36,56 @@ class AbstractResource < ActiveRecord::Base
36
36
  lot.where id: population
37
37
  end
38
38
 
39
+
40
+ #
41
+ # filter the lot on filter
42
+ #
43
+ # filter => { updated_at: [ '<', '11-11-2011'], material: { eq: 'alu%'}}
44
+ #
45
+ def self.filter(lot, filter, options={})
46
+ filter.clone.each do |fld,v|
47
+ if v.is_a? Array
48
+ k = v.shift
49
+ lot = filter_proc lot, fld, k, v
50
+ elsif v.is_a? Hash
51
+ v.each do |k,val|
52
+ lot = filter_proc lot, fld, k, val
53
+ end
54
+ elsif v.is_a? String
55
+ lot = lot.where( "? = ?", fld, v )
56
+ else
57
+ raise "filter valueset '#{v}' not recognised?!"
58
+ end
59
+ end
60
+ lot
61
+ end
62
+
63
+ def self.filter_proc lot, fld, k, v
64
+ tbl = self.arel_table
65
+ case k.to_sym
66
+ when :lt, :lteq, :eq, :gteq, :gt, :matches
67
+ raise "Exactly one value allowed in filter [lt|eq|gt][|eq]!" if [v].flatten.size > 1
68
+ lot = lot.where tbl[fld].send k.to_sym, [v].flatten.shift
69
+ when :not_eq_any, :not_eq_all, :eq_any, :eq_all, :gteq_any, :gteq_all, :gt_any, :gt_all, :lt_any, :lt_all, :lteq_any, :lteq_all
70
+ raise "At least one value required in filter [|not][lt|eq|gt][_any|_all]!" if [v].flatten.size < 1
71
+ lot = lot.where tbl[fld].send k, [v].flatten
72
+ when :between, :not_between
73
+ raise "Exactly two values allowed in filter [not_]between!" if [v].flatten.size != 2
74
+ lot = lot.where tbl[fld].send k, [v].flatten
75
+ when :in, :in_any, :in_all, :not_in, :not_in_any, :not_in_all
76
+ lot = lot.where tbl[fld].send k, [v].flatten
77
+ when :matches_any, :matches_all, :does_not_match, :does_not_match_any, :does_not_match_all
78
+ lot = lot.where tbl[fld].send k, [v].flatten
79
+ when :matches_regexp, :does_not_match_regexp
80
+ raise "filter [does_not_]match[es]_regexp is not supported"
81
+ when :when, :concat
82
+ raise "filter [when|concat] is not supported"
83
+ else
84
+ raise "filter key '#{k}' not recognised?!"
85
+ end
86
+ lot
87
+ end
88
+
39
89
  # depreciated ------------ 12/3/2016
40
90
  #
41
91
  # ancestry related methods - find them on AncestryAbstractResource
@@ -1,3 +1,3 @@
1
1
  module Abstracted
2
- VERSION = "0.4.4"
2
+ VERSION = "0.4.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abstracted
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Walther H Diechmann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-15 00:00:00.000000000 Z
11
+ date: 2016-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails