apidae 1.2.0 → 1.2.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 +4 -4
- data/app/controllers/apidae/objects_controller.rb +9 -10
- data/app/models/apidae/apidae_data_parser.rb +6 -4
- data/app/models/apidae/obj.rb +1 -1
- data/app/models/apidae/reference.rb +1 -1
- data/app/models/apidae/selection.rb +12 -7
- data/lib/apidae/version.rb +1 -1
- data/test/dummy/log/development.log +2 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ff6394e1f32776f2d275a0b448ceb968c493967b
|
|
4
|
+
data.tar.gz: 679a63b9dc98ea90c3a5491c59ab86ccf144c6e2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
-
|
|
39
|
-
selection =
|
|
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
|
-
|
|
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
|
|
data/app/models/apidae/obj.rb
CHANGED
|
@@ -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
|
-
|
|
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:
|
|
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
|
|
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
|
|
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
|
data/lib/apidae/version.rb
CHANGED
|
@@ -63,3 +63,5 @@ Migrating to AddLocalesDataToApidaeProjects (20190123214635)
|
|
|
63
63
|
[1m[35m (0.2ms)[0m [1m[35mCOMMIT[0m
|
|
64
64
|
[1m[35m (0.2ms)[0m [1m[34mSELECT pg_advisory_unlock(6140174353533887940)[0m
|
|
65
65
|
[1m[35m (0.2ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m
|
|
66
|
+
[1m[36mApidae::Obj Load (26.8ms)[0m [1m[34mSELECT 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)[0m
|
|
67
|
+
[1m[36mApidae::Obj Load (2.4ms)[0m [1m[34mSELECT 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)[0m
|
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.
|
|
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-
|
|
11
|
+
date: 2020-10-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|