def _update_changes(self, changes=[], known_ids=[]): skipped = 0 updates = False branches = {} cl_projects = Projects() cl_last_chg = LastChanges() for c in changes: if c['id']['id'] in known_ids: skipped += 1 continue updates = True change = Change(id=c['id']['id'], branch=c['branch'], project=c['project']['key']['name'].split("/")[1], subject=c['subject'], last_updated=c['lastUpdatedOn'] ) change.put() # append change to memcache (last changes) known_ids.append(change.id) memcache.set('known_ids', known_ids) cl_last_chg.append(change) branches[change.branch] = 1 # append new project p_type = project_type(change.project) if not change.project in cl_projects.list(change.branch, p_type): project = Project( branch = change.branch, type = p_type, project = change.project ) project.put() cl_projects.append(project) if updates: for b in branches: cl_last_chg.sort(b) logging.debug("###> MemCache: Flush after new changes") # flush all memcache on new changes for people to see them immediately memcache_delete_multi(['filtered', 'merge-builds', 'device-projects']) #memcache_delete_multi(['known_ids', 'last_changes', 'filtered', 'merge-builds', 'project', 'project-list']) #memcache.flush_all() self.response.headers['Content-Type'] = 'text/plain; charset=UTF-8' self.response.out.write("Skipped %d of %d changes" % (skipped, len(changes)) + "\n")
def get(self): if KangExtension().check(self) == False: return branch = qs_branch(self) device = qs_device(self) kang = qs_kang_name(self) kangId = qs_kang_id(self) kangs = Change.gql("WHERE branch = :branch AND project = 'KANG'", branch=branch) cmd_done = 0 self.response.headers['Content-Type'] = 'text/html; charset=UTF-8' self.response.out.write("<h2>New KANG name '"+kang+"'</h2>\n") self.response.out.write("<table>") self.response.out.write("<thead><tr><td>id (click to rename)</td><td>info</td><td>branch</td><td>subject</td><td>project</td><td>last_updated</td></tr></thead><tbody>") for k in kangs: self.response.out.write('<tr><td><a href="/rename_kang-off/?branch='+k.branch+'&kang='+kang+'--NewName&kangId='+str(k.id)+'">'+str(k.id)+'</a></td><td>Checking KANG</td><td>'+k.branch+'</td><td>'+k.subject+'</td><td>'+k.project+'</td><td>'+str(k.last_updated)+'</td></tr>\n') if (str(k.id) == kangId): old_name = k.subject k.subject = kang+"#dev:"+device k.put() memcache_delete_multi(['last_changes', 'filtered']) self.response.out.write('<tr><td><a href="">'+str(k.id)+'</a></td><td>Renamed KANG (old: '+old_name+'; new: '+kang+')</td><td>'+k.branch+'</td><td>'+k.subject+'</td><td>'+k.project+'</td><td>'+str(k.last_updated)+'</td></tr>\n') cmd_done = 1 break self.response.out.write("</tbody></table>") if cmd_done == 0: self.response.out.write("<h2>KANG not found: "+kangId+"</h2>\n")
def get(self): logging.debug("#######> DS: Maint: LoadProjects") ch = Change.all() seen = {} db.delete(Project.all()) dev_p = CustomRomDevices().getDevices()['projects'] self.response.headers['Content-Type'] = 'text/plain; charset=UTF-8' for c in ch: if c.project == 'KANG': continue if c.project in seen: continue p_type = project_type(c.project) self.response.out.write(c.project+"\n") seen[c.project] = 1 project = Project( branch=c.branch, type=p_type, project=c.project ) project.put() #memcache.flush_all() memcache_delete_multi(['filtered', 'merge-builds', 'device-projects']) return
def get(self): if KangExtension().check(self) == False: return kang = qs_kang_name(self) branch = qs_branch(self) device = qs_device(self) change = Change(id=int(time.time() * -1), branch = branch, project = 'KANG', subject = kang+'#dev:'+device, last_updated = time.strftime('%Y-%m-%d %H:%M:%S.000000000', time.gmtime(time.time())) ) change.put() memcache_delete_multi(['last_changes', 'filtered']) self.response.headers['Content-Type'] = 'text/plain; charset=UTF-8' self.response.out.write("KEY: '"+str(change.key().id())+"'\n") self.response.out.write("Added KANG: '"+kang+"'\n")
def get(self, branch): if branch == 'None' or branch == '' or branch is None: branch = 'gingerbread' lc_list = self._get_mem(branch) if lc_list is not None: logging.debug("---> DS: Last changes cache hit") return lc_list logging.debug("###> DS: read last changes") query_limit = query_max + 20 if branch == '--all--': lc_list = Change.gql("ORDER BY last_updated DESC LIMIT %s" % query_limit) else: lc_list = Change.gql("WHERE branch IN (:branch, 'master') ORDER BY last_updated DESC LIMIT %s" % query_limit, branch=branch) return self._set_mem(lc_list, branch)
def get(self): device = qs_device(self) logging.debug("#######> DS: Maint: RmDuplicate") ch = Change.gql("ORDER BY id") seen = [] self.response.headers['Content-Type'] = 'text/html; charset=UTF-8' self.response.out.write("<table>") self.response.out.write("<thead><tr><td>action</td><td>remote</td><td>branch</td><td>id</td><td>subject</td><td>project</td><td>last_updated</td></tr></thead><tbody>") timeout = True while timeout: try: for r in ch: action = 'keep' if r.id in seen: action = 'remove' r.delete() if r.remote is None: r.remote = git_name if r.branch is None: r.branch = 'gingerbread' r.put() if r.project == 'KANG' and not re.search("^.*#dev:.*$", r.subject): r.subject = r.subject+"#dev:"+device r.put() if r.project == 'KANG' and re.search("^.*?#dev:.*?#dev:.*$", r.subject): r.subject = re.sub(r"^(.*?#dev:.*?)#dev:.*?$", r'\1', r.subject) r.put() if r.project == 'KANG' and re.search("^\d\d\d\d-\d\d-\d\d \d\d:\d\d - (.*#dev:.*)$", r.subject): r.subject = re.sub(r"^\d\d\d\d-\d\d-\d\d \d\d:\d\d - (.*#dev:.*)$", r'\1', r.subject) r.put() seen.append(r.id) #r.subject = time.strftime('%Y-%m-%d %H:%M')+' - ' self.response.out.write("<tr>") self.response.out.write("<td>"+action+"</td>\n") self.response.out.write("<td>"+r.remote+"</td>\n") self.response.out.write("<td>"+r.branch+"</td>\n") self.response.out.write("<td>"+str(r.id)+"</td>\n") self.response.out.write("<td>"+r.subject+"</td>\n") self.response.out.write("<td>"+r.project+"</td>\n") self.response.out.write("<td>"+str(r.last_updated)+"</td></tr>\n") timeout = False except DeadlineExceededError: timeout = True self.response.out.write("</tbody></table>") memcache.flush_all() return
def _update_changes(self, changes=[], known_ids=[]): skipped = 0 for c in changes: if c['id']['id'] in known_ids: skipped += 1 continue change = Change(id=c['id']['id'], project=c['project']['key']['name'].split("/")[1], subject=c['subject'], last_updated=c['lastUpdatedOn'] ) change.put() # flush all memcache on new changes for people to see them immediately memcache.flush_all() self.response.headers['Content-Type'] = 'text/plain' self.response.out.write("Skipped %d of %d changes" % (skipped, len(changes)))
def _update_changes(self, changes=[], known_ids=[]): skipped = 0 for c in changes: if c['id']['id'] in known_ids: skipped += 1 continue change = Change(id=c['id']['id'], project=c['project']['key']['name'].split("/")[1], subject=c['subject'], last_updated=c['lastUpdatedOn']) change.put() # flush all memcache on new changes for people to see them immediately memcache.flush_all() self.response.headers['Content-Type'] = 'text/plain' self.response.out.write("Skipped %d of %d changes" % (skipped, len(changes)))
def get(self): if allow_db_clear == False: self.response.headers['Content-Type'] = 'text/plain; charset=UTF-8' self.response.out.write("This feature is disabled...\n") self.response.set_status(401) return db.delete(Project.all()) db.delete(Change.all()) memcache.flush_all() self.response.headers['Content-Type'] = 'text/plain; charset=UTF-8' self.response.out.write("Database is empty...\n")
def _update_changes(self, changes=[], known_ids=[]): skipped = 0 for c in changes: if c["id"]["id"] in known_ids: skipped += 1 continue change = Change( id=c["id"]["id"], project=c["project"]["key"]["name"].split("/")[1], subject=c["subject"], last_updated=c["lastUpdatedOn"], ) change.put() # flush all memcache on new changes for people to see them immediately memcache.flush_all() self.response.headers["Content-Type"] = "text/plain" self.response.out.write("Skipped %d of %d changes" % (skipped, len(changes)))
def get(self): if KangExtension().check(self) == False: return kang = qs_kang_name(self) kangId = qs_kang_id(self) branch = qs_branch(self) kangs = Change.gql("WHERE project = 'KANG' AND branch=:branch", branch=branch) cmd_done = 0; self.response.headers['Content-Type'] = 'text/html; charset=UTF-8' self.response.out.write("<table>") self.response.out.write("<thead><tr><td>id (click to rename)</td><td>info</td><td>branch</td><td>subject</td><td>project</td><td>last_updated</td></tr></thead><tbody>") for k in kangs: self.response.out.write('<tr><td><a href="/remove_kang-off/?branch='+k.branch+'&kang='+kang+'&kangId='+str(k.id)+'">'+str(k.id)+'</a></td><td>Checking KANG</td><td>'+k.branch+'</td><td>'+k.subject+'</td><td>'+k.project+'</td><td>'+str(k.last_updated)+'</td></tr>\n') if (k.subject == kang) or (str(k.id) == kangId): db.delete(k) memcache_delete_multi(['last_changes', 'filtered']) self.response.out.write('<tr><td>'+str(k.id)+'</td><td>Removed KANG</td><td>'+k.branch+'</td><td>'+k.subject+'</td><td>'+k.project+'</td><td>'+str(k.last_updated)+'</td></tr>\n') cmd_done = 1; break self.response.out.write("</tbody></table>") if cmd_done == 0: self.response.out.write("<h2>KANG not found: "+kangId+" - '"+kang+"'</h2>\n")
def get(self): branch = qs_branch(self) device = qs_device(self) self.response.headers['Content-Type'] = 'text/html; charset=UTF-8' logging.debug("######> DS: read for DB dump") if self.request.get('filter') and self.request.get('filter') == "1": q = Change.gql("WHERE branch = :branch ORDER BY last_updated DESC", branch=branch) else: q = db.GqlQuery("SELECT * FROM Change ORDER BY last_updated DESC, id") ch = q.fetch(2000) self.response.out.write("<table>") self.response.out.write("<thead><tr><td>branch</td><td>id</td><td>subject</td><td>project</td><td>last_updated</td></tr></thead><tbody>") for r in ch: #r.subject = time.strftime('%Y-%m-%d %H:%M')+' - ' self.response.out.write("<tr><td>"+r.branch+"</td>\n") self.response.out.write("<td>"+str(r.id)+"</td>\n") self.response.out.write("<td>"+r.subject+"</td>\n") self.response.out.write("<td>"+r.project+"</td>\n") self.response.out.write("<td>"+str(r.last_updated)+"</td></tr>\n") self.response.out.write("</tbody></table>") return