iqvoc 4.3.3 → 4.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (624) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/Gemfile +20 -21
  4. data/Gemfile.lock +212 -171
  5. data/LICENSE +1 -1
  6. data/README.md +12 -4
  7. data/app/assets/javascripts/framework.js +3 -3
  8. data/app/assets/javascripts/iqvoc/concept_mapper.js +6 -4
  9. data/app/assets/javascripts/iqvoc/entityselect.js.erb +19 -6
  10. data/app/assets/javascripts/iqvoc/federated_concept_mapper.js +4 -2
  11. data/app/assets/javascripts/iqvoc/onebox.js.erb +8 -9
  12. data/app/assets/stylesheets/framework.css.scss +1 -2
  13. data/app/assets/stylesheets/iqvoc/components/_components.css.scss +17 -7
  14. data/app/concerns/first_level_object_validations.rb +22 -0
  15. data/app/concerns/versioning.rb +187 -0
  16. data/app/controllers/collections/versions_controller.rb +144 -0
  17. data/app/controllers/collections_controller.rb +46 -29
  18. data/app/controllers/concepts/alphabetical_controller.rb +9 -6
  19. data/app/controllers/concepts/expired_controller.rb +1 -1
  20. data/app/controllers/concepts/hierarchical_controller.rb +15 -17
  21. data/app/controllers/concepts/scheme_controller.rb +8 -4
  22. data/app/controllers/concepts/untranslated_controller.rb +2 -4
  23. data/app/controllers/concepts/versions_controller.rb +24 -25
  24. data/app/controllers/concepts_controller.rb +40 -37
  25. data/app/controllers/concerns/dataset_initialization.rb +1 -2
  26. data/app/controllers/dashboard_controller.rb +6 -9
  27. data/app/controllers/exports_controller.rb +65 -0
  28. data/app/controllers/frontpage_controller.rb +0 -2
  29. data/app/controllers/hierarchy_controller.rb +24 -25
  30. data/app/controllers/imports_controller.rb +18 -9
  31. data/app/controllers/instance_configuration_controller.rb +19 -16
  32. data/app/controllers/rdf_controller.rb +8 -9
  33. data/app/controllers/remote_labels_controller.rb +2 -3
  34. data/app/controllers/search_results_controller.rb +33 -37
  35. data/app/controllers/triplestore_sync_controller.rb +12 -13
  36. data/app/controllers/user_sessions_controller.rb +10 -7
  37. data/app/controllers/users_controller.rb +20 -7
  38. data/app/exceptions/invalid_string_literal_error.rb +7 -0
  39. data/app/helpers/application_helper.rb +16 -24
  40. data/app/helpers/concepts_helper.rb +14 -20
  41. data/app/helpers/dashboard_helper.rb +11 -13
  42. data/app/helpers/form_helper.rb +3 -6
  43. data/app/helpers/link_helper.rb +3 -3
  44. data/app/helpers/navigation_helper.rb +15 -15
  45. data/app/helpers/rdf_helper.rb +29 -3
  46. data/app/helpers/rdf_namespaces_helper.rb +11 -0
  47. data/app/helpers/search_results_helper.rb +1 -3
  48. data/app/helpers/widget_helper.rb +0 -2
  49. data/app/jobs/export_job.rb +19 -0
  50. data/app/jobs/import_job.rb +2 -2
  51. data/app/models/collection/base.rb +25 -41
  52. data/app/models/collection/member/base.rb +4 -6
  53. data/app/models/collection/member/skos/base.rb +3 -4
  54. data/app/models/collection/skos/base.rb +4 -6
  55. data/app/models/collection/unordered.rb +1 -4
  56. data/app/models/concept/base.rb +53 -77
  57. data/app/models/concept/relation/base.rb +8 -10
  58. data/app/models/concept/relation/reverse_relation_extension.rb +4 -6
  59. data/app/models/concept/relation/skos/base.rb +5 -7
  60. data/app/models/concept/relation/skos/broader/base.rb +1 -3
  61. data/app/models/concept/relation/skos/broader/mono.rb +1 -3
  62. data/app/models/concept/relation/skos/broader/poly.rb +1 -3
  63. data/app/models/concept/relation/skos/narrower/base.rb +2 -4
  64. data/app/models/concept/relation/skos/related.rb +0 -2
  65. data/app/models/concept/skos/base.rb +4 -5
  66. data/app/models/concept/skos/scheme.rb +8 -8
  67. data/app/models/concept/validations.rb +25 -40
  68. data/app/models/configuration_setting.rb +1 -3
  69. data/app/models/dataset/adaptors/iqvoc/alphabetical_search_adaptor.rb +3 -3
  70. data/app/models/dataset/adaptors/iqvoc/http_adaptor.rb +2 -2
  71. data/app/models/dataset/adaptors/iqvoc/search_adaptor.rb +8 -8
  72. data/app/models/dataset/iqvoc_dataset.rb +2 -2
  73. data/app/models/export.rb +32 -0
  74. data/app/models/import.rb +2 -0
  75. data/app/models/label/base.rb +12 -18
  76. data/app/models/label/skos/base.rb +2 -2
  77. data/app/models/labeling/base.rb +7 -9
  78. data/app/models/labeling/skos/alt_label.rb +0 -2
  79. data/app/models/labeling/skos/base.rb +10 -19
  80. data/app/models/labeling/skos/hidden_label.rb +1 -3
  81. data/app/models/labeling/skos/pref_label.rb +0 -2
  82. data/app/models/match/base.rb +5 -7
  83. data/app/models/match/skos/base.rb +1 -3
  84. data/app/models/match/skos/broad_match.rb +0 -2
  85. data/app/models/match/skos/close_match.rb +0 -2
  86. data/app/models/match/skos/exact_match.rb +0 -2
  87. data/app/models/match/skos/mapping_relation.rb +0 -2
  88. data/app/models/match/skos/narrow_match.rb +0 -2
  89. data/app/models/match/skos/related_match.rb +0 -2
  90. data/app/models/notation/base.rb +6 -8
  91. data/app/models/note/annotated/base.rb +2 -4
  92. data/app/models/note/base.rb +15 -16
  93. data/app/models/note/skos/base.rb +7 -9
  94. data/app/models/note/skos/change_note.rb +2 -4
  95. data/app/models/note/skos/definition.rb +1 -3
  96. data/app/models/note/skos/editorial_note.rb +0 -2
  97. data/app/models/note/skos/example.rb +0 -2
  98. data/app/models/note/skos/history_note.rb +0 -2
  99. data/app/models/note/skos/scope_note.rb +0 -2
  100. data/app/models/search_extension.rb +3 -6
  101. data/app/models/user.rb +7 -8
  102. data/app/models/user_session.rb +0 -2
  103. data/app/presenters/alphabetical_search_result.rb +2 -2
  104. data/app/presenters/search_result_remote.rb +1 -1
  105. data/app/uploaders/base.rb +21 -0
  106. data/app/uploaders/rdf_uploader.rb +7 -0
  107. data/app/views/collections/_data.html.erb +40 -0
  108. data/app/views/collections/_form.html.erb +5 -4
  109. data/app/views/collections/_sidebar.html.erb +1 -0
  110. data/app/views/collections/show.iqrdf +4 -20
  111. data/app/views/collections/show_published.html.erb +16 -0
  112. data/app/views/collections/show_unpublished.html.erb +41 -0
  113. data/app/views/concepts/_form.html.erb +13 -8
  114. data/app/views/concepts/alphabetical/index.html.erb +2 -2
  115. data/app/views/concepts/expired/index.html.erb +1 -1
  116. data/app/views/concepts/scheme/_sidebar.html.erb +1 -0
  117. data/app/views/concepts/scheme/edit.html.erb +6 -4
  118. data/app/views/concepts/scheme/show.html.erb +1 -1
  119. data/app/views/concepts/scheme/show.iqrdf +3 -2
  120. data/app/views/concepts/show.iqrdf +3 -2
  121. data/app/views/concepts/show_published.html.erb +2 -2
  122. data/app/views/concepts/show_unpublished.html.erb +7 -7
  123. data/app/views/concepts/sidebars/_singular.html.erb +1 -0
  124. data/app/views/dashboard/_sidebar.html.erb +2 -5
  125. data/app/views/exports/index.html.erb +39 -0
  126. data/app/views/exports/show.html.erb +7 -0
  127. data/app/views/frontpage/index.html.erb +10 -7
  128. data/app/views/hierarchy/show.iqrdf +3 -2
  129. data/app/views/imports/index.html.erb +23 -30
  130. data/app/views/instance_configuration/index.html.erb +9 -8
  131. data/app/views/layouts/_controls.html.erb +1 -1
  132. data/app/views/layouts/_navigation.html.erb +13 -24
  133. data/app/views/layouts/application.html.erb +3 -2
  134. data/app/views/partials/collection/_edit_link_base.html.erb +4 -0
  135. data/app/views/partials/collection/_new_link_base.html.erb +3 -0
  136. data/app/views/partials/concept/_new_link_base.html.erb +1 -1
  137. data/app/views/partials/concept/relation/_edit_base.html.erb +1 -1
  138. data/app/views/partials/concept/relation/_edit_ranked.html.erb +1 -1
  139. data/app/views/partials/concept/relation/_ranked.html.erb +1 -1
  140. data/app/views/partials/labeling/skos/_edit_base.html.erb +5 -8
  141. data/app/views/partials/match/_edit_base.html.erb +8 -3
  142. data/app/views/partials/notation/_edit_base.html.erb +5 -5
  143. data/app/views/partials/note/_edit_base.html.erb +6 -7
  144. data/app/views/partials/note/skos/_edit_change_note.html.erb +10 -13
  145. data/app/views/rdf/dataset.iqrdf +3 -2
  146. data/app/views/search_results/_form.html.erb +9 -9
  147. data/app/views/search_results/_sidebar.html.erb +1 -0
  148. data/app/views/search_results/index.html.erb +1 -1
  149. data/app/views/search_results/index.iqrdf +3 -2
  150. data/app/views/search_results/sections/_collection.html.erb +6 -3
  151. data/app/views/search_results/sections/_datasets.html.erb +17 -14
  152. data/app/views/search_results/sections/_klass.html.erb +10 -7
  153. data/app/views/search_results/sections/_languages.html.erb +17 -14
  154. data/app/views/search_results/sections/_mode.html.erb +11 -8
  155. data/app/views/search_results/sections/_terms.html.erb +10 -7
  156. data/app/views/search_results/sections/_type.html.erb +23 -5
  157. data/app/views/triplestore_sync/index.html.erb +3 -2
  158. data/app/views/user_sessions/_form.html.erb +5 -5
  159. data/app/views/users/_form.html.erb +13 -10
  160. data/app/views/users/index.html.erb +27 -24
  161. data/config/application.rb +2 -29
  162. data/config/boot.rb +1 -1
  163. data/config/database.yml.mysql +3 -3
  164. data/config/engine.rb +7 -8
  165. data/config/environments/heroku.rb +0 -10
  166. data/config/initializers/apipie.rb +5 -5
  167. data/config/initializers/assets.rb +3 -0
  168. data/config/initializers/cookies_serializer.rb +3 -0
  169. data/config/initializers/filter_parameter_logging.rb +4 -0
  170. data/config/initializers/iqvoc.rb +4 -2
  171. data/config/initializers/mime_types.rb +3 -2
  172. data/config/initializers/{secret_token.rb.template → secret_token.rb} +1 -1
  173. data/config/initializers/session_store.rb +1 -1
  174. data/config/initializers/wrap_parameters.rb +14 -0
  175. data/config/locales/activerecord.de.yml +13 -0
  176. data/config/locales/activerecord.en.yml +11 -0
  177. data/config/locales/de.yml +17 -5
  178. data/config/locales/en.yml +17 -6
  179. data/config/routes.rb +51 -38
  180. data/config/secrets.yml +11 -0
  181. data/db/migrate/20100927101502_create_schema.rb +122 -122
  182. data/db/migrate/20101125141218_add_collection_tables.rb +2 -2
  183. data/db/migrate/20101210153916_add_indexes_to_collections.rb +2 -2
  184. data/db/migrate/20110204121244_create_collection_labels.rb +2 -2
  185. data/db/migrate/20110208084250_change_origin_lengths.rb +4 -4
  186. data/db/migrate/20110408120357_remove_classifications_and_classifiers.rb +15 -20
  187. data/db/migrate/20110408120740_remove_xl_specfic_stuff.rb +25 -28
  188. data/db/migrate/20110420133640_change_value_in_notes.rb +1 -1
  189. data/db/migrate/20110427120534_add_published_at_to_labels.rb +2 -2
  190. data/db/migrate/20110512132624_extend_notes_value_field_length.rb +1 -1
  191. data/db/migrate/20110525103100_separate_note_annotation_predicates.rb +5 -5
  192. data/db/migrate/20120119000000_create_configuration_settings.rb +1 -3
  193. data/db/migrate/20120201120736_add_top_term_to_concepts.rb +1 -3
  194. data/db/migrate/20120326102037_add_rank_to_concept_relations.rb +1 -1
  195. data/db/migrate/20130315093255_add_notations.rb +3 -3
  196. data/db/migrate/20130508103137_adjust_note_languages_setting.rb +5 -7
  197. data/db/migrate/20131220134356_create_delayed_jobs.rb +5 -5
  198. data/db/migrate/20131220144601_create_imports.rb +1 -1
  199. data/db/migrate/20140423095147_create_exports.rb +13 -0
  200. data/db/migrate/20140425130615_add_fk_indexes_to_exports_and_imports.rb +6 -0
  201. data/db/migrate/20140505144919_add_import_file_to_imports.rb +5 -0
  202. data/db/migrate/20140506073428_add_missing_imports_attributes.rb +6 -0
  203. data/db/migrate/20140506133619_add_namespace_to_exports.rb +5 -0
  204. data/db/schema.rb +57 -84
  205. data/db/seeds.rb +4 -4
  206. data/iqvoc.gemspec +21 -20
  207. data/lib/engine_tasks/db.rake +4 -3
  208. data/lib/generators/app/template.rb +19 -20
  209. data/lib/iqvoc.rb +0 -1
  210. data/lib/iqvoc/ability.rb +10 -13
  211. data/lib/iqvoc/configuration/collection.rb +2 -1
  212. data/lib/iqvoc/configuration/concept.rb +7 -8
  213. data/lib/iqvoc/configuration/core.rb +82 -82
  214. data/lib/iqvoc/configuration/label.rb +0 -1
  215. data/lib/iqvoc/configuration/sync.rb +4 -5
  216. data/lib/iqvoc/controller_extensions.rb +14 -15
  217. data/lib/iqvoc/deep_cloning.rb +8 -10
  218. data/lib/iqvoc/environments/development.rb +9 -9
  219. data/lib/iqvoc/environments/production.rb +4 -11
  220. data/lib/iqvoc/environments/test.rb +2 -8
  221. data/lib/iqvoc/inline_data_helper.rb +3 -5
  222. data/lib/iqvoc/instance_configuration.rb +5 -8
  223. data/lib/iqvoc/maker.rb +28 -30
  224. data/lib/iqvoc/navigation.rb +2 -2
  225. data/lib/iqvoc/origin.rb +6 -42
  226. data/lib/iqvoc/rankable.rb +0 -1
  227. data/lib/iqvoc/rdf_sync.rb +19 -21
  228. data/lib/iqvoc/rdfapi.rb +2 -2
  229. data/lib/iqvoc/skos_exporter.rb +153 -0
  230. data/lib/iqvoc/skos_importer.rb +125 -56
  231. data/lib/iqvoc/version.rb +1 -1
  232. data/lib/multi_logger.rb +0 -1
  233. data/lib/string.rb +1 -3
  234. data/lib/tasks/exporter.rake +22 -0
  235. data/lib/tasks/importer.rake +2 -1
  236. data/lib/tasks/reset.rake +14 -0
  237. data/public/export/{104047454295817920610168807659129435311.nt → 10110.nt} +0 -0
  238. data/public/export/{10726.nt → 10528.nt} +0 -0
  239. data/public/export/{10751365034669120987598940220863369604.nt → 11105.nt} +0 -0
  240. data/public/export/{111691466774189666307584118743393932328.nt → 11353.nt} +0 -0
  241. data/public/export/{12325399400132639231204595208154762660.nt → 11790.nt} +0 -0
  242. data/public/export/12931.nt +1 -0
  243. data/public/export/{151644452539207638297695765208032122293.nt → 1385.nt} +0 -0
  244. data/public/export/{15263706163704853684442315777380853572.nt → 15083.nt} +0 -0
  245. data/public/export/{15327.nt → 16538.nt} +0 -0
  246. data/public/export/{15666.nt → 1879.nt} +0 -0
  247. data/public/export/{173626129450223321263719262149444213847.nt → 19502.nt} +0 -0
  248. data/public/export/{18948.nt → 19834.nt} +0 -0
  249. data/public/export/{199578749544886032300136278910417855540.nt → 21183.nt} +0 -0
  250. data/public/export/{213890660005255527251394676521741138403.nt → 21512.nt} +0 -0
  251. data/public/export/{213987519797093111958174693910375706600.nt → 22034.nt} +0 -0
  252. data/public/export/{214800276811658695171005552465925318151.nt → 2434.nt} +0 -0
  253. data/public/export/{21930.nt → 24841.nt} +0 -0
  254. data/public/export/{220598335291843294191166072463233833628.nt → 26109.nt} +0 -0
  255. data/public/export/{242910803893093872189091525372405462985.nt → 27784.nt} +0 -0
  256. data/public/export/{24509.nt → 28422.nt} +0 -0
  257. data/public/export/{249458227092013520089223290936103182178.nt → 28627.nt} +0 -0
  258. data/public/export/{25981.nt → 29185.nt} +0 -0
  259. data/public/export/{271163890329327117562409702966294853312.nt → 30124.nt} +0 -0
  260. data/public/export/305768326302831570152374795088739069204.nt +447 -0
  261. data/public/export/3118.nt +1 -0
  262. data/public/export/{27484.nt → 31250.nt} +0 -0
  263. data/public/export/{287251617830426667971006908766107175810.nt → 31272.nt} +0 -0
  264. data/public/export/{28754.nt → 31875.nt} +0 -0
  265. data/public/export/{29022.nt → 32197.nt} +0 -0
  266. data/public/export/{293720064238755056739270868818770835353.nt → 32223.nt} +0 -0
  267. data/public/export/{29976.nt → 32324.nt} +0 -0
  268. data/public/export/{30643.nt → 33084.nt} +0 -0
  269. data/public/export/{309135899928267675232062298368405782595.nt → 33257.nt} +0 -0
  270. data/public/export/{317588775827727829310573625081613440402.nt → 33545.nt} +0 -0
  271. data/public/export/{3199.nt → 34179.nt} +0 -0
  272. data/public/export/34582.nt +1 -0
  273. data/public/export/{32054.nt → 35271.nt} +0 -0
  274. data/public/export/35426.nt +36 -0
  275. data/public/export/{327890543532187929176278243423558506722.nt → 36234.nt} +0 -0
  276. data/public/export/{33055.nt → 36363.nt} +0 -0
  277. data/public/export/{337748600310244218106909976567220577473.nt → 36559.nt} +0 -0
  278. data/public/export/{3383.nt → 37333.nt} +0 -0
  279. data/public/export/{33936.nt → 38332.nt} +0 -0
  280. data/public/export/{33993.nt → 38461.nt} +0 -0
  281. data/public/export/{34906.nt → 38721.nt} +0 -0
  282. data/public/export/{35365.nt → 39469.nt} +0 -0
  283. data/public/export/{37098.nt → 40637.nt} +0 -0
  284. data/public/export/{37534146541112437090211766955764945845.nt → 40746.nt} +0 -0
  285. data/public/export/{39353594202090916952403280275602550330.nt → 4297.nt} +0 -0
  286. data/public/export/{41272.nt → 43236.nt} +0 -0
  287. data/public/export/{42271.nt → 43644.nt} +0 -0
  288. data/public/export/{44392.nt → 45021.nt} +0 -0
  289. data/public/export/45120.nt +1 -0
  290. data/public/export/{45675.nt → 45552.nt} +0 -0
  291. data/public/export/{47529.nt → 46172.nt} +0 -0
  292. data/public/export/{48309.nt → 46739.nt} +0 -0
  293. data/public/export/{4956.nt → 4929.nt} +0 -0
  294. data/public/export/{49623.nt → 50335.nt} +0 -0
  295. data/public/export/{50516.nt → 51428.nt} +0 -0
  296. data/public/export/{50650725356216411444149011685563244498.nt → 51494.nt} +0 -0
  297. data/public/export/51877.nt +1 -0
  298. data/public/export/{54880.nt → 5359.nt} +0 -0
  299. data/public/export/{55142.nt → 53989.nt} +0 -0
  300. data/public/export/{55398.nt → 54563.nt} +0 -0
  301. data/public/export/{55625.nt → 54634.nt} +0 -0
  302. data/public/export/{5754.nt → 54759.nt} +0 -0
  303. data/public/export/{57727.nt → 54895.nt} +0 -0
  304. data/public/export/{58069939020968861674794480549301466954.nt → 55279.nt} +0 -0
  305. data/public/export/{5890.nt → 5567.nt} +0 -0
  306. data/public/export/{61404.nt → 57502.nt} +0 -0
  307. data/public/export/{62809.nt → 58015.nt} +0 -0
  308. data/public/export/{65156.nt → 58964.nt} +0 -0
  309. data/public/export/{6520.nt → 60674.nt} +0 -0
  310. data/public/export/{801.nt → 61265.nt} +0 -0
  311. data/public/export/{863.nt → 61895.nt} +0 -0
  312. data/public/export/{9372.nt → 62372.nt} +0 -0
  313. data/public/export/62469.nt +28 -0
  314. data/public/export/62880.nt +28 -0
  315. data/public/export/63673.nt +28 -0
  316. data/public/export/64151.nt +28 -0
  317. data/public/export/64891.nt +28 -0
  318. data/public/export/7089.nt +28 -0
  319. data/public/export/7365.nt +28 -0
  320. data/public/export/7473.nt +28 -0
  321. data/public/export/7939.nt +28 -0
  322. data/public/export/8509.nt +28 -0
  323. data/public/export/9370.nt +28 -0
  324. data/public/export/9600.nt +28 -0
  325. data/public/uploads/import/{038dd516e01fe211375441c3af8d90e8.nt → 01cb889ac483ce809435db5e37d01010.nt} +0 -0
  326. data/public/uploads/import/{07e71ca0235e798be39acd246114d962.nt → 05c5e3cc92a18a3ce176065485caafeb.nt} +0 -0
  327. data/public/uploads/import/0a539be7eb44e0aa1f4eebe485e67d32.nt +260 -0
  328. data/public/uploads/import/0ceccdec88406d5de2f9c91d6c32bd63.nt +260 -0
  329. data/public/uploads/import/{0a4c173bc9db7a5cd469c9454fdfa749.nt → 0d199979d7a157c89b517b0121f220de.nt} +0 -0
  330. data/public/uploads/import/0d1cb3a3c90c406735065c39ccf36882.nt +260 -0
  331. data/public/uploads/import/{0e8336cb2ef2c8b67767dfe8879d9cfb.nt → 1146b2566f01d412f53aefb921b8abf6.nt} +0 -0
  332. data/public/uploads/import/{0f4eb8cd6390b1c5c5354a22e533ee0e.nt → 12f08c2e20a05620666d39cabb148b90.nt} +0 -0
  333. data/public/uploads/import/{105400714d68d2207209e23826345e76.nt → 136c72e86af49d44b885c609a97050e5.nt} +0 -0
  334. data/public/uploads/import/{1130cde10b15a3f5fc203d47f6989aea.nt → 1406b0ff2e1b68d38bdafe54a54e7981.nt} +0 -0
  335. data/public/uploads/import/{1147ab054ce55abf0a5bf93b99220231.nt → 142764b92a63f20feb0e6d1398517394.nt} +0 -0
  336. data/public/uploads/import/{14b64b1f2252aba1e89d83f770d14e29.nt → 1618cd8f36abb0d25d5cee9eef4162dd.nt} +0 -0
  337. data/public/uploads/import/{1c6f11c300224248bf919885f8545daf.nt → 1838327ebac2c062a9036e0187d8c607.nt} +0 -0
  338. data/public/uploads/import/{21d34b65ef0a8156111e845992fd004f.nt → 1be9a54bb74a467fbd6321190e10a23b.nt} +0 -0
  339. data/public/uploads/import/{2783fade523132942999836a74228d64.nt → 1eb3eabccf76ddb2a6bba92eac8b84b9.nt} +0 -0
  340. data/public/uploads/import/{2bc90e07e5c42e5f26a1607756cc0ab3.nt → 1f147a50c4203690ea4b1ac66f748537.nt} +0 -0
  341. data/public/uploads/import/{2e4073a94eeae98095de9f43b5e5774a.nt → 22be1db3763deeafb6e9bdc8af7de52f.nt} +0 -0
  342. data/public/uploads/import/{32548678e7d47b3e256590d6eef6fb03.nt → 24ed4b1b10f4c9facb797d8055f3cc59.nt} +0 -0
  343. data/public/uploads/import/{330e08c32fde94fb80f656346d1f8383.nt → 25634d3f1c727c79e47104d45a169d22.nt} +0 -0
  344. data/public/uploads/import/{337790be2663214e66066b1215fdd137.nt → 25eb335ad83136428eedfd427409f5bb.nt} +0 -0
  345. data/public/uploads/import/{34b77ff970ca71511fb4b224b7dadd1c.nt → 283e799cc2342cf33550a1668e760021.nt} +0 -0
  346. data/public/uploads/import/{38de0d3c9cba92e8a3c312e7e95e7ec1.nt → 28848fff43a56cba0924478a015e4c8e.nt} +0 -0
  347. data/public/uploads/import/28a2a5974b1eed79e85d92046fe58d22.nt +260 -0
  348. data/public/uploads/import/296bea9c560bb915222cb892124c9bab.nt +260 -0
  349. data/public/uploads/import/2ac22cf493b3991b6524e7bf7c9c9483.nt +260 -0
  350. data/public/uploads/import/{3981aa91cf22e26fbf6b1312b2bcdcc8.nt → 2b0de64784aa4f574c74bd7a5ca67e81.nt} +0 -0
  351. data/public/uploads/import/{3d01f84539a62ebe6f76124e8cdbbb23.nt → 2be31e7e2493319f9cb7e210eabb84b6.nt} +0 -0
  352. data/public/uploads/import/2f7a5213d7e134237b69cbdc9c8e0985.nt +260 -0
  353. data/public/uploads/import/{3d05bb72c3751da3830cf53e966283d4.nt → 3025f07688ed08e81c430eed8e5e2b2c.nt} +0 -0
  354. data/public/uploads/import/{3e1d2f770bfe3c79a367780731536a3a.nt → 3062df55d07d30a0db0b00fc59a066ef.nt} +0 -0
  355. data/public/uploads/import/{3e41bd1875dc23401278c73bd12be881.nt → 35901d7daa6f90eb09b508eab2f19f97.nt} +0 -0
  356. data/public/uploads/import/35943ba240eb26dc43092746316a666a.nt +260 -0
  357. data/public/uploads/import/{3f3e3dbb09c3df6bfaed261311de3e7d.nt → 3a39842a235c47d341390bb5ff76b013.nt} +0 -0
  358. data/public/uploads/import/{4297d9970e47be5ced4991a083032eb9.nt → 4217de34967f03696a2d1c4ec832b395.nt} +0 -0
  359. data/public/uploads/import/{5925186958bd537ad5e79e76e3a1f714.nt → 432a521429991340c75d39069672f200.nt} +0 -0
  360. data/public/uploads/import/4410370b7349278a941ec73edc506afb.nt +260 -0
  361. data/public/uploads/import/{596c40774bb5979c8de5ce6daa58de35.nt → 44f43bafabc21e6a080bb820b86c8efa.nt} +0 -0
  362. data/public/uploads/import/{5dc5dcd978db1c59ec074e9137f0109c.nt → 4910bf38577bcef7ca835225a22d04cf.nt} +0 -0
  363. data/public/uploads/import/{5e46663e7e2eb92e5e8846d7c0f8e713.nt → 4a1092bfdd2c3e6cd684d00f2ebb48a0.nt} +0 -0
  364. data/public/uploads/import/{70022a2a7e808000dc3d55529d203480.nt → 4a924fe4d94485b794a0ac4ae2dbe7b2.nt} +0 -0
  365. data/public/uploads/import/4ab869eeeec7deaf5840548196350ffe.nt +260 -0
  366. data/public/uploads/import/{70b32583acaca5843ac7dbdc2a89de99.nt → 4d8c90b9e5b7a06e40dc9b426f19d762.nt} +0 -0
  367. data/public/uploads/import/4f884498309031e9a3b75c5d7c59b353.nt +260 -0
  368. data/public/uploads/import/{77ea050ae3a00aedd2a6e4158454a54d.nt → 503e198ce4ec0e311db1d06fc2b6962a.nt} +0 -0
  369. data/public/uploads/import/{7cc9feb5e9180d29865b9d4e81694921.nt → 51fcfdd1ba9e57f7afd8bfb3135b18be.nt} +0 -0
  370. data/public/uploads/import/{8030e54313e2c7231c4c30cd4145d576.nt → 525b24358e3b1a5afd18bbbe930bcb35.nt} +0 -0
  371. data/public/uploads/import/{8a380e32de64ffe7fce5da5068fe174f.nt → 542a2a3b0a62b9599922a67a5085c625.nt} +0 -0
  372. data/public/uploads/import/{8bb6484a9eb0c3266274c08ad8500669.nt → 5572705385339b834e975f5d7f26f89a.nt} +0 -0
  373. data/public/uploads/import/{8e0bf83a2ca503753efaa29bff6f84f6.nt → 56aafaf5adcdd148722aeaf0b37a2ba3.nt} +0 -0
  374. data/public/uploads/import/{90711ea002f6b7b4e5476e414e185603.nt → 59b6122c9a524891ae8dadf34e04f925.nt} +0 -0
  375. data/public/uploads/import/{918a5fc2c8fcdbaddc2a02588d599dcf.nt → 5d4578b7bb3e3f2067f354be5b68d08f.nt} +0 -0
  376. data/public/uploads/import/{923f9ebccb7b0e9e9fafddc60750b989.nt → 645eb1a598ae7003b45b29176587088b.nt} +0 -0
  377. data/public/uploads/import/{933e4e2baee4d91b8f7681fa4d2ad9fa.nt → 64cea1620f460841301aa57d23e6223c.nt} +0 -0
  378. data/public/uploads/import/{93f642eacd966c98645345d2ccdf578d.nt → 6bee752d1b71422389551999e1c29af9.nt} +0 -0
  379. data/public/uploads/import/{9a3d0f8d1872d4ba5dd281194ddea4a2.nt → 6c03e1aa271ca4613340130d16722850.nt} +0 -0
  380. data/public/uploads/import/{9a3f1c9de8e734b7e1d969d07ea57a83.nt → 6d829ce927bca0d0291d3ca94c87d47d.nt} +0 -0
  381. data/public/uploads/import/{9f91263fee5275ecbf303c7da0a9e84d.nt → 7019eec0ddbd6deccfa69f564e03007d.nt} +0 -0
  382. data/public/uploads/import/{9f9d6b4293be8def1b406156a3e2bcd9.nt → 70dcaf9bcb39a21172db26e20ef3abb1.nt} +0 -0
  383. data/public/uploads/import/{a230b36c3666a6b16fec6283e99b221f.nt → 7c7f872865d77373f4e5d12d3b46c6d1.nt} +0 -0
  384. data/public/uploads/import/7d630e4ae70fcdef7a26a5f54be1c87d.nt +260 -0
  385. data/public/uploads/import/{a51b35089dc096f0f1f5d5250edb8d5c.nt → 7e2154e0fb9ecfa38d7d1791ba1f91e2.nt} +0 -0
  386. data/public/uploads/import/{a5265a00946627588ecdac317c061c6c.nt → 7f5864cd2bb3608a478b6cacf213b6ef.nt} +0 -0
  387. data/public/uploads/import/{a712bf10adc7546d5c567194d7a13603.nt → 7fd575d1e51e867294cc3c55dd7b86d3.nt} +0 -0
  388. data/public/uploads/import/{a7e315db905ac7808126b600dd1f6203.nt → 81e614eb844d0a6e07724df0e0a391af.nt} +0 -0
  389. data/public/uploads/import/{a95b7d93b7483116ff13c894a46b5c1c.nt → 8635fc73b0ad52e5531f6542cf73aab0.nt} +0 -0
  390. data/public/uploads/import/{b5e47ea582afb81341f7b7084cc17a06.nt → 87e8ab3b30135925cd296a4f105fdf28.nt} +0 -0
  391. data/public/uploads/import/{b826bcfad8f18294a425d65482c46033.nt → 88f3ede5c716bcdc9ac4b16361f6014c.nt} +0 -0
  392. data/public/uploads/import/{bcf18c9e4dbe72745f4ec2878a4b1690.nt → 8a09903d5ce62375eb315fb5a28cfb1e.nt} +0 -0
  393. data/public/uploads/import/8dd67edd0888cc10c181b0cb13f114a5.nt +260 -0
  394. data/public/uploads/import/{c32855cb4b3e8616db2ef3f5f9cb5ca7.nt → 945e467cd3b86903a712322622403350.nt} +0 -0
  395. data/public/uploads/import/{c438f3150fb39b93ee01a6f8bc5bb7b9.nt → 947fc847742818ad2f8946150fa68280.nt} +0 -0
  396. data/public/uploads/import/{c7b54e24ea6bde65f8430d1d747a6dda.nt → 9668f439f7429886747a4981c53d2f7b.nt} +0 -0
  397. data/public/uploads/import/97bf213b1827e1b3fe4a93f660cd297b.nt +260 -0
  398. data/public/uploads/import/9cc1c8c8530900bb42723b35a85c997a.nt +260 -0
  399. data/public/uploads/import/{c8ee5bc696312468c4354bad6c583321.nt → a34ebe5f52348d8e0690efbbd7dbb29b.nt} +0 -0
  400. data/public/uploads/import/{cfc73574fe398be7ce684fbc17aa1bb7.nt → a6362a3aa7b0154ee5881aa4e97e4fc1.nt} +0 -0
  401. data/public/uploads/import/{d038a0416528900076cdb4a28211a84c.nt → acfb67a494ba87573b3cdd7997c7aba2.nt} +0 -0
  402. data/public/uploads/import/{d2366992f6e9e4377d02fc691fc2d3d3.nt → ae888974bc1697ae1949a95dbcaa104b.nt} +0 -0
  403. data/public/uploads/import/{d250e9b7a2819d62a43d5270031eaa6d.nt → b238195b0159fd1aca793e33ea179b1d.nt} +0 -0
  404. data/public/uploads/import/{dc14a0fa30c105a5770da2c960daaf29.nt → b36159aad53d09f5e6ca12e0dcea000c.nt} +0 -0
  405. data/public/uploads/import/{e9289f6f920cf44d0e81599410b39090.nt → b42cf56722b79ef7e6730d19130d9dfd.nt} +0 -0
  406. data/public/uploads/import/b54ffcb43a4c939b339fca358223177d.nt +260 -0
  407. data/public/uploads/import/{ed1c212d4f320e414caacda7a7988f83.nt → bc140bce0ab1818edd55350b793eb36c.nt} +0 -0
  408. data/public/uploads/import/{ed460af60bf4d0884d37a86bb02411e7.nt → bdfe458413c233f7c2e96041b8c2aa9d.nt} +0 -0
  409. data/public/uploads/import/{f0cde297ac63a3654a1d5e5535a6f685.nt → bf0168c5d5f472442707ff76115480b0.nt} +0 -0
  410. data/public/uploads/import/{f17024adf37be768041307528e848bd6.nt → c0479e6569a5cbd8fc74702c165f71b5.nt} +0 -0
  411. data/public/uploads/import/{f2f6025f6de90ee4609c2928a817c51d.nt → c2c0372e27f625ca1ce1aa527059d6d2.nt} +0 -0
  412. data/public/uploads/import/{f427507b1c208ddf69204ea5414e5d18.nt → c43fbad62457debced3e2b5f175b633a.nt} +0 -0
  413. data/public/uploads/import/{ffce91887b3ac5b7319a80926ff310ef.nt → c4d8f635e4bb5601713bbf9bc456c797.nt} +0 -0
  414. data/public/uploads/{tmp/1417625624-7926-3861/hobbies.nt → import/c61960b982b3a8308e41de6cf094255d.nt} +0 -0
  415. data/public/uploads/{tmp/1417625658-7975-5171/hobbies.nt → import/c63faf859a988775b27acb8e8712f13b.nt} +0 -0
  416. data/public/uploads/{tmp/1418649743-7886-1510/hobbies.nt → import/cb1b6b27edfcc404ca469fa3ec6b0664.nt} +0 -0
  417. data/public/uploads/{tmp/1418653029-9019-1572/hobbies.nt → import/cb37615bf36a26ecbfd6e0f738302d17.nt} +0 -0
  418. data/public/uploads/{tmp/1418656093-9614-5971/hobbies.nt → import/d0369e2cb8216ddc3858a5ae93307da2.nt} +0 -0
  419. data/public/uploads/import/d395b7bd9126c74ee3586b849768ef14.nt +260 -0
  420. data/public/uploads/{tmp/1418659992-10218-8665/hobbies.nt → import/d5d835b59eae82a208653c1b30ad74c9.nt} +0 -0
  421. data/public/uploads/{tmp/1418664440-11199-8740/hobbies.nt → import/d82612b6c9d65e2f2dcfbda202b59a90.nt} +0 -0
  422. data/public/uploads/{tmp/1418665022-11430-9919/hobbies.nt → import/df361efdd673094c731454a91d925850.nt} +0 -0
  423. data/public/uploads/import/df66a381628757d745ae3b60642c3746.nt +260 -0
  424. data/public/uploads/{tmp/1418665225-11485-5805/hobbies.nt → import/e1c59deb5c9119a65787bc5c2d71d678.nt} +0 -0
  425. data/public/uploads/{tmp/1418665744-11777-4958/hobbies.nt → import/e2242e8bc7216edacba54071db90e2f7.nt} +0 -0
  426. data/public/uploads/{tmp/1418666103-11837-9818/hobbies.nt → import/e3d2d0b824f8c45aae697261a4dbe891.nt} +0 -0
  427. data/public/uploads/{tmp/1418666157-11880-9002/hobbies.nt → import/e59bb2aced9152cc0c9a8b1be30bf7b0.nt} +0 -0
  428. data/public/uploads/{tmp/1418666292-11920-9076/hobbies.nt → import/e9a6f6db0a5a7e13b6eb576a8f724347.nt} +0 -0
  429. data/public/uploads/{tmp/1418666482-11968-5799/hobbies.nt → import/ea69b273df07fb624312cbf853c434f4.nt} +0 -0
  430. data/public/uploads/{tmp/1418666589-12006-6137/hobbies.nt → import/eaa64a373eab2b1ccf3a0caf4b9a9b36.nt} +0 -0
  431. data/public/uploads/import/eaec06e06215273b63df2bfbfcd1be1f.nt +260 -0
  432. data/public/uploads/{tmp/1419417707-62741-8601/hobbies.nt → import/ed37994c6a8c15cc9dfcc5f0fc98d25e.nt} +0 -0
  433. data/public/uploads/{tmp/1419418501-62977-9798/hobbies.nt → import/ef8c5b07b56a2f5bfd0818d146b54ad0.nt} +0 -0
  434. data/public/uploads/import/f02c74ffa5f9b0247ed608654d69afbe.nt +260 -0
  435. data/public/uploads/import/f19ecbe95745af34dc11c7ee3a185250.nt +260 -0
  436. data/public/uploads/{tmp/1419419091-63178-5200/hobbies.nt → import/f1f6bbcef457c577c6cf8a41c332ed52.nt} +0 -0
  437. data/public/uploads/{tmp/1419845421-37940-7338/hobbies.nt → import/f24e1405527ac90b18fc4b9103b0356b.nt} +0 -0
  438. data/public/uploads/{tmp/1419872019-93309-7785/hobbies.nt → import/f324628e42cd2165e0befb2dc9e19ec3.nt} +0 -0
  439. data/public/uploads/{tmp/1419872459-93489-7475/hobbies.nt → import/f4f4b5eb4283efc264b2e29b728b45ce.nt} +0 -0
  440. data/public/uploads/{tmp/1420204292-55473-2339/hobbies.nt → import/f6cda0379fadb6b9ed88b59b04d1544a.nt} +0 -0
  441. data/public/uploads/import/f8eb5272e6cc4b691765b370685b634e.nt +260 -0
  442. data/public/uploads/{tmp/1420469113-94913-1977/hobbies.nt → import/f92c5202d53cf595d63051016ebe2aed.nt} +0 -0
  443. data/public/uploads/{tmp/1420469218-94957-7818/hobbies.nt → import/f9948cb7e270f1582313d9d64a0013f4.nt} +0 -0
  444. data/public/uploads/tmp/1399391854-10068-6618/hobbies.nt +260 -0
  445. data/public/uploads/tmp/1399391911-10213-8446/hobbies.nt +260 -0
  446. data/public/uploads/tmp/1399392015-10496-2495/hobbies.nt +260 -0
  447. data/public/uploads/tmp/1399465936-82819-2227/hobbies.nt +260 -0
  448. data/public/uploads/tmp/1399562287-11058-4844/hobbies.nt +260 -0
  449. data/public/uploads/tmp/1399562349-11220-5006/hobbies.nt +260 -0
  450. data/public/uploads/tmp/1399562606-12081-8172/hobbies.nt +260 -0
  451. data/public/uploads/tmp/1399562663-12419-6959/hobbies.nt +260 -0
  452. data/public/uploads/tmp/1399562758-12675-1044/hobbies.nt +260 -0
  453. data/public/uploads/tmp/1399563325-14184-4165/hobbies.nt +260 -0
  454. data/public/uploads/tmp/1399563511-14691-1597/hobbies.nt +260 -0
  455. data/public/uploads/tmp/1399563577-14899-9811/hobbies.nt +260 -0
  456. data/public/uploads/tmp/1399563654-15101-9704/hobbies.nt +260 -0
  457. data/public/uploads/tmp/1399563789-15465-3853/hobbies.nt +260 -0
  458. data/public/uploads/tmp/1399564038-16136-7758/hobbies.nt +260 -0
  459. data/public/uploads/tmp/1399564391-17273-4324/hobbies.nt +260 -0
  460. data/public/uploads/tmp/1399565011-19048-6725/hobbies.nt +260 -0
  461. data/public/uploads/tmp/1399565066-19204-6162/hobbies.nt +260 -0
  462. data/public/uploads/tmp/1399639727-33218-9866/hobbies.nt +260 -0
  463. data/public/uploads/tmp/1399642528-42021-8916/hobbies.nt +260 -0
  464. data/public/uploads/tmp/1399642763-42734-7348/hobbies.nt +260 -0
  465. data/public/uploads/tmp/1399886894-13606-2429/hobbies.nt +260 -0
  466. data/public/uploads/tmp/{1420471310-95437-1840 → 1400683232-10539-5676}/hobbies.nt +0 -0
  467. data/public/uploads/tmp/{1420475764-97681-5693 → 1400683420-10634-8312}/hobbies.nt +0 -0
  468. data/public/uploads/tmp/{1420475937-97729-2119 → 1400683468-10666-6540}/hobbies.nt +0 -0
  469. data/public/uploads/tmp/{1420476857-98058-7891 → 1400684714-11424-9829}/hobbies.nt +0 -0
  470. data/public/uploads/tmp/{1420535851-99018-0174 → 1400846672-62648-9413}/hobbies.nt +0 -0
  471. data/public/uploads/tmp/{1420536204-1785-0172 → 1400846766-62697-7073}/hobbies.nt +0 -0
  472. data/public/uploads/tmp/{1420551687-4559-4581 → 1401180379-3162-2871}/hobbies.nt +0 -0
  473. data/public/uploads/tmp/{1420553228-5060-8398 → 1401185202-4377-2768}/hobbies.nt +0 -0
  474. data/public/uploads/tmp/{1420554138-5330-1218 → 1401192012-6573-2832}/hobbies.nt +0 -0
  475. data/public/uploads/tmp/{1420623682-11549-0730 → 1401194508-7699-9522}/hobbies.nt +0 -0
  476. data/public/uploads/tmp/{1420627830-12489-1669 → 1401194627-7742-0813}/hobbies.nt +0 -0
  477. data/public/uploads/tmp/{1420643849-18200-3932 → 1401194954-7841-9994}/hobbies.nt +0 -0
  478. data/public/uploads/tmp/{1420649772-21728-5542 → 1401195326-7932-3790}/hobbies.nt +0 -0
  479. data/public/uploads/tmp/{1420708117-27095-8292 → 1401206318-10643-2808}/hobbies.nt +0 -0
  480. data/public/uploads/tmp/{1420708387-27223-6774 → 1401292131-92601-6112}/hobbies.nt +0 -0
  481. data/public/uploads/tmp/{1420708470-27267-7475 → 1401292181-92670-8615}/hobbies.nt +0 -0
  482. data/public/uploads/tmp/{1420708517-27294-4695 → 1401292252-92839-0886}/hobbies.nt +0 -0
  483. data/public/uploads/tmp/{1420708539-27319-1354 → 1401292294-92900-5587}/hobbies.nt +0 -0
  484. data/public/uploads/tmp/{1420708586-27334-3786 → 1401292390-92976-9639}/hobbies.nt +0 -0
  485. data/public/uploads/tmp/{1420708992-27418-8019 → 1401701949-3140-4347}/hobbies.nt +0 -0
  486. data/public/uploads/tmp/{1420709221-27495-1252 → 1401702355-40904-9058}/hobbies.nt +0 -0
  487. data/public/uploads/tmp/{1420709888-27667-9904 → 1401702361-40926-1371}/hobbies.nt +0 -0
  488. data/public/uploads/tmp/{1420710092-27729-5735 → 1401702406-40992-5615}/hobbies.nt +0 -0
  489. data/public/uploads/tmp/{1420710448-27814-7190 → 1401702475-41050-2716}/hobbies.nt +0 -0
  490. data/public/uploads/tmp/{1420710886-27909-4558 → 1401702625-41136-3304}/hobbies.nt +0 -0
  491. data/public/uploads/tmp/{1420711474-28046-6914 → 1401702771-41202-1777}/hobbies.nt +0 -0
  492. data/public/uploads/tmp/{1420711601-28081-0714 → 1401704263-41803-0906}/hobbies.nt +0 -0
  493. data/public/uploads/tmp/{1420711904-28153-8591 → 1401704312-41845-2277}/hobbies.nt +0 -0
  494. data/public/uploads/tmp/{1420712160-28240-2054 → 1401704455-41906-3348}/hobbies.nt +0 -0
  495. data/public/uploads/tmp/{1420712349-28303-3685 → 1401704517-41941-3825}/hobbies.nt +0 -0
  496. data/public/uploads/tmp/{1420712756-28475-0893 → 1401704557-42078-2926}/hobbies.nt +0 -0
  497. data/public/uploads/tmp/{1420712995-28567-4743 → 1401704659-42140-2026}/hobbies.nt +0 -0
  498. data/public/uploads/tmp/{1420722946-31448-5312 → 1401704727-42194-2926}/hobbies.nt +0 -0
  499. data/public/uploads/tmp/{1420723021-31498-6069 → 1401704810-42233-0719}/hobbies.nt +0 -0
  500. data/public/uploads/tmp/{1420723172-31541-4390 → 1401704877-42346-6423}/hobbies.nt +0 -0
  501. data/public/uploads/tmp/{1420723249-31574-6508 → 1401704969-42396-2636}/hobbies.nt +0 -0
  502. data/public/uploads/tmp/{1422290833-38334-3392 → 1401706200-42741-9489}/hobbies.nt +0 -0
  503. data/public/uploads/tmp/{1422292996-38701-6635 → 1401706505-42885-6630}/hobbies.nt +0 -0
  504. data/public/uploads/tmp/{1422293183-38751-2662 → 1401706579-42925-3938}/hobbies.nt +0 -0
  505. data/public/uploads/tmp/{1422293478-38811-6215 → 1401706998-43068-7269}/hobbies.nt +0 -0
  506. data/public/uploads/tmp/{1422300870-38980-1343 → 1401707073-43147-4480}/hobbies.nt +0 -0
  507. data/public/uploads/tmp/{1422372626-67843-5956 → 1401707148-43190-8990}/hobbies.nt +0 -0
  508. data/public/uploads/tmp/{1422374262-68176-3483 → 1401707185-43233-6339}/hobbies.nt +0 -0
  509. data/public/uploads/tmp/{1422374611-68319-4455 → 1401707525-43306-5760}/hobbies.nt +0 -0
  510. data/public/uploads/tmp/{1422467418-10546-8937 → 1401716194-45552-4247}/hobbies.nt +0 -0
  511. data/public/uploads/tmp/{1422467614-10596-6509 → 1401716269-45634-6256}/hobbies.nt +0 -0
  512. data/public/uploads/tmp/{1422537271-15787-8339 → 1401716431-45713-6690}/hobbies.nt +0 -0
  513. data/public/uploads/tmp/{1422538114-15972-5522 → 1401717803-46392-3771}/hobbies.nt +0 -0
  514. data/public/uploads/tmp/{1422540419-16733-4506 → 1401717970-46482-3771}/hobbies.nt +0 -0
  515. data/public/uploads/tmp/1401719163-46906-3771/hobbies.nt +259 -0
  516. data/public/uploads/tmp/1401719307-46967-3771/hobbies.nt +259 -0
  517. data/public/uploads/tmp/1401719376-47013-3771/hobbies.nt +259 -0
  518. data/public/uploads/tmp/1401719630-47114-3771/hobbies.nt +259 -0
  519. data/public/uploads/tmp/1401719982-47199-3873/hobbies.nt +259 -0
  520. data/public/uploads/tmp/1401720178-47285-9163/hobbies.nt +259 -0
  521. data/public/uploads/tmp/1401720378-47376-3771/hobbies.nt +259 -0
  522. data/public/uploads/tmp/1401720550-47464-3771/hobbies.nt +259 -0
  523. data/public/uploads/tmp/1401720661-47532-3771/hobbies.nt +259 -0
  524. data/public/uploads/tmp/1401721032-47662-3771/hobbies.nt +259 -0
  525. data/public/uploads/tmp/1401721110-47707-3771/hobbies.nt +259 -0
  526. data/public/uploads/tmp/1401722057-48025-3771/hobbies.nt +259 -0
  527. data/public/uploads/tmp/1401722131-48079-3771/hobbies.nt +259 -0
  528. data/public/uploads/tmp/1401722177-48112-3771/hobbies.nt +259 -0
  529. data/public/uploads/tmp/1401722330-48176-3771/hobbies.nt +259 -0
  530. data/public/uploads/tmp/1401722430-48237-4227/hobbies.nt +259 -0
  531. data/public/uploads/tmp/1401722732-48343-4227/hobbies.nt +259 -0
  532. data/public/uploads/tmp/1401722909-48424-1412/hobbies.nt +259 -0
  533. data/public/uploads/tmp/1401723009-48482-7948/hobbies.nt +259 -0
  534. data/public/uploads/tmp/1401723431-48680-9071/hobbies.nt +259 -0
  535. data/public/uploads/tmp/1401724808-49229-3988/hobbies.nt +259 -0
  536. data/public/uploads/tmp/1401725005-49344-4227/hobbies.nt +259 -0
  537. data/public/uploads/tmp/1401801415-57643-7508/hobbies.nt +259 -0
  538. data/public/uploads/tmp/1401801470-57683-1511/hobbies.nt +259 -0
  539. data/public/uploads/tmp/1401801589-57766-6716/hobbies.nt +259 -0
  540. data/public/uploads/tmp/1401801648-57810-6653/hobbies.nt +259 -0
  541. data/public/uploads/tmp/1401801703-57902-1218/hobbies.nt +259 -0
  542. data/public/uploads/tmp/1401801780-57957-6963/hobbies.nt +259 -0
  543. data/public/uploads/tmp/1401801876-58010-6576/hobbies.nt +259 -0
  544. data/public/uploads/tmp/1401801925-58061-5018/hobbies.nt +259 -0
  545. data/public/uploads/tmp/1401801966-58088-4598/hobbies.nt +259 -0
  546. data/public/uploads/tmp/1401802064-58134-0309/hobbies.nt +259 -0
  547. data/public/uploads/tmp/1401802128-58183-5882/hobbies.nt +259 -0
  548. data/public/uploads/tmp/1401802254-58261-9292/hobbies.nt +259 -0
  549. data/public/uploads/tmp/1401802305-58305-0716/hobbies.nt +259 -0
  550. data/public/uploads/tmp/1401802559-58393-8087/hobbies.nt +259 -0
  551. data/public/uploads/tmp/1401802603-58429-5414/hobbies.nt +259 -0
  552. data/public/uploads/tmp/1401802704-58494-3176/hobbies.nt +259 -0
  553. data/public/uploads/tmp/1401876393-11719-7974/hobbies.nt +259 -0
  554. data/public/uploads/tmp/1401880994-13325-5134/hobbies.nt +259 -0
  555. data/public/uploads/tmp/1401881408-13497-2210/hobbies.nt +259 -0
  556. data/public/uploads/tmp/1402407940-72993-0117/hobbies.nt +259 -0
  557. data/public/uploads/tmp/1403276908-17566-3335/hobbies.nt +259 -0
  558. data/public/uploads/tmp/1403276972-17606-3705/hobbies.nt +259 -0
  559. data/public/uploads/tmp/1403277054-17662-2528/hobbies.nt +259 -0
  560. data/public/uploads/tmp/1405605924-28482-6761/hobbies.nt +259 -0
  561. data/public/uploads/tmp/1405606039-28627-4530/hobbies.nt +259 -0
  562. data/public/uploads/tmp/1405606796-29190-4080/hobbies.nt +259 -0
  563. data/test/authentication.rb +33 -0
  564. data/test/controllers/hierarchy_test.rb +406 -0
  565. data/test/{functional → controllers}/rdf_rendering_test.rb +26 -33
  566. data/test/integration/alphabetical_test.rb +18 -16
  567. data/test/integration/authentication_test.rb +13 -15
  568. data/test/integration/browse_concepts_and_labels_test.rb +27 -32
  569. data/test/integration/client_augmentation_test.rb +14 -15
  570. data/test/integration/client_edit_concept_test.rb +31 -33
  571. data/test/integration/collection_circularity_test.rb +57 -53
  572. data/test/integration/concept_browsing_test.rb +23 -25
  573. data/test/integration/concept_scheme_browsing_test.rb +28 -28
  574. data/test/integration/edit_collections_test.rb +21 -0
  575. data/test/integration/edit_concepts_test.rb +15 -13
  576. data/test/integration/export_test.rb +73 -0
  577. data/test/integration/import_test.rb +77 -0
  578. data/test/integration/instance_configuration_browsing_test.rb +19 -21
  579. data/test/integration/navigation_test.rb +14 -16
  580. data/test/integration/note_annotations_test.rb +34 -36
  581. data/test/integration/search_test.rb +105 -100
  582. data/test/integration/tree_test.rb +13 -5
  583. data/test/integration/untranslated_test.rb +19 -22
  584. data/test/integration/user_management_test.rb +51 -0
  585. data/test/integration_test_helper.rb +10 -2
  586. data/test/{unit → models}/concept_scheme_test.rb +1 -1
  587. data/test/models/concept_test.rb +178 -0
  588. data/test/{unit → models}/hygiene_test.rb +8 -8
  589. data/test/{unit → models}/inline_data_test.rb +11 -13
  590. data/test/{unit → models}/instance_configuration_test.rb +16 -18
  591. data/test/{unit → models}/note_test.rb +4 -6
  592. data/test/models/origin_test.rb +83 -0
  593. data/test/{unit → models}/rdf_sync_test.rb +20 -22
  594. data/test/{unit → models}/rdfapi_test.rb +0 -1
  595. data/test/models/skos_collection_import_test.rb +104 -0
  596. data/test/models/skos_export_test.rb +48 -0
  597. data/test/models/skos_import_test.rb +143 -0
  598. data/test/models/testdata.nt +22 -0
  599. data/test/test_helper.rb +5 -3
  600. metadata +454 -305
  601. data/app/views/collections/show.html.erb +0 -53
  602. data/app/views/concepts/index.iqrdf +0 -28
  603. data/app/views/kaminari/_first_page.html.erb +0 -13
  604. data/app/views/kaminari/_gap.html.erb +0 -8
  605. data/app/views/kaminari/_last_page.html.erb +0 -13
  606. data/app/views/kaminari/_next_page.html.erb +0 -13
  607. data/app/views/kaminari/_page.html.erb +0 -12
  608. data/app/views/kaminari/_paginator.html.erb +0 -25
  609. data/app/views/kaminari/_prev_page.html.erb +0 -13
  610. data/config/initializers/secret_token_configurator.rb +0 -29
  611. data/config/initializers/simple_form.rb +0 -177
  612. data/config/locales/simple_form.en.yml +0 -24
  613. data/config/locales/simple_form.pt.yml +0 -23
  614. data/lib/engine_tasks/setup.rake +0 -10
  615. data/lib/iqvoc/versioning.rb +0 -151
  616. data/lib/tasks/heroku.rake +0 -14
  617. data/lib/tasks/setup.rake +0 -7
  618. data/lib/templates/erb/scaffold/_form.html.erb +0 -13
  619. data/test/capybara_helper.rb +0 -31
  620. data/test/factories.rb +0 -75
  621. data/test/functional/hierarchy_test.rb +0 -408
  622. data/test/unit/concept_test.rb +0 -153
  623. data/test/unit/origin_test.rb +0 -78
  624. data/test/unit/skos_import_test.rb +0 -228
