Opened 10 years ago

Closed 7 years ago

#3246 closed defect (wontfix)

SQL generation not working properly in per-object-permissions branch

Reported by: stefan.freyr@… Owned by: nobody
Component: Database layer (models, ORM) Version: other branch
Severity: normal Keywords: per-object-permissions
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: UI/UX:


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/" in get_response
  77. response = callback(request, *callback_args, **callback_kwargs)
File "/home/stefan/projects/svac2/svac/../svac/project/" in application
  10. if form.is_valid():
File "/usr/lib/python2.4/site-packages/django/newforms/" in is_valid
  77. return not self.ignore_errors and not bool(self.errors)
File "/usr/lib/python2.4/site-packages/django/newforms/" in _errors
  68. self.full_clean()
File "/usr/lib/python2.4/site-packages/django/newforms/" in full_clean
  154. value = getattr(self, 'clean_%s' % name)()
File "/home/stefan/projects/svac2/svac/../svac/project/" in clean_name
  13. p = Project.objects.get(name=name)
File "/usr/lib/python2.4/site-packages/django/db/models/" in get
  67. return self.get_query_set().get(*args, **kwargs)
File "/usr/lib/python2.4/site-packages/django/db/models/" in get
  211. obj_list = list(clone)
File "/usr/lib/python2.4/site-packages/django/db/models/" in __iter__
  103. return iter(self._get_data())
File "/usr/lib/python2.4/site-packages/django/db/models/" in _get_data
  430. self._result_cache = list(self.iterator())
File "/usr/lib/python2.4/site-packages/django/db/models/" 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/" 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:

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:

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:

def application(request):
  if request.POST:
    form = ApplicationForm(request.POST)
    if form.is_valid():
      #project = Project
      print 'form is valid'
      return HttpResponseRedirect('/project/application')
      context = {'form':form, 'error_msg':"Please correct the error(s) below"}
    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.

Change History (2)

comment:1 Changed 10 years ago by Simon G. <dev@…>

  • Component changed from Core framework to Database wrapper
  • Keywords per-object-permissions added
  • Triage Stage changed from Unreviewed to Accepted
  • Version changed from SVN to other branch

comment:2 Changed 7 years ago by mtredinnick

  • Resolution set to wontfix
  • Status changed from new to closed

Given that the branch in question is inactive and unlikely to be resurrected in its current form, this isn't going to be attended to.

Note: See TracTickets for help on using tickets.
Back to Top