mumuki-domain 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (376) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +674 -0
  3. data/README.md +152 -0
  4. data/app/models/api_client.rb +31 -0
  5. data/app/models/application_record.rb +88 -0
  6. data/app/models/assignment.rb +204 -0
  7. data/app/models/book.rb +64 -0
  8. data/app/models/chapter.rb +29 -0
  9. data/app/models/complement.rb +15 -0
  10. data/app/models/concerns/assistable.rb +25 -0
  11. data/app/models/concerns/contextualization.rb +82 -0
  12. data/app/models/concerns/friendly_name.rb +10 -0
  13. data/app/models/concerns/guide_container.rb +54 -0
  14. data/app/models/concerns/navigation/parent_navigation.rb +27 -0
  15. data/app/models/concerns/navigation/siblings_navigation.rb +19 -0
  16. data/app/models/concerns/navigation/terminal_navigation.rb +13 -0
  17. data/app/models/concerns/submittable/confirmable.rb +5 -0
  18. data/app/models/concerns/submittable/queriable.rb +9 -0
  19. data/app/models/concerns/submittable/questionable.rb +6 -0
  20. data/app/models/concerns/submittable/solvable.rb +32 -0
  21. data/app/models/concerns/submittable/submittable.rb +11 -0
  22. data/app/models/concerns/submittable/triable.rb +9 -0
  23. data/app/models/concerns/with_assignments.rb +32 -0
  24. data/app/models/concerns/with_case_insensitive_search.rb +7 -0
  25. data/app/models/concerns/with_description.rb +12 -0
  26. data/app/models/concerns/with_discussion_creation/subscription.rb +33 -0
  27. data/app/models/concerns/with_discussion_creation/upvote.rb +28 -0
  28. data/app/models/concerns/with_discussion_creation.rb +9 -0
  29. data/app/models/concerns/with_discussion_status.rb +11 -0
  30. data/app/models/concerns/with_discussions.rb +23 -0
  31. data/app/models/concerns/with_editor.rb +39 -0
  32. data/app/models/concerns/with_expectations.rb +29 -0
  33. data/app/models/concerns/with_language.rb +14 -0
  34. data/app/models/concerns/with_layout.rb +7 -0
  35. data/app/models/concerns/with_locale.rb +7 -0
  36. data/app/models/concerns/with_messages.rb +22 -0
  37. data/app/models/concerns/with_name.rb +15 -0
  38. data/app/models/concerns/with_number.rb +9 -0
  39. data/app/models/concerns/with_profile.rb +12 -0
  40. data/app/models/concerns/with_randomizations.rb +43 -0
  41. data/app/models/concerns/with_reminders.rb +74 -0
  42. data/app/models/concerns/with_scoped_queries/filter.rb +15 -0
  43. data/app/models/concerns/with_scoped_queries/page.rb +10 -0
  44. data/app/models/concerns/with_scoped_queries/sort.rb +47 -0
  45. data/app/models/concerns/with_scoped_queries.rb +47 -0
  46. data/app/models/concerns/with_slug.rb +52 -0
  47. data/app/models/concerns/with_usages.rb +16 -0
  48. data/app/models/concerns/with_user_navigation.rb +9 -0
  49. data/app/models/content.rb +15 -0
  50. data/app/models/course.rb +20 -0
  51. data/app/models/discussion.rb +136 -0
  52. data/app/models/event.rb +2 -0
  53. data/app/models/exam.rb +147 -0
  54. data/app/models/exam_authorization.rb +10 -0
  55. data/app/models/exercise/challenge.rb +25 -0
  56. data/app/models/exercise/interactive.rb +41 -0
  57. data/app/models/exercise/playground.rb +23 -0
  58. data/app/models/exercise/problem.rb +41 -0
  59. data/app/models/exercise/queriable_challenge.rb +5 -0
  60. data/app/models/exercise/reading.rb +17 -0
  61. data/app/models/exercise.rb +198 -0
  62. data/app/models/guide.rb +121 -0
  63. data/app/models/invitation.rb +36 -0
  64. data/app/models/language.rb +114 -0
  65. data/app/models/lesson.rb +25 -0
  66. data/app/models/message.rb +68 -0
  67. data/app/models/organization.rb +118 -0
  68. data/app/models/stats.rb +24 -0
  69. data/app/models/subscription.rb +12 -0
  70. data/app/models/topic.rb +60 -0
  71. data/app/models/topic_container.rb +22 -0
  72. data/app/models/upvote.rb +4 -0
  73. data/app/models/usage.rb +20 -0
  74. data/app/models/user.rb +153 -0
  75. data/app/models/with_stats.rb +9 -0
  76. data/db/migrate/20141120231135_create_exercises.rb +11 -0
  77. data/db/migrate/20141120231735_create_submissions.rb +9 -0
  78. data/db/migrate/20141121001134_add_status_to_submission.rb +5 -0
  79. data/db/migrate/20141121013100_add_result_to_submission.rb +5 -0
  80. data/db/migrate/20141121122921_add_language_to_exercise.rb +5 -0
  81. data/db/migrate/20141124023403_create_users.rb +13 -0
  82. data/db/migrate/20141124032114_add_user_to_submission.rb +5 -0
  83. data/db/migrate/20141207235356_add_submissions_count_to_exercise.rb +5 -0
  84. data/db/migrate/20141208005050_add_author_to_exercise.rb +5 -0
  85. data/db/migrate/20141208005125_rename_user_to_submitter.rb +5 -0
  86. data/db/migrate/20141212044717_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb +31 -0
  87. data/db/migrate/20141212044718_add_missing_unique_indices.acts_as_taggable_on_engine.rb +20 -0
  88. data/db/migrate/20141212044719_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb +10 -0
  89. data/db/migrate/20141212044720_add_missing_taggable_index.acts_as_taggable_on_engine.rb +10 -0
  90. data/db/migrate/20141221213109_create_exercise_repos.rb +11 -0
  91. data/db/migrate/20141221215035_add_origin_to_exercise.rb +6 -0
  92. data/db/migrate/20141225034553_rename_exercise_repo_to_guide.rb +6 -0
  93. data/db/migrate/20141225143218_rename_github_url_to_github_repository.rb +5 -0
  94. data/db/migrate/20141225195510_create_imports.rb +9 -0
  95. data/db/migrate/20141225211350_add_status_to_import.rb +6 -0
  96. data/db/migrate/20141226010922_add_result_to_import.rb +5 -0
  97. data/db/migrate/20141228151351_change_exercise_description_to_text.rb +5 -0
  98. data/db/migrate/20141231074400_create_languages.rb +13 -0
  99. data/db/migrate/20141231191842_change_language_column_type.rb +6 -0
  100. data/db/migrate/20141231192030_rename_author_to_plugin_author.rb +5 -0
  101. data/db/migrate/20141231234940_increment_language_id.rb +5 -0
  102. data/db/migrate/20150108014005_add_locale_to_exercise.rb +5 -0
  103. data/db/migrate/20150111160450_add_uniques_to_languages.rb +6 -0
  104. data/db/migrate/20150125042217_add_test_syntax_hint_to_language.rb +5 -0
  105. data/db/migrate/20150125051529_add_hint_to_exercise.rb +5 -0
  106. data/db/migrate/20150126213310_devise_create_admin_users.rb +42 -0
  107. data/db/migrate/20150126213316_create_active_admin_comments.rb +19 -0
  108. data/db/migrate/20150315072037_add_description_to_guide.rb +6 -0
  109. data/db/migrate/20150317052723_remove_language_author.rb +5 -0
  110. data/db/migrate/20150317053307_remove_language_hint.rb +5 -0
  111. data/db/migrate/20150321150030_add_extra_code_to_exercise.rb +5 -0
  112. data/db/migrate/20150328211331_create_expectations.rb +11 -0
  113. data/db/migrate/20150329163753_add_email_to_user.rb +5 -0
  114. data/db/migrate/20150330020553_add_expectation_results_to_submission.rb +5 -0
  115. data/db/migrate/20150405231013_create_exports.rb +9 -0
  116. data/db/migrate/20150405232603_add_default_guide_to_user.rb +5 -0
  117. data/db/migrate/20150406020152_add_last_submission_date_to_user.rb +5 -0
  118. data/db/migrate/20150407225356_add_unique_index_to_users.rb +5 -0
  119. data/db/migrate/20150408020712_add_status_to_export.rb +6 -0
  120. data/db/migrate/20150408022654_add_commiter_to_export.rb +5 -0
  121. data/db/migrate/20150411215351_change_guide_description_to_text.rb +5 -0
  122. data/db/migrate/20150412042959_add_committer_to_import.rb +5 -0
  123. data/db/migrate/20150412201651_remove_default_guide_from_user.rb +5 -0
  124. data/db/migrate/20150415053559_add_image_url_to_user.rb +5 -0
  125. data/db/migrate/20150415211341_add_position_to_exercise.rb +5 -0
  126. data/db/migrate/20150415234515_create_relationships.rb +10 -0
  127. data/db/migrate/20150417052238_add_original_id_format_to_guide.rb +5 -0
  128. data/db/migrate/20150418055334_add_locale_and_language_to_guide.rb +6 -0
  129. data/db/migrate/20150424180136_add_guides_users_association_tables.rb +14 -0
  130. data/db/migrate/20150428195229_add_guides_suggestions.rb +8 -0
  131. data/db/migrate/20150507215646_remove_relationship.rb +5 -0
  132. data/db/migrate/20150508015148_create_api_tokens.rb +10 -0
  133. data/db/migrate/20150509191428_add_name_to_token.rb +5 -0
  134. data/db/migrate/20150512235847_add_feedback_to_submission.rb +5 -0
  135. data/db/migrate/20150513203636_create_categories.rb +12 -0
  136. data/db/migrate/20150513204102_create_starting_points.rb +11 -0
  137. data/db/migrate/20150517074730_add_extra_code_to_guide.rb +5 -0
  138. data/db/migrate/20150518174912_add_language_output_visibility_flag.rb +5 -0
  139. data/db/migrate/20150518185508_add_content_type_to_language.rb +5 -0
  140. data/db/migrate/20150519131033_set_default_locale_for_guide.rb +5 -0
  141. data/db/migrate/20150519174628_remove_language_name_uniq.rb +6 -0
  142. data/db/migrate/20150519220307_rename_api_token_columns.rb +6 -0
  143. data/db/migrate/20150520011404_convert_starting_point_into_path.rb +12 -0
  144. data/db/migrate/20150529135324_add_corollary_to_guide.rb +5 -0
  145. data/db/migrate/20150529141430_add_corollary_to_exercise.rb +5 -0
  146. data/db/migrate/20150531164450_add_test_extension_to_language.rb +5 -0
  147. data/db/migrate/20150603003459_remove_language_extension_uniq.rb +6 -0
  148. data/db/migrate/20150603020457_remove_guide_name_uniq.rb +6 -0
  149. data/db/migrate/20150605065543_add_highlight_mode.rb +5 -0
  150. data/db/migrate/20150614173852_add_learning_flag.rb +5 -0
  151. data/db/migrate/20150614180512_add_beta_flag.rb +5 -0
  152. data/db/migrate/20150614191257_add_last_exercise.rb +5 -0
  153. data/db/migrate/20150620181839_add_layout_to_exercise.rb +5 -0
  154. data/db/migrate/20150701030644_add_unique_to_language_name_index.rb +6 -0
  155. data/db/migrate/20150701212609_add_test_results_to_submission.rb +5 -0
  156. data/db/migrate/20150708212022_add_position_to_category.rb +5 -0
  157. data/db/migrate/20150708212836_change_category_description_to_text.rb +5 -0
  158. data/db/migrate/20150713120916_add_expectations_column_to_exercise.rb +5 -0
  159. data/db/migrate/20150714000532_remove_expectations_relation.rb +5 -0
  160. data/db/migrate/20150722003532_create_event_subscribers.rb +10 -0
  161. data/db/migrate/20150722030820_create_solutions.rb +16 -0
  162. data/db/migrate/20150722142019_add_submissions_count_to_solution.rb +5 -0
  163. data/db/migrate/20150723052640_add_submission_id_to_solution.rb +5 -0
  164. data/db/migrate/20150724062215_add_language_description.rb +5 -0
  165. data/db/migrate/20150724062233_add_category_links.rb +5 -0
  166. data/db/migrate/20150724062249_add_category_long_description.rb +5 -0
  167. data/db/migrate/20150819194207_convert_submissions_into_solutions.rb +34 -0
  168. data/db/migrate/20150819202310_remove_submissions.rb +5 -0
  169. data/db/migrate/20150826023647_create_friendly_id_slugs.rb +15 -0
  170. data/db/migrate/20150826023757_add_slug_to_guides.rb +6 -0
  171. data/db/migrate/20150826024859_add_slug_to_exercises.rb +6 -0
  172. data/db/migrate/20150828013106_add_remember_me_token_to_user.rb +5 -0
  173. data/db/migrate/20150829211550_add_queriable_to_language.rb +5 -0
  174. data/db/migrate/20150829215524_add_expectations_column_to_guide.rb +5 -0
  175. data/db/migrate/20150905214532_rename_exercise_title_to_name.rb +5 -0
  176. data/db/migrate/20151001143118_rename_solution_to_assignment.rb +5 -0
  177. data/db/migrate/20151001183858_rename_assignment_content_to_solution.rb +5 -0
  178. data/db/migrate/20151003003856_add_type_to_exercise.rb +5 -0
  179. data/db/migrate/20151020145904_remove_guide_git_information.rb +7 -0
  180. data/db/migrate/20151104163433_create_tenants.rb +9 -0
  181. data/db/migrate/20151104172241_create_path_rules.rb +11 -0
  182. data/db/migrate/20151104173956_remove_guide_position.rb +5 -0
  183. data/db/migrate/20151104220859_remove_path_from_guide.rb +5 -0
  184. data/db/migrate/20151107232242_move_slug_to_path_rule.rb +6 -0
  185. data/db/migrate/20151108173838_remove_slugs.rb +5 -0
  186. data/db/migrate/20151108182857_remove_act_as_taggable_taggings.rb +6 -0
  187. data/db/migrate/20151108183319_add_tags_array.rb +5 -0
  188. data/db/migrate/20151206072741_rename_guide_extra_code_to_extra.rb +5 -0
  189. data/db/migrate/20151208224736_rename_path_rule_to_chapter_guide.rb +5 -0
  190. data/db/migrate/20151208224907_rename_category_to_chapter.rb +5 -0
  191. data/db/migrate/20151208225503_rename_chapter_position_to_number.rb +5 -0
  192. data/db/migrate/20151208231749_rename_chapter_guide_path_to_chapter.rb +5 -0
  193. data/db/migrate/20151208233707_rename_url_to_slug.rb +5 -0
  194. data/db/migrate/20151209021925_add_locale_to_tenant.rb +5 -0
  195. data/db/migrate/20151210204646_remove_language_extensions.rb +6 -0
  196. data/db/migrate/20151211032811_drop_collaborators.rb +5 -0
  197. data/db/migrate/20151211033000_drop_contributors.rb +5 -0
  198. data/db/migrate/20151211034943_remove_authors.rb +6 -0
  199. data/db/migrate/20151211035206_add_contact_email_to_tenant.rb +5 -0
  200. data/db/migrate/20151218172557_drop_import.rb +6 -0
  201. data/db/migrate/20151222153838_add_default_content_to_exercise.rb +5 -0
  202. data/db/migrate/20151223014138_change_language_icon_url_into_devicon_id.rb +5 -0
  203. data/db/migrate/20151224174248_remove_original_id.rb +5 -0
  204. data/db/migrate/20151229153839_replace_learning_with_type_in_guides.rb +6 -0
  205. data/db/migrate/20160108191156_rename_extra_code.rb +5 -0
  206. data/db/migrate/20160108215313_remove_unique_index_from_users.rb +5 -0
  207. data/db/migrate/20160119024542_add_preface_to_tenant.rb +5 -0
  208. data/db/migrate/20160119040351_rename_tenant_to_book.rb +5 -0
  209. data/db/migrate/20160119191508_rename_position_to_number.rb +6 -0
  210. data/db/migrate/20160120171336_add_type_to_event_suscriber.rb +5 -0
  211. data/db/migrate/20160205184243_add_bibliotheca_id_to_exercise.rb +5 -0
  212. data/db/migrate/20160214191548_required_bibliotheca_id.rb +5 -0
  213. data/db/migrate/20160222165337_add_hidden_flag_to_extra_code.rb +5 -0
  214. data/db/migrate/20160222192958_rename_chapter_guide_to_lesson.rb +5 -0
  215. data/db/migrate/20160307184203_add_prompt_to_language.rb +5 -0
  216. data/db/migrate/20160331210507_add_comment_model.rb +13 -0
  217. data/db/migrate/20160401142104_add_readed_to_comment.rb +5 -0
  218. data/db/migrate/20160404214826_change_readed_to_read.rb +5 -0
  219. data/db/migrate/20160405184624_change_submission_id_to_string.rb +5 -0
  220. data/db/migrate/20160412193123_change_content_comment_to_text.rb +5 -0
  221. data/db/migrate/20160414150800_remove_tenant_subscriber.rb +5 -0
  222. data/db/migrate/20160426171156_add_new_expectations_to_exercise.rb +5 -0
  223. data/db/migrate/20160427195306_create_organizations.rb +12 -0
  224. data/db/migrate/20160427223805_add_chapter_book.rb +5 -0
  225. data/db/migrate/20160427234538_create_topics.rb +11 -0
  226. data/db/migrate/20160427235605_add_topic_to_chapter.rb +5 -0
  227. data/db/migrate/20160428162753_add_topic_id_to_lesson.rb +5 -0
  228. data/db/migrate/20160428175230_create_exams.rb +10 -0
  229. data/db/migrate/20160428224823_add_duration_to_exam.rb +5 -0
  230. data/db/migrate/20160429174901_add_start_end_time_to_exam.rb +6 -0
  231. data/db/migrate/20160429181825_add_exam_user.rb +8 -0
  232. data/db/migrate/20160430225048_create_complements.rb +10 -0
  233. data/db/migrate/20160430231035_remove_chapter_lesson.rb +5 -0
  234. data/db/migrate/20160430235331_remove_chapter_name_description.rb +6 -0
  235. data/db/migrate/20160430235656_remove_chapter_locale_image_url.rb +6 -0
  236. data/db/migrate/20160501003355_add_long_description_to_topic.rb +5 -0
  237. data/db/migrate/20160501071847_create_usages.rb +11 -0
  238. data/db/migrate/20160506012945_add_slug_to_topic_and_book.rb +9 -0
  239. data/db/migrate/20160506035230_remove_slug_from_lesson.rb +5 -0
  240. data/db/migrate/20160506041446_rename_preface_to_description.rb +5 -0
  241. data/db/migrate/20160506172239_remove_event_subscriber.rb +5 -0
  242. data/db/migrate/20160506175610_remove_api_tokens.rb +5 -0
  243. data/db/migrate/20160506181152_remove_admin_user.rb +5 -0
  244. data/db/migrate/20160506182333_remove_admin_comments.rb +5 -0
  245. data/db/migrate/20160510183137_add_private_to_organization.rb +5 -0
  246. data/db/migrate/20160512134321_add_organization_image.rb +5 -0
  247. data/db/migrate/20160516191936_add_stateful_console_to_language.rb +5 -0
  248. data/db/migrate/20160517215229_add_classroom_idto_exams.rb +6 -0
  249. data/db/migrate/20160518212552_rename_exam_users_to_exam_authorization.rb +5 -0
  250. data/db/migrate/20160518213912_add_user_start_data_in_exam.rb +6 -0
  251. data/db/migrate/20160519045220_add_id_to_exam_authorizations.rb +5 -0
  252. data/db/migrate/20160520141716_remove_chapter_links_and_long_description.rb +6 -0
  253. data/db/migrate/20160520153115_change_exam_classroom_id_to_string.rb +5 -0
  254. data/db/migrate/20160526172026_remove_not_null_constraint_exam_duration.rb +6 -0
  255. data/db/migrate/20160526182119_add_metadata_to_user.rb +5 -0
  256. data/db/migrate/20160617175235_add_last_organization_to_user.rb +5 -0
  257. data/db/migrate/20160617195350_change_metadata_to_text.rb +5 -0
  258. data/db/migrate/20160701195105_add_login_methods_to_organization.rb +5 -0
  259. data/db/migrate/20160705160244_add_manual_evaluation_to_exercise.rb +5 -0
  260. data/db/migrate/20160715001254_rename_test_runner_url.rb +5 -0
  261. data/db/migrate/20160729194600_change_default_content_to_text.rb +5 -0
  262. data/db/migrate/20160812003350_change_default_login_methods.rb +5 -0
  263. data/db/migrate/20160815225314_rename_long_description_to_appendix.rb +5 -0
  264. data/db/migrate/20160819181024_make_organization_private_by_default.rb +5 -0
  265. data/db/migrate/20160830160937_add_authoring_information_to_guide.rb +6 -0
  266. data/db/migrate/20160907010315_remove_exercise_slug.rb +5 -0
  267. data/db/migrate/20161004202742_add_editor_to_problem.rb +6 -0
  268. data/db/migrate/20161018142147_add_language_extension.rb +5 -0
  269. data/db/migrate/20161107171305_remove_devicon_column_from_language.rb +5 -0
  270. data/db/migrate/20161222182015_rename_uid_to_social_id.rb +5 -0
  271. data/db/migrate/20161222182724_add_uid_to_user.rb +5 -0
  272. data/db/migrate/20161226181932_remove_metadata_from_users.rb +5 -0
  273. data/db/migrate/20161230055953_add_not_null_constraint_to_uid_in_user.rb +5 -0
  274. data/db/migrate/20161231224116_add_permissions_to_user.rb +5 -0
  275. data/db/migrate/20170125185012_add_new_fields_on_organization.rb +15 -0
  276. data/db/migrate/20170207154702_add_index_to_uid.rb +5 -0
  277. data/db/migrate/20170224040846_create_invitations.rb +11 -0
  278. data/db/migrate/20170224061531_make_tos_type_text.rb +5 -0
  279. data/db/migrate/20170301160253_rename_invitation_slug_to_code.rb +5 -0
  280. data/db/migrate/20170330145157_rename_comment_to_messages.rb +6 -0
  281. data/db/migrate/20170407190910_add_has_messages_flag_to_assignment.rb +5 -0
  282. data/db/migrate/20170526191251_add_community_link_to_organizations.rb +5 -0
  283. data/db/migrate/20170526204944_add_has_messages_to_organizations.rb +5 -0
  284. data/db/migrate/20170601181759_rename_has_messages_to_raise_hand_enabled_in_organization.rb +5 -0
  285. data/db/migrate/20170608033403_remove_has_messages_from_assignment.rb +5 -0
  286. data/db/migrate/20170608044038_remove_messages_exercise_id.rb +5 -0
  287. data/db/migrate/20170608154055_remove_message_type_column.rb +5 -0
  288. data/db/migrate/20170612173212_add_first_name_and_last_name_to_user.rb +6 -0
  289. data/db/migrate/20170621222902_introduce_settings_and_themes.rb +40 -0
  290. data/db/migrate/20170818185127_add_guide_slug_constraint.rb +5 -0
  291. data/db/migrate/20170830020507_change_invitation_expiration_date_type.rb +5 -0
  292. data/db/migrate/20171003204152_add_goal_to_exercise.rb +5 -0
  293. data/db/migrate/20171003204209_add_queries_to_assignment.rb +6 -0
  294. data/db/migrate/20171004134607_add_triable_to_language.rb +5 -0
  295. data/db/migrate/20171024182244_add_devicon_and_comment_type_to_language.rb +6 -0
  296. data/db/migrate/20171109181818_add_manual_evaluation_commend_and_submission_id_index_in_assignment.rb +6 -0
  297. data/db/migrate/20171229042201_add_assets_to_language.rb +9 -0
  298. data/db/migrate/20180117014110_add_custom_editor_assets_to_language.rb +13 -0
  299. data/db/migrate/20180123174410_add_initial_and_final_states_to_exercises.rb +6 -0
  300. data/db/migrate/20180123180836_add_accepts_reminders_to_users.rb +5 -0
  301. data/db/migrate/20180129142749_add_api_client.rb +11 -0
  302. data/db/migrate/20180130194923_add_last_reminded_date_to_users.rb +5 -0
  303. data/db/migrate/20180130204935_add_course.rb +16 -0
  304. data/db/migrate/20180307150148_add_failed_submissions_count_to_assignments.rb +5 -0
  305. data/db/migrate/20180323125804_remove_user_name.rb +5 -0
  306. data/db/migrate/20180323140943_remove_unused_omniauth_fields.rb +7 -0
  307. data/db/migrate/20180326224511_remove_book_ids.rb +5 -0
  308. data/db/migrate/20180402015405_remove_course_uid.rb +5 -0
  309. data/db/migrate/20180504173548_create_discussions.rb +12 -0
  310. data/db/migrate/20180504185845_add_discussion_id_to_message.rb +5 -0
  311. data/db/migrate/20180526141344_add_tips_rules_to_exercise.rb +5 -0
  312. data/db/migrate/20180605143727_add_submission_to_discussion.rb +16 -0
  313. data/db/migrate/20180611190239_add_randomizations_to_exercises.rb +5 -0
  314. data/db/migrate/20180619182555_create_subscriptions.rb +9 -0
  315. data/db/migrate/20180702153442_create_upvotes.rb +8 -0
  316. data/db/migrate/20180702175220_add_upvotes_count_to_discussions.rb +5 -0
  317. data/db/migrate/20180704150839_rename_assignment_status_to_submission_status.rb +5 -0
  318. data/db/migrate/20180725145801_add_submissions_caps_to_exams.rb +6 -0
  319. data/db/migrate/20180802190437_add_approved_to_messages.rb +5 -0
  320. data/db/migrate/20181004173216_add_free_form_editor_to_exercises.rb +5 -0
  321. data/db/migrate/20181014233438_remove_non_null_constraint_from_permissions.rb +5 -0
  322. data/db/migrate/20181016203853_add_test_extension_back.rb +5 -0
  323. data/db/migrate/20181021151505_add_id_format_back.rb +5 -0
  324. data/db/migrate/20181022043658_add_private_flag_for_guides.rb +5 -0
  325. data/db/migrate/20181022220518_add_teacher_info_to_guide.rb +6 -0
  326. data/db/migrate/20181101180652_add_unique_index_to_organizations_name.rb +5 -0
  327. data/db/migrate/20181105152420_remove_contact_email_from_book.rb +5 -0
  328. data/db/migrate/20181113183935_rename_guide_contributors_to_collaborators.rb +5 -0
  329. data/db/migrate/20181114201620_add_test_template_to_languages.rb +5 -0
  330. data/lib/mumuki/domain/engine.rb +15 -0
  331. data/lib/mumuki/domain/evaluation/automated.rb +5 -0
  332. data/lib/mumuki/domain/evaluation/manual.rb +5 -0
  333. data/lib/mumuki/domain/evaluation.rb +5 -0
  334. data/lib/mumuki/domain/exceptions/blocked_forum_error.rb +2 -0
  335. data/lib/mumuki/domain/exceptions/forbidden_error.rb +2 -0
  336. data/lib/mumuki/domain/exceptions/gone_error.rb +2 -0
  337. data/lib/mumuki/domain/exceptions/not_found_error.rb +2 -0
  338. data/lib/mumuki/domain/exceptions/unauthorized_error.rb +2 -0
  339. data/lib/mumuki/domain/exceptions.rb +5 -0
  340. data/lib/mumuki/domain/extensions/array.rb +11 -0
  341. data/lib/mumuki/domain/extensions/string.rb +29 -0
  342. data/lib/mumuki/domain/extensions.rb +2 -0
  343. data/lib/mumuki/domain/file.rb +18 -0
  344. data/lib/mumuki/domain/locales/activerecord.en.yml +21 -0
  345. data/lib/mumuki/domain/locales/activerecord.es.yml +50 -0
  346. data/lib/mumuki/domain/locales/narrator.en.yml +14 -0
  347. data/lib/mumuki/domain/locales/narrator.es.yml +14 -0
  348. data/lib/mumuki/domain/locales/narrator.pt.yml +14 -0
  349. data/lib/mumuki/domain/seed.rb +29 -0
  350. data/lib/mumuki/domain/status/discussion/closed.rb +15 -0
  351. data/lib/mumuki/domain/status/discussion/discussion.rb +44 -0
  352. data/lib/mumuki/domain/status/discussion/opened.rb +31 -0
  353. data/lib/mumuki/domain/status/discussion/pending_review.rb +15 -0
  354. data/lib/mumuki/domain/status/discussion/solved.rb +19 -0
  355. data/lib/mumuki/domain/status/submission/aborted.rb +11 -0
  356. data/lib/mumuki/domain/status/submission/errored.rb +19 -0
  357. data/lib/mumuki/domain/status/submission/failed.rb +15 -0
  358. data/lib/mumuki/domain/status/submission/manual_evaluation_pending.rb +15 -0
  359. data/lib/mumuki/domain/status/submission/passed.rb +11 -0
  360. data/lib/mumuki/domain/status/submission/passed_with_warnings.rb +15 -0
  361. data/lib/mumuki/domain/status/submission/pending.rb +11 -0
  362. data/lib/mumuki/domain/status/submission/running.rb +15 -0
  363. data/lib/mumuki/domain/status/submission/submission.rb +38 -0
  364. data/lib/mumuki/domain/status.rb +72 -0
  365. data/lib/mumuki/domain/submission/base.rb +56 -0
  366. data/lib/mumuki/domain/submission/confirmation.rb +9 -0
  367. data/lib/mumuki/domain/submission/console_submission.rb +13 -0
  368. data/lib/mumuki/domain/submission/persistent_submission.rb +7 -0
  369. data/lib/mumuki/domain/submission/query.rb +19 -0
  370. data/lib/mumuki/domain/submission/question.rb +14 -0
  371. data/lib/mumuki/domain/submission/solution.rb +7 -0
  372. data/lib/mumuki/domain/submission/try.rb +20 -0
  373. data/lib/mumuki/domain/submission.rb +18 -0
  374. data/lib/mumuki/domain/version.rb +5 -0
  375. data/lib/mumuki/domain.rb +50 -0
  376. metadata +572 -0
