def update(self, instance, validated_data): profile_data = dict() user_data = dict() send_new_activation = False for key, value in validated_data.items(): if key not in USER_FIELDS: profile_data.update({key: value}) else: user_data.update({key: value}) if 'email' in validated_data and validated_data[ 'email'] != instance.email: send_new_activation = True activation_key = uuid.uuid4() activation_key_expires = datetime.datetime.today( ) + datetime.timedelta(2) profile_data.update({ 'activation_key': activation_key, 'activation_key_expires': activation_key_expires, 'account_activated': False }) self.create_or_update_profile(instance, profile_data) for key, value in user_data.items(): setattr(instance, key, value) instance.save() if send_new_activation: send_activation_email(instance) return instance
def create(self, validated_data): """ Creates a new user. Pops off values for user profile, creates the user and userprofile, and associates the two Password is added separately to ensure it is correctly hashed :param validated_data: :return: a newly created user object """ profile_data = dict() for key, value in validated_data.items(): if key not in USER_FIELDS: profile_data.update({key: value}) activation_key = uuid.uuid4() activation_key_expires = datetime.datetime.today( ) + datetime.timedelta(2) # Add activation key and key expiry date to data dictionary profile_data.update({ 'activation_key': activation_key, 'activation_key_expires': activation_key_expires }) user = User.objects.create(username=validated_data['username'], email=validated_data['email'], first_name=validated_data['first_name'], last_name=validated_data['last_name']) user.set_password(validated_data['password']) user.save() self.create_or_update_profile(user, profile_data) send_activation_email(user) return user
def create(self, validated_data): """ Creates a new user. Pops off values for user profile, creates the user and userprofile, and associates the two Password is added separately to ensure it is correctly hashed :param validated_data: :return: a newly created user object """ profile_data = dict() for key, value in validated_data.items(): if key not in USER_FIELDS: profile_data.update({key: value}) activation_key = uuid.uuid4() activation_key_expires = datetime.datetime.today() + datetime.timedelta(2) # Add activation key and key expiry date to data dictionary profile_data.update({'activation_key':activation_key, 'activation_key_expires':activation_key_expires}) user = User.objects.create( username=validated_data['username'], email=validated_data['email'], first_name=validated_data['first_name'], last_name=validated_data['last_name'] ) user.set_password(validated_data['password']) user.save() self.create_or_update_profile(user, profile_data) send_activation_email(user) return user
def update(self, instance, validated_data): profile_data = dict() user_data = dict() send_new_activation = False for key, value in validated_data.items(): if key not in USER_FIELDS: profile_data.update({key: value}) else: user_data.update({key:value}) if 'email' in validated_data and validated_data['email'] != instance.email: send_new_activation = True activation_key = uuid.uuid4() activation_key_expires = datetime.datetime.today() + datetime.timedelta(2) profile_data.update({'activation_key':activation_key, 'activation_key_expires':activation_key_expires, 'account_activated':False}) self.create_or_update_profile(instance, profile_data) for key, value in user_data.items(): setattr(instance, key, value) instance.save() if send_new_activation: send_activation_email(instance) return instance
def get(self, request, activation_key, format=None): """ Marks the user corresponding to the activation key as active, if it exists :param request: None :param activation_key: from url emailed to user :param format: :return: Message confirming activation, resending activation key, or 404 """ profile = self.get_profile(activation_key) email = profile.user.email username = profile.user.username if profile.activation_key_expires < timezone.now(): profile.activation_key = uuid.uuid4() profile.activation_key_expires = datetime.datetime.today( ) + datetime.timedelta(2) profile.save() send_activation_email(profile.user) return Response( "key expired, a new activation key has been emailed to you", status=status.HTTP_412_PRECONDITION_FAILED) profile.account_activated = True profile.save() return Response("Thank you, your account is now active")
def get(self, request, activation_key, format=None): """ Marks the user corresponding to the activation key as active, if it exists :param request: None :param activation_key: from url emailed to user :param format: :return: Message confirming activation, resending activation key, or 404 """ profile = self.get_profile(activation_key) email = profile.user.email username = profile.user.username if profile.activation_key_expires < timezone.now(): profile.activation_key = uuid.uuid4() profile.activation_key_expires = datetime.datetime.today() + datetime.timedelta(2) profile.save() send_activation_email(profile.user) return Response("key expired, a new activation key has been emailed to you", status=status.HTTP_412_PRECONDITION_FAILED) profile.account_activated = True profile.save() return Response("Thank you, your account is now active")