apidae 0.9.31 → 0.9.34

Sign up to get free protection for your applications and to get access to all the features.
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