@@ -0,0 +1,56 @@
1
+ class Mumuki::Domain::Submission::Base
2
+ include ActiveModel::Model
3
+
4
+ required :try_evaluate!
5
+
6
+ demodulized_model_name
7
+
8
+ ATTRIBUTES = [:solution, :status, :result, :expectation_results, :feedback, :test_results,
9
+ :submission_id, :queries, :query_results, :manual_evaluation_comment]
10
+
11
+ attr_accessor *ATTRIBUTES
12
+
13
+ def self.from_attributes(*args)
14
+ new ATTRIBUTES.zip(args).to_h
15
+ end
16
+
17
+ def self.mapping_attributes
18
+ ATTRIBUTES
19
+ end
20
+
21
+ def run!(assignment, evaluation)
22
+ save_submission! assignment
23
+ results = evaluation.evaluate! assignment, self
24
+ save_results! results, assignment
25
+ notify_results! results, assignment
26
+ results
27
+ end
28
+
29
+ def evaluate!(assignment)
30
+ try_evaluate! assignment
31
+ rescue => e
32
+ Rails.logger.error "Evaluation failed: #{e} \n#{e.backtrace.join("\n")}"
33
+ {status: :errored, result: e.message}
34
+ end
35
+
36
+ def id
37
+ @id ||= SecureRandom.hex(8)
38
+ end
39
+
40
+ private
41
+
42
+ def save_submission!(assignment)
43
+ assignment.content = content
44
+ assignment.save!
45
+ end
46
+
47
+ def save_results!(results, assignment)
48
+ assignment.assign_attributes results
49
+ assignment.increment_attempts!
50
+ assignment.save! results
51
+ end
52
+
53
+ def notify_results!(results, assignment)
54
+ assignment.notify!
55
+ end
56
+ end
@@ -0,0 +1,9 @@
1
+ class Mumuki::Domain::Submission::Confirmation < Mumuki::Domain::Submission::PersistentSubmission
2
+ def content
3
+ nil
4
+ end
5
+
6
+ def try_evaluate!(*)
7
+ {status: Mumuki::Domain::Status::Submission::Passed, result: ''}
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ class Mumuki::Domain::Submission::ConsoleSubmission < Mumuki::Domain::Submission::Base
2
+ required :try_evaluate_query!
3
+
4
+ def try_evaluate!(assignment)
5
+ format_query_result! try_evaluate_query!(assignment)
6
+ end
7
+
8
+ def format_query_result!(results)
9
+ results[:result] = I18n.t(:try_again) if results[:status] == :aborted
10
+ results[:status] = results[:status].to_submission_status
11
+ results
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ class Mumuki::Domain::Submission::PersistentSubmission < Mumuki::Domain::Submission::Base
2
+ def save_submission!(assignment)
3
+ assignment.running!
4
+ super
5
+ assignment.persist_submission! self
6
+ end
7
+ end
@@ -0,0 +1,19 @@
1
+ class Mumuki::Domain::Submission::Query < Mumuki::Domain::Submission::ConsoleSubmission
2
+ attr_accessor :query, :cookie, :content
3
+
4
+ def try_evaluate_query!(assignment)
5
+ assignment.run_query!(content: content, query: query, cookie: cookie)
6
+ end
7
+
8
+ def save_submission!(assignment)
9
+ assignment.exercise.setup_query_assignment!(assignment)
10
+ super
11
+ end
12
+
13
+ def save_results!(_results, assignment)
14
+ assignment.exercise.save_query_results!(assignment)
15
+ end
16
+
17
+ def notify_results!(*)
18
+ end
19
+ end
@@ -0,0 +1,14 @@
1
+ class Mumuki::Domain::Submission::Question < Mumuki::Domain::Submission::Base
2
+ def run!(assignment, evaluation)
3
+ return [assignment, nil] unless assignment.new_record?
4
+ super
5
+ end
6
+
7
+ def save_submission!(assignment)
8
+ assignment.persist_submission! self
9
+ end
10
+
11
+ def try_evaluate!(*)
12
+ {status: :pending, result: nil}
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ class Mumuki::Domain::Submission::Solution < Mumuki::Domain::Submission::PersistentSubmission
2
+ attr_accessor :content
3
+
4
+ def try_evaluate!(assignment)
5
+ assignment.run_tests!(content: content).except(:response_type)
6
+ end
7
+ end
@@ -0,0 +1,20 @@
1
+ class Mumuki::Domain::Submission::Try < Mumuki::Domain::Submission::ConsoleSubmission
2
+ attr_accessor :query, :cookie
3
+
4
+ def try_evaluate_query!(assignment)
5
+ assignment.run_try!(query: query, cookie: cookie).except(:response_type)
6
+ end
7
+
8
+ def save_submission!(assignment)
9
+ assignment.query_results = [] if cookie.blank?
10
+ assignment.queries = cookie.insert_last(query)
11
+ assignment.save!
12
+ end
13
+
14
+ def save_results!(results, assignment)
15
+ changes = { status: results[:status], result: results[:result] }
16
+ changes.merge! query_results: assignment.query_results.insert_last(results[:query_result]) if results[:query_result]
17
+
18
+ assignment.update! changes
19
+ end
20
+ end
@@ -0,0 +1,18 @@
1
+ require 'securerandom'
2
+
3
+ module Mumuki::Domain
4
+ module Submission
5
+ end
6
+ end
7
+
8
+ require_relative './submission/base'
9
+ require_relative './submission/persistent_submission'
10
+ require_relative './submission/console_submission'
11
+ require_relative './submission/try'
12
+ require_relative './submission/solution'
13
+ require_relative './submission/question'
14
+ require_relative './submission/query'
15
+ require_relative './submission/confirmation'
16
+
17
+
18
+
@@ -0,0 +1,5 @@
1
+ module Mumuki
2
+ module Domain
3
+ VERSION = '6.0.0'
4
+ end
5
+ end
@@ -0,0 +1,50 @@
1
+ require "mumuki/domain/engine"
2
+
3
+ require 'mumukit/core'
4
+ require 'mumukit/core/activemodel'
5
+ require 'mumukit/assistant'
6
+ require 'mumukit/auth'
7
+ require 'mumukit/bridge'
8
+ require 'mumukit/content_type'
9
+ require 'mumukit/directives'
10
+ require 'mumukit/inspection'
11
+ require 'mumukit/platform'
12
+ require 'mumukit/randomizer'
13
+ require 'mumukit/sync'
14
+
15
+ I18n.load_translations_path File.join(__dir__, 'domain', 'locales', '*.yml')
16
+
17
+ module Mumuki
18
+ module Domain
19
+ end
20
+ end
21
+
22
+ Mumukit::Platform.configure do |config|
23
+ config.user_class_name = 'User'
24
+ config.organization_class_name = 'Organization'
25
+ end
26
+
27
+ require_relative './domain/evaluation'
28
+ require_relative './domain/submission'
29
+ require_relative './domain/status'
30
+ require_relative './domain/exceptions'
31
+ require_relative './domain/file'
32
+ require_relative './domain/extensions'
33
+
34
+ class Mumukit::Assistant
35
+ def self.valid?(rules)
36
+ !!parse(rules.map(&:deep_symbolize_keys)) rescue false
37
+ end
38
+ end
39
+
40
+ class Mumukit::Expectation
41
+ def self.valid?(expectation)
42
+ !!Mumukit::Inspection.parse(expectation['inspection']) rescue false
43
+ end
44
+ end
45
+
46
+ class Mumukit::Randomizer
47
+ def self.valid?(randomizations)
48
+ !!parse(randomizations) rescue false
49
+ end
50
+ end
metadata ADDED
@@ -0,0 +1,572 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mumuki-domain
3
+ version: !ruby/object:Gem::Version
4
+ version: 6.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Franco Leonardo Bulgarelli
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-11-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 5.1.6
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 5.1.6
27
+ - !ruby/object:Gem::Dependency
28
+ name: mumukit-auth
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '7.5'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '7.5'
41
+ - !ruby/object:Gem::Dependency
42
+ name: mumukit-assistant
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: mumukit-bridge
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.7'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.7'
69
+ - !ruby/object:Gem::Dependency
70
+ name: mumukit-content-type
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.4'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.4'
83
+ - !ruby/object:Gem::Dependency
84
+ name: mumukit-core
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.8'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.8'
97
+ - !ruby/object:Gem::Dependency
98
+ name: mumukit-directives
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.5'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.5'
111
+ - !ruby/object:Gem::Dependency
112
+ name: mumukit-inspection
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '3.5'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '3.5'
125
+ - !ruby/object:Gem::Dependency
126
+ name: mumukit-randomizer
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: mumukit-platform
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '3.0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '3.0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: mumukit-sync
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '0.1'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.1'
167
+ description: Mumuki Platform's Domain Model
168
+ email:
169
+ - franco@mumuki.org
170
+ executables: []
171
+ extensions: []
172
+ extra_rdoc_files: []
173
+ files:
174
+ - LICENSE
175
+ - README.md
176
+ - app/models/api_client.rb
177
+ - app/models/application_record.rb
178
+ - app/models/assignment.rb
179
+ - app/models/book.rb
180
+ - app/models/chapter.rb
181
+ - app/models/complement.rb
182
+ - app/models/concerns/assistable.rb
183
+ - app/models/concerns/contextualization.rb
184
+ - app/models/concerns/friendly_name.rb
185
+ - app/models/concerns/guide_container.rb
186
+ - app/models/concerns/navigation/parent_navigation.rb
187
+ - app/models/concerns/navigation/siblings_navigation.rb
188
+ - app/models/concerns/navigation/terminal_navigation.rb
189
+ - app/models/concerns/submittable/confirmable.rb
190
+ - app/models/concerns/submittable/queriable.rb
191
+ - app/models/concerns/submittable/questionable.rb
192
+ - app/models/concerns/submittable/solvable.rb
193
+ - app/models/concerns/submittable/submittable.rb
194
+ - app/models/concerns/submittable/triable.rb
195
+ - app/models/concerns/with_assignments.rb
196
+ - app/models/concerns/with_case_insensitive_search.rb
197
+ - app/models/concerns/with_description.rb
198
+ - app/models/concerns/with_discussion_creation.rb
199
+ - app/models/concerns/with_discussion_creation/subscription.rb
200
+ - app/models/concerns/with_discussion_creation/upvote.rb
201
+ - app/models/concerns/with_discussion_status.rb
202
+ - app/models/concerns/with_discussions.rb
203
+ - app/models/concerns/with_editor.rb
204
+ - app/models/concerns/with_expectations.rb
205
+ - app/models/concerns/with_language.rb
206
+ - app/models/concerns/with_layout.rb
207
+ - app/models/concerns/with_locale.rb
208
+ - app/models/concerns/with_messages.rb
209
+ - app/models/concerns/with_name.rb
210
+ - app/models/concerns/with_number.rb
211
+ - app/models/concerns/with_profile.rb
212
+ - app/models/concerns/with_randomizations.rb
213
+ - app/models/concerns/with_reminders.rb
214
+ - app/models/concerns/with_scoped_queries.rb
215
+ - app/models/concerns/with_scoped_queries/filter.rb
216
+ - app/models/concerns/with_scoped_queries/page.rb
217
+ - app/models/concerns/with_scoped_queries/sort.rb
218
+ - app/models/concerns/with_slug.rb
219
+ - app/models/concerns/with_usages.rb
220
+ - app/models/concerns/with_user_navigation.rb
221
+ - app/models/content.rb
222
+ - app/models/course.rb
223
+ - app/models/discussion.rb
224
+ - app/models/event.rb
225
+ - app/models/exam.rb
226
+ - app/models/exam_authorization.rb
227
+ - app/models/exercise.rb
228
+ - app/models/exercise/challenge.rb
229
+ - app/models/exercise/interactive.rb
230
+ - app/models/exercise/playground.rb
231
+ - app/models/exercise/problem.rb
232
+ - app/models/exercise/queriable_challenge.rb
233
+ - app/models/exercise/reading.rb
234
+ - app/models/guide.rb
235
+ - app/models/invitation.rb
236
+ - app/models/language.rb
237
+ - app/models/lesson.rb
238
+ - app/models/message.rb
239
+ - app/models/organization.rb
240
+ - app/models/stats.rb
241
+ - app/models/subscription.rb
242
+ - app/models/topic.rb
243
+ - app/models/topic_container.rb
244
+ - app/models/upvote.rb
245
+ - app/models/usage.rb
246
+ - app/models/user.rb
247
+ - app/models/with_stats.rb
248
+ - db/migrate/20141120231135_create_exercises.rb
249
+ - db/migrate/20141120231735_create_submissions.rb
250
+ - db/migrate/20141121001134_add_status_to_submission.rb
251
+ - db/migrate/20141121013100_add_result_to_submission.rb
252
+ - db/migrate/20141121122921_add_language_to_exercise.rb
253
+ - db/migrate/20141124023403_create_users.rb
254
+ - db/migrate/20141124032114_add_user_to_submission.rb
255
+ - db/migrate/20141207235356_add_submissions_count_to_exercise.rb
256
+ - db/migrate/20141208005050_add_author_to_exercise.rb
257
+ - db/migrate/20141208005125_rename_user_to_submitter.rb
258
+ - db/migrate/20141212044717_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb
259
+ - db/migrate/20141212044718_add_missing_unique_indices.acts_as_taggable_on_engine.rb
260
+ - db/migrate/20141212044719_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb
261
+ - db/migrate/20141212044720_add_missing_taggable_index.acts_as_taggable_on_engine.rb
262
+ - db/migrate/20141221213109_create_exercise_repos.rb
263
+ - db/migrate/20141221215035_add_origin_to_exercise.rb
264
+ - db/migrate/20141225034553_rename_exercise_repo_to_guide.rb
265
+ - db/migrate/20141225143218_rename_github_url_to_github_repository.rb
266
+ - db/migrate/20141225195510_create_imports.rb
267
+ - db/migrate/20141225211350_add_status_to_import.rb
268
+ - db/migrate/20141226010922_add_result_to_import.rb
269
+ - db/migrate/20141228151351_change_exercise_description_to_text.rb
270
+ - db/migrate/20141231074400_create_languages.rb
271
+ - db/migrate/20141231191842_change_language_column_type.rb
272
+ - db/migrate/20141231192030_rename_author_to_plugin_author.rb
273
+ - db/migrate/20141231234940_increment_language_id.rb
274
+ - db/migrate/20150108014005_add_locale_to_exercise.rb
275
+ - db/migrate/20150111160450_add_uniques_to_languages.rb
276
+ - db/migrate/20150125042217_add_test_syntax_hint_to_language.rb
277
+ - db/migrate/20150125051529_add_hint_to_exercise.rb
278
+ - db/migrate/20150126213310_devise_create_admin_users.rb
279
+ - db/migrate/20150126213316_create_active_admin_comments.rb
280
+ - db/migrate/20150315072037_add_description_to_guide.rb
281
+ - db/migrate/20150317052723_remove_language_author.rb
282
+ - db/migrate/20150317053307_remove_language_hint.rb
283
+ - db/migrate/20150321150030_add_extra_code_to_exercise.rb
284
+ - db/migrate/20150328211331_create_expectations.rb
285
+ - db/migrate/20150329163753_add_email_to_user.rb
286
+ - db/migrate/20150330020553_add_expectation_results_to_submission.rb
287
+ - db/migrate/20150405231013_create_exports.rb
288
+ - db/migrate/20150405232603_add_default_guide_to_user.rb
289
+ - db/migrate/20150406020152_add_last_submission_date_to_user.rb
290
+ - db/migrate/20150407225356_add_unique_index_to_users.rb
291
+ - db/migrate/20150408020712_add_status_to_export.rb
292
+ - db/migrate/20150408022654_add_commiter_to_export.rb
293
+ - db/migrate/20150411215351_change_guide_description_to_text.rb
294
+ - db/migrate/20150412042959_add_committer_to_import.rb
295
+ - db/migrate/20150412201651_remove_default_guide_from_user.rb
296
+ - db/migrate/20150415053559_add_image_url_to_user.rb
297
+ - db/migrate/20150415211341_add_position_to_exercise.rb
298
+ - db/migrate/20150415234515_create_relationships.rb
299
+ - db/migrate/20150417052238_add_original_id_format_to_guide.rb
300
+ - db/migrate/20150418055334_add_locale_and_language_to_guide.rb
301
+ - db/migrate/20150424180136_add_guides_users_association_tables.rb
302
+ - db/migrate/20150428195229_add_guides_suggestions.rb
303
+ - db/migrate/20150507215646_remove_relationship.rb
304
+ - db/migrate/20150508015148_create_api_tokens.rb
305
+ - db/migrate/20150509191428_add_name_to_token.rb
306
+ - db/migrate/20150512235847_add_feedback_to_submission.rb
307
+ - db/migrate/20150513203636_create_categories.rb
308
+ - db/migrate/20150513204102_create_starting_points.rb
309
+ - db/migrate/20150517074730_add_extra_code_to_guide.rb
310
+ - db/migrate/20150518174912_add_language_output_visibility_flag.rb
311
+ - db/migrate/20150518185508_add_content_type_to_language.rb
312
+ - db/migrate/20150519131033_set_default_locale_for_guide.rb
313
+ - db/migrate/20150519174628_remove_language_name_uniq.rb
314
+ - db/migrate/20150519220307_rename_api_token_columns.rb
315
+ - db/migrate/20150520011404_convert_starting_point_into_path.rb
316
+ - db/migrate/20150529135324_add_corollary_to_guide.rb
317
+ - db/migrate/20150529141430_add_corollary_to_exercise.rb
318
+ - db/migrate/20150531164450_add_test_extension_to_language.rb
319
+ - db/migrate/20150603003459_remove_language_extension_uniq.rb
320
+ - db/migrate/20150603020457_remove_guide_name_uniq.rb
321
+ - db/migrate/20150605065543_add_highlight_mode.rb
322
+ - db/migrate/20150614173852_add_learning_flag.rb
323
+ - db/migrate/20150614180512_add_beta_flag.rb
324
+ - db/migrate/20150614191257_add_last_exercise.rb
325
+ - db/migrate/20150620181839_add_layout_to_exercise.rb
326
+ - db/migrate/20150701030644_add_unique_to_language_name_index.rb
327
+ - db/migrate/20150701212609_add_test_results_to_submission.rb
328
+ - db/migrate/20150708212022_add_position_to_category.rb
329
+ - db/migrate/20150708212836_change_category_description_to_text.rb
330
+ - db/migrate/20150713120916_add_expectations_column_to_exercise.rb
331
+ - db/migrate/20150714000532_remove_expectations_relation.rb
332
+ - db/migrate/20150722003532_create_event_subscribers.rb
333
+ - db/migrate/20150722030820_create_solutions.rb
334
+ - db/migrate/20150722142019_add_submissions_count_to_solution.rb
335
+ - db/migrate/20150723052640_add_submission_id_to_solution.rb
336
+ - db/migrate/20150724062215_add_language_description.rb
337
+ - db/migrate/20150724062233_add_category_links.rb
338
+ - db/migrate/20150724062249_add_category_long_description.rb
339
+ - db/migrate/20150819194207_convert_submissions_into_solutions.rb
340
+ - db/migrate/20150819202310_remove_submissions.rb
341
+ - db/migrate/20150826023647_create_friendly_id_slugs.rb
342
+ - db/migrate/20150826023757_add_slug_to_guides.rb
343
+ - db/migrate/20150826024859_add_slug_to_exercises.rb
344
+ - db/migrate/20150828013106_add_remember_me_token_to_user.rb
345
+ - db/migrate/20150829211550_add_queriable_to_language.rb
346
+ - db/migrate/20150829215524_add_expectations_column_to_guide.rb
347
+ - db/migrate/20150905214532_rename_exercise_title_to_name.rb
348
+ - db/migrate/20151001143118_rename_solution_to_assignment.rb
349
+ - db/migrate/20151001183858_rename_assignment_content_to_solution.rb
350
+ - db/migrate/20151003003856_add_type_to_exercise.rb
351
+ - db/migrate/20151020145904_remove_guide_git_information.rb
352
+ - db/migrate/20151104163433_create_tenants.rb
353
+ - db/migrate/20151104172241_create_path_rules.rb
354
+ - db/migrate/20151104173956_remove_guide_position.rb
355
+ - db/migrate/20151104220859_remove_path_from_guide.rb
356
+ - db/migrate/20151107232242_move_slug_to_path_rule.rb
357
+ - db/migrate/20151108173838_remove_slugs.rb
358
+ - db/migrate/20151108182857_remove_act_as_taggable_taggings.rb
359
+ - db/migrate/20151108183319_add_tags_array.rb
360
+ - db/migrate/20151206072741_rename_guide_extra_code_to_extra.rb
361
+ - db/migrate/20151208224736_rename_path_rule_to_chapter_guide.rb
362
+ - db/migrate/20151208224907_rename_category_to_chapter.rb
363
+ - db/migrate/20151208225503_rename_chapter_position_to_number.rb
364
+ - db/migrate/20151208231749_rename_chapter_guide_path_to_chapter.rb
365
+ - db/migrate/20151208233707_rename_url_to_slug.rb
366
+ - db/migrate/20151209021925_add_locale_to_tenant.rb
367
+ - db/migrate/20151210204646_remove_language_extensions.rb
368
+ - db/migrate/20151211032811_drop_collaborators.rb
369
+ - db/migrate/20151211033000_drop_contributors.rb
370
+ - db/migrate/20151211034943_remove_authors.rb
371
+ - db/migrate/20151211035206_add_contact_email_to_tenant.rb
372
+ - db/migrate/20151218172557_drop_import.rb
373
+ - db/migrate/20151222153838_add_default_content_to_exercise.rb
374
+ - db/migrate/20151223014138_change_language_icon_url_into_devicon_id.rb
375
+ - db/migrate/20151224174248_remove_original_id.rb
376
+ - db/migrate/20151229153839_replace_learning_with_type_in_guides.rb
377
+ - db/migrate/20160108191156_rename_extra_code.rb
378
+ - db/migrate/20160108215313_remove_unique_index_from_users.rb
379
+ - db/migrate/20160119024542_add_preface_to_tenant.rb
380
+ - db/migrate/20160119040351_rename_tenant_to_book.rb
381
+ - db/migrate/20160119191508_rename_position_to_number.rb
382
+ - db/migrate/20160120171336_add_type_to_event_suscriber.rb
383
+ - db/migrate/20160205184243_add_bibliotheca_id_to_exercise.rb
384
+ - db/migrate/20160214191548_required_bibliotheca_id.rb
385
+ - db/migrate/20160222165337_add_hidden_flag_to_extra_code.rb
386
+ - db/migrate/20160222192958_rename_chapter_guide_to_lesson.rb
387
+ - db/migrate/20160307184203_add_prompt_to_language.rb
388
+ - db/migrate/20160331210507_add_comment_model.rb
389
+ - db/migrate/20160401142104_add_readed_to_comment.rb
390
+ - db/migrate/20160404214826_change_readed_to_read.rb
391
+ - db/migrate/20160405184624_change_submission_id_to_string.rb
392
+ - db/migrate/20160412193123_change_content_comment_to_text.rb
393
+ - db/migrate/20160414150800_remove_tenant_subscriber.rb
394
+ - db/migrate/20160426171156_add_new_expectations_to_exercise.rb
395
+ - db/migrate/20160427195306_create_organizations.rb
396
+ - db/migrate/20160427223805_add_chapter_book.rb
397
+ - db/migrate/20160427234538_create_topics.rb
398
+ - db/migrate/20160427235605_add_topic_to_chapter.rb
399
+ - db/migrate/20160428162753_add_topic_id_to_lesson.rb
400
+ - db/migrate/20160428175230_create_exams.rb
401
+ - db/migrate/20160428224823_add_duration_to_exam.rb
402
+ - db/migrate/20160429174901_add_start_end_time_to_exam.rb
403
+ - db/migrate/20160429181825_add_exam_user.rb
404
+ - db/migrate/20160430225048_create_complements.rb
405
+ - db/migrate/20160430231035_remove_chapter_lesson.rb
406
+ - db/migrate/20160430235331_remove_chapter_name_description.rb
407
+ - db/migrate/20160430235656_remove_chapter_locale_image_url.rb
408
+ - db/migrate/20160501003355_add_long_description_to_topic.rb
409
+ - db/migrate/20160501071847_create_usages.rb
410
+ - db/migrate/20160506012945_add_slug_to_topic_and_book.rb
411
+ - db/migrate/20160506035230_remove_slug_from_lesson.rb
412
+ - db/migrate/20160506041446_rename_preface_to_description.rb
413
+ - db/migrate/20160506172239_remove_event_subscriber.rb
414
+ - db/migrate/20160506175610_remove_api_tokens.rb
415
+ - db/migrate/20160506181152_remove_admin_user.rb
416
+ - db/migrate/20160506182333_remove_admin_comments.rb
417
+ - db/migrate/20160510183137_add_private_to_organization.rb
418
+ - db/migrate/20160512134321_add_organization_image.rb
419
+ - db/migrate/20160516191936_add_stateful_console_to_language.rb
420
+ - db/migrate/20160517215229_add_classroom_idto_exams.rb
421
+ - db/migrate/20160518212552_rename_exam_users_to_exam_authorization.rb
422
+ - db/migrate/20160518213912_add_user_start_data_in_exam.rb
423
+ - db/migrate/20160519045220_add_id_to_exam_authorizations.rb
424
+ - db/migrate/20160520141716_remove_chapter_links_and_long_description.rb
425
+ - db/migrate/20160520153115_change_exam_classroom_id_to_string.rb
426
+ - db/migrate/20160526172026_remove_not_null_constraint_exam_duration.rb
427
+ - db/migrate/20160526182119_add_metadata_to_user.rb
428
+ - db/migrate/20160617175235_add_last_organization_to_user.rb
429
+ - db/migrate/20160617195350_change_metadata_to_text.rb
430
+ - db/migrate/20160701195105_add_login_methods_to_organization.rb
431
+ - db/migrate/20160705160244_add_manual_evaluation_to_exercise.rb
432
+ - db/migrate/20160715001254_rename_test_runner_url.rb
433
+ - db/migrate/20160729194600_change_default_content_to_text.rb
434
+ - db/migrate/20160812003350_change_default_login_methods.rb
435
+ - db/migrate/20160815225314_rename_long_description_to_appendix.rb
436
+ - db/migrate/20160819181024_make_organization_private_by_default.rb
437
+ - db/migrate/20160830160937_add_authoring_information_to_guide.rb
438
+ - db/migrate/20160907010315_remove_exercise_slug.rb
439
+ - db/migrate/20161004202742_add_editor_to_problem.rb
440
+ - db/migrate/20161018142147_add_language_extension.rb
441
+ - db/migrate/20161107171305_remove_devicon_column_from_language.rb
442
+ - db/migrate/20161222182015_rename_uid_to_social_id.rb
443
+ - db/migrate/20161222182724_add_uid_to_user.rb
444
+ - db/migrate/20161226181932_remove_metadata_from_users.rb
445
+ - db/migrate/20161230055953_add_not_null_constraint_to_uid_in_user.rb
446
+ - db/migrate/20161231224116_add_permissions_to_user.rb
447
+ - db/migrate/20170125185012_add_new_fields_on_organization.rb
448
+ - db/migrate/20170207154702_add_index_to_uid.rb
449
+ - db/migrate/20170224040846_create_invitations.rb
450
+ - db/migrate/20170224061531_make_tos_type_text.rb
451
+ - db/migrate/20170301160253_rename_invitation_slug_to_code.rb
452
+ - db/migrate/20170330145157_rename_comment_to_messages.rb
453
+ - db/migrate/20170407190910_add_has_messages_flag_to_assignment.rb
454
+ - db/migrate/20170526191251_add_community_link_to_organizations.rb
455
+ - db/migrate/20170526204944_add_has_messages_to_organizations.rb
456
+ - db/migrate/20170601181759_rename_has_messages_to_raise_hand_enabled_in_organization.rb
457
+ - db/migrate/20170608033403_remove_has_messages_from_assignment.rb
458
+ - db/migrate/20170608044038_remove_messages_exercise_id.rb
459
+ - db/migrate/20170608154055_remove_message_type_column.rb
460
+ - db/migrate/20170612173212_add_first_name_and_last_name_to_user.rb
461
+ - db/migrate/20170621222902_introduce_settings_and_themes.rb
462
+ - db/migrate/20170818185127_add_guide_slug_constraint.rb
463
+ - db/migrate/20170830020507_change_invitation_expiration_date_type.rb
464
+ - db/migrate/20171003204152_add_goal_to_exercise.rb
465
+ - db/migrate/20171003204209_add_queries_to_assignment.rb
466
+ - db/migrate/20171004134607_add_triable_to_language.rb
467
+ - db/migrate/20171024182244_add_devicon_and_comment_type_to_language.rb
468
+ - db/migrate/20171109181818_add_manual_evaluation_commend_and_submission_id_index_in_assignment.rb
469
+ - db/migrate/20171229042201_add_assets_to_language.rb
470
+ - db/migrate/20180117014110_add_custom_editor_assets_to_language.rb
471
+ - db/migrate/20180123174410_add_initial_and_final_states_to_exercises.rb
472
+ - db/migrate/20180123180836_add_accepts_reminders_to_users.rb
473
+ - db/migrate/20180129142749_add_api_client.rb
474
+ - db/migrate/20180130194923_add_last_reminded_date_to_users.rb
475
+ - db/migrate/20180130204935_add_course.rb
476
+ - db/migrate/20180307150148_add_failed_submissions_count_to_assignments.rb
477
+ - db/migrate/20180323125804_remove_user_name.rb
478
+ - db/migrate/20180323140943_remove_unused_omniauth_fields.rb
479
+ - db/migrate/20180326224511_remove_book_ids.rb
480
+ - db/migrate/20180402015405_remove_course_uid.rb
481
+ - db/migrate/20180504173548_create_discussions.rb
482
+ - db/migrate/20180504185845_add_discussion_id_to_message.rb
483
+ - db/migrate/20180526141344_add_tips_rules_to_exercise.rb
484
+ - db/migrate/20180605143727_add_submission_to_discussion.rb
485
+ - db/migrate/20180611190239_add_randomizations_to_exercises.rb
486
+ - db/migrate/20180619182555_create_subscriptions.rb
487
+ - db/migrate/20180702153442_create_upvotes.rb
488
+ - db/migrate/20180702175220_add_upvotes_count_to_discussions.rb
489
+ - db/migrate/20180704150839_rename_assignment_status_to_submission_status.rb
490
+ - db/migrate/20180725145801_add_submissions_caps_to_exams.rb
491
+ - db/migrate/20180802190437_add_approved_to_messages.rb
492
+ - db/migrate/20181004173216_add_free_form_editor_to_exercises.rb
493
+ - db/migrate/20181014233438_remove_non_null_constraint_from_permissions.rb
494
+ - db/migrate/20181016203853_add_test_extension_back.rb
495
+ - db/migrate/20181021151505_add_id_format_back.rb
496
+ - db/migrate/20181022043658_add_private_flag_for_guides.rb
497
+ - db/migrate/20181022220518_add_teacher_info_to_guide.rb
498
+ - db/migrate/20181101180652_add_unique_index_to_organizations_name.rb
499
+ - db/migrate/20181105152420_remove_contact_email_from_book.rb
500
+ - db/migrate/20181113183935_rename_guide_contributors_to_collaborators.rb
501
+ - db/migrate/20181114201620_add_test_template_to_languages.rb
502
+ - lib/mumuki/domain.rb
503
+ - lib/mumuki/domain/engine.rb
504
+ - lib/mumuki/domain/evaluation.rb
505
+ - lib/mumuki/domain/evaluation/automated.rb
506
+ - lib/mumuki/domain/evaluation/manual.rb
507
+ - lib/mumuki/domain/exceptions.rb
508
+ - lib/mumuki/domain/exceptions/blocked_forum_error.rb
509
+ - lib/mumuki/domain/exceptions/forbidden_error.rb
510
+ - lib/mumuki/domain/exceptions/gone_error.rb
511
+ - lib/mumuki/domain/exceptions/not_found_error.rb
512
+ - lib/mumuki/domain/exceptions/unauthorized_error.rb
513
+ - lib/mumuki/domain/extensions.rb
514
+ - lib/mumuki/domain/extensions/array.rb
515
+ - lib/mumuki/domain/extensions/string.rb
516
+ - lib/mumuki/domain/file.rb
517
+ - lib/mumuki/domain/locales/activerecord.en.yml
518
+ - lib/mumuki/domain/locales/activerecord.es.yml
519
+ - lib/mumuki/domain/locales/narrator.en.yml
520
+ - lib/mumuki/domain/locales/narrator.es.yml
521
+ - lib/mumuki/domain/locales/narrator.pt.yml
522
+ - lib/mumuki/domain/seed.rb
523
+ - lib/mumuki/domain/status.rb
524
+ - lib/mumuki/domain/status/discussion/closed.rb
525
+ - lib/mumuki/domain/status/discussion/discussion.rb
526
+ - lib/mumuki/domain/status/discussion/opened.rb
527
+ - lib/mumuki/domain/status/discussion/pending_review.rb
528
+ - lib/mumuki/domain/status/discussion/solved.rb
529
+ - lib/mumuki/domain/status/submission/aborted.rb
530
+ - lib/mumuki/domain/status/submission/errored.rb
531
+ - lib/mumuki/domain/status/submission/failed.rb
532
+ - lib/mumuki/domain/status/submission/manual_evaluation_pending.rb
533
+ - lib/mumuki/domain/status/submission/passed.rb
534
+ - lib/mumuki/domain/status/submission/passed_with_warnings.rb
535
+ - lib/mumuki/domain/status/submission/pending.rb
536
+ - lib/mumuki/domain/status/submission/running.rb
537
+ - lib/mumuki/domain/status/submission/submission.rb
538
+ - lib/mumuki/domain/submission.rb
539
+ - lib/mumuki/domain/submission/base.rb
540
+ - lib/mumuki/domain/submission/confirmation.rb
541
+ - lib/mumuki/domain/submission/console_submission.rb
542
+ - lib/mumuki/domain/submission/persistent_submission.rb
543
+ - lib/mumuki/domain/submission/query.rb
544
+ - lib/mumuki/domain/submission/question.rb
545
+ - lib/mumuki/domain/submission/solution.rb
546
+ - lib/mumuki/domain/submission/try.rb
547
+ - lib/mumuki/domain/version.rb
548
+ homepage: https://mumuki.org
549
+ licenses:
550
+ - GPL-3.0
551
+ metadata: {}
552
+ post_install_message:
553
+ rdoc_options: []
554
+ require_paths:
555
+ - lib
556
+ required_ruby_version: !ruby/object:Gem::Requirement
557
+ requirements:
558
+ - - ">="
559
+ - !ruby/object:Gem::Version
560
+ version: '0'
561
+ required_rubygems_version: !ruby/object:Gem::Requirement
562
+ requirements:
563
+ - - ">="
564
+ - !ruby/object:Gem::Version
565
+ version: '0'
566
+ requirements: []
567
+ rubyforge_project:
568
+ rubygems_version: 2.5.1
569
+ signing_key:
570
+ specification_version: 4
571
+ summary: Mumuki Platform's Domain Model
572
+ test_files: []