@@ -0,0 +1,11 @@
1
+ module RdfNamespacesHelper
2
+ include *Iqvoc.default_rdf_namespace_helper_modules
3
+
4
+ def iqvoc_default_rdf_namespaces
5
+ Iqvoc.rdf_namespaces.merge({
6
+ default: root_url(format: nil, lang: nil, trailing_slash: true),
7
+ coll: rdf_collections_url(trailing_slash: true, lang: nil, format: nil),
8
+ schema: schema_url(format: nil, anchor: '', lang: nil)
9
+ })
10
+ end
11
+ end
@@ -15,7 +15,6 @@
15
15
  # limitations under the License.
16
16
 
17
17
  module SearchResultsHelper
18
-
19
18
  def search_language_selected?(lang)
20
19
  (params[:languages] && params[:languages].include?(lang.to_s)) ||
21
20
  (!params[:query] && I18n.locale.to_s == lang.to_s)
@@ -41,8 +40,7 @@ module SearchResultsHelper
41
40
  end
42
41
 
43
42
  content_tag :h2 do
44
- raw( t('txt.views.search_results.search_results') << " " << content_tag(:small, desc) )
43
+ raw( t('txt.views.search_results.search_results') << ' ' << content_tag(:small, desc) )
45
44
  end
46
45
  end
