Commit | Line | Data |
---|---|---|
edcfa1b0 RB |
1 | # -*- coding: utf-8 -*- |
2 | ||
3 | from django.db import models | |
4 | from django.utils.translation import ugettext_lazy as _ | |
5 | ||
6 | from xnet.accounts import models as accounts_models | |
7 | ||
8 | ||
9 | class Language(models.Model): | |
10 | iso_code = models.CharField(max_length=2, unique=True, verbose_name=_(u"code ISO")) | |
11 | name = models.CharField(max_length=30, unique=True, verbose_name=_(u"nom")) | |
12 | ||
13 | class Meta: | |
14 | verbose_name = _(u"langue") | |
15 | verbose_name_plural = _(u"langues") | |
16 | ||
17 | def __unicode__(self): | |
18 | return u"%s (%s)" % (self.name, self.iso_code) | |
19 | ||
20 | ||
21 | class Country(models.Model): | |
22 | iso_code = models.CharField(max_length=2, unique=True, verbose_name=_(u"code ISO")) | |
23 | name = models.CharField(max_length=30, unique=True, verbose_name=_(u"nom")) | |
24 | main_language = models.ForeignKey(Language, blank=True, null=True, | |
25 | verbose_name=_(u"langue principale"), related_name='countries') | |
26 | ||
27 | class Meta: | |
28 | verbose_name = _(u"pays") | |
29 | verbose_name_plural = _(u"pays") | |
30 | ||
31 | def __unicode__(self): | |
32 | return u"%s (%s)" % (self.name, self.iso_code) | |
33 | ||
34 | ||
35 | class Address(models.Model): | |
36 | text = models.TextField(verbose_name=_(u"texte")) | |
37 | postal_text = models.TextField(verbose_name=_(u"texte postal")) | |
38 | ||
39 | latitude = models.FloatField(verbose_name=_(u"latitude")) | |
40 | longitude = models.FloatField(verbose_name=_(u"longitude")) | |
41 | ||
42 | street = models.CharField(max_length=100, verbose_name=_(u"rue")) | |
43 | building = models.CharField(max_length=100, blank=True, verbose_name=_(u"bâtiment")) | |
44 | locality = models.CharField(max_length=100, blank=True, verbose_name=_(u"lieu-dit")) | |
45 | zipcode = models.SlugField(max_length=10, verbose_name=_(u"code postal")) | |
46 | city = models.CharField(max_length=100, verbose_name=_(u"ville")) | |
47 | country = models.ForeignKey(Country, related_name='adresses', verbose_name=_(u"pays")) | |
48 | ||
49 | class Meta: | |
50 | verbose_name = _(u"adresse") | |
51 | verbose_name_plural = _(u"adresses") | |
52 | ||
53 | def __unicode__(self): | |
54 | building_part = u"(%s) " if self.building else u"" | |
55 | locality_part = u"%s, " if self.locality else u"" | |
56 | return u"%(street)s %(building)s%(locality)s, %(zipcode)s %(city)s, %(country)s" % dict( | |
57 | street=self.street, | |
58 | building=building_part, | |
59 | locality=locality_part, | |
60 | zipcode=self.zipcode, | |
61 | city=self.city, | |
62 | country=self.country.name, | |
63 | ) | |
64 | ||
65 | ||
66 | class Profile(models.Model): | |
67 | account = models.OneToOneField(accounts_models.Account, | |
68 | related_name='profile', verbose_name=_(u"Profile")) | |
69 | native = models.BooleanField(verbose_name=_(u"Native user"), | |
70 | help_text=_(u"Marks a user as 'native', i.e belonging to the current organization.")) | |
71 | ||
72 | nationality = models.ForeignKey(Country, related_name='nationals', verbose_name=_(u"nationalité")) | |
73 | alt_nationality = models.ForeignKey(Country, related_name='alt_nationals', verbose_name=_(u"autre nationalité")) | |
74 | ||
75 | def __unicode__(self): | |
76 | return unicode(self.account) | |
77 | ||
78 | ||
79 | class ProfileAddress(models.Model): | |
80 | profile = models.ForeignKey(Profile, related_name='addresses', verbose_name=_(u"profil")) | |
81 | address = models.ForeignKey(Address, related_name='profiles', verbose_name=_(u"adresse")) | |
82 | rank = models.IntegerField(verbose_name=_(u"rank")) | |
83 | ||
84 | class Meta: | |
85 | verbose_name = _(u"adresse d'un profil") | |
86 | verbose_name_plural = _(u"adresses de profils") | |
87 | unique_together = ('profile', 'rank') | |
88 | ||
89 | def __unicode__(self): | |
90 | return u"%s of %s" % (self.rank, self.profile) |