# -*- coding: utf-8 -*-
"""
Holds all the information relevant to the client (addresses for instance)
"""
from django.contrib.auth.models import User
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.conf import settings
BASE_ADDRESS_TEMPLATE = \
_("""
Name: %(name)s,
Address: %(address)s,
Zip-Code: %(zipcode)s,
City: %(city)s,
State: %(state)s,
Country: %(country)s
""")
ADDRESS_TEMPLATE = getattr(settings, 'SHOP_ADDRESS_TEMPLATE',
BASE_ADDRESS_TEMPLATE)
class Country(models.Model):
name = models.CharField(max_length=255)
def __unicode__(self):
return u'%s' % self.name
class Meta(object):
verbose_name = _('Country')
verbose_name_plural = _('Countries')
class Address(models.Model):
user_shipping = models.OneToOneField(User, related_name='shipping_address',
blank=True, null=True)
user_billing = models.OneToOneField(User, related_name='billing_address',
blank=True, null=True)
name = models.CharField(_('Name'), max_length=255)
address = models.CharField(_('Address'), max_length=255)
address2 = models.CharField(_('Address2'), max_length=255, blank=True)
zip_code = models.CharField(_('Zip Code'), max_length=20)
city = models.CharField(_('City'), max_length=20)
state = models.CharField(_('State'), max_length=255)
country = models.ForeignKey(Country, verbose_name=_('Country'), blank=True,
null=True)
class Meta(object):
verbose_name = _('Address')
verbose_name_plural = _("Addresses")
def __unicode__(self):
return '%s (%s, %s)' % (self.name, self.zip_code, self.city)
def clone(self):
new_kwargs = dict([(fld.name, getattr(self, fld.name))
for fld in self._meta.fields if fld.name != 'id'])
return self.__class__.objects.create(**new_kwargs)
def as_text(self):
return ADDRESS_TEMPLATE % {
'name':self.name, 'address': '%s\n%s' % (self.address, self.address2),
'zipcode':self.zip_code, 'city':self.city, 'state':self.state,
'country':self.country}
|