Skip to content

Instantly share code, notes, and snippets.

@gilsondev
Created June 28, 2011 12:14
Show Gist options
  • Save gilsondev/1051011 to your computer and use it in GitHub Desktop.
Save gilsondev/1051011 to your computer and use it in GitHub Desktop.
Overriding the method save() and delete() to insert a user with their information.
# coding: utf8
from django.db import models
from django.contrib.auth.models import User, Permission
class Operator(models.Model):
user= models.ForeignKey(User,related_name='operator_user',blank=True,null=True,editable=False)
name = models.CharField(max_length=80)
username = models.CharField(max_length=30,unique=True)
password = models.CharField(max_length=30)
email = models.EmailField(max_length=255,unique=True)
role = models.CharField(max_length=80,editable=False)
phone = models.CharField(max_length=15)
obs = models.TextField()
class Meta():
db_table = 'operators'
ordering = ['nome']
permissions = (
("view_operador","Can view operador"),
)
def __unicode__(self): return self.nome
def save(self):
if not self.id:
user = User.objects.filter(username=self.username)
if user:
u = user[0]
else:
u = User.objects.create_user(self.username,self.email,self.password)
u.save()
# Register permissions
u.user_permissions = [permission.id for permission in Permission.objects.filter(codename__icontains='operator')]
self.user= u
else:
self.user.username = self.username
self.user.email = self.email
self.user.set_password(self.password)
self.user.save()
super(Operador, self).save()
def delete(self, id_operator):
operador = Operator.objects.get(pk=id_operator)
user = User.objects.get(id=operador.user.id)
user.delete()
super(Operator, self).delete()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment