apidae 1.2.0 → 1.2.5

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
2
  SHA1:
3
- metadata.gz: 2ec3c909a4d3a0cf9b9312db0b7f94e5a58c42d2
4
- data.tar.gz: 3c7ce15d9d02a27d97567f4da56e3634068fcb23
3
+ metadata.gz: ff6394e1f32776f2d275a0b448ceb968c493967b
4
+ data.tar.gz: 679a63b9dc98ea90c3a5491c59ab86ccf144c6e2
5
5
  SHA512:
6
- metadata.gz: 2959dc04c3a7763578402a35a219a7bdb5888e114288343c654cba7d4a8e4d57b5cdceaf39a3de1ecf292c22d89a11186dfb05bc27f04108ac5cea5b2557c79a
7
- data.tar.gz: 4b6dc11085319946637ac528feafdff08d66e4a1f80276734919f26960a51b5404787461bf22a461f8ff7abee2cc36df068a576b4eeec514164e2ea2655313f9
6
+ metadata.gz: 3ee076bdd66bdf41487cd6be15d7ac4239724e004ff1304835f8c362f6b4f681d94681d289b3cb227f6dcae20ec02c7990338f9f4260d9a429a97bfc00e148ed
7
+ data.tar.gz: c2a9f335d0ec0bdcd58f639024431d1d78388c7c21140da2ab523bf72c520bc83d243f28ce26ef216bbc61e1e566893a4964a065bc31e27ee268695b9996aaa5
@@ -34,17 +34,15 @@ module Apidae
34
34
  def create
35
35
  @obj = Obj.new(object_params)
36
36
  if Obj.find_by_apidae_id(@obj.apidae_id)
37
- redirect_to objects_url, alert: "Cet objet est déjà importé."
38
- else
39
- selection = params[:selection_apidae_id].blank? ? Selection.last : Selection.find_by_apidae_id(params[:selection_apidae_id])
40
- if @obj.save && selection.add_or_refresh_obj(@obj.apidae_id)
41
- redirect_to objects_url, notice: "L'objet a bien été importé"
42
- else
43
- flash[:alert] = "Une erreur s'est produite lors de l'import de l'objet."
44
- render :new
37
+ redirect_to objects_url, alert: "Cet objet est déjà importé." and return
38
+ elsif !params[:selection_apidae_id].blank?
39
+ selection = Selection.find_by_apidae_id(params[:selection_apidae_id])
40
+ if selection && selection.valid_api? && @obj.save && selection.add_or_refresh_obj(@obj.apidae_id)
41
+ redirect_to objects_url, notice: "L'objet a bien été importé" and return
45
42
  end
46
43
  end
47
-
44
+ flash[:alert] = "Une erreur s'est produite lors de l'import de l'objet."
45
+ render :new
48
46
  end
49
47
 
50
48
  def update
@@ -63,7 +61,8 @@ module Apidae
63
61
  def refresh
64
62
  referrer = (session.delete(:referrer) || objects_url)
65
63
  begin
66
- if @obj && @obj.selections.first.add_or_refresh_obj(@obj.apidae_id)
64
+ sel = @obj.selections.find {|s| s.valid_api?}
65
+ if sel && sel.add_or_refresh_obj(@obj.apidae_id)
67
66
  redirect_to referrer, notice: "L'objet touristique a bien été mis à jour."
68
67
  else
69
68
  redirect_to referrer, alert: "Une erreur s'est produite lors de la mise à jour de l'objet."
@@ -236,6 +236,7 @@ module Apidae
236
236
  openings_desc: node_value(openings_hash, :periodeEnClair, *locales),
237
237
  openings_desc_mode: openings_hash[:periodeEnClairGenerationMode] == 'AUTOMATIQUE' ? MODE_AUTO : MODE_MANUAL,
238
238
  openings: build_openings(openings_hash, *locales),
