apidae 0.1.0 → 0.1.1

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