richie 2.33.1.dev1__py2.py3-none-any.whl → 2.33.1.dev3__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of richie might be problematic. Click here for more details.

@@ -153,5 +153,5 @@ describe('AddressForm', () => {
153
153
  expect(
154
154
  getByText($countryInput.closest('.c__field')!, /This field is required./),
155
155
  ).toBeInTheDocument();
156
- });
156
+ }, 15000);
157
157
  });
@@ -177,7 +177,7 @@ describe('AddressesManagement', () => {
177
177
  ...address,
178
178
  is_main: true,
179
179
  });
180
- }, 10000);
180
+ }, 15000);
181
181
 
182
182
  it('renders a form to edit an address when user selects an address to edit', async () => {
183
183
  const address = AddressFactory().one();
@@ -169,7 +169,7 @@ describe('<AbstractContractFrame />', () => {
169
169
  await user.click(button);
170
170
 
171
171
  expect(mockOnClose).toHaveBeenCalledTimes(1);
172
- });
172
+ }, 25000);
173
173
 
174
174
  it('retrieves invitation link but fails during signature checking', async () => {
175
175
  const user = userEvent.setup();
@@ -231,7 +231,7 @@ describe('<AbstractContractFrame />', () => {
231
231
  await user.click(button);
232
232
 
233
233
  expect(mockOnClose).toHaveBeenCalledTimes(1);
234
- });
234
+ }, 25000);
235
235
 
236
236
  it('retrieves invitation link but exceeds polling max attemps', async () => {
237
237
  const user = userEvent.setup();
@@ -133,7 +133,7 @@ describe('AddressSelector', () => {
133
133
  'Billing address' + getAddressLabel(address) + 'closearrow_drop_down',
134
134
  );
135
135
  });
136
- });
136
+ }, 15000);
137
137
  it('has an existing main billing address and choose another', async () => {
138
138
  const address = AddressFactory({
139
139
  is_main: true,
@@ -268,5 +268,5 @@ describe('AddressSelector', () => {
268
268
  'Billing address' + getAddressLabel(newAddress) + 'closearrow_drop_down',
269
269
  ),
270
270
  );
271
- });
271
+ }, 15000);
272
272
  });
@@ -381,5 +381,5 @@ describe('SaleTunnel', () => {
381
381
  // This way we make sure the cache is updated.
382
382
  await screen.findByText('Purchased');
383
383
  expect(screen.queryByRole('button', { name: product.call_to_action })).not.toBeInTheDocument();
384
- }, 10000);
384
+ }, 15000);
385
385
  });
@@ -82,7 +82,7 @@ describe('useCourseProductUnion', () => {
82
82
  `${coursesUrl}?has_listed_course_runs=true&page=1&page_size=${PER_PAGE}`,
83
83
  );
84
84
  expect(calledUrls).toContain(`${courseProductRelationsUrl}?page=1&page_size=${PER_PAGE}`);
85
- });
85
+ }, 25000);
86
86
 
87
87
  it('should call organization courses and organization coursesProductRelation endpoints', async () => {
88
88
  const organizationId = 'DUMMY_ORGANIZATION_ID';
@@ -170,7 +170,7 @@ describe('<DashboardCreateAddress/>', () => {
170
170
  await waitFor(() => {
171
171
  expect(screen.getByText('Billing addresses')).toBeInTheDocument();
172
172
  });
173
- });
173
+ }, 15000);
174
174
 
175
175
  it('shows an error in case of API error', async () => {
176
176
  fetchMock.get('https://joanie.endpoint/api/v1.0/addresses/', []);
@@ -210,5 +210,5 @@ describe('<DashboardCreateAddress/>', () => {
210
210
  ).toBe(true);
211
211
 
212
212
  await expectBannerError('An error occurred while creating the address. Please retry later.');
213
- });
213
+ }, 15000);
214
214
  });
@@ -231,7 +231,7 @@ describe('<DashboardCourses/>', () => {
231
231
  await waitFor(() => expectList(entities.slice(0, perPage * 3), relations), { timeout: 30000 });
232
232
  loadMoreButton = await screen.findByRole('button', { name: 'Load more' });
233
233
  expect(loadMoreButton).toBeEnabled();
234
- });
234
+ }, 15000);
235
235
 
