fix: fixed creating post based on discussion restrictions settings (#34872)

This commit is contained in:
ayesha waris
2024-06-06 16:52:04 +05:00
committed by GitHub
parent 51ebabfd96
commit 8b4adaf4bd
2 changed files with 14 additions and 6 deletions

View File

@@ -108,6 +108,7 @@ class EmailString(String):
"""
Parse String with email validation
"""
def from_json(self, value):
if value:
validate_email(value)
@@ -226,6 +227,7 @@ class ProctoringProvider(String):
ProctoringProvider field, which includes validation of the provider
and default that pulls from edx platform settings.
"""
def from_json(self, value):
"""
Return ProctoringProvider as full featured Python type. Perform validation on the provider
@@ -1457,15 +1459,18 @@ class CourseBlock(
@property
def forum_posts_allowed(self):
"""
Return whether forum posts are allowed by the discussion_blackouts
setting
Return whether forum posts are allowed by the discussion_blackouts setting
Checks if posting restrictions are enabled or if there's a currently ongoing blackout period.
"""
blackouts = self.get_discussion_blackout_datetimes()
posting_restrictions = self.discussions_settings.get('posting_restrictions', 'disabled')
now = datetime.now(utc)
for blackout in blackouts:
if blackout["start"] <= now <= blackout["end"]:
return False
return True
if posting_restrictions == 'enabled':
return False
return all(not (blackout["start"] <= now <= blackout["end"]) for blackout in blackouts)
@property
def number(self):

View File

@@ -44,6 +44,7 @@ class XModuleFactoryLock(threading.local):
after ensuring that a) the modulestore will be cleaned up, and b) that XModuleFactoryLock.disable
will be called.
"""
def __init__(self):
super().__init__()
self._enabled = False
@@ -123,6 +124,7 @@ class CourseFactory(XModuleFactory):
run = kwargs.pop('run', name)
user_id = kwargs.pop('user_id', ModuleStoreEnum.UserID.test)
emit_signals = kwargs.pop('emit_signals', False)
# By default course has enrollment_start in the future which means course is closed for enrollment.
# We're setting the 'enrollment_start' field to None to reduce number of arguments needed to setup course.
# Use the 'default_enrollment_start=True' kwarg to skip this and use the default enrollment_start date.
@@ -478,6 +480,7 @@ class StackTraceCounter:
"""
A class that counts unique stack traces underneath a particular stack frame.
"""
def __init__(self, stack_depth, include_arguments=True):
"""
Arguments: