|
1 | 1 | """ |
2 | 2 | Views served by the Agreements app |
3 | 3 | """ |
| 4 | +from os import times |
4 | 5 |
|
5 | 6 | from django.conf import settings |
| 7 | +from django import forms |
6 | 8 | from rest_framework import status |
7 | 9 | from rest_framework.views import APIView |
8 | 10 | from rest_framework.response import Response |
|
14 | 16 | from openedx.core.djangoapps.agreements.api import ( |
15 | 17 | create_integrity_signature, |
16 | 18 | create_lti_pii_signature, |
17 | | - get_integrity_signature, |
| 19 | + get_integrity_signature, get_user_agreement_record, create_user_agreement_record, |
18 | 20 | ) |
19 | | -from openedx.core.djangoapps.agreements.serializers import IntegritySignatureSerializer, LTIPIISignatureSerializer |
| 21 | +from openedx.core.djangoapps.agreements.serializers import IntegritySignatureSerializer, LTIPIISignatureSerializer, \ |
| 22 | + UserAgreementsSerializer |
20 | 23 |
|
21 | 24 |
|
22 | 25 | def is_user_course_or_global_staff(user, course_id): |
@@ -159,3 +162,24 @@ def post(self, request, course_id): |
159 | 162 | else: |
160 | 163 | statusStr = status.HTTP_500_INTERNAL_SERVER_ERROR |
161 | 164 | return Response(data=serializer.data, status=statusStr) |
| 165 | + |
| 166 | + |
| 167 | +class UserAgreementsView(AuthenticatedAPIView): |
| 168 | + |
| 169 | + class QueryFilterForm(forms.Form): |
| 170 | + after = forms.DateTimeField(required=False) |
| 171 | + |
| 172 | + def get(self, request, agreement_type): |
| 173 | + params = UserAgreementsView.QueryFilterForm(request.query_params) |
| 174 | + if not params.is_valid(): |
| 175 | + return Response(status=status.HTTP_400_BAD_REQUEST) |
| 176 | + record = get_user_agreement_record(request.user, agreement_type, params.cleaned_data.get('after')) |
| 177 | + if record is None: |
| 178 | + return Response(status=status.HTTP_404_NOT_FOUND) |
| 179 | + serializer = UserAgreementsSerializer(record) |
| 180 | + return Response(serializer.data) |
| 181 | + |
| 182 | + def post(self, request, agreement_type): |
| 183 | + record = create_user_agreement_record(request.user, agreement_type) |
| 184 | + serializer = UserAgreementsSerializer(record) |
| 185 | + return Response(serializer.data, status=status.HTTP_201_CREATED) |
0 commit comments