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)
def load_book(request): if request.method == 'POST': load_book_form = BookEditForm(request.POST, request.FILES) if load_book_form.is_valid(): cleaned_data = load_book_form.cleaned_data book = Book(**cleaned_data) # book.cover_id = cover.id book.loaded_by_id = get_current_user_id(request) book.save() return render(request, 'book/load_book_done.html', { 'book': book, }) else: messages.error(request, 'File is not Epub!') else: load_book_form = BookEditForm() return render(request, 'book/load_book.html', { 'form': load_book_form, })