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))
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))