47
-
48
46
  end
@@ -1,5 +1,4 @@
1
1
  module WidgetHelper
2
-
3
2
  def widget_values(concept, relation_class)
4
3
  concept.concept_relations_by_id(relation_class.name.to_relation_name)
5
4
  end
@@ -35,5 +34,4 @@ module WidgetHelper
35
34
  concepts = concepts_with_ranks.reject { |k, v| !allowed_concepts.include?(k) }
36
35
  concepts.map { |c, r| concept_widget_data(c, r) }.to_json
37
36
  end
38
-
39
37
  end
@@ -0,0 +1,19 @@
1
+ require 'iqvoc/skos_exporter'
2
+
3
+ class ExportJob < Struct.new(:export, :filename, :type, :base_uri)
4
+ def perform
5
+ strio = StringIO.new
6
+
7
+ exporter = Iqvoc::SkosExporter.new(filename, type, base_uri, Logger.new(strio))
8
+ exporter.run
9
+ @messages = strio.string
10
+ end
11
+
12
+ def success(job)
13
+ export.finish!(@messages)
14
+ end
15
+
16
+ def error(job, exception)
17
+ export.fail!(exception)
18
+ end
19
+ end
@@ -1,10 +1,10 @@
1
1
  require 'iqvoc/skos_importer'
2
2
 
3
- class ImportJob < Struct.new(:import, :content, :user, :namespace, :publish)
3
+ class ImportJob < Struct.new(:import, :filename, :user, :namespace, :publish)
4
4
  def perform
5
5
  strio = StringIO.new
6
6
 
7
- importer = Iqvoc::SkosImporter.new(content.to_s.split("\n"), namespace, Logger.new(strio), publish)
7
+ importer = Iqvoc::SkosImporter.new(filename, namespace, Logger.new(strio), publish)
8
8
  importer.run
9
9
  @messages = strio.string
10
10
  end
@@ -15,35 +15,29 @@
15
15
  # limitations under the License.
16
16
 
17
17
  class Collection::Base < Concept::Base
18
-
19
- #*********** Associations
20
-
21
18
  has_many Note::SKOS::Definition.name.to_relation_name,
22
- :class_name => 'Note::SKOS::Definition',
23
- :as => :owner,
24
- :dependent => :destroy
19
+ class_name: 'Note::SKOS::Definition',
20
+ as: :owner,
21
+ dependent: :destroy
25
22
 
26
23
  has_many :members,
27
- :class_name => 'Collection::Member::Base',
28
- :foreign_key => 'collection_id',
29
- :dependent => :destroy
24
+ class_name: 'Collection::Member::Base',
25
+ foreign_key: 'collection_id',
26
+ dependent: :destroy
30
27
 
