Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: linting as a separate commit #36179

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
This management command will manually trigger the receivers we care about. (We don't want to trigger all receivers
for these signals, since these are busy signals.)
"""

import logging
import shlex

Expand Down Expand Up @@ -58,105 +59,106 @@ class Command(BaseCommand):
course-v1:edX+RecordsSelfPaced+1 for user 17
course-v1:edX+RecordsSelfPaced+1 for user 18
"""

help = (
"Simulate certificate/grade changes without actually modifying database "
"content. Specifically, trigger the handlers that send data to Credentials."
)

def add_arguments(self, parser):
parser.add_argument(
'--dry-run',
action='store_true',
help='Just show a preview of what would happen.',
"--dry-run",
action="store_true",
help="Just show a preview of what would happen.",
)
parser.add_argument(
'--site',
"--site",
default=None,
help="Site domain to notify for (if not specified, all sites are notified). Uses course_org_filter.",
)
parser.add_argument(
'--courses',
nargs='+',
help='Send information only for specific course runs.',
"--courses",
nargs="+",
help="Send information only for specific course runs.",
)
parser.add_argument(
'--program_uuids',
nargs='+',
help='Send user data for course runs for courses within a program based on program uuids provided.',
"--program_uuids",
nargs="+",
help="Send user data for course runs for courses within a program based on program uuids provided.",
)
parser.add_argument(
'--start-date',
"--start-date",
type=parsetime,
help='Send information only for certificates or grades that have changed since this date.',
help="Send information only for certificates or grades that have changed since this date.",
)
parser.add_argument(
'--end-date',
"--end-date",
type=parsetime,
help='Send information only for certificates or grades that have changed before this date.',
help="Send information only for certificates or grades that have changed before this date.",
)
parser.add_argument(
'--delay',
"--delay",
type=float,
default=0,
help="Number of seconds to sleep between processing queries, so that we don't flood our queues.",
)
parser.add_argument(
'--page-size',
"--page-size",
type=int,
default=100,
help="Number of items to query at once.",
)
parser.add_argument(
'--auto',
action='store_true',
help='Use to run the management command periodically',
"--auto",
action="store_true",
help="Use to run the management command periodically",
)
parser.add_argument(
'--args-from-database',
action='store_true',
help='Use arguments from the NotifyCredentialsConfig model instead of the command line.',
"--args-from-database",
action="store_true",
help="Use arguments from the NotifyCredentialsConfig model instead of the command line.",
)
parser.add_argument(
'--verbose',
action='store_true',
help='Run grade/cert change signal in verbose mode',
"--verbose",
action="store_true",
help="Run grade/cert change signal in verbose mode",
)
parser.add_argument(
'--notify_programs',
action='store_true',
help='Send program award notifications with course notification tasks',
"--notify_programs",
action="store_true",
help="Send program award notifications with course notification tasks",
)
parser.add_argument(
'--user_ids',
"--user_ids",
default=None,
nargs='+',
help='Run the command for the given user or list of users',
nargs="+",
help="Run the command for the given user or list of users",
)
parser.add_argument(
'--revoke_program_certs',
action='store_true',
help="If true, system will check if any program certificates need to be revoked from learners"
"--revoke_program_certs",
action="store_true",
help="If true, system will check if any program certificates need to be revoked from learners",
)

def get_args_from_database(self):
""" Returns an options dictionary from the current NotifyCredentialsConfig model. """
"""Returns an options dictionary from the current NotifyCredentialsConfig model."""
config = NotifyCredentialsConfig.current()
if not config.enabled:
raise CommandError('NotifyCredentialsConfig is disabled, but --args-from-database was requested.')
raise CommandError("NotifyCredentialsConfig is disabled, but --args-from-database was requested.")

# This split will allow for quotes to wrap datetimes, like "2020-10-20 04:00:00" and other
# arguments as if it were the command line
argv = shlex.split(config.arguments)
parser = self.create_parser('manage.py', 'notify_credentials')
return parser.parse_args(argv).__dict__ # we want a dictionary, not a non-iterable Namespace object
parser = self.create_parser("manage.py", "notify_credentials")
return parser.parse_args(argv).__dict__ # we want a dictionary, not a non-iterable Namespace object

def handle(self, *args, **options):
if options['args_from_database']:
if options["args_from_database"]:
options = self.get_args_from_database()

if options['auto']:
options['end_date'] = datetime.now().replace(minute=0, second=0, microsecond=0)
options['start_date'] = options['end_date'] - timedelta(hours=4)
if options["auto"]:
options["end_date"] = datetime.now().replace(minute=0, second=0, microsecond=0)
options["start_date"] = options["end_date"] - timedelta(hours=4)

log.info(
f"notify_credentials starting, dry-run={options['dry_run']}, site={options['site']}, "
Expand All @@ -176,14 +178,9 @@ def handle(self, *args, **options):
course_runs.extend(program_course_run_keys)

course_run_keys = self._get_validated_course_run_keys(course_runs)
if not (
course_run_keys or
options['start_date'] or
options['end_date'] or
options['user_ids']
):
if not (course_run_keys or options["start_date"] or options["end_date"] or options["user_ids"]):
raise CommandError(
'You must specify a filter (e.g. --courses, --program_uuids, --start-date, or --user_ids)'
"You must specify a filter (e.g. --courses, --program_uuids, --start-date, or --user_ids)"
)

handle_notify_credentials.delay(options, course_run_keys)
Expand Down
Loading