infopark_fiona7 1.2.0.0.1 → 1.2.0.1.1

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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/scrivito_patches/models/obj.js +2 -6
  3. data/infopark_fiona7.gemspec +1 -1
  4. data/lib/fiona7/attribute_readers/attribute_reader.rb +17 -0
  5. data/lib/fiona7/attribute_readers/binary_as_binary.rb +12 -0
  6. data/lib/fiona7/attribute_readers/binary_as_linklist.rb +26 -0
  7. data/lib/fiona7/attribute_readers/date_as_date.rb +18 -0
  8. data/lib/fiona7/attribute_readers/factory.rb +91 -0
  9. data/lib/fiona7/attribute_readers/helpers/html_deserializer.rb +21 -0
  10. data/lib/fiona7/attribute_readers/helpers/json_deserializer.rb +11 -0
  11. data/lib/fiona7/attribute_readers/helpers/link_deserializer.rb +32 -0
  12. data/lib/fiona7/attribute_readers/html_as_html.rb +14 -0
  13. data/lib/fiona7/attribute_readers/link_as_linklist.rb +13 -0
  14. data/lib/fiona7/attribute_readers/linklist_as_linklist.rb +15 -0
  15. data/lib/fiona7/attribute_readers/multienum_as_multienum.rb +12 -0
  16. data/lib/fiona7/attribute_readers/multienum_as_text.rb +14 -0
  17. data/lib/fiona7/attribute_readers/number_as_string.rb +11 -0
  18. data/lib/fiona7/attribute_readers/reference_as_linklist.rb +14 -0
  19. data/lib/fiona7/attribute_readers/reference_as_string.rb +11 -0
  20. data/lib/fiona7/attribute_readers/referencelist_as_linklist.rb +16 -0
  21. data/lib/fiona7/attribute_readers/referencelist_as_text.rb +14 -0
  22. data/lib/fiona7/attribute_readers/simple.rb +18 -0
  23. data/lib/fiona7/attribute_readers/stringlist_as_text.rb +18 -0
  24. data/lib/fiona7/attribute_readers/widgetlist_as_linklist.rb +33 -0
  25. data/lib/fiona7/attribute_type_mapper.rb +76 -0
  26. data/lib/fiona7/attribute_writers/attribute_writer.rb +16 -0
  27. data/lib/fiona7/attribute_writers/binary_as_binary.rb +74 -0
  28. data/lib/fiona7/attribute_writers/binary_as_linklist.rb +86 -0
  29. data/lib/fiona7/attribute_writers/date_as_date.rb +11 -0
  30. data/lib/fiona7/attribute_writers/factory.rb +90 -0
  31. data/lib/fiona7/attribute_writers/helpers/html_serializer.rb +21 -0
  32. data/lib/fiona7/attribute_writers/helpers/json_serializer.rb +11 -0
  33. data/lib/fiona7/attribute_writers/helpers/link_serializer.rb +37 -0
  34. data/lib/fiona7/attribute_writers/html_as_html.rb +12 -0
  35. data/lib/fiona7/attribute_writers/link_as_linklist.rb +18 -0
  36. data/lib/fiona7/attribute_writers/linklist_as_linklist.rb +16 -0
  37. data/lib/fiona7/attribute_writers/multienum_as_multienum.rb +11 -0
  38. data/lib/fiona7/attribute_writers/multienum_as_text.rb +12 -0
  39. data/lib/fiona7/attribute_writers/number_as_string.rb +11 -0
  40. data/lib/fiona7/attribute_writers/reference_as_linklist.rb +17 -0
  41. data/lib/fiona7/attribute_writers/reference_as_string.rb +11 -0
  42. data/lib/fiona7/attribute_writers/referencelist_as_linklist.rb +19 -0
  43. data/lib/fiona7/attribute_writers/referencelist_as_text.rb +13 -0
  44. data/lib/fiona7/attribute_writers/simple.rb +11 -0
  45. data/lib/fiona7/attribute_writers/stringlist_as_text.rb +16 -0
  46. data/lib/fiona7/attribute_writers/widgetlist_as_linklist.rb +33 -0
  47. data/lib/fiona7/builder/obj_builder.rb +12 -201
  48. data/lib/fiona7/controllers/rest_api/obj_controller.rb +23 -5
  49. data/lib/fiona7/engine.rb +39 -0
  50. data/lib/fiona7/json/obj_decorator.rb +29 -121
  51. data/lib/fiona7/prefetch/obj_prefetch.rb +42 -0
  52. data/lib/fiona7/prefetch/widget_resolver_prefetch.rb +36 -0
  53. data/lib/fiona7/scrivito_patches/date_attribute.rb +16 -0
  54. data/lib/fiona7/tools/attribute_remover.rb +70 -0
  55. data/lib/fiona7/type_register.rb +9 -1
  56. data/lib/fiona7/version.rb +1 -1
  57. data/lib/fiona7/widget_resolver.rb +6 -6
  58. metadata +51 -4