31
28
  has_many :parent_collection_members,
32
- :class_name => 'Collection::Member::Base',
33
- :foreign_key => 'target_id',
34
- :dependent => :destroy
29
+ class_name: 'Collection::Member::Base',
30
+ foreign_key: 'target_id',
31
+ dependent: :destroy
35
32
  has_many :parent_collections,
36
- :through => :parent_collection_members
37
-
38
-
39
- #********** Hooks
33
+ through: :parent_collection_members
40
34
 
41
35
  after_save :regenerate_concept_members, :regenerate_collection_members
42
36
 
43
- #********** Scopes
37
+ validate :circular_subcollections
44
38
 
45
39
  def self.by_origin(origin)
46
- where(:origin => origin)
40
+ where(origin: origin)
47
41
  end
48
42
 
49
43
  def self.by_label_value(val)
@@ -60,11 +54,13 @@ class Collection::Base < Concept::Base
60
54
  where(Collection::Member::Base.arel_table[:collection_id].eq(parent_id))
61
55
  end
62
56
 
63
- #********** Validations
64
-
65
- validate :circular_subcollections
57
+ def self.edit_link_partial_name
58
+ 'partials/collection/edit_link_base'
59
+ end
66
60
 
67
- #********** Methods
61
+ def self.new_link_partial_name
62
+ 'partials/collection/new_link_base'
63
+ end
68
64
 
