Opened 13 years ago
Closed 13 years ago
#19663 closed Cleanup/optimization (fixed)
Sqldiff breaks with PointField declaration
| Reported by: | Jonathan Liuti | Owned by: | nobody | 
|---|---|---|---|
| Component: | Core (Management commands) | Version: | 1.4 | 
| Severity: | Normal | Keywords: | sqldiff, gis | 
| Cc: | Triage Stage: | Ready for checkin | |
| Has patch: | yes | Needs documentation: | no | 
| Needs tests: | yes | Patch needs improvement: | yes | 
| Easy pickings: | yes | UI/UX: | no | 
Description
I'm on ubuntu 12.04
Django 1.4.3
Postgresql 9.1.7
My model (simplified):
class Estate(models.Model): coordinates = models.PointField() objects = models.GeoManager()
Syncdb has been run and everything seems to be ok but:
The sqldiff command will fail with the following error when a model contains a PointField:
text = text + '\x1b[%sm' % RESET TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
It could be easily fixed by using proper string format syntax instead of '+':
text = '%s\x1b[%sm' % (text,RESET)
Change History (7)
comment:1 by , 13 years ago
| Has patch: | set | 
|---|
comment:2 by , 13 years ago
| Easy pickings: | set | 
|---|---|
| Needs tests: | set | 
| Patch needs improvement: | set | 
| Triage Stage: | Unreviewed → Accepted | 
| Type: | Bug → Cleanup/optimization | 
Well, sqldiff is not from django core (it's from django-extensions, AFAIK), and we could argue that colorize is not meant to support None for the text parameter, hence the bug could be in sqldiff itself.
However, I think your proposed change is generally good practice. You missed another concatenation on the line below. Tests are also required.
comment:3 by , 13 years ago
yes I'm so used to django_extensions ... and the fact that the trace pointed to a django core file confused me. My bad.
Regarding the potential fix, I already started a talk with Simon Charette on github if you wan't to check on it.
Thanks for the feedback anyway.
comment:4 by , 13 years ago
Here is the final pull request with both concatenation fixed and failing test case: https://github.com/django/django/pull/671
comment:5 by , 13 years ago
| Triage Stage: | Accepted → Ready for checkin | 
|---|
Tests pass and change looks good to me.
comment:6 by , 13 years ago
Fix and test looks good, utils tests pass on python 2.7.3 and 3.2.3 (SQLite).
comment:7 by , 13 years ago
| Resolution: | → fixed | 
|---|---|
| Status: | new → closed | 
Pull request is here : https://github.com/django/django/pull/670