Skip to content
Snippets Groups Projects
Commit aa988e49 authored by Mattias Eggen's avatar Mattias Eggen
Browse files

Added get_assignments

parent a16bc810
No related branches found
No related tags found
No related merge requests found
......@@ -13,6 +13,7 @@ import click
from bbcli.commands.courses import list_courses
from bbcli.commands.announcements import list_announcements, create_announcement, delete_announcement, update_announcement
from bbcli.commands.assignments import get_assignments
from bbcli.commands.contents import list_contents, create_content
from bbcli.services.authorization_service import login
......@@ -70,6 +71,17 @@ announcements.add_command(create_announcement)
announcements.add_command(delete_announcement)
announcements.add_command(update_announcement)
@entry_point.group()
@click.pass_context
def assignments(ctx):
"""
Commands for creating, listing and submitting assignments.
"""
pass
assignments.add_command(get_assignments)
"""
CONTENT COMMANDS ENTRY POINT
"""
......
from email.policy import default
import click
from bbcli.services import assignment_service
@click.command(name='get')
@click.argument('course_id', required=True, default='_27251_1')
@click.pass_context
def get_assignments(ctx, course_id):
"""
Get assignments
"""
response = assignment_service.get_assignments(ctx.obj['SESSION'], course_id)
\ No newline at end of file
from datetime import timezone
import json
import click
import requests
import dateutil.parser
from bbcli.utils.URL_builder import URL_builder
url_builder = URL_builder()
def get_assignments(session: requests.Session, course_id):
url = url_builder.base_v1().add_courses().add_id(
course_id).add_gradebook().add_columns().create()
response = session.get(url)
response = json.loads(response.text)
results = response['results']
print_assignments(results)
def print_assignments(assignments):
for i in range(len(assignments)):
name = assignments[i]['name']
if ('grading' in assignments[i]):
if ('due' in assignments[i]['grading']):
due = assignments[i]['grading']['due']
due_datetime = utc_to_local(dateutil.parser.parse(due))
date = str(due_datetime.date())
time = str(due_datetime.time())
due = f'{date} {time}'
click.echo('{:<40s} due {:<10s}'.format(name, due))
else:
due = 'N/A'
click.echo('{:<40s} due {:<10s}'.format(name, due))
def utc_to_local(utc_dt):
return utc_dt.replace(tzinfo=timezone.utc).astimezone(tz=None)
......@@ -63,6 +63,14 @@ class Builder(ABC):
def add_id(self, id: str, id_type: str = None) -> Builder:
pass
@abstractmethod
def add_gradebook(self) -> Builder:
pass
@abstractmethod
def add_columns(self) -> Builder:
pass
class URL_builder(Builder):
......@@ -128,6 +136,14 @@ class URL_builder(Builder):
self._product.add(f'/{id}')
return self
def add_gradebook(self) -> Builder:
self._product.add('/gradebook')
return self
def add_columns(self) -> Builder:
self._product.add('/columns')
return self
def create(self) -> str:
url = self._product.get_url()
self._product = URL()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment