コード例 #1
0
    def upload_user_image(self, request, pk=None):
        image = request.FILES.get('file', None)
        if image != None:
            obj = User.objects.get(pk=pk)
            filename, file_extension = os.path.splitext(image.name)
            image.name = "%s-%s%s" % (obj.id, str(time.time()).replace(
                '.', '-'), file_extension)
            obj.profile_image = image
            obj.save()

            # temp_thumbnail_file = NamedTemporaryFile()
            # size = 128, 128
            # try:
            #     im = Image.open(image)
            #     im.thumbnail(size)
            #     im.save(temp_thumbnail_file, "JPEG")
            # except IOError:
            #     print "cannot create thumbnail for"

            log_action(request, obj)
            response = '{"detail":"Accepted"}'
            return Response(response, status=201)

        else:
            response = '{"detail":"No Image"}'
            log_action(request)
            return Response(response, status=406)
コード例 #2
0
    def list(self, request, *args, **kwargs):
        self.queryset = self.queryset.filter(user=request.user)

        log_action(request)
        response = super(ModuleProgressViewSet,
                         self).list(request, *args, **kwargs)
        return response
コード例 #3
0
    def create(self, request, *args, **kwargs):
        if request.user.is_superuser or request.user.is_staff:
            log_action(request)
            return super(SectionImageViewSet,
                         self).create(request, *args, **kwargs)

        raise MethodNotAllowed('POST')
コード例 #4
0
    def list(self, request):
        queryset = self.queryset.filter()

        log_action(request)

        serializer = self.serializer_class(queryset,
                                           many=True,
                                           context={'request': request})
        return Response(serializer.data)
コード例 #5
0
    def retrieve(self, request, *args, **kwargs):
        log_action(request)

        if request.GET.get('full', None):
            self.serializer_class = CourseProgressFullAdminSerializer

        response = super(CourseProgressAdminViewSet,
                         self).retrieve(request, *args, **kwargs)
        return response
コード例 #6
0
    def list(self, request, *args, **kwargs):
        self.queryset = self.queryset.filter(user=request.user,
                                             course__state='PUB')
        if (request.GET.get('full', None)):
            self.serializer_class = self.full_serializer_class

        log_action(request)
        response = super(CourseProgressViewSet,
                         self).list(request, *args, **kwargs)
        return response
コード例 #7
0
 def update(self, request, *args, **kwargs):
     log_action(request)
     if request.user.is_superuser or request.user.is_staff:
         obj = self.get_object()
         if 'order' in request.data:
             if request.data['order'] != obj.order:
                 obj.to(request.data['order'])
         return super(QuizQuestionViewSet, self).update(request, *args, **kwargs)
     else:
         raise PermissionDenied()
コード例 #8
0
    def list(self, request, *args, **kwargs):
        course_progress_id = request.GET.get('course_progress_id', None)
        if course_progress_id:
            self.queryset = self.queryset.filter(
                course_progress_id=course_progress_id)

        response = super(AssessmentViewSet, self).list(request, *args,
                                                       **kwargs)
        log_action(request)
        return response
コード例 #9
0
    def create(self, request, *args, **kwargs):
        course_progress_id = request.data.get('course_progress_id', None)
        if course_progress_id:
            course_progress = CourseProgress.objects.get(pk=course_progress_id)
            request.data['user_assessed_id'] = str(course_progress.user_id)
        request.data['user_who_assessed_id'] = str(request.user.id)

        response = super(AssessmentViewSet,
                         self).create(request, *args, **kwargs)
        log_action(request)
        return response
コード例 #10
0
 def create(self, request, *args, **kwargs):
     log_action(request)
     if 'course' not in request.data:
         raise ParseError({"detail": 'Course must be in the date body.'})
     try:
         current_progress = self.get_queryset().get(course=request.data['course'], created_by=request.user)
         current_progress.last_opened = timezone.datetime.now()
         current_progress.save()
         return Response(self.get_serializer(current_progress, many=False).data)
     except ObjectDoesNotExist:
         return super(CourseProgressViewSet, self).create(request, *args, **kwargs)
コード例 #11
0
    def retrieve(self, request, *args, **kwargs):
        instance = self.get_object()
        log_action(request, instance)

        serializer = self.get_serializer(instance,
                                         context={'request': request})

        if request.GET.get('full', None):
            serializer = CourseFullSerializer(instance,
                                              context={'request': request})

        return Response(serializer.data)
コード例 #12
0
    def list(self, request):
        queryset = self.queryset.filter()

        log_action(request)
        page = self.paginate_queryset(queryset)
        if page is not None:
            serializer = self.get_serializer(page, many=True)
            return self.get_paginated_response(serializer.data)

        serializer = self.serializer_class(queryset,
                                           many=True,
                                           context={'request': request})
        return Response(serializer.data)
