X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fcore%2Fmodels%2Fuser.py;h=c8df8362baeda37ddd72bfda15cbc2caf5c06ca6;hb=fb4b29a51e5215f0313232e7093a70a1013651e1;hp=e8914524140ae36c7475e97b2eaa086cfdc81e96;hpb=0fd5fcf86e7aa689a746b0bd8c1a96098b7ffa64;p=plstackapi.git diff --git a/planetstack/core/models/user.py b/planetstack/core/models/user.py index e891452..c8df836 100644 --- a/planetstack/core/models/user.py +++ b/planetstack/core/models/user.py @@ -1,5 +1,7 @@ import os import datetime +import sys +import hashlib from collections import defaultdict from django.forms.models import model_to_dict from django.db import models @@ -110,8 +112,28 @@ class User(AbstractBaseUser): #, DiffModelMixIn): def get_field_diff(self, field_name): return self.diff.get(field_name, None) + + #classmethod + def getValidators(cls): + """ primarily for REST API, return a dictionary of field names mapped + to lists of the type of validations that need to be applied to + those fields. + """ + validators = {} + for field in cls._meta.fields: + l = [] + if field.blank==False: + l.append("notBlank") + if field.__class__.__name__=="URLField": + l.append("url") + validators[field.name] = l + return validators # ---- end copy stuff from DiffModelMixin ---- + @property + def remote_password(self): + return hashlib.md5(self.password).hexdigest()[:12] + class Meta: app_label = "core" @@ -133,13 +155,15 @@ class User(AbstractBaseUser): #, DiffModelMixIn): public_key = models.TextField(null=True, blank=True, max_length=1024, help_text="Public key string") is_active = models.BooleanField(default=True) - is_admin = models.BooleanField(default=True) + is_admin = models.BooleanField(default=False) is_staff = models.BooleanField(default=True) is_readonly = models.BooleanField(default=False) + is_registering = models.BooleanField(default=False) created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) enacted = models.DateTimeField(null=True, default=None) + policed = models.DateTimeField(null=True, default=None) backend_status = models.CharField(max_length=140, default="Provisioning in progress") deleted = models.BooleanField(default=False) @@ -239,9 +263,10 @@ class User(AbstractBaseUser): #, DiffModelMixIn): def save(self, *args, **kwds): if not self.id: self.set_password(self.password) - if self.is_active: - if self.password=="!": - self.send_temporary_password() + print "XXX", self, self.is_active, self.is_registering + if self.is_active and self.is_registering: + self.send_temporary_password() + self.is_registering=False self.username = self.email super(User, self).save(*args, **kwds)