apidae 0.7.3 → 0.7.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (150) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +20 -20
  3. data/README.rdoc +2 -2
  4. data/Rakefile +38 -38
  5. data/app/assets/images/apidae/logo-apidae-grey.svg +84 -84
  6. data/app/assets/javascripts/apidae/application.js +13 -13
  7. data/app/assets/stylesheets/apidae/application.css +15 -15
  8. data/app/controllers/apidae/api_controller.rb +25 -25
  9. data/app/controllers/apidae/application_controller.rb +6 -6
  10. data/app/controllers/apidae/dashboard_controller.rb +13 -13
  11. data/app/controllers/apidae/import_controller.rb +68 -68
  12. data/app/controllers/apidae/objects_controller.rb +59 -59
  13. data/app/controllers/apidae/projects_controller.rb +35 -35
  14. data/app/controllers/apidae/references_controller.rb +9 -9
  15. data/app/controllers/apidae/selections_controller.rb +53 -53
  16. data/app/helpers/apidae/api_helper.rb +4 -4
  17. data/app/helpers/apidae/application_helper.rb +4 -4
  18. data/app/helpers/apidae/dashboard_helper.rb +4 -4
  19. data/app/helpers/apidae/import_helper.rb +4 -4
  20. data/app/helpers/apidae/objects_helper.rb +4 -4
  21. data/app/helpers/apidae/references_helper.rb +4 -4
  22. data/app/helpers/apidae/selections_helper.rb +4 -4
  23. data/app/models/apidae/application_record.rb +5 -5
  24. data/app/models/apidae/export.rb +13 -13
  25. data/app/models/apidae/file_import.rb +161 -161
  26. data/app/models/apidae/obj.rb +351 -351
  27. data/app/models/apidae/project.rb +4 -4
  28. data/app/models/apidae/reference.rb +45 -45
  29. data/app/models/apidae/selection.rb +160 -160
  30. data/app/models/apidae/selection_object.rb +6 -6
  31. data/app/models/apidae/town.rb +28 -27
  32. data/app/views/apidae/dashboard/index.html.erb +41 -41
  33. data/app/views/apidae/import/callback.html.erb +2 -2
  34. data/app/views/apidae/objects/_form.html.erb +73 -73
  35. data/app/views/apidae/objects/edit.html.erb +6 -6
  36. data/app/views/apidae/objects/index.html.erb +34 -34
  37. data/app/views/apidae/objects/index.json.jbuilder +6 -6
  38. data/app/views/apidae/objects/new.html.erb +5 -5
  39. data/app/views/apidae/objects/show.html.erb +74 -74
  40. data/app/views/apidae/projects/edit.html.erb +32 -32
  41. data/app/views/apidae/projects/index.html.erb +34 -34
  42. data/app/views/apidae/references/index.html.erb +34 -34
  43. data/app/views/apidae/selections/_form.html.erb +29 -29
  44. data/app/views/apidae/selections/edit.html.erb +6 -6
  45. data/app/views/apidae/selections/index.html.erb +34 -34
  46. data/app/views/apidae/selections/new.html.erb +5 -5
  47. data/app/views/apidae/selections/show.html.erb +19 -19
  48. data/app/views/layouts/apidae/application.html.erb +14 -14
  49. data/config/locales/apidae.fr.yml +6 -6
  50. data/config/routes.rb +14 -14
  51. data/db/migrate/20170512212941_create_apidae_selections.rb +11 -11
  52. data/db/migrate/20170512214641_create_apidae_objects.rb +22 -22
  53. data/db/migrate/20170512221525_create_apidae_objects_apidae_selections.rb +8 -8
  54. data/db/migrate/20170513114002_create_apidae_towns.rb +15 -15
  55. data/db/migrate/20170513114409_add_town_insee_code_to_objects.rb +5 -5
  56. data/db/migrate/20170513115401_add_pictures_data_to_objects.rb +5 -5
  57. data/db/migrate/20170513121215_create_apidae_attached_files.rb +13 -13
  58. data/db/migrate/20170513205932_rename_objects_selections_table.rb +5 -5
  59. data/db/migrate/20170720161134_add_entity_data_to_objects.rb +5 -5
  60. data/db/migrate/20170730102424_create_apidae_file_imports.rb +13 -13
  61. data/db/migrate/20171025075304_create_apidae_exports.rb +15 -15
  62. data/db/migrate/20180217222410_create_apidae_selection_objects.rb +10 -10
  63. data/db/migrate/20180218172704_change_text_columns_to_json.rb +10 -10
  64. data/db/migrate/20180218231319_add_service_data_to_apidae_objects.rb +5 -5
  65. data/db/migrate/20180222104915_add_rates_data_to_apidae_objects.rb +6 -6
  66. data/db/migrate/20180222105302_rename_openings_to_openings_data.rb +5 -5
  67. data/db/migrate/20180307164936_add_attachments_data_to_apidae_objects.rb +5 -5
  68. data/db/migrate/20180307170349_create_apidae_references.rb +12 -12
  69. data/db/migrate/20180314093512_add_tags_data_to_apidae_objects.rb +5 -5
  70. data/db/migrate/20180314132631_add_meta_data_to_apidae_objects.rb +5 -5
  71. data/db/migrate/20180319143954_remove_apidae_id_unicity.rb +6 -6
  72. data/db/migrate/20180417164604_add_location_data_to_apidae_objects.rb +5 -5
  73. data/db/migrate/20180417165744_remove_address_from_apidae_objects.rb +5 -5
  74. data/db/migrate/20180417171344_remove_lat_lng_from_apidae_objects.rb +6 -6
  75. data/db/migrate/20180418141248_add_description_data_to_apidae_objects.rb +5 -5
  76. data/db/migrate/20180418141305_remove_desc_columns_from_apidae_objects.rb +6 -6
  77. data/db/migrate/20180424141656_add_meta_data_to_apidae_references.rb +5 -5
  78. data/db/migrate/20180519170210_remove_insee_code_unicity.rb +7 -7
  79. data/db/migrate/20180521211735_destroy_attached_files.rb +5 -5
  80. data/db/migrate/20180625050400_rename_objects_to_obj.rb +5 -5
  81. data/db/migrate/20181024072424_add_project_id_to_selections.rb +5 -5
  82. data/db/migrate/20181024072843_create_apidae_projects.rb +10 -10
  83. data/db/migrate/20190328122424_add_description_to_apidae_towns.rb +5 -0
  84. data/lib/apidae.rb +4 -4
  85. data/lib/apidae/engine.rb +10 -10
  86. data/lib/apidae/version.rb +3 -3
  87. data/lib/tasks/apidae_tasks.rake +4 -4
  88. data/test/apidae_test.rb +7 -7
  89. data/test/controllers/apidae/api_controller_test.rb +23 -23
  90. data/test/controllers/apidae/dashboard_controller_test.rb +15 -15
  91. data/test/controllers/apidae/import_controller_test.rb +15 -15
  92. data/test/controllers/apidae/objects_controller_test.rb +52 -52
  93. data/test/controllers/apidae/references_controller_test.rb +13 -13
  94. data/test/controllers/apidae/selections_controller_test.rb +52 -52
  95. data/test/data/selections.json +14 -14
  96. data/test/data/structure.json +64 -64
  97. data/test/data/update_selections.json +18 -18
  98. data/test/dummy/README.rdoc +28 -28
  99. data/test/dummy/Rakefile +6 -6
  100. data/test/dummy/app/assets/javascripts/application.js +13 -13
  101. data/test/dummy/app/assets/stylesheets/application.css +15 -15
  102. data/test/dummy/app/controllers/application_controller.rb +5 -5
  103. data/test/dummy/app/helpers/application_helper.rb +2 -2
  104. data/test/dummy/app/views/layouts/application.html.erb +14 -14
  105. data/test/dummy/bin/bundle +3 -3
  106. data/test/dummy/bin/rails +4 -4
  107. data/test/dummy/bin/rake +4 -4
  108. data/test/dummy/bin/setup +29 -29
  109. data/test/dummy/config.ru +4 -4
  110. data/test/dummy/config/application.rb +24 -24
  111. data/test/dummy/config/boot.rb +5 -5
  112. data/test/dummy/config/database.yml +20 -20
  113. data/test/dummy/config/environment.rb +5 -5
  114. data/test/dummy/config/environments/development.rb +41 -41
  115. data/test/dummy/config/environments/production.rb +79 -79
  116. data/test/dummy/config/environments/test.rb +42 -42
  117. data/test/dummy/config/initializers/apidae.rb +18 -18
  118. data/test/dummy/config/initializers/assets.rb +11 -11
  119. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -7
  120. data/test/dummy/config/initializers/cookies_serializer.rb +3 -3
  121. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -4
  122. data/test/dummy/config/initializers/inflections.rb +16 -16
  123. data/test/dummy/config/initializers/mime_types.rb +4 -4
  124. data/test/dummy/config/initializers/session_store.rb +3 -3
  125. data/test/dummy/config/initializers/to_time_preserves_timezone.rb +10 -10
  126. data/test/dummy/config/initializers/wrap_parameters.rb +14 -14
  127. data/test/dummy/config/locales/en.yml +23 -23
  128. data/test/dummy/config/routes.rb +4 -4
  129. data/test/dummy/config/secrets.yml +22 -22
  130. data/test/dummy/db/schema.rb +104 -104
  131. data/test/dummy/public/404.html +67 -67
  132. data/test/dummy/public/422.html +67 -67
  133. data/test/dummy/public/500.html +66 -66
  134. data/test/fixtures/apidae/exports.yml +15 -15
  135. data/test/fixtures/apidae/objects.yml +33 -33
  136. data/test/fixtures/apidae/references.yml +11 -11
  137. data/test/fixtures/apidae/selection_objects.yml +9 -9
  138. data/test/fixtures/apidae/selections.yml +11 -11
  139. data/test/fixtures/apidae/towns.yml +15 -15
  140. data/test/integration/navigation_test.rb +8 -8
  141. data/test/models/apidae/export_test.rb +9 -9
  142. data/test/models/apidae/file_import_test.rb +88 -88
  143. data/test/models/apidae/object_test.rb +9 -9
  144. data/test/models/apidae/reference_test.rb +9 -9
  145. data/test/models/apidae/selection_object_test.rb +9 -9
  146. data/test/models/apidae/selection_test.rb +9 -9
  147. data/test/models/apidae/town_test.rb +9 -9
  148. data/test/test_helper.rb +22 -22
  149. metadata +49 -50
  150. data/test/dummy/log/test.log +0 -2109
@@ -1,68 +1,68 @@
1
- require_dependency "apidae/application_controller"
2
- require 'uri'
3
- require 'net/http'
4
-
5
- module Apidae
6
- class ImportController < ApplicationController
7
- skip_before_action :verify_authenticity_token
8
- skip_before_action Rails.application.config.apidae_auth
9
-
10
- # Callback endpoint for Apidae exports
11
- #
12
- # projetId : un entier. C’est l’identifiant du projet concerné.
13
- # statut : une chaine de caractères, ‘SUCCESS’ ou ‘ERROR’. C’est l’issue de l’export.
14
- # ponctuel : un booléen. Indique si l’export est ponctuel (true) ou périodique (false).
15
- # reinitialisation : un booléen. Indique si l’export est une réinitialisation (true) ou différentiel (false).
16
- # urlRecuperation : une chaine de caractères. L’URL de récupération du fichier d’export.
17
- # urlConfirmation : une chaine de caractères. L’URL de confirmation.
18
- def callback
19
- export = Export.new(project_id: params[:projetId], remote_status: params[:statut], oneshot: params[:ponctuel] == 'true',
20
- reset: params[:reinitialisation] == 'true', file_url: params[:urlRecuperation],
21
- confirm_url: params[:urlConfirmation], status: Export::PENDING)
22
- if export.save
23
- if Rails.application.config.respond_to?(:apidae_propagate_callback)
24
- uri = URI(Rails.application.config.apidae_propagate_callback)
25
- req = Net::HTTP::Post.new(uri)
26
- Net::HTTP.start(uri.hostname, uri.port, use_ssl: (uri.scheme == "https")) do |http|
27
- http.request(req, params.to_unsafe_h.to_query)
28
- end
29
- end
30
- head :ok
31
- else
32
- head :internal_server_error
33
- end
34
- end
35
-
36
- def run
37
- success = true
38
- Export.pending.each do |e|
39
- begin
40
- open(e.file_url) do |f|
41
- begin
42
- FileImport.import(f, e.project_id)
43
- uri = URI(e.confirm_url)
44
- req = Net::HTTP::Post.new(uri)
45
- Net::HTTP.start(uri.hostname, uri.port) do |http|
46
- http.request(req)
47
- end
48
- e.update(status: Export::COMPLETE)
49
- if Rails.application.config.apidae_import_callback
50
- Rails.application.config.apidae_import_callback.call(e)
51
- end
52
- rescue Exception => ex
53
- logger.error("Failed to import export file : #{e.file_url}")
54
- logger.error("Error is : #{ex} \n#{ex.backtrace.join("\n") unless ex.backtrace.blank?}")
55
- success = false
56
- end
57
- end
58
- rescue OpenURI::HTTPError => err
59
- logger.error("Failed to download export file : #{e.file_url}")
60
- logger.error("Error is : #{err}")
61
- success = false
62
- e.update(status: Export::CANCELLED)
63
- end
64
- end
65
- success ? head(:ok) : head(:internal_server_error)
66
- end
67
- end
68
- end
1
+ require_dependency "apidae/application_controller"
2
+ require 'uri'
3
+ require 'net/http'
4
+
5
+ module Apidae
6
+ class ImportController < ApplicationController
7
+ skip_before_action :verify_authenticity_token
8
+ skip_before_action Rails.application.config.apidae_auth
9
+
10
+ # Callback endpoint for Apidae exports
11
+ #
12
+ # projetId : un entier. C’est l’identifiant du projet concerné.
13
+ # statut : une chaine de caractères, ‘SUCCESS’ ou ‘ERROR’. C’est l’issue de l’export.
14
+ # ponctuel : un booléen. Indique si l’export est ponctuel (true) ou périodique (false).
15
+ # reinitialisation : un booléen. Indique si l’export est une réinitialisation (true) ou différentiel (false).
16
+ # urlRecuperation : une chaine de caractères. L’URL de récupération du fichier d’export.
17
+ # urlConfirmation : une chaine de caractères. L’URL de confirmation.
18
+ def callback
19
+ export = Export.new(project_id: params[:projetId], remote_status: params[:statut], oneshot: params[:ponctuel] == 'true',
20
+ reset: params[:reinitialisation] == 'true', file_url: params[:urlRecuperation],
21
+ confirm_url: params[:urlConfirmation], status: Export::PENDING)
22
+ if export.save
23
+ if Rails.application.config.respond_to?(:apidae_propagate_callback)
24
+ uri = URI(Rails.application.config.apidae_propagate_callback)
25
+ req = Net::HTTP::Post.new(uri)
26
+ Net::HTTP.start(uri.hostname, uri.port, use_ssl: (uri.scheme == "https")) do |http|
27
+ http.request(req, params.to_unsafe_h.to_query)
28
+ end
29
+ end
30
+ head :ok
31
+ else
32
+ head :internal_server_error
33
+ end
34
+ end
35
+
36
+ def run
37
+ success = true
38
+ Export.pending.each do |e|
39
+ begin
40
+ open(e.file_url) do |f|
41
+ begin
42
+ FileImport.import(f, e.project_id)
43
+ uri = URI(e.confirm_url)
44
+ req = Net::HTTP::Post.new(uri)
45
+ Net::HTTP.start(uri.hostname, uri.port) do |http|
46
+ http.request(req)
47
+ end
48
+ e.update(status: Export::COMPLETE)
49
+ if Rails.application.config.apidae_import_callback
50
+ Rails.application.config.apidae_import_callback.call(e)
51
+ end
52
+ rescue Exception => ex
53
+ logger.error("Failed to import export file : #{e.file_url}")
54
+ logger.error("Error is : #{ex} \n#{ex.backtrace.join("\n") unless ex.backtrace.blank?}")
55
+ success = false
56
+ end
57
+ end
58
+ rescue OpenURI::HTTPError => err
59
+ logger.error("Failed to download export file : #{e.file_url}")
60
+ logger.error("Error is : #{err}")
61
+ success = false
62
+ e.update(status: Export::CANCELLED)
63
+ end
64
+ end
65
+ success ? head(:ok) : head(:internal_server_error)
66
+ end
67
+ end
68
+ end
@@ -1,59 +1,59 @@
1
- require_dependency "apidae/application_controller"
2
-
3
- module Apidae
4
- class ObjectsController < ApplicationController
5
- before_action :set_object, only: [:show, :edit, :update, :destroy]
6
- skip_before_action Rails.application.config.apidae_auth, only: [:index, :show]
7
-
8
- def index
9
- if params[:selection_id]
10
- @selection = Selection.find(params[:selection_id])
11
- @objects = @selection.objects.select(:id, :apidae_id, :title, :apidae_type, :updated_at)
12
- else
13
- @objects = Obj.all.select(:id, :apidae_id, :title, :apidae_type, :updated_at)
14
- end
15
- end
16
-
17
- def show
18
- end
19
-
20
- def new
21
- @object = Obj.new
22
- end
23
-
24
- def edit
25
- end
26
-
27
- def create
28
- @object = Obj.new(object_params)
29
-
30
- if @object.save
31
- redirect_to @object, notice: 'Object was successfully created.'
32
- else
33
- render :new
34
- end
35
- end
36
-
37
- def update
38
- if @object.update(object_params)
39
- redirect_to @object, notice: 'Object was successfully updated.'
40
- else
41
- render :edit
42
- end
43
- end
44
-
45
- def destroy
46
- @object.destroy
47
- redirect_to objects_url, notice: 'Object was successfully destroyed.'
48
- end
49
-
50
- private
51
- def set_object
52
- @object = Obj.find(params[:id])
53
- end
54
-
55
- def object_params
56
- params.require(:object).permit!
57
- end
58
- end
59
- end
1
+ require_dependency "apidae/application_controller"
2
+
3
+ module Apidae
4
+ class ObjectsController < ApplicationController
5
+ before_action :set_object, only: [:show, :edit, :update, :destroy]
6
+ skip_before_action Rails.application.config.apidae_auth, only: [:index, :show]
7
+
8
+ def index
9
+ if params[:selection_id]
10
+ @selection = Selection.find(params[:selection_id])
11
+ @objects = @selection.objects.select(:id, :apidae_id, :title, :apidae_type, :updated_at)
12
+ else
13
+ @objects = Obj.all.select(:id, :apidae_id, :title, :apidae_type, :updated_at)
14
+ end
15
+ end
16
+
17
+ def show
18
+ end
19
+
20
+ def new
21
+ @object = Obj.new
22
+ end
23
+
24
+ def edit
25
+ end
26
+
27
+ def create
28
+ @object = Obj.new(object_params)
29
+
30
+ if @object.save
31
+ redirect_to @object, notice: 'Object was successfully created.'
32
+ else
33
+ render :new
34
+ end
35
+ end
36
+
37
+ def update
38
+ if @object.update(object_params)
39
+ redirect_to @object, notice: 'Object was successfully updated.'
40
+ else
41
+ render :edit
42
+ end
43
+ end
44
+
45
+ def destroy
46
+ @object.destroy
47
+ redirect_to objects_url, notice: 'Object was successfully destroyed.'
48
+ end
49
+
50
+ private
51
+ def set_object
52
+ @object = Obj.find(params[:id])
53
+ end
54
+
55
+ def object_params
56
+ params.require(:object).permit!
57
+ end
58
+ end
59
+ end
@@ -1,35 +1,35 @@
1
- require_dependency "apidae/application_controller"
2
-
3
- module Apidae
4
- class ProjectsController < ApplicationController
5
- before_action :set_project, only: [:edit, :update]
6
-
7
- def index
8
- @projects = Project.all
9
- end
10
-
11
- def edit
12
- session[:referrer] = request.referrer
13
- end
14
-
15
- def update
16
- if @project.update(project_params)
17
- referrer = session.delete(:referrer)
18
- redirect_to referrer, notice: 'Le projet a bien été mis à jour'
19
- else
20
- flash.now[:alert] = "Une erreur s'est produite lors la mise à jour du projet"
21
- render :edit
22
- end
23
- end
24
-
25
- private
26
-
27
- def set_project
28
- @project = Project.find(params[:id])
29
- end
30
-
31
- def project_params
32
- params.require(:project).permit(:name, :api_key)
33
- end
34
- end
35
- end
1
+ require_dependency "apidae/application_controller"
2
+
3
+ module Apidae
4
+ class ProjectsController < ApplicationController
5
+ before_action :set_project, only: [:edit, :update]
6
+
7
+ def index
8
+ @projects = Project.all
9
+ end
10
+
11
+ def edit
12
+ session[:referrer] = request.referrer
13
+ end
14
+
15
+ def update
16
+ if @project.update(project_params)
17
+ referrer = session.delete(:referrer)
18
+ redirect_to referrer, notice: 'Le projet a bien été mis à jour'
19
+ else
20
+ flash.now[:alert] = "Une erreur s'est produite lors la mise à jour du projet"
21
+ render :edit
22
+ end
23
+ end
24
+
25
+ private
26
+
27
+ def set_project
28
+ @project = Project.find(params[:id])
29
+ end
30
+
31
+ def project_params
32
+ params.require(:project).permit(:name, :api_key)
33
+ end
34
+ end
35
+ end
@@ -1,9 +1,9 @@
1
- require_dependency "apidae/application_controller"
2
-
3
- module Apidae
4
- class ReferencesController < ApplicationController
5
- def index
6
- @references = Reference.all
7
- end
8
- end
9
- end
1
+ require_dependency "apidae/application_controller"
2
+
3
+ module Apidae
4
+ class ReferencesController < ApplicationController
5
+ def index
6
+ @references = Reference.all
7
+ end
8
+ end
9
+ end
@@ -1,53 +1,53 @@
1
- require_dependency "apidae/application_controller"
2
-
3
- module Apidae
4
- class SelectionsController < ApplicationController
5
- before_action :set_selection, only: [:show, :edit, :update, :destroy]
6
-
7
- def index
8
- @selections = Selection.all
9
- end
10
-
11
- def show
12
- end
13
-
14
- def new
15
- @selection = Selection.new
16
- end
17
-
18
- def edit
19
- end
20
-
21
- def create
22
- @selection = Selection.new(selection_params)
23
-
24
- if @selection.save
25
- redirect_to @selection, notice: 'Selection was successfully created.'
26
- else
27
- render :new
28
- end
29
- end
30
-
31
- def update
32
- if @selection.update(selection_params)
33
- redirect_to @selection, notice: 'Selection was successfully updated.'
34
- else
35
- render :edit
36
- end
37
- end
38
-
39
- def destroy
40
- @selection.destroy
41
- redirect_to selections_url, notice: 'Selection was successfully destroyed.'
42
- end
43
-
44
- private
45
- def set_selection
46
- @selection = Selection.find(params[:id])
47
- end
48
-
49
- def selection_params
50
- params.require(:selection).permit(:label, :reference, :apidae_id)
51
- end
52
- end
53
- end
1
+ require_dependency "apidae/application_controller"
2
+
3
+ module Apidae
4
+ class SelectionsController < ApplicationController
5
+ before_action :set_selection, only: [:show, :edit, :update, :destroy]
6
+
7
+ def index
8
+ @selections = Selection.all
9
+ end
10
+
11
+ def show
12
+ end
13
+
14
+ def new
15
+ @selection = Selection.new
16
+ end
17
+
18
+ def edit
19
+ end
20
+
21
+ def create
22
+ @selection = Selection.new(selection_params)
23
+
24
+ if @selection.save
25
+ redirect_to @selection, notice: 'Selection was successfully created.'
26
+ else
27
+ render :new
28
+ end
29
+ end
30
+
31
+ def update
32
+ if @selection.update(selection_params)
33
+ redirect_to @selection, notice: 'Selection was successfully updated.'
34
+ else
35
+ render :edit
36
+ end
37
+ end
38
+
39
+ def destroy
40
+ @selection.destroy
41
+ redirect_to selections_url, notice: 'Selection was successfully destroyed.'
42
+ end
43
+
44
+ private
45
+ def set_selection
46
+ @selection = Selection.find(params[:id])
47
+ end
48
+
49
+ def selection_params
50
+ params.require(:selection).permit(:label, :reference, :apidae_id)
51
+ end
52
+ end
53
+ end