Beispiel #1
0
    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")
Beispiel #2
0
 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")
Beispiel #3
0
 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
Beispiel #4
0
 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")
Beispiel #5
0
 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)
Beispiel #6
0
 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
Beispiel #7
0
    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)))
Beispiel #8
0
    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)))
Beispiel #9
0
 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")
Beispiel #10
0
    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)))
Beispiel #11
0
 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")
Beispiel #12
0
 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