Since code-annotations==0.7.0, incremental_release, launch_date,
monitored_rollout, graceful_degradation, beta_testing are all considered
as "temporary" use cases.
* Add remote IP to logging config
Add a new filter to get the remote IP for the current
request and include it in log statements
SEG-34
* Added line for formatting
Added line for formatting
SEG-34
Instead of going up the stacktrace to find the module names of waffle
flags and switches, we manually pass the module __name__ whenever the
flag is created. This is similar to `logging.getLogger(__name__)`
standard behaviour.
As the waffle classes are used outside of edx-platform, we make the new
module_name argument an optional keyword argument. This will change once
we pull waffle_utils outside of edx-platform.
Note that the module name is normally only required to view the list of
existing waffle flags and switches. The module name should not be
necessary to verify if a flag is enabled. Thus, maybe it would make
sense to create a `add` class methor similar to:
class WaffleFlag:
@classmethod
def add(cls, namespace, flag, module):
instance = cls(namespace, flag)
cls._class_instances.add((instance, module))
Commit 3222d3fd13 (LEARNER-5987)
introduced the ENABLE_LEARNER_RECORDS site configuration flag, but
incorrectly referred to it as ENABLE_CREDENTIALS_RECORDS in the
documentation for the credentials service.
Fix the reference with the correct flag name.
This function to search for themes dirs needs to be able to recover
gracefully if the base dirs do not exist. This is NOT the app check,
it's just a themes collector---the app check will *properly* report an
error if the base dir does not exist.
DENG-379
Reuse of the variable paid_modes was causing the code to follow an
incorrect path. Changed the filtering version of the variable to
paid_modes_only. Had to keep both variables temporarily until I can fix
plugin code that uses this API.
The main difference between how instructor-paced and self-paced courses
work with respect to the outline on the backend is how we treat the
hide_after_due attribute on subsections (sequences). Namely, self-paced
courses ignore due dates even if they are specified on the sequence
(for example, by OLX import). If hide_after_due is True in a self-paced
course sequence, we only make it inaccessible after the entire course
ends.
This was tracked as BD-29 and TNL-7262.
Checking if a user was enrolled in a program type was using the `name`
field which is subject to be translated. This change allows for us to check by
the type's slug which will be constant. This also includes the addition
of api.py files for the course_modes, catalog, and programs apps.
- send course emails to users based on whichever date is later,
sedule start date or course start date. This addresses the
scenario when a user enrolls in a self paced course before it
has actually started.
Adds the following additions to the toggle state endpoint:
- course override data from CourseWaffleFlag.
- computed_status for waffle flags (accounting for
course overrides when applicable), and waffle switches.
Note: the waffle switch computed_status will make more
sense when we include WaffleSwitch instances that don't
have any data in the database.
ARCHBOM-1429
ARCHBOM-1366
by overriding can_load_courseware if the MFE is disabled for the user
If the user would be allowed to see the courseware MFE
(can_load_courseware), we check whether the MFE is disabled for them,
based on global settings, course settings (mongo courses), or their
particular bucketing in our ExperimentWaffleFlag.
If we determine they shouldn’t be allowed to see it, we return a new
CoursewareMicrofrontendDisabledAccessError access response, which the
MFE will use to know it should redirect to the old LMS experience.
Fixes: TNL-7362
Co-authored-by: stvn <stvn@mit.edu>