Example #1
0
    def get(self):
        device = qs_device(self)

        path = os.path.join(os.path.dirname(__file__), "index.html")
        self.response.out.write(
            template.render(path, {"devices": sorted(device_specific.keys()), "for_device": device})
        )
Example #2
0
    def filter(self, device, branch):
        filter_ns = device+'-'+branch
        filtered = memcache.get('filtered', filter_ns)
        
        if filtered is not None:
            logging.debug("------> DS: Filtered cache hit")
            return filtered

        logging.debug("######> DS: Build list of filtered changes for '%s'" % filter_ns)
        filtered = []
        common = Projects().list(branch, 'common')

        lc = LastChanges().get(branch)
        for c in lc:
            if (
                    c.project in common
                    or (re.search ("vendor_", c.project) and re.search(r'\b%s\b' % device, c.subject, re.IGNORECASE))
                    or (c.project == "vendor_aokp" and is_not_device_specific(c.subject))
                    or (device in device_specific.keys() and c.project in device_specific[device])
                    or (c.project == 'KANG' and re.search("^.*#dev:"+ device +"$", c.subject))
                ):
                c_time = parse_timestamp(c.last_updated)
                c_time_offset = c_time + timedelta(hours=gerrit_time_offset)
                filtered.append({"id": c.id, "branch": c.branch, "project": c.project,
                    "subject": c.subject, "last_updated_offset": c_time_offset, 
                    "last_updated": c.last_updated, "last_updated_utc": c_time})
        
        memcache_set('filtered', filtered, namespace=filter_ns)
        return filtered
Example #3
0
    def get(self):
        device = qs_device(self)

        path = os.path.join(os.path.dirname(__file__), 'index.html')
        self.response.out.write(
            template.render(path, {
                'devices': sorted(device_specific.keys()),
                "for_device": device
            }))
Example #4
0
 def get(self):
     
     self.response.headers['Content-Type'] = 'application/json'
     self.response.out.write(json.dumps(device_specific.keys()))
Example #5
0
    def getDevices(self, force=False):
        cr_devices = memcache.get('cr-devices')

        if force == False and cr_devices is not None:
            return cr_devices

        dev_list = [];
        cache_cr_dev_timeout = cache_device_timeout
        try:
            html = urlopen(build_url).read()
            html = re.sub(r"[\n\r\t]", r'', html)
            html = re.sub(build_dev_list_regex, r'\1', html)
            for r in re.finditer(build_dev_regex, html):
                dev_list.append(r.group(1))
        except:
            dev_list = device_specific.keys()
            cache_cr_dev_timeout = 10
        
        cr_devices = {"projects": {}, "dev": {}, "dev_sort": [], "man": {}, "man_sort": [], "nav_list": [], "-unknown-": {}, "-unknown-_sort": []}
        for c_dev in dev_list:
            if c_dev == "all": continue
            
            if c_dev in device_specific:
                c_branch = self.getBranch(c_dev)
                c_manufacturer = self.getManufacturer(device_specific[c_dev])
                
                if c_manufacturer in cr_devices['man']:
                    cr_devices['man'][c_manufacturer].append(c_dev)
                else:
                    cr_devices['man'][c_manufacturer] = [c_dev]
                
                c_title = ''
                if c_dev in device_title: c_title = device_title[c_dev]
                cr_devices['dev'][c_dev] = {
                    "name":         c_dev,
                    "title":        c_title,
                    "projects":     ["android_device_"+c_manufacturer+"_"+c_dev, "device_"+c_manufacturer+"_"+c_dev] + device_specific[c_dev],
                    "manufacturer": c_manufacturer,
                    "alias":        self.getAliasName(c_dev, c_branch),
                    "branch":       c_branch
                    }
                for p in cr_devices['dev'][c_dev]['projects']: cr_devices['projects'][p] = 1
            else:
                guess_manufacturer = self.guessManufacturer(c_dev)
                if guess_manufacturer:
                    c_manufacturer = guess_manufacturer
                    if c_manufacturer in cr_devices['man']:
                        cr_devices['man'][c_manufacturer].append(c_dev)
                    else:
                        cr_devices['man'][c_manufacturer] = [c_dev]
                    
                    cr_devices['dev'][c_dev] = {
                        "name":         c_dev,
                        "title":        '',
                        "projects":     ["android_device_"+c_manufacturer+"_"+c_dev, "device_"+c_manufacturer+"_"+c_dev],
                        "manufacturer": c_manufacturer,
                        "alias":        '',
                        "branch":       'ics'
                        }
                    for p in cr_devices['dev'][c_dev]['projects']: cr_devices['projects'][p] = 1
                else:
                    cr_devices['-unknown-'][c_dev] = { "name": c_dev, "branch": 'ics' }
        
        # sort by key
        cr_devices['dev_sort'] = sorted(cr_devices['dev'])
        cr_devices['man_sort'] = sorted(cr_devices['man'])
        cr_devices['-unknown-_sort'] = sorted(cr_devices['-unknown-'])
        
        # build nav list
        for m in cr_devices['man_sort']:
            nl_dev = []
            for d in sorted(cr_devices['man'][m]):
                nl_dev.append(cr_devices['dev'][d])
            cr_devices['nav_list'].append({"name": m, "dev_list": nl_dev})
        nl_dev = []
        for d in cr_devices['-unknown-_sort']:
            nl_dev.append(cr_devices['-unknown-'][d])
        if nl_dev: cr_devices['nav_list'].append({"name": 'unknown', "dev_list": nl_dev})
        
        memcache.set('cr-devices', cr_devices, cache_cr_dev_timeout)
        return cr_devices