diff --git a/authnz/admin.py b/authnz/admin.py index 8f54d69..3276890 100644 --- a/authnz/admin.py +++ b/authnz/admin.py @@ -68,7 +68,7 @@ class UserAdmin(admin.ModelAdmin): def calculate_review_rate(self, request, queryset): for user in queryset.all(): user.profile.total_review, user.profile.rate_avg = handle_user_total_rate(user) - user.save() + user.profile.save(update_fields=["total_review", "rate_avg"]) calculate_review_rate.short_description = 'Calculate user total review rate' calculate_review_rate.allowed_permissions = ('change',) @@ -76,7 +76,7 @@ def calculate_review_rate(self, request, queryset): def change_jwt(self, request, queryset): for user in queryset.all(): user.profile.jwt_secret = uuid_str() - user.save() + user.profile.save(update_fields=["jwt_secret"]) change_jwt.short_description = 'Change user jwt' change_jwt.allowed_permissions = ('change',) diff --git a/authnz/models.py b/authnz/models.py index de7a4ba..1425a07 100644 --- a/authnz/models.py +++ b/authnz/models.py @@ -43,10 +43,6 @@ def create_user_profile(sender, instance, created, **kwargs): Profile.objects.create(user=instance) cache.delete(settings.TOTAL_USER) - @receiver(post_save, sender=User) - def save_user_profile(sender, instance, **kwargs): - instance.profile.save() - def hash_user_data(self): if self.email: self.email = md5(self.email.encode()).hexdigest()[:30] @@ -59,6 +55,6 @@ def hash_user_data(self): if self.user.email: self.user.email = md5(self.user.email.encode()).hexdigest()[:30] self.user.username = md5(self.user.username.encode()).hexdigest()[:30] - self.save() - self.user.profile.jwt_secret = uuid_str() - self.user.save() + self.jwt_secret = uuid_str() + self.user.save(update_fields=["first_name", "last_name", "email", "username"]) + self.save(update_fields=["email", "mobile", "jwt_secret"]) diff --git a/authnz/serialziers.py b/authnz/serialziers.py index 8ce3cb5..f4ed87f 100644 --- a/authnz/serialziers.py +++ b/authnz/serialziers.py @@ -78,7 +78,8 @@ def update(self, instance, validated_data): instance.last_name = validated_data.get('last_name', instance.last_name) instance.profile.profile_image = validated_data.get('profile_image', instance.profile.profile_image) instance.profile.biography = validated_data.get('biography', instance.profile.biography) - instance.save() + instance.save(update_fields=["first_name", "last_name"]) + instance.profile.save(update_fields=["nick_name", "profile_image", "biography"]) return instance def to_representation(self, instance): diff --git a/authnz/transactions.py b/authnz/transactions.py index a76a263..bc53d71 100644 --- a/authnz/transactions.py +++ b/authnz/transactions.py @@ -11,7 +11,7 @@ def register_user_with_email_and_password(email, password): user.set_password(password) user.save() user.profile.email = email - user.save() + user.profile.save(update_fields=["email"]) return user @@ -19,7 +19,8 @@ def register_user_with_email_and_password(email, password): def change_user_password(user, password): user.set_password(password) user.profile.jwt_secret = utilities.uuid_str() - user.save() + user.save(update_fields=["password"]) + user.profile.save(update_fields=["jwt_secret"]) @transaction.atomic @@ -29,5 +30,5 @@ def open_auth_user_creator(email, first_name, last_name, profile_image): user.profile.profile_image = utilities.file_uploader(user.profile.nick_name, profile_image) user.profile.email = email user.profile.email_confirmed = True - user.save() + user.profile.save(update_fields=["profile_image", "email", "email_confirmed"]) return user diff --git a/authnz/views.py b/authnz/views.py index b25375b..b6a8672 100644 --- a/authnz/views.py +++ b/authnz/views.py @@ -48,7 +48,7 @@ def post(self, request): elif user: permissions.check_send_email_permission(email) user.set_password(serialized_data.data['password']) - user.save() + user.save(update_fields=["password"]) utilities.send_email_confirm(user, request) return responses.SuccessResponse().send() else: @@ -237,7 +237,7 @@ def get(self, request, uidb64, token): if user is not None and utilities.account_activation_token.check_token(user, token): user.profile.email_confirmed = True - user.profile.save() + user.profile.save(update_fields=["email_confirmed"]) return render(request, 'mail_confirmed.html', {'domain': get_current_site(request).domain, 'name': user.username}) else: @@ -426,7 +426,7 @@ def post(self, request, backend, *args, **kwargs): else: request.user.profile.email = email request.user.profile.email_confirmed = True - request.user.save() + request.user.profile.save(update_fields=["email", "email_confirmed"]) else: raise authnz_exceptions.CustomException(detail=_('Wrong backend')) return responses.SuccessResponse().send() diff --git a/review/models.py b/review/models.py index 8696cd9..d35fe77 100644 --- a/review/models.py +++ b/review/models.py @@ -94,7 +94,7 @@ def save(self, *args, **kwargs): cache.delete(settings.TOTAL_REVIEW) super().save(*args, **kwargs) self.creator.profile.total_review, self.creator.profile.rate_avg = handle_user_total_rate(self.creator) - self.creator.save() + self.creator.profile.save(update_fields=["total_review", "rate_avg"]) class Interview(models.Model): @@ -160,7 +160,7 @@ def save(self, *args, **kwargs): cache.delete(settings.TOTAL_INTERVIEW) super().save(*args, **kwargs) self.creator.profile.total_review, self.creator.profile.rate_avg = handle_user_total_rate(self.creator) - self.creator.save() + self.creator.profile.save(update_fields=["total_review", "rate_avg"]) class ReviewComment(models.Model): diff --git a/utilities/views.py b/utilities/views.py index cf341c8..df53955 100644 --- a/utilities/views.py +++ b/utilities/views.py @@ -155,7 +155,7 @@ def create_data(main_url): user = User.objects.last() user.is_staff = True user.is_superuser = True - user.save() + user.save(update_fields=["is_staff", "is_superuser"]) ADMIN_HEADER = { 'Content-Type': 'application/json', 'Authorization': 'JWT ' + resp.json()['data']['token']