Beispiel #1
0
def add_to_index(url, title, text, description):
    '''
    Add a page to our index. Add any new words as well as their locations
    on the page. If the page already exists in our index, presume it is stale.
    '''
    session = get_session()
    page_service = PageService(session)
    location_service = LocationService(session)
    word_service = WordService(session)

    existing_page = page_service.find(url=url)
    if existing_page:
        # seen this page before? keep it up to date by removing its locations
        location_service.clean_up(existing_page)
        location_service.save()
        page = existing_page
    else:
        page = page_service.new(url=url, title=title, description=description)

    for index, stem in enumerate(text.lower().split()):
        word = word_service.find(stem=stem)
        if not word:
            word = word_service.new(stem=stem)
        location_service.new(page=page, word=word, position=index)
    page_service.save()
Beispiel #2
0
def run():
    logger.info("starting Together API")
    db_session = get_session(DbConfig())
    config = get_server_config()
    api = get_api(db_session)
    Server().start(config, api)
    logger.info("started Together API")
Beispiel #3
0
def user_create_customer(values, session=None):
    if not session:
        session = get_session()
    with session.begin(subtransactions=True):
        user_ref = models.User()
        session.add(user_ref)
        user_ref.update(values)
    return user_ref
Beispiel #4
0
def exchange_create(values, session=None):
    values['created_at'] = utc_now()
    if not session:
        session = get_session()
    with session.begin(subtransactions=True):
        exchange_ref = models.Exchange()
        session.add(exchange_ref)
        exchange_ref.update(values)
    return exchange_ref
Beispiel #5
0
def merchant_create(values, session=None):
    values['created_at'] = utc_now()
    if not session:
        session = get_session()
    with session.begin(subtransactions=True):
        merchant_ref = models.Merchant()
        session.add(merchant_ref)
        merchant_ref.update(values)
    return merchant_ref
Beispiel #6
0
def activity_create(values, session=None):
    values['created_at'] = utc_now()
    if not session:
        session = get_session()
    with session.begin(subtransactions=True):
        activity_ref = models.Activity()
        session.add(activity_ref)
        activity_ref.update(values)
    return activity_ref
Beispiel #7
0
def rule_create(values, session=None):
    values['created_at'] = utc_now()
    if not session:
        session = get_session()
    with session.begin(subtransactions=True):
        rule_ref = models.Rule()
        session.add(rule_ref)
        rule_ref.update(values)
    return rule_ref
Beispiel #8
0
def customer_bind_by_serial_num(serial_num, values):
    session = get_session()
    with session.begin(subtransactions=True):
        values['created_at'] = utc_now()
        customer_ref = customer_get_by_serial_num(serial_num, session=session)
        for (key, value) in values.iteritems():
            customer_ref[key] = value
        customer_ref.save(session=session)
        return customer_ref
Beispiel #9
0
def consume_create(values, session=None):
    values['created_at'] = utc_now()
    if not session:
        session = get_session()
    with session.begin(subtransactions=True):
        consume_ref = models.Consume()
        session.add(consume_ref)
        consume_ref.update(values)
    return consume_ref
Beispiel #10
0
def goods_create(values, session=None):
    values['created_at'] = utc_now()
    if not session:
        session = get_session()
    with session.begin(subtransactions=True):
        goods_ref = models.Goods()
        session.add(goods_ref)
        goods_ref.update(values)
    return goods_ref
Beispiel #11
0
def goods_delete_by_id(goods_id):
    session = get_session()
    with session.begin(subtransactions=True):
        values = {'deleted': 1, 'deleted_at': utc_now()}
        convert_datetime(values, 'created_at', 'deleted_at', 'updated_at')
        goods_ref = goods_get_by_id(goods_id, session=session)
        for (key, value) in values.iteritems():
            goods_ref[key] = value
        goods_ref.save(session=session)
        return goods_ref
