﻿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
3246	SQL generation not working properly in per-object-permissions branch	stefan.freyr@…	nobody	"I'm getting the following error when I use the per-object-permission branch when performing a validation in a form (using newforms).

''NOTE'': this works fine on trunk... this bug only applies to branches/per-object-permission.

The error:
{{{
Traceback (most recent call last):
File ""/usr/lib/python2.4/site-packages/django/core/handlers/base.py"" in get_response
  77. response = callback(request, *callback_args, **callback_kwargs)
File ""/home/stefan/projects/svac2/svac/../svac/project/views.py"" in application
  10. if form.is_valid():
File ""/usr/lib/python2.4/site-packages/django/newforms/forms.py"" in is_valid
  77. return not self.ignore_errors and not bool(self.errors)
File ""/usr/lib/python2.4/site-packages/django/newforms/forms.py"" in _errors
  68. self.full_clean()
File ""/usr/lib/python2.4/site-packages/django/newforms/forms.py"" in full_clean
  154. value = getattr(self, 'clean_%s' % name)()
File ""/home/stefan/projects/svac2/svac/../svac/project/forms.py"" in clean_name
  13. p = Project.objects.get(name=name)
File ""/usr/lib/python2.4/site-packages/django/db/models/manager.py"" in get
  67. return self.get_query_set().get(*args, **kwargs)
File ""/usr/lib/python2.4/site-packages/django/db/models/query.py"" in get
  211. obj_list = list(clone)
File ""/usr/lib/python2.4/site-packages/django/db/models/query.py"" in __iter__
  103. return iter(self._get_data())
File ""/usr/lib/python2.4/site-packages/django/db/models/query.py"" in _get_data
  430. self._result_cache = list(self.iterator())
File ""/usr/lib/python2.4/site-packages/django/db/models/query.py"" in iterator
  172. cursor.execute(""SELECT "" + (self._distinct and ""DISTINCT "" or """") + "","".join(select) + sql, params)
File ""/usr/lib/python2.4/site-packages/django/db/backends/util.py"" in execute
  12. return self.cursor.execute(sql, params)

  ProgrammingError at /project/application/
  ERROR: column ""a"" does not exist SELECT ""project_project"".""id"",""project_project"".""name"",""project_project"".""owner_id"",""project_project"".""short_description"",""project_project"".""long_description"",""project_project"".""active"" FROM ""project_project"" WHERE (""project_project"".""name"" = a)
}}}

The model:
{{{
#!python
class Project(models.Model):
  name = models.CharField(maxlength=64,unique=True)
  owner = models.ForeignKey(User)
  short_description = models.TextField(maxlength=256)
  long_description = models.TextField()
  active = models.BooleanField()
}}}

The form:
{{{
#!python
class ApplicationForm(forms.Form):
  name = forms.CharField(max_length=64)
  short_description = forms.CharField(max_length=256, widget=Textarea)
  long_description = forms.CharField(widget=Textarea)

  def clean_name(self):
    name = self.clean_data['name']
    p = Project.objects.get(name=name)
    if p:
      raise ValidationError(u'Project name is taken, please choose another name.')
    return name
}}}

The view:
{{{
#!python
def application(request):
  if request.POST:
    form = ApplicationForm(request.POST)
    if form.is_valid():
      #project = Project
      print 'form is valid'
      return HttpResponseRedirect('/project/application')
    else:
      context = {'form':form, 'error_msg':""Please correct the error(s) below""}
  else:
    context = {'form':ApplicationForm()}

  return render_to_response(""project/application.html"", context, context_instance=RequestContext(request))
}}}

The error occurs when I submit the form containing valid information... it seems that the SQL generated from the line p = Project.objects.get(name=name) is invalid. The value of the ""name"" variable is 'a' but it isn't surrounded by quotes in the SQL to specify that it is a string so it's taken to be a column name."	defect	closed	Database layer (models, ORM)	other branch	normal	wontfix	per-object-permissions		Accepted	0	0	0	0	0	0
