class UserBase(AbstractBaseUser, PermissionsMixin): internal_name = models.CharField(_("内部登录名称"), max_length=64, unique=True) pn = models.CharField( _('电话号码'), max_length=25, null=True, validators=[validators.get_validator("phone number")]) is_active = models.BooleanField(default=True, verbose_name=_("是否在用")) is_staff = models.BooleanField(default=False, verbose_name=_("是否为管理者")) role = models.IntegerField(_("用户角色"), choices=user_role_choice.choice) registered_date = models.DateTimeField(_("注册时间"), auto_now_add=True) objects = UserManager() USERNAME_FIELD = 'internal_name' REQUIRED_FIELDS = [] class Meta: verbose_name = _('用户管理') verbose_name_plural = _('用户管理') def get_short_name(self): return u"{} - {}".format(self.internal_name, self.pn) def get_full_name(self): return u"{} - {}".format(self.internal_name, self.pn) def __unicode__(self): return self.pn or self.internal_name
class OrderInfo(models.Model): create_time = models.DateTimeField(_('订单创建时间'), auto_now_add=True) amount = models.FloatField(_("订单金额"), default=0.0) o_state = models.IntegerField(_("订单状态"), choices=order_state_choice.choice) uid_c = models.ForeignKey(UserBase, related_name="order_c", verbose_name=_("客户id"), null=True, blank=True) uid_b = models.ForeignKey(UserBase, related_name="order_b", verbose_name=_("回收员id"), null=True, blank=True) c_delivery_info = models.ForeignKey(UserDeliveryInfo, verbose_name=_("客户收货信息"), null=True, blank=True) pn = models.CharField( _('电话号码'), max_length=25, null=True, blank=True, validators=[validators.get_validator("phone number")]) recycle_bin = models.ForeignKey( RecycleBin, verbose_name=_("回收站"), null=True, blank=True, ) def __unicode__(self): return u"{}:{} vs {}".format(self.id, self.uid_c, self.uid_b)
class UserValidate(models.Model): uid = models.OneToOneField(UserBase, on_delete=models.CASCADE, related_name="user_validate", db_index=True) contact = models.CharField(max_length=100, null=True, blank=True) company = models.CharField(max_length=255, null=True, blank=True) idcard_number = models.CharField(max_length=30, null=True, blank=True) bankcard = models.CharField(max_length=255, null=True, blank=True) obank = models.CharField(max_length=255, null=True, blank=True) texno = models.CharField(max_length=255, null=True, blank=True) address = models.CharField(max_length=255, null=True, blank=True) phonenum = models.CharField( max_length=25, null=True, blank=True, validators=[validators.get_validator("phone number")]) t_user = models.IntegerField(choices=t_user_choice.choice, null=True, blank=True) validate_status = models.IntegerField( choices=validate_status_choice.choice) def __unicode__(self): if self.company is not None: return self.company elif self.contact is not None: return self.contact else: return "Validate User: %s" % self.uid.pn
class UserBase(AbstractBaseUser, PermissionsMixin): email = models.EmailField(_('email address'), null=True) # FIXME: This is an issue, pn field should not be unique. pn = models.CharField( _('phone number'), max_length=25, unique=True, validators=[validators.get_validator("phone number")]) role = models.IntegerField(_("user role"), choices=role_choice.choice) register_date = models.DateTimeField(_("register date"), auto_now_add=True) is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) objects = UserManager() USERNAME_FIELD = 'pn' REQUIRED_FIELDS = [] class Meta: verbose_name = _('userbase') verbose_name_plural = _('usersbase') unique_together = ('pn', 'role') def get_full_name(self): return self.pn def get_short_name(self): return self.pn def email_user(self, subject, message, from_email=None, **kwargs): send_mail(subject, message, from_email, [self.email], **kwargs)
class PNFinalRegisterSerializer(serializers.ModelSerializer): sid = serializers.CharField(max_length=60) password = serializers.CharField( validators=[validators.get_validator("user password")]) class Meta: model = UserBase fields = ('pn', 'role', 'password', 'sid')
class ResetPasswordSerializer(serializers.ModelSerializer): sid = serializers.CharField(max_length=60) vcode = serializers.CharField(max_length=6) pn = serializers.CharField( validators=[validators.get_validator("phone number")]) class Meta: model = UserBase fields = ('pn', 'role', 'password', 'sid', 'vcode')
class UserValidate(models.Model): uid = models.OneToOneField(UserBase, on_delete=models.CASCADE, related_name="user_validate", db_index=True) contact = models.CharField(_("联系人姓名"), max_length=100, null=True, blank=True) company = models.CharField(_("公司名称"), max_length=255, null=True, blank=True) idcard_number = models.CharField(_("身份证号"), max_length=30, null=True, blank=True) bankcard = models.CharField(_("银行账户"), max_length=255, null=True, blank=True) obank = models.CharField(_("开户银行"), max_length=255, null=True, blank=True) texno = models.CharField(_("纳税人识别号"), max_length=255, null=True, blank=True) address = models.CharField(_("注册地址"), max_length=255, null=True, blank=True) phonenum = models.CharField( max_length=25, null=True, blank=True, validators=[validators.get_validator("phone number")], verbose_name="手机号/账号") t_user = models.IntegerField(verbose_name="用户类型", choices=t_user_choice.choice, null=True, blank=True) validate_status = models.IntegerField( _("验证状态"), choices=validate_status_choice.choice) class Meta: verbose_name = _('用户管理') verbose_name_plural = _('用户管理') def __unicode__(self): if self.company is not None: return self.company elif self.contact is not None: return self.contact else: return "Validate User: %s" % self.uid.pn
class UserValidate(models.Model): uid = models.OneToOneField(UserBase, on_delete=models.CASCADE, related_name="user_validate", db_index=True) contact = models.CharField(max_length=100, null=True, blank=True) company = models.CharField(max_length=255, null=True, blank=True) idcard_number = models.CharField(max_length=30, null=True, blank=True) bankcard = models.CharField(max_length=255, null=True, blank=True) obank = models.CharField(max_length=255, null=True, blank=True) texno = models.CharField(max_length=255, null=True, blank=True) address = models.CharField(max_length=255, null=True, blank=True) phonenum = models.CharField( max_length=25, null=True, blank=True, validators=[validators.get_validator("phone number")]) t_user = models.IntegerField(choices=t_user_choice.choice, null=True, blank=True) validate_status = models.IntegerField( choices=validate_status_choice.choice)
class UserDeliveryInfo(models.Model): uid = models.ForeignKey( UserBase, related_name="user_delivery_info", verbose_name=_("用户id"), ) address = models.TextField(_("收货地址")) contact = models.CharField(_("联系人"), max_length=30, null=True, blank=True) house_number = models.CharField(_("门牌号"), max_length=20, null=True, blank=True) contact_pn = models.CharField( _('联系电话'), max_length=25, validators=[validators.get_validator("phone number")]) in_use = models.BooleanField(default=True) lat = models.FloatField(null=True, blank=True) lng = models.FloatField(null=True, blank=True) can_resolve_gps = models.BooleanField(default=False) def __unicode__(self): return u"{} {} {} {}".format(self.address, self.house_number, self.contact, self.contact_pn)
class LoginSerializer(serializers.Serializer): code = serializers.CharField(max_length=50) pn = serializers.CharField( max_length=20, validators=[validators.get_validator("phone number")])
class ForgetPwdSerializer(serializers.Serializer): pn = serializers.CharField( max_length=20, validators=[validators.get_validator("phone number")]) new_pwd1 = serializers.CharField(max_length=50) new_pwd2 = serializers.CharField(max_length=50) vcode = serializers.CharField(max_length=6)
class SendSerializer(serializers.Serializer): pn = serializers.CharField( max_length=20, validators=[validators.get_validator("phone number")])
class RecyclingStaffLoginSerializer(serializers.Serializer): pn = serializers.CharField( max_length=20, validators=[validators.get_validator("phone number")]) pwd = serializers.CharField(max_length=50)
class SubmitPnSerializer(serializers.Serializer): pn = serializers.CharField( max_length=20, validators=[validators.get_validator("phone number")]) user_sid = serializers.CharField(max_length=127)
class ChangePasswordSerializer(serializers.Serializer): user_sid = serializers.CharField() old_password = serializers.CharField() new_password = serializers.CharField( validators=[validators.get_validator("user password")])
class ValidateViaSMSApiSerializer(serializers.Serializer): pn = serializers.CharField(validators=[ validators.get_validator('phone number'), ])