diff --git a/xmodule/course_block.py b/xmodule/course_block.py index a74abdb3f617..a2e523fe5e12 100644 --- a/xmodule/course_block.py +++ b/xmodule/course_block.py @@ -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 @@ def get_discussion_blackout_datetimes(self): @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['posting_restrictions'] 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):