def setup_title_bar(self): md = self.backend.get_book_metadata() bar = self.ids.title_bar bar.identifier = md['identifier'] title = get_string_value_if_list(md, 'title') or u'-' creator = get_string_value_if_list(md, 'creator') or u'-' language = get_string_value_if_list(md, 'language') or u'-' menu_title = u'{}, {} ({})'.format(title, creator, language) bar.title = menu_title
def book_to_string(self, book): none_str = 'None' if book is None: return none_str identifier = book.get('identifier', None) or none_str creator = (get_string_value_if_list(book, 'creator') or get_string_value_if_list(book, 'author') or none_str) title = book.get('title', None) or none_str return ( '<identifier="{}", status="{}", title="{}", creator="{}">' .format(identifier, self.get_book_status(book), title, creator) )
def refresh_view_attrs(self, rv, index, data): super(BookRowView, self).refresh_view_attrs(rv, index, data) self.media_type = data.get('type').lower() self.identifier = data.get('identifier', None) or NONE_STR status_code = data.get('status', None) if status_code in ERROR_STATES: status_color = [1, 0, 0, 1] status_bold = True else: status_color = [0, 0, 0, 1] status_bold = False if data.get('error', None): self.color_normal = [.5, 0, 0, 0.2] else: self.color_normal = [0, 0, 0, 0] self.status = self.to_status_string(status_code) msg = data.get('msg', None) if msg: self.status = "{}".format(msg) self.status_color = status_color self.status_bold = status_bold self.operator = get_string_value_if_list(data, 'operator') or NONE_STR self.notes_count = str(data.get('notes_count', 0) or NONE_STR) self.leafs_count = str(data.get('leafs', 0) or NONE_STR) date = data.get('date', None) if date: self.date = time.strftime('%m/%d/%Y %H:%M:%S', time.localtime(date)) else: self.date = NONE_STR date_last_modified = data.get('date_last_modified', None) if date_last_modified: self.date_last_modified = time.strftime( '%m/%d/%Y %H:%M:%S', time.localtime(date_last_modified)) else: self.date_last_modified = NONE_STR date_created = data.get('date_created', None) if date_created: self.date_created = time.strftime('%m/%d/%Y %H:%M:%S', time.localtime(date_created)) else: self.date_created = NONE_STR tracking_field = 'boxid' if config.is_true( 'show_boxid') else 'shiptracking' self.shiptracking_id = \ get_string_value_if_list(data, tracking_field) or NONE_STR self._id_exist = self.identifier != NONE_STR and not self.disabled
def _get_sorting_value(self, book): key = self.sort_key value = get_string_value_if_list(book, key) return get_sorting_value(value, key, number_keys=self.NUMBER_KEYS, default_value='')
def set_metadata(self, md): ids = self.ids ids.datetime.text = md['datetime'].strftime('%Y-%m-%d %H:%M') ids.operator.text = (md.get('operator', None) or NONE_STR) \ .replace('@archive.org', '', 1) ids.scanner.text = (md.get('scanner', None) or NONE_STR) \ .replace('@archive.org', '', 1) text = ('Box: [size={}][b]{}[/b][/size]'.format( int(sp(20)), md.get('boxid', None) or NONE_STR)) ids.boxid.text = text text = ('Orig pallet: [size={}][b]{}[/b][/size]'.format( int(sp(20)), md.get('old_pallet', None) or NONE_STR)) ids.original_pallet.text = text identifier = md.get('identifier', None) ids.title_identifier.text = identifier or NONE_STR url = DETAILS_URL + identifier if identifier else NONE_STR ids.url.text = url self.set_qr_image(url, ids.qr_label) ids.identifier.text = identifier or NONE_STR ids.title.text = self.purify_string(md.get('title', None)) or 'Unknown title' creator = (self.purify_string( get_string_value_if_list(md, 'creator', u'; ')) or 'Unknown creator') ids.creator.text = 'by [b]{}[/b]'.format(creator) ids.pages.text = ('[b]{}[/b] pages'.format( md.get('pages', None) or NONE_STR)) self.set_isbn_image(self._isbn, ids.isbn_label)
def make_identifier_from_metadata(self): self.dispatch_progress('Creating new identifier from metadata') self.identifier = result = make_identifier( title=self.book.metadata.get('title', None) or 'unset', volume=self.book.metadata.get('volume', None) or '00', creator=get_string_value_if_list(self.book.metadata, 'creator') or 'unset') return result
def _create_identifier(self): self.dispatch_progress('Creating identifier') self.identifier = identifier = make_identifier( title=self.metadata.get('title', None) or 'unset', volume=self.metadata.get('volume', None) or '00', creator=get_string_value_if_list(self.metadata, 'creator') or 'unset' ) self.dispatch_progress('Setting identifier to {}'.format(identifier)) with open(join(self.book.path, 'identifier.txt'), 'w') as fd: fd.write(identifier)
def _ensure_identifier(self): self.dispatch_progress('Ensuring identifier') metadata = self.metadata or {} creator = metadata.get('creator', None) or 'unset' title = metadata.get('title', None) or 'unset' volume = metadata.get('volume', None) or '00' if not self.identifier: self.dispatch_progress('Creating new identifier') self.identifier = identifier = make_identifier( title, volume, get_string_value_if_list(metadata, 'creator') or 'unset' ) self.dispatch_progress('Created new identifier: {}' .format(identifier)) self._target_title = title self._target_creator = \ creator if isinstance(creator, list) else [creator]
def refresh_view_attrs(self, rv, index, data): self.index = index self.selected = False self.title = get_string_value_if_list(data, 'title') or NONE_STR self.creator = get_string_value_if_list(data, 'creator') or NONE_STR self.disabled = data.get('processed', False)
def _handle_marc_response(self): progress = self.dispatch_progress response = self._marc_response book_path = self.book_path if response['sts'] == 'OK': progress('Found MARC data for this book. Writing MARCXML') with open(join(book_path, 'marc.xml'), 'w+') as fd: fd.write(response['marc_xml'].encode('utf-8')) progress('Writing MARC binary') with open(join(book_path, 'marc.bin'), 'wb+') as fd: marcbin = bytes(response['marc_binary'].encode('utf-8')) fd.write(marcbin) self.metadata = md = response['extracted_metadata']['metadata'] for key in list(md.keys()): if self.metadata[key] in ['', None]: self.metadata.pop(key) for key, value in self.metadata.items(): if type(value) is dict: dict_as_list = list(value.values()) self.metadata[key] = dict_as_list if 'isbn' in self.metadata: if self.metadata['isbn'] in [None, 'None']: self.metadata['isbn'] = '{}'.format(self.isbn) elif type(self.metadata['isbn']) == list: if self.isbn not in self.metadata['isbn']: self.metadata['isbn'].append(self.isbn) elif type(self.metadata['isbn']) == str: self.metadata['isbn'] = [self.metadata['isbn'], self.isbn] else: self.metadata['isbn'] = '{}'.format(self.isbn) if self.volume: self.metadata['volume'] = self.volume if self.extra: for field in ['boxid', 'old_pallet']: value = [ x['value'] for x in self.extra if x['key'] == field ][0] self.metadata[field] = value progress('Saving metadata') # TODO: Regression: Only metadata from form should be saved? # Check CaptureScreen.download_and_save_marc method set_metadata(self.metadata, book_path) progress('Creating new identifier') self.identifier = identifier = make_identifier( title=self.metadata.get('title', None) or 'unset', volume=self.metadata.get('volume', None) or '00', creator=get_string_value_if_list(self.metadata, 'creator') or 'unset') progress('Setting identifier to {}'.format(identifier)) with open(join(book_path, 'identifier.txt'), 'w') as fd: fd.write(identifier) else: self.marc_download_failed = True self.identifier = identifier = 'isbn_' + self.isbn if self.volume and self.volume != '0': self.identifier = identifier = 'isbn_{}_{}'.format( self.isbn, self.volume) progress('No MARC record found for this book. ' 'Setting identifier to {}'.format(identifier)) with open(join(book_path, 'identifier.txt'), 'w+') as fd: fd.write(identifier) with open(join(book_path, scribe_globals.ORIGINAL_ISBN_FILENAME), 'w+') as fd: fd.write(self.isbn)