apidae 1.0.5 → 1.2.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 +4 -4
- data/app/controllers/apidae/import_controller.rb +5 -0
- data/app/controllers/apidae/objects_controller.rb +13 -3
- data/app/controllers/apidae/projects_controller.rb +3 -2
- data/app/models/apidae/apidae_data_parser.rb +44 -17
- data/app/models/apidae/export.rb +9 -0
- data/app/models/apidae/obj.rb +2 -1
- data/app/models/apidae/selection.rb +2 -1
- data/app/views/apidae/import/_form.html.erb +4 -3
- data/lib/apidae/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8bd545f978b6e92863317ee32f69d390366929e7
|
4
|
+
data.tar.gz: 7708db489c0c2a976645e121b03c3da60224ffc6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47c2dd654c858986dc9cb77bec0088a3dc3102496d3807baa0e4c25dfe9927a4e5f374da9d7995bf915f773e90e70ab0ba84939a0a250835d254e19c33341174
|
7
|
+
data.tar.gz: 40cfebeba007efd9434a490cfdd001d47d4168ac4282276863178e3906273f523fa643f19c3e9dde7bdc3f9234d3f6166866b858f04765d14ac91cb3ad03760e
|
@@ -91,6 +91,11 @@ module Apidae
|
|
91
91
|
logger.error("Error is : #{err}")
|
92
92
|
success = false
|
93
93
|
e.update(status: Export::CANCELLED)
|
94
|
+
rescue Exception => e
|
95
|
+
logger.error "Failed to import file : #{e.file_url}"
|
96
|
+
logger.error("Error is : #{err}")
|
97
|
+
success = false
|
98
|
+
e.update(status: Export::CANCELLED)
|
94
99
|
end
|
95
100
|
success
|
96
101
|
end
|
@@ -62,9 +62,19 @@ module Apidae
|
|
62
62
|
|
63
63
|
def refresh
|
64
64
|
referrer = (session.delete(:referrer) || objects_url)
|
65
|
-
|
66
|
-
|
67
|
-
|
65
|
+
begin
|
66
|
+
if @obj && @obj.selections.first.add_or_refresh_obj(@obj.apidae_id)
|
67
|
+
redirect_to referrer, notice: "L'objet touristique a bien été mis à jour."
|
68
|
+
else
|
69
|
+
redirect_to referrer, alert: "Une erreur s'est produite lors de la mise à jour de l'objet."
|
70
|
+
end
|
71
|
+
rescue OpenURI::HTTPError => err
|
72
|
+
logger.error("Failed to refresh obj : #{@obj.apidae_id}")
|
73
|
+
logger.error("Error is : #{err}")
|
74
|
+
redirect_to referrer, alert: "Une erreur s'est produite lors de la mise à jour de l'objet. Veuillez vérifier que le projet Apidae comporte une clé API valide."
|
75
|
+
rescue Exception => ex
|
76
|
+
logger.error("Failed to refresh obj : #{@obj.apidae_id}")
|
77
|
+
logger.error("Error is : #{err}")
|
68
78
|
redirect_to referrer, alert: "Une erreur s'est produite lors de la mise à jour de l'objet."
|
69
79
|
end
|
70
80
|
end
|
@@ -3,6 +3,7 @@ require_dependency "apidae/application_controller"
|
|
3
3
|
module Apidae
|
4
4
|
class ProjectsController < ApplicationController
|
5
5
|
before_action :set_project, only: [:edit, :update, :destroy]
|
6
|
+
skip_before_action :check_user_data!, only: [:create]
|
6
7
|
|
7
8
|
def index
|
8
9
|
if user_is_admin?
|
@@ -24,7 +25,7 @@ module Apidae
|
|
24
25
|
else
|
25
26
|
@project = Project.new(project_params)
|
26
27
|
if @project.save
|
27
|
-
referrer =
|
28
|
+
referrer = params[:redirect_to] || session.delete(:referrer) || projects_url
|
28
29
|
redirect_to (referrer + "?apidae_project_id=#{@project.id}"), notice: 'Le projet a bien été créé'
|
29
30
|
else
|
30
31
|
flash.now[:alert] = "Une erreur s'est produite lors la création du projet"
|
@@ -54,7 +55,7 @@ module Apidae
|
|
54
55
|
|
55
56
|
def update_project
|
56
57
|
if @project.update(project_params)
|
57
|
-
referrer = session.delete(:referrer)
|
58
|
+
referrer = params[:redirect_to] || session.delete(:referrer)
|
58
59
|
redirect_to (referrer + "?apidae_project_id=#{@project.id}"), notice: 'Le projet a bien été mis à jour'
|
59
60
|
else
|
60
61
|
flash.now[:alert] = "Une erreur s'est produite lors la mise à jour du projet"
|
@@ -9,6 +9,23 @@ module Apidae
|
|
9
9
|
TWITTER = 3755
|
10
10
|
YELP = 4007
|
11
11
|
TRIP_ADVISOR = 4000
|
12
|
+
FAX = 202
|
13
|
+
MOBILE_WEBSITE = 3769
|
14
|
+
SHORTY_URL = 4923
|
15
|
+
|
16
|
+
CONTACTS_MAP = {
|
17
|
+
'telephone' => PHONE,
|
18
|
+
'email' => EMAIL,
|
19
|
+
'website' => WEBSITE,
|
20
|
+
'facebook' => FACEBOOK,
|
21
|
+
'google' => GOOGLE,
|
22
|
+
'trip_advisor' => TRIP_ADVISOR,
|
23
|
+
'twitter' => TWITTER,
|
24
|
+
'yelp' => YELP,
|
25
|
+
'fax' => FAX,
|
26
|
+
'mobile_website' => MOBILE_WEBSITE,
|
27
|
+
'shorty_url' => SHORTY_URL
|
28
|
+
}
|
12
29
|
|
13
30
|
MODE_AUTO = 'auto'
|
14
31
|
MODE_MANUAL = 'manual'
|
@@ -114,7 +131,7 @@ module Apidae
|
|
114
131
|
url: pic[:traductionFichiers][0][:url].gsub('http:', 'https:'),
|
115
132
|
description: localized_value(pic, :legende, locale),
|
116
133
|
credits: localized_value(pic, :copyright, locale),
|
117
|
-
expiration_date: pic[:dateLimiteDePublication]
|
134
|
+
expiration_date: pic[:dateLimiteDePublication] || ''
|
118
135
|
}
|
119
136
|
end
|
120
137
|
end
|
@@ -149,29 +166,38 @@ module Apidae
|
|
149
166
|
contact_entries.each do |c|
|
150
167
|
case c[:type][:id]
|
151
168
|
when PHONE, ALT_PHONE
|
152
|
-
contact_details[:telephone] ||=
|
153
|
-
contact_details[:telephone]
|
169
|
+
contact_details[:telephone] ||= {}
|
170
|
+
contact_details[:telephone][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
154
171
|
when EMAIL
|
155
|
-
contact_details[:email] ||=
|
156
|
-
contact_details[:email]
|
172
|
+
contact_details[:email] ||= {}
|
173
|
+
contact_details[:email][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
157
174
|
when WEBSITE
|
158
|
-
contact_details[:website] ||=
|
159
|
-
contact_details[:website]
|
175
|
+
contact_details[:website] ||= {}
|
176
|
+
contact_details[:website][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
160
177
|
when GOOGLE
|
161
|
-
contact_details[:google] ||=
|
162
|
-
contact_details[:google]
|
178
|
+
contact_details[:google] ||= {}
|
179
|
+
contact_details[:google][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
163
180
|
when FACEBOOK
|
164
|
-
contact_details[:facebook] ||=
|
165
|
-
contact_details[:facebook]
|
181
|
+
contact_details[:facebook] ||= {}
|
182
|
+
contact_details[:facebook][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
166
183
|
when TWITTER
|
167
|
-
contact_details[:twitter] ||=
|
168
|
-
contact_details[:twitter]
|
184
|
+
contact_details[:twitter] ||= {}
|
185
|
+
contact_details[:twitter][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
169
186
|
when YELP
|
170
|
-
contact_details[:yelp] ||=
|
171
|
-
contact_details[:yelp]
|
187
|
+
contact_details[:yelp] ||= {}
|
188
|
+
contact_details[:yelp][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
172
189
|
when TRIP_ADVISOR
|
173
|
-
contact_details[:trip_advisor] ||=
|
174
|
-
contact_details[:trip_advisor]
|
190
|
+
contact_details[:trip_advisor] ||= {}
|
191
|
+
contact_details[:trip_advisor][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
192
|
+
when FAX
|
193
|
+
contact_details[:fax] ||= {}
|
194
|
+
contact_details[:fax][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
195
|
+
when MOBILE_WEBSITE
|
196
|
+
contact_details[:mobile_website] ||= {}
|
197
|
+
contact_details[:mobile_website][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
198
|
+
when SHORTY_URL
|
199
|
+
contact_details[:shorty_url] ||= {}
|
200
|
+
contact_details[:shorty_url][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
175
201
|
else
|
176
202
|
end
|
177
203
|
end
|
@@ -339,6 +365,7 @@ module Apidae
|
|
339
365
|
external_id: o[:identifiantTechnique],
|
340
366
|
start_date: o[:dateDebut],
|
341
367
|
end_date: o[:dateFin],
|
368
|
+
each_year: o[:tousLesAns],
|
342
369
|
closing_days: closing_days.blank? ? [] : closing_days.map {|d| d[:dateSpeciale]},
|
343
370
|
details: node_value(o, :complementHoraire, *locales),
|
344
371
|
time_periods: [
|
data/app/models/apidae/export.rb
CHANGED
@@ -7,6 +7,15 @@ module Apidae
|
|
7
7
|
|
8
8
|
validates_presence_of :file_url, :project_id
|
9
9
|
|
10
|
+
before_save :normalize_url
|
11
|
+
|
12
|
+
def normalize_url
|
13
|
+
self.file_url = file_url.strip
|
14
|
+
unless file_url.include?('/')
|
15
|
+
self.file_url = "http://export.apidae-tourisme.com/exports/#{file_url}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
10
19
|
# Note : handle reset case
|
11
20
|
def self.pending
|
12
21
|
where(remote_status: 'SUCCESS', status: PENDING).order(:id)
|
data/app/models/apidae/obj.rb
CHANGED
@@ -16,7 +16,8 @@ module Apidae
|
|
16
16
|
store_accessor :type_data, :categories, :themes, :capacity, :classification, :labels, :chains, :area, :track,
|
17
17
|
:products, :audience, :animals, :animals_desc, :extra, :duration, :certifications, :business
|
18
18
|
store_accessor :entity_data, :entity_id, :entity_name, :service_provider_id
|
19
|
-
store_accessor :contact_data, :telephone, :email, :website, :google, :facebook, :twitter, :yelp, :trip_advisor, :
|
19
|
+
store_accessor :contact_data, :telephone, :email, :website, :google, :facebook, :twitter, :yelp, :trip_advisor, :fax,
|
20
|
+
:mobile_website, :shorty_url, :contacts
|
20
21
|
store_accessor :location_data, :address, :place, :latitude, :longitude, :access, :territories, :environments
|
21
22
|
store_accessor :openings_data, :openings_desc, :openings_desc_mode, :openings, :time_periods, :openings_extra
|
22
23
|
store_accessor :rates_data, :rates_desc, :rates_desc_mode, :rates, :payment_methods, :includes, :excludes
|
@@ -116,8 +116,9 @@ module Apidae
|
|
116
116
|
obj = Obj.update_object(obj, obj_data, apidae_project.locales, apidae_project.versions)
|
117
117
|
else
|
118
118
|
obj = Obj.add_object(obj_data, apidae_project.locales, apidae_project.versions)
|
119
|
-
SelectionObject.create(apidae_selection_id: id, apidae_object_id: added_obj.id)
|
120
119
|
end
|
120
|
+
SelectionObject.create(apidae_selection_id: id, apidae_object_id: obj.id) unless objects.include?(obj)
|
121
|
+
|
121
122
|
if Rails.application.config.respond_to?(:apidae_obj_refresh_callback)
|
122
123
|
Rails.application.config.apidae_obj_refresh_callback.call(obj.apidae_id)
|
123
124
|
end
|
@@ -9,9 +9,10 @@
|
|
9
9
|
</div>
|
10
10
|
<% end %>
|
11
11
|
<p>
|
12
|
-
Pour que les données soient importées correctement,
|
13
|
-
|
14
|
-
|
12
|
+
Pour que les données soient importées correctement, vos projets doivent être configurés pour exporter les données
|
13
|
+
au format <strong>JSON V2</strong>, en <strong>groupant les objets exportés</strong>. L'adresse du fichier d'export
|
14
|
+
est à récupérer dans :<br/>
|
15
|
+
<em>Page du projet Apidae > Onglet "Calcul des sélections et Exports " > Accéder à la ficher de l'export > Champ "Fichier d'export"</em>
|
15
16
|
</p>
|
16
17
|
|
17
18
|
<div class="<%= styles[:form_field] %>">
|
data/lib/apidae/version.rb
CHANGED
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.
|
4
|
+
version: 1.2.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: 2020-06-
|
11
|
+
date: 2020-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|