def get(self): query = db.session.query(db.func.month(History.played_at),Track.artist, db.func.count(History.track_id))\ .join(Track, History.track_id == Track.id, isouter=True)\ .group_by(db.func.year(History.played_at), db.func.month(History.played_at), Track.artist)\ .having(db.func.count(History.track_id) > 30)\ .order_by(db.desc(db.func.year(History.played_at)), db.desc(db.func.month(History.played_at)), db.desc(db.func.count(History.track_id))).all() current = '' count = 0 trending = set() recent = set() for item in query: if current == item[0]: if count < 3: trending.add(item[1]) count += 1 else: current = item[0] trending.add(item[1]) count = 1 if len(recent) < 4: print(item) recent.add(item[1]) return {"trending": trending, "hidden": trending.difference(recent)}
def ad_list(): page = int(request.args.get('page',1)) q = request.args.get('q','') if q: pagination = AD.query.filter(AD.name.like('%'+q+'%')).order_by(db.desc(AD.created)).paginate(page, per_page=20) else: pagination = AD.query.order_by(db.desc(AD.created)).paginate(page, per_page=20) return render_template('analytics/ad_list.html',pagination=pagination)
def get(self): # args = parser.parse_args() # order = db.desc(db.func.date(History.played_at)) if args['desc'] else db.func.date(History.played_at) query = db.session.query(db.func.year(History.played_at).label('Year'), db.func.monthname(History.played_at).label('Month'), db.func.count(History.track_id))\ .group_by('Year', 'Month')\ .order_by(db.desc('Year'), db.desc(db.func.month(History.played_at))).all() payload = [{'month': month, 'year': year, 'plays': plays} for year, month, plays in query] return payload
def ad_list(): page = int(request.args.get('page', 1)) q = request.args.get('q', '') if q: pagination = AD.query.filter(AD.name.like('%' + q + '%')).order_by( db.desc(AD.created)).paginate(page, per_page=20) else: pagination = AD.query.order_by(db.desc(AD.created)).paginate( page, per_page=20) return render_template('analytics/ad_list.html', pagination=pagination)
def index(): page = int(request.args.get('p') or 1) #query=db.session.query(Projects).order_by(db.desc('date_created')).limit(14).offset(0) query=Projects.query.order_by(db.desc('date_created')).paginate(page,14) #cats = db.session.query(Category.title, db.func.count(Category.projects)). \ #join(Category.projects).group_by(Category.title) #order_by(db.desc(db.func.count(Category.projects))) cats = db.session.query(Category.title, db.func.count(Category.title)) \ .join(Category.projects) \ .group_by(Category.title) \ .order_by(db.desc(db.func.count(Category.title))) \ .limit(14).all() return render_template('index.html',content=query, cats = cats)
class Pin(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) source = db.Column(db.String(255), nullable=False) code = db.Column(db.String(255), nullable=False) # 所在的机器 address = db.Column(db.String(255)) create_time = db.Column(db.DateTime, nullable=False, default=datetime.datetime.now) expire_time = db.Column(db.DateTime) remain_try_times = db.Column(db.Integer) user = db.relationship('User', backref=db.backref('pins', order_by=db.desc(create_time))) __table_args__ = ( UniqueConstraint('user_id', 'source', name='_user_source'), ) @classmethod def create_code(cls, length): """ 创建code :return: """ chars = '0123456789' return ''.join([random.choice(chars) for i in xrange(length)]) def __unicode__(self): return u'<%s %s-%s-%s>' % (type(self).__name__, self.user_id, self.source, self.code)
def get(self): args = parser.parse_args() order = db.desc(db.func.date(History.played_at)) if args['desc'] else db.func.date(History.played_at) query = db.session.query(db.func.date(History.played_at), db.func.count(History.track_id))\ .group_by(db.func.date(History.played_at))\ .order_by(order).all() payload = [{'date': date, 'plays': plays} for date, plays in query] return payload
def replace_top_20(current_user): bottom_20 = Podcast.query.order_by(db.desc(Podcast.id)).limit(20).all() bottom_20 = podcasts_schema.dump(bottom_20) with open('files/top_20.json', 'w') as file: json.dump(bottom_20, file) return { 'message': 'Top 20 has been replaced for Bottom 20 in files/top_20.json' }, 200
def get(self): args = parser.parse_args() order = db.desc(db.func.date(History.played_at)) if args['desc'] else db.func.date(History.played_at) query = db.session.query(db.func.date(History.played_at), db.func.count(History.track_id))\ .group_by(db.func.yearweek(History.played_at))\ .order_by(order).all() payload = [] for week, plays in query: week = week - timedelta(days=week.weekday()-6) if week.weekday() == 6 else week - timedelta(days=week.weekday()+1) payload.append({'week': week, 'plays': plays}) return payload
def get(self): args = parser.parse_args() start, end = getTimeWindow(args) limit = args['limit'] if args['limit'] else 30 query = db.session.query(Track, db.func.count(Track.id).label('n'))\ .select_from(History).join(Track, History.track_id == Track.id, isouter=True)\ .filter(db.func.date(History.played_at) > start, db.func.date(History.played_at) < end)\ .group_by(Track.id)\ .order_by(db.desc('n')).limit(limit).all() payload = [{ 'track': track, 'times_played': count } for track, count in query] return payload
def ajax(*args, **kwargs): #app. logger.debug('ajax:',someth) #if request.method == 'POST': #app.logger.debug(request.form.get('lat')) #app.logger.debug(request.form.get('lng')) if request.method == 'GET': query=db.session.query(Projects).order_by(db.desc('date_created')) #jsony(query) #qqq = query.all() projs=[] for qq in query.all(): #for q in qq: projs.append(qq.json()) if kwargs: query=Projects.query.get(kwargs['proj_id']) projs=query.json() return jsonify(result = projs) return jsonify(status='success')
def get(self): args = parser.parse_args() start, end = getTimeWindow(args) limit = args['limit'] if args['limit'] else 100 query = db.session.query(History.played_at, Track)\ .join(Track, History.track_id == Track.id, isouter=True)\ .filter(db.func.date(History.played_at) > start, db.func.date(History.played_at) < end)\ .order_by(db.desc(History.played_at)).paginate(page=args['page'], per_page=args['per_page']) # print(query.page) # print(query.pages) history_list = [{ 'played_at': played_at, 'track': track } for played_at, track in query.items] payload = { 'page': query.page, 'pages': query.pages, 'history': history_list } return payload
def cat(category): page = int(request.args.get('p') or 1) query=Projects.query. \ filter(Projects.cat.any(Category.title == category)). \ order_by(db.desc('date_created')).paginate(page,14) return render_template('index.html',content=query)
def cards(): postdata = request.get_json() attributes = postdata.get('attributes') species = postdata.get('species') stars = postdata.get('stars') monster_types = postdata.get('monster_types') spell_families = postdata.get('spell_families') trap_families = postdata.get('trap_families') archetypes = postdata.get('archetypes') search = postdata.get('search') order = postdata.get('order') or 'name' if order not in columns_from_model(model_by_tablename(db, 'cards')): abort(404) if order == 'attack': order = db.cast(MonsterCard.attack, db.Integer) if order == 'defense': order = db.cast(MonsterCard.defense, db.Integer) inverse = postdata.get('inverse') if postdata.get('inverse')!=None else False filters = [] if attributes: filters.append(MonsterCard.attribute.in_(attributes)) if species: filters.append(MonsterCard.species.in_(species)) if stars: filters.append(MonsterCard.stars.in_(stars)) if monster_types: filters.append(MonsterCard.types.any(MonsterType.value.in_(monster_types))) if spell_families: filters.append(SpellCard.spell_family.in_(spell_families)) if trap_families: filters.append(TrapCard.trap_family.in_(trap_families)) if archetypes: filters.append(Card.archetypes.any(Archetype.value.in_(archetypes))) if search: filters.append(Card.name.like('%' + search + '%')) if inverse: order = db.desc(order) if len(filters): result = db.session.query(card_plus).filter( db.and_( *filters ) ).order_by( order ).all() else: result = db.session.query(card_plus).all() response = get_paginated_list( result, '/api/cards', start=request.args.get('start', 1), limit=request.args.get('limit', 20) ) return Response(json.dumps(response), mimetype='application/json')