apidae 0.2.9 → 0.3.0

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
2
  SHA1:
3
- metadata.gz: 0d660259bcadee0fabcc6f39060167d89080073e
4
- data.tar.gz: 00915aa948657fac17f4f023ec677e72b7c067c9
3
+ metadata.gz: c31e50b18e7ff1d211b61703728b267bf388649c
4
+ data.tar.gz: d33de8c1b3d227c5f133811446645f9715427347
5
5
  SHA512:
6
- metadata.gz: 5b26d1d9e7012f9f1e6c04227b1be4c8fd15b7170562b628149615f78d238fee03429676cce28d1c9a75c2917e935d951f5fcca0a806ae43b7463b5f67481931
7
- data.tar.gz: a80d476fe8b5be391448e3f4c033f694f51feb8bfd290bc9dec67c077d333ea2f45ef8042603f38388c204561959055358ed99a3bfc6bfe16a1ef2985ff17760
6
+ metadata.gz: 16f8ae25874db45da9f5739846db146b74d27f05f6ff9346a0deee3f54fed5329ad6a7597c01ec59c7b128b17f7d902ec1d71aa227308048872a05c2e81b7740
7
+ data.tar.gz: cd4e15709a33f4de68a004c1a3baf6ba040efe676481e182c4b2dc3709ad9865c95b79c9acfe69595e2b89b72c8fe3e1541d7a083c236f66042e0956b04fae75
@@ -32,6 +32,7 @@ module Apidae
32
32
  end
33
33
  end
34
34
  end
35
+ create(result.except(:selections).merge({remote_file: zip_file, status: STATUS_COMPLETE}))
35
36
  logger.info "Import results : #{result}"
36
37
  result
37
38
  end
@@ -8,13 +8,14 @@ module Apidae
8
8
 
9
9
  store_accessor :pictures_data, :pictures
10
10
  store_accessor :attachments_data, :attachments
11
- store_accessor :type_data, :categories, :themes, :capacite, :classement, :classementPrefectoral, :labels
11
+ store_accessor :type_data, :categories, :themes, :capacity, :classification, :labels, :chains
12
12
  store_accessor :entity_data, :entity_id, :entity_name
13
13
  store_accessor :contact, :telephone, :email, :website
14
14
  store_accessor :address, :address_fields
15
15
  store_accessor :openings_data, :openings_desc, :openings
16
16
  store_accessor :rates_data, :rates_desc, :rates, :payment_methods
17
- store_accessor :service_data, :services, :equipements, :labelsTourismeHandicap
17
+ store_accessor :service_data, :services, :equipments, :comfort, :activities
18
+ store_accessor :tags_data, :tags
18
19
 
19
20
  ACT = 'ACTIVITE'
20
21
  COS = 'COMMERCE_ET_SERVICE'
@@ -76,11 +77,13 @@ module Apidae
76
77
  apidae_obj.openings_data = parse_openings(object_data[:ouverture])
77
78
  apidae_obj.rates_data = parse_rates(object_data[:descriptionTarif])
78
79
  apidae_obj.reservation = parse_reservation(object_data[:reservation])
79
- apidae_obj.type_data = object_data[type_fields[:node]]
80
+ apidae_obj.type_data = parse_type_data(object_data[type_fields[:node]], object_data[:prestations])
80
81
  apidae_obj.pictures_data = pictures_urls(object_data[:illustrations])
81
- apidae_obj.attachments_data = attachments_urls(object_data[:illustrations])
82
+ apidae_obj.attachments_data = attachments_urls(object_data[:multimedias])
82
83
  apidae_obj.entity_data = entity_fields(object_data[:informations])
83
- apidae_obj.service_data = object_data[:prestations]
84
+ apidae_obj.service_data = parse_service_data(object_data[:prestations], object_data[type_fields[:node]])
85
+ apidae_obj.tags_data = parse_tags_data(object_data[:presentation], object_data[:criteresInternes])
86
+ apidae_obj.meta_data = object_data[:metadonnees]
84
87
  apidae_obj.save!
85
88
  end
86
89
 
@@ -172,6 +175,42 @@ module Apidae
172
175
  end
173
176
  end
174
177
 
