apidae 1.2.1 → 1.2.6

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: 8bd545f978b6e92863317ee32f69d390366929e7
4
- data.tar.gz: 7708db489c0c2a976645e121b03c3da60224ffc6
3
+ metadata.gz: 0b543869ff93b3f28bb112221a75f6453b893ea8
4
+ data.tar.gz: 59ad8e04d58263ae44fb6bc4ff97428592064e14
5
5
  SHA512:
6
- metadata.gz: 47c2dd654c858986dc9cb77bec0088a3dc3102496d3807baa0e4c25dfe9927a4e5f374da9d7995bf915f773e90e70ab0ba84939a0a250835d254e19c33341174
7
- data.tar.gz: 40cfebeba007efd9434a490cfdd001d47d4168ac4282276863178e3906273f523fa643f19c3e9dde7bdc3f9234d3f6166866b858f04765d14ac91cb3ad03760e
6
+ metadata.gz: 016145c8d3d73a03844b8c64cbf71df5b68a6c47becff87bdfff8e55d40bda4ed957f6c46192455a64ab8c10f58c42cc97436c04bacd44cf31915263919acd12
7
+ data.tar.gz: ebd5ae7ba7fa1b4447d61582d492e5e85d6c0ecbc3c5a52b5a0305ed09c0e075b95e3aeca68939e5b70c593baf1bc3dea4397107ba9ab5ba38ee0d8a5ec69675
@@ -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
 
@@ -7,6 +7,7 @@ module Apidae
7
7
 
8
8
  attr_accessor :locale
9
9
  attr_accessor :obj_version
10
+ attr_accessor :obj_versions
10
11
 
11
12
  store_accessor :title_data, :title
12
13
  store_accessor :owner_data, :owner_name, :owner_id
@@ -20,7 +21,7 @@ module Apidae
20
21
  :mobile_website, :shorty_url, :contacts
21
22
  store_accessor :location_data, :address, :place, :latitude, :longitude, :access, :territories, :environments
22
23
  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
24
+ store_accessor :rates_data, :rates_desc, :rates_desc_mode, :rates, :payment_methods, :includes, :excludes, :rates_extra
24
25
  store_accessor :service_data, :services, :equipments, :comfort, :activities, :challenged, :languages
25
26
  store_accessor :booking_data, :booking_desc, :booking_entities
26
27
  store_accessor :tags_data, :promo, :internal, :linked
@@ -100,6 +101,7 @@ module Apidae
100
101
  after_initialize do
101
102
  @locale = DEFAULT_LOCALE
102
103
  @obj_version = DEFAULT_VERSION
104
+ @obj_versions = {}
103
105
  end
104
106
 
105
107
  def root_obj
@@ -111,11 +113,15 @@ module Apidae
111
113
  end
112
114
 
113
115
  def in_version(v)
114
- @cached_versions ||= {}
115
- if @cached_versions[v].nil?
116
- @cached_versions[v] = versions.where(version: v).first
116
+ if v == DEFAULT_VERSION && root_obj_id.nil?
117
+ @obj_version = DEFAULT_VERSION
118
+ self
119
+ else
120
+ if @obj_versions[v].nil?
121
+ @obj_versions[v] = versions.where(version: v).first
122
+ end
123
+ @obj_versions[v]
117
124
  end
118
- @cached_versions[v]
119
125
  end
120
126
 
121
127
  def in_locale(l)
@@ -164,6 +170,7 @@ module Apidae
164
170
  apidae_obj
165
171
  end
166
172
 
173
+ # Note : overrides existing fields (not a merge)
167
174
  def self.populate_fields(apidae_obj, object_data, locales)
168
175
  type_fields = TYPES_DATA[object_data[:type]]
169
176
  apidae_obj.last_update = DateTime.parse(object_data[:gestion][:dateModification]) unless object_data[:gestion].blank?
@@ -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,15 @@ 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
+ # Note : WARNING - updated obj will only contain the provided fields
96
+ def add_or_refresh_obj(apidae_obj_id, fields = ["@all"])
97
+ if valid_api?
98
+ res = api_object(apidae_obj_id, fields)
94
99
  if res[:results] && res[:results].length == 1
95
100
  obj_data = res[:results].first.deep_symbolize_keys
96
101
  add_or_refresh(obj_data)
@@ -98,8 +103,9 @@ module Apidae
98
103
  end
99
104
  end
100
105
 
106
+ # Note : WARNING - updated objs will only contain the provided fields
101
107
  def add_or_refresh_objs(fields = ["@all"])
102
- if apidae_project
108
+ if valid_api?
103
109
  res = api_objects({fields: fields})
104
110
  if res[:results] && res[:results].length > 0
105
111
  res[:results].each do |result|
@@ -24,8 +24,11 @@ module Apidae
24
24
  ALL_VERSIONS = [STANDARD_VERSION, WINTER_VERSION, SUMMER_VERSION, CHALLENGED_VERSION, BUSINESS_VERSION,
25
25
  GROUPS_VERSION, ACTIVITIES_VERSION]
26
26
 
27
- LOCALIZED_FIELDS = [:title, :short_desc, :long_desc, :pictures, :attachments, :openings_desc, :rates_desc,
28
- :includes, :excludes, :extra, :booking_desc]
29
- ALL_FIELDS = LOCALIZED_FIELDS + [:theme_desc, :private_desc, :capacity, :telephone, :email, :website, :services,
27
+ LOCALIZED_FIELDS = [:title, :short_desc, :long_desc, :theme_desc, :pictures, :attachments,
28
+ :openings_desc, :rates_desc, :includes, :excludes, :extra, :booking_desc]
29
+ ALL_FIELDS = LOCALIZED_FIELDS + [:theme_desc, :private_desc, :capacity, :telephone, :email, :website,
30
+ :google, :facebook, :twitter, :yelp, :trip_advisor, :fax, :mobile_website, :shorty_url,
31
+ :openings, :rates, :services, :payment_methods, :categories, :themes, :labels, :chains,
32
+ :classification, :challenged, :environments, :languages, :products, :animals,
30
33
  :equipments, :comfort, :activities, :promo, :internal, :linked]
31
34
  end
@@ -1,3 +1,3 @@
1
1
  module Apidae
2
- VERSION = "1.2.1"
2
+ VERSION = "1.2.6"
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.1
4
+ version: 1.2.6
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-12 00:00:00.000000000 Z
11
+ date: 2020-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails