Skip to content

Commit

Permalink
🔖(chore) bump release to 1.0.0-beta.9
Browse files Browse the repository at this point in the history
Added

- Replace DjangoCMS picture plugin by our simple picture plugin: only one
  field to upload the image, all attributes that control how the image is
  resized, cropped and displayed are now in the code,
- In the sandbox project, configure Django Filer to serve private files,
- Create a user group for each course and give it the permission to manage
  pages below the course (snapshots and course runs),
- Create a folder in Django Filer for each organization and for each course,
- When a new course is created for an organization, automatically associate
  permissions to organization admins (as defined in settings or with sensible
  defaults),
- Configure permission checks on page creations via the CMS wizard,
- Automatically create a page role and associate admin permissions when a new
  organization page is created (as defined in settings or with sensible
  defaults),
- Add page roles to link a user group to a CMS page, searchable via the admin,
- Add page roles to link a user group to a CMS page,
- Add a persons index and viewset to enable text queries and autocomplete
  requests on person names from the API.
- Index person names on courses to allow users to find courses when they
  type a related person's name in full text search.
- Add a persons filter to the course Search view and suggest persons in
  autocomplete search field.
- Add a management command to create the required site structure,
- Allow to dynamically set webpack publicPath. This is useful if a CDN is used
  to load statics. Define the settings `CDN_DOMAIN` and it will be used as base
  domain to fetch js chunks.

Changed

- Restrict course content to plain text in standard sections,
- Change the order of placeholders on the course page following feedback from
  our support team,
- Simplify the Docker development stack to have a single `Dockerfile` and
  docker-compose configuration for testing either with MySQL or PostgreSQL
  database backend
- Standardize the project's `Makefile` to make it more easily maintainable by
  our peers
- Database ports are no longer exposed in the development environment

Removed

- Alpine images are no longer maintained and have been removed from the project

Fixed

- Fix production image by removing dependency to `factory` in production code,
- Fail and return a meaningful error when an invalid slug is submitted in
  page creation wizards,
- Fix person placeholders mistakenly showing on the organization page,
- Fix serializer that was failing for a course indexed with no organization,
- The language filter, which is not a drilldown filter, no longer behaves
  like one. Ditto for any future similar filters,
- All children are now shown when a parent filter value is "opened", instead
  of just the top 5 by facet count.
  • Loading branch information
mbenadda committed May 22, 2019
1 parent 5d8732c commit 7b9eea5
Show file tree
Hide file tree
Showing 10 changed files with 429 additions and 382 deletions.
5 changes: 4 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [1.0.0-beta.9] - 2019-05-22

### Added

- Replace DjangoCMS picture plugin by our simple picture plugin: only one
Expand Down Expand Up @@ -286,7 +288,8 @@ us:
- finish integrating the missing pages and improve the sandbox environment;
- test and polish the use of richie as a django app / node dependency.

[unreleased]: https://github.com/openfun/richie/compare/v1.0.0-beta.8...master
[unreleased]: https://github.com/openfun/richie/compare/v1.0.0-beta.9...master
[1.0.0-beta.9]: https://github.com/openfun/richie/compare/v1.0.0-beta.8...v1.0.0-beta.9
[1.0.0-beta.8]: https://github.com/openfun/richie/compare/v1.0.0-beta.7...v1.0.0-beta.8
[1.0.0-beta.7]: https://github.com/openfun/richie/compare/v1.0.0-beta.6...v1.0.0-beta.7
[1.0.0-beta.6]: https://github.com/openfun/richie/compare/v1.0.0-beta.5...v1.0.0-beta.6
Expand Down
2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
;;
[metadata]
name = richie
version = 1.0.0-beta.8
version = 1.0.0-beta.9
description = A FUN portal for Open edX
long_description = file:README.md
long_description_content_type = text/markdown
Expand Down
81 changes: 2 additions & 79 deletions src/frontend/js/translations/fr_CA.po
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2019-05-15T15:04:32.239Z\n"
"POT-Creation-Date: 2019-05-16T14:30:46.542Z\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"MIME-Version: 1.0\n"
Expand All @@ -13,14 +13,7 @@ msgstr ""
"Last-Translator: Samuel Paccoud (sampaccoud)\n"
"Language-Team: French, Canada\n"
"Language: fr_CA\n"
"PO-Revision-Date: 2019-05-15 15:05\n"

#. [settings.filters.availability.title] - Title for the "Availability" section of course filters (eg. Coming soon / Current session etc.)
#. defaultMessage is:
#. Availability
#: i18n/js/settings.json
msgid "Availability"
msgstr ""
"PO-Revision-Date: 2019-05-22 17:10\n"

#. [common.categoriesHumanName] - Title/name to use when we display a list of categories
#. defaultMessage is:
Expand All @@ -36,20 +29,6 @@ msgstr "Catégories"
msgid "Clear {activeFilterCount, number} active {activeFilterCount, plural, one {filter} other {filters}}"
msgstr "Remettre à zéro {activeFilterCount, number} {activeFilterCount, plural, one {filtre} other {filtres}} actifs"

#. [components.CloseIcon.closeLabel] - Accessibility label for the "x" disable icon on an active filer
#. defaultMessage is:
#. Close
#: i18n/js/components/icons/CloseIcon.json
msgid "Close"
msgstr ""

#. [settings.filters.availability.values.coming_soon] - Possible value for the "Availability" filter for courses
#. defaultMessage is:
#. Coming soon
#: i18n/js/settings.json
msgid "Coming soon"
msgstr ""

#. [common.coursesHumanName] - Title/name to use when we display a list of courses
#. defaultMessage is:
#. Courses
Expand All @@ -64,90 +43,34 @@ msgstr "Cours"
msgid "Cover"
msgstr "Couverture"

#. [settings.filters.availability.values.current] - Possible value for the "Availability" filter for courses
#. defaultMessage is:
#. Current session
#: i18n/js/settings.json
msgid "Current session"
msgstr ""

#. [components.CourseGlimpse.linkText] - Accessibility title for links on course glimpses.
#. defaultMessage is:
#. Details page for {courseTitle}.
#: i18n/js/components/CourseGlimpse/CourseGlimpse.json
msgid "Details page for {courseTitle}."
msgstr "Page de détails pour {courseTitle}."

#. [settings.filters.language.en] - Language
#. defaultMessage is:
#. English
#: i18n/js/settings.json
msgid "English"
msgstr ""

#. [components.SearchFiltersPane.title] - Title for the search filters pane in course search.
#. defaultMessage is:
#. Filter courses
#: i18n/js/components/SearchFiltersPane/SearchFiltersPane.json
msgid "Filter courses"
msgstr "Filtrer les cours"

#. [settings.filters.new.new] - Possible balue for the "New" filter for courses
#. defaultMessage is:
#. First session
#: i18n/js/settings.json
msgid "First session"
msgstr ""

#. [settings.filters.language.fr] - Language
#. defaultMessage is:
#. French
#: i18n/js/settings.json
msgid "French"
msgstr ""

#. [components.SearchFilterValueParent.ariaHideChildren] - Accessibility message for the button to hide children of the current filter
#. defaultMessage is:
#. Hide child filters
#: i18n/js/components/SearchFilterValueParent/SearchFilterValueParent.json
msgid "Hide child filters"
msgstr "Masquer les filtres enfants"

#. [settings.filters.language.title] - Title for the "Language" section of course filters (eg. FR / EN etc.)
#. defaultMessage is:
#. Language
#: i18n/js/settings.json
msgid "Language"
msgstr ""

#. [components.CourseGlimpse.logoAltText] - Alternate text for the course logo in a course glimpse.
#. defaultMessage is:
#. Logo for {courseTitle}
#: i18n/js/components/CourseGlimpse/CourseGlimpse.json
msgid "Logo for {courseTitle}"
msgstr "Logo du cours {courseTitle}"

#. [components.SearchFilterGroup.SearchFilterGroupSuggestField.placeholder] - Placeholder text displayed in the search filter group autocomplet field when it is empty.
#. defaultMessage is:
#. More {kindName}
#: i18n/js/components/SearchFilterGroup/SearchFilterGroupSuggestField.json
msgid "More {kindName}"
msgstr ""

#. [settings.filters.new.title] - Title for the "New" section of course filters
#. defaultMessage is:
#. New courses
#: i18n/js/settings.json
msgid "New courses"
msgstr ""

#. [settings.filters.availability.values.open] - Possible value for the "Availability" filter for courses
#. defaultMessage is:
#. Open for enrollment
#: i18n/js/settings.json
msgid "Open for enrollment"
msgstr ""

#. [common.organizationsHumanName] - Title/name to use when we display a list of organizations
#. defaultMessage is:
#. Organizations
Expand Down
2 changes: 1 addition & 1 deletion src/frontend/js/translations/fr_FR.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"components.CourseGlimpse.logoAltText":"Logo du cours {courseTitle}","components.CourseGlimpse.cover":"Couverture","components.CourseGlimpse.startsOn":"Débute le {date}","components.CourseGlimpse.linkText":"Page de détails pour {courseTitle}.","components.CourseGlimpseList.courseCount":"","components.CloseIcon.closeLabel":"","components.SearchFilterGroup.SearchFilterGroupSuggestField.placeholder":"","components.SearchFiltersPane.clearFilters":"Remettre à zéro {activeFilterCount, number} {activeFilterCount, plural, one {filtre} other {filtres}} actifs","components.SearchFiltersPane.title":"Filtrer les cours","components.SearchFilterValueParent.ariaHideChildren":"Cacher les filtres enfants","components.SearchFilterValueParent.ariaShowChildren":"Afficher les filtres enfants","components.SearchSuggestField.searchFieldDefaultSearch":"Recherche de {query} dans les cours...","components.SearchSuggestField.searchFieldPlaceholder":"Recherche des cours, des organisations, des catégories","settings.filters.availability.title":"","settings.filters.availability.values.coming_soon":"","settings.filters.availability.values.current":"","settings.filters.availability.values.open":"","settings.filters.language.title":"","settings.filters.language.en":"","settings.filters.language.fr":"","settings.filters.new.title":"","settings.filters.new.new":"","common.categoriesHumanName":"Catégories","common.coursesHumanName":"Cours","common.organizationsHumanName":"Établissements","common.personsHumanName":""}
{"components.CourseGlimpse.logoAltText":"Logo du cours {courseTitle}","components.CourseGlimpse.cover":"Couverture","components.CourseGlimpse.startsOn":"Débute le {date}","components.CourseGlimpse.linkText":"Page de détails pour {courseTitle}.","components.CourseGlimpseList.courseCount":"{courseCount, number} {courseCount, plural, one {cours} other {cours}} correspondant à votre recherche","components.CloseIcon.closeLabel":"","components.SearchFilterGroup.SearchFilterGroupSuggestField.placeholder":"","components.SearchFiltersPane.clearFilters":"Remettre à zéro {activeFilterCount, number} {activeFilterCount, plural, one {filtre} other {filtres}} actifs","components.SearchFiltersPane.title":"Filtrer les cours","components.SearchFilterValueParent.ariaHideChildren":"Cacher les filtres enfants","components.SearchFilterValueParent.ariaShowChildren":"Afficher les filtres enfants","components.SearchSuggestField.searchFieldDefaultSearch":"Recherche de {query} dans les cours...","components.SearchSuggestField.searchFieldPlaceholder":"Recherche des cours, des organisations, des catégories","settings.filters.availability.title":"","settings.filters.availability.values.coming_soon":"","settings.filters.availability.values.current":"","settings.filters.availability.values.open":"","settings.filters.language.title":"","settings.filters.language.en":"","settings.filters.language.fr":"","settings.filters.new.title":"","settings.filters.new.new":"","common.categoriesHumanName":"Catégories","common.coursesHumanName":"Cours","common.organizationsHumanName":"Établissements","common.personsHumanName":"Personnes"}
85 changes: 4 additions & 81 deletions src/frontend/js/translations/fr_FR.po
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2019-05-15T15:04:32.239Z\n"
"POT-Creation-Date: 2019-05-16T14:30:46.542Z\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"MIME-Version: 1.0\n"
Expand All @@ -13,14 +13,7 @@ msgstr ""
"Last-Translator: Samuel Paccoud (sampaccoud)\n"
"Language-Team: French\n"
"Language: fr_FR\n"
"PO-Revision-Date: 2019-05-15 15:05\n"

#. [settings.filters.availability.title] - Title for the "Availability" section of course filters (eg. Coming soon / Current session etc.)
#. defaultMessage is:
#. Availability
#: i18n/js/settings.json
msgid "Availability"
msgstr ""
"PO-Revision-Date: 2019-05-22 21:45\n"

#. [common.categoriesHumanName] - Title/name to use when we display a list of categories
#. defaultMessage is:
Expand All @@ -36,20 +29,6 @@ msgstr "Catégories"
msgid "Clear {activeFilterCount, number} active {activeFilterCount, plural, one {filter} other {filters}}"
msgstr "Remettre à zéro {activeFilterCount, number} {activeFilterCount, plural, one {filtre} other {filtres}} actifs"

#. [components.CloseIcon.closeLabel] - Accessibility label for the "x" disable icon on an active filer
#. defaultMessage is:
#. Close
#: i18n/js/components/icons/CloseIcon.json
msgid "Close"
msgstr ""

#. [settings.filters.availability.values.coming_soon] - Possible value for the "Availability" filter for courses
#. defaultMessage is:
#. Coming soon
#: i18n/js/settings.json
msgid "Coming soon"
msgstr ""

#. [common.coursesHumanName] - Title/name to use when we display a list of courses
#. defaultMessage is:
#. Courses
Expand All @@ -64,90 +43,34 @@ msgstr "Cours"
msgid "Cover"
msgstr "Couverture"

