예제 #1
0
def search(params={}, batching=True, context=None, config=None):
    """Search for listings."""
    if config is None:
        config = {}
    settings = get_settings(context=context)
    search_params = {"sort_on": "last_activated_date", "reverse": "1"}
    listing_types = set(config.get("listing_type", ()))
    if listing_types:
        # Available Listing Types are restricted.
        search_listing_types = params.get("listing_type", None)
        if search_listing_types:
            search_listing_types = set(search_listing_types.split(","))
            listing_types = listing_types.intersection(search_listing_types)
        params["listing_type"] = ",".join(listing_types)
    agency_listings = params.pop("agency_listings", False)
    if agency_listings is True:
        search_params["agency_id"] = settings.get("agency_id", None)
    search_params.update(params)
    base_url = settings.get("mls_site", None)
    api_key = settings.get("mls_key", None)
    batch = None
    results = []
    resource = ListingResource(base_url, api_key=api_key)

    try:
        results, batch = resource.search(search_params)
    except MLSError, e:
        logger.warn(e)
예제 #2
0
def search(params={}, batching=True, context=None, config=None):
    """Search for listings."""
    if config is None:
        config = {}
    settings = get_settings(context=context)
    search_params = {
        'sort_on': 'last_activated_date',
        'reverse': '1',
    }
    if config.get('show_unverified', False):
        search_params['apiowner'] = settings.get('agency_id')
    listing_types = set(config.get('listing_type', ()))
    if listing_types:
        # Available Listing Types are restricted.
        search_listing_types = params.get('listing_type', None)
        if search_listing_types:
            search_listing_types = set(search_listing_types.split(','))
            listing_types = listing_types.intersection(search_listing_types)
        params['listing_type'] = ','.join(listing_types)
    agency_listings = params.pop('agency_listings', False)
    agency_priority = params.get('agency_priority', False)
    if agency_listings is True or agency_priority is True:
        agency_id = params.pop('overriding_agency_id', None)
        if not agency_id:
            agency_id = settings.get('agency_id', None)
        agency_id = agency_id.replace(' ', '')
        search_params['agency_id'] = agency_id
    search_params.update(params)
    base_url = settings.get('mls_site', None)
    api_key = settings.get('mls_key', None)
    batch = None
    results = []
    debug = api.env.debug_mode
    resource = ListingResource(base_url, api_key=api_key, debug=debug)

    try:
        results, batch = resource.search(search_params)
    except MLSError as e:
        logger.warn(e)

    if batching:
        return results, batch
    return results