@@ -0,0 +1,11 @@
1
+ module Fiona7
2
+ module AttributeWriters
3
+ module Helpers
4
+ class JsonSerializer
5
+ def call(input)
6
+ input.to_json
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,37 @@
1
+ module Fiona7
2
+ module AttributeWriters
3
+ module Helpers
4
+ class LinkSerializer
5
+ def initialize(obj, klass)
6
+ self.obj = obj
7
+ self.klass = klass
8
+ end
9
+
10
+ def call(link)
11
+ link = link.symbolize_keys
12
+ new_link = {}
13
+
14
+ if link[:url]
15
+ # handle www.example.com
16
+ new_link[:url] = "external:#{link[:url]}" unless link[:url] =~ /\A[a-zA-Z][a-zA-Z0-9+.-]:/
17
+ elsif obj_id = link[:obj_id]
18
+ # FIXME: use a repository here to speed up the lookup
19
+ new_link[:url] = self.klass.find(obj_id).path
20
+ end
21
+
22
+
23
+ new_link[:url] ||= link[:url]
24
+ new_link[:title] = link[:title] if link[:title]
25
+ new_link[:target] = link[:target] if link[:target]
26
+ new_link[:url] = "#{new_link[:url]}?#{link[:query]}" if link[:query]
27
+ new_link[:url] = "#{new_link[:url]}##{link[:fragment]}" if link[:fragment]
28
+
29
+ new_link
30
+ end
31
+
32
+ protected
33
+ attr_accessor :obj, :klass
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,12 @@
1
+ require 'fiona7/attribute_writers/attribute_writer'
2
+ require 'fiona7/attribute_writers/helpers/html_serializer'
3
+
4
+ module Fiona7
5
+ module AttributeWriters
6
+ class HtmlAsHtml < AttributeWriter
7
+ def call(value, claimed_type=nil)
8
+ self.obj.set(self.attr_name, Helpers::HtmlSerializer.new(self.obj, self.klass).call(value))
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,18 @@
1
+ require 'fiona7/attribute_writers/attribute_writer'
2
+ require 'fiona7/attribute_writers/helpers/link_serializer'
3
+
4
+ module Fiona7
5
+ module AttributeWriters
6
+ class LinkAsLinklist < AttributeWriter
7
+ def call(value, claimed_type=nil)
8
+ value = value || {}
9
+ if value.empty?
10
+ self.obj.set(self.attr_name, [])
11
+ else
12
+ link = Helpers::LinkSerializer.new(self.obj, self.klass).call(value)
13
+ self.obj.set(self.attr_name, [link])
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ require 'fiona7/attribute_writers/attribute_writer'
2
+ require 'fiona7/attribute_writers/helpers/link_serializer'
3
+
4
+ module Fiona7
5
+ module AttributeWriters
6
+ class LinklistAsLinklist < AttributeWriter
7
+ def call(value, claimed_type=nil)
8
+ links = (value || []).map do |link|
9
+ Helpers::LinkSerializer.new(self.obj, self.klass).call(link)
10
+ end
11
+
12
+ self.obj.set(self.attr_name, links)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ require 'fiona7/attribute_writers/attribute_writer'
2
+
3
+ module Fiona7
4
+ module AttributeWriters
5
+ class MultienumAsMultienum < AttributeWriter
6
+ def call(value, claimed_type=nil)
7
+ self.obj.set(self.attr_name, value || [])
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ require 'fiona7/attribute_writers/attribute_writer'
2
+ require 'fiona7/attribute_writers/helpers/json_serializer'
3
+
4
+ module Fiona7
5
+ module AttributeWriters
6
+ class MultienumAsText < AttributeWriter
7
+ def call(value, claimed_type=nil)
8
+ self.obj.set(self.attr_name, Helpers::JsonSerializer.new.call(value || []))
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ require 'fiona7/attribute_writers/attribute_writer'
2
+
3
+ module Fiona7
4
+ module AttributeWriters
5
+ class NumberAsString < AttributeWriter
6
+ def call(value, claimed_type=nil)
7
+ self.obj.set(self.attr_name, value.to_s)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ require 'fiona7/attribute_writers/attribute_writer'
2
+
3
+ module Fiona7
4
+ module AttributeWriters
5
+ class ReferenceAsLinklist < AttributeWriter
6
+ def call(value, claimed_type=nil)
7
+ # FIXME: use a repository to improve performance
8
+ obj = self.klass.find(value) rescue nil
9
+ if obj
10
+ self.obj.set(self.attr_name, [obj.path])
11
+ else
12
+ self.obj.set(self.attr_name, [])
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ require 'fiona7/attribute_writers/attribute_writer'
2
+
3
+ module Fiona7
4
+ module AttributeWriters
5
+ class ReferenceAsString < AttributeWriter
6
+ def call(value, claimed_type=nil)
7
+ self.obj.set(self.attr_name, value.to_s)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,19 @@
1
+ require 'fiona7/attribute_writers/attribute_writer'
2
+
3
+ module Fiona7
4
+ module AttributeWriters
5
+ class ReferencelistAsLinklist < AttributeWriter
6
+ def call(value, claimed_type=nil)
7
+ # FIXME: use a repository to improve performance
8
+ ids = value || []
9
+ if ids.empty?
10
+ self.obj.set(self.attr_name, [])
11
+ else
12
+ objects_map = Hash[self.klass.where(obj_id: ids).map {|o| [o.id.to_s, o]}]
13
+ objects = ids.map {|id| objects_map[id] }.compact
14
+ self.obj.set(self.attr_name, objects)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ require 'fiona7/attribute_writers/attribute_writer'
2
+ require 'fiona7/attribute_writers/helpers/json_serializer'
3
+
4
+ module Fiona7
5
+ module AttributeWriters
6
+ class ReferencelistAsText < AttributeWriter
7
+ def call(value, claimed_type=nil)
8
+ ids = value || []
9
+ self.obj.set(self.attr_name, Helpers::JsonSerializer.new.call(ids))
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ require 'fiona7/attribute_writers/attribute_writer'
2
+
3
+ module Fiona7
4
+ module AttributeWriters
5
+ class Simple < AttributeWriter
6
+ def call(value, claimed_type=nil)
7
+ self.obj.set(self.attr_name, value)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ require 'fiona7/attribute_writers/attribute_writer'
2
+ require 'fiona7/attribute_writers/helpers/json_serializer'
3
+
4
+ module Fiona7
5
+ module AttributeWriters
6
+ class StringlistAsText < AttributeWriter
7
+ def call(value, claimed_type=nil)
8
+ if self.attr_name.to_s == "channels"
9
+ self.obj.set(:channels, value || [])
10
+ else
11
+ self.obj.set(self.attr_name, Helpers::JsonSerializer.new.call(value || []))
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,33 @@
1
+ require 'fiona7/attribute_writers/attribute_writer'
2
+
3
+ module Fiona7
4
+ module AttributeWriters
5
+ class WidgetlistAsLinklist < AttributeWriter
6
+ def call(value, claimed_type=nil)
7
+ # TODO: widget_respository
8
+ links = []
9
+ if value.kind_of?(Array)
10
+ (value || []).each do |widget_id|
11
+ if (path=self.widget_map[widget_id]||self.widget_map[widget_id.to_s])
12
+ links << {destination_object: path, title: widget_id}
13
+ else
14
+ raise Scrivito::ScrivitoError, "Inconsistent widget pool state detected, unable to store widgets (unable to find #{widget_id} in #{self.widget_map.inspect})"
15
+ end
16
+ end
17
+ elsif value.kind_of?(Hash)
18
+ # stupid shits could not use one consistent format
19
+ (value || {})["list"].each do |crap|
20
+ widget_id = crap["widget"]
21
+ if (path=self.widget_map[widget_id]||self.widget_map[widget_id.to_s])
22
+ links << {destination_object: path, title: widget_id}
23
+ else
24
+ raise Scrivito::ScrivitoError, "Inconsistent widget pool state detected, unable to store widgets (unable to find #{widget_id} in #{self.widget_map.inspect})"
25
+ end
26
+ end
27
+ end
28
+ self.obj.set(self.attr_name, links)
29
+ end
30
+ end
31
+ end
32
+ end
33
+
@@ -11,11 +11,10 @@ require 'fiona7/obj_class_name_demangler'
11
11
  #require 'fiona7/write_obj'
12
12
  #require 'fiona7/released_obj'
13
13
  require 'fiona7/builder/batch_widget_writer'
14
- require 'fiona7/link_converter/scrivito_to_fiona'
15
14
  require 'fiona7/widget_resolver'
16
- require 'fiona7/builder/lazy_blob_copier'
17
- require 'fiona7/builder/indirect_blob_builder'
18
- require 'fiona7/blob_id_generator'
15
+ require 'fiona7/prefetch/obj_prefetch'
16
+
17
+ require 'fiona7/attribute_writers/factory'
19
18
 
20
19
 
21
20
  module Fiona7
@@ -66,16 +65,11 @@ module Fiona7
66
65
 
67
66
  ensure_obj_class_exists
68
67
 
69
- # bottom one is faster, but can only work when there are no widgets and no uploads
70
- if (@widget_pool && !@widget_pool.empty?) || (@values.any? {|_, (_, v)| v.kind_of?(File) || v.kind_of?(ActionDispatch::Http::UploadedFile) } )
71
- @obj = WriteObj.create!(name: @name, parent_obj_id: @parent.id, obj_class: @real_obj_class)
72
- else
73
- @obj = WriteObj.create!(name: @name, parent_obj_id: @parent.id, obj_class: @real_obj_class)
74
- end
68
+ @obj = WriteObj.create!(name: @name, parent_obj_id: @parent.id, obj_class: @real_obj_class)
75
69
  end