69
65
  def subcollections
70
66
  members.map(&:target).select { |m| m.is_a?(::Collection::Base) }
@@ -87,7 +83,7 @@ class Collection::Base < Concept::Base
87
83
  end
88
84
 
89
85
  def build_rdf_subject(&block)
90
- IqRdf::Coll::build_uri(self.origin, IqRdf::Skos::build_uri("Collection"), &block)
86
+ IqRdf::Coll::build_uri(self.origin, IqRdf::Skos::build_uri('Collection'), &block)
91
87
  end
92
88
 
93
89
  def inline_member_concept_origins=(origins)
@@ -101,9 +97,9 @@ class Collection::Base < Concept::Base
101
97
 
102
98
  def inline_member_concepts
103
99
  if @member_concept_origins
104
- Concept::Base.editor_selectable.where(:origin => @member_concept_origins)
100
+ Concept::Base.editor_selectable.where(origin: @member_concept_origins)
105
101
  else
106
- concepts.select{|c| c.editor_selectable?}
102
+ concepts.select{ |c| c.editor_selectable? }
107
103
  end
108
104
  end
109
105
 
@@ -119,14 +115,12 @@ class Collection::Base < Concept::Base
119
115
 
120
116
  def inline_member_collections
121
117
  if @member_collection_origins
122
- Collection::Base.where(:origin => @member_collection_origins)
118
+ Collection::Base.where(origin: @member_collection_origins)
123
119
  else
124
120
  subcollections
125
121
  end
126
122
  end
127
123
 
128
- #********** Hook methods
129
-
130
124
  def regenerate_members(target_class, target_origins)
131
125
  return if target_origins.nil? # There is nothing to do
132
126
  existing = self.members.includes(:target)
@@ -140,7 +134,7 @@ class Collection::Base < Concept::Base
140
134
  member = existing.find{ |m| m.target.origin == new_origin }
141
135
  unless member
142
136
  c = target_class.by_origin(new_origin).first
143
- member = Iqvoc::Collection.member_class.create(:collection => self, :target => c) if c
137
+ member = Iqvoc::Collection.member_class.create(collection: self, target: c) if c
144
138
  end
145
139
  new << member if member
146
140
  end
@@ -163,21 +157,11 @@ class Collection::Base < Concept::Base
163
157
  # TODO: This should be a real circle detector (but still performant) or be
164
158
  # removed (seems to me like the better idea).
165
159
  def circular_subcollections
