def get(self, request, *args, **kwargs): if request.GET.get('q', None) == "check": data = { "available": check_book_availability( request.GET.get('bookname', '').strip()) } return HttpResponse(json.dumps(data), 'application/json')
def get(self, request, *args, **kwargs): if request.GET.get('q', None) == "check": data = { "available": check_book_availability( request.GET.get('bookname', '').strip()) } return HttpResponse(json.dumps(data), 'application/json')
def form_valid(self, form): logger.debug('ImporterView::form_valid') book_file = form.cleaned_data.get('book_file') ext = get_file_extension(book_file.name) logger.debug('ImporterView::Importing file extension is "{}".'.format(ext.encode('utf8'))) default_book_title = self.get_default_title(book_file, ext) book_title = form.cleaned_data.get('book_title', default_book_title) logger.debug('ImporterView::book_title="{}" default_book_title="{}".'.format( book_title.encode('utf8'), default_book_title.encode('utf8'))) # in case book title in form is empty string if len(book_title) == 0: book_title = default_book_title if not check_book_availability(book_title): registered = Book.objects.filter(title__startswith=book_title).count() book_title = '%s %s' % (book_title, registered) logger.debug('ImporterView::Checking book availability: "{}".'.format(book_title.encode('utf8'))) book_url = booktype_slugify(book_title) book = create_book(self.request.user, book_title, book_url=book_url) logger.debug('ImporterView::Book created with url title="{}".'.format(book_url)) # check if book will be hidden and set to book book.hidden = form.cleaned_data.get('hidden') book.save() notifier = CollectNotifier() delegate = Delegate() response = {} try: book_importer = importer_utils.get_importer_module(ext) except KeyError: logger.error('ImporterView::No importer for this extension') response_data = dict(errors=[ugettext('Extension not supported!')]) return self.render_json_response(response_data) try: book_importer( book_file, book, notifier=notifier, delegate=delegate) logger.debug('ImporterView::Book imported.') response['url'] = reverse('reader:infopage', args=[book.url_title]) except Exception as e: logger.error('ImporterView::Some kind of error while importing book.') logger.exception(e) notifier.errors.append(str(e)) response['infos'] = notifier.infos response['warnings'] = notifier.warnings response['errors'] = notifier.errors return self.render_json_response(response)
def clean_title(self): if not check_book_availability(self.cleaned_data['title']): raise forms.ValidationError(_("That book already exists.")) return self.cleaned_data['title']
def clean_title(self): if not check_book_availability(self.cleaned_data['title']): raise forms.ValidationError(_("That book already exists.")) return self.cleaned_data['title']
def form_valid(self, form): logger.debug('ImporterView::form_valid') book_file = self.request.FILES['book_file'] ext = self.file_extension(book_file.name) logger.debug('ImporterView::Importing file extension is "{}".'.format(ext.encode('utf8'))) temp_file = tempfile.NamedTemporaryFile( prefix='importing-', suffix='%s' % ext, delete=False) temp_file = open(temp_file.name, 'wb+') logger.debug('ImporterView::Saving temporary file {}.'.format(temp_file.name.encode('utf8'))) for chunk in book_file.chunks(): temp_file.write(chunk) temp_file.close() temp_file = temp_file.name default_book_title = self.get_default_title(temp_file, ext) book_title = form.cleaned_data.get('book_title', default_book_title) logger.debug('ImporterView::book_title="{}"" default_book_title="{}".'.format(book_title.encode('utf8'), default_book_title.encode('utf8'))) # in case book title in form is empty string if len(book_title) == 0: book_title = default_book_title if not check_book_availability(book_title): registered = Book.objects.filter( title__startswith=book_title).count() book_title = '%s %s' % (book_title, registered) logger.debug('ImporterView::Checking book availability: "{}".'.format(book_title.encode('utf8'))) book_url = booktype_slugify(book_title) book = create_book( self.request.user, book_title, book_url=book_url) logger.debug('ImporterView::Book created with url title="{}".'.format(book_url)) # check if book will be hidden and set to book book_hidden = form.cleaned_data.get('hidden') if book_hidden: book.hidden = book_hidden book.save() logger.debug('ImporterView::Setting book hidden.') else: logger.debug('ImporterView::Setting book visible.') notifier = CollectNotifier() delegate = Delegate() response = {} try: book_importer = self.get_importer(ext) except KeyError: logger.error('ImporterView::No importer for this extension') response_data = { 'errors': [_('Extension not supported!')], } return self.render_json_response(response_data) try: book_importer( temp_file, book, notifier=notifier, delegate=delegate ) logger.debug('ImporterView::Book imported.') response['url'] = reverse('reader:infopage', args=[book.url_title]) except Exception as e: logger.error('ImporterView::Some kind of error while importing book.') logger.exception(e) notifier.errors.append(str(e)) response['infos'] = notifier.infos response['warnings'] = notifier.warnings response['errors'] = notifier.errors return self.render_json_response(response)
def form_valid(self, form): logger.debug('ImporterView::form_valid') book_file = self.request.FILES['book_file'] ext = self.file_extension(book_file.name) logger.debug('ImporterView::Importing file extension is "{}".'.format( ext.encode('utf8'))) temp_file = tempfile.NamedTemporaryFile(prefix='importing-', suffix='%s' % ext, delete=False) temp_file = open(temp_file.name, 'wb+') logger.debug('ImporterView::Saving temporary file {}.'.format( temp_file.name.encode('utf8'))) for chunk in book_file.chunks(): temp_file.write(chunk) temp_file.close() temp_file = temp_file.name default_book_title = self.get_default_title(temp_file, ext) book_title = form.cleaned_data.get('book_title', default_book_title) logger.debug( 'ImporterView::book_title="{}"" default_book_title="{}".'.format( book_title.encode('utf8'), default_book_title.encode('utf8'))) # in case book title in form is empty string if len(book_title) == 0: book_title = default_book_title if not check_book_availability(book_title): registered = Book.objects.filter( title__startswith=book_title).count() book_title = '%s %s' % (book_title, registered) logger.debug( 'ImporterView::Checking book availability: "{}".'.format( book_title.encode('utf8'))) book_url = booktype_slugify(book_title) book = create_book(self.request.user, book_title, book_url=book_url) logger.debug( 'ImporterView::Book created with url title="{}".'.format(book_url)) # check if book will be hidden and set to book book_hidden = form.cleaned_data.get('hidden') if book_hidden: book.hidden = book_hidden book.save() logger.debug('ImporterView::Setting book hidden.') else: logger.debug('ImporterView::Setting book visible.') notifier = CollectNotifier() delegate = Delegate() response = {} try: book_importer = self.get_importer(ext) except KeyError: logger.error('ImporterView::No importer for this extension') response_data = { 'errors': [_('Extension not supported!')], } return self.render_json_response(response_data) try: book_importer(temp_file, book, notifier=notifier, delegate=delegate) logger.debug('ImporterView::Book imported.') response['url'] = reverse('reader:infopage', args=[book.url_title]) except Exception as e: logger.error( 'ImporterView::Some kind of error while importing book.') logger.exception(e) notifier.errors.append(str(e)) response['infos'] = notifier.infos response['warnings'] = notifier.warnings response['errors'] = notifier.errors return self.render_json_response(response)