diff --git a/ocfweb/api/paper.py b/ocfweb/api/paper.py new file mode 100644 index 00000000..542ec767 --- /dev/null +++ b/ocfweb/api/paper.py @@ -0,0 +1,28 @@ +from django.http import HttpRequest +from django.http import HttpResponse +from django.http import HttpResponseBadRequest +from django.http import JsonResponse +from django.views.decorators.http import require_POST +from ocflib.printing.quota import get_connection +from ocflib.printing.quota import get_quota + +from ocfweb.auth import login_required +from ocfweb.component.session import logged_in_user + + +@require_POST +@login_required +def paper_quota(request: HttpRequest) -> HttpResponse: + try: + user = logged_in_user(request) + + with get_connection() as c: + quota = get_quota(c, user) + return JsonResponse({ + 'user': quota.user, + 'daily': quota.daily, + 'semesterly': quota.semesterly, + }) + + except (KeyError, ValueError) as e: + return HttpResponseBadRequest(e) diff --git a/ocfweb/api/urls.py b/ocfweb/api/urls.py index 8b831736..34017ec1 100644 --- a/ocfweb/api/urls.py +++ b/ocfweb/api/urls.py @@ -4,6 +4,7 @@ from ocfweb.api import hours from ocfweb.api import lab from ocfweb.api import meeting_hours +from ocfweb.api import paper from ocfweb.api import session_tracking from ocfweb.api import shorturls from ocfweb.api import staff_hours @@ -25,4 +26,5 @@ path('lab/mirrors_showcase', stats.get_mirrors_showcase, name='get_mirrors_showcase'), path('session/log', session_tracking.log_session, name='log_session'), path('shorturl/', shorturls.bounce_shorturl, name='bounce_shorturl'), + path('quotas/paper', paper.paper_quota, name='paper_quota'), ]