apidae 0.9.31 → 0.9.34

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
- SHA1:
3
- metadata.gz: b11e661ee1dbdf4a10b2e7a99e50355f3e27c999
4
- data.tar.gz: e915875e1afc08473c4de6e13e759a4e64db8d4c
2
+ SHA256:
3
+ metadata.gz: 19f4dc1ae011dc6f13e271bbbbff28eb59710068d444c21c8ac6bf4952f423b9
4
+ data.tar.gz: 03d28c16f13a83a89918c5b8a790b9651975f68cb681c356c0e065a553b6eaed
5
5
  SHA512:
6
- metadata.gz: 260c76e1bf42ccdd5e05513ea52a70335f352d0053ce667c5d32fbb254e82b2408e3ae4abcb0941f1f935cb3280b782261367c5bda5e673beac864121f6d8bb7
7
- data.tar.gz: 1dc41e22f0c80fc56d0c2d2bbef568b89be652281733c52ca6eed93d1b8e2e9ddf886c836f1b09caffba57b5cedbe5a161a6a1efb88b8e18ad0b282ebc41a777
6
+ metadata.gz: 18eaa64392193791632314d650ace16fc3cb8f795b3c50b222ecdb76b50ce9501fd8cc2bca664cbbf6941359f0a2d9ac0a23c637d0cec20cab32ccc971bfca69
7
+ data.tar.gz: 35ebab3b19a709f29e3d75e1abe93563395fa2fa3b50d8c8c93734290973b9ba3e8438f3977c4433d6a820ee6d0f87ef1c0fd7551a2d343b42dd71031d2d71b1
@@ -45,6 +45,7 @@ module Apidae
45
45
  end
46
46
  end
47
47
  end
48
+ project.cleanup_selections
48
49
  create(result.except(:selections)
49
50
  .merge({remote_file: (zip_file.is_a?(File) ? zip_file.path : zip_file), status: STATUS_COMPLETE, apidae_id: project_id}))
50
51
  logger.info "Import results : #{result}"
@@ -170,7 +171,9 @@ module Apidae
170
171
  def self.add_or_update_selections(project, selections_json, result)
171
172
  selections_hashes = JSON.parse(selections_json, symbolize_names: true)
172
173
  deleted_ids = Selection.where(apidae_project_id: project.id).collect {|sel| sel.apidae_id}.uniq - selections_hashes.collect {|sel| sel[:id]}
173
- Selection.where(apidae_id: deleted_ids).delete_all
174
+ apidae_selection_ids = Selection.where(apidae_id: deleted_ids).map {|s| s.id}
175
+ SelectionObject.where(apidae_selection_id: apidae_selection_ids).delete_all
176
+ Selection.where(id: apidae_selection_ids).delete_all
174
177
  selections_hashes.each do |selection_data|
175
178
  logger.info "Updating selection #{selection_data[:id]}"
176
179
  Selection.add_or_update(selection_data, project.id)
@@ -14,12 +14,12 @@ module Apidae
14
14
  store_accessor :pictures_data, :pictures
15
15
  store_accessor :attachments_data, :attachments
16
16
  store_accessor :type_data, :categories, :themes, :capacity, :classification, :labels, :chains, :area, :track,
17
- :products, :audience, :animals, :extra, :duration, :certifications, :business
17
+ :products, :audience, :animals, :extra, :duration, :certifications, :business, :complement
18
18
  store_accessor :entity_data, :entity_id, :entity_name, :service_provider_id
19
19
  store_accessor :contact, :telephone, :email, :website
20
20
  store_accessor :location_data, :address, :place, :latitude, :longitude, :access, :territories, :environments
21
21
  store_accessor :openings_data, :openings_desc, :openings_desc_mode, :openings, :time_periods, :openings_extra
22
- store_accessor :rates_data, :rates_desc, :rates_desc_mode, :rates, :payment_methods, :includes, :excludes
22
+ store_accessor :rates_data, :rates_desc, :rates_desc_mode, :rates, :payment_methods, :includes, :excludes, :rates_complement
23
23
  store_accessor :service_data, :services, :equipments, :comfort, :activities, :challenged, :languages
24
24
  store_accessor :booking_data, :booking_desc, :booking_entities
25
25
  store_accessor :tags_data, :promo, :internal, :linked
@@ -293,12 +293,18 @@ module Apidae
293
293
  when PHONE
294
294
  contact_details[:telephone] ||= []
295
295
  contact_details[:telephone] << c[:coordonnees][:fr]
296
+ contact_details[:telephone_details] ||= []
297
+ contact_details[:telephone_details] << {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
296
298
  when EMAIL
297
299
  contact_details[:email] ||= []
298
300
  contact_details[:email] << c[:coordonnees][:fr]
301
+ contact_details[:email_details] ||= []
302
+ contact_details[:email_details] << {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
299
303
  when WEBSITE
300
304
  contact_details[:website] ||= []
301
305
  contact_details[:website] << c[:coordonnees][:fr]
306
+ contact_details[:website_details] ||= []
307
+ contact_details[:website_details] << {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
302
308
  else
303
309
  end
304
310
  end
@@ -360,7 +366,8 @@ module Apidae
360
366
  rates_desc: desc, rates: values, payment_methods: methods,
361
367
  rates_desc_mode: rates_hash[:tarifsEnClairGenerationMode] == 'AUTOMATIQUE' ? MODE_AUTO : MODE_MANUAL,
362
368
  includes: node_value(rates_hash, :leTarifComprend, *locales),
363
- excludes: node_value(rates_hash, :leTarifNeComprendPas, *locales)
369
+ excludes: node_value(rates_hash, :leTarifNeComprendPas, *locales),
370
+ rates_complement: node_value(rates_hash, :complement, *locales)
364
371
  }
365
372
  end
366
373
  end
@@ -390,7 +397,8 @@ module Apidae
390
397
  extra: apidae_obj.apidae_type == SPA ? node_value(data_hash, :formuleHebergement, *locales) : node_value(prestations_hash, :complementAccueil, *locales),
391
398
  duration: apidae_obj.apidae_type == SPA ? {days: data_hash[:nombreJours], nights: data_hash[:nombreNuits]} : data_hash[:dureeSeance],
392
399
  certifications: data_hash[:agrements].blank? ? [] : data_hash[:agrements].map {|a| {id: a[:type][:id], identifier: a[:numero]}},
393
- business: business_hash
400
+ business: business_hash,
401
+ complement: apidae_obj.apidae_type == SPA ? node_value(prestations_hash, :complementAccueil, *locales) : {},
394
402
  }
395
403
  end
396
404
 
@@ -419,7 +427,7 @@ module Apidae
419
427
  end
420
428
  unless linked_data_hash.blank? || linked_data_hash[:liensObjetsTouristiquesTypes].blank?
421
429
  tags[:linked] = linked_data_hash[:liensObjetsTouristiquesTypes]
422
- .map {|l| {apidae_id: l[:objetTouristique][:id], apidae_type: l[:objetTouristique][:type], category: l[:type]}}
430
+ .map {|l| {apidae_id: l[:objetTouristique][:id], apidae_type: l[:objetTouristique][:type], category: l[:type], name: l[:objetTouristique][:nom]}}
423
431
  end
424
432
  tags
425
433
  end
@@ -20,5 +20,11 @@ module Apidae
20
20
  def versions=(values)
21
21
  self.versions_data = values.blank? ? nil : values.join('|')
22
22
  end
23
+
24
+ def cleanup_selections
25
+ apidae_selections.reload.each do |s|
26
+ s.cleanup
27
+ end
28
+ end
23
29
  end
24
30
  end
@@ -42,6 +42,20 @@ module Apidae
42
42
  SelectionObject.where(apidae_selection_id: apidae_sel.id, apidae_object_id: removed_ids).delete_all
43
43
  end
44
44
 
45
+ def cleanup
46
+ obsolete_count = apidae_selection_objects
47
+ .joins("LEFT JOIN apidae_objs ON apidae_objs.id = apidae_selection_objects.apidae_object_id")
48
+ .where("apidae_objs.id IS NULL")
49
+ .delete_all
50
+ logger.info "Cleaned up #{obsolete_count} obsolete selection-objects associations for selection #{apidae_id}"
51
+
52
+ dups = apidae_selection_objects.reload.group(:apidae_object_id)
53
+ .select("COUNT(id), apidae_object_id, ARRAY_AGG(id) AS so_ids")
54
+ .having("COUNT(id) > ?", 1).map {|so| so.so_ids}
55
+ dups_count = apidae_selection_objects.where(id: dups.map {|d| d.sort[1..-1]}.flatten).delete_all
56
+ logger.info "Cleaned up #{dups_count} duplicate selection-objects associations for selection #{apidae_id}"
57
+ end
58
+
45
59
  def results(where_clause, offset, size)
46
60
  objects.includes(:town).limit(size).offset(offset).where(where_clause)
47
61
  end
@@ -1,3 +1,3 @@
1
1
  module Apidae
2
- VERSION = "0.9.31"
2
+ VERSION = "0.9.34"
3
3
  end