apidae 0.2.9 → 0.3.0

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: 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