Code Duplication    Length = 25-27 lines in 4 locations

crabpy/gateway/crab.py 3 locations

@@ 387-413 (lines=27) @@
384
            dg.set_gateway(self)
385
        return deelgemeenten
386
387
    def list_deelgemeenten_by_gemeente(self, gemeente):
388
        '''
389
        List all `deelgemeenten` in a `gemeente`.
390
391
        :param gemeente: The :class:`Gemeente` for which the \
392
            `deelgemeenten` are wanted. Currently only Flanders is supported.
393
        :rtype: A :class:`list` of :class:`Deelgemeente`.
394
        '''
395
        try:
396
            niscode = gemeente.niscode
397
        except AttributeError:
398
            niscode = gemeente
399
400
        def creator():
401
            return [
402
                Deelgemeente(dg['id'], dg['naam'], dg['gemeente_niscode'])
403
                for dg in self.deelgemeenten.values() if dg['gemeente_niscode'] == niscode
404
            ]
405
406
        if self.caches['permanent'].is_configured:
407
            key = 'ListDeelgemeentenByGemeenteId#%s' % niscode
408
            deelgemeenten = self.caches['permanent'].get_or_create(key, creator)
409
        else:
410
            deelgemeenten = creator()
411
        for dg in deelgemeenten:
412
            dg.set_gateway(self)
413
        return deelgemeenten
414
415
    def get_deelgemeente_by_id(self, id):
416
        '''
@@ 359-385 (lines=27) @@
356
        gemeente.set_gateway(self)
357
        return gemeente
358
359
    def list_deelgemeenten(self, gewest=2):
360
        '''
361
        List all `deelgemeenten` in a `gewest`.
362
363
        :param gewest: The :class:`Gewest` for which the \
364
            `deelgemeenten` are wanted. Currently only Flanders is supported.
365
        :rtype: A :class:`list` of :class:`Deelgemeente`.
366
        '''
367
        try:
368
            gewest_id = gewest.id
369
        except AttributeError:
370
            gewest_id = gewest
371
372
        if gewest_id != 2:
373
            raise ValueError('Currently only deelgemeenten in Flanders are known.')
374
375
        def creator():
376
            return [Deelgemeente(dg['id'], dg['naam'], dg['gemeente_niscode']) for dg in self.deelgemeenten.values()]
377
378
        if self.caches['permanent'].is_configured:
379
            key = 'ListDeelgemeentenByGewestId#%s' % gewest_id
380
            deelgemeenten = self.caches['permanent'].get_or_create(key, creator)
381
        else:
382
            deelgemeenten = creator()
383
        for dg in deelgemeenten:
384
            dg.set_gateway(self)
385
        return deelgemeenten
386
387
    def list_deelgemeenten_by_gemeente(self, gemeente):
388
        '''
@@ 165-189 (lines=25) @@
162
        gewest.set_gateway(self)
163
        return gewest
164
165
    def list_provincies(self, gewest=2):
166
        '''
167
        List all `provincies` in a `gewest`.
168
169
        :param gewest: The :class:`Gewest` for which the \
170
            `provincies` are wanted.
171
        :param integer sort: What field to sort on.
172
        :rtype: A :class:`list` of :class:`Provincie`.
173
        '''
174
        try:
175
            gewest_id = gewest.id
176
        except AttributeError:
177
            gewest_id = gewest
178
179
        def creator():
180
            return [Provincie(p[0], p[1], Gewest(p[2])) for p in self.provincies if p[2] == gewest_id]
181
182
        if self.caches['permanent'].is_configured:
183
            key = 'ListProvinciesByGewestId#%s' % gewest_id
184
            provincies = self.caches['permanent'].get_or_create(key, creator)
185
        else:
186
            provincies = creator()
187
        for p in provincies:
188
            p.set_gateway(self)
189
        return provincies
190
191
    def get_provincie_by_id(self, niscode):
192
        '''

crabpy/gateway/capakey.py 1 location

@@ 106-131 (lines=26) @@
103
        return min(x_coords), min(y_coords), max(x_coords), max(y_coords)
104
105
    def list_gemeenten(self, sort=1):
106
        '''
107
        List all `gemeenten` in Vlaanderen.
108
109
        :param integer sort: What field to sort on.
110
        :rtype: A :class:`list` of :class:`Gemeente`.
111
        '''
112
        def creator():
113
            url = self.base_url + '/municipality'
114
            h = self.base_headers
115
            p = {
116
                'orderbyCode': sort == 1
117
            }
118
            res = capakey_rest_gateway_request(url, h, p).json()
119
            return [
120
                Gemeente(r['municipalityCode'], r['municipalityName'])
121
                for r in res['municipalities']
122
            ]
123
        if self.caches['permanent'].is_configured:
124
            key = 'list_gemeenten_rest#%s' % sort
125
            gemeente = self.caches['permanent'].get_or_create(key, creator)
126
        else:
127
            gemeente = creator()
128
        for g in gemeente:
129
            g.set_gateway(self)
130
        return gemeente
131
132
    def get_gemeente_by_id(self, id):
133
        '''
134
        Retrieve a `gemeente` by id (the NIScode).