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