def insert(cls, _name, _ts): version_query = AppVersion.all() version_query.filter('name =', _name.strip()) versions = [] versions = version_query.fetch(1) if versions: version = versions[0] if _ts and _ts.tzinfo == None: _ts = pytz.utc.localize(_ts) if pytz.utc.localize(version.lastIncident) < _ts: version.lastIncident = _ts logging.info("version " + version.name + " last incident: " + version.lastIncident.strftime(r"%d/%m/%Y %H:%M:%S %Z")) version.crashCount = version.crashCount + 1 version.put() cacheId = "CrashReport%s_counter" % version.name memcache.set(cacheId, version.crashCount, 432000) else: def vcmp(x, y): gx = re.match(r'^([0-9.]+)((?:alpha|beta)?)((?:\d+)?)((?:\D.*)?)$', x).groups() gy = re.match(r'^([0-9.]+)((?:alpha|beta)?)((?:\d+)?)((?:\D.*)?)$', y).groups() revx = 0 if len(gx[2]) == 0 else int(gx[2]) revy = 0 if len(gy[2]) == 0 else int(gy[2]) return -cmp("%s%sz%04d%s" % (gx[0], gx[1], revx, gx[3]), "%s%sz%04d%s" % (gy[0], gy[1], revy, gy[3])) nv = AppVersion(name = _name.strip(), lastIncident = _ts, crashCount = 1) nv.put() cacheId = "CrashReport%s_counter" % nv.name memcache.set(cacheId, 1, 432000) Cnt.incr("AppVersion_counter") Lst.append('all_version_names_list', nv.name, vcmp)
def get(self): versions = Lst.get('all_version_names_list') selectedVersion = self.request.get('filter_version', '') crashes = [] crashes_query = CrashReport.all() bugId = self.request.get('bug_id') if not bugId and not selectedVersion: selectedVersion = versions[0] cacheId = "CrashReport" if selectedVersion: crashes_query.filter("versionName =", selectedVersion) if bugId: bug = Bug.get_by_id(long(bugId)) crashes_query.filter("bugKey =", bug) cacheId += bugId if not selectedVersion: versions.insert(0, '') cacheId += selectedVersion cacheId += "_counter" crashes_query.order("-crashTime") logging.info("version: " + selectedVersion) page = int(self.request.get('page', 0)) crashes = crashes_query.fetch(20, int(page)*20) template_values = {'crashes_list': crashes, 'versions_list': versions, 'filter_version': selectedVersion, 'page_size': 20, 'page': page, 'bug_id': bugId} path = os.path.join(os.path.dirname(__file__), 'templates/crash_list.html') self.response.out.write(template.render(path, template_values))
def insert(cls, _name, _ts): version_query = AppVersion.all() version_query.filter('name =', _name.strip()) versions = [] versions = version_query.fetch(1) if versions: version = versions[0] if _ts and _ts.tzinfo == None: _ts = pytz.utc.localize(_ts) if pytz.utc.localize(version.lastIncident) < _ts: version.lastIncident = _ts logging.info( "version " + version.name + " last incident: " + version.lastIncident.strftime(r"%d/%m/%Y %H:%M:%S %Z")) version.crashCount = version.crashCount + 1 version.put() cacheId = "CrashReport%s_counter" % version.name memcache.set(cacheId, version.crashCount, 432000) else: def vcmp(x, y): gx = re.match( r'^([0-9.]+)((?:alpha|beta)?)((?:\d+)?)((?:\D.*)?)$', x).groups() gy = re.match( r'^([0-9.]+)((?:alpha|beta)?)((?:\d+)?)((?:\D.*)?)$', y).groups() revx = 0 if len(gx[2]) == 0 else int(gx[2]) revy = 0 if len(gy[2]) == 0 else int(gy[2]) return -cmp("%s%sz%04d%s" % (gx[0], gx[1], revx, gx[3]), "%s%sz%04d%s" % (gy[0], gy[1], revy, gy[3])) nv = AppVersion(name=_name.strip(), lastIncident=_ts, crashCount=1) nv.put() cacheId = "CrashReport%s_counter" % nv.name memcache.set(cacheId, 1, 432000) Cnt.incr("AppVersion_counter") Lst.append('all_version_names_list', nv.name, vcmp)
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") versions = Lst.get('all_version_names_list') selectedVersion = self.request.get('filter_version', versions[0]) 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) # trim results to a single page bugs[(page + 1) * 20:] = [] bugs[0:page * 20] = [] #else: # bugs_query = Bug.all() # bugs_query.order("-count") # bugs = bugs_query.fetch(20, int(page)*20) template_values = { 'bugs_list': bugs, 'versions_list': versions, 'filter_version': selectedVersion, 'page_size': 20, 'page': 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") versions = Lst.get('all_version_names_list') selectedVersion = self.request.get('filter_version', versions[0]) 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) # trim results to a single page bugs[(page+1)*20:] = [] bugs[0:page*20] = [] #else: # bugs_query = Bug.all() # bugs_query.order("-count") # bugs = bugs_query.fetch(20, int(page)*20) template_values = {'bugs_list': bugs, 'versions_list': versions, 'filter_version': selectedVersion, 'page_size': 20, 'page': 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 = Lst.get('all_version_names_list') selectedVersion = self.request.get('filter_version', '') crashes = [] crashes_query = CrashReport.all() bugId = self.request.get('bug_id') if not bugId and not selectedVersion: selectedVersion = versions[0] cacheId = "CrashReport" if selectedVersion: crashes_query.filter("versionName =", selectedVersion) if bugId: bug = Bug.get_by_id(long(bugId)) crashes_query.filter("bugKey =", bug) cacheId += bugId if not selectedVersion: versions.insert(0, '') cacheId += selectedVersion cacheId += "_counter" crashes_query.order("-crashTime") logging.info("version: " + selectedVersion) page = int(self.request.get('page', 0)) crashes = crashes_query.fetch(20, int(page) * 20) template_values = { 'crashes_list': crashes, 'versions_list': versions, 'filter_version': selectedVersion, 'page_size': 20, 'page': page, 'bug_id': bugId } path = os.path.join(os.path.dirname(__file__), 'templates/crash_list.html') self.response.out.write(template.render(path, template_values))