1 # -*- coding: utf-8 -*-
3 from django
.db
import models
4 from django
.utils
.translation
import ugettext_lazy
as _
6 from xnet
.accounts
import models
as accounts_models
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"))
14 verbose_name
= _(u
"langue")
15 verbose_name_plural
= _(u
"langues")
17 def __unicode__(self
):
18 return u
"%s (%s)" %
(self
.name
, self
.iso_code
)
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')
28 verbose_name
= _(u
"pays")
29 verbose_name_plural
= _(u
"pays")
31 def __unicode__(self
):
32 return u
"%s (%s)" %
(self
.name
, self
.iso_code
)
35 class Address(models
.Model
):
36 text
= models
.TextField(verbose_name
=_(u
"texte"))
37 postal_text
= models
.TextField(verbose_name
=_(u
"texte postal"))
39 latitude
= models
.FloatField(verbose_name
=_(u
"latitude"))
40 longitude
= models
.FloatField(verbose_name
=_(u
"longitude"))
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"))
50 verbose_name
= _(u
"adresse")
51 verbose_name_plural
= _(u
"adresses")
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
(
58 building
=building_part
,
59 locality
=locality_part
,
62 country
=self
.country
.name
,
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."))
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é"))
75 def __unicode__(self
):
76 return unicode(self
.account
)
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"))
85 verbose_name
= _(u
"adresse d'un profil")
86 verbose_name_plural
= _(u
"adresses de profils")
87 unique_together
= ('profile', 'rank')
89 def __unicode__(self
):
90 return u
"%s of %s" %
(self
.rank
, self
.profile
)