Exemple #1
0
    def create_or_update(self, request, *args, **kwargs):
        post_params = dict(copy(request.POST))
        create = strtobool(post_params.pop('create', True)[0])
        book = Book(**post_params)

        result = {
            'success': False,
            'error_message': '',
        }

        try:
            book.file = request.FILES['file']
        except KeyError:
            result['error_message'] = ('Файл с книгой не обнаружен!')
            return Response(result)
        book.cover = request.FILES.get('cover', None)
        book.pk = kwargs.pop('pk')
        book.loaded_by_id = request.user.profile.id

        if create:
            try:
                book.save()
                FavouriteBooks.objects.create(
                    profile_id=request.user.profile.id,
                    book_id=book.id,
                )
            except IntegrityError as ex:
                result['error_message'] = 'Книга с подобным id уже загружена!'
                return Response(result)
        else:
            book.loaded_date = datetime.now()
            book.save()
            result['success'] = True

        return Response(result)