#. [settings.filters.availability.values.current] - Possible value for the "Availability" filter for courses
#. defaultMessage is:
#. Current session
#: i18n/js/settings.json
msgid "Current session"
msgstr ""

#. [components.CourseGlimpse.linkText] - Accessibility title for links on course glimpses.
#. defaultMessage is:
#. Details page for {courseTitle}.
#: i18n/js/components/CourseGlimpse/CourseGlimpse.json
msgid "Details page for {courseTitle}."
msgstr "Page de détails pour {courseTitle}."

#. [settings.filters.language.en] - Language
#. defaultMessage is:
#. English
#: i18n/js/settings.json
msgid "English"
msgstr ""

#. [components.SearchFiltersPane.title] - Title for the search filters pane in course search.
#. defaultMessage is:
#. Filter courses
#: i18n/js/components/SearchFiltersPane/SearchFiltersPane.json
msgid "Filter courses"
msgstr "Filtrer les cours"

#. [settings.filters.new.new] - Possible balue for the "New" filter for courses
#. defaultMessage is:
#. First session
#: i18n/js/settings.json
msgid "First session"
msgstr ""

#. [settings.filters.language.fr] - Language
#. defaultMessage is:
#. French
#: i18n/js/settings.json
msgid "French"
msgstr ""

#. [components.SearchFilterValueParent.ariaHideChildren] - Accessibility message for the button to hide children of the current filter
#. defaultMessage is:
#. Hide child filters
#: i18n/js/components/SearchFilterValueParent/SearchFilterValueParent.json
msgid "Hide child filters"
msgstr "Cacher les filtres enfants"

#. [settings.filters.language.title] - Title for the "Language" section of course filters (eg. FR / EN etc.)
#. defaultMessage is:
#. Language
#: i18n/js/settings.json
msgid "Language"
msgstr ""

#. [components.CourseGlimpse.logoAltText] - Alternate text for the course logo in a course glimpse.
#. defaultMessage is:
#. Logo for {courseTitle}
#: i18n/js/components/CourseGlimpse/CourseGlimpse.json
msgid "Logo for {courseTitle}"
msgstr "Logo du cours {courseTitle}"

#. [components.SearchFilterGroup.SearchFilterGroupSuggestField.placeholder] - Placeholder text displayed in the search filter group autocomplet field when it is empty.
#. defaultMessage is:
#. More {kindName}
#: i18n/js/components/SearchFilterGroup/SearchFilterGroupSuggestField.json
msgid "More {kindName}"
msgstr ""

#. [settings.filters.new.title] - Title for the "New" section of course filters
#. defaultMessage is:
#. New courses
#: i18n/js/settings.json
msgid "New courses"
msgstr ""

#. [settings.filters.availability.values.open] - Possible value for the "Availability" filter for courses
#. defaultMessage is:
#. Open for enrollment
#: i18n/js/settings.json
msgid "Open for enrollment"
msgstr ""

#. [common.organizationsHumanName] - Title/name to use when we display a list of organizations
#. defaultMessage is:
#. Organizations
Expand All @@ -160,7 +83,7 @@ msgstr "Établissements"
#. Persons
#: i18n/js/utils/commonMessages.json
msgid "Persons"
msgstr ""
msgstr "Personnes"

#. [components.SearchSuggestField.searchFieldPlaceholder] - Placeholder text displayed in the search field when it is empty.
#. defaultMessage is:
Expand Down Expand Up @@ -189,7 +112,7 @@ msgstr "Afficher les filtres enfants"
#. Showing {courseCount, number} {courseCount, plural, one {course} other {courses}} matching your search
#: i18n/js/components/CourseGlimpseList/CourseGlimpseList.json
msgid "Showing {courseCount, number} {courseCount, plural, one {course} other {courses}} matching your search"
msgstr ""
msgstr "{courseCount, number} {courseCount, plural, one {cours} other {cours}} correspondant à votre recherche"

#. [components.CourseGlimpse.startsOn] - Shows the start date for a course in a course glimpse in a short format such as Sep 4, '1986'
#. defaultMessage is:
Expand Down
2 changes: 1 addition & 1 deletion src/frontend/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "richie-education",
"version": "1.0.0-beta.8",
"version": "1.0.0-beta.9",
"description": "A CMS for Open Education",
"main": "sandbox/manage.py",
"scripts": {
Expand Down
Binary file modified src/richie/locale/fr_CA/LC_MESSAGES/django.mo
Binary file not shown.
Loading

0 comments on commit 7b9eea5

Please sign in to comment.