Beispiel #1
0
	def get(self):
		time.sleep(0.5)
		
		topics = self.beevote_user.get_topics_by_group_membership()

		currentdatetime = datetime.datetime.now()
		for topic in topics:
			if(topic.date != None):
				topic.formatted_date = topic.date.strftime(constants.topic_date_format)
			if topic.deadline != None:
				topic.expired = topic.deadline < currentdatetime
				time_before_deadline = topic.deadline - currentdatetime
				topic.seconds_before_deadline = time_before_deadline.total_seconds()
				topic.time_before_deadline = {
					'seconds': time_before_deadline.seconds % 60,
					'minutes': (time_before_deadline.seconds/60) % 60,
					'hours': time_before_deadline.seconds/3600,
					'days': time_before_deadline.days,
				}
			else:
				topic.seconds_before_deadline = timedelta.max.total_seconds()
			if topic.creator == self.beevote_user.key:
				topic.is_own = True
			else:
				topic.is_own = False
		topics = sorted(topics, key=lambda topic: topic.seconds_before_deadline)
		values = {
			'topics' : topics,
		}
		base_handlers.write_template(self.response, 'html/topics.html',values)
Beispiel #2
0
def handle_401(request, response, exception):
	if 'Location' in exception.headers and exception.headers['Location']:
		response.set_status(302)
		response.headers['Location'] = exception.headers['Location']
		return
	response.set_status(401)
	base_handlers.write_template(response, 'errors/401.html', {'detail': exception.detail})
Beispiel #3
0
 def get(self, player_id):
     player = models.Player._get_by_id(int(player_id))
     player_key = player.key
     performances = models.Performance.find_performance_player(player_key)
     values = calculate_global_stats(performances)
     values["player"] = player
     base_handlers.write_template(self.response, "templates/admin/showPlayerTotalStats.html", values)
Beispiel #4
0
 def get(self):
     user_id = users.get_current_user().user_id()
     if self.beevote_user or models.BeeVoteUser.get_from_google_id(user_id):
         self.redirect("/")
         return
     base_handlers.write_template(self.response, 'registration-form.html',
                                  {})
Beispiel #5
0
def handle_401(request, response, exception):
    if 'Location' in exception.headers and exception.headers['Location']:
        response.set_status(302)
        response.headers['Location'] = exception.headers['Location']
        return
    response.set_status(401)
    base_handlers.write_template(response, 'errors/401.html',
                                 {'detail': exception.detail})
Beispiel #6
0
 def get(self):
     feature_changes = ndb.gql("SELECT * FROM FeatureChange").fetch(1000)
     feature_changes = sorted(feature_changes,
                              key=lambda feature: feature.creation,
                              reverse=True)
     base_handlers.write_template(self.response,
                                  'admin/feature-changes.html',
                                  {'feature_changes': feature_changes})
Beispiel #7
0
	def get(self, group_id, topic_id):
		group = models.Group.get_from_id(long(group_id))
		if not group.contains_user(self.beevote_user):
			self.abort(401, detail="You are not authorized to see this group.<br>Click <a href='javascript:history.back();'>here</a> to go back, or <a href='/logout'>here</a> to logout.")
		topic = models.Topic.get_from_id(long(group_id), long(topic_id))
		if (not topic):
			self.abort(404, detail="This topic does not exist.")
		if(topic.date != None):
			topic.formatted_date = topic.date.strftime(constants.topic_date_format)
		if topic.creator == self.beevote_user.key:
			topic.is_own = True
		else:
			topic.is_own = False
		if self.beevote_user.key not in topic.non_participant_users:
			topic.participation = True
		else:
			topic.participation = False
		
		proposals = topic.get_proposals()
		
		# Adding a variable on each proposal containing the NUMBER of votes of the proposal
		for proposal in proposals:
			votes = ndb.gql("SELECT * FROM Vote WHERE proposal = :1 AND creator = :2", proposal.key, self.beevote_user.key)
			own_vote = votes.get()
			if own_vote:
				proposal.already_voted = True
			else:
				proposal.already_voted = False
			proposal.vote_number = len(proposal.get_votes())
			proposal.comment_number = len(proposal.get_comments())
			if(proposal.date != None):
				proposal.formatted_date = proposal.date.strftime(constants.proposal_date_format)
		
		# Sorting the proposal according to vote number
		topic.proposals = sorted(proposals, key=lambda proposal: proposal.vote_number, reverse=True)

		# Evaluation about topic deadline
		if topic.deadline != None:
			currentdatetime = datetime.datetime.now()
			topic.expired = topic.deadline < currentdatetime
			time_before_deadline = topic.deadline - currentdatetime
			topic.time_before_deadline = {
				'seconds': time_before_deadline.seconds % 60,
				'minutes': (time_before_deadline.seconds/60) % 60,
				'hours': time_before_deadline.seconds/3600,
				'days': time_before_deadline.days,
			}
		
		personal_settings = models.TopicPersonalSettings.get_settings(self.beevote_user, topic)
		values = {
			'topic': topic,
			'personal_settings': personal_settings
		}
		models.TopicAccess.update_specific_access(topic, self.beevote_user)
		base_handlers.write_template(self.response, 'html/topic-overview.html', values)
