def get_news(self, filter, user_id, start=0, limit=50): query = ( UserNews.select( News.title, News.url.alias('link'), News.id, News.publish_date, News.publish_date.alias("persian_date"), fn.Concat(Setting.rss_icon_path, Source.icon).alias('icon'), Source.title.alias('icon_title'), fn.timestampdiff(SQL('SECOND'), News.publish_date, fn.utc_timestamp()).alias('seconds'), UserNews.is_starred). #where(user_id ==None | UserNews.fk_user == user_id ). join(News, JOIN_RIGHT_OUTER).join(Feed).join(Source).where( (fn.fix_arabic_char(News.title)**fn.fix_arabic_char('%' + filter + '%')) & ((SQL('fk_user_id is null')) | (UserNews.fk_user == user_id))).naive().order_by( News.publish_date.desc()).limit(limit).execute()) #where( SQL('match(t1.title) against("'+filter+'" IN BOOLEAN MODE )') ). #, user_id != None and UserNews.fk_user==user_id for item in query: item.persian_date += datetime.timedelta( 0, Setting.persian_timezone_seconds) tt = jdatetime.datetime.fromgregorian(datetime=item.persian_date) item.persian_date = tt.strftime("%d %B %Y ساعت %H:%M") item.publish_date = pretty_date(item.seconds) return query
def get_news(self,filter,source,days,starred,user_id,start=0,limit=50): query = (UserNews.select(News.title,News.url.alias('link'),News.id,News.publish_date,News.publish_date.alias("persian_date"), fn.Concat(Setting.rss_icon_path,Source.icon).alias('icon'),Source.title.alias('icon_title'), fn.timestampdiff(SQL('SECOND'),News.publish_date,fn.utc_timestamp() ).alias('seconds'),UserNews.is_starred). #where(user_id ==None | UserNews.fk_user == user_id ). join(News,JOIN_RIGHT_OUTER).join(Feed).join(Source). where( (fn.fix_arabic_char(News.title) ** fn.fix_arabic_char('%'+filter+'%') ) & ( (SQL('fk_user_id is null')) | (UserNews.fk_user == user_id ) ) & (True if source == None or user_id==None else Source.id==source) & (True if starred == None or starred==False else UserNews.is_starred==starred) & (True if days == None or user_id==None else fn.timestampdiff(SQL('DAY'),News.publish_date,fn.utc_timestamp() )<= days ) ). naive(). order_by(News.publish_date.desc(), News.id.desc()).limit(limit). execute()) #where( SQL('match(t1.title) against("'+filter+'" IN BOOLEAN MODE )') ). #, user_id != None and UserNews.fk_user==user_id for item in query: item.persian_date += datetime.timedelta(0,Setting.persian_timezone_seconds) tt = jdatetime.datetime.fromgregorian(datetime=item.persian_date) item.persian_date = tt.strftime(u"%d %B %Y ساعت %H:%M") item.publish_date = pretty_date(item.seconds) return query
def get_news(self, filter, start=0, limit=50): query = ( News.select( News.title, News.url.alias("link"), News.id, News.publish_date, News.publish_date.alias("datey"), fn.Concat(Setting.rss_icon_path, Source.icon).alias("icon"), Source.title.alias("icon_title"), fn.timestampdiff(SQL("SECOND"), News.publish_date, fn.utc_timestamp()).alias("seconds"), ) .where(fn.fix_arabic_char(News.title) ** fn.fix_arabic_char("%" + filter + "%")) . # where( SQL('match(t1.title) against("'+filter+'" IN BOOLEAN MODE )') ). join(Feed) .join(Source) .naive() .order_by(News.publish_date.desc()) .limit(limit) .execute() ) for item in query: item.datey += datetime.timedelta(0, Setting.persian_timezone_seconds) tt = jdatetime.datetime.fromgregorian(datetime=item.datey) item.datey = tt.strftime("%d %B %Y ساعت %H:%M") item.publish_date = pretty_date(item.seconds) return query
def get_news(self,start=0,limit=50): query = (News.select(News.title,News.url.alias('link'),News.id,News.publish_date, fn.Concat(Setting.rss_icon_path,Source.icon).alias('icon'),Source.title.alias('icon_title'), fn.timestampdiff(SQL('SECOND'),News.publish_date,fn.utc_timestamp() ).alias('seconds')). join(Feed).join(Source).naive().order_by(News.publish_date.desc()).limit(limit).execute()) for item in query: item.publish_date = pretty_date(item.seconds) return query
def get_news(self, start=0, limit=50): query = (News.select( News.title, News.url.alias('link'), News.id, News.publish_date, fn.Concat(Setting.rss_icon_path, Source.icon).alias('icon'), Source.title.alias('icon_title'), fn.timestampdiff( SQL('SECOND'), News.publish_date, fn.utc_timestamp()).alias( 'seconds')).join(Feed).join(Source).naive().order_by( News.publish_date.desc()).limit(limit).execute()) for item in query: item.publish_date = pretty_date(item.seconds) return query