apidae 0.1.0 → 0.1.1

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: 63b211aee25599748e88d29aac6ce145b432b307
4
- data.tar.gz: dd74e76a618885e9dbc6306fbe2b96c0db6b15ee
3
+ metadata.gz: 9dad5ac33a928dbc7b38f6082852b3fbc567f068
4
+ data.tar.gz: 1314db67b370e78f927c66efa0472fd2b0050b2a
5
5
  SHA512:
6
- metadata.gz: b877a7868af4dee3939ae6e1faabeb881a30abaf9a0a1e71f3d4b42e50656e9c2cba7a0b471f09806bafb81a131f5cddb32107b75108357ba52cecf04803f68c
7
- data.tar.gz: d2c6fb144801f332f1e5b2dac5f100aa6a8cc80c0174146fcc3d2ec799e368655dfc2e2a7b3af2ba511a3a4d6be98d8c54805f673453bd7d5726e093fa73f746
6
+ metadata.gz: d638d3691a2e55492b57ed553a83b4ed7e610cc8a5b77f936d4009f499a36512c72e47d3e3067810e94fadb25f12f8e639dbb1113d3bbd8cd345d38cbf139b00
7
+ data.tar.gz: 30131ad110b06adb93f6489ce4fdf2b82992247a8a382df17073d0788be656f448341ad048abbaeab177b2f348b7ab6598643d78d7da142896504de26290a116
@@ -7,6 +7,7 @@ module Apidae
7
7
 
8
8
  store :pictures_data, accessors: [:pictures], coder: JSON
9
9
  store :type_data, accessors: [:categories, :themes], coder: JSON
10
+ store :entity_data, accessors: [:entity_id, :entity_name]
10
11
  store :contact, accessors: [:telephone, :email, :website], coder: JSON
11
12
  store :address, accessors: [:address_fields], coder: JSON
12
13
  store :openings, accessors: [:description, :opening_periods], coder: JSON
@@ -35,7 +36,7 @@ module Apidae
35
36
  WEBSITE = 205
36
37
 
37
38
 
38
- def self.import(json_dir)
39
+ def self.import_updates(json_dir)
39
40
  result = false
40
41
  if Dir.exist?(json_dir)
41
42
  Dir.foreach(json_dir) do |f|
@@ -45,27 +46,24 @@ module Apidae
45
46
  objects_hashes = JSON.parse(objects_json, symbolize_names: true)
46
47
  objects_hashes.each do |object_data|
47
48
  type_fields = TYPES_DATA[object_data[:type]]
48
- existing_obj = Apidae::Object.find_by_apidae_id(object_data[:id])
49
- unless existing_obj
50
- Apidae::Object.create!(
51
- apidae_id: object_data[:id],
52
- apidae_type: object_data[:type],
53
- apidae_subtype: node_value(object_data[type_fields[:node]], object_data[type_fields[:subtype]]),
54
- title: node_value(object_data, :nom),
55
- short_desc: node_value(object_data[:presentation], :descriptifCourt),
56
- long_desc: node_value(object_data[:presentation], :descriptifDetaille),
57
- contact: contact(object_data[:informations]),
58
- address: address(object_data[:localisation][:adresse]),
59
- town: town(object_data[:localisation][:adresse]),
60
- latitude: latitude(object_data[:localisation]),
61
- longitude: longitude(object_data[:localisation]),
62
- openings: openings(object_data[:ouverture]),
63
- rates: rates(object_data[:descriptionTarif]),
64
- reservation: reservation(object_data[:reservation]),
65
- type_data: object_data[type_fields[:node]],
66
- pictures_data: pictures_urls(object_data[:illustrations])
67
- )
68
- end
49
+ apidae_obj = Apidae::Object.first_or_initialize(apidae_id: object_data[:id])
50
+ apidae_obj.apidae_type = object_data[:type]
51
+ apidae_obj.apidae_subtype = node_value(object_data[type_fields[:node]], object_data[type_fields[:subtype]])
52
+ apidae_obj.title = node_value(object_data, :nom)
53
+ apidae_obj.short_desc = node_value(object_data[:presentation], :descriptifCourt)
54
+ apidae_obj.long_desc = node_value(object_data[:presentation], :descriptifDetaille)
55
+ apidae_obj.contact = contact(object_data[:informations])
56
+ apidae_obj.address = address(object_data[:localisation][:adresse])
57
+ apidae_obj.town = town(object_data[:localisation][:adresse])
58
+ apidae_obj.latitude = latitude(object_data[:localisation])
59
+ apidae_obj.longitude = longitude(object_data[:localisation])
60
+ apidae_obj.openings = openings(object_data[:ouverture])
61
+ apidae_obj.rates = rates(object_data[:descriptionTarif])
62
+ apidae_obj.reservation = reservation(object_data[:reservation])
63
+ apidae_obj.type_data = object_data[type_fields[:node]]
64
+ apidae_obj.pictures_data = pictures_urls(object_data[:illustrations])
65
+ apidae_obj.entity_data = entity_fields(object_data[:informations])
66
+ apidae_obj.save!
69
67
  end
