def get(self):
		versions_query = AppVersion.all()
		versions_query.order("-activeFrom")
		versions_objs = versions_query.fetch(2000)
		versions = [v.name for v in versions_objs]
		versions.insert(0, "all")
		selectedVersion = self.request.get('filter_version', "all")

		bugs = []
		page = int(self.request.get('page', 0))
		if selectedVersion != "all":
			crashes = []
			bugs_map = {}
			crashes_query = CrashReport.all()
			crashes_query.filter("versionName =", selectedVersion)
			crashes = crashes_query.fetch(1000000)
			for cr in crashes:
				if cr.bugKey.key().id() in bugs_map:
					bugs_map[cr.bugKey.key().id()].count += 1
					if bugs_map[cr.bugKey.key().id()].lastIncident < cr.crashTime:
						bugs_map[cr.bugKey.key().id()].lastIncident = cr.crashTime
				else:
					bug = cr.bugKey
					bug.count = 1
					bug.lastIncident = cr.crashTime
					bugs_map[cr.bugKey.key().id()] = bug
			unsorted_bugs = bugs_map.values()
			bugs = sorted(unsorted_bugs, key=attrgetter('count'), reverse=True)
			total_results = len(bugs)
			last_page = max((total_results - 1) // 20, 0)
			if page > last_page:
				page = last_page
			# trim results to a single page
			bugs[(page+1)*20:] = []
			bugs[0:page*20] = []
		else:
			bugs_query = Bug.all()
			bugs_query.order("-count")
			total_results = bugs_query.count(1000000)
			last_page = max((total_results - 1) // 20, 0)
			if page > last_page:
				page = last_page
			bugs = bugs_query.fetch(20, int(page)*20)

		template_values = {'bugs_list': bugs,
				'versions_list': versions,
				'filter_version': selectedVersion,
				'total_results': total_results,
				'page_size': 20,
				'page': page,
				'last_page': last_page}

		path = os.path.join(os.path.dirname(__file__), 'templates/bug_list.html')
		self.response.out.write(template.render(path, template_values))
	def get(self):
		versions_query = AppVersion.all()
		versions_query.order("-activeFrom")
		versions_objs = versions_query.fetch(2000)
		versions = [v.name for v in versions_objs]
		versions.insert(0, "all")

		hospital_query = HospitalizedReport.all()
		total_hospital = hospital_query.count()
		hospital_query = HospitalizedReport.all()
		hospital_query.filter('processed =', False)
		sick_hospital = hospital_query.count()

		crashes_query = CrashReport.all()
		bugId = self.request.get('bug_id')
		page = int(self.request.get('page', 0))
		selectedVersion = self.request.get('filter_version', "all")
		logging.info("version: " + selectedVersion)

		crashes = []
		if bugId:
			bug = Bug.get_by_id(long(bugId))
			crashes_query.filter("bugKey =", bug)
		if selectedVersion != "all":
			crashes_query.filter("versionName =", selectedVersion)
		crashes_query.order("-crashTime")
		total_results = crashes_query.count(1000000)
		last_page = max((total_results - 1) // 20, 0)

		if page > last_page:
			page = last_page
		crashes = crashes_query.fetch(20, int(page)*20)
		template_values = {'crashes_list': crashes,
				'versions_list': versions,
				'filter_version': selectedVersion,
				'total_results': total_results,
				'page_size': 20,
				'page': page,
				'last_page': last_page,
				'bug_id': bugId,
				'total_hospital': total_hospital,
				'sick_hospital': sick_hospital}
		path = os.path.join(os.path.dirname(__file__), 'templates/crash_list.html')
		self.response.out.write(template.render(path, template_values))
Example #3
0
	def get(self):
		batch = RebuildVersions.batch_size
		crashes_query = CrashReport.all()
		crashes = []
		page = int(self.request.get('page', 0))
		if page == 0:
			# Reset appVersion crashCount & lastIncident
			versions_query = AppVersion.all()
			versions = versions_query.fetch(2000)
			for v in versions:
				v.crashCount = 0
				v.lastIncident = datetime(2000,1,1)
				v.put()

		total_results = crashes_query.count(1000000)
		logging.info("Admin ops - total_results: ", total_results)
		last_page = max((total_results - 1) // batch, 0)
		if page > last_page:
			page = last_page
		crashes = crashes_query.fetch(batch, page * batch)
		versionCounts = {}
		versionLastIncidents = {}
		for cr in crashes:
			vname = cr.versionName.strip()
			if cr.versionName <> vname:
				cr.versionName = vname
				cr.put()
			if vname in versionCounts:
				versionCounts[vname] = versionCounts[vname] + 1
			else:
				versionCounts[vname] = 1

			if cr.versionName in versionLastIncidents:
				if versionLastIncidents[vname] < cr.crashTime:
					versionLastIncidents[vname] = cr.crashTime
			else:
				versionLastIncidents[vname] = cr.crashTime

		for vname in versionCounts:
			versions_query = AppVersion.all()
			versions_query.filter('name =', vname)
			versions = versions_query.fetch(1)
			if versions:
				version = versions[0]
				version.crashCount = version.crashCount + versionCounts[vname]
				if version.lastIncident < versionLastIncidents[vname]:
					version.lastIncident = versionLastIncidents[vname]
				version.put()
			else:
				logging.info("missing version: " + vname)

		template_values = {
				'tags': versionCounts,
				'page': page,
				'last_page': last_page,
				'page_size': batch,
				'op_link': 'rebuild_versions',
				'column_key': 'Version',
				'column_value': 'Count',
				'total_results': len(crashes)}
		path = os.path.join(os.path.dirname(__file__), 'templates/admin_ops.html')
		self.response.out.write(template.render(path, template_values))