- Use local version of Fira Sans instead of googlefonts.
- Make it possible to configure separate storage backend for single file download URLs.
- Make it possible to configure separate storage backend for archive download URLs.
- Add setting to optionally disable CSRF for certain API views.
- Support downloading archives via S3 presigned URL
- compressionutil: Add logging to file downloads (loglevel DEBUG, no not visible by default)
- dataporten_allauth: Fix get_client call.
- Remove .zip from archive download filenames for admins and examiners.
- archive_download_message.django.html: added an informational message about the use of tar.gz files
- psycopg3 update for RawSQL query
- Show configurable message when archive download is complete.
- Change zip backend to TAR format. Because of issues with S3 and zipfile.
- More S3 tuning, including docs.
- compressionutil: Make zip file creation work with S3 storage.
- Move whitenoise into hard dependencies since we have it in MIDDLEWARE.
- settings.py: fix to allow migrations from allauth to run
- devilry_dataporten_allauth.views: fixed imports
- Further dependency and releasenotes cleanup
- Replace dj-static with whitenoise.
- Remove old unused delivery and gradingsystem models.
- Make storage for all the models.FileField fields configurabe via settings.
- Update cradmin_legacy to 5.0.1,<6.0.0
- Change ZIP backend so it uses storage (which can be blob storage) instead of streaming.
- comment_email.py: fixed send_student_comment_email getting unexpected keyword argument
- DevilrySocialAccountAdapter: added 'profilephoto' to extra_data_to_keep
- FileDownloadFeedbackfeedView: change groupcomment visibility check to a more comprehensive check
- download_archive.py: Change from StreamingHttpResponse to FileResponse
- backend_base.py: fixed not closing filedescriptors
- StudentFeedbackFeedView: changed from self.model.... to self.assignment_group.... in before_original_deadline check
- devilry_compressionutil: added if check for save_to_disk if DEVILRY_COMPRESSED_ARCHIVES_DIRECTORY should be used
- devilry_compressionutil: optimization of gathering of files of feedbacksets and assignments for zip generation
- StreamZipBackend: Added missing if test to _create_path_if_not_exists
- devilry_compressionutil: added the ability to stream the creation of zip files
- comment_email.py: added check for if comment is empty and made before first deadline of assignment then it should not send email to examiner
- allauth_adapter.py: removed logging of value, only logs key
- allauth_adapter.py: added removal of unwanted extra_data
- qualification_preview_view.py: re-labeled print buttons and removed order by candidate number
- Added settings to allow spans to have class attribute and to not merge spans when sanitizing input
- for #1281
- Set connecting argument when saving in allauth_adapter.
- devilry_qualifiesforexam.QualificationPreviewView: fixed KeyError causing saving to fail
- devilry_examiner.assignmentgroup: fixed duplicate filters in OrderByDelivery
- devilry_examiner.selfassign.py: fixed added sorting to wrong view
- devilry_examiner.assignment: Added missing sorting on delivery time
- feedbackfeed_examiner.py: fixed defaulting to feedback
- devilry_qualifiesforexam: added listing of required exams on status report
- devilry_examiner: added sorting by delivery time and filter if assignment has an delivery with file attachment to examiner dashboard
- devilry-comment-editor: added button for image markdown
- settings/develop.py: Added mediacopy of files missing to work with whitenoise
- feedbackfeed_examiner.ExaminerPublicDiscussView: set feedback to default open tab instead of discuss
- devilry_admin.asignment.student.overwiev: changed to 'students' to 'groups' to better reflect actual content of view
- devilry_listfilter.user.Search: force encoding of search input to hopefully fix #1077
- devilry_markup: added sanitizer step after markdown conversion
- DevilryOAuth2CallbackView: get_app() to .app
- Translation: added missing translations
- PrintStatusView: hide footer when printing
- pyproject.toml: removed certifi requirement
- PrintStatusView: propper sorting and more data displayed
- pyproject.toml: upped the version of gunicorn to 21
- devilry_authenticate: changed allauthloginview to support allauth version > 0.55
- AssignmentGradingConfigurationUpdateView: corrected changing grading for assignments
- This will be a major release
- Django 4.2 and python 3.10 support - Add health-check endpoints. - Group invitations: Now using the devilry_message backend for storing messages. - WCAG: Contrast-issue with link in "No access" warning-box. - Translations: Various translation errors. - Self-assign: Issue with duplicate rows from query when examiner is self-assigning. - Self-assign: Missing CSRF-token. - Comment-notification to examiners: When examiner posts comments all admins are notified.
- Add endpoints readiness and liveness probing
- Use CSRF-middleware to ensure CSRF-cookie is set everywhere
- If user is admin and examiner, the user should receive a notification as examiner if they post a comment as an admin.
- E-mail sent to admins when comment-poster was the only examiner in the group
- Group invite - email translations
- Group invite - use devilry_message system
- Use distinct to filter out duplicate rows from AssignmentGroup-query
- translation errors
- Contrast level adjustment for "danger"-box anchor-tag
- Update sphinx and related packages
- readthedocs testing
- .readthedocs.yml: Python version 3.8
- .readthedocs.yml: Python version 3.10
- Add pip-tools
- Django 4.2 support