76
70
 
77
71
  def write_widget_pool
78
- resolver = WidgetResolver.new(@obj.attr_values["X_widget_pool"]||[], WriteObj)
72
+ resolver = WidgetResolver.new(@obj.attr_values["X_widget_pool"]||[], Prefetch::ObjPrefetch.new(WriteObj))
79
73
 
80
74
  @id_map = resolver.id_map
81
75
  @widget_path_map = resolver.path_map
@@ -115,171 +109,20 @@ module Fiona7
115
109
  @obj.reload
116
110
  end
117
111
  @obj.send(:reload_attributes)
118
- type_definition = Fiona7::TypeRegister.instance.write(@obj_class)
119
- if type_definition.nil?
120
- raise "Definition not found for #{@obj_class}"
121
- end
122
- @values.each do |attribute_name, possible_pair|
123
- (claimed_type, value) = *possible_pair
124
- attribute = type_definition.find_attribute(attribute_name)
125
- if attribute.nil?
126
- #debugger
127
- raise "Attribute #{attribute_name} not found in #{@obj_class}"
128
- end
129
-
130
- virtual_name = attribute.name.to_sym
131
- attribute_name = real_name = attribute.real_name.to_sym
132
- virtual_type = attribute.type.to_sym
133
-
134
- case virtual_type
135
- when :linklist
136
- links = (value || []).map do |link|
137
- link = link.symbolize_keys
138
- new_link = {}
139
-
140
- if link[:url]
141
- # handle www.example.com
142
- new_link[:url] = "external:#{link[:url]}" unless link[:url] =~ /\A[a-zA-Z][a-zA-Z0-9+.-]:/
143
- elsif obj_id = link[:obj_id]
144
- new_link[:url] = WriteObj.find(obj_id).path
145
- end
146
112
 
113
+ factory = Fiona7::AttributeWriters::Factory.new(@obj, @obj_class, WriteObj, @widget_path_map)
147
114
 
