def get(self): stats = Stats() stats.nr_of_users = 0 stats.nr_of_active_users = 0 try: stats.nr_of_playlists = Playlist.all(keys_only=True).count(read_policy=EVENTUAL_CONSISTENCY) except: pass stats.nr_of_users_with_flattr_account = 0 stats.nr_of_users_with_dropbox = 0 try: stats.nr_of_flattrs = Activity.all().filter('type =', 'outgoing').filter('verb =', 'flattr').count(read_policy=EVENTUAL_CONSISTENCY) except: pass stats.nr_of_playlist_subscriptions = 0 try: stats.nr_of_follow_relations = FollowRelation.all(keys_only=True).count(read_policy=EVENTUAL_CONSISTENCY) except: pass try: for user in YoutifyUser.all(): stats.nr_of_users += 1 if user.flattr_user_name: stats.nr_of_users_with_flattr_account += 1 if user.dropbox_user_name: stats.nr_of_users_with_dropbox += 1 if user.playlist_subscriptions: stats.nr_of_playlist_subscriptions += len(user.playlist_subscriptions) if user.last_login: delta = datetime.now() - user.last_login if delta.seconds < 3600 * 24 * 7: stats.nr_of_active_users += 1 except: pass pings = [] last_ping = None try: for m in PingStats.all().order('-date').fetch(6*24*7): if last_ping is not None and last_ping.date.hour is not m.date.hour: pings.append({ 'date': str(last_ping.date), 'pings': last_ping.pings }) last_ping = m elif last_ping is None or m.pings > last_ping.pings: last_ping = m except: pass stats.pings = simplejson.dumps(pings) stats.put()
def post(self): user = get_current_youtify_user_model() nickname = self.request.get('nickname', user.nickname) first_name = self.request.get('first_name', user.first_name) last_name = self.request.get('last_name', user.first_name) tagline = self.request.get('tagline', user.tagline) if nickname and not re.match('^[A-Za-z0-9_]{1,36}$', nickname): self.error(400) self.response.out.write('Nickname must be 1-36 alphanumerical characters (no whitespace)') return if nickname and nickname in BLOCKED_NICKNAMES: self.error(400) self.response.out.write('That nickname is not allowed.') return for u in YoutifyUser.all().filter('nickname_lower = ', nickname.lower()): if str(u.key().id()) != str(user.key().id()): self.error(409) self.response.out.write('Nickname is already taken') return user.nickname = nickname user.nickname_lower = nickname.lower() user.first_name = first_name user.last_name = last_name user.tagline = tagline user.save() self.response.headers['Content-Type'] = 'text/plain' self.response.out.write(get_display_name_for_youtify_user_model(user))
def get_youtify_user_by_email(email): try: youtify_user = YoutifyUser.all().filter('google_user =', User(email)).get() if youtify_user: return youtify_user except: pass
def get(self): q = self.request.get('q') ret = [] for m in YoutifyUser.all().search(q, properties=['nickname', 'flattr_user_name', 'first_name', 'last_name', 'tagline']): ret.append(get_youtify_user_struct(m)) self.response.headers['Content-Type'] = 'application/json' self.response.out.write(simplejson.dumps(ret))
def get(self): json = simplejson.dumps({ 'nr_of_users': len([i for i in YoutifyUser.all().filter('flattr_access_token !=', None)]), 'nr_of_flattrs': len([i for i in Activity.all().filter('type =', 'outgoing').filter('verb =', 'flattr')]), }) memcache.delete('flattr_stats') memcache.add('flattr_stats', json, 3600*24)
def get_youtify_user_by_email(email): try: youtify_user = YoutifyUser.all().filter('google_user2 =', User(email)).get() if youtify_user: return youtify_user except: pass
def get(self): stats = Stats() stats.nr_of_users = 0 stats.nr_of_active_users = 0 stats.nr_of_playlists = len([i for i in Playlist.all()]) stats.nr_of_users_with_flattr_account = 0 stats.nr_of_flattrs = 0 stats.nr_of_playlist_subscriptions = 0 stats.nr_of_follow_relations = len([i for i in FollowRelation.all()]) for user in YoutifyUser.all(): stats.nr_of_users += 1 if user.flattr_user_name: stats.nr_of_users_with_flattr_account += 1 if user.playlist_subscriptions: stats.nr_of_playlist_subscriptions += len(user.playlist_subscriptions) if user.last_login: delta = datetime.now() - user.last_login if delta.seconds < 3600 * 24 * 7: stats.nr_of_active_users += 1 stats.nr_of_flattrs += len([i for i in Activity.all().filter('owner =', user).filter('verb =', 'flattr')]) stats.put()
def get(self): json = simplejson.dumps({ 'nr_of_users': len([ i for i in YoutifyUser.all().filter('flattr_access_token !=', None) ]), 'nr_of_flattrs': len([ i for i in Activity.all().filter('type =', 'outgoing').filter( 'verb =', 'flattr') ]), }) memcache.delete('flattr_stats') memcache.add('flattr_stats', json, 3600 * 24)
def get(self): q = self.request.get('q').strip(' \t\n\r') if len(q) < 3: self.response.headers['Content-Type'] = 'application/json' self.response.out.write('[]') return ret = [] for m in YoutifyUser.all().search(q, properties=[ 'nickname', 'flattr_user_name', 'first_name', 'last_name', 'tagline' ]).fetch(30): ret.append(get_youtify_user_struct(m)) self.response.headers['Content-Type'] = 'application/json' self.response.out.write(simplejson.dumps(ret))
def get(self): stats = Stats() stats.nr_of_users = 0 stats.nr_of_active_users = 0 stats.nr_of_playlists = len([i for i in Playlist.all()]) stats.nr_of_users_with_flattr_account = 0 stats.nr_of_flattrs = len([ i for i in Activity.all().filter('type =', 'outgoing').filter( 'verb =', 'flattr') ]) stats.nr_of_playlist_subscriptions = 0 stats.nr_of_follow_relations = len([i for i in FollowRelation.all()]) for user in YoutifyUser.all(): stats.nr_of_users += 1 if user.flattr_user_name: stats.nr_of_users_with_flattr_account += 1 if user.playlist_subscriptions: stats.nr_of_playlist_subscriptions += len( user.playlist_subscriptions) if user.last_login: delta = datetime.now() - user.last_login if delta.seconds < 3600 * 24 * 7: stats.nr_of_active_users += 1 pings = [] last_ping = None for m in PingStats.all().order('-date').fetch(6 * 24 * 7): if last_ping is not None and last_ping.date.hour is not m.date.hour: pings.append({ 'date': str(last_ping.date), 'pings': last_ping.pings }) last_ping = m elif last_ping is None or m.pings > last_ping.pings: last_ping = m stats.pings = simplejson.dumps(pings) stats.put()
def get(self): page = int(self.request.get('page', '0')) page_size = 30 ret = [] count = 0 for m in YoutifyUser.all().fetch(page_size, page_size * page): count += 1 m.nr_of_followers = FollowRelation.all().filter('user2 =', m.key().id()).count() m.nr_of_followings = FollowRelation.all().filter('user1 =', m.key().id()).count() m.save() self.response.headers['Content-Type'] = 'text/html' if (count < page_size): self.response.out.write(COMPLETE) else: self.response.out.write(Template(TEMPLATE).substitute({ 'progress': page_size * page, 'next': page + 1, }))
def get(self): stats = Stats() stats.nr_of_users = 0 stats.nr_of_active_users = 0 stats.nr_of_playlists = len([i for i in Playlist.all()]) stats.nr_of_users_with_flattr_account = 0 stats.nr_of_flattrs = len([i for i in Activity.all().filter('type =', 'outgoing').filter('verb =', 'flattr')]) stats.nr_of_playlist_subscriptions = 0 stats.nr_of_follow_relations = len([i for i in FollowRelation.all()]) for user in YoutifyUser.all(): stats.nr_of_users += 1 if user.flattr_user_name: stats.nr_of_users_with_flattr_account += 1 if user.playlist_subscriptions: stats.nr_of_playlist_subscriptions += len(user.playlist_subscriptions) if user.last_login: delta = datetime.now() - user.last_login if delta.seconds < 3600 * 24 * 7: stats.nr_of_active_users += 1 pings = [] last_ping = None for m in PingStats.all().order('-date').fetch(6*24*7): if last_ping is not None and last_ping.date.hour is not m.date.hour: pings.append({ 'date': str(last_ping.date), 'pings': last_ping.pings }) last_ping = m elif last_ping is None or m.pings > last_ping.pings: last_ping = m stats.pings = simplejson.dumps(pings) stats.put()
def post(self): user = get_current_youtify_user_model() nickname = self.request.get('nickname', user.nickname) first_name = self.request.get('first_name', user.first_name) last_name = self.request.get('last_name', user.first_name) tagline = self.request.get('tagline', user.tagline) if nickname and not re.match('^[A-Za-z0-9_]{1,36}$', nickname): self.error(400) self.response.out.write( 'Nickname must be 1-36 alphanumerical characters (no whitespace)' ) return if nickname and nickname in BLOCKED_NICKNAMES: self.error(400) self.response.out.write('That nickname is not allowed.') return for u in YoutifyUser.all().filter('nickname_lower = ', nickname.lower()): if str(u.key().id()) != str(user.key().id()): self.error(409) self.response.out.write('Nickname is already taken') return user.nickname = nickname user.nickname_lower = nickname.lower() user.first_name = first_name user.last_name = last_name user.tagline = tagline user.save() self.response.headers['Content-Type'] = 'text/plain' self.response.out.write(get_display_name_for_youtify_user_model(user))
def get(self): stats = Stats() stats.nr_of_users = 0 stats.nr_of_active_users = 0 try: stats.nr_of_playlists = Playlist.all(keys_only=True).count( read_policy=EVENTUAL_CONSISTENCY) except: pass stats.nr_of_users_with_flattr_account = 0 stats.nr_of_users_with_dropbox = 0 try: stats.nr_of_flattrs = Activity.all().filter( 'type =', 'outgoing').filter( 'verb =', 'flattr').count(read_policy=EVENTUAL_CONSISTENCY) except: pass stats.nr_of_playlist_subscriptions = 0 try: stats.nr_of_follow_relations = FollowRelation.all( keys_only=True).count(read_policy=EVENTUAL_CONSISTENCY) except: pass try: for user in YoutifyUser.all(): stats.nr_of_users += 1 if user.flattr_user_name: stats.nr_of_users_with_flattr_account += 1 if user.dropbox_user_name: stats.nr_of_users_with_dropbox += 1 if user.playlist_subscriptions: stats.nr_of_playlist_subscriptions += len( user.playlist_subscriptions) if user.last_login: delta = datetime.now() - user.last_login if delta.seconds < 3600 * 24 * 7: stats.nr_of_active_users += 1 except: pass pings = [] last_ping = None try: for m in PingStats.all().order('-date').fetch(6 * 24 * 7): if last_ping is not None and last_ping.date.hour is not m.date.hour: pings.append({ 'date': str(last_ping.date), 'pings': last_ping.pings }) last_ping = m elif last_ping is None or m.pings > last_ping.pings: last_ping = m except: pass stats.pings = simplejson.dumps(pings) stats.put()