From b4f314ff59fe0ccf918e1e47bd09a6258db4af1d Mon Sep 17 00:00:00 2001 From: magnus2142 <magnus.bredeli@hotmail.com> Date: Mon, 28 Mar 2022 15:38:05 +0200 Subject: [PATCH] Created controller for courses and some of the announcement --- bbcli/controllers/announcement_controller.py | 41 ++++++++++++++++++++ bbcli/controllers/course_controller.py | 41 ++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 bbcli/controllers/announcement_controller.py create mode 100644 bbcli/controllers/course_controller.py diff --git a/bbcli/controllers/announcement_controller.py b/bbcli/controllers/announcement_controller.py new file mode 100644 index 0000000..c43810c --- /dev/null +++ b/bbcli/controllers/announcement_controller.py @@ -0,0 +1,41 @@ +from email.policy import default +import click +from bbcli.services import announcement_service +from bbcli.views import announcement_view +import os +import requests + +from bbcli.utils.utils import set_cookies, set_headers + +@click.command(name='announcements') +@click.argument('course_id', required=False) +@click.argument('announcement_id', required=False) +def list_announcements(course_id=None, announcement_id=None): + + """ + This command lists your announcements. + Either all announcements, all announcements from a spesific course, or one announcement. + """ + + bb_cookie = { + 'name':'BbRouter', + 'value': os.getenv("BB_ROUTER") + } + xsrf = {'X-Blackboard-XSRF': os.getenv('XSRF')} + user_name = os.getenv('BB_USERNAME') + + session = requests.Session() + set_cookies(session, [bb_cookie]) + set_headers(session, [xsrf]) + + response = None + + if announcement_id: + response = announcement_service.list_announcement(session, course_id, announcement_id) + announcement_view.print_course_announcements([response]) + elif course_id: + response = announcement_service.list_course_announcements(session, course_id) + announcement_view.print_course_announcements(response) + else: + response = announcement_service.list_announcements(session, user_name) + announcement_view.print_announcements(response) diff --git a/bbcli/controllers/course_controller.py b/bbcli/controllers/course_controller.py new file mode 100644 index 0000000..9a91934 --- /dev/null +++ b/bbcli/controllers/course_controller.py @@ -0,0 +1,41 @@ +from email.policy import default +import click +from bbcli.services import course_service +from bbcli.views import course_view +import os +import requests +from bbcli.utils.utils import set_cookies, set_headers + + +#, help='List a spesific course with the corresponding id' +@click.command(name='courses') +@click.argument('course_id', required=False) +@click.option('-a', '--all/--no-all', 'show_all', default=False, help='Lists all courses you have ever been signed up for') +def list_courses(course_id=None, show_all=False): + + """ + This command lists your courses, by default only the courses from + two last semesters + """ + + bb_cookie = { + 'name':'BbRouter', + 'value': os.getenv("BB_ROUTER") + } + user_name = os.getenv('BB_USERNAME') + + session = requests.Session() + set_cookies(session, [bb_cookie]) + + response = None + + if course_id: + response = course_service.list_course(session=session, course_id=course_id) + course_view.print_course(response) + else: + if show_all: + response = course_service.list_all_courses(session=session, user_name=user_name) + else: + response = course_service.list_courses(session=session, user_name=user_name) + course_view.print_courses(response) + -- GitLab