166
- Iqvoc::Collection.base_class.by_origin(@member_collection_origins).includes(:members => :target).each do |subcollection|
160
+ Iqvoc::Collection.base_class.by_origin(@member_collection_origins).includes(members: :target).each do |subcollection|
167
161
  if subcollection.subcollections.include?(self)
168
162
  errors.add(:base,
169
- I18n.t("txt.controllers.collections.circular_error", :label => subcollection.pref_label))
163
+ I18n.t('txt.controllers.collections.circular_error', label: subcollection.pref_label))
170
164
  end
171
165
  end
172
166
  end
173
-
174
- def pref_label_in_primary_thesaurus_language
175
- labels = self.send(Iqvoc::Concept.pref_labeling_class_name.to_relation_name).map(&:target).select{|l| l.published?}
176
- if labels.count == 0
177
- errors.add :base, I18n.t("txt.models.concept.no_pref_label_error")
178
- elsif not labels.map(&:language).map(&:to_s).include?(Iqvoc::Concept.pref_labeling_languages.first.to_s)
179
- errors.add :base, I18n.t("txt.models.concept.main_pref_label_language_missing_error")
180
- end
181
- end
182
-
183
167
  end
@@ -15,18 +15,17 @@
15
15
  # limitations under the License.
16
16
 
17
17
  class Collection::Member::Base < ActiveRecord::Base
18
-
19
18
  self.table_name = 'collection_members'
20
19
 
21
20
  class_attribute :rdf_namespace, :rdf_predicate
22
21
  self.rdf_namespace = nil
23
22
  self.rdf_predicate = nil
24
23
 
25
- belongs_to :collection, :class_name => 'Collection::Base'
26
- belongs_to :target, :class_name => 'Concept::Base'
24
+ belongs_to :collection, class_name: 'Collection::Base'
25
+ belongs_to :target, class_name: 'Concept::Base'
27
26
 
28
27
  def self.view_section(obj)
29
- "main"
28
+ 'main'
30
29
  end
31
30
 
32
31
  def self.view_section_sort_key(obj)
@@ -34,7 +33,6 @@ class Collection::Member::Base < ActiveRecord::Base
34
33
  end
35
34
 
36
35
  def self.partial_name(obj)
37
- "partials/collection/member"
36
+ 'partials/collection/member'
38
37
  end
39
-
40
38
  end
@@ -15,7 +15,6 @@
15
15
  # limitations under the License.
16
16
 
17
17
  class Collection::Member::SKOS::Base < Collection::Member::Base
18
-
19
18
  self.rdf_namespace = 'skos'
20
19
  self.rdf_predicate = 'member'
21
20
 
@@ -23,14 +22,14 @@ class Collection::Member::SKOS::Base < Collection::Member::Base
23
22
  raise "#{self.name}#build_from_rdf: Subject (#{rdf_subject}) must be a Collection." unless rdf_subject.is_a?(Collection::Base)
24
23
  raise "#{self.name}#build_from_rdf: Object (#{rdf_object}) must be a Collection or Concept." unless rdf_object.is_a?(Collection::Base) or rdf_object.is_a?(Concept::Base)
25
24
 
26
- member_instance = rdf_subject.members.select{|rel| rel.target == rdf_object}.first
25
+ member_instance = rdf_subject.members.detect{ |rel| rel.target == rdf_object }
27
26
  if member_instance.nil?
28
27
  predicate_class = Iqvoc::RDFAPI::PREDICATE_DICTIONARY[rdf_predicate] || self
29
- member_instance = predicate_class.new(:target => rdf_object)
28
+ member_instance = predicate_class.new(target: rdf_object)
30
29
  rdf_subject.members << member_instance
31
30
  end
32
31
 
33
- if rdf_object.collections.select{|coll| coll.id == rdf_subject.id}.empty?
32
+ if rdf_object.collections.select{ |coll| coll.id == rdf_subject.id }.empty?
34
33
  rdf_object.collections << rdf_subject
35
34
  end
36
35
  member_instance
@@ -15,9 +15,8 @@
15
15
  # limitations under the License.
16
16
 
17
17
  class Collection::SKOS::Base < Collection::Base
18
-
19
- self.rdf_namespace = "skos"
20
- self.rdf_class = "Collection"
18
+ self.rdf_namespace = 'skos'
19
+ self.rdf_class = 'Collection'
21
20
 
22
21
  def build_rdf_subject(&block)
23
22
  ns = IqRdf::Namespace.find_namespace_class(self.rdf_namespace)
@@ -25,11 +24,10 @@ class Collection::SKOS::Base < Collection::Base
25
24
  subject = IqRdf.build_uri(self.origin, ns.build_uri(self.rdf_class), &block)
26
25
 
27
26
  # ensure skos:Collection type is present
28
- unless self.rdf_namespace == "skos" && self.rdf_class == "Collection"
29
- subject.Rdf.build_predicate("type", IqRdf::Skos.build_uri("Collection"))
27
+ unless self.rdf_namespace == 'skos' && self.rdf_class == 'Collection'
28
+ subject.Rdf.build_predicate('type', IqRdf::Skos.build_uri('Collection'))
30
29
  end
31
30
 
32
31
  return subject
33
32
  end
34
-
35
33
  end
@@ -14,12 +14,9 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
 
17
-
18
17
  class Collection::Unordered < Collection::SKOS::Base
19
-
20
18
  def initialize(*args)
21
- ActiveSupport::Deprecation.warn("Collection::Unordered is deprecated. Use Collection::SKOS::Unordered instead.")
19
+ ActiveSupport::Deprecation.warn('Collection::Unordered is deprecated. Use Collection::SKOS::Unordered instead.')
22
20
  super
23
21
  end
24
-
25
22
  end
@@ -15,11 +15,8 @@
15
15
  # limitations under the License.
16
16
 
17
17
  class Concept::Base < ActiveRecord::Base
18
-
19
18
  self.table_name = 'concepts'
20
19
 
21
- include Iqvoc::Versioning
22
-
23
20
  class_attribute :default_includes
24
21
  self.default_includes = []
25
22
 
@@ -27,17 +24,15 @@ class Concept::Base < ActiveRecord::Base
27
24
  self.rdf_namespace = nil
28
25
  self.rdf_class = nil
29
26
 
30
- include Concept::Validations
31
-
32
27
  Iqvoc::Concept.include_modules.each do |mod|
33
28
  include mod
34
29
  end
35
30
 
36
- # ********** Hooks
31
+ include Versioning
32
+ include Concept::Validations
33
+ include FirstLevelObjectValidations
37
34
 
38
- after_initialize do
39
- @full_validation = false
40
- end
35
+ # ********** Hooks
41
36
 
42
37
  before_validation do |concept|
43
38
  # Handle save or destruction of inline relations (relations or labelings)
@@ -57,7 +52,7 @@ class Concept::Base < ActiveRecord::Base
57
52
  Iqvoc::InlineDataHelper.parse_inline_values(inline_values).each do |value|
58
53
  value.squish!
59
54
  unless value.blank?
60
- self.send(relation_name).build(:target => labeling_class.label_class.new(:value => value, :language => lang))
55
+ self.send(relation_name).build(target: labeling_class.label_class.new(value: value, language: lang))
61
56
  end
62
57
  end
63
58
  end
@@ -81,7 +76,7 @@ class Concept::Base < ActiveRecord::Base
81
76
  # Extract embedded ranks (if any) from origin strings (e.g. "origin1:100")
82
77
  # => { 'origin1' => nil, 'origin2' => 90 }
83
78
  new_origins = new_origins.each_with_object({}) do |e, hsh|
84
- key, value = e.split(":") # NB: defaults to nil if no rank is provided
79
+ key, value = e.split(':') # NB: defaults to nil if no rank is provided
85
80
  hsh[key] = value
86
81
  end
87
82
 
@@ -96,7 +91,7 @@ class Concept::Base < ActiveRecord::Base
96
91
  # This is necessary because changing the rank of an already assigned relation
97
92
  # would otherwise be ignored.
98
93
  Concept::Base.by_origin(new_origins.keys).each do |c|
99
- concept.send(relation_name).create_with_reverse_relation(c, :rank => new_origins[c.origin])
94
+ concept.send(relation_name).create_with_reverse_relation(c, rank: new_origins[c.origin])
100
95
  end
101
96
  end
102
97
  end
@@ -104,9 +99,9 @@ class Concept::Base < ActiveRecord::Base
104
99
  after_save do |concept|
105
100
  # Generate a origin if none was given yet
106
101
  if concept.origin.blank?
107
- raise "Concept::Base#after_save (generate origin): Unable to set the origin by id!" unless concept.id
102
+ raise 'Concept::Base#after_save (generate origin): Unable to set the origin by id!' unless concept.id
108
103
  concept.reload
109
- concept.origin = sprintf("_%08d", concept.id)
104
+ concept.origin = sprintf('_%08d', concept.id)
110
105
  concept.save! # On exception the complete save transaction will be rolled back
111
106
  end
112
107
  end
@@ -115,26 +110,26 @@ class Concept::Base < ActiveRecord::Base
115
110
 
116
111
  @nested_relations = [] # Will be marked as nested attributes later
117
112
 
118
- has_many :relations, :foreign_key => 'owner_id', :class_name => "Concept::Relation::Base", :dependent => :destroy
119
- has_many :related_concepts, :through => :relations, :source => :target
120
- has_many :referenced_relations, :foreign_key => 'target_id', :class_name => "Concept::Relation::Base", :dependent => :destroy
113
+ has_many :relations, foreign_key: 'owner_id', class_name: 'Concept::Relation::Base', dependent: :destroy
114
+ has_many :related_concepts, through: :relations, source: :target
115
+ has_many :referenced_relations, foreign_key: 'target_id', class_name: 'Concept::Relation::Base', dependent: :destroy
121
116
  include_to_deep_cloning(:relations, :referenced_relations)
122
117
 
123
- has_many :labelings, :foreign_key => 'owner_id', :class_name => "Labeling::Base", :dependent => :destroy
124
- has_many :labels, :through => :labelings, :source => :target
118
+ has_many :labelings, foreign_key: 'owner_id', class_name: 'Labeling::Base', dependent: :destroy
119
+ has_many :labels, through: :labelings, source: :target
125
120
  # Deep cloning has to be done in specific relations. S. pref_labels etc
126
121
 
127
- has_many :notes, :class_name => "Note::Base", :as => :owner, :dependent => :destroy
128
- include_to_deep_cloning({:notes => :annotations})
122
+ has_many :notes, class_name: 'Note::Base', as: :owner, dependent: :destroy
123
+ include_to_deep_cloning({ notes: :annotations })
129
124
 
130
- has_many :matches, :foreign_key => 'concept_id', :class_name => "Match::Base", :dependent => :destroy
125
+ has_many :matches, foreign_key: 'concept_id', class_name: 'Match::Base', dependent: :destroy
131
126
  include_to_deep_cloning(:matches)
132
127
 
133
- has_many :collection_members, :foreign_key => 'target_id', :class_name => "Collection::Member::Base", :dependent => :destroy
134
- has_many :collections, :through => :collection_members, :class_name => Iqvoc::Collection.base_class_name
128
+ has_many :collection_members, foreign_key: 'target_id', class_name: 'Collection::Member::Base', dependent: :destroy
129
+ has_many :collections, through: :collection_members, class_name: Iqvoc::Collection.base_class_name
135
130
  include_to_deep_cloning(:collection_members)