70
68
  end
71
69
  result = true
@@ -74,6 +72,19 @@ module Apidae
74
72
  end
75
73
  end
76
74
 
75
+ def self.import_deletions(json_file)
76
+ result = false
77
+ if File.exist?(json_file)
78
+ deleted_json = File.read(json_file)
79
+ deleted_ids = JSON.parse(deleted_json)
80
+ deleted_ids.each do |id|
81
+ Apidae::Object.find_by_apidae_id(id).destroy
82
+ end
83
+ result = true
84
+ end
85
+ result
86
+ end
87
+
77
88
  def self.update_fields(json_dir)
78
89
  result = false
79
90
  if Dir.exist?(json_dir)
@@ -192,6 +203,12 @@ module Apidae
192
203
  end
193
204
  end
194
205
 
206
+ def self.entity_fields(information_hash)
207
+ if information_hash && information_hash[:structureGestion]
208
+ {entity_id: information_hash[:structureGestion][:id]}
209
+ end
210
+ end
211
+
195
212
  def contact_text
196
213
  entries = []
197
214
  JSON.parse(contact).each_pair do |k, v|
@@ -9,19 +9,23 @@ module Apidae
9
9
  selections_json = File.read(json_file)
10
10
  selections_hashes = JSON.parse(selections_json, symbolize_names: true)
11
11
  selections_hashes.each do |selection_data|
12
- existing_sel = Apidae::Selection.find_by_apidae_id(selection_data[:id])
13
- unless existing_sel
14
- selection = Apidae::Selection.create!(
15
- label: selection_data[:nom],
16
- apidae_id: selection_data[:id]
17
- )
18
- if selection_data[:objetsTouristiques]
19
- selection_data[:objetsTouristiques].each do |o|
20
- apidae_object = Apidae::Object.find_by_apidae_id(o[:id])
21
- selection.objects << apidae_object
22
- selection.save!
23
- end
24
- end
12
+ apidae_sel = Apidae::Selection.first_or_initialize(apidae_id: selection_data[:id])
13
+ apidae_sel.label = selection_data[:nom]
14
+ apidae_sel.save!
15
+
16
+ current_objs = apidae_sel.objects.collect {|obj| obj.apidae_id}
17
+ imported_objs = selection_data[:objetsTouristiques] || []
18
+ added = imported_objs - current_objs
19
+ removed = current_objs - imported_objs
20
+
21
+ added.each do |o|
22
+ apidae_object = Apidae::Object.find_by_apidae_id(o[:id])
23
+ apidae_sel.objects << apidae_object
24
+ end
25
+
26
+ removed.each do |o|
27
+ apidae_object = Apidae::Object.find_by_apidae_id(o[:id])
28
+ apidae_sel.objects.delete(apidae_object)
25
29
  end
26
30
  end
27
31
  end
@@ -0,0 +1,5 @@
1
+ class AddEntityDataToObjects < ActiveRecord::Migration
2
+ def change
3
+ add_column :apidae_objects, :entity_data, :text
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module Apidae
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
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.1.0
4
+ version: 0.1.1
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: 2017-05-14 00:00:00.000000000 Z
11
+ date: 2017-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -94,6 +94,7 @@ files:
94
94
  - db/migrate/20170513115401_add_pictures_data_to_objects.rb
95
95
  - db/migrate/20170513121215_create_apidae_attached_files.rb
96
96
  - db/migrate/20170513205932_rename_objects_selections_table.rb
97
+ - db/migrate/20170720161134_add_entity_data_to_objects.rb
97
98
  - lib/apidae.rb
98
99
  - lib/apidae/engine.rb
99
100
  - lib/apidae/version.rb