def initialize_fields(self): super().initialize_fields() if not is_course_id_valid(self.session): logger.error( "Course ID %s does not seem to be a valid Blackboard course", self.session.course_id) raise SystemExit(1)
def execute_from_command_line(cls): parser = cls.get_argument_parser() args = parser.parse_args() blackboard.configure_logging(quiet=args.quiet) not_implemented = [] try: try: course = cls.get_course(args) except NotImplementedError: not_implemented.append('Grading.get_course') try: username = cls.get_username(args) except NotImplementedError: not_implemented.append('Grading.get_username') except Exception as exn: parser.error(str(exn)) if not_implemented: parser.error("You must implement %s" % ' and '.join(not_implemented)) session = cls.session_class('cookies.txt', username, course) grading = cls(session) grading.override_get_password(args) try: grading.load('grading.json') grading.main(args, session, grading) except ParserError as exn: logger.error("Parsing error") print(exn) exn.save() except BadAuth: logger.error("Bad username or password. Forgetting password.") session.forget_password() except Exception: logger.exception("Uncaught exception") else: grading.save('grading.json') session.save_cookies()