refactored a little similarity rules

This commit is contained in:
Anatoly 2020-01-15 17:00:01 +03:00
parent 129201d3a9
commit c0273773bc

View File

@ -380,18 +380,18 @@ class EstablishmentQuerySet(models.QuerySet):
.order_by(*similarity_rules['ordering']) \
.distinct(*similarity_rules['distinctions'], 'id')
def similar_food_producers(self, distillery):
def similar_food_producers(self, food_producer):
"""
Return QuerySet with objects that similar to Food Producer.
:param distillery: Establishment instance
:param food_producer: Establishment instance
"""
base_qs = self.similar_base(distillery).same_subtype(distillery)
base_qs = self.similar_base(food_producer).same_subtype(food_producer)
similarity_rules = {
'ordering': [F('same_subtype').desc(), ],
'distinctions': ['same_subtype', ]
}
if distillery.address and distillery.address.coordinates:
base_qs = base_qs.annotate_distance(point=distillery.location)
if food_producer.address and food_producer.address.coordinates:
base_qs = base_qs.annotate_distance(point=food_producer.location)
similarity_rules['ordering'].append(F('distance').asc())
similarity_rules['distinctions'].append('distance')