Beispiel #12
0
def user_create(values, session=None):
    if not values['created_at']:
        values['created_at'] = utc_now()
    if not session:
        session = get_session()
    with session.begin(subtransactions=True):
        user_ref = models.User()
        session.add(user_ref)
        user_ref.update(values)
    return user_ref
Beispiel #13
0
def customer_update_by_id(customer_id, values):
    session = get_session()
    with session.begin(subtransactions=True):
        values['updated_at'] = utc_now()
        convert_datetime(values, 'created_at', 'deleted_at', 'updated_at')
        customer_ref = customer_get_by_id(customer_id, session=session)
        for (key, value) in values.iteritems():
            customer_ref[key] = value
        customer_ref.save(session=session)
        return customer_ref
Beispiel #14
0
def customer_create(values, session=None):
    if not values.has_key('created_at'):
        values['created_at'] = utc_now()
    if not session:
        session = get_session()
    with session.begin(subtransactions=True):
        customer_ref = models.Customer()
        session.add(customer_ref)
        customer_ref.update(values)
    return customer_ref
Beispiel #15
0
def activity_update_by_merchant_id(merchant_id, values):
    session = get_session()
    with session.begin(subtransactions=True):
        values['updated_at'] = utc_now()
        convert_datetime(values, 'created_at', 'deleted_at', 'updated_at')
        activity_ref = activity_get_by_merchant_id(merchant_id, session=session)
        for (key, value) in values.iteritems():
            activity_ref[key] = value
        activity_ref.save(session=session)
        return activity_ref
Beispiel #16
0
def application_create(values, session=None):
    if not values['created_at']:
        values['created_at'] = utc_now()
    if not session:
        session = get_session()
    with session.begin(subtransactions=True):
        application_ref = models.Application()
        session.add(application_ref)
        application_ref.update(values)
    return application_ref
Beispiel #17
0
def goods_create(values, session=None):
    if not values['created_at']:
        values['created_at'] = utc_now()
    if not session:
        session = get_session()
    with session.begin(subtransactions=True):
        repertory_ref = models.Repertory()
        session.add(repertory_ref)
        repertory_ref.update(values)
    return repertory_ref
Beispiel #18
0
 def save(self, session=None):
     """Save this object."""
     if not session:
         session = get_session()
     session.add(self)
     try:
         session.flush()
     except IntegrityError, e:
         if str(e).endswith('is not unique'):
             raise Exception.format(str(e))
         else:
             raise
Beispiel #19
0
def model_query(*args, **kwargs):
    session = kwargs.get('session') or get_session()
    read_deleted = kwargs.get('read_deleted') or 'no'

    query = session.query(*args)

    if read_deleted == 'no':
        query = query.filter_by(deleted=False)
    elif read_deleted == 'yes':
        pass  # omit the filter to include deleted and active
    elif read_deleted == 'only':
        query = query.filter_by(deleted=True)
    else:
        raise Exception("Unrecognized read_deleted value '%s'" % read_deleted)
    return query
Beispiel #20
0
def query(key_words):
    key_words = key_words.split()
    session = get_session()
    location_service = LocationService(session)
    word_service = WordService(session)

    words = []
    pages = []
    for key_word in key_words:
        for word in word_service.find_all(stem=key_word):
            words.append(word)
            pages += word.pages

    # sort by frequency
    sorted_by_frequency = sorted(
        pages, key=lambda page: location_service.words_on_page(words, page))

    # sort by location
    sorted_by_location = sorted(pages,
                                key=lambda page: location_service.
                                highest_position_of_word(words, page))

    # sort by distance
    sorted_by_distance = sorted(
        pages,
        key=lambda page: location_service.distance_between_words(words, page))

    combined_sort = sorted(
        pages,
        key=lambda page: sorted_by_frequency.index(page) + sorted_by_location.
        index(page) + sorted_by_distance.index(page))

    session.close()
    return [{
        'url': page.url,
        'title': page.title,
        'description': page.description,
    } for page in combined_sort]
 def session(self):
     if not self._session:
         self._session=get_session()
     return self._session