canvas-lms/app/models
John Corrigan 8d4d967341 add zip_attachment to EpubExport
fixes CNVS-24178

- Updates FilesConverter so that it returns both files that will be
  displayed in the ePub and the files that are unsupported.
- Adds CC::Exporters::Epub::FilesDirectory class, which accepts a
  collection of file objects and adds them to a zip file.
- Updates UI so that a separate download link is present for the zip of
  unsupported files.
- Adds support to MIME::Types library to be able identify ePubs.
- Updates EpubExport to have many attachments; one epub & one zip.
- Updates process of creating attachments related to EpubExports so that
  the content_type value is properly set.

test plan:
- Have a course that contains files that are not supported by ePub, such
  as pdf, doc or xls.
- Navigate to `/epub_exports`.
- Click the button to generate an ePub for the given course.
- Observe that, after the successful generation of the course, two
  download links appear: one for the ePub, one for additional files.

Change-Id: I2f321362bc5ed23f8b28334395f8969c9d90a5de
Reviewed-on: https://gerrit.instructure.com/65753
Tested-by: Jenkins
Reviewed-by: Matt Berns <mberns@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
2015-10-29 20:23:00 +00:00
..
account use global account ids when invalidating cached settings 2015-09-25 21:46:49 +00:00
account_authorization_config convert Canvas login to a real authentication provider 2015-09-14 21:13:38 +00:00
alerts rails4: deprecate Relation#all in favor of Relation#to_a 2015-07-24 21:28:14 +00:00
assignment grading period filtering respects overrides 2015-10-05 15:01:14 +00:00
assignments improve moderated grading needs_grading_count with null scores 2015-10-05 17:21:43 +00:00
attachments add Attachments::ScopedToUser 2015-07-27 18:40:47 +00:00
auditors record anonymous grading in grade change audit log 2015-10-06 16:20:22 +00:00
bookmarks bookmark service, fixes CNVS-19363 2015-05-14 05:06:20 +00:00
broadcast_policies send out notifications on assignment save + publish after create 2015-10-27 16:58:08 +00:00
context_module_progressions rework module progressions evaluation 2014-05-01 16:42:07 +00:00
courses fix delayed alerts for courses with only section-limited teachers 2014-10-30 16:07:12 +00:00
data_exports_api validate types on polymorphic associations 2014-05-28 17:05:34 +00:00
discussion_topic rails4: deprecate Relation#all in favor of Relation#to_a 2015-07-24 21:28:14 +00:00
enrollment show correct total activity time for users 2015-04-22 20:44:29 +00:00
epub_exports add zip_attachment to EpubExport 2015-10-29 20:23:00 +00:00
exporters rails4: remove Relation#with_each_shard 2015-07-17 12:31:15 +00:00
grading_period ensure a user's enrollments api works when given a grading period 2015-09-24 16:19:16 +00:00
group_categories allow group leadership edits on group categories 2014-10-10 20:42:06 +00:00
importers schedule delayed transitions for imported discussion topics 2015-10-19 16:56:38 +00:00
incoming_mail fix Mailer#create_message spec failures 2015-10-20 15:41:52 +00:00
live_assessments use preload instead of include on associations 2015-09-08 20:32:41 +00:00
lti add split secret support for lti 2 2015-09-18 16:41:04 +00:00
messages update email notification for peer review to be anonymous 2015-09-14 21:19:20 +00:00
moderated_grading crocodoc filtering for moderated grading 2015-10-23 16:39:21 +00:00
polling use preload/eager_load instead of includes 2015-09-08 20:32:05 +00:00
quizzes don't potentially resave every quiz submission in transaction 2015-10-29 18:41:38 +00:00
users add skip_registration param to create user action 2015-08-24 19:09:47 +00:00
wiki_pages Decouple Wiki Page permissions logic from api index 2015-07-24 22:03:00 +00:00
abstract_course.rb stabby lambda scopes for rails4 2014-07-04 02:11:56 +00:00
access_token.rb Generate a access token with the refresh token 2015-10-08 21:53:53 +00:00
account.rb when deleting a user through sis also delete group memberships 2015-10-10 05:15:38 +00:00
account_authorization_config.rb change auth_filter from string to text 2015-10-01 17:18:37 +00:00
account_notification.rb preload global announcement account info prior to caching 2015-08-17 21:44:50 +00:00
account_notification_role.rb new roles 2014-10-31 19:44:14 +00:00
account_report.rb make account reports a gem 2014-11-03 22:57:35 +00:00
account_user.rb refactor grading standards controller 'index' action 2015-02-12 17:00:08 +00:00
alert.rb fix a syntax error with alerts looking up account roles 2015-05-04 22:11:40 +00:00
alert_criterion.rb define exportable attributes/associations on models 2014-05-06 23:54:24 +00:00
announcement.rb don't send group discussion notifications in unpublished courses 2015-10-19 18:29:30 +00:00
appointment_group.rb use active group memberships for scheduler reservations 2015-10-19 15:12:30 +00:00
appointment_group_context.rb validate types on polymorphic associations 2014-05-28 17:05:34 +00:00
appointment_group_sub_context.rb validate types on polymorphic associations 2014-05-28 17:05:34 +00:00
assessment_question.rb rails4: fix invalid utf8 removal on old serialized attributes 2015-07-15 19:52:36 +00:00
assessment_question_bank.rb allow users to view question banks without edit rights 2015-09-21 18:36:21 +00:00
assessment_question_bank_user.rb define exportable attributes/associations on models 2014-05-06 23:54:24 +00:00
assessment_request.rb use preload/eager_load instead of includes 2015-09-08 20:32:05 +00:00
asset_user_access.rb remove invalid associations 2015-08-19 17:33:33 +00:00
assignment.rb return deleted enrollments if requested in enrollments index 2015-10-29 18:41:27 +00:00
assignment_group.rb use preload/eager_load instead of includes 2015-09-08 20:32:05 +00:00
assignment_override.rb remove return on deleted assignment override 2015-09-08 23:44:12 +00:00
assignment_override_student.rb define exportable attributes/associations on models 2014-05-06 23:54:24 +00:00
assignment_student_visibility.rb DA - module evaluation efficiency 2014-10-28 19:11:47 +00:00
attachment.rb crocodoc filtering for moderated grading 2015-10-23 16:39:21 +00:00
attachment_association.rb validate types on polymorphic associations 2014-05-28 17:05:34 +00:00
auditors.rb rework error handling in event stream 2014-08-28 21:19:24 +00:00
authorization_code.rb check all models for protecting attributes refs #3847 2011-05-25 17:38:50 -06:00
big_blue_button_conference.rb include test env in BBB recording ready url 2015-06-16 18:50:11 +00:00
bookmark_service.rb don't autorequire a bunch of gems that are rarely used 2015-04-09 18:47:50 +00:00
bookmarks.rb bookmark service, fixes CNVS-19363 2015-05-14 05:06:20 +00:00
bounce_notification_processor.rb Store information about the last bounce for a communication channel 2015-06-24 18:59:31 +00:00
brand_config.rb mobile css and js overrides 2015-09-28 19:24:55 +00:00
calendar_event.rb preload attachments in calendar events public feed 2015-09-21 14:22:26 +00:00
canvadoc.rb Fix Canvadoc.rb previewing of peer reviews 2015-10-15 01:42:43 +00:00
cloned_item.rb validate types on polymorphic associations 2014-05-28 17:05:34 +00:00
collaboration.rb fix collaboration permission error 2015-10-12 15:35:26 +00:00
collaborator.rb define exportable attributes/associations on models 2014-05-06 23:54:24 +00:00
communication_channel.rb Allow entry of international phone numbers 2015-09-14 15:46:17 +00:00
content_export.rb adds UI & backend for offline content 2015-09-30 16:22:18 +00:00
content_migration.rb set started_at and finished_at when running content migrations 2015-09-24 17:04:32 +00:00
content_participation.rb validate types on polymorphic associations 2014-05-28 17:05:34 +00:00
content_participation_count.rb dont include unpublished assignments in badge count 2015-09-16 20:56:20 +00:00
content_tag.rb allow teachers to unlink imported outcomes if unused 2015-10-29 18:41:33 +00:00
context.rb course nicknames 2015-10-21 23:03:51 +00:00
context_external_tool.rb Make LTI configurations accept canvas icon class 2015-09-21 17:59:40 +00:00
context_external_tool_placement.rb migrate has_X context_external_tool columns to separate table 2014-08-12 12:13:42 +00:00
context_module.rb always allow students to progress in unlocked modules 2015-10-01 12:42:25 +00:00
context_module_item.rb use preload instead of include on associations 2015-09-08 20:32:41 +00:00
context_module_progression.rb move the modules student view "enhancements" out of the erb 2015-09-14 20:43:12 +00:00
context_module_sub_header.rb optimize AdheresToPolicy 2011-07-14 13:25:28 -06:00
conversation.rb moar qualified name fixes found by specs 2015-10-27 15:10:23 +00:00
conversation_batch.rb CC author on conversation create 2014-09-26 22:23:00 +00:00
conversation_message.rb Handle cross-sharded conversation attachments correctly 2015-09-01 19:37:10 +00:00
conversation_message_participant.rb quote table names in joins 2015-07-16 16:35:31 +00:00
conversation_participant.rb Revert "cache conversation participants out of process" 2015-10-15 19:34:10 +00:00
course.rb return deleted enrollments if requested in enrollments index 2015-10-29 18:41:27 +00:00
course_account_association.rb define exportable attributes/associations on models 2014-05-06 23:54:24 +00:00
course_date_range.rb adds due date validations to assignment quick add and quick edit 2015-03-19 16:29:43 +00:00
course_import.rb remove some of the less useful associations from export 2014-05-27 15:44:00 +00:00
course_profile.rb improve acts_as_list 2013-12-17 19:55:43 +00:00
course_progress.rb use preload instead of include on associations 2015-09-08 20:32:41 +00:00
course_section.rb moar qualified name fixes found by specs 2015-10-27 15:10:23 +00:00
crocodoc_document.rb crocodoc filtering for moderated grading 2015-10-23 16:39:21 +00:00
custom_data.rb remove rails 2 support 2014-08-06 18:16:19 +00:00
custom_gradebook_column.rb add model level validation for teacher notes presence 2015-06-30 15:52:24 +00:00
custom_gradebook_column_datum.rb define exportable attributes/associations on models 2014-05-06 23:54:24 +00:00
delayed_message.rb set locale for summary message creation 2015-10-20 20:14:19 +00:00
delayed_notification.rb use preload/eager_load instead of includes 2015-09-08 20:32:05 +00:00
designer_enrollment.rb straighten out course designer permissions 2012-01-13 18:56:50 -07:00
developer_key.rb start expiring access tokens created by new dev keys 2015-10-28 22:00:55 +00:00
discussion_entry.rb fixed permissions with deleted discussion 2015-08-10 20:37:49 +00:00
discussion_entry_participant.rb discussion entry liking 2015-04-25 03:10:48 +00:00
discussion_topic.rb restore discussion topics to unpublished state 2015-10-22 12:33:08 +00:00
discussion_topic_participant.rb define exportable attributes/associations on models 2014-05-06 23:54:24 +00:00
document_service.rb Initial commit. 2011-01-31 18:57:29 -07:00
enrollment.rb accepting future enrollments should retain readonly access 2015-10-29 16:29:02 +00:00
enrollment_dates_override.rb validate types on polymorphic associations 2014-05-28 17:05:34 +00:00
enrollment_term.rb remove N+1 queries on term index page 2015-07-31 20:21:20 +00:00
eportfolio.rb ensure there is a default eportfolio page 2014-08-14 23:15:09 +00:00
eportfolio_category.rb define exportable attributes/associations on models 2014-05-06 23:54:24 +00:00
eportfolio_entry.rb use preload instead of include on associations 2015-09-08 20:32:41 +00:00
epub_export.rb add zip_attachment to EpubExport 2015-10-29 20:23:00 +00:00
error_report.rb prevent error reports from logging AccessToken errors 2015-10-23 17:53:57 +00:00
etherpad_collaboration.rb don't re-calculate the etherpad url when a new user joins 2013-11-08 21:45:44 +00:00
external_feed.rb validate length of external_feed url in the app 2015-05-15 14:40:51 +00:00
external_feed_entry.rb expand external_feed_entries urls to text 2015-10-01 17:18:32 +00:00
external_integration_key.rb add type scope for external integration keys 2015-04-24 16:39:45 +00:00
external_url.rb optimize AdheresToPolicy 2011-07-14 13:25:28 -06:00
favorite.rb Add group favorites 2015-09-17 19:22:54 +00:00
feature_flag.rb improve multicache 2015-05-06 19:21:21 +00:00
folder.rb other misc performance improvements 2015-08-20 21:09:35 +00:00
google_docs_collaboration.rb make google drive timeout configurable 2015-10-09 19:32:39 +00:00
gradebook_csv.rb gradebook csvs belong on the course's shard, not the user's 2015-05-15 15:46:55 +00:00
gradebook_upload.rb gradebook csv upload: ignore failed uploads 2015-04-22 22:21:02 +00:00
grading_period.rb grading period filtering respects overrides 2015-10-05 15:01:14 +00:00
grading_period_grade.rb Extract Soft Deletion 2015-05-18 18:45:01 +00:00
grading_period_group.rb Extract Soft Deletion 2015-05-18 18:45:01 +00:00
grading_standard.rb fix Performance/ReverseEach issue 2015-04-27 20:53:43 +00:00
group.rb allow teachers to add calendar events to a group 2015-10-12 16:27:15 +00:00
group_category.rb Allows teacher to clone a group set. 2015-08-07 16:31:52 +00:00
group_leadership.rb Typo fix: changed occurrences of unkown to unknown 2015-03-25 20:08:05 +00:00
group_membership.rb use preload/eager_load instead of includes 2015-09-08 20:32:05 +00:00
ignore.rb give more access to peer reviews 2014-08-08 16:18:45 +00:00
importers.rb imported link refactoring 2015-06-16 20:04:32 +00:00
inbox_item.rb stabby lambda scopes for rails4 2014-07-04 02:11:56 +00:00
kaltura_media_file_handler.rb handle nil responses from kaltura client 2015-09-25 14:12:32 +00:00
learning_outcome.rb rails4: fix invalid utf8 removal on old serialized attributes 2015-07-15 19:52:36 +00:00
learning_outcome_group.rb use preload/eager_load instead of includes 2015-09-08 20:32:05 +00:00
learning_outcome_question_result.rb Fixing outcome scoring for quizzes 2015-07-27 16:24:18 +00:00
learning_outcome_result.rb Don't show outcomes from deleted rubrics. 2015-10-12 21:00:43 +00:00
live_assessments.rb improve AR::all_models for non-eager-loading 2014-07-14 15:56:49 +00:00
lti.rb add lti2 models and registration endpoints 2014-07-18 16:42:10 +00:00
mailer.rb don't autorequire a bunch of gems that are rarely used 2015-04-09 18:47:50 +00:00
media_object.rb handle nil responses from kaltura client 2015-09-25 14:12:32 +00:00
media_source_fetcher.rb Prefer mp3 for audio comments in api_user_content 2014-04-30 20:00:13 +00:00
media_track.rb define exportable attributes/associations on models 2014-05-06 23:54:24 +00:00
message.rb use course nicknames in notifications 2015-10-27 20:04:25 +00:00
migration_issue.rb stabby lambda scopes for rails4 2014-07-04 02:11:56 +00:00
moderated_grading.rb create ProvisionalGrade table and model 2015-08-07 17:12:37 +00:00
notification.rb hide "scores in email" notification setting if disabled by root account 2015-09-30 22:22:12 +00:00
notification_endpoint.rb don't send to notification endpoints whose token has changed 2015-09-30 19:54:14 +00:00
notification_finder.rb rails4: rename Notification.all to all_cached 2015-07-01 17:23:22 +00:00
notification_policy.rb use preload/eager_load instead of includes 2015-09-08 20:32:05 +00:00
notification_preloader.rb avoid extraneous queries to Notification 2014-09-09 21:54:16 +00:00
notifier.rb gemify broadcast policy 2014-09-24 11:35:33 +00:00
oauth_request.rb Revert "fix oauth_requests user foreign key violations" 2015-10-15 15:51:12 +00:00
observer_enrollment.rb misc improvements for assignments, calendar events and modules 2015-06-29 15:45:27 +00:00
page_comment.rb validate types on polymorphic associations 2014-05-28 17:05:34 +00:00
page_view.rb helper method for getting active user counts by shard 2015-08-24 15:16:42 +00:00
plugin_setting.rb improve performance in assignments/assignment groups api index 2015-09-21 14:22:05 +00:00
polling.rb improve AR::all_models for non-eager-loading 2014-07-14 15:56:49 +00:00
polymorphic_type_override.rb remove rails 2 support 2014-08-06 18:16:19 +00:00
profile.rb rails4: fix invalid utf8 removal on old serialized attributes 2015-07-15 19:52:36 +00:00
progress.rb adds UI & backend for offline content 2015-09-30 16:22:18 +00:00
pseudonym.rb check pseudonyms for unique id on account before validation 2015-10-19 15:53:20 +00:00
pseudonym_session.rb don't lock people out after failed_login_attempts 2015-08-25 22:30:59 +00:00
report_snapshot.rb clarify Slug vs. UUID and fix event stream 2014-07-11 16:58:42 +00:00
role.rb fix user enrollment create permissions 2015-03-24 19:31:25 +00:00
role_override.rb As an admin, I want to create developer keys for my root account 2015-08-28 18:07:15 +00:00
rollup_score.rb ensure proper sorting if submitted_at times exist on any decaying avg results 2015-03-09 21:39:08 +00:00
rubric.rb use preload instead of include on associations 2015-09-08 20:32:41 +00:00
rubric_assessment.rb allow submissions graded through rubrics to be graded anonymously 2015-10-20 18:12:16 +00:00
rubric_association.rb allow submissions graded through rubrics to be graded anonymously 2015-10-20 18:12:16 +00:00
scribd_mime_type.rb remove rails 2 support 2014-08-06 18:16:19 +00:00
session_persistence_token.rb no more dynamic finders (models) 2014-09-24 20:51:48 +00:00
setting.rb fix some boot up issues when the db isn't set up yet 2015-06-11 15:16:38 +00:00
sharded_bookmarked_collection.rb rails4: remove Relation#with_each_shard 2015-07-17 12:31:15 +00:00
sis_batch.rb Update account associations when SIS imports fail 2015-10-19 19:52:16 +00:00
sis_post_grades_status.rb Add validation to the post grades model 2015-01-07 23:27:25 +00:00
sis_pseudonym.rb pick sis pseudonym reliably 2015-06-25 22:18:14 +00:00
stream_item.rb use preload/eager_load instead of includes 2015-09-08 20:32:05 +00:00
stream_item_instance.rb validate types on polymorphic associations 2014-05-28 17:05:34 +00:00
student_enrollment.rb DA - enrollment deletion works 2014-09-25 22:01:02 +00:00
student_view_enrollment.rb fix viewing test student grades by teacher 2014-05-30 04:35:59 +00:00
submission.rb crocodoc filtering for moderated grading 2015-10-23 16:39:21 +00:00
submission_comment.rb update email notification for peer review to be anonymous 2015-09-14 21:19:20 +00:00
submission_comment_interaction.rb fix teacher interaction report to work with submission comments 2015-02-06 18:54:59 +00:00
submission_comment_participant.rb define exportable attributes/associations on models 2014-05-06 23:54:24 +00:00
submission_version.rb validations on Version and SubmissionVersion 2014-12-12 23:29:45 +00:00
ta_enrollment.rb straighten out course designer permissions 2012-01-13 18:56:50 -07:00
tableless.rb spec: fix fragile locked_spec 2015-08-14 15:39:05 +00:00
teacher_enrollment.rb straighten out course designer permissions 2012-01-13 18:56:50 -07:00
thumbnail.rb default settings values to strings 2015-05-07 21:24:54 +00:00
usage_rights.rb add new variable expansions for attachments 2015-02-19 17:12:38 +00:00
user.rb include observer in ENV.current_user_roles 2015-10-28 16:15:22 +00:00
user_account_association.rb define exportable attributes/associations on models 2014-05-06 23:54:24 +00:00
user_note.rb stabby lambda scopes for rails4 2014-07-04 02:11:56 +00:00
user_observer.rb don't allow a user to observe oneself 2015-03-19 20:46:07 +00:00
user_profile.rb Multiple language support in LTI XML can be applied to user_navigation 2015-09-22 20:30:36 +00:00
user_profile_link.rb validate user_profile_links.url 2015-09-02 21:54:54 +00:00
user_service.rb delete facebook integration 2015-03-30 20:21:58 +00:00
web_conference.rb don't explode computing web conference notifications 2015-05-12 02:03:25 +00:00
web_conference_participant.rb define exportable attributes/associations on models 2014-05-06 23:54:24 +00:00
wiki.rb use module-item API (exclusively) to (un-)publish module items 2015-10-08 14:02:43 +00:00
wiki_page.rb rails4: deprecate Relation#all in favor of Relation#to_a 2015-07-24 21:28:14 +00:00
wimba_conference.rb fix Lint/StringConversionInInterpolation issue 2015-04-27 20:53:25 +00:00
zip_file_import.rb get sentry into canvas 2015-04-13 22:26:15 +00:00