Пример #1
0
    def _parse_sites(self, sheet):
        """
            Sub method of _parse_sheet() that parses only the 'sites' sheet

            Parameters
            ----------
            sheet: GSpread worksheet
                sheet containing metadata about sites
        """

        records = sheet.get_all_records()

        for r in records:
            if r['Key'] == '':
                continue
            new_site = Site(hp=self,
                            key=r['Key'],
                            size=r['House size'],
                            inhabitants=r['Number of inhabitants'],
                            postcode=r['postcode'],
                            construction_year=r['construction year'],
                            k_level=r['K-level'],
                            e_level=r['E-level'],
                            epc_cert=r['EPC certificate'])
            self.sites.append(new_site)

        print('{} Sites created'.format(len(self.sites)))
Пример #2
0
    def place_site(self,
                   new_site_type,
                   level,
                   player_table,
                   required_zone_types=None):
        def is_valid_site_hex(curr_hex):
            if curr_hex.active_group != None:
                return False

            if curr_hex.hex_type.name not in new_site_type.legal_terrain:
                return False

            if curr_hex.has_site():
                return False

            if required_zone_types != None and self.get_zone(
                    curr_hex.x,
                    curr_hex.y).zone_type.name not in required_zone_types:
                return False

            neighbors = self.get_neighbors(curr_hex.x, curr_hex.y)

            return not any([neighbor.has_site() for neighbor in neighbors])

        site_hex = self.get_random_hex(is_valid_site_hex)
        if site_hex == None:
            return None

        site_hex.site = Site(site_hex, new_site_type, level,
                             player_table[new_site_type.owner_name])
        site_hex.site.initialize()
        return site_hex
Пример #3
0
    def load_sites(self):
        """
        Sets self.sites as a dict of site objects, keyed by site name
        """
        sites = userapi.sites(self.session)
        self.sites = {}
        self.sitemap = {}

        for uuid, properties in sites.iteritems():
            settings = siteapi.settings(self.session, uuid)
            settings['uuid'] = uuid
            name = settings['name']
            self.sites[name] = Site(self.session, settings)
            self.sitemap[uuid] = name
Пример #4
0
    def get_sum_by_site(cls, page=1, limit=10):
        sites = Site.get_pagination(page, limit)
        total = Site.objects.count()

        items = []

        for site in sites:
            q = cls.objects.filter(site_id=site.id).values_list(
                'dataA', 'dataB')

            # the results are a collection of tupples [(d1, d2), (d3, d4) ... (dn, dm)]
            # so  we should be able to use the transpose to get [(d1, d3, ..., dn), (d2, d4, ..., dm)]
            # then sum each group
            dataA, dataB = map(sum, zip(*list(q)))

            items.append(cls(site=site, dataA=dataA, dataB=dataB))

        return items, total
Пример #5
0
    def get_avg_sql_by_site(cls, page=1, limit=10):
        table_name = cls.objects.model._meta.db_table
        ids = Site.get_ids(page, limit)
        total = Site.objects.count()

        query = ' SELECT' \
                '   0 AS id,' \
                '   `site_id`,' \
                ' 	AVG(`dataA`) AS dataA,' \
                ' 	AVG(`dataB`) AS dataB' \
                ' FROM' \
                '   `{}`' \
                ' WHERE `site_id` IN({})' \
                ' GROUP BY `site_id`' \
                ' ORDER BY `site_id` DESC'

        query = query.format(table_name, ",".join(map(str, ids)))

        return list(cls.objects.raw(query)), total
Пример #6
0
 def __init__(self, siteId, name, baseUrl):
     Site.__init__(self, siteId, name, baseUrl)