コード例 #1
0
class Code(models.Model):
    area = models.ForeignKey(Area, related_name='codes')
    type = models.ForeignKey(CodeType, related_name='codes')
    code = models.CharField(max_length=500)
    objects = Manager()

    class Meta:
        unique_together = ('area', 'type')

    def __unicode__(self):
        return '%s (%s) [%s]' % (self.code, self.type.code, self.area.id)
コード例 #2
0
ファイル: models.py プロジェクト: mikejamesthompson/mapit
class NameType(models.Model):

    # Name types are for storing different types of names. This could have
    # different uses - in the UK it is used to store names from different
    # sources, and then one is picked for the canonical name on the Area model
    # itself; in global MaPit, the different language names are stored here
    # and displayed in the alternative names section.

    code = models.CharField(max_length=10, unique=True, help_text="A unique code to identify this type of name: eg 'english' or 'iso'")
    description = models.CharField(max_length=200, blank=True, help_text="The name of this type of name, eg 'English' or 'ISO Standard'")
    objects = Manager()

    def __unicode__(self):
        return '%s (%s)' % (self.description, self.code)
コード例 #3
0
class Name(models.Model):
    area = models.ForeignKey(Area, related_name='names')
    type = models.ForeignKey(NameType, related_name='names')
    name = models.CharField(max_length=2000)
    objects = Manager()

    class Meta:
        unique_together = ('area', 'type')

    def __unicode__(self):
        return '%s (%s) [%s]' % (self.name, self.type.code, self.area.id)

    def make_friendly_name(self, name):
        n = re.sub('\s+', ' ', name.name.strip())
        n = n.replace('St. ', 'St ')
        if name.type.code == 'M': return n
        if name.type.code == 'S': return n
        # Type must be 'O' here
        n = re.sub(' Euro Region$', '', n)  # EUR
        n = re.sub(' (Burgh|Co|Boro) Const$', '', n)  # WMC
        n = re.sub(' P Const$', '', n)  # SPC
        n = re.sub(' PER$', '', n)  # SPE
        n = re.sub(' GL Assembly Const$', '', n)  # LAC
        n = re.sub(' Assembly Const$', '', n)  # WAC
        n = re.sub(' Assembly ER$', '', n)  # WAE
        n = re.sub(' London Boro$', ' Borough', n)  # LBO
        if self.area.country and self.area.country.name == 'Wales':
            n = re.sub('^.*? - ', '', n)  # UTA
        n = re.sub('(?:The )?City of (.*?) (District )?\(B\)$', r'\1 City',
                   n)  # UTA
        n = re.sub(' District \(B\)$', ' Borough', n)  # DIS
        n = re.sub(' \(B\)$', ' Borough', n)  # DIS
        if self.area.type.code in ('CTY', 'DIS', 'LBO', 'UTA', 'MTD'):
            n += ' Council'
        n = re.sub(' (ED|CP)$', '', n)  # CPC, CED, UTE
        n = re.sub(' Ward$', '', n)  # DIW, LBW, MTW, UTW
        return n

    def save(self, *args, **kwargs):
        super(Name, self).save(*args, **kwargs)
        try:
            name = self.area.names.filter(
                type__code__in=('M', 'O', 'S')).order_by('type__code')[0]
            self.area.name = self.make_friendly_name(name)
            self.area.save()
        except:
            pass

    def as_tuple(self):
        return (self.type.code, [self.type.description, self.name])
コード例 #4
0
ファイル: models.py プロジェクト: alasdaircr/mapit
class Name(models.Model):
    area = models.ForeignKey(Area, related_name='names')
    type = models.ForeignKey(NameType, related_name='names')
    name = models.CharField(max_length=2000)
    objects = Manager()

    class Meta:
        unique_together = ('area', 'type')

    def __str__(self):
        return '%s (%s) [%s]' % (self.name, self.type.code, self.area.id)

    def save(self, *args, **kwargs):
        super(Name, self).save(*args, **kwargs)
        if hasattr(countries, 'name_save_hook'):
            countries.name_save_hook(self)

    def as_tuple(self):
        return (self.type.code, [self.type.description, self.name])