def get_versions(recipe_id): data_tip_id = db.session.query(db.Recipe).get(recipe_id).data_id included_parts = db.session.query(db.RecipeData).\ filter(db.RecipeData.id==data_tip_id).\ cte(name='included_parts', recursive=True) incl_alias = db.aliased(included_parts, name="pr") parts_alias = db.aliased(db.RecipeData, name='p') included_parts = included_parts.union_all( db.session.query(parts_alias).filter(parts_alias.id==incl_alias.c.parent_id) ) return db.session.query(included_parts.c.id, included_parts.c.message).filter(db.RecipeData.id==data_tip_id).all() return [x[0] for x in db.session.query(included_parts.c.id).filter(db.RecipeData.id==data_tip_id).all()]
def get_versions(recipe_id): data_tip_id = db.session.query(db.Recipe).get(recipe_id).data_id included_parts = db.session.query(db.RecipeData).\ filter(db.RecipeData.id==data_tip_id).\ cte(name='included_parts', recursive=True) incl_alias = db.aliased(included_parts, name="pr") parts_alias = db.aliased(db.RecipeData, name='p') included_parts = included_parts.union_all( db.session.query(parts_alias).filter( parts_alias.id == incl_alias.c.parent_id)) return db.session.query(included_parts.c.id, included_parts.c.message).filter( db.RecipeData.id == data_tip_id).all() return [ x[0] for x in db.session.query(included_parts.c.id).filter( db.RecipeData.id == data_tip_id).all() ]
def concept_frequency( self, symbol, count ): concept = db.Concept.by_symbol( symbol ) ac1 = db.aliased( db.ArticleConcept ) ac2 = db.aliased( db.ArticleConcept ) result = db.session().query( ac1, db.func.sum( ac1.relevance ) )\ .join( ac2, ac1.article_id == ac2.article_id )\ .filter( ac2.concept_id == concept.id )\ .filter( ac1.concept_id != concept.id )\ .group_by( ac1.concept_id )\ .limit( count )\ .all() result = sorted( [ [freq, c1.concept.symbol, c1.concept.text] for c1, freq in result ], reverse = True ) return result
def build_query( query, date ): # TODO: probably extend to multiple symbols if symbol != None: concept = db.Concept.by_symbol( symbol ) query = query.join( db.Article.concept_info ) query = query.filter( db.ArticleConcept.concept == concept ) if filter != "": for f in filter.split(): ac_alias = db.aliased( db.ArticleConcept ) c_alias = db.aliased( db.Concept ) query = query.join( ac_alias, db.Article.concept_info )\ .join( c_alias, ac_alias.concept )\ .filter( c_alias.text.like( "%%%s%%" % f ) ) if date != None: if type( date ) == str: date = datetime.datetime.strptime( date, "%d/%m/%Y" ) query = query.filter( db.Article.date == date.date() ) if not descending: query = query.order_by( getattr( db.Article, sort_by ).asc() ) else: query = query.order_by( getattr( db.Article, sort_by ).desc() ) query = query.distinct() return query