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()
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")
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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