From b54d7433c75020aa49f68f45d693ad7162576bd7 Mon Sep 17 00:00:00 2001 From: Peter Law Date: Mon, 18 May 2020 22:10:09 +0100 Subject: [PATCH 1/4] Support GenericIPAddressFields --- jedi/plugins/django.py | 1 + test/completion/django.py | 3 +++ 2 files changed, 4 insertions(+) diff --git a/jedi/plugins/django.py b/jedi/plugins/django.py index 6d50153c..3ec807e0 100644 --- a/jedi/plugins/django.py +++ b/jedi/plugins/django.py @@ -18,6 +18,7 @@ mapping = { 'CharField': (None, 'str'), 'TextField': (None, 'str'), 'EmailField': (None, 'str'), + 'GenericIPAddressField': (None, 'str'), 'FloatField': (None, 'float'), 'BinaryField': (None, 'bytes'), 'BooleanField': (None, 'bool'), diff --git a/test/completion/django.py b/test/completion/django.py index 295908d7..353c992d 100644 --- a/test/completion/django.py +++ b/test/completion/django.py @@ -27,6 +27,7 @@ class BusinessModel(models.Model): char_field = models.CharField() text_field = models.TextField() email_field = models.EmailField() + ip_address_field = models.GenericIPAddressField() float_field = models.FloatField() binary_field = models.BinaryField() boolean_field = models.BooleanField() @@ -59,6 +60,8 @@ model_instance.char_field model_instance.text_field #? str() model_instance.email_field +#? str() +model_instance.ip_address_field #? float() model_instance.float_field #? bytes() From cd9f2f31eafc4ca49c63149625489f5a0a6051f8 Mon Sep 17 00:00:00 2001 From: Peter Law Date: Mon, 18 May 2020 21:59:15 +0100 Subject: [PATCH 2/4] Support URLFields --- jedi/plugins/django.py | 1 + test/completion/django.py | 3 +++ 2 files changed, 4 insertions(+) diff --git a/jedi/plugins/django.py b/jedi/plugins/django.py index 3ec807e0..9b6a9f42 100644 --- a/jedi/plugins/django.py +++ b/jedi/plugins/django.py @@ -19,6 +19,7 @@ mapping = { 'TextField': (None, 'str'), 'EmailField': (None, 'str'), 'GenericIPAddressField': (None, 'str'), + 'URLField': (None, 'str'), 'FloatField': (None, 'float'), 'BinaryField': (None, 'bytes'), 'BooleanField': (None, 'bool'), diff --git a/test/completion/django.py b/test/completion/django.py index 353c992d..792e12b9 100644 --- a/test/completion/django.py +++ b/test/completion/django.py @@ -28,6 +28,7 @@ class BusinessModel(models.Model): text_field = models.TextField() email_field = models.EmailField() ip_address_field = models.GenericIPAddressField() + url_field = models.URLField() float_field = models.FloatField() binary_field = models.BinaryField() boolean_field = models.BooleanField() @@ -62,6 +63,8 @@ model_instance.text_field model_instance.email_field #? str() model_instance.ip_address_field +#? str() +model_instance.url_field #? float() model_instance.float_field #? bytes() From df66b35444a43e7b005e0f3d9f6d36a32eb2a6f1 Mon Sep 17 00:00:00 2001 From: Peter Law Date: Mon, 18 May 2020 22:11:31 +0100 Subject: [PATCH 3/4] Support UUIDFields --- jedi/plugins/django.py | 1 + test/completion/django.py | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/jedi/plugins/django.py b/jedi/plugins/django.py index 9b6a9f42..fe7fdc45 100644 --- a/jedi/plugins/django.py +++ b/jedi/plugins/django.py @@ -28,6 +28,7 @@ mapping = { 'DurationField': ('datetime', 'timedelta'), 'DateField': ('datetime', 'date'), 'DateTimeField': ('datetime', 'datetime'), + 'UUIDField': ('uuid', 'UUID'), } diff --git a/test/completion/django.py b/test/completion/django.py index 792e12b9..b6f307bd 100644 --- a/test/completion/django.py +++ b/test/completion/django.py @@ -1,5 +1,6 @@ import datetime import decimal +import uuid from django.db import models from django.contrib.auth.models import User @@ -37,6 +38,7 @@ class BusinessModel(models.Model): duration_field = models.DurationField() date_field = models.DateField() date_time_field = models.DateTimeField() + uuid_field = models.UUIDField() tags_m2m = models.ManyToManyField(Tag) unidentifiable = NOT_FOUND @@ -81,6 +83,8 @@ model_instance.duration_field model_instance.date_field #? datetime.datetime() model_instance.date_time_field +#? uuid.UUID() +model_instance.uuid_field #! ['category_fk = models.ForeignKey(Category)'] model_instance.category_fk From b7cdec427ecfbe676c0fbf056a5003d1639a2390 Mon Sep 17 00:00:00 2001 From: Peter Law Date: Mon, 18 May 2020 22:19:20 +0100 Subject: [PATCH 4/4] Support OneToOneFields --- jedi/plugins/django.py | 2 +- test/completion/django.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/jedi/plugins/django.py b/jedi/plugins/django.py index fe7fdc45..43cbaf01 100644 --- a/jedi/plugins/django.py +++ b/jedi/plugins/django.py @@ -74,7 +74,7 @@ def _infer_field(cls, field_name): name = field_tree_instance.py__name__() is_many_to_many = name == 'ManyToManyField' - if name == 'ForeignKey' or is_many_to_many: + if name in ('ForeignKey', 'OneToOneField') or is_many_to_many: values = _get_foreign_key_values(cls, field_tree_instance) if is_many_to_many: return ValueSet(filter(None, [ diff --git a/test/completion/django.py b/test/completion/django.py index b6f307bd..88a508d9 100644 --- a/test/completion/django.py +++ b/test/completion/django.py @@ -14,7 +14,13 @@ class Category(models.Model): category_name = models.CharField() +class AttachedData(models.Model): + extra_data = models.TextField() + + class BusinessModel(models.Model): + attached_o2o = models.OneToOneField(AttachedData) + category_fk = models.ForeignKey(Category) category_fk2 = models.ForeignKey('Category') category_fk3 = models.ForeignKey(1) @@ -86,6 +92,15 @@ model_instance.date_time_field #? uuid.UUID() model_instance.uuid_field +#! ['attached_o2o = models.OneToOneField(AttachedData)'] +model_instance.attached_o2o +#! ['extra_data = models.TextField()'] +model_instance.attached_o2o.extra_data +#? AttachedData() +model_instance.attached_o2o +#? str() +model_instance.attached_o2o.extra_data + #! ['category_fk = models.ForeignKey(Category)'] model_instance.category_fk #! ['category_name = models.CharField()']