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)}
예제 #2
0
파일: views.py 프로젝트: coco369/qxh_ecp
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)
예제 #3
0
 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
예제 #4
0
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)
예제 #5
0
파일: __init__.py 프로젝트: B1aZer/ImInIt
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)
예제 #6
0
파일: models.py 프로젝트: ljdog/xpin
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)
예제 #7
0
 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
예제 #8
0
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
예제 #9
0
 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
예제 #10
0
    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
예제 #11
0
파일: __init__.py 프로젝트: B1aZer/ImInIt
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
예제 #13
0
파일: __init__.py 프로젝트: B1aZer/ImInIt
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)
예제 #14
0
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')