Beispiel #8
0
 def get(self, player_id):
     player = models.Player._get_by_id(int(player_id))
     player_key = player.key
     values = {"player": player}
     stats_by_role = []
     for role in models.roles:
         stats_for_a_role = models.Performance.find_performance_by_player_and_role(player_key, role)
         stats_for_a_role = calculate_global_stats(stats_for_a_role)
         stats_for_a_role["role"] = str(role)
         stats_by_role.append(stats_for_a_role)
     values["stats"] = stats_by_role
     base_handlers.write_template(self.response, "templates/admin/showPlayerStatsByRole.html", values)
Beispiel #9
0
 def get(self):
     user = users.get_current_user()
     if user:
         # path = os.path.join(os.path.dirname(__file__), 'templates/ciao.html')
         #
         # self.response.out.write(template.render(path,{}))
         base_handlers.write_template(self.response, "templates/ciao.html")
         greeting = 'Welcome, %s! (<a href="%s">sign out</a>)' % (user.nickname(), users.create_logout_url("/"))
         self.response.out.write("<h4>%s</h4>" % greeting)
     else:
         greeting = '<a href="%s">Sign in or register</a>.' % users.create_login_url("/")
         self.response.out.write("<html><body>%s</body></html>" % greeting)
Beispiel #10
0
	def get(self):
		user = users.get_current_user()
		if user:
			if not self.beevote_user and not models.BeeVoteUser.get_from_google_id(user.user_id()):
				self.redirect("/register")
				return
			else:
				self.redirect('/home')
		else:
			values = {
				'login_url': users.create_login_url('/home'),
			}
			base_handlers.write_template(self.response, 'index.html', values)
Beispiel #11
0
 def get(self):
     user = users.get_current_user()
     if user:
         if not self.beevote_user and not models.BeeVoteUser.get_from_google_id(
                 user.user_id()):
             self.redirect("/register")
             return
         else:
             self.redirect('/home')
     else:
         values = {
             'login_url': users.create_login_url('/home'),
         }
         base_handlers.write_template(self.response, 'index.html', values)
Beispiel #12
0
	def get(self):
		sort_param = self.request.get("sort")
		query_string = "SELECT * FROM BeeVoteUser"
		order_string = " ORDER BY {field} {order}"
		if sort_param == "creation":
			query_string += order_string.format(field="creation", order="DESC")
		elif sort_param == "last_access":
			query_string += order_string.format(field="last_access", order="DESC")
		elif sort_param == "email":
			query_string += order_string.format(field="email", order="ASC")
		elif sort_param == "language":
			query_string += order_string.format(field="language", order="ASC")
		users = ndb.gql(query_string)
		base_handlers.write_template(self.response, 'admin/user-manager.html', {'users': users})
Beispiel #13
0
	def get(self):
		
		time.sleep(0.5)
		
		groups = self.beevote_user.get_groups_by_membership()
		
		for group in groups:
			
			if len(group.name) > 20:
				group.name_short = group.name[:16]
		
		values = {
			'groups' : groups,
		}
		base_handlers.write_template(self.response, 'html/groups.html',values)
Beispiel #14
0
 def get(self):
     sort_param = self.request.get("sort")
     query_string = "SELECT * FROM BeeVoteUser"
     order_string = " ORDER BY {field} {order}"
     if sort_param == "creation":
         query_string += order_string.format(field="creation", order="DESC")
     elif sort_param == "last_access":
         query_string += order_string.format(field="last_access",
                                             order="DESC")
     elif sort_param == "email":
         query_string += order_string.format(field="email", order="ASC")
     elif sort_param == "language":
         query_string += order_string.format(field="language", order="ASC")
     users = ndb.gql(query_string)
     base_handlers.write_template(self.response, 'admin/user-manager.html',
                                  {'users': users})
