コード例 #1
0
 def search(self, flag, search_by):
     logger.info("-" * 70)
     logger.info("Survey {survey_id}, for {search_area_name}".format(
         survey_id=self.survey_id, search_area_name=self.search_area_name))
     ABSurvey.update_survey_entry(self, self.config.SEARCH_AREA_GLOBAL)
     room_count = 0
     while room_count < self.config.FILL_MAX_ROOM_COUNT:
         try:
             # get a random candidate room_id
             room_id = random.randint(0, self.config.ROOM_ID_UPPER_BOUND)
             listing = ABListing(self.config, room_id, self.survey_id)
             if room_id is None:
                 break
             else:
                 if listing.ws_get_room_info(self.config.FLAGS_ADD):
                     room_count += 1
         except AttributeError:
             logger.error("Attribute error: marking room as deleted.")
             listing.save_as_deleted()
         except Exception as ex:
             logger.exception("Error in search:" + str(type(ex)))
             raise
     self.fini()
コード例 #2
0
def main():
    """
    Main entry point for the program.
    """
    (parser, args) = parse_args()
    logging.basicConfig(format='%(levelname)-8s%(message)s')
    ab_config = ABConfig(args)
    try:
        if args.search:
            survey = ABSurveyByNeighborhood(ab_config, args.search)
            survey.search(ab_config.FLAGS_ADD)
        elif args.search_by_neighborhood:
            survey = ABSurveyByNeighborhood(ab_config, args.search_by_neighborhood)
            survey.search(ab_config.FLAGS_ADD)
        elif args.search_by_zipcode:
            survey = ABSurveyByZipcode(ab_config, args.search_by_zipcode)
            survey.search(ab_config.FLAGS_ADD)
        elif args.search_by_bounding_box:
            survey = ABSurveyByBoundingBox(ab_config, args.search_by_bounding_box)
            survey.search(ab_config.FLAGS_ADD)
        elif args.fill is not None:
            fill_loop_by_room(ab_config, args.fill)
        elif args.addsearcharea:
            db_add_search_area(ab_config, args.addsearcharea, ab_config.FLAGS_ADD)
        elif args.addsurvey:
            db_add_survey(ab_config, args.addsurvey)
        elif args.dbping:
            db_ping(ab_config)
        elif args.displayhost:
            display_host(ab_config, args.displayhost)
        elif args.displayroom:
            display_room(ab_config, args.displayroom)
        elif args.listsearcharea:
            list_search_area_info(ab_config, args.listsearcharea)
        elif args.listroom:
            listing = ABListing(ab_config, args.listroom, None)
            listing.print_from_db()
        elif args.listsurveys:
            list_surveys(ab_config)
        elif args.printsearcharea:
            ws_get_city_info(ab_config, args.printsearcharea, ab_config.FLAGS_PRINT)
        elif args.printroom:
            listing = ABListing(ab_config, args.printroom, None)
            listing.ws_get_room_info(ab_config.FLAGS_PRINT)
        elif args.printsearch:
            survey = ABSurveyByNeighborhood(ab_config, args.printsearch)
            survey.search(ab_config.FLAGS_PRINT)
        elif args.printsearch_by_neighborhood:
            survey = ABSurveyByNeighborhood(ab_config, args.printsearch_by_neighborhood)
            survey.search(ab_config.FLAGS_PRINT)
        elif args.printsearch_by_bounding_box:
            survey = ABSurveyByBoundingBox(ab_config, args.printsearch_by_bounding_box)
            survey.search(ab_config.FLAGS_PRINT)
        elif args.printsearch_by_zipcode:
            survey = ABSurveyByZipcode(ab_config, args.printsearch_by_zipcode)
            survey.search(ab_config.FLAGS_PRINT)
        else:
            parser.print_help()
    except (SystemExit, KeyboardInterrupt):
        sys.exit()
    except Exception:
        logging.exception("Top level exception handler: quitting.")
        sys.exit(0)
コード例 #3
0
 def listing_from_search_page_json(self, json, room_id):
     try:
         listing = ABListing(self.config, room_id, self.survey_id)
         # listing
         json_listing = json["listing"] if "listing" in json else None
         if json_listing is None: return None
         if "room_type" in json_listing:
             listing.room_type = json_listing["room_type"]
         else:
             listing.room_type = None
         if "user" in json_listing:
             listing.host_id = json_listing["user"]["id"]
         else:
             listing.host_id = None
         if "public_address" in json_listing:
             listing.address = json_listing["public_address"]
         else:
             listing.address = None
         if "reviews_count" in json_listing:
             listing.reviews = json_listing["reviews_count"]
         else:
             listing.reviews = None
         if "star_rating" in json_listing:
             listing.overall_satisfaction = json_listing["star_rating"]
         else:
             listing.overall_satisfaction = None
         if "person_capacity" in json_listing:
             listing.accommodates = json_listing["person_capacity"]
         else:
             listing.accommodates = None
         if "bedrooms" in json_listing:
             listing.bedrooms = json_listing["bedrooms"]
         else:
             listing.bedrooms = None
         if "bathrooms" in json_listing:
             listing.bathrooms = json_listing["bathrooms"]
         else:
             listing.bathrooms = None
         if "lat" in json_listing:
             listing.latitude = json_listing["lat"]
         else:
             listing.latitude = None
         if "lng" in json_listing:
             listing.longitude = json_listing["lng"]
         else:
             listing.longitude = None
         # The coworker_hosted item is missing or elsewhere
         listing.coworker_hosted = json_listing["coworker_hosted"] \
                 if "coworker_hosted" in json_listing else None
         # The extra_host_language item is missing or elsewhere
         listing.extra_host_languages = json_listing["extra_host_languages"] \
             if "extra_host_languages" in json_listing else None
         listing.name = json_listing["name"] \
                 if "name" in json_listing else None
         listing.property_type = json_listing["property_type"] \
                 if "property_type" in json_listing else None
         # pricing
         json_pricing = json["pricing_quote"]
         listing.price = json_pricing["rate"][
             "amount"] if "rate" in json_pricing else None
         listing.currency = json_pricing["rate"][
             "currency"] if "rate" in json_pricing else None
         listing.rate_type = json_pricing[
             "rate_type"] if "rate_type" in json_pricing else None
         return listing
     except:
         logger.exception(
             "Error in survey.listing_from_search_page_json: returning None"
         )
         sys.exit(-1)
         return None