﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
14786	get_db_prep_lookup call get_prep_value twice for each value if prepared == False	homm	nobody	"In db.models.fields.Field {{{get_db_prep_lookup()}}} check if value is prepared and prepare it:

{{{#!python
def get_db_prep_lookup(self, lookup_type, value, connection, prepared=False):
    ""Returns field's value prepared for database lookup.""
    if not prepared:
        value = self.get_prep_lookup(lookup_type, value)
}}}
{{{get_prep_lookup()}}} call {{{get_prep_value()}}} for every value.

But look next:
{{{#!python
elif lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte'):
    return [self.get_db_prep_value(value, connection=connection, prepared=prepared)]
elif lookup_type in ('range', 'in'):
    return [self.get_db_prep_value(v, connection=connection, prepared=prepared) for v in value]
}}}
Prepared flag not changed and {{{get_db_prep_value()}}} call {{{get_prep_value()}}} through {{{get_db_prep_value()}}} again!

I think {{{get_db_prep_lookup()}}} should call {{{get_db_prep_value()}}} always with {{{prepared == True}}}.
{{{#!python
elif lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte'):
    return [self.get_db_prep_value(value, connection=connection, prepared=True)]
elif lookup_type in ('range', 'in'):
    return [self.get_db_prep_value(v, connection=connection, prepared=True) for v in value]
}}}

This bug is still unnoticed because in standard ORM {{{get_db_prep_lookup()}}} always calls with {{{prepared == True}}}."	Bug	new	Database layer (models, ORM)	SVN	Normal		sprintdec2010 fields lookup	Jonas H.	Accepted	1	0	0	1	0	0