178
+ def self.parse_type_data(data_hash, prestations_hash)
179
+ if data_hash
180
+ {
181
+ categories: lists_ids(data_hash[:categories]),
182
+ themes: lists_ids(data_hash[:themes]),
183
+ capacity: data_hash[:capacite],
184
+ classification: nodes_ids(data_hash[:classement], data_hash[:classementPrefectoral]),
185
+ labels: lists_ids(data_hash[:labels], prestations_hash[:labelsTourismeHandicap]),
186
+ chains: lists_ids(data_hash[:chaines]) + nodes_ids(data_hash[:chaineEtLabel]),
187
+ activities: lists_ids(data_hash[:activites])
188
+ }
189
+ end
190
+ end
191
+
192
+ def self.parse_service_data(data_hash, type_data_hash)
193
+ if data_hash
194
+ {
195
+ services: lists_ids(data_hash[:services]),
196
+ equipments: lists_ids(data_hash[:equipements]),
197
+ comfort: lists_ids(data_hash[:conforts]),
198
+ activities: lists_ids(data_hash[:activites]) + lists_ids(data_hash[:activites])
199
+ }
200
+ end
201
+ end
202
+
203
+ def self.parse_tags_data(pres_data_hash, crit_data_hash)
204
+ tags = []
205
+ if pres_data_hash
206
+ tags += lists_ids(pres_data_hash[:typologiesPromoSitra])
207
+ end
208
+ unless crit_data_hash.blank?
209
+ tags += crit_data_hash.map {|c| c[:id]}
210
+ end
211
+ {tags: tags}
212
+ end
213
+
175
214
  def self.parse_reservation(reservation_hash)
176
215
  if reservation_hash
177
216
  if reservation_hash[:complement]
@@ -218,11 +257,15 @@ module Apidae
218
257
  end
219
258
 
220
259
  def self.node_id(node, key)
221
- if node && node[key]
222
- node[key][:id]
223
- else
224
- ''
225
- end
260
+ node[key][:id] if node && node[key]
261
+ end
262
+
263
+ def self.lists_ids(*lists)
264
+ lists.blank? ? [] : lists.map {|l| l.blank? ? [] : l.map {|elt| elt[:id]}}.flatten.uniq
265
+ end
266
+
267
+ def self.nodes_ids(*nodes)
268
+ nodes.blank? ? [] : nodes.select {|n| !n.blank?}.map {|n| n[:id]}
226
269
  end
227
270
  end
228
271
  end
@@ -40,13 +40,25 @@ module Apidae
40
40
  end
41
41
 
42
42
  def api_results(opts = {})
43
- query_args = build_args(SELECTION_ENDPOINT, opts.merge({selection_ids: [apidae_id]}))
44
- query_api(query_args, true)
43
+ key = cache_key(:results)
44
+ res = $apidae_cache.read(key)
45
+ unless res
46
+ query_args = build_args(SELECTION_ENDPOINT, opts.merge({selection_ids: [apidae_id]}))
47
+ res = query_api(query_args, true)
48
+ $apidae_cache.write(key, res)
49
+ end
50
+ res
45
51
  end
46
52
 
47
53
  def api_agenda(from, to)
48
- query_args = build_args(AGENDA_ENDPOINT, {selection_ids: [apidae_id], from: from, to: to})
49
- query_api(query_args, true)
54
+ key = cache_key(:agenda, from, to)
55
+ res = $apidae_cache.read(key)
56
+ unless res
57
+ query_args = build_args(AGENDA_ENDPOINT, {selection_ids: [apidae_id], from: from, to: to})
58
+ res = query_api(query_args, true)
59
+ $apidae_cache.write(key, res)
60
+ end
61
+ res
50
62
  end
51
63
 
52
64
  private
@@ -131,5 +143,9 @@ module Apidae
131
143
  def generate_reference
132
144
  self.reference ||= (self.label.parameterize || self.apidae_id)
133
145
  end
146
+
147
+ def cache_key(*args)
148
+ "#{apidae_id}_#{args.map {|a| a.to_s.parameterize}.join('_')}"
149
+ end
134
150
  end
135
151
  end
@@ -3,7 +3,7 @@ module Apidae
3
3
  def self.import(towns_json)
4
4
  towns_hashes = JSON.parse(towns_json, symbolize_names: true)
5
5
  if towns_hashes.length != count
6
- countries = Hash[Reference.where(apidae_type: "Pays").map {|ref| [ref.id, ref.label(:fr)]}]
6
+ countries = Hash[Reference.where(apidae_type: "Pays").map {|ref| [ref.apidae_id, ref.label(:fr)]}]
7
7
  towns_hashes.each do |town_data|
8
8
  town = Town.find_or_initialize_by(apidae_id: town_data[:id])
9
9
  town.name = town_data[:nom]
@@ -10,7 +10,9 @@
10
10
  <thead class="<%= styles[:table_head] %>">
11
11
  <tr>
12
12
  <th>Date</th>
13
- <th>Fichier</th>
13
+ <th>Créations</th>
14
+ <th>Mises à jour</th>
15
+ <th>Suppressions</th>
14
16
  <th>Statut</th>
