예제 #1
0
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()]
예제 #2
0
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()
    ]
예제 #3
0
 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
예제 #4
0
 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