Beispiel #15
0
	def get(self, group_id):
		group = models.Group.get_from_id(long(group_id))
		if (not group):
			self.abort(404, detail="This group does not exist.")
		if not group.contains_user(self.beevote_user):
			self.abort(401, detail="You are not authorized to see this group.<br>Click <a href='javascript:history.back();'>here</a> to go back, or <a href='/logout'>here</a> to logout.")
		group.member_list = ndb.get_multi(group.members)
		
		if group.admins == [] or self.beevote_user.key in group.admins:
			admin = True
		else:
			admin = False
		values = {
			'user': self.beevote_user,
			'group': group,
			'admin': admin,
		}
		base_handlers.write_template(self.response, 'html/group-members.html', values)
Beispiel #16
0
    def get(self, game_id):
        game_id = int(game_id)
        game = models.Game._get_by_id(game_id)
        game_key = game.key
        performances = models.Performance.find_performance_by_game(game_key)
        for perfomance in performances:
            logging.info("prestazioni trovate e %s", str(perfomance))

        players = models.Performance.find_players_for_performances(performances)
        performances_players = zip(players, performances)
        values = {
            "Query": "Unit",
            "performances": performances,
            "game": game,
            "players": players,
            "performances_players": performances_players,
        }
        base_handlers.write_template(self.response, "templates/admin/showPerformances.html", values)
Beispiel #17
0
	def get(self, group_id):
		group = models.Group.get_from_id(long(group_id))
		if (not group):
			self.abort(404, detail="This group does not exist.")
		if not group.contains_user(self.beevote_user):
			self.abort(401, detail="You are not authorized to see this group.<br>Click <a href='javascript:history.back();'>here</a> to go back, or <a href='/logout'>here</a> to logout.")
		group.member_list = ndb.get_multi(group.members)
		topics = group.get_topics()
		currentdatetime = datetime.datetime.now()
		for topic in topics:
			if topic.deadline != None:
				topic.expired = topic.deadline < currentdatetime
				time_before_deadline = topic.deadline - currentdatetime
				topic.seconds_before_deadline = time_before_deadline.total_seconds()
				topic.time_before_deadline = {
					'seconds': time_before_deadline.seconds % 60,
					'minutes': (time_before_deadline.seconds/60) % 60,
					'hours': time_before_deadline.seconds/3600,
					'days': time_before_deadline.days,
				}
			else:
				topic.seconds_before_deadline = timedelta.max.total_seconds()
			if topic.creator == self.beevote_user.key:
				topic.is_own = True
			else:
				topic.is_own = False
		
		if self.beevote_user.key in group.admins:
			group.is_own = True
		else:
			group.is_own = False

		topics = sorted(topics, key=lambda topic: topic.seconds_before_deadline)
		group.topics = topics
		
		personal_settings = models.GroupPersonalSettings.get_settings(self.beevote_user, group)
		
		values = {
			'group': group,
			'personal_settings': personal_settings,
		}
		models.GroupAccess.update_specific_access(group, self.beevote_user)
		base_handlers.write_template(self.response, 'html/group-overview.html', values)
Beispiel #18
0
	def get(self, group_id, topic_id):
		
		if not self.beevote_user:
			self.redirect("/register")
			return
		
		last_access = self.beevote_user.last_access if hasattr(self.beevote_user, 'last_access') else datetime.datetime.min
		self.beevote_user.last_access = datetime.datetime.now()
		self.beevote_user.put()
		
		feature_changes = models.FeatureChange.get_from_date(last_access)
		
		values = {
			'user' : self.beevote_user,
			'feature_changes': feature_changes,
			'group_id': group_id,
			'topic_id': topic_id,
		}
		base_handlers.write_template(self.response, 'groups-layout.html',values)
Beispiel #19
0
    def get(self, group_id, topic_id):

        if not self.beevote_user:
            self.redirect("/register")
            return

        last_access = self.beevote_user.last_access if hasattr(
            self.beevote_user, 'last_access') else datetime.datetime.min
        self.beevote_user.last_access = datetime.datetime.now()
        self.beevote_user.put()

        feature_changes = models.FeatureChange.get_from_date(last_access)

        values = {
            'user': self.beevote_user,
            'feature_changes': feature_changes,
            'group_id': group_id,
            'topic_id': topic_id,
        }
        base_handlers.write_template(self.response, 'groups-layout.html',
                                     values)
Beispiel #20
0
    def get(self):
        duration_24_hours = 24 * 60 * 60
        duration_1_week = duration_24_hours * 7
        duration_30_days = duration_24_hours * 30
        duration_90_days = duration_24_hours * 90

        groups = ndb.gql("SELECT * FROM Group").fetch(1000)
        groups_created_in_last_90_days = [
            g for g in groups
            if (datetime.datetime.now() -
                g.creation).total_seconds() < (duration_90_days)
        ]
        groups_created_in_last_30_days = [
            g for g in groups_created_in_last_90_days
            if (datetime.datetime.now() -
                g.creation).total_seconds() < (duration_30_days)
        ]
        groups_created_in_last_week = [
            g for g in groups_created_in_last_30_days
            if (datetime.datetime.now() -
                g.creation).total_seconds() < (duration_1_week)
        ]
        groups_created_in_last_24_hours = [
            g for g in groups_created_in_last_week
            if (datetime.datetime.now() -
                g.creation).total_seconds() < (duration_24_hours)
        ]

        topics = ndb.gql("SELECT * FROM Topic").fetch(1000)
        topics_created_in_last_90_days = [
            t for t in topics
            if (datetime.datetime.now() -
                t.creation).total_seconds() < (duration_90_days)
        ]
        topics_created_in_last_30_days = [
            t for t in topics_created_in_last_90_days
            if (datetime.datetime.now() -
                t.creation).total_seconds() < (duration_30_days)
        ]
        topics_created_in_last_week = [
            t for t in topics_created_in_last_30_days
            if (datetime.datetime.now() -
                t.creation).total_seconds() < (duration_1_week)
        ]
        topics_created_in_last_24_hours = [
            t for t in topics_created_in_last_week
            if (datetime.datetime.now() -
                t.creation).total_seconds() < (duration_24_hours)
        ]

        proposals = ndb.gql("SELECT * FROM Proposal").fetch(1000)
        proposals_created_in_last_90_days = [
            p for p in proposals
            if (datetime.datetime.now() -
                p.creation).total_seconds() < (duration_90_days)
        ]
        proposals_created_in_last_30_days = [
            p for p in proposals_created_in_last_90_days
            if (datetime.datetime.now() -
                p.creation).total_seconds() < (duration_30_days)
        ]
        proposals_created_in_last_week = [
            p for p in proposals_created_in_last_30_days
            if (datetime.datetime.now() -
                p.creation).total_seconds() < (duration_1_week)
        ]
        proposals_created_in_last_24_hours = [
            p for p in proposals_created_in_last_week
            if (datetime.datetime.now() -
                p.creation).total_seconds() < (duration_24_hours)
        ]

        proposal_comments = ndb.gql("SELECT * FROM ProposalComment").fetch(
            1000)
        proposal_comments_created_in_last_90_days = [
            c for c in proposal_comments
            if (datetime.datetime.now() -
                c.creation).total_seconds() < (duration_90_days)
        ]
        proposal_comments_created_in_last_30_days = [
            c for c in proposal_comments_created_in_last_90_days
            if (datetime.datetime.now() -
                c.creation).total_seconds() < (duration_30_days)
        ]
        proposal_comments_created_in_last_week = [
            c for c in proposal_comments_created_in_last_30_days
            if (datetime.datetime.now() -
                c.creation).total_seconds() < (duration_1_week)
        ]
        proposal_comments_created_in_last_24_hours = [
            c for c in proposal_comments_created_in_last_week
            if (datetime.datetime.now() -
                c.creation).total_seconds() < (duration_24_hours)
        ]

        votes = ndb.gql("SELECT * FROM Vote").fetch(1000)

        users = ndb.gql("SELECT * FROM BeeVoteUser").fetch(1000)
        users_registered_in_last_90_days = [
            u for u in users
            if u.creation and (datetime.datetime.now() -
                               u.creation).total_seconds() < (duration_90_days)
        ]
        users_registered_in_last_30_days = [
            u for u in users_registered_in_last_90_days
            if u.creation and (datetime.datetime.now() -
                               u.creation).total_seconds() < (duration_30_days)
        ]
        users_registered_in_last_week = [
            u for u in users_registered_in_last_30_days
            if u.creation and (datetime.datetime.now() -
                               u.creation).total_seconds() < (duration_1_week)
        ]
        users_registered_in_last_24_hours = [
            u for u in users_registered_in_last_week
            if u.creation and (datetime.datetime.now() - u.creation
                               ).total_seconds() < (duration_24_hours)
        ]

        users_active_in_last_90_days = [
            u for u in users
            if u.last_access and (datetime.datetime.now() - u.last_access
                                  ).total_seconds() < (duration_90_days)
        ]
        users_active_in_last_30_days = [
            u for u in users_active_in_last_90_days
            if u.last_access and (datetime.datetime.now() - u.last_access
                                  ).total_seconds() < (duration_30_days)
        ]
        users_active_in_last_week = [
            u for u in users_active_in_last_30_days
            if u.last_access and (datetime.datetime.now() - u.last_access
                                  ).total_seconds() < (duration_1_week)
        ]
        users_active_in_last_24_hours = [
            u for u in users_active_in_last_week
            if u.last_access and (datetime.datetime.now() - u.last_access
                                  ).total_seconds() < (duration_24_hours)
        ]

        reports = ndb.gql("SELECT * FROM BugReport").fetch(1000)
        reports_created_in_last_90_days = [
            r for r in reports
            if (datetime.datetime.now() -
                r.creation).total_seconds() < (duration_90_days)
        ]
        reports_created_in_last_30_days = [
            r for r in reports_created_in_last_90_days
            if (datetime.datetime.now() -
                r.creation).total_seconds() < (duration_30_days)
        ]
        reports_created_in_last_week = [
            r for r in reports_created_in_last_30_days
            if (datetime.datetime.now() -
                r.creation).total_seconds() < (duration_1_week)
        ]
        reports_created_in_last_24_hours = [
            r for r in reports_created_in_last_week
            if (datetime.datetime.now() -
                r.creation).total_seconds() < (duration_24_hours)
        ]

        base_handlers.write_template(
            self.response, 'admin/stats.html', {
                'stats': {
                    'number_of_groups':
                    len(groups),
                    'groups_created_in_last_24_hours':
                    len(groups_created_in_last_24_hours),
                    'groups_created_in_last_week':
                    len(groups_created_in_last_week),
                    'groups_created_in_last_30_days':
                    len(groups_created_in_last_30_days),
                    'groups_created_in_last_90_days':
                    len(groups_created_in_last_90_days),
                    'average_members_per_group':
                    sum(len(g.members) for g in groups) / float(len(groups)),
                    'number_of_topics':
                    len(topics),
                    'topics_created_in_last_24_hours':
                    len(topics_created_in_last_24_hours),
                    'topics_created_in_last_week':
                    len(topics_created_in_last_week),
                    'topics_created_in_last_30_days':
                    len(topics_created_in_last_30_days),
                    'topics_created_in_last_90_days':
                    len(topics_created_in_last_90_days),
                    'average_topics_per_group':
                    len(topics) / float(len(groups)),
                    'number_of_proposals':
                    len(proposals),
                    'proposals_created_in_last_24_hours':
                    len(proposals_created_in_last_24_hours),
                    'proposals_created_in_last_week':
                    len(proposals_created_in_last_week),
                    'proposals_created_in_last_30_days':
                    len(proposals_created_in_last_30_days),
                    'proposals_created_in_last_30_days':
                    len(proposals_created_in_last_90_days),
                    'average_proposals_per_topic':
                    len(proposals) / float(len(topics)),
                    'number_of_proposal_comments':
                    len(proposal_comments),
                    'proposal_comments_created_in_last_24_hours':
                    len(proposal_comments_created_in_last_24_hours),
                    'proposal_comments_created_in_last_week':
                    len(proposal_comments_created_in_last_week),
                    'proposal_comments_created_in_last_30_days':
                    len(proposal_comments_created_in_last_30_days),
                    'proposal_comments_created_in_last_90_days':
                    len(proposal_comments_created_in_last_90_days),
                    'number_of_users':
                    len(users),
                    'users_by_language': {
                        'en':
                        len([
                            u for u in users
                            if (u.language is None) or (u.language == 'en')
                        ]),
                        'it':
                        len([u for u in users if u.language == 'it']),
                    },
                    'users_registered_in_last_24_hours':
                    len(users_registered_in_last_24_hours),
                    'users_registered_in_last_week':
                    len(users_registered_in_last_week),
                    'users_registered_in_last_30_days':
                    len(users_registered_in_last_30_days),
                    'users_registered_in_last_90_days':
                    len(users_registered_in_last_90_days),
                    'users_active_in_last_24_hours':
                    len(users_active_in_last_24_hours),
                    'users_active_in_last_week':
                    len(users_active_in_last_week),
                    'users_active_in_last_30_days':
                    len(users_active_in_last_30_days),
                    'users_active_in_last_90_days':
                    len(users_active_in_last_90_days),
                    'number_of_reports':
                    len(reports),
                    'reports_created_in_last_24_hours':
                    len(reports_created_in_last_24_hours),
                    'reports_created_in_last_week':
                    len(reports_created_in_last_week),
                    'reports_created_in_last_30_days':
                    len(reports_created_in_last_30_days),
                    'reports_created_in_last_90_days':
                    len(reports_created_in_last_90_days),
                    'number_of_votes':
                    len(votes),
                }
            })
Beispiel #21
0
 def get(self):
     base_handlers.write_template(self.response, 'admin/admin-menu.html',
                                  {})
Beispiel #22
0
 def get(self):
     base_handlers.write_template(self.response, 'admin/emailer.html', {})
Beispiel #23
0
	def get(self):
		user_id = users.get_current_user().user_id()
		if self.beevote_user or models.BeeVoteUser.get_from_google_id(user_id):
			self.redirect("/")
			return
		base_handlers.write_template(self.response, 'registration-form.html', {})
Beispiel #24
0
 def get(self):
     reports = ndb.gql("SELECT * FROM BugReport")
     base_handlers.write_template(self.response, 'admin/bug-reports.html',
                                  {'reports': reports})
Beispiel #25
0
	def get(self):
		values = {}
		base_handlers.write_template(self.response, 'report-bug.html', values)
Beispiel #26
0
 def get(self):
     values = calculate_best_players_by_role()
     # path = os.path.join(os.path.dirname(__file__), 'templates/admin/showBestPlayerStatsByRole.html')
     # self.response.out.write(template.render(path,values))
     base_handlers.write_template(self.response, "templates/admin/showBestPlayerStatsByRole.html", values)
Beispiel #27
0
 def get(self, user_id):
     # TODO Use user_id to get user and put it in values
     values = {}
     base_handlers.write_template(self.response, 'user-profile.html',
                                  values)
Beispiel #28
0
 def get(self):
     values = {}
     base_handlers.write_template(self.response, 'report-bug.html', values)
Beispiel #29
0
 def get(self):
     games = models.Game.get_all()
     values = {"query": "Unit", "games": games}
     base_handlers.write_template(self.response, "templates/admin/showGames.html", values)
Beispiel #30
0
	def get(self, user_id):
		# TODO Use user_id to get user and put it in values
		values = {}
		base_handlers.write_template(self.response, 'user-profile.html', values)
Beispiel #31
0
	def get(self):
		base_handlers.write_template(self.response, 'admin/admin-menu.html', {})
Beispiel #32
0
def handle_404(request, response, exception):
    response.set_status(404)
    base_handlers.write_template(response, 'not_found.html',
                                 {'url': request.path})
Beispiel #33
0
	def get(self):
		feature_changes = ndb.gql("SELECT * FROM FeatureChange").fetch(1000)
		feature_changes = sorted(feature_changes, key=lambda feature: feature.creation, reverse=True)
		base_handlers.write_template(self.response, 'admin/feature-changes.html', {'feature_changes': feature_changes})
Beispiel #34
0
	def get(self):
		reports = ndb.gql("SELECT * FROM BugReport")
		base_handlers.write_template(self.response, 'admin/bug-reports.html', {'reports': reports})
Beispiel #35
0
def handle_404(request, response, exception):
	response.set_status(404)
	base_handlers.write_template(response, 'not_found.html', {'url': request.path})
Beispiel #36
0
	def get(self):
		base_handlers.write_template(self.response, 'admin/emailer.html', {})
Beispiel #37
0
 def get(self):
     players = models.Player.get_all()
     values = {"query": "Unit", "players": players}
     base_handlers.write_template(self.response, "templates/admin/showPlayers.html", values)
