apidae 1.0.5 → 1.2.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: 31b78ff6495e0ea74d29caaed66d76b83523d88c
4
- data.tar.gz: 59baa0f6635975e9853087ec0a270d7aa53e25a7
3
+ metadata.gz: 8bd545f978b6e92863317ee32f69d390366929e7
4
+ data.tar.gz: 7708db489c0c2a976645e121b03c3da60224ffc6
5
5
  SHA512:
6
- metadata.gz: 75220b103c72f0b97a8f4c1be7f3d7c190c20ddc6485ddc64c365a667d7ecb43b9f5021f162849a47f81cd241e78883551c480a911b3a550383276e12c248cdb
7
- data.tar.gz: ef1e4fb867c8b0945b73914b3d0d69540b45ad87c0d8fa65fd59cf4a071afa7a98d744fb42e47629451ceef3007d329ed1e269181e6c27ef6418254c367d5bc2
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
- if @obj && @obj.selections.first.add_or_refresh_obj(@obj.apidae_id)
66
- redirect_to referrer, notice: "L'objet touristique a bien été mis à jour."
67
- else
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 = (session.delete(:referrer) || projects_url)
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] << c[:coordonnees][:fr]
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] << c[:coordonnees][:fr]
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] << c[:coordonnees][:fr]
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] << c[:coordonnees][:fr]
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] << c[:coordonnees][:fr]
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] << c[:coordonnees][:fr]
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] << c[:coordonnees][:fr]
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] << c[:coordonnees][:fr]
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: [
@@ -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)
@@ -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, :contacts
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
- vos projets doivent être configurés pour exporter les données au format <strong>JSON V2</strong>, en
14
- <strong>groupant les objets exportés</strong>.
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] %>">
@@ -1,3 +1,3 @@
1
1
  module Apidae
2
- VERSION = "1.0.5"
2
+ VERSION = "1.2.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: 1.0.5
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-01 00:00:00.000000000 Z
11
+ date: 2020-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails