from django.contrib.auth.models import AbstractBaseUser, UserManager
from django.db import models

from brasilcomvc.common.email import send_template_email


class User(AbstractBaseUser):

    # Personal Info
    email = models.EmailField(unique=True)
    full_name = models.CharField('Nome Completo', max_length=255)
    username = models.SlugField(max_length=30, null=True, blank=True)

    # Professional Info
    job_title = models.CharField(max_length=80, null=True, blank=True)
    bio = models.TextField(null=True, blank=True)

    # Status
    date_joined = models.DateTimeField(auto_now_add=True)
    date_updated = models.DateTimeField(auto_now=True)
    is_active = models.BooleanField(editable=False, default=True)
    is_staff = models.BooleanField(editable=False, default=False)
    is_superuser = models.BooleanField(editable=False, default=False)

    # Notifications
    email_newsletter = models.BooleanField(default=True)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ('full_name',)

    objects = UserManager()

    def get_short_name(self):
        return self.full_name.split()[0]

    def get_full_name(self):
        return self.full_name

    def send_welcome_email(self):
        send_template_email(
            subject='Bem vindo!',
            to=self.email,
            template_name='emails/welcome.html',
            context={'user': self})


class UserAddress(models.Model):

    user = models.OneToOneField('User', related_name='address', editable=False)
    zipcode = models.CharField(max_length=90)
    address_line1 = models.CharField(max_length=120)
    address_line2 = models.CharField(max_length=80)
    state = models.ForeignKey('cities_light.Region')
    city = models.ForeignKey('cities_light.City')

@@ -1,20 +1,78 @@
+# encoding: utf8%0Afrom __future__ import unicode_literals%0A%0A
 from django.contrib.
@@ -989,24 +989,246 @@
 ault=True)%0A%0A
+    # Verbose names%0A    email.verbose_name = 'e-mail'%0A    full_name.verbose_name = 'nome completo'%0A    username.verbose_name = 'nome de usu%C3%A1rio'%0A    job_title.verbose_name = 'profiss%C3%A3o'%0A    bio.verbose_name = 'biografia'%0A%0A
     USERNAME
@@ -1972,16 +1972,16 @@
 egion')%0A
-
     city
@@ -2022,8 +2022,220 @@
 .City')%0A
+%0A    # Verbose names%0A    zipcode.verbose_name = 'CEP'%0A    address_line1.verbose_name = 'endere%C3%A7o'%0A    address_line2.verbose_name = 'complemento'%0A    state.verbose_name = 'estado'%0A    city.verbose_name = 'cidade'%0A

add verbose names to models