コード例 #13
0
    def upload_user_image(self, request, pk=None):
        response = '{"details":"Accepted"}'

        image = request.FILES.get('user_image', None)

        if image != None:
            obj = User.objects.get(pk=pk)
            obj.user_image = image
            obj.save()

        log_action(request, obj)

        return Response(response)
コード例 #14
0
    def upload_user_image(self, request, pk=None):
        self.parser_classes = (FileUploadParser, )
        response = '{"details":"Accepted"}'

        image = request.FILES.get('user_image', None)

        if image != None:
            obj = User.objects.get(pk=pk)
            obj.profile_image = image
            obj.save()

        log_action(request, obj)

        return Response(response)
コード例 #15
0
    def list(self, request, *args, **kwargs):

        if request.user.is_staff or request.user.is_superuser:
            pass
        else:
            raise PermissionDenied(
                'You do not have permission to access resource.')

        log_action(request)

        response = super(UserProfilesViewSet,
                         self).list(self, request, *args, **kwargs)

        return response
コード例 #16
0
    def list(self, request):
        queryset = self.queryset.filter()

        if request.user.pk != None:
            if request.user.userprofile != None:
                queryset = queryset.filter(pk=request.user.userprofile.pk)[0]
        else:
            raise NotAcceptable('No user profile for the current user exists.')

        log_action(request, queryset)

        serializer = self.serializer_class(queryset,
                                           many=False,
                                           context={'request': request})
        return Response(serializer.data)
コード例 #17
0
    def list(self, request, *args, **kwargs):
        if request.user.is_superuser is False and request.user.is_staff is False:
            self.queryset = self.get_queryset().filter(created_by=request.user)

        log_action(request)
        if 'course' in request.GET:
            try:
                id = UUID(request.GET.get('course', None))
            except ValueError:
                raise ParseError({"detail": "The course should be a uuid."})

            try:
                current_progress = self.get_queryset().get(course=id, created_by=request.user)
            except ObjectDoesNotExist:
                raise NotFound({"detail": "Course is not started."})
            return Response(self.get_serializer(current_progress, many=False).data)
        else:
            return super(CourseProgressViewSet, self).list(request, *args, **kwargs)
コード例 #18
0
    def list(self, request, *args, **kwargs):
        queryset = self.queryset.filter().order_by('order')

        log_action(request)
        filter = {}
        filter['specialty'] = request.GET.get('filter_specialty', None)

        if filter['specialty']:
            queryset = queryset.filter(specialty=filter['specialty'])

        page = self.paginate_queryset(queryset)
        if page is not None:
            serializer = self.get_serializer(page, many=True)
            return self.get_paginated_response(serializer.data)

        serializer = self.serializer_class(queryset,
                                           many=True,
                                           context={'request': request})
        return Response(serializer.data)
コード例 #19
0
    def list(self, request, *args, **kwargs):

        queryset = User.objects.all()
        log_action(request)
        username = request.GET.get('username', None)
        email = request.GET.get('email', None)

        if username:
            queryset = queryset.filter(username=username)
            if len(queryset) > 0:
                return Response(True)
            else:
                return Response(False)
        if email:
            queryset = queryset.filter(email=email)
            if len(queryset) > 0:
                return Response(True)
            else:
                return Response(False)

        return Response(True)
コード例 #20
0
    def current_user(self, request, *args, **kwargs):
        self.serializer_class = UserSerializer
        queryset = User.objects.all()
        user = get_object_or_404(queryset, pk=request.user.pk)

        log_action(request, user)

        if request.method == 'PUT':
            data = request.data
            data['id'] = user.id
            serializer = UserUpdateSerializer(data=data,
                                              context={'request': request})
            if serializer.is_valid():
                user = serializer.update(user, serializer.validated_data)

        if request.GET.get('full', None):
            serializer = UserFullSerializer(user, context={'request': request})
        else:
            serializer = UserSerializer(user, context={'request': request})

        return Response(serializer.data)
コード例 #21
0
    def profile(self, request, *args, **kwargs):
        lookup = {}
        try:
            UUID(kwargs['pk'], version=4)
            lookup['pk'] = kwargs['pk']
        except ValueError:
            if kwargs['pk'] == 'me':
                lookup['pk'] = request.user.pk
            else:
                lookup['username'] = kwargs['pk']

        user = User.objects.get(**lookup)

        log_action(request, user)
        if request.GET.get('full', None):
            self.serializer = UserFullSerializer(user,
                                                 context={'request': request})
        else:
            self.serializer = UserSerializer(user,
                                             context={'request': request})

        return Response(self.serializer.data)