136
131
 
137
- has_many :notations, :class_name => 'Notation::Base', :foreign_key => 'concept_id', :dependent => :destroy
132
+ has_many :notations, class_name: 'Notation::Base', foreign_key: 'concept_id', dependent: :destroy
138
133
  include_to_deep_cloning :notations
139
134
  @nested_relations << :notations
140
135
 
@@ -147,18 +142,18 @@ class Concept::Base < ActiveRecord::Base
147
142
  # BUT: the include in scope :tops doesn't work with
148
143
  # 'Iqvoc::Concept.broader_relation_class_name'!?!?! (Rails Bug????)
149
144
  has_many :broader_relations,
150
- :foreign_key => :owner_id,
151
- :class_name => Iqvoc::Concept.broader_relation_class_name,
152
- :extend => Concept::Relation::ReverseRelationExtension
145
+ foreign_key: :owner_id,
146
+ class_name: Iqvoc::Concept.broader_relation_class_name,
147
+ extend: Concept::Relation::ReverseRelationExtension
153
148
 
154
149
  # Narrower
155
150
  # FIXME: Actually this is not needed anymore.
156
151
  # BUT: the include in scope :tops doesn't work with
157
152
  # 'Iqvoc::Concept.broader_relation_class_name'!?!?! (Rails Bug????)
158
153
  has_many :narrower_relations,
159
- :foreign_key => :owner_id,
160
- :class_name => Iqvoc::Concept.broader_relation_class.narrower_class.name,
161
- :extend => Concept::Relation::ReverseRelationExtension
154
+ foreign_key: :owner_id,
155
+ class_name: Iqvoc::Concept.broader_relation_class.narrower_class.name,
156
+ extend: Concept::Relation::ReverseRelationExtension
162
157
 
163
158
  # Relations
164
159
  # e.g. 'concept_relation_skos_relateds'
@@ -166,25 +161,25 @@ class Concept::Base < ActiveRecord::Base
166
161
  # classes!
167
162
  Iqvoc::Concept.relation_class_names.each do |relation_class_name|
168
163
  has_many relation_class_name.to_relation_name,
169
- :foreign_key => :owner_id,
170
- :class_name => relation_class_name,
171
- :extend => Concept::Relation::ReverseRelationExtension
164
+ foreign_key: :owner_id,
165
+ class_name: relation_class_name,
166
+ extend: Concept::Relation::ReverseRelationExtension
172
167
  end
173
168
 
174
169
  # *** Labels/Labelings
175
170
 
176
171
  has_many :pref_labelings,
177
- :foreign_key => 'owner_id',
178
- :class_name => Iqvoc::Concept.pref_labeling_class_name
172
+ foreign_key: 'owner_id',
173
+ class_name: Iqvoc::Concept.pref_labeling_class_name
179
174
 
180
175
  has_many :pref_labels,
181
- :through => :pref_labelings,
182
- :source => :target
176
+ through: :pref_labelings,
177
+ source: :target
183
178
 
184
179
  Iqvoc::Concept.labeling_class_names.each do |labeling_class_name, languages|
185
180
  has_many labeling_class_name.to_relation_name,
186
- :foreign_key => 'owner_id',
187
- :class_name => labeling_class_name
181
+ foreign_key: 'owner_id',
182
+ class_name: labeling_class_name
188
183
  # Only clone superclass relations
189
184
  unless Iqvoc::Concept.labeling_classes.keys.detect { |klass| labeling_class_name.constantize < klass }
190
185
  # When a Label has only one labeling (the "no skosxl" case) we'll have to
@@ -201,8 +196,8 @@ class Concept::Base < ActiveRecord::Base
201
196
 
202
197
  Iqvoc::Concept.match_class_names.each do |match_class_name|
203
198
  has_many match_class_name.to_relation_name,
204
- :class_name => match_class_name,
205
- :foreign_key => 'concept_id'
199
+ class_name: match_class_name,
200
+ foreign_key: 'concept_id'
206
201
 
207
202
  # Serialized setters and getters (\r\n or , separated) -- TODO: use Iqvoc::InlineDataHelper?
208
203
  define_method("inline_#{match_class_name.to_relation_name}".to_sym) do
@@ -219,7 +214,7 @@ class Concept::Base < ActiveRecord::Base
219
214
  end
220
215
  end
221
216
  urls.each do |url|
222
- self.send(match_class_name.to_relation_name) << match_class_name.constantize.new(:value => url)
217
+ self.send(match_class_name.to_relation_name) << match_class_name.constantize.new(value: url)
223
218
  end
224
219
  end
225
220
 
@@ -229,14 +224,14 @@ class Concept::Base < ActiveRecord::Base
229
224
 
230
225
  Iqvoc::Concept.note_class_names.each do |class_name|
231
226
  relation_name = class_name.to_relation_name
232
- has_many relation_name, :class_name => class_name, :as => :owner
227
+ has_many relation_name, class_name: class_name, as: :owner
233
228
  @nested_relations << relation_name
234
229
  end
235
230
 
236
231
  # *** Further association classes (could be ranks or stuff like that)
237
232
 
238
233
  Iqvoc::Concept.additional_association_classes.each do |association_class, foreign_key|
239
- has_many association_class.name.to_relation_name, :class_name => association_class.name, :foreign_key => foreign_key, :dependent => :destroy
234
+ has_many association_class.name.to_relation_name, class_name: association_class.name, foreign_key: foreign_key, dependent: :destroy
240
235
  include_to_deep_cloning(association_class.deep_cloning_relations)
241
236
  association_class.referenced_by(self)
242
237
  end
@@ -244,32 +239,32 @@ class Concept::Base < ActiveRecord::Base
244
239
  # ********** Relation Stuff
245
240
 
246
241
  @nested_relations.each do |relation|
247
- accepts_nested_attributes_for relation, :allow_destroy => true, :reject_if => Proc.new { |attrs| attrs[:value].blank? }
242
+ accepts_nested_attributes_for relation, allow_destroy: true, reject_if: Proc.new { |attrs| attrs[:value].blank? }
248
243
  end
249
244
 
250
245
  # ********** Scopes
251
246
 
252
247
  def self.tops
253
- where(:top_term => true)
248
+ where(top_term: true)
254
249
  end
255
250
 
256
251
  def self.broader_tops
257
252
  includes(:narrower_relations, :pref_labels).
258
- where(:concept_relations => { :id => nil },
259
- :labelings => { :type => Iqvoc::Concept.pref_labeling_class_name }).
253
+ where(concept_relations: { id: nil },
254
+ labelings: { type: Iqvoc::Concept.pref_labeling_class_name }).
260
255
  order("LOWER(#{Label::Base.table_name}.value)")
261
256
  end
262
257
 
263
258
  def self.with_associations
264
259
  includes([
265
- { :labelings => :target }, :relations, :matches, :notes, :notations
260
+ { labelings: :target }, :relations, :matches, :notes, :notations
266
261
  ])
267
262
  end
268
263
 
269
264
  def self.with_pref_labels
270
265
  includes(:pref_labels).
271
266
  order("LOWER(#{Label::Base.table_name}.value)").
272
- where(:labelings => { :type => Iqvoc::Concept.pref_labeling_class_name }) # This line is just a workaround for a Rails Bug. TODO: Delete it when the Bug is fixed
267
+ where(labelings: { type: Iqvoc::Concept.pref_labeling_class_name }) # This line is just a workaround for a Rails Bug. TODO: Delete it when the Bug is fixed
273
268
  end
274
269
 
275
270
  def self.for_dashboard
@@ -279,15 +274,15 @@ class Concept::Base < ActiveRecord::Base
279
274
  # ********** Class methods
280
275
 
281
276
  def self.inline_partial_name
282
- "partials/concept/inline_base"
277
+ 'partials/concept/inline_base'
283
278
  end
284
279
 
285
280
  def self.new_link_partial_name
286
- "partials/concept/new_link_base"
281
+ 'partials/concept/new_link_base'
287
282
  end
288
283
 
289
284
  def self.edit_link_partial_name
290
- "partials/concept/edit_link_base"
285
+ 'partials/concept/edit_link_base'
291
286
  end
292
287
 
293
288
  # ********** Methods
@@ -334,7 +329,7 @@ class Concept::Base < ActiveRecord::Base
334
329
  # If no prefLabel for the requested language exists, a new label will be returned
335
330
  # (if you modify it, don't forget to save it afterwards!)
336
331
  def pref_label
337
- lang = I18n.locale.to_s == "none" ? nil : I18n.locale.to_s
332
+ lang = I18n.locale.to_s == 'none' ? nil : I18n.locale.to_s
338
333
  @cached_pref_labels ||= pref_labels.each_with_object({}) do |label, hash|
339
334
  if hash[label.language]
340
335
  Rails.logger.warn("Two pref_labels (#{hash[label.language]}, #{label}) for one language (#{label.language}). Taking the second one.")
@@ -353,7 +348,7 @@ class Concept::Base < ActiveRecord::Base
353
348
  def labels_for_labeling_class_and_language(labeling_class, lang = :en, only_published = true)
354
349
  # Convert lang to string in case it's not nil.
355
350
  # nil values play their own role for labels without a language.
356
- if lang == "none"
351
+ if lang == 'none'
357
352
  lang = nil
358
353
  elsif lang
359
354
  lang = lang.to_s
@@ -362,7 +357,7 @@ class Concept::Base < ActiveRecord::Base
362
357
  @labels ||= labelings.each_with_object({}) do |labeling, hash|
363
358
  ((hash[labeling.class.name.to_s] ||= {})[labeling.target.language] ||= []) << labeling.target if labeling.target
364
359
  end
365
- ((@labels && @labels[labeling_class] && @labels[labeling_class][lang]) || []).select{|l| l.published? || !only_published}
360
+ ((@labels && @labels[labeling_class] && @labels[labeling_class][lang]) || []).select{ |l| l.published? || !only_published }
366
361
  end
367
362
 
368
363
  def related_concepts_for_relation_class(relation_class, only_published = true)
@@ -400,28 +395,9 @@ class Concept::Base < ActiveRecord::Base
400
395
  pref_label.to_s
401
396
  end
402
397
 
403
- # TODO: rename to "publish!"
404
- def save_with_full_validation!
405
- @full_validation = true
406
- save!
407
- end
408
-
409
- # TODO: rename to "publishable?"
410
- def valid_with_full_validation?
411
- @full_validation = true
412
- valid?
413
- end
414
-
415
- # TODO: remove
416
- def invalid_with_full_validation?
417
- @full_validation = true
418
- invalid?
419
- end
420
-
421
398
  def associated_objects_in_editing_mode
422
399
  {
423
- :concept_relations => Concept::Relation::Base.by_owner(id).target_in_edit_mode,
400
+ concept_relations: Concept::Relation::Base.by_owner(id).target_in_edit_mode,
424
401
  }
425
402
  end
426
-
427
403
  end