239
+ all_year_long: openings_hash[:ouvertTouteLAnnee] == 'OUVERT_TOUTE_L_ANNEE' ? 'true' : 'false',
239
240
  time_periods: lists_ids(openings_hash[:indicationsPeriode]),
240
241
  openings_extra: lists_ids(openings_hash[:ouverturesComplementaires])
241
242
  }
@@ -245,13 +246,14 @@ module Apidae
245
246
  def self.parse_rates(rates_hash, *locales)
246
247
  if rates_hash
247
248
  desc = rates_hash[:gratuit] ? {DEFAULT_LOCALE => 'gratuit'} : node_value(rates_hash, :tarifsEnClair, *locales)
248
- values = rates_hash[:periodes].blank? ? [] : rates_hash[:periodes].map {|p| build_rate(p)}
249
+ values = rates_hash[:periodes].blank? ? [] : rates_hash[:periodes].map {|p| build_rate(p, *locales)}
249
250
  methods = rates_hash[:modesPaiement].blank? ? [] : rates_hash[:modesPaiement].map {|p| p[:id]}
250
251
  {
251
252
  rates_desc: desc, rates: values, payment_methods: methods,
252
253
  rates_desc_mode: rates_hash[:tarifsEnClairGenerationMode] == 'AUTOMATIQUE' ? MODE_AUTO : MODE_MANUAL,
253
254
  includes: node_value(rates_hash, :leTarifComprend, *locales),
254
- excludes: node_value(rates_hash, :leTarifNeComprendPas, *locales)
255
+ excludes: node_value(rates_hash, :leTarifNeComprendPas, *locales),
256
+ rates_extra: node_value(rates_hash, :complement, *locales)
255
257
  }
256
258
  end
257
259
  end
@@ -346,10 +348,10 @@ module Apidae
346
348
 
347
349
  private
348
350
 
349
- def self.build_rate(rate_period)
351
+ def self.build_rate(rate_period, *locales)
350
352
  {
351
353
  id: rate_period[:identifiant], start_date: rate_period[:dateDebut], end_date: rate_period[:dateFin],
352
- values: rate_period[:tarifs].blank? ? [] : rate_period[:tarifs].map {|t| {min: t[:minimum], max: t[:maximum], type: t[:type][:id], details: node_value(t, :precisionTarif)}}
354
+ values: rate_period[:tarifs].blank? ? [] : rate_period[:tarifs].map {|t| {min: t[:minimum], max: t[:maximum], type: t[:type][:id], details: node_value(t, :precisionTarif, *locales)}}
353
355
  }
354
356
  end
355
357
 
@@ -20,7 +20,7 @@ module Apidae
20
20
  :mobile_website, :shorty_url, :contacts
21
21
  store_accessor :location_data, :address, :place, :latitude, :longitude, :access, :territories, :environments
22
22
  store_accessor :openings_data, :openings_desc, :openings_desc_mode, :openings, :time_periods, :openings_extra
23
- store_accessor :rates_data, :rates_desc, :rates_desc_mode, :rates, :payment_methods, :includes, :excludes
23
+ store_accessor :rates_data, :rates_desc, :rates_desc_mode, :rates, :payment_methods, :includes, :excludes, :rates_extra
24
24
  store_accessor :service_data, :services, :equipments, :comfort, :activities, :challenged, :languages
25
25
  store_accessor :booking_data, :booking_desc, :booking_entities
26
26
  store_accessor :tags_data, :promo, :internal, :linked
@@ -10,7 +10,7 @@ module Apidae
10
10
  end
11
11
 
12
12
  def self.import(refs_json)
13
- locales = Rails.application.config.respond_to?(:apidae_locales) ? Rails.application.config.apidae_locales : [DEFAULT_LOCALE]
13
+ locales = Rails.application.config.respond_to?(:apidae_locales) ? Rails.application.config.apidae_locales : [DEFAULT_LOCALE]
14
14
  locales_map = Hash[locales.map {|loc| ["libelle#{loc.camelize.gsub('-', '')}".to_sym, loc]}]
15
15
  refs_hashes = JSON.parse(refs_json, symbolize_names: true)
16
16
  if refs_hashes.length != where("apidae_type != ?", INTERNAL).count
@@ -50,6 +50,10 @@ module Apidae
50
50
  objects.where(where_clause).count
51
51
  end
52
52
 
53
+ def valid_api?
54
+ apidae_project && !apidae_project.api_key.blank? && !apidae_project.apidae_id.blank?
55
+ end
56
+
53
57
  def api_results(opts = {})
54
58
  key = cache_key(:results)
55
59
  res = $apidae_cache.read(key)
@@ -83,14 +87,14 @@ module Apidae
83
87
  res
84
88
  end
85
89
 
86
- def api_object(apidae_obj_id)
87
- query_args = build_args(OBJECTS_ENDPOINT, {obj_ids: [apidae_obj_id], fields: ["@all"]})
90
+ def api_object(apidae_obj_id, fields = ["@all"])
91
+ query_args = build_args(OBJECTS_ENDPOINT, {obj_ids: [apidae_obj_id], fields: fields})
88
92
  query_api(query_args, true, false)
89
93
  end
90
94
 
91
- def add_or_refresh_obj(apidae_obj_id)
92
- if apidae_project
93
- res = api_object(apidae_obj_id)
95
+ def add_or_refresh_obj(apidae_obj_id, fields = ["@all"])
96
+ if valid_api?
97
+ res = api_object(apidae_obj_id, fields)
94
98
  if res[:results] && res[:results].length == 1
95
99
  obj_data = res[:results].first.deep_symbolize_keys
96
100
  add_or_refresh(obj_data)
@@ -99,7 +103,7 @@ module Apidae
99
103
  end
100
104
 
101
105
  def add_or_refresh_objs(fields = ["@all"])
102
- if apidae_project
106
+ if valid_api?
103
107
  res = api_objects({fields: fields})
104
108
  if res[:results] && res[:results].length > 0
105
109
  res[:results].each do |result|
@@ -116,8 +120,9 @@ module Apidae
116
120
  obj = Obj.update_object(obj, obj_data, apidae_project.locales, apidae_project.versions)
117
121
  else
118
122
  obj = Obj.add_object(obj_data, apidae_project.locales, apidae_project.versions)
119
- SelectionObject.create(apidae_selection_id: id, apidae_object_id: added_obj.id)
120
123
  end
124
+ SelectionObject.create(apidae_selection_id: id, apidae_object_id: obj.id) unless objects.include?(obj)
125
+
121
126
  if Rails.application.config.respond_to?(:apidae_obj_refresh_callback)
122
127
  Rails.application.config.apidae_obj_refresh_callback.call(obj.apidae_id)
123
128
  end
@@ -1,3 +1,3 @@
1
1
  module Apidae
2
- VERSION = "1.2.0"
2
+ VERSION = "1.2.5"
3
3
  end
@@ -63,3 +63,5 @@ Migrating to AddLocalesDataToApidaeProjects (20190123214635)
63
63
   (0.2ms) COMMIT
64
64
   (0.2ms) SELECT pg_advisory_unlock(6140174353533887940)
65
65
   (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
66
+ Apidae::Obj Load (26.8ms) SELECT apidae_id, COUNT(id) FROM "apidae_objs" WHERE "apidae_objs"."root_obj_id" IS NULL GROUP BY "apidae_objs"."apidae_id" HAVING (COUNT(id) > 1)
67
+ Apidae::Obj Load (2.4ms) SELECT apidae_id, COUNT(id) FROM "apidae_objs" WHERE "apidae_objs"."root_obj_id" IS NULL GROUP BY "apidae_objs"."apidae_id" HAVING (COUNT(id) > 1)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apidae
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean-Baptiste Vilain
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-09 00:00:00.000000000 Z
11
+ date: 2020-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails