from django.db import models
from django.contrib.auth.models import AbstractBaseUser
from django.contrib.auth.models import PermissionsMixin
from django.contrib.auth.models import BaseUserManager
from django.conf import settings


class UserProfileManager(BaseUserManager):
	"""User manager for the app"""
	def create_user(self,email,name,password=None):
		if not email:
			raise ValueError("User must have email")
		email=self.normalize_email(email)
		user=self.model(email=email,name=name)
		user.set_password(password)
		user.save(using=self._db)	
		return user
	def create_superuser(self,email,name,password):
		user=self.create_user(email,name,password)
		user.is_superuser=True
		user.is_staff=True
		user.save(using=self._db)
		return user


class UserProfile(AbstractBaseUser,PermissionsMixin):
	"""Custom user model for the app"""
	email=models.EmailField(max_length=255,unique=True)
	name=models.CharField(max_length=255)
	is_active=models.BooleanField(default=True)
	is_staff=models.BooleanField(default=False)

	objects=UserProfileManager()

	USERNAME_FIELD = 'email'
	REQUIRED_FIELDS = ['name']
    


	def get_full_name(self):
		return self.name

	def get_short_name(self):
		return self.name	

	def __str__(self):
		return self.email	

class UserProfilesFeed(models.Model):
	"""model for holding feeds"""
	user_profile=models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
	feed_text=models.CharField(max_length=255)
	created_on=models.DateTimeField(auto_now_add=True)
	def __str__(self):

		return self.feed_text