コード例 #22
0
    def projects(self, request, *args, **kwargs):
        log_action(request)

        if request.GET.get('full', None):
            self.serializer_class = CourseProgressFullAdminSerializer

        section_id = request.GET.get('section_id', None)

        sections = CourseSection.objects.filter(
            course_section_type__title='Project')
        search = None

        if section_id is not None:
            query = {'sections': {str(section_id): {}}}
            search = Q(object__contains=query)
        else:

            for section in sections:
                query = {
                    'sections': {
                        str(section.id): {
                            'project': {
                                'done': True
                            }
                        }
                    }
                }

                if search is None:
                    search = Q(object__contains=query)
                else:
                    search = search | Q(object__contains=query)

        self.queryset = self.queryset.filter(search)

        response = super(CourseProgressAdminViewSet,
                         self).list(request, *args, **kwargs)
        return response
コード例 #23
0
    def list(self, request):
        queryset = self.queryset.filter()

        log_action(request)

        exclude = request.GET.get('exclude', None)
        search_term = request.GET.get('search_term', None)
        ids = request.GET.get('ids', None)
        if search_term:
            queryset = queryset.filter(
                Q(first_name__icontains=search_term)
                | Q(last_name__icontains=search_term))

        if ids:
            queryset = queryset.filter(id__in=ids.split(','))

        if exclude:
            queryset = queryset.exclude(id__in=exclude.split(','))

        serializer = self.serializer_class(queryset,
                                           many=True,
                                           context={'request': request})
        return Response(serializer.data)
コード例 #24
0
    def create_user(self, request, *args, **kwargs):
        self.serializer_class = UserSerializer

        if request.user.is_staff:
            request.data['user']['groups'] = dict()
            address_country = request.data['userprofile']['address_country']
            if address_country == '':
                address_country = 'US'

            if address_country != '':
                if address_country == 'USA':
                    address_country = 'US'

                if address_country == 'UK':
                    address_country = 'GB'

                address_country = Country.objects.filter(
                    Q(abbreviation__iexact=address_country)
                    | Q(name__iexact=address_country)).distinct()

                if len(address_country) > 0:
                    address_country = address_country[0].pk

                request.data['userprofile'][
                    'address_country'] = address_country

            address_state = request.data['userprofile']['address_state']
            if address_state != '':
                address_state = State.objects.filter(
                    Q(abbreviation__iexact=address_state)
                    | Q(name__iexact=address_state)).distinct()

                if len(address_state) > 0:
                    address_state = address_state[0].pk

                request.data['userprofile']['address_state'] = address_state

            # request.data['userprofile']['is_approver'] = False

            user_serializer = UserSerializer(data=request.data['user'])
            user_serializer.is_valid(raise_exception=True)

            user_obj = user_serializer.save()

            user_obj.set_password(codegenerator())
            user_obj.save()

            if user_obj:
                request.data['userprofile']['user'] = user_obj
                request.data['userprofile']['user_id'] = user_obj.pk
                user_profile_serializer = UserProfileCreateSerializer(
                    data=request.data['userprofile'])
                user_profile_serializer.is_valid(raise_exception=True)

                if user_profile_serializer.save():
                    log_action(request, user_obj)
                    return Response(
                        {
                            "details": "created",
                            "object_id": user_obj.pk
                        },
                        status=status.HTTP_201_CREATED)
                else:
                    return Response({"details": "not created"},
                                    status=status.HTTP_406_NOT_ACCEPTABLE)
            else:
                return Response({"details": "not created"},
                                status=status.HTTP_406_NOT_ACCEPTABLE)

        else:
            raise PermissionDenied(
                'You do not have permission to perform this action.')
コード例 #25
0
 def retrieve(self, request, *args, **kwargs):
     instance = self.get_object()
     log_action(request, instance)
     serializer = self.get_serializer(instance)
     return Response(serializer.data)
コード例 #26
0
 def update(self, request, *args, **kwargs):
     response = super(AssessmentViewSet,
                      self).update(request, *args, **kwargs)
     log_action(request, self.get_object())
     return response
コード例 #27
0
 def create(self, request, *args, **kwargs):
     log_action(request)
     response = super(CourseProgressAdminViewSet,
                      self).create(request, *args, **kwargs)
     return response
コード例 #28
0
 def delete(self, request, *args, **kwargs):
     log_action(request)
     if request.user.is_superuser or request.user.is_staff:
         return super(QuizViewSet, self).delete(request, *args, **kwargs)
     else:
         raise PermissionDenied()