Пример #1
0
 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
Пример #2
0
 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)
     )
Пример #3
0
    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
Пример #4
0
 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='')
Пример #5
0
    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)
Пример #6
0
 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
Пример #7
0
 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)
Пример #8
0
 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]
Пример #9
0
 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)
Пример #10
0
 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)