Beispiel #38
0
	def get(self):
		duration_24_hours = 24*60*60
		duration_1_week = duration_24_hours*7
		duration_30_days = duration_24_hours*30
		duration_90_days = duration_24_hours*90
		
		groups = ndb.gql("SELECT * FROM Group").fetch(1000)
		groups_created_in_last_90_days = [g for g in groups if (datetime.datetime.now() - g.creation).total_seconds() < (duration_90_days)]
		groups_created_in_last_30_days = [g for g in groups_created_in_last_90_days if (datetime.datetime.now() - g.creation).total_seconds() < (duration_30_days)]
		groups_created_in_last_week = [g for g in groups_created_in_last_30_days if (datetime.datetime.now() - g.creation).total_seconds() < (duration_1_week)]
		groups_created_in_last_24_hours = [g for g in groups_created_in_last_week if (datetime.datetime.now() - g.creation).total_seconds() < (duration_24_hours)]
		
		topics = ndb.gql("SELECT * FROM Topic").fetch(1000)
		topics_created_in_last_90_days = [t for t in topics if (datetime.datetime.now() - t.creation).total_seconds() < (duration_90_days)]
		topics_created_in_last_30_days = [t for t in topics_created_in_last_90_days if (datetime.datetime.now() - t.creation).total_seconds() < (duration_30_days)]
		topics_created_in_last_week = [t for t in topics_created_in_last_30_days if (datetime.datetime.now() - t.creation).total_seconds() < (duration_1_week)]
		topics_created_in_last_24_hours = [t for t in topics_created_in_last_week if (datetime.datetime.now() - t.creation).total_seconds() < (duration_24_hours)]
		
		proposals = ndb.gql("SELECT * FROM Proposal").fetch(1000)
		proposals_created_in_last_90_days = [p for p in proposals if (datetime.datetime.now() - p.creation).total_seconds() < (duration_90_days)]
		proposals_created_in_last_30_days = [p for p in proposals_created_in_last_90_days if (datetime.datetime.now() - p.creation).total_seconds() < (duration_30_days)]
		proposals_created_in_last_week = [p for p in proposals_created_in_last_30_days if (datetime.datetime.now() - p.creation).total_seconds() < (duration_1_week)]
		proposals_created_in_last_24_hours = [p for p in proposals_created_in_last_week if (datetime.datetime.now() - p.creation).total_seconds() < (duration_24_hours)]
		
		proposal_comments = ndb.gql("SELECT * FROM ProposalComment").fetch(1000)
		proposal_comments_created_in_last_90_days = [c for c in proposal_comments if (datetime.datetime.now() - c.creation).total_seconds() < (duration_90_days)]
		proposal_comments_created_in_last_30_days = [c for c in proposal_comments_created_in_last_90_days if (datetime.datetime.now() - c.creation).total_seconds() < (duration_30_days)]
		proposal_comments_created_in_last_week = [c for c in proposal_comments_created_in_last_30_days if (datetime.datetime.now() - c.creation).total_seconds() < (duration_1_week)]
		proposal_comments_created_in_last_24_hours = [c for c in proposal_comments_created_in_last_week if (datetime.datetime.now() - c.creation).total_seconds() < (duration_24_hours)]
		
		votes = ndb.gql("SELECT * FROM Vote").fetch(1000)
		
		users = ndb.gql("SELECT * FROM BeeVoteUser").fetch(1000)
		users_registered_in_last_90_days = [u for u in users if u.creation and (datetime.datetime.now() - u.creation).total_seconds() < (duration_90_days)]
		users_registered_in_last_30_days = [u for u in users_registered_in_last_90_days if u.creation and (datetime.datetime.now() - u.creation).total_seconds() < (duration_30_days)]
		users_registered_in_last_week = [u for u in users_registered_in_last_30_days if u.creation and (datetime.datetime.now() - u.creation).total_seconds() < (duration_1_week)]
		users_registered_in_last_24_hours = [u for u in users_registered_in_last_week if u.creation and (datetime.datetime.now() - u.creation).total_seconds() < (duration_24_hours)]
		
		users_active_in_last_90_days = [u for u in users if u.last_access and (datetime.datetime.now() - u.last_access).total_seconds() < (duration_90_days)]
		users_active_in_last_30_days = [u for u in users_active_in_last_90_days if u.last_access and (datetime.datetime.now() - u.last_access).total_seconds() < (duration_30_days)]
		users_active_in_last_week = [u for u in users_active_in_last_30_days if u.last_access and (datetime.datetime.now() - u.last_access).total_seconds() < (duration_1_week)]
		users_active_in_last_24_hours = [u for u in users_active_in_last_week if u.last_access and (datetime.datetime.now() - u.last_access).total_seconds() < (duration_24_hours)]
		
		reports = ndb.gql("SELECT * FROM BugReport").fetch(1000)
		reports_created_in_last_90_days = [r for r in reports if (datetime.datetime.now() - r.creation).total_seconds() < (duration_90_days)]
		reports_created_in_last_30_days = [r for r in reports_created_in_last_90_days if (datetime.datetime.now() - r.creation).total_seconds() < (duration_30_days)]
		reports_created_in_last_week = [r for r in reports_created_in_last_30_days if (datetime.datetime.now() - r.creation).total_seconds() < (duration_1_week)]
		reports_created_in_last_24_hours = [r for r in reports_created_in_last_week if (datetime.datetime.now() - r.creation).total_seconds() < (duration_24_hours)]
		
		base_handlers.write_template(self.response, 'admin/stats.html', {'stats': {
			'number_of_groups': len(groups),
			'groups_created_in_last_24_hours': len(groups_created_in_last_24_hours),
			'groups_created_in_last_week': len(groups_created_in_last_week),
			'groups_created_in_last_30_days': len(groups_created_in_last_30_days),
			'groups_created_in_last_90_days': len(groups_created_in_last_90_days),
			'average_members_per_group': sum(len(g.members) for g in groups) / float(len(groups)),
			'number_of_topics': len(topics),
			'topics_created_in_last_24_hours': len(topics_created_in_last_24_hours),
			'topics_created_in_last_week': len(topics_created_in_last_week),
			'topics_created_in_last_30_days': len(topics_created_in_last_30_days),
			'topics_created_in_last_90_days': len(topics_created_in_last_90_days),
			'average_topics_per_group': len(topics) / float(len(groups)),
			'number_of_proposals': len(proposals),
			'proposals_created_in_last_24_hours': len(proposals_created_in_last_24_hours),
			'proposals_created_in_last_week': len(proposals_created_in_last_week),
			'proposals_created_in_last_30_days': len(proposals_created_in_last_30_days),
			'proposals_created_in_last_30_days': len(proposals_created_in_last_90_days),
			'average_proposals_per_topic': len(proposals) / float(len(topics)),
			'number_of_proposal_comments': len(proposal_comments),
			'proposal_comments_created_in_last_24_hours': len(proposal_comments_created_in_last_24_hours),
			'proposal_comments_created_in_last_week': len(proposal_comments_created_in_last_week),
			'proposal_comments_created_in_last_30_days': len(proposal_comments_created_in_last_30_days),
			'proposal_comments_created_in_last_90_days': len(proposal_comments_created_in_last_90_days),
			'number_of_users': len(users),
			'users_by_language': {
				'en': len([u for u in users if (u.language is None) or (u.language == 'en')]),
				'it': len([u for u in users if u.language == 'it']),
			},
			'users_registered_in_last_24_hours': len(users_registered_in_last_24_hours),
			'users_registered_in_last_week': len(users_registered_in_last_week),
			'users_registered_in_last_30_days': len(users_registered_in_last_30_days),
			'users_registered_in_last_90_days': len(users_registered_in_last_90_days),
			'users_active_in_last_24_hours': len(users_active_in_last_24_hours),
			'users_active_in_last_week': len(users_active_in_last_week),
			'users_active_in_last_30_days': len(users_active_in_last_30_days),
			'users_active_in_last_90_days': len(users_active_in_last_90_days),
			'number_of_reports': len(reports),
			'reports_created_in_last_24_hours': len(reports_created_in_last_24_hours),
			'reports_created_in_last_week': len(reports_created_in_last_week),
			'reports_created_in_last_30_days': len(reports_created_in_last_30_days),
			'reports_created_in_last_90_days': len(reports_created_in_last_90_days),
			'number_of_votes': len(votes),
		}})
Beispiel #39
0
 def get(self):
     base_handlers.write_template(self.response, "templates/admin/insertGame.html")