236
236
  it('shows an error', async () => {
237
237
  jest.spyOn(console, 'error').mockImplementation(noop);
@@ -305,6 +305,25 @@ CMS_PLACEHOLDER_CONF = {
305
305
  "plugins": ["CKEditorPlugin"],
306
306
  "limits": {"CKEditorPlugin": 1},
307
307
  },
308
+ "courses/cms/category_detail.html additional_information": {
309
+ "name": _("Additional Information"),
310
+ "plugins": ["SectionPlugin"],
311
+ "parent_classes": {
312
+ "CKEditorPlugin": ["SectionPlugin"],
313
+ "SimplePicturePlugin": ["SectionPlugin"],
314
+ "GlimpsePlugin": ["SectionPlugin"],
315
+ "NestedItemPlugin": ["SectionPlugin"],
316
+ },
317
+ "child_classes": {
318
+ "SectionPlugin": [
319
+ "CKEditorPlugin",
320
+ "SimplePicturePlugin",
321
+ "GlimpsePlugin",
322
+ "NestedItemPlugin",
323
+ ],
324
+ "NestedItemPlugin": ["NestedItemPlugin"],
325
+ },
326
+ },
308
327
  # Person detail
309
328
  "courses/cms/person_detail.html categories": {
310
329
  "name": _("Categories"),
@@ -190,6 +190,19 @@
190
190
  {% endif %}
191
191
  {% endwith %}
192
192
 
193
+ <div id="page{{ page_suffix }}" class="category-detail__additional-info category-detail__block">
194
+ <div class="category-detail__row">
195
+ {% if not current_page|is_empty_placeholder:"additional_information" and not current_page.reverse_id %}
196
+ <p class="category-detail__empty">{% trans 'Configure this page id to show this additional information on all related course pages' %}</p>
197
+ {% endif %}
198
+ {% placeholder "additional_information" or %}
199
+ {% if request.toolbar.edit_mode_active %}
200
+ <p class="category-detail__empty">{% trans 'Enter additional information for this category' %}</p>
201
+ {% endif %}
202
+ {% endplaceholder %}
203
+ </div>
204
+ </div>
205
+
193
206
  {% with persons=category.get_persons %}
194
207
  {% if persons %}
195
208
  {% autopaginate persons GLIMPSE_PAGINATION_PERSONS %}
@@ -472,6 +472,23 @@
472
472
  {% endif %}
473
473
  {% endblock information %}
474
474
 
475
+ {% block category_additional_information %}
476
+ <!-- Showing all categories additional information of categories pages that have a page id -->
477
+
478
+ {% get_categories_pages_additional_information current_page.course as pages %}
479
+ {% if pages %}
480
+ <div class="course-detail__additional-info course-detail__block course-detail__row">
481
+ {% with is_syllabus_property=True %}
482
+ {% for page in pages %}
483
+ {% with reverse_id=page.reverse_id %}
484
+ {% show_placeholder "additional_information" reverse_id %}
485
+ {% endwith %}
486
+ {% endfor %}
487
+ {% endwith %}
488
+ </div>
489
+ {% endif %}
490
+ {% endblock category_additional_information %}
491
+
475
492
  {% block licenses %}
476
493
  {% if current_page.publisher_is_draft or not current_page|is_empty_placeholder:"course_license_content" or not current_page|is_empty_placeholder:"course_license_participation" %}
477
494
  <div class="course-detail__license course-detail__block course-detail__block--divider">
@@ -13,6 +13,7 @@ from django.utils import translation
13
13
  from classytags.arguments import Argument, MultiValueArgument
14
14
  from classytags.core import Options, Tag
15
15
  from classytags.utils import flatten_context
16
+ from cms.api import Page
16
17
  from cms.templatetags.cms_tags import (
17
18
  Placeholder,
18
19
  PlaceholderOptions,
@@ -23,6 +24,8 @@ from cms.utils import get_site_id
23
24
  from cms.utils.plugins import get_plugins
24
25
 
25
26
  from richie.apps.courses.defaults import RICHIE_MAX_ARCHIVED_COURSE_RUNS
27
+ from richie.apps.courses.models.category import Category
28
+ from richie.apps.courses.models.course import Course
26
29
 
27
30
  from ..lms import LMSHandler
28
31
  from ..models import CourseRunCatalogVisibility
@@ -271,6 +274,36 @@ def joanie_product_widget_props(context):
271
274
  return json.dumps({"productId": product_id, "courseCode": course_code})
272
275
 
273
276
 
277
+ @register.simple_tag()
278
+ def get_categories_pages_additional_information(course: Course) -> list[Page]:
279
+ """
280
+ Return categories pages have additional information and also have a page id.
281
+
282
+ usage: `{% get_categories_pages_additional_information current_page.course as pages %}`
283
+ """
284
+
285
+ categories_pages: list[Category] = course.get_categories()
286
+ categories_pages = categories_pages.filter(
287
+ extended_object__reverse_id__isnull=False
288
+ )
289
+
290
+ categories_with_information: list[Category] = []
291
+ for category in categories_pages:
292
+ additional_information = category.extended_object.get_placeholders().get(
293
+ slot="additional_information"
294
+ )
295
+ plugins = additional_information.get_plugins()
296
+
297
+ if len(plugins) > 0:
298
+ categories_with_information.append(category)
299
+
300
+ pages_have_additional_information: list[Page] = [
301
+ category.extended_object for category in categories_with_information
302
+ ]
303
+
304
+ return pages_have_additional_information
305
+
306
+
274
307
  @register.simple_tag(takes_context=True)
275
308
  def course_runs_list_widget_props(context):
276
309
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: richie
3
- Version: 2.33.1.dev1
3
+ Version: 2.33.1.dev3
4
4
  Summary: A CMS to build learning portals for open education
5
5
  Author-email: "Open FUN (France Université Numérique)" <fun.dev@fun-mooc.fr>
6
6
  License: MIT License
@@ -78,19 +78,19 @@ Requires-Dist: flake8==7.1.1; extra == "dev"
78
78
  Requires-Dist: flake8-pyproject==1.2.3; extra == "dev"
79
79
  Requires-Dist: htmlmin==0.1.12; extra == "dev"
80
80
  Requires-Dist: ipdb==0.13.13; extra == "dev"
81
- Requires-Dist: ipython==8.29.0; extra == "dev"
81
+ Requires-Dist: ipython==8.30.0; extra == "dev"
82
82
  Requires-Dist: isort==5.13.2; extra == "dev"
83
83
  Requires-Dist: lxml==5.3.0; extra == "dev"
84
84
  Requires-Dist: msgpack==1.1.0; extra == "dev"
85
85
  Requires-Dist: mysqlclient==2.2.6; extra == "dev"
86
- Requires-Dist: pylint==3.3.1; extra == "dev"
86
+ Requires-Dist: pylint==3.3.2; extra == "dev"
87
87
  Requires-Dist: pylint-django==2.6.1; extra == "dev"
88
- Requires-Dist: pytest==8.3.3; extra == "dev"
88
+ Requires-Dist: pytest==8.3.4; extra == "dev"
89
89
  Requires-Dist: pytest-cov==6.0.0; extra == "dev"
90
90
  Requires-Dist: pytest-django==4.9.0; extra == "dev"
91
91
  Requires-Dist: responses==0.25.3; extra == "dev"
92
92
  Provides-Extra: ci
93
- Requires-Dist: twine==5.1.1; extra == "ci"
93
+ Requires-Dist: twine==6.0.1; extra == "ci"
94
94
  Provides-Extra: sandbox
95
95
  Requires-Dist: django-configurations==2.5.1; extra == "sandbox"
96
96
  Requires-Dist: dockerflow==2024.4.2; extra == "sandbox"
@@ -67,10 +67,10 @@ frontend/js/api/web-analytics/no_provider.spec.ts,sha256=PMLlxzxvb-BQ820B22Q0ca2
67
67
  frontend/js/api/web-analytics/unknown_provider.spec.ts,sha256=5GvKC5oqn3oNXrv42fbzFs1RyIYZDJV0VX1DHmekjEQ,512
68
68
  frontend/js/components/Address/index.tsx,sha256=cRvXbnPVUYLApZME64_jNLSxCOAzWbEv9RScL2RJS88,318
69
69
  frontend/js/components/AddressesManagement/_styles.scss,sha256=AixuHueZPqKvwuVl39gx_GF2cEgwLQeTxSfygXUCY10,920
70
- frontend/js/components/AddressesManagement/index.spec.tsx,sha256=NnanWRfk4dO2ahWwshzO8qCu776cioQVhRsUQzOC0sE,14489
70
+ frontend/js/components/AddressesManagement/index.spec.tsx,sha256=GToId0BHSdvj-oUZMW7RnGM8nB6tryzc1IspOYOvZtI,14489
71
71
  frontend/js/components/AddressesManagement/index.stories.tsx,sha256=bfj_hV8mzixaTaiZNj5BF7rnd8p9V9NTPOw8xfRZPgk,868
72
72
  frontend/js/components/AddressesManagement/index.tsx,sha256=XrQfQ0a5gopnGLaY4NSHN_jbgzYow9ZN3cUOcnu22gA,8555
73
- frontend/js/components/AddressesManagement/AddressForm/index.spec.tsx,sha256=dlPxwxKbEjKw852zTM4wzMml2qzp_yz4mv4-ytHbjuw,6199
73
+ frontend/js/components/AddressesManagement/AddressForm/index.spec.tsx,sha256=UHuxWKZ1LpmafC7TBjTL-qz22gNULiqTbTIKvaOfL8w,6206
74
74
  frontend/js/components/AddressesManagement/AddressForm/index.stories.tsx,sha256=47miXWRO3Rs4PYicgVVFADj_CxCEdAJN213395N0NXU,929
75
75
  frontend/js/components/AddressesManagement/AddressForm/index.tsx,sha256=SvIrD2cCHI4oTU_jZuY7422aokD7i9ng_w3HQsSke4E,5051
76
76
  frontend/js/components/AddressesManagement/AddressForm/validationSchema.spec.ts,sha256=R8D1cSsglzGVJIBLO8iI4YhlxiJ7Q3oOg9gECJuLrCg,7132
@@ -81,7 +81,7 @@ frontend/js/components/Badge/index.tsx,sha256=VjbN3ijNtCOhQkR3Z5r0XbgD4pCLFpVMBL
81
81
  frontend/js/components/Banner/index.spec.tsx,sha256=phIllm_buSpppMpXoxz6spGeh62tSi4MRZGEwLMixvY,1113
82
82
  frontend/js/components/Banner/index.stories.tsx,sha256=6_8yv8_WLlca2W-gRF1xyrmVXWcYK587OxErRt-QtjQ,563
83
83
  frontend/js/components/Banner/index.tsx,sha256=k9OL3fLXVsTWT0CKSYlih-1Ahh1iHsKe1MzdbaMIrjw,812
84
- frontend/js/components/ContractFrame/AbstractContractFrame.spec.tsx,sha256=-7wryOU82tirddTCtaF-mqcrGhKPKanxBCecRUFKaH8,12406
84
+ frontend/js/components/ContractFrame/AbstractContractFrame.spec.tsx,sha256=eYCao8KnX-VJzVr2p2buxqpB0BP-PyV0MdUlOAWhnfc,12420
85
85
  frontend/js/components/ContractFrame/AbstractContractFrame.tsx,sha256=1JG6PBtCeFjwpfLqJrqcxbVufM3y0h2AEnNImIP1uyo,9596
86
86
  frontend/js/components/ContractFrame/LearnerContractFrame.spec.tsx,sha256=iQVHJCN0jgJtDNfNo3ROBAE19TF9tDvfANmjDOYbOgY,4703
87
87
  frontend/js/components/ContractFrame/LearnerContractFrame.tsx,sha256=-T3GkIXHjRwSutKIyooXlKJXYlSpI1YE29j9ZWRnAvg,1317
@@ -159,14 +159,14 @@ frontend/js/components/RegisteredAddress/index.tsx,sha256=VwcclF1GY4BsulD99IAIWr
159
159
  frontend/js/components/SaleTunnel/GenericSaleTunnel.tsx,sha256=JcHMeGZlUKoD-AQucPYsTEeR5HZUPlyu2yERtLzjJPU,8336
160
160
  frontend/js/components/SaleTunnel/_styles.scss,sha256=s65bRf7e3318vZuYlyv7Kq8uIzzCqFm2nmywIhNT0k8,2576
161
161
  frontend/js/components/SaleTunnel/index.credential.spec.tsx,sha256=NOoN4NBTh5nqykO5qEbLNUB23v-9shx6tuL_AkYLIYE,4618
162
- frontend/js/components/SaleTunnel/index.full-process.spec.tsx,sha256=Iq3tX8iGWn9I64TAydibOVct6wpzUGOZ_TvDVFr1xD4,13930
162
+ frontend/js/components/SaleTunnel/index.full-process.spec.tsx,sha256=rH9IPcWcu_LXtc_KsmsVmkQ8EiciCpD69DGQyZMwMYk,13930
163
163
  frontend/js/components/SaleTunnel/index.spec.tsx,sha256=VQbtrzCSWFIEUgg9dwUth2t5kMJrQftwwo_zb387vkc,18747
164
164
  frontend/js/components/SaleTunnel/index.stories.tsx,sha256=uftzaoSsH3bZ9SbKpsHy0jNVAQyy8LY7-l0GNXMtiMM,1059
165
165
  frontend/js/components/SaleTunnel/index.tsx,sha256=apvwpxhFzBD6QZuxwzOfK6kdVwKzWYq3G9OaXQLtpi8,1239
166
166
  frontend/js/components/SaleTunnel/AddressSelector/CreateAddressFormModal.tsx,sha256=9DmRDFJTQL7fc_o9P6Bnp59P7w97li6x493yF_w0wTc,1980
167
167
  frontend/js/components/SaleTunnel/AddressSelector/EditAddressFormModal.tsx,sha256=j7MxeCIFrOG6Wem13r8pEGZFI3mvXFcD3s4eXV7gTTI,2015
168
168
  frontend/js/components/SaleTunnel/AddressSelector/_styles.scss,sha256=zI1KzbF1wjNZt2ZOLZjZobP1O3g4N8mFAmcFuXpTUiU,121
169
- frontend/js/components/SaleTunnel/AddressSelector/index.spec.tsx,sha256=ldbKehHZDvxUeOIWOEEPA3b95CpZVXd9WPCXwjuzmfE,9693
169
+ frontend/js/components/SaleTunnel/AddressSelector/index.spec.tsx,sha256=NXUWs43s55MkKz0AQqzfq4WFVUp6oe7hMdZNp9eXb6E,9707
170
170
  frontend/js/components/SaleTunnel/AddressSelector/index.tsx,sha256=qcSqxj1LYxYj4Ovx_Tj47jMgSiI2hccre7XYEqh1HVc,4008
171
171
  frontend/js/components/SaleTunnel/CertificateSaleTunnel/CertificateProductPath.tsx,sha256=4aT7GcKPf1jLNj_LKtrJlVAuFDeKnzyllQiBqnpjF-A,1829
172
172
  frontend/js/components/SaleTunnel/CertificateSaleTunnel/index.tsx,sha256=xefMzy0cSFC4U3_vGnVLTiUMzK4AoCNpuwkdHOMvKmE,1154
@@ -240,7 +240,7 @@ frontend/js/hooks/useContractArchive/index.ts,sha256=JoiEPsztinkrEt-ZWLZy_zAbv4w
240
240
  frontend/js/hooks/useContracts/index.tsx,sha256=mBkuWeITOtdgYYxqgcFl_1EW_c7O0y91r_U6763Wd-Y,2134
241
241
  frontend/js/hooks/useCourseOrders/index.ts,sha256=N5S8Jbi2BTYJYWqa71-kQLOyHSk7GfCqWLWx1BeEYTQ,1635
242
242
  frontend/js/hooks/useCourseProductRelation/index.ts,sha256=cvLC6HTCKOeYlEt4N8yNffbMqXICEW4axXJHrDuo0Zs,1462
243
- frontend/js/hooks/useCourseProductUnion/index.spec.tsx,sha256=vsmUq-fd5tP4zSh8IIMd72lnqsTo2-Urp3FVyebB3Cg,5150
243
+ frontend/js/hooks/useCourseProductUnion/index.spec.tsx,sha256=VSdne7asO4cy3H2R75-hPky8kfMfxlQLSP1GwXZEm0s,5157
244
244
  frontend/js/hooks/useCourseProductUnion/index.ts,sha256=dgo4WSHmfNTO6Pl6SmsPTUJBchW73YBn47yJBmY-TrY,1892
245
245
  frontend/js/hooks/useCourseRunOrder/index.spec.tsx,sha256=OcABuwIZyV3Vlrg4ZtGaX_e5qjPkyJP-eiah2_SXreo,1864
246
246
  frontend/js/hooks/useCourseRunOrder/index.tsx,sha256=ElCBGKTZNd8qeTh6oWk9XzHLzgxWp-YEMyiauTvL2f4,931
@@ -291,7 +291,7 @@ frontend/js/hooks/useUnionResource/utils/hasIntegrity.ts,sha256=qSNyC5YRNHmEO-HH
291
291
  frontend/js/hooks/useUnionResource/utils/log.ts,sha256=WtuU71NAt7uSPZffYHVSKakmqCP5y6xvfxMwaTKMXc8,207
292
292
  frontend/js/hooks/useUnionResource/utils/syncIntegrityCount.ts,sha256=PfXwSqibnheBoS31uYSOEBqnVIhwlyk_xK_EwSMq2wQ,4573
293
293
  frontend/js/pages/DashboardAddressesManagement/DashboardAddressBox.tsx,sha256=4pH7EQLJFwADoJm7PMyH7Kf3DQyUBTK8984eCLrSd_o,2493
294
- frontend/js/pages/DashboardAddressesManagement/DashboardCreateAddress.spec.tsx,sha256=MXx5uS_lu-Kbuz8-Zlf8Dk0spFwoFhWLPh8x2UBuMKI,8537
294
+ frontend/js/pages/DashboardAddressesManagement/DashboardCreateAddress.spec.tsx,sha256=yvTinuLfA7S3Do7POdcLaRoUEiSyHKOOpegybKF4Gts,8551
295
295
  frontend/js/pages/DashboardAddressesManagement/DashboardCreateAddress.stories.tsx,sha256=uI3ss0KMPS5Q7C5SJt2LHB-v13T9LiJBIijzD4Q-9jk,697
296
296
  frontend/js/pages/DashboardAddressesManagement/DashboardCreateAddress.tsx,sha256=naAgdYeOCVKPBl0N-kjKmspeLs40rT24dKnuGCtybas,1718
297
297
  frontend/js/pages/DashboardAddressesManagement/DashboardCreateAddressLoader.tsx,sha256=RAfG3opV6KjrcdldEzaE5XB50odsfyrkIqS0M_2H4YU,482
@@ -311,7 +311,7 @@ frontend/js/pages/DashboardContracts/_styles.scss,sha256=jr_KUqAPad7MZrZni8X1m8W
311
311
  frontend/js/pages/DashboardContracts/index.spec.tsx,sha256=vDdjYlzt474wjC1Ydr6binD7ir6iWqLwhSNs1QaA88s,4350
312
312
  frontend/js/pages/DashboardContracts/index.tsx,sha256=8UitI7Eeg4Do6b48KIyUBBuRBkZIrXzqMKvutBjJ07U,2609
313
313
  frontend/js/pages/DashboardCourses/_styles.scss,sha256=wftu9zeJhpDdpgLOG4uUqJtf_13Aw7C2yW4jFc3wPfo,373
314
- frontend/js/pages/DashboardCourses/index.spec.tsx,sha256=NfwRwKm1hFc3xa6GfVcS8Vbh1tZotmYJXKaDYXOAm7Y,10458
314
+ frontend/js/pages/DashboardCourses/index.spec.tsx,sha256=jLHbLrMowCEaZDTpmir9eA967s44nPWApn6vydovEQs,10465
315
315
  frontend/js/pages/DashboardCourses/index.tsx,sha256=rtcsL4hyqwSCDpZsaxf6HK9cTaYeRSA1ULOQe0Eh8WQ,3718
316
316
  frontend/js/pages/DashboardCourses/useOrdersEnrollments.tsx,sha256=j7aBmXEBRm2g_B9wcfJchfYpHlPq8tQUZllYu7N6lGY,2280
317
317
  frontend/js/pages/DashboardCreditCardsManagement/CreditCardBrandLogo.spec.tsx,sha256=7WjnEkT5NyRl7TXneNt5agPRre22Dmd-jDsjVpiCU-w,1065
@@ -998,15 +998,15 @@ richie/apps/courses/models/organization.py,sha256=EToxJop9DRxx_grXw8OruSxq_hNOVe
998
998
  richie/apps/courses/models/person.py,sha256=_tQ3tMCwetvWwu4vwOOUOjQ_kED0FC27pP4ziU16lE4,2945
999
999
  richie/apps/courses/models/program.py,sha256=6A6hCuRmKPNbvc4Qo_MieOyg-YQsazYjcc7dPg1FDt8,1531
1000
1000
  richie/apps/courses/models/role.py,sha256=BWUhE-nE22nqaN0tdiFdutkyjcE4MEz5Es6fXOzo-9c,3585
1001
- richie/apps/courses/settings/__init__.py,sha256=5u0VmP7v_pPyHW3nYLi9uUDZUTedwaRoA74s-niXV0s,20202
1001
+ richie/apps/courses/settings/__init__.py,sha256=6gtvlopYnthBQfDKMOb8egSKWYD50gNhGkBk6ir0frc,20878
1002
1002
  richie/apps/courses/settings/mixins.py,sha256=tVkingrXH9Wykz6ybSCoT4AzXZV_ott6zv77wHjkpvc,526
1003
1003
  richie/apps/courses/static/richie/images/catalog_visibility/course_only.svg,sha256=jjE_I3eSKv8EL9SW6z9_qG2oqkfJeymCWYaxixziADo,2155
1004
1004
  richie/apps/courses/static/richie/images/catalog_visibility/hidden.svg,sha256=fg093e8TAZNZ4hY7hEbJZyBxuFL5_8Y7CYCURm52eRs,1873
1005
1005
  richie/apps/courses/templates/courses/cms/blogpost_detail.html,sha256=FZpAQFAyhf6vKzyD-68dUccP3HKEycy_JAQK-sV2-ro,11287
1006
1006
  richie/apps/courses/templates/courses/cms/blogpost_list.html,sha256=inYKIfiM6KveHec4RKnmpPf2_B-j_qN1rWI2EX7GsIE,1702
1007
- richie/apps/courses/templates/courses/cms/category_detail.html,sha256=luCoowvyJBt5gxgFo5rYQOUDke1YkQ8jSMZ7340h0_U,12882
1007
+ richie/apps/courses/templates/courses/cms/category_detail.html,sha256=IjMq-o6RpI-foLEc0WD5ZAMVUly4EapYmqpYMjSgRNc,13692
1008
1008
  richie/apps/courses/templates/courses/cms/category_list.html,sha256=j7kAF1q8Kf6_8GrNMlhTa3qmmKIuP6I44PL9838UcjE,1061
1009
- richie/apps/courses/templates/courses/cms/course_detail.html,sha256=BMjFbL98K_Qt_ETpNXqfgagZ5wY5Tw3w8XbR1X_yJag,31557
1009
+ richie/apps/courses/templates/courses/cms/course_detail.html,sha256=zlBaepOI4A7GNxaAHSyl0yHG8Q6mL2u05WVHDUCZc-U,32448
1010
1010
  richie/apps/courses/templates/courses/cms/fragment_blogpost_glimpse.html,sha256=dft1drWDvUJxWaG-20OYUeCLs8SyEZfspEsO3utbr2k,7876
1011
1011
  richie/apps/courses/templates/courses/cms/fragment_category_glimpse.html,sha256=yiGr9RS4u-Rp1TCAQ1jsZe0aZir4NJZHw8gTM5x3CrI,4659
1012
1012
  richie/apps/courses/templates/courses/cms/fragment_course_glimpse.html,sha256=HvUMwDQC-pdBNULihU6WEkuIQ7UomCgxzeRHOSo0Ng0,6325
@@ -1033,7 +1033,7 @@ richie/apps/courses/templates/courses/plugins/person.html,sha256=3DUCi4zH1RFAOW7
1033
1033
  richie/apps/courses/templates/courses/plugins/program.html,sha256=Un2rjZB5J1CYBw6LSU1XUdXhlczauKPZn6C_l9fI0kM,186
1034
1034
  richie/apps/courses/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1035
1035
  richie/apps/courses/templatetags/category_tags.py,sha256=cSwWFtxiubAPgx9kTdDoOe3XOoPNfYirxA4xjAQjOk0,2147
1036
- richie/apps/courses/templatetags/extra_tags.py,sha256=3cHfVQke07dCuuiuunQsJdBA9U6F8swH2bjHwMds0HM,11299
1036
+ richie/apps/courses/templatetags/extra_tags.py,sha256=0pXTBRfMVBPkUSD2v21edUTe9eWbvR8s9B1jSMYlucU,12448
1037
1037
  richie/apps/demo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1038
1038
  richie/apps/demo/defaults.py,sha256=5rNkofz-ReovOHi4nOlv97xLE3fShrjF6upFNhPfg8Q,16484
1039
1039
  richie/apps/demo/helpers.py,sha256=bg8RPWA-ZZme99pDswWHCpoPGZfWoFwe85fL7nv9FNA,2221
@@ -2458,9 +2458,9 @@ richie/static/richie/js/build/99716.49ad882434f8e03dd2a8.index.js,sha256=PKLluC8
2458
2458
  richie/static/richie/js/build/9986.49ad882434f8e03dd2a8.index.js,sha256=YZTuD2ZqVOt-M6_gN3COhaA9URHuY6oP9IqymHl0Idc,133
2459
2459
  richie/static/richie/js/build/99953.49ad882434f8e03dd2a8.index.js,sha256=OWoLPJnHrmvF3HBQPgXooAGo5E0yJpJ7QTFHFghJpI8,135
2460
2460
  richie/static/richie/js/build/index.js,sha256=wXJCHmuNUBUaZ7aINMu6dRAltlMcanvYiZ0_uDfDYTE,1367259
2461
- richie-2.33.1.dev1.dist-info/LICENSE,sha256=5LKjFIE1kpKzBfR2iwq_RGHhHM5XawdlfZrcHTsCLpA,1079
2462
- richie-2.33.1.dev1.dist-info/METADATA,sha256=CTDMILeWT72agtGz5i6-ZFVXVPHc9eiRqXAWVW9764A,6883
2463
- richie-2.33.1.dev1.dist-info/WHEEL,sha256=pxeNX5JdtCe58PUSYP9upmc7jdRPgvT0Gm9kb1SHlVw,109
2464
- richie-2.33.1.dev1.dist-info/top_level.txt,sha256=WJvFAAHtUQ5T5MOuG6jRynDJG9kVfl4jtuf1qxIXND8,16
2465
- richie-2.33.1.dev1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
2466
- richie-2.33.1.dev1.dist-info/RECORD,,
2461
+ richie-2.33.1.dev3.dist-info/LICENSE,sha256=5LKjFIE1kpKzBfR2iwq_RGHhHM5XawdlfZrcHTsCLpA,1079
2462
+ richie-2.33.1.dev3.dist-info/METADATA,sha256=7P_MGWpLbObmD6JBIZYTFt81CfrAv-4EGlDKKXhTNP8,6883
2463
+ richie-2.33.1.dev3.dist-info/WHEEL,sha256=pxeNX5JdtCe58PUSYP9upmc7jdRPgvT0Gm9kb1SHlVw,109
2464
+ richie-2.33.1.dev3.dist-info/top_level.txt,sha256=WJvFAAHtUQ5T5MOuG6jRynDJG9kVfl4jtuf1qxIXND8,16
2465
+ richie-2.33.1.dev3.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
2466
+ richie-2.33.1.dev3.dist-info/RECORD,,