예제 #1
0
 def check_cover_confirmed(self, div, anchor):
     """Check whether the current book cover is user-confirmed."""
     # For some reason clicking on the anchor doesn't work; we have to click
     # on the image element
     icon = anchor.find_element_by_css_selector('img.icon')
     logger.debug("Clicking cover info button")
     self.driver.execute_script(
         "arguments[0].scrollIntoView({block: 'center'});", div)
     ActionChains(self.driver).move_to_element(div) \
         .move_to_element(icon).click(icon).perform()
     lb_content = self.wait_for_lb()
     confirmed = None
     confirm_div = try_find(lb_content.find_element_by_css_selector,
                            '.coverinfo > div.alwaysblue:nth-child(1)')
     if confirm_div:
         if try_find(confirm_div.find_element_by_id, 'changecover_confirm'):
             logger.debug("Found cover is not confirmed")
             confirmed = False
         elif try_find(confirm_div.find_element_by_css_selector,
                       'img.icon[src$="tick.png"]'):
             logger.debug("Found cover is confirmed")
             confirmed = True
     if confirmed is None:
         logger.warning("Unable to determine cover confirmation status")
     self.close_lb(lb_content, "Closing cover info lightbox")
     return confirmed
예제 #2
0
 def get_dewey(self):
     """Get book DDC if manually set."""
     elt = try_find(self.driver.find_element_by_id, 'bookedit_dewey')
     if not elt or not elt.is_displayed():
         return None
     value = elt.text
     logger.debug("Found Dewey value: %r", value)
     return value
예제 #3
0
 def get_lexile(self):
     """Get book lexile value."""
     elt = try_find(self.driver.find_element_by_id, 'bookedit_lexile')
     if not elt:
         return None
     value = elt.text
     logger.debug("Found Lexile value: %r", value)
     return value
예제 #4
0
 def get_from_where(self):
     """Get book venue information."""
     div = try_find(self.driver.find_element_by_class_name, 'xlocation')
     if not div:
         logger.debug("'From where' field not found")
         return None
     name = div.text
     if not name:
         return {'name': ''}
     anchor = try_find(div.find_element_by_css_selector, '.xlocation > a')
     if anchor:
         # Parse venue link
         href = urlparse(anchor.get_attribute('href'))
         venue_id = self.venue_path_re.match(href.path).group(1)
         logger.debug("Found 'From where' field %r, venue id %r", name,
                      venue_id)
         return {'name': name, 'venue_id': venue_id}
     else:
         # Free text
         logger.debug("Found 'From where' field %r, free text", name)
         return {'name': name}
예제 #5
0
 def get_reading_dates(self):
     """Get list of reading dates."""
     dates = []
     div = try_find(self.driver.find_element_by_id, 'startedfinished')
     if not div:
         return dates
     for row in div.find_elements_by_css_selector('tr[id^="xSF"]'):
         std, ftd = row.find_elements_by_tag_name('td')
         started = std.text.strip()
         finished = ftd.text.strip()
         logger.debug("Found reading dates: %r, %r", started, finished)
         dates.append({'started': started, 'finished': finished})
     return dates