--- /dev/null
+from django.contrib import admin
+
+from . import models
+
+
+class LanguageAdmin(admin.ModelAdmin):
+ list_display = ['iso_code', 'name']
+ search_fields = ['iso_code', 'name']
+
+admin.site.register(models.Language, LanguageAdmin)
+
+
+class CountryAdmin(admin.ModelAdmin):
+ list_display = ['iso_code', 'name', 'main_language']
+ search_fields = ['iso_code', 'name']
+
+admin.site.register(models.Country, CountryAdmin)
+
+
+class ProfileAdmin(admin.ModelAdmin):
+ list_display = ['account', 'native']
+ search_fields = ['account__first_name', 'account__last_name', 'account__username']
+
+admin.site.register(models.Profile, ProfileAdmin)
+
+
+class AddressAdmin(admin.ModelAdmin):
+ list_display = ['street', 'building', 'city', 'locality', 'zipcode', 'city', 'country']
+ search_fields = ['street', 'city', 'zipcode', 'city', 'country__name']
+ list_filter = ['country']
+
+admin.site.register(models.Address, AddressAdmin)
+
+
+class ProfileAddressAdmin(admin.ModelAdmin):
+ list_display = ['profile', 'address', 'rank']
+ search_fields = ['profile__account__first_name', 'profile__account__last_name', 'profile__account__username',
+ 'address__street', 'address__city', 'address__zipcode', 'address__country__name']
+ list_filter = ['address__country']
+
+admin.site.register(models.ProfileAddress, ProfileAddressAdmin)
--- /dev/null
+# -*- coding: utf-8 -*-
+
+from django.db import models
+from django.utils.translation import ugettext_lazy as _
+
+from xnet.accounts import models as accounts_models
+
+
+class Language(models.Model):
+ iso_code = models.CharField(max_length=2, unique=True, verbose_name=_(u"code ISO"))
+ name = models.CharField(max_length=30, unique=True, verbose_name=_(u"nom"))
+
+ class Meta:
+ verbose_name = _(u"langue")
+ verbose_name_plural = _(u"langues")
+
+ def __unicode__(self):
+ return u"%s (%s)" % (self.name, self.iso_code)
+
+
+class Country(models.Model):
+ iso_code = models.CharField(max_length=2, unique=True, verbose_name=_(u"code ISO"))
+ name = models.CharField(max_length=30, unique=True, verbose_name=_(u"nom"))
+ main_language = models.ForeignKey(Language, blank=True, null=True,
+ verbose_name=_(u"langue principale"), related_name='countries')
+
+ class Meta:
+ verbose_name = _(u"pays")
+ verbose_name_plural = _(u"pays")
+
+ def __unicode__(self):
+ return u"%s (%s)" % (self.name, self.iso_code)
+
+
+class Address(models.Model):
+ text = models.TextField(verbose_name=_(u"texte"))
+ postal_text = models.TextField(verbose_name=_(u"texte postal"))
+
+ latitude = models.FloatField(verbose_name=_(u"latitude"))
+ longitude = models.FloatField(verbose_name=_(u"longitude"))
+
+ street = models.CharField(max_length=100, verbose_name=_(u"rue"))
+ building = models.CharField(max_length=100, blank=True, verbose_name=_(u"bâtiment"))
+ locality = models.CharField(max_length=100, blank=True, verbose_name=_(u"lieu-dit"))
+ zipcode = models.SlugField(max_length=10, verbose_name=_(u"code postal"))
+ city = models.CharField(max_length=100, verbose_name=_(u"ville"))
+ country = models.ForeignKey(Country, related_name='adresses', verbose_name=_(u"pays"))
+
+ class Meta:
+ verbose_name = _(u"adresse")
+ verbose_name_plural = _(u"adresses")
+
+ def __unicode__(self):
+ building_part = u"(%s) " if self.building else u""
+ locality_part = u"%s, " if self.locality else u""
+ return u"%(street)s %(building)s%(locality)s, %(zipcode)s %(city)s, %(country)s" % dict(
+ street=self.street,
+ building=building_part,
+ locality=locality_part,
+ zipcode=self.zipcode,
+ city=self.city,
+ country=self.country.name,
+ )
+
+
+class Profile(models.Model):
+ account = models.OneToOneField(accounts_models.Account,
+ related_name='profile', verbose_name=_(u"Profile"))
+ native = models.BooleanField(verbose_name=_(u"Native user"),
+ help_text=_(u"Marks a user as 'native', i.e belonging to the current organization."))
+
+ nationality = models.ForeignKey(Country, related_name='nationals', verbose_name=_(u"nationalité"))
+ alt_nationality = models.ForeignKey(Country, related_name='alt_nationals', verbose_name=_(u"autre nationalité"))
+
+ def __unicode__(self):
+ return unicode(self.account)
+
+
+class ProfileAddress(models.Model):
+ profile = models.ForeignKey(Profile, related_name='addresses', verbose_name=_(u"profil"))
+ address = models.ForeignKey(Address, related_name='profiles', verbose_name=_(u"adresse"))
+ rank = models.IntegerField(verbose_name=_(u"rank"))
+
+ class Meta:
+ verbose_name = _(u"adresse d'un profil")
+ verbose_name_plural = _(u"adresses de profils")
+ unique_together = ('profile', 'rank')
+
+ def __unicode__(self):
+ return u"%s of %s" % (self.rank, self.profile)