From 750e94c8033c2dd8e08596d092fb765e4b946dcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Barbier?= Date: Thu, 15 Jun 2023 00:05:47 +0200 Subject: [PATCH 1/3] Bump to v1.4 version number in app/code --- CHANGELOG.md | 8 ++++++-- docs/conf.py | 4 ++-- docs/models_and_api.rst | 4 ++-- seven23/settings.py | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 86d8f64..21914c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,11 +21,15 @@ and this project adheres to [Semantic Versioning](http://semver.org/). See for sample https://raw.githubusercontent.com/favoloso/conventional-changelog-emoji/master/CHANGELOG.md --> +## [1.4.0] - 2023-MM-DD +### 🛠 Improvements +- Add boolean to **store if private key has been saved** and verified (#91) + ## [1.3.1] - 2023-05-10 ### 🔒 Security -- Bump django from 4.1.8 to 4.1.9 (#85) +- **Bump django** from *4.1.8* to *4.1.9* (#85) ### 🐛 Bug Fixes -- Fix crash settings if debug false (#86) +- **Fix crash** settings if debug false (#86) ## [1.3.0] - 2023-05-09 ### 🛠 Improvements diff --git a/docs/conf.py b/docs/conf.py index cdae9a7..fac0954 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -65,9 +65,9 @@ # built documents. # # The short X.Y version. -version = '1.3' +version = '1.4' # The full version, including alpha/beta/rc tags. -release = '1.3.1' +release = '1.4.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/docs/models_and_api.rst b/docs/models_and_api.rst index 151ed39..7823f6f 100644 --- a/docs/models_and_api.rst +++ b/docs/models_and_api.rst @@ -6,8 +6,8 @@ By default, your server instance deploy locally a swagger and redoc instance acc You can also access the public instance on the seven23.io server: -- `Official swagger instance `_ -- `Official redoc instance `_ +- `Official swagger instance `_ +- `Official redoc instance `_ Maintenance ----------- diff --git a/seven23/settings.py b/seven23/settings.py index 32c6c0d..3cff48e 100644 --- a/seven23/settings.py +++ b/seven23/settings.py @@ -30,7 +30,7 @@ integrations=[DjangoIntegration()] ) -VERSION = [1, 3, 1] +VERSION = [1, 4, 0] API_VERSION = [1, 0, 0] BASE_DIR = os.path.dirname(os.path.dirname(__file__)) From 1d4a36ddcdc15ec0d83fc799891397bd11e85b0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Barbier?= Date: Thu, 15 Jun 2023 00:28:00 +0200 Subject: [PATCH 2/3] Add boolean to **store if private key has been saved** and verified Related to #91 --- CHANGELOG.md | 2 +- seven23/api/users/tests_users.py | 4 +++- seven23/models/profile/admin.py | 2 +- .../migrations/0013_profile_key_verified.py | 18 +++++++++++++++ seven23/models/profile/models.py | 22 +++++++++++++++++-- seven23/models/profile/serializers.py | 2 +- seven23/models/profile/tests.py | 12 +++++++++- 7 files changed, 55 insertions(+), 7 deletions(-) create mode 100644 seven23/models/profile/migrations/0013_profile_key_verified.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 21914c2..902041e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,7 +23,7 @@ See for sample https://raw.githubusercontent.com/favoloso/conventional-changelog ## [1.4.0] - 2023-MM-DD ### 🛠 Improvements -- Add boolean to **store if private key has been saved** and verified (#91) +- Add boolean to **store if private key has been saved** and verified (#91) ## [1.3.1] - 2023-05-10 ### 🔒 Security diff --git a/seven23/api/users/tests_users.py b/seven23/api/users/tests_users.py index 4913096..0b365ed 100644 --- a/seven23/api/users/tests_users.py +++ b/seven23/api/users/tests_users.py @@ -48,5 +48,7 @@ def test_registration_new_user(self): self.assertTrue('profile' in data) self.assertTrue('avatar' in data['profile']) self.assertTrue('auto_sync' in data['profile']) + self.assertTrue('key_verified' in data['profile']) self.assertTrue('social_networks' in data['profile']) - self.assertFalse(data['profile']['auto_sync']) \ No newline at end of file + self.assertFalse(data['profile']['auto_sync']) + self.assertFalse(data['profile']['key_verified']) \ No newline at end of file diff --git a/seven23/models/profile/admin.py b/seven23/models/profile/admin.py index b48b3a6..b78f251 100644 --- a/seven23/models/profile/admin.py +++ b/seven23/models/profile/admin.py @@ -5,7 +5,7 @@ from seven23.models.profile.models import Profile class ProfileAdmin(admin.ModelAdmin): - list_display = ('user', 'valid_until', 'last_api_call') + list_display = ('user', 'valid_until', 'key_verified','last_api_call') admin.site.register(Profile, ProfileAdmin) \ No newline at end of file diff --git a/seven23/models/profile/migrations/0013_profile_key_verified.py b/seven23/models/profile/migrations/0013_profile_key_verified.py new file mode 100644 index 0000000..714d69e --- /dev/null +++ b/seven23/models/profile/migrations/0013_profile_key_verified.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.8 on 2023-06-14 22:12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('profile', '0012_profile_auto_sync'), + ] + + operations = [ + migrations.AddField( + model_name='profile', + name='key_verified', + field=models.BooleanField(default=False, help_text='Private key has been verified and saved by user', verbose_name='Key verified'), + ), + ] diff --git a/seven23/models/profile/models.py b/seven23/models/profile/models.py index 5bb23d3..327a61f 100644 --- a/seven23/models/profile/models.py +++ b/seven23/models/profile/models.py @@ -6,12 +6,11 @@ from django.utils import timezone from django.contrib.auth.models import User from django.utils.translation import gettext_lazy as _ -from django.db.models.signals import post_save from django.dispatch import receiver from django.core.mail import send_mail from django.template.loader import render_to_string # from seven23.models.stats.models import MonthlyActiveUser, DailyActiveUser -from django.db.models.signals import pre_delete +from django.db.models.signals import pre_delete, pre_save, post_save from django.dispatch import receiver from django.conf import settings @@ -41,6 +40,9 @@ class Profile(models.Model): valid_until = models.DateTimeField(_(u'Valid until'), help_text=_(u'On SASS, this is the validation date'), default=timezone.now) + key_verified = models.BooleanField(_(u'Key verified'), + help_text=_(u'Private key has been verified and saved by user'), + default=False) stripe_customer_id = models.CharField(_(u'Stripe costumer id'), max_length=128, null=True, @@ -74,6 +76,22 @@ def save_user_profile(sender, instance, **kwargs): else: Profile.objects.create(user=instance) + @receiver(pre_save, sender=User) + def user_updated_password(sender, **kwargs): + """ + When user update his password, we need to reset the key_verified flag + """ + user = kwargs.get('instance', None) + if user and hasattr(user, 'profile'): + new_password = user.password + try: + old_password = User.objects.get(pk=user.pk).password + except User.DoesNotExist: + old_password = None + if new_password != old_password: + user.profile.key_verified = False + user.profile.save() + def __str__(self): return u'%s' % (self.user) diff --git a/seven23/models/profile/serializers.py b/seven23/models/profile/serializers.py index cdb41b4..e60bbfb 100644 --- a/seven23/models/profile/serializers.py +++ b/seven23/models/profile/serializers.py @@ -7,7 +7,7 @@ class ProfileSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Profile - fields = ['avatar', 'auto_sync', 'social_networks'] + fields = ['avatar', 'auto_sync', 'key_verified', 'social_networks'] class DatetimeSerializer(serializers.HyperlinkedModelSerializer): diff --git a/seven23/models/profile/tests.py b/seven23/models/profile/tests.py index d8b5e5a..f1ccdd4 100644 --- a/seven23/models/profile/tests.py +++ b/seven23/models/profile/tests.py @@ -27,4 +27,14 @@ def test_profile_creation(self): self.assertEqual(self.user.profile.valid_until > timezone.now(), True) self.assertEqual(self.user.profile.valid_until < expected_date, True) - self.assertEqual(self.user.profile.auto_sync, False) \ No newline at end of file + self.assertEqual(self.user.profile.auto_sync, False) + self.assertEqual(self.user.profile.key_verified, False) + + self.user.profile.key_verified = True + self.user.profile.save() + self.assertEqual(self.user.profile.key_verified, True) + + # Verify if changing password set key_verified flag to False using signals + self.user.password = "AnOtherLongPassword" + self.user.save() + self.assertEqual(self.user.profile.key_verified, False) \ No newline at end of file From dba2a301a6d66ff1a783f2db9b4caf7eef75e188 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Barbier?= Date: Mon, 19 Jun 2023 21:40:36 +0200 Subject: [PATCH 3/3] Update release date on CHANGELOG for 1.4.0 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 902041e..aa09649 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,7 +21,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). See for sample https://raw.githubusercontent.com/favoloso/conventional-changelog-emoji/master/CHANGELOG.md --> -## [1.4.0] - 2023-MM-DD +## [1.4.0] - 2023-06-19 ### 🛠 Improvements - Add boolean to **store if private key has been saved** and verified (#91)