148
- new_link[:url] ||= link[:url]
149
- new_link[:title] = link[:title] if link[:title]
150
- new_link[:target] = link[:target] if link[:target]
151
- new_link[:url] = "#{new_link[:url]}?#{link[:query]}" if link[:query]
152
- new_link[:url] = "#{new_link[:url]}##{link[:fragment]}" if link[:fragment]
153
-
154
- new_link
155
- end
156
- @obj.set(attribute_name.to_s, links)
157
- when :link
158
- link = (value || {}).symbolize_keys
159
- new_link = {}
160
-
161
- if link[:url]
162
- # handle www.example.com
163
- new_link[:url] = "external:#{link[:url]}" unless link[:url] =~ /\A[a-zA-Z][a-zA-Z0-9+.-]:/
164
- elsif obj_id = link[:obj_id]
165
- new_link[:url] = WriteObj.find(obj_id).path
166
- end
167
-
168
-
169
- new_link[:url] ||= link[:url]
170
- new_link[:title] = link[:title] if link[:title]
171
- new_link[:target] = link[:target] if link[:target]
172
- new_link[:url] = "#{new_link[:url]}?#{link[:query]}" if link[:query]
173
- new_link[:url] = "#{new_link[:url]}##{link[:fragment]}" if link[:fragment]
115
+ @values.each do |attribute_name, possible_pair|
116
+ (claimed_type, value) = *possible_pair
174
117
 
175
- new_link
176
- if link.empty?
177
- @obj.set(attribute_name.to_s, [])
178
- else
179
- @obj.set(attribute_name.to_s, [new_link])
180
- end
181
- when :reference
182
- obj = WriteObj.find(value) rescue nil
183
- if obj
184
- @obj.set(attribute_name.to_s, [obj.path])
185
- else
186
- @obj.set(attribute_name.to_s, [])
187
- end
188
- when :referencelist
189
- ids = value || []
190
- if ids.empty?
191
- @obj.set(attribute_name.to_s, [])
192
- else
193
- objects_map = Hash[WriteObj.where(obj_id: ids).map {|o| [o.id.to_s, o]}]
194
- objects = ids.map {|id| objects_map[id] }.compact
195
- @obj.set(attribute_name, objects)
196
- end
197
- when :widgetlist
198
- links = []
199
- if value.kind_of?(Array)
200
- (value || []).each do |widget_id|
201
- if (path=@widget_path_map[widget_id]||@widget_path_map[widget_id.to_s])
202
- links << {destination_object: path, title: widget_id}
203
- else
204
- raise Scrivito::ScrivitoError, "Inconsistent widget pool state detected, unable to store widgets (unable to find #{widget_id} in #{@widget_path_map.inspect})"
205
- end
206
- end
207
- elsif value.kind_of?(Hash)
208
- # stupid shits could not use one consistent format
209
- (value || {})["list"].each do |crap|
210
- widget_id = crap["widget"]
211
- if (path=@widget_path_map[widget_id]||@widget_path_map[widget_id.to_s])
212
- links << {destination_object: path, title: widget_id}
213
- else
214
- raise Scrivito::ScrivitoError, "Inconsistent widget pool state detected, unable to store widgets (unable to find #{widget_id} in #{@widget_path_map.inspect})"
215
- end
216
- end
217
- end
218
- @obj.set(attribute_name.to_s, links)
219
- when :text, :string, :enum, :multienum, :date
220
- #if value.nil? && value != @obj[attribute_name]
221
- @obj.set(attribute_name.to_s, value)
222
- #end
223
- when :number
224
- @obj.set(attribute_name.to_s, value.to_s)
225
- when :stringlist
226
- if Fiona7.mode == :legacy && attribute_name.to_s == "channels"
227
- @obj.set(:channels, value || [])
228
- else
229
- @obj.set(attribute_name.to_s, value.to_json)
230
- end
231
- when :html
232
- converted_links = LinkConverter::ScrivitoToFiona.new(WriteObj, value.to_s).convert
233
- @obj.set(attribute_name.to_s, converted_links)
234
- when :binary
235
- if value.kind_of?(String)
236
- # NOTE: this code path has not been tested yet.
237
- target = {title: value, destination_object: InternalReleasedObj.find(value.to_i)}
238
- @obj.set(attribute_name.to_s, target)
239
- elsif value.kind_of?(File)
240
- if !Fiona7.mode == :legacy || attribute_name.to_s != "blob"
241
- @obj.set(attribute_name.to_s, upload_file(value))
242
- else
243
- special_upload_handling(attribute_name, value)
244
- end
245
- elsif value.kind_of?(ActionDispatch::Http::UploadedFile)
246
- if !Fiona7.mode == :legacy || attribute_name.to_s != "blob"
247
- @obj.set(attribute_name.to_s, upload_uploaded_file(value))
248
- else
249
- special_upload_uploaded_handling(attribute_name, value)
250
- end
251
- elsif value.nil?
252
- @obj.set(attribute_name.to_s, [])
253
- elsif value.kind_of?(Hash)
254
- source_blob_id = value["id"] || value["id_to_copy"]
255
- filename = value["filename"]
256
- content_type = value["content_type"]
257
-
258
- # There is a little bit of magic behind this.
259
- # This will pass some data directly to the crul_obj
260
- # bypassing @obj.set(), but calling @obj.save
261
- # afterwards still persists the data correctly
262
- #
263
- # This works the same way as Reactor::Tools::Uploader
264
- Fiona7::Builder::LazyBlobCopier.new({
265
- destination_obj: @obj,
266
- attr_name: attribute_name.to_s,
267
- source_blob_id: source_blob_id,
268
- filename: filename,
269
- content_type: content_type
270
- }).call
271
-
272
- # NOTE: no @obj.set() required here
273
- else
274
- raise Scrivito::ClientError.new("Invalid input for binary field", 422)
275
- end
276
- else
277
- raise Scrivito::ClientError.new("Unknown attribute type: #{virtual_type}", 418)
278
- end
118
+ worker = factory.call(attribute_name)
119
+ worker.call(value, claimed_type)
279
120
  end
121
+
280
122
  if (@new_full_text)
281
123
  @obj.set(:X_full_text, @new_full_text)
282
124
  end
125
+
283
126
  @obj.set(:X_widget_pool, @new_widget_pool) if @new_widget_pool
284
127
  @obj.set(:permalink, @permalink) if @permalink
285
128
 
@@ -290,25 +133,6 @@ module Fiona7
290
133
  #end
291
134
  end
292
135
 
293
- def special_upload_handling(attribute_name, file)
294
- if !@obj.binary?
295
- # standard handling!
296
- @obj.set(attribute_name.to_s, upload_file(file))
297
- else
298
- ext = ::File.extname(file.path).to_s[1..-1]
299
- @obj.upload(file, ext)
300
- end
301
- end
302
-
303
- def special_upload_uploaded_handling(attribute_name, file)
304
- if !@obj.binary?
305
- # standard handling!
306
- @obj.set(attribute_name.to_s, upload_uploaded_file(file))
307
- else
308
- ext = ::File.extname(file.original_filename).to_s[1..-1]
309
- @obj.upload(file.open, ext)
310
- end
311
- end
312
136
 
313
137
  def rewrite_full_text
314
138
  full_text = ::YAML.load(@obj.attr_values["X_full_text"]) rescue {}
@@ -321,19 +145,6 @@ module Fiona7
321
145
  nil
322
146
  end
323
147
 
324
- def upload_file(file)
325
- upload = Fiona7::Builder::IndirectBlobBuilder.new(@obj, ::File.basename(file.path), file).call
326
- encoded_id = Fiona7::BlobIdGenerator.new(upload.id, upload.last_changed).call
327
- {title: encoded_id, destination_object: upload}
328
- end
329
-
330
- def upload_uploaded_file(file)
331
- upload = Fiona7::Builder::IndirectBlobBuilder.new(@obj, file.original_filename, file.open).call
332
- encoded_id = Fiona7::BlobIdGenerator.new(upload.id, upload.last_changed).call
333
- {title: encoded_id, destination_object: upload}
334
- end
335
-
336
-
337
148
  def name_and_parent_path_from_path(path)
338
149
  components = path.split('/')
339
150
  name = components.pop.presence