Skip to content

Commit b656ee6

Browse files
committed
Remove unused code in ForeignKey, fix ForeignObjectRel imports
1 parent e6d9aaa commit b656ee6

File tree

3 files changed

+8
-55
lines changed

3 files changed

+8
-55
lines changed

plain-models/plain/models/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@
6969
from .fields.related import ( # isort:skip
7070
ForeignKey,
7171
ManyToManyField,
72+
)
73+
from .fields.reverse_related import ( # isort:skip
7274
ForeignObjectRel,
7375
ManyToOneRel,
7476
ManyToManyRel,

plain-models/plain/models/base.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@
2323
from plain.models.deletion import Collector
2424
from plain.models.expressions import RawSQL, Value
2525
from plain.models.fields import NOT_PROVIDED
26-
from plain.models.fields.related import (
27-
ForeignObjectRel,
28-
)
26+
from plain.models.fields.reverse_related import ForeignObjectRel
2927
from plain.models.manager import Manager
3028
from plain.models.options import Options
3129
from plain.models.query import F, Q

plain-models/plain/models/fields/related.py

Lines changed: 5 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import functools
2-
import inspect
31
from functools import cached_property, partial
42

53
from plain import exceptions, preflight
@@ -27,7 +25,7 @@
2725
RelatedLessThan,
2826
RelatedLessThanOrEqual,
2927
)
30-
from .reverse_related import ForeignObjectRel, ManyToManyRel, ManyToOneRel
28+
from .reverse_related import ManyToManyRel, ManyToOneRel
3129

3230
RECURSIVE_RELATIONSHIP_CONSTANT = "self"
3331

@@ -367,18 +365,12 @@ def get_reverse_related_filter(self, obj):
367365
select all instances of self.related_field.model related through
368366
this field to obj. obj is an instance of self.model.
369367
"""
370-
base_q = Q.create(
368+
return Q.create(
371369
[
372370
(rh_field.attname, getattr(obj, lh_field.attname))
373371
for lh_field, rh_field in self.related_fields
374372
]
375373
)
376-
descriptor_filter = self.get_extra_descriptor_filter(obj)
377-
if isinstance(descriptor_filter, dict):
378-
return base_q & Q(**descriptor_filter)
379-
elif descriptor_filter:
380-
return base_q & descriptor_filter
381-
return base_q
382374

383375
def set_attributes_from_rel(self):
384376
self.name = self.name or (self.remote_field.model._meta.model_name + "_" + "id")
@@ -437,16 +429,13 @@ class ForeignKey(RelatedField):
437429
"""
438430

439431
descriptor_class = ForeignKeyDeferredAttribute
440-
441-
# Field flags
442-
many_to_many = False
443-
many_to_one = True
444-
one_to_many = False
445-
446432
related_accessor_class = ReverseManyToOneDescriptor
447433
forward_related_accessor_class = ForwardManyToOneDescriptor
448434
rel_class = ManyToOneRel
449435

436+
# Field flags - ForeignKey is many-to-one
437+
many_to_one = True
438+
450439
empty_strings_allowed = False
451440
default_error_messages = {
452441
"invalid": "%(model)s instance with %(field)s %(value)r does not exist."
@@ -494,9 +483,6 @@ def __init__(
494483
self.db_index = db_index
495484
self.db_constraint = db_constraint
496485

497-
def __class_getitem__(cls, *args, **kwargs):
498-
return cls
499-
500486
def __copy__(self):
501487
obj = super().__copy__()
502488
# Remove any cached PathInfo values.
@@ -545,21 +531,6 @@ def get_joining_columns(self, reverse_join=False):
545531
def get_reverse_joining_columns(self):
546532
return self.get_joining_columns(reverse_join=True)
547533

548-
def get_extra_descriptor_filter(self, instance):
549-
"""
550-
Return an extra filter condition for related object fetching when
551-
user does 'instance.fieldname', that is the extra filter is used in
552-
the descriptor of the field.
553-
554-
The filter should be either a dict usable in .filter(**kwargs) call or
555-
a Q-object. The condition will be ANDed together with the relation's
556-
joining columns.
557-
558-
A parallel method is get_extra_restriction() which is used in
559-
JOIN and subquery conditions.
560-
"""
561-
return {}
562-
563534
def get_extra_restriction(self, alias, related_alias):
564535
"""
565536
Return a pair condition used for joining and subquery pushdown. The
@@ -614,15 +585,6 @@ def get_reverse_path_info(self, filtered_relation=None):
614585
def reverse_path_infos(self):
615586
return self.get_reverse_path_info()
616587

617-
@classmethod
618-
@functools.cache
619-
def get_class_lookups(cls):
620-
bases = inspect.getmro(cls)
621-
# Find ForeignKey in the MRO instead of ForeignObject
622-
bases = bases[: bases.index(ForeignKey) + 1]
623-
class_lookups = [parent.__dict__.get("class_lookups", {}) for parent in bases]
624-
return cls.merge_dicts(class_lookups)
625-
626588
def contribute_to_class(self, cls, name, private_only=False, **kwargs):
627589
super().contribute_to_class(cls, name, private_only=private_only, **kwargs)
628590
setattr(cls, self.name, self.forward_related_accessor_class(self))
@@ -792,15 +754,6 @@ def db_parameters(self, connection):
792754
"collation": target_db_parameters.get("collation"),
793755
}
794756

795-
def convert_empty_strings(self, value, expression, connection):
796-
if (not value) and isinstance(value, str):
797-
return None
798-
return value
799-
800-
def get_db_converters(self, connection):
801-
converters = super().get_db_converters(connection)
802-
return converters
803-
804757
def get_col(self, alias, output_field=None):
805758
if output_field is None:
806759
output_field = self.target_field

0 commit comments

Comments
 (0)