From 6b7c4c867847322c03c2676054773c4cbc86a38a Mon Sep 17 00:00:00 2001 From: "Wisnu P. Ramadhan" Date: Mon, 22 Apr 2019 11:12:38 +0700 Subject: [PATCH 1/3] add custom user field --- jet/dashboard/models.py | 4 +++- jet/fields.py | 15 +++++++++++++++ jet/models.py | 6 ++++-- jet/settings.py | 3 +++ jet/tests/test_fields.py | 13 +++++++++++++ 5 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 jet/fields.py create mode 100644 jet/tests/test_fields.py diff --git a/jet/dashboard/models.py b/jet/dashboard/models.py index cf43c30c..3ae6042c 100644 --- a/jet/dashboard/models.py +++ b/jet/dashboard/models.py @@ -3,7 +3,9 @@ from django.db import models from django.utils.encoding import python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ + from jet.utils import LazyDateTimeEncoder +from jet.fields import UserField @python_2_unicode_compatible @@ -11,7 +13,7 @@ class UserDashboardModule(models.Model): title = models.CharField(verbose_name=_('Title'), max_length=255) module = models.CharField(verbose_name=_('module'), max_length=255) app_label = models.CharField(verbose_name=_('application name'), max_length=255, null=True, blank=True) - user = models.PositiveIntegerField(verbose_name=_('user')) + user = UserField(verbose_name=_('user')) column = models.PositiveIntegerField(verbose_name=_('column')) order = models.IntegerField(verbose_name=_('order')) settings = models.TextField(verbose_name=_('settings'), default='', blank=True) diff --git a/jet/fields.py b/jet/fields.py new file mode 100644 index 00000000..dac86c6b --- /dev/null +++ b/jet/fields.py @@ -0,0 +1,15 @@ +from importlib import import_module + +from django.db.models import Field + +from jet import settings + + +def get_user_field(): + pkg, mod = settings.JET_USER_FIELD.rsplit('.', 1) + cls = getattr(import_module(pkg), mod) + assert issubclass(cls, Field), 'JET_USER_FIELD is not instance of Field class' + return cls + + +UserField = get_user_field() diff --git a/jet/models.py b/jet/models.py index 8fe97564..e50f0cc0 100644 --- a/jet/models.py +++ b/jet/models.py @@ -3,12 +3,14 @@ from django.utils.encoding import python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ +from jet.fields import UserField + @python_2_unicode_compatible class Bookmark(models.Model): url = models.URLField(verbose_name=_('URL')) title = models.CharField(verbose_name=_('title'), max_length=255) - user = models.PositiveIntegerField(verbose_name=_('user')) + user = UserField(verbose_name=_('user')) date_add = models.DateTimeField(verbose_name=_('date created'), default=timezone.now) class Meta: @@ -23,7 +25,7 @@ def __str__(self): @python_2_unicode_compatible class PinnedApplication(models.Model): app_label = models.CharField(verbose_name=_('application name'), max_length=255) - user = models.PositiveIntegerField(verbose_name=_('user')) + user = UserField(verbose_name=_('user')) date_add = models.DateTimeField(verbose_name=_('date created'), default=timezone.now) class Meta: diff --git a/jet/settings.py b/jet/settings.py index ddd29e76..a404b5a8 100644 --- a/jet/settings.py +++ b/jet/settings.py @@ -11,3 +11,6 @@ # Improved usability JET_CHANGE_FORM_SIBLING_LINKS = getattr(settings, 'JET_CHANGE_FORM_SIBLING_LINKS', True) + +# Improved customability +JET_USER_FIELD = getattr(settings, 'JET_USER_FIELD', 'django.db.models.PositiveIntegerField') diff --git a/jet/tests/test_fields.py b/jet/tests/test_fields.py new file mode 100644 index 00000000..247d74ee --- /dev/null +++ b/jet/tests/test_fields.py @@ -0,0 +1,13 @@ +from django.db.models import PositiveIntegerField +from django.test import TestCase + +from jet.fields import get_user_field + + +class UserFieldTest(TestCase): + + def test_default_user_field(self): + default_cls = PositiveIntegerField + cls = get_user_field() + self.assertIsNotNone(cls) + self.assertEqual(cls, default_cls) From 64d32b2f31aab318b41a6256468dfd630f5c0270 Mon Sep 17 00:00:00 2001 From: "Wisnu P. Ramadhan" Date: Wed, 24 Apr 2019 02:26:39 +0700 Subject: [PATCH 2/3] change user field to charfield --- .../migrations/0002_user_charfield.py | 18 +++++++++++++++ jet/dashboard/models.py | 3 +-- jet/fields.py | 15 ------------ jet/migrations/0003_user_charfield.py | 23 +++++++++++++++++++ jet/models.py | 6 ++--- jet/settings.py | 3 --- 6 files changed, 44 insertions(+), 24 deletions(-) create mode 100644 jet/dashboard/migrations/0002_user_charfield.py delete mode 100644 jet/fields.py create mode 100644 jet/migrations/0003_user_charfield.py diff --git a/jet/dashboard/migrations/0002_user_charfield.py b/jet/dashboard/migrations/0002_user_charfield.py new file mode 100644 index 00000000..4f3bfa00 --- /dev/null +++ b/jet/dashboard/migrations/0002_user_charfield.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2 on 2019-04-23 19:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dashboard', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='userdashboardmodule', + name='user', + field=models.CharField(max_length=255, verbose_name='user'), + ), + ] diff --git a/jet/dashboard/models.py b/jet/dashboard/models.py index 3ae6042c..85c16508 100644 --- a/jet/dashboard/models.py +++ b/jet/dashboard/models.py @@ -5,7 +5,6 @@ from django.utils.translation import ugettext_lazy as _ from jet.utils import LazyDateTimeEncoder -from jet.fields import UserField @python_2_unicode_compatible @@ -13,7 +12,7 @@ class UserDashboardModule(models.Model): title = models.CharField(verbose_name=_('Title'), max_length=255) module = models.CharField(verbose_name=_('module'), max_length=255) app_label = models.CharField(verbose_name=_('application name'), max_length=255, null=True, blank=True) - user = UserField(verbose_name=_('user')) + user = models.CharField(verbose_name=_('user'), max_length=255) column = models.PositiveIntegerField(verbose_name=_('column')) order = models.IntegerField(verbose_name=_('order')) settings = models.TextField(verbose_name=_('settings'), default='', blank=True) diff --git a/jet/fields.py b/jet/fields.py deleted file mode 100644 index dac86c6b..00000000 --- a/jet/fields.py +++ /dev/null @@ -1,15 +0,0 @@ -from importlib import import_module - -from django.db.models import Field - -from jet import settings - - -def get_user_field(): - pkg, mod = settings.JET_USER_FIELD.rsplit('.', 1) - cls = getattr(import_module(pkg), mod) - assert issubclass(cls, Field), 'JET_USER_FIELD is not instance of Field class' - return cls - - -UserField = get_user_field() diff --git a/jet/migrations/0003_user_charfield.py b/jet/migrations/0003_user_charfield.py new file mode 100644 index 00000000..81192686 --- /dev/null +++ b/jet/migrations/0003_user_charfield.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2 on 2019-04-23 19:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('jet', '0002_delete_userdashboardmodule'), + ] + + operations = [ + migrations.AlterField( + model_name='bookmark', + name='user', + field=models.CharField(max_length=255, verbose_name='user'), + ), + migrations.AlterField( + model_name='pinnedapplication', + name='user', + field=models.CharField(max_length=255, verbose_name='user'), + ), + ] diff --git a/jet/models.py b/jet/models.py index e50f0cc0..5cb36271 100644 --- a/jet/models.py +++ b/jet/models.py @@ -3,14 +3,12 @@ from django.utils.encoding import python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ -from jet.fields import UserField - @python_2_unicode_compatible class Bookmark(models.Model): url = models.URLField(verbose_name=_('URL')) title = models.CharField(verbose_name=_('title'), max_length=255) - user = UserField(verbose_name=_('user')) + user = models.CharField(verbose_name=_('user'), max_length=255) date_add = models.DateTimeField(verbose_name=_('date created'), default=timezone.now) class Meta: @@ -25,7 +23,7 @@ def __str__(self): @python_2_unicode_compatible class PinnedApplication(models.Model): app_label = models.CharField(verbose_name=_('application name'), max_length=255) - user = UserField(verbose_name=_('user')) + user = models.CharField(verbose_name=_('user'), max_length=255) date_add = models.DateTimeField(verbose_name=_('date created'), default=timezone.now) class Meta: diff --git a/jet/settings.py b/jet/settings.py index a404b5a8..ddd29e76 100644 --- a/jet/settings.py +++ b/jet/settings.py @@ -11,6 +11,3 @@ # Improved usability JET_CHANGE_FORM_SIBLING_LINKS = getattr(settings, 'JET_CHANGE_FORM_SIBLING_LINKS', True) - -# Improved customability -JET_USER_FIELD = getattr(settings, 'JET_USER_FIELD', 'django.db.models.PositiveIntegerField') From 428ea5b46dbc86597b48578683e499797b101aee Mon Sep 17 00:00:00 2001 From: Wisnu Pramadhitya Date: Wed, 24 Apr 2019 02:33:17 +0700 Subject: [PATCH 3/3] bump version to 1.1 because user field change --- jet/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jet/__init__.py b/jet/__init__.py index 0e917f69..9cff1bc2 100644 --- a/jet/__init__.py +++ b/jet/__init__.py @@ -1 +1 @@ -VERSION = '1.0.7' +VERSION = '1.1.0'