15
17
  </tr>
16
18
  </thead>
@@ -18,8 +20,10 @@
18
20
  <% @last_imports.each do |import| %>
19
21
  <tr>
20
22
  <td><%= import.updated_at.strftime('Le %d/%m/%Y à %H:%M') if import.updated_at %></td>
21
- <td><%= import.remote_file %></td>
22
- <td><%= import.status %></td>
23
+ <td><%= import.created %></td>
24
+ <td><%= import.updated %></td>
25
+ <td><%= import.deleted %></td>
26
+ <td><%= t "apidae.file_import.status.#{import.status}" %></td>
23
27
  </tr>
24
28
  <% end %>
25
29
  <% if @last_imports.empty? %>
@@ -0,0 +1 @@
1
+ $apidae_cache = ActiveSupport::Cache::FileStore.new('cache/apidae', expires_in: 24.hours)
@@ -0,0 +1,7 @@
1
+ fr:
2
+ apidae:
3
+ file_import:
4
+ status:
5
+ pending: En cours
6
+ complete: Terminé
7
+ cancelled: Annulé
@@ -0,0 +1,5 @@
1
+ class AddTagsDataToApidaeObjects < ActiveRecord::Migration[5.1]
2
+ def change
3
+ add_column :apidae_objects, :tags_data, :jsonb
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddMetaDataToApidaeObjects < ActiveRecord::Migration[5.1]
2
+ def change
3
+ add_column :apidae_objects, :meta_data, :jsonb
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module Apidae
2
- VERSION = "0.2.9"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -10,7 +10,7 @@
10
10
  #
11
11
  # It's strongly recommended that you check this file into your version control system.
12
12
 
13
- ActiveRecord::Schema.define(version: 20180307170349) do
13
+ ActiveRecord::Schema.define(version: 20180314093512) do
14
14
 
15
15
  # These are extensions that must be enabled in order to support this database
16
16
  enable_extension "plpgsql"
@@ -72,6 +72,7 @@ ActiveRecord::Schema.define(version: 20180307170349) do
72
72
  t.jsonb "service_data"
73
73
  t.jsonb "rates_data"
74
74
  t.jsonb "attachments_data"
75
+ t.jsonb "tags_data"
75
76
  end
76
77
 
77
78
  create_table "apidae_objects_selections", id: :serial, force: :cascade do |t|
@@ -332,3 +332,15 @@ Migrating to CreateApidaeReferences (20180307170349)
332
332
   (0.1ms) COMMIT
333
333
   (0.2ms) SELECT pg_advisory_unlock(6140174353533887940)
334
334
   (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
335
+  (0.2ms) SELECT pg_try_advisory_lock(6140174353533887940)
336
+  (2.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
337
+ Migrating to AddTagsDataToApidaeObjects (20180314093512)
338
+  (0.2ms) BEGIN
339
+  (2.6ms) ALTER TABLE "apidae_objects" ADD "tags_data" jsonb
340
+ SQL (0.3ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) RETURNING "version" [["version", "20180314093512"]]
341
+  (1.1ms) COMMIT
342
+ ActiveRecord::InternalMetadata Load (1.3ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", "environment"], ["LIMIT", 1]]
343
+  (0.1ms) BEGIN
344
+  (0.1ms) COMMIT
345
+  (0.2ms) SELECT pg_advisory_unlock(6140174353533887940)
346
+  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
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: 0.2.9
4
+ version: 0.3.0
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: 2018-03-08 00:00:00.000000000 Z
11
+ date: 2018-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -113,6 +113,8 @@ files:
113
113
  - app/views/apidae/selections/new.html.erb
114
114
  - app/views/apidae/selections/show.html.erb
115
115
  - app/views/layouts/apidae/application.html.erb
116
+ - config/initializers/cache.rb
117
+ - config/locales/apidae.fr.yml
116
118
  - config/routes.rb
117
119
  - db/migrate/20170512212941_create_apidae_selections.rb
118
120
  - db/migrate/20170512214641_create_apidae_objects.rb
@@ -132,6 +134,8 @@ files:
132
134
  - db/migrate/20180222105302_rename_openings_to_openings_data.rb
133
135
  - db/migrate/20180307164936_add_attachments_data_to_apidae_objects.rb
134
136
  - db/migrate/20180307170349_create_apidae_references.rb
137
+ - db/migrate/20180314093512_add_tags_data_to_apidae_objects.rb
138
+ - db/migrate/20180314132631_add_meta_data_to_apidae_objects.rb
135
139
  - lib/apidae.rb
136
140
  - lib/apidae/engine.rb
137
141
  - lib/apidae/version.rb