tickets
32,817 rows sorted by stage
This data as json, CSV (advanced)
Suggested facets: stage, type, severity, easy, needs_better_patch, needs_tests, needs_docs, ui_ux, changetime (date), last_pulled_from_trac (date)
created (date) >30 ✖
- 2007-09-14 50
- 2008-09-01 45
- 2008-09-08 45
- 2008-08-27 44
- 2008-09-03 42
- 2008-08-29 39
- 2008-08-28 36
- 2005-07-20 34
- 2008-08-26 34
- 2008-09-02 32
- 2011-06-09 32
- 2008-08-19 31
- 2008-01-28 30
- 2005-07-13 29
- 2008-08-13 29
- 2008-08-11 28
- 2008-08-20 28
- 2008-07-22 27
- 2008-08-14 27
- 2008-08-15 27
- 2005-07-18 26
- 2008-07-19 26
- 2008-08-12 26
- 2008-09-04 26
- 2008-09-10 26
- 2007-12-01 25
- 2011-09-09 24
- 2007-09-10 23
- 2008-07-29 23
- 2008-08-09 23
- …
id | created | changetime | last_pulled_from_trac | stage ▼ | status | component | type | severity | version | resolution | summary | description | owner | reporter | keywords | easy | has_patch | needs_better_patch | needs_tests | needs_docs | ui_ux |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2 | 2005-07-13 19:04:45 | 2007-07-03 23:04:18 | 2022-03-06 03:19:23.301840 | Accepted | closed | contrib.admin | defect | normal | fixed | Calendar popup - next/previous month links close the popup in Safari | In Safari 2.0 on Tiger, the next/previous month links close the popup. There's no way to get to a different month. | jacob | anonymous | 0 | 0 | 0 | 0 | 0 | 0 | ||
13 | 2005-07-13 19:20:21 | 2011-09-08 05:35:18 | 2022-03-06 03:19:25.074830 | Accepted | closed | contrib.admin | New feature | Normal | dev | fixed | Related objects interface should be tighter (edit_inline) | The admin interface for related objects and the ordering interface need some tighter integration. Currently, anything that can be ordered goes in the right sidebar of the admin change form, with no relation to the actual input fields for those objects. The adding, removing, editing and ordering of related objects should be tied together in one part of the form. '''Specific areas for enhancement:''' * '''Adding related objects should be easier.''' Now you have to "save and continue" to get an extra set of fields to add a new related object. You should be able to click "add new object" to add another set of blank fields inline on the page. * '''Deleting related objects should be easier.''' Now you have to clear the "core fields" of a related object to delete it. You should be able to click "delete" to delete the object, or at least mark it for deletion when you click save on the main object. * '''Ordering of related objects should be clearly tied to editing those objects.''' Now the ordering interface is completely separate. You should be use the same list of objects to set the order (by dragging) or select that object for editing or deleting (by clicking). | barbuza | adrian | nfa-someday nfa-changelist | 0 | 1 | 1 | 0 | 0 | 0 |
14 | 2005-07-13 19:20:55 | 2008-01-14 18:07:24 | 2022-03-06 03:19:25.261243 | Accepted | closed | contrib.admin | defect | normal | wontfix | PIE-IN-THE-SKY: Add spell-check capability to admin textareas | It'd be nice if every textarea throughout our admin offered users the option to spell-check its contents. | adrian | adrian | 0 | 0 | 0 | 0 | 0 | 0 | ||
17 | 2005-07-13 19:25:18 | 2019-12-17 11:37:56 | 2022-03-06 03:19:26.110232 | Accepted | closed | Database layer (models, ORM) | New feature | Normal | dev | wontfix | Metasystem optimization: Share select_related in memory | When using {{{select_related}}}, each cache is stored separately in memory. For example, each Choice object here has its Poll cached, but each of those caches is a separate object in memory. It would require less memory if the caches were references to the same Poll object. {{{ >>> from djangomodels.polls import choices >>> choice_list = choices.get_list(poll__id__exact=90, select_related=True) >>> id(choice_list[0]._poll_cache) -156344020 >>> id(choice_list[1]._poll_cache) -156344084 }}} | PhiR | adrian | feature caching | 0 | 1 | 1 | 0 | 1 | 0 |
23 | 2005-07-13 19:34:33 | 2013-10-15 09:17:25 | 2022-03-06 03:19:30.445855 | Accepted | closed | Forms | New feature | Normal | wontfix | Add support for ValidationWarning | We've talked in the past about how useful it would be to let certain validators throw ValidationWarning instead of ValidationError. A ValidationWarning, when thrown, would still redisplay the admin form but display an additional checkbox above the field. If that checkbox is checked when the form is submitted, the error is ignored. The change would have to be made in django/core/formfields.py. | jgeskens | adrian | 0 | 1 | 1 | 0 | 1 | 1 | ||
25 | 2005-07-13 19:35:54 | 2013-06-02 18:10:34 | 2022-03-06 03:19:30.770423 | Accepted | closed | contrib.admin | Bug | Normal | dev | fixed | Filtering interface on ForeignKey <select> boxes | Select boxes are a pain, and slow, to deal with when there are a lot of values to select from. (Example: datelines on news stories). There should be a generator option, use_filter_interface, available on select boxes. It would add an <input type="text"> next to the select box and allow users to filter the select box that way. This would make data entry quicker, because folks could just paste in the dateline they want, and it'd be selected for them (assuming it's been entered as a dateline in the system). | nobody | adrian | feature | 0 | 1 | 1 | 0 | 0 | 1 |
28 | 2005-07-13 19:41:08 | 2007-07-17 21:49:58 | 2022-03-06 03:19:31.290643 | Accepted | closed | Metasystem | enhancement | normal | duplicate | Delete confirmation should have "replace relationships" shortcut | This is best explained with an example. Right now, when I click to delete a duplicate dateline, I get a list of all the news stories that feature that dateline. So I click on each story to change its dateline to the correct (non-duplicate) dateline, because if I didn't do that, deleting the dateline would delete all those stories. Then, once I've changed all the stories, I can delete the dateline safely, because it won't have any relationships. What I want is the delete-confirmation page for datelines -- and everything else -- to offer a "convert all of these stories' datelines to the following *different* dateline" select box. | adrian | adrian | 0 | 0 | 0 | 0 | 0 | 0 | ||
48 | 2005-07-17 16:11:23 | 2007-07-21 14:43:57 | 2022-03-06 03:19:34.417240 | Accepted | closed | Database layer (models, ORM) | defect | normal | fixed | Unit tests for MySQL support | Since more people are going to be using MySQL than PostgreSQL, but the MySQL support is new and mostly untested, let's build up a comprehensive set of unit tests for the MySQL stuff. We might even be able to share them with other database backends. This would make it much easier to add sqlite support (for example) later on. | adrian | Simon Willison | 0 | 0 | 0 | 0 | 0 | 0 | ||
49 | 2005-07-17 17:45:42 | 2007-07-03 23:03:32 | 2022-03-06 03:19:34.565641 | Accepted | closed | contrib.admin | defect | normal | fixed | Remove references to http://media.ljworld.com from the code | Apparently http://media.ljworld.com is scattered through the code: {{{ simon:~/src/trunk$ grep -R "media.ljworld.com" * | grep -v ".svn" media/js/admin/add_calendars.js: quickElement('img', cal_link, '', 'src', 'http://media.ljworld.com/img/admin/icon_calendar.gif', 'alt', 'Calendar'); media/js/admin/DateTimeShortcuts.js: quickElement('img', clock_link, '', 'src', 'http://media.ljworld.com/img/admin/icon_clock.gif', 'alt', 'Clock'); media/js/admin/DateTimeShortcuts.js: quickElement('img', cal_link, '', 'src', 'http://media.ljworld.com/img/admin/icon_calendar.gif', 'alt', 'Calendar'); media/js/SelectFilter2.js: quickElement('img', filter_p, '', 'src', 'http://media.ljworld.com/img/admin/selector-search.gif'); media/js/SelectFilter2.js: quickElement('img', selector_filter, '', 'src', 'http://media.ljworld.com/img/admin/selector-add.gif', 'alt', 'Add'); }}} | adrian | Simon Willison | 0 | 0 | 0 | 0 | 0 | 0 | ||
55 | 2005-07-18 05:42:08 | 2007-07-03 23:03:50 | 2022-03-06 03:19:35.483780 | Accepted | closed | Tools | defect | normal | wontfix | add a logger to django | insert the block into django.conf.settings file at line 32. {{{ #python a = me.SETTINGS_MODULE.split( '.' ) if 'settings' in a: idx = a.index( 'settings' ) if idx > 0: projname = a[idx-1] projmod = __import__( projname , '', '', ['']) else: projname = 'django' import django as projmod logdir = os.path.split( projmod.__file__ )[0] + os.sep + 'logs' if not os.access( logdir , os.W_OK ): raise 'Cannot write log file in dir: ' + logdir import logging logger = logging.getLogger( projname ) hdlr = logging.FileHandler( logdir + os.sep + projname + '.log' ) formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') hdlr.setFormatter(formatter) logger.addHandler( hdlr ) logger.setLevel( logging.DEBUG ) __builtins__['log'] = logger log.info( 'project logger start' ) }}} make sure you have created 'logs' folder at your project or django src. then you can use log object anywhere. ATTENTION: NOT fully tested. | adrian | james | log | 0 | 0 | 0 | 0 | 0 | 0 | |
64 | 2005-07-18 16:37:56 | 2007-07-03 23:03:39 | 2022-03-06 03:19:36.990398 | Accepted | closed | Core (Cache system) | enhancement | normal | fixed | Add cache middleware | It should be possible to say "Cache every page on this site." We'd use middleware for this. | adrian | adrian | 0 | 0 | 0 | 0 | 0 | 0 | ||
67 | 2005-07-18 17:28:38 | 2007-07-03 23:04:03 | 2022-03-06 03:19:37.481269 | Accepted | closed | Core (Other) | enhancement | normal | fixed | Make specifying 'human-readable' name optional. | I noticed that in the fields for the models in tutorial 1, three out of the four 'human-readable' names were identical to the 'machine-friendly' names. Following the DRY principle, I think that the specifying the 'human-readable' name should be optional, defaulting to the machine-friendly name. Here is a svn diff for a (trivial) implementation: {{{ Index: django/core/meta.py =================================================================== --- django/core/meta.py (revision 174) +++ django/core/meta.py (working copy) @@ -1564,13 +1564,13 @@ # database level. empty_strings_allowed = True - def __init__(self, name, verbose_name, primary_key=False, + def __init__(self, name, verbose_name=None, primary_key=False, maxlength=None, unique=False, blank=False, null=False, db_index=None, core=False, rel=None, default=NOT_PROVIDED, editable=True, prepopulate_from=None, unique_for_date=None, unique_for_month=None, unique_for_year=None, validator_list=None, choices=None, radio_admin=None, help_text=''): - self.name, self.verbose_name = name, verbose_name + self.name, self.verbose_name = name, verbose_name or name self.primary_key = primary_key self.maxlength, self.unique = maxlength, unique self.blank, self.null = blank, null }}} | adrian | mmarshall at myrealbox dot com | 0 | 0 | 0 | 0 | 0 | 0 | ||
72 | 2005-07-18 20:54:10 | 2012-11-23 02:29:52 | 2022-03-06 03:19:38.257291 | Accepted | closed | Core (Other) | defect | normal | fixed | Django should add charset info to output HTTP headers | It seems Django doesn't add the "charset=utf8" field to "Content-type: text/html" header while sending headers to the browser. This cause pages encoded as UTF-8 look wrong in the browser (Firefox assumes page is encoded using iso-8859-1, which is the default HTTP encoding). Sample headers sent by Django: {{{ Date: Mon, 18 Jul 2005 20:51:43 GMT Server: Apache/2.0.54 (Win32) mod_python/3.1.4 Python/2.4.1 Connection: close Transfer-Encoding: chunked Content-Type: text/html 200 OK }}} Patching Content-type header to look like "Content-Type: text/html; charset=utf-8" would make clear which encoding is used by the server. [http://www.w3.org/International/O-HTTP-charset More info about charset param here.] | adrian | anonymous | 0 | 0 | 0 | 0 | 0 | 0 | ||
73 | 2005-07-18 21:05:45 | 2007-07-03 23:03:38 | 2022-03-06 03:19:38.438789 | Accepted | closed | *.djangoproject.com | enhancement | normal | fixed | Sample templates in the repository? | I wonder if it would be possible to have the templates for this site also in the repository. This would be a useful starting point for beginning users, but maybe it's impossible due to copyright issues or some such. Also, the need for these things may disappear when the next tutorial appears - but still... | jacob | Manuzhai <mail@manuzhai.nl> | 0 | 0 | 0 | 0 | 0 | 0 | ||
75 | 2005-07-18 21:17:26 | 2007-07-03 23:04:01 | 2022-03-06 03:19:38.754661 | Accepted | closed | Metasystem | defect | normal | fixed | Add support for recursive ManyToManyFields | {{{ManyToManyField}}}s should be able to be related to {{{"self"}}}, as {{{ForeignKey}}}s can. | adrian | slashzero | 0 | 0 | 0 | 0 | 0 | 0 | ||
76 | 2005-07-18 21:21:48 | 2007-07-03 23:04:02 | 2022-03-06 03:19:38.911572 | Accepted | closed | Tools | defect | normal | fixed | Development server should serve admin images, too | The simple server started by {{{django-admin.py runserver}}} should serve admin images. It's a pain to have to set up Apache just to serve those. | adrian | adrian | 0 | 0 | 0 | 0 | 0 | 0 | ||
79 | 2005-07-19 02:27:56 | 2007-07-03 23:03:51 | 2022-03-06 03:19:39.339636 | Accepted | closed | contrib.admin | defect | normal | invalid | Unable to run admin interface via stand-alone server | Under revision 191. Running: > django-admin.py runserver 8888 When accessing admin URL receive below. ===== There's been an error: Traceback (most recent call last): File "/usr/lib/python2.3/site-packages/django/core/handlers/wsgi.py", line 184, in get_response callback, param_dict = resolver.resolve(path) File "/usr/lib/python2.3/site-packages/django/core/urlresolvers.py", line 85, in resolve raise Http404, app_path Http404: admin/ | adrian | jyap@raywoodcommunications.com | 0 | 0 | 0 | 0 | 0 | 0 | ||
88 | 2005-07-19 16:57:51 | 2007-07-03 23:03:29 | 2022-03-06 03:19:41.163208 | Accepted | closed | Core (Other) | defect | trivial | fixed | Configuration should be more forgiving to users who forget the trailing comma. | It is really easy for users to forget the trailing comma in configuration settings that should be a tuple, resulting in weird errors. In order to help keep (new) users from getting frustrated, a string should be converted into a tuple for these settings. Here is a patch to implement this: {{{ Index: django/conf/settings.py =================================================================== --- django/conf/settings.py (revision 211) +++ django/conf/settings.py (working copy) @@ -29,9 +29,16 @@ except ImportError, e: raise EnvironmentError, "Could not import DJANGO_SETTINGS_MODULE '%s' (is it on sys.path?): %s" % (me.SETTINGS_MODULE, e) + +# a list of settings that should be converted into tuples if they are strings: +tuple_settings = ["INSTALLED_APPS","TEMPLATE_DIRS"] + for setting in dir(mod): if setting == setting.upper(): - setattr(me, setting, getattr(mod, setting)) + setting_value = getattr(mod, setting) + if setting in tuple_settings and type(setting_value) == str: + setting_value = (setting_value,) #In case the user forgot the comma. + setattr(me, setting, setting_value) # save DJANGO_SETTINGS_MODULE in case anyone in the future cares me.SETTINGS_MODULE = os.environ.get('DJANGO_SETTINGS_MODULE', '') }}} Note that I only put two entries in the tuple_settings list, as they are the only ones I know of. If there are more, they should be added. | adrian | mmarshall | 0 | 0 | 0 | 0 | 0 | 0 | ||
91 | 2005-07-19 21:45:54 | 2007-07-03 23:05:24 | 2022-03-06 03:19:41.637006 | Accepted | closed | Core (Other) | enhancement | normal | duplicate | A (possible) cleaner ORM fields description | Here is a cleaner approach to the ORM fields. Using this patch, the example in the tutorial can be changed to this: {{{ from django.core.meta import Model # Create your models here. class Poll(Model): def fields(Field): Field.Char('question', maxlength=200) Field.DateTime('pub_date', 'date published') class Choice(Model): def fields(Field): Field.ForeignKey(Poll) Field.Char('choice', 'choice', maxlength=200, core=True) Field.Integer('votes', 'votes', core=True) }}} I have done an implementation, which is fully backwards compatible, and quite simple. {{{ Index: django/core/meta.py =================================================================== --- django/core/meta.py (revision 227) +++ django/core/meta.py (working copy) @@ -377,12 +377,53 @@ new_v.func_globals[k] = func new_functions[k] = func + +class FieldGenerator(object): + """FieldGenerator is used for... uh... Generating fields. It has attributes, + such as "Char" and "DateTime", that can be used to create class instances such as + "CharField" or "DateTimeField". These instances are then added to the list "fields", + which can be retrieved to be used as the "fields" attribute in a Model class.""" + def __init__(self): + self.fields = [] + self.last_class = None #This is the class obj that corrisponds to the last __getattr__ call. + + def __getattr__(self,name): + self.last_class = None + try: + obj = eval(name+"Field") + if issubclass(obj,Field): self.last_class = obj + except NameError: pass + if not self.last_class: # If name+"Field" didn't work, just try name. + try: + obj = eval(name) + if issubclass(obj,Field): self.last_class = obj + except NameError: pass + if not self.last_class: + raise AttributeError("Could not find either %s or %sField (or they are not decendants… | adrian | mmarshall | 0 | 0 | 0 | 0 | 0 | 0 | ||
106 | 2005-07-20 09:41:37 | 2008-11-12 16:25:37 | 2022-03-06 03:19:45.998838 | Accepted | closed | contrib.admin | defect | normal | fixed | [patch] Problem with some js/select box on IE | Extract from Tutorial 1: 'When you click "Add Another," you'll get a popup window with the "Add poll" form. If you add a poll in that window and click "Save," Django will save the poll to the database and dynamically add it as the selected choice on the "Add choice" form you're looking at.' This (dynamically add it) works on Mozilla 1.0.4 Win. It is not true on IE 6. A blank string is shown instead of name of the new poll. Just after a manual refresh of the page things appear correctly. | kmtracey | paolo | 0 | 1 | 1 | 1 | 1 | 0 | ||
109 | 2005-07-20 13:17:49 | 2007-07-03 23:03:46 | 2022-03-06 03:19:46.472589 | Accepted | closed | contrib.admin | defect | blocker | fixed | Patch: Customizing Date(Time)Field displays | In the admin interface, dates are displayed as July 11, 2005, 8:39 p.m., while I'd at the least prefer to have a 24-hour format for the time. I think there should be options DATE_FORMAT, TIME_FORMAT and DATETIME_FORMAT which take care of the default formatting for these fields. | anonymous | Manuzhai | 0 | 0 | 0 | 0 | 0 | 0 | ||
115 | 2005-07-20 17:37:01 | 2007-10-21 19:53:27 | 2022-03-06 03:19:47.413935 | Accepted | closed | Core (Other) | enhancement | normal | invalid | Models CRUD via web services | Sometimes we need to offer public avaible CRUD API for existing models. That doesn't request too much creativity and can be generated automatically. It would be great to have them out of box, like admin interface. | nobody | maurycy | feature_request | 0 | 0 | 0 | 0 | 0 | 0 | |
120 | 2005-07-20 19:49:48 | 2007-07-03 23:05:27 | 2022-03-06 03:19:48.191124 | Accepted | closed | Tools | defect | normal | fixed | djang-admin.py called without argument | Calling django-admin.py with no argument gives the following traceback: {{{ Traceback (most recent call last): File "./django-admin.py", line 102, in ? main() File "./django-admin.py", line 63, in main print_error("An 'action' is required.") TypeError: print_error() takes exactly 2 arguments (1 given) }}} And print_error function (defined line 43), effectively wants 2 arguments ;) I'm using rev 249 of Django's trunk. Attached is a trivial proposed patch. | adrian | anonymous | 0 | 0 | 0 | 0 | 0 | 0 | ||
121 | 2005-07-20 20:20:29 | 2007-07-03 23:04:25 | 2022-03-06 03:19:48.338497 | Accepted | closed | Metasystem | enhancement | normal | fixed | [patch] Names in SQL should be quoted | Some valid Python-identifiers are reserved words in SQL-databases, for instance "when" in PostgreSQL. It would be very nice, if Django would quote all names (e.g. schema, table, row) in SQL statements, so these database-reserved words would not pose problems. | adrian | sune.kirkeby@gmail.com | sql | 0 | 1 | 0 | 0 | 0 | 0 | |
128 | 2005-07-20 23:39:49 | 2007-07-03 23:03:54 | 2022-03-06 03:19:49.317321 | Accepted | closed | Template system | defect | normal | worksforme | IndexError when using invalid {% extends %} in template should be replaced with better error message. | First of all the error {{{ There's been an error: Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/django/core/handlers/wsgi.py", line 190, in get_response return callback(request, **param_dict) File "/home/espen/django/blog/apps/blog/views/blog.py", line 20, in details return HttpResponse(t.render(c)) File "/usr/lib/python2.4/site-packages/django/core/template.py", line 116, in render return self.nodelist.render(context) File "/usr/lib/python2.4/site-packages/django/core/template.py", line 437, in render bits.append(node.render(context)) File "/usr/lib/python2.4/site-packages/django/core/template_loader.py", line 80, in render parent_is_child = isinstance(compiled_parent.nodelist[0], ExtendsNode) IndexError: list index out of range }}} The template file that trys to extend base.html: {{{ {% extends "base" %} {% block title %} Espen Grindhaug - Blog - {{ obj.headline }} {% endblock %} {% block content %} <h1>{{ obj.headline }}</h1> <p class="summary">{{ obj.summary }}</p> <p class="body">{{ obj.body }}</p> <p class="by">By {{ obj.author }} ({{ obj.pub_date }})</p> {% endblock %} }}} The weird thing here is that I get exactly the same error with completly different child template. base.html (the same as in [http://www.djangoproject.com/documentation/templates/#template-inheritance URL]): {{{ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <link rel="stylesheet" href="style.css" /> <title>{% block title %}Espen Grindhaug{% endblock %}</title> </head> <body> <div id="sidebar"> {% block sidebar %} <ul> <li><a href="/">Home</a></li> <li><a href="/blog/">Blog</a></li> </ul> {% endblock %} </div> <div id="content"> {% block content %}{%… | adrian | espen@grindhaug.org | 0 | 0 | 0 | 0 | 0 | 0 | ||
129 | 2005-07-21 00:02:52 | 2007-07-03 23:04:03 | 2022-03-06 03:19:49.437010 | Accepted | closed | Metasystem | defect | normal | fixed | Multiple ManyToManyField fields with same "to" reference tries to create duplicate tables | Revsion 257 added support for adding multiple !ManyToManyField fields with the same "to" class on the same class. I've tried adding two fields where one has an explicit rel_name option but running "django-admin.py sql myapp" is showing two CREATE TABLE statements with the same table name. I think I've tracked the problem down to the get_m2m_db_table method in the !ManyToManyField class in core/meta.py but I don't understand the code base enough yet to try to fix it. It looks like the code is returning the name as myapp_fromname_toname but I'd expect the name of the many-to-many table to be myapp_relname when the rel_name option is specified. I'm using the MySQL database engine but I don't think that has any bearing on this problem. | adrian | jason@diamond.name | 0 | 0 | 0 | 0 | 0 | 0 | ||
137 | 2005-07-21 12:47:53 | 2007-08-25 23:18:51 | 2022-03-06 03:19:50.412053 | Accepted | closed | Generic views | defect | normal | fixed | TypeError: can't compare datetime.datetime to datetime.date in date_based.py | R267: When accessing /weblog/.... url, object_detail in date_based.py throws exception: {{{ File "/Users/nesh/devel/workspace/django_src/django/views/generic/date_based.py", line 200, in object_detail if date >= now: TypeError: can't compare datetime.datetime to datetime.date }}} Solution: (diff) {{{ diff -u -r1.1 date_based.py --- date_based.py 21 Jul 2005 12:24:11 -0000 1.1 +++ date_based.py 21 Jul 2005 12:40:45 -0000 @@ -188,7 +188,7 @@ the object to be detailed """ try: - date = datetime.date(*time.strptime(year+month+day, '%Y%b%d')[:3]) + date = datetime.datetime(*time.strptime(year+month+day, '%Y%b%d')[:3]) except ValueError: raise Http404 mod = get_module(app_label, module_name) }}} | jacob | nesh@studioquattro.co.yu | 0 | 0 | 0 | 0 | 0 | 0 | ||
138 | 2005-07-21 14:57:54 | 2007-07-03 23:04:26 | 2022-03-06 03:19:50.564697 | Accepted | closed | Documentation | defect | normal | fixed | Error naming the "docs" directory in README | Inside README each occurrence of doc/ should be replaced with docs/. | adrian | paolo | 0 | 0 | 0 | 0 | 0 | 0 | ||
143 | 2005-07-21 19:42:36 | 2007-07-03 23:04:38 | 2022-03-06 03:19:51.287209 | Accepted | closed | Core (Other) | defect | normal | fixed | Problem running the command line examples in Tut 1 when using --settings option | In tutorial 1, under "Playing with the API", none of the examples will work if you've been using the --settings option with django-admin.py (the DJANGO_SETTINGS_MODULE env variable was never set). To work, you have to do the following before importing the project objects: {{{ >>> import os >>> os.environ['DJANGO_SETTINGS_MODULE']='myproject.settings.main' >>> from django.models.polls import polls, choices }}} Is there a more user friendly way to do this? Maybe add a global variable to django.conf that is used to do the import? {{{ >>> django.conf.DJANGO_SETTINGS_MODULE='myproject.settings.main' }}} or possibly {{{ >>> django.settings_module='myproject.settings.main' }}} | adrian | sdelatorre@gmail.com | 0 | 0 | 0 | 0 | 0 | 0 | ||
144 | 2005-07-21 23:29:46 | 2007-07-03 23:04:25 | 2022-03-06 03:19:51.429271 | Accepted | closed | contrib.admin | defect | normal | duplicate | Some admin media files are not viewable | When viewing the Polls site in tutorial 2 under "Click the 'What's up?' poll to edit it:" paragraph, I noticed that a few of the icons were missing (the save button, the checkbox icon when saving an item, the right side of the history button, etc.). The CSS and JS seem to load correctly, and the icons you have sourced at http://media.ljworld.com/ also load correctly. The problem lies with the CSS file which doesn't correctly go to http://media.ljworld.com/. Just to test, I changed the url to the tool-right.gif file in the css to http://media.ljworld.com/img/admin/tool-right.gif and it worked. | adrian | sdelatorre@gmail.com | 0 | 0 | 0 | 0 | 0 | 0 | ||
146 | 2005-07-22 03:37:46 | 2007-07-03 23:04:40 | 2022-03-06 03:19:51.714976 | Accepted | closed | Database layer (models, ORM) | defect | normal | fixed | Change order_by and ordering parameters to be less verbose | Instead of the following: {{{ ordering = (('pub_date', 'ASC'), ('name', 'DESC'), (None, 'RANDOM')) }}} ...we should use the following: {{{ ordering = ('pub_date', '-name', '?') }}} See http://groups-beta.google.com/group/django-developers/browse_thread/thread/f4945bd967defde1/f5f3cb3312f77fe5 | adrian | adrian | 0 | 0 | 0 | 0 | 0 | 0 | ||
150 | 2005-07-22 09:55:38 | 2007-07-17 21:52:51 | 2022-03-06 03:19:52.458021 | Accepted | closed | Core (Other) | defect | minor | fixed | Should put a notice to set an *absolute path', in the DATABASE_NAME variable if using sqlite3 | If you don't put an absolute path in the DATABASE_NAME variable in the settings/main.py file, Django works but erratically, as it will not always find the database as it's dependent on its running location. There should be warning on *always* setting an absolute path there! | adrian | lstep@adelux.fr | 0 | 0 | 0 | 0 | 0 | 0 | ||
153 | 2005-07-22 13:06:28 | 2007-07-03 23:04:14 | 2022-03-06 03:19:53.002455 | Accepted | closed | Documentation | defect | normal | fixed | Change docs to use new ordering syntax | See #146 and [292]. | jacob | adrian | 0 | 0 | 0 | 0 | 0 | 0 | ||
154 | 2005-07-22 13:10:15 | 2012-11-27 08:55:38 | 2022-03-06 03:19:53.212034 | Accepted | closed | contrib.admin | defect | normal | fixed | Can't delete object with ManytoMany Relationship | If you have an object with a manytomany relationship you can't delete it within the admin interface. As it spits out this error. {{{ Traceback (most recent call last): File "/home/punteney/dobbes.com/django/core/handlers/modpython.py", line 214, in get_response return callback(request, **param_dict) File "/home/punteney/dobbes.com/django/views/admin/main.py", line 1057, in delete_stage obj.delete() File "/home/punteney/dobbes.com/django/core/meta.py", line 57, in _curried return args[0](*(args[1:]+moreargs), **dict(kwargs.items() + morekwargs.items())) File "/home/punteney/dobbes.com/django/core/meta.py", line 760, in method_delete cursor.execute("DELETE FROM %s WHERE %s=%%s" % (opts.db_table, opts.pk.name), [getattr(self, opts.pk.name)]) File "/home/punteney/dobbes.com/django/core/db/base.py", line 10, in execute result = self.cursor.execute(sql, params) IntegrityError: ERROR: update or delete on "blog_entries" violates foreign key constraint "$1" on "blog_entries_categories" DETAIL: Key (id)=(2) is still referenced from table "blog_entries_categories". DELETE FROM blog_entries WHERE id=2 }}} This is from trying to delete a blog entry that is tied to the categories. The line in the Entry model is: {{{ meta.ManyToManyField(Category, filter_interface=meta.HORIZONTAL), }}} I can't remove the category linking before I delete it as it is a required field so it comes back with an error message saying that the field is required. | adrian | Dobbes | 0 | 0 | 0 | 0 | 0 | 0 | ||
157 | 2005-07-22 14:01:21 | 2007-07-03 23:04:35 | 2022-03-06 03:19:53.809923 | Accepted | closed | contrib.admin | defect | normal | fixed | view/admin/main.py change_list assumes orderlist is tuple | In the function change_list in views/admin/main.py, an assumption is made that the "ordering" variable will be a tuple. The orderlist can be a single string, according to the behaviour built in meta.handle_legacy_orderlist. As a result of this, the code around line 106 seems incorrect, as it assumes an indexable array. Since a string actually is an indexable array, no error is thrown immediately. The following patch restores my admin pages to working order, but it may not be the best way to handle this. {{{ Index: django/views/admin/main.py =================================================================== --- django/views/admin/main.py (revision 293) +++ django/views/admin/main.py (working copy) @@ -98,6 +98,9 @@ # Normalize it to new-style ordering. ordering = meta.handle_legacy_orderlist(ordering) + if isinstance(ordering, basestring): + # tupelize it + ordering = (ordering,) if ordering[0].startswith('-'): order_field, order_type = ordering[0][1:], 'DESC' }}} | adrian | mfenniak@pobox.com | 0 | 0 | 0 | 0 | 0 | 0 | ||
168 | 2005-07-23 02:57:40 | 2007-07-03 23:04:31 | 2022-03-06 03:19:56.018772 | Accepted | closed | contrib.admin | defect | major | fixed | history() in django/views/admin/main.py makes assumptions about the object's key name | Normally the ID of an object is "id", except in cases like mine where I'd redefined the key to be something like list: {{{ "meta.AutoField('item_id','Item ID',primary_key=True,unique=True)," }}} When pulling up the history of a record in the administrative interface, the function history() in django/views/admin/main.py is called and an assumption is made on line 1080: {{{ "obj = mod.get_object(id__exact=object_id)" }}} In my case, I believe that it should be (it cannot be hardcoded like this, obviously this needs to be dynamic): {{{ "obj = mod.get_object(item_id__exact=object_id)" }}} Here's the exact text of the traceback I get: {{{ There's been an error: Traceback (most recent call last): File "/usr/local/lib/python2.4/site-packages/django/core/handlers/wsgi.py", line 190, in get_response return callback(request, **param_dict) File "/usr/local/lib/python2.4/site-packages/django/views/admin/main.py", line 1080, in history obj = mod.get_object(id__exact=object_id) File "/usr/local/lib/python2.4/site-packages/django/core/meta.py", line 87, in _curried return args[0](*(args[1:]+moreargs), **dict(kwargs.items() + morekwargs.items())) File "/usr/local/lib/python2.4/site-packages/django/core/meta.py", line 1035, in function_get_object obj_list = function_get_list(opts, klass, **kwargs) File "/usr/local/lib/python2.4/site-packages/django/core/meta.py", line 1057, in function_get_list select, sql, params = function_get_sql_clause(opts, **kwargs) File "/usr/local/lib/python2.4/site-packages/django/core/meta.py", line 1235, in function_get_sql_clause tables2, join_where2, where2, params2, _ = _parse_lookup(kwargs.items(), opts) File "/usr/local/lib/python2.4/site-packages/django/core/meta.py", line 1224, in _parse_lookup _throw_bad_kwarg_error(kwarg) File "/usr/local/lib/python2.4/site-packages/django/core/meta.py", line 1126, in _throw_bad_kwarg_error raise TypeError, "got unexpected keyword argument '%s'" % kwarg … | adrian | clintecker@gmail.com | history | 0 | 0 | 0 | 0 | 0 | 0 | |
183 | 2005-07-25 00:36:48 | 2007-07-03 23:04:46 | 2022-03-06 03:20:00.857458 | Accepted | closed | Template system | defect | normal | fixed | TypeError: can't compare datetime.datetime to datetime.date | Error: {{{ There's been an error: Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/django/core/handlers/base.py", line 63, in get_response return callback(request, **param_dict) File "/usr/lib/python2.4/site-packages/django/views/generic/date_based.py", line 108, in archive_month if date >= now: TypeError: can't compare datetime.datetime to datetime.date }}} | adrian | espen@grindhaug.org | 0 | 0 | 0 | 0 | 0 | 0 | ||
186 | 2005-07-25 01:24:26 | 2007-07-03 23:04:43 | 2022-03-06 03:20:01.420542 | Accepted | closed | Metasystem | enhancement | normal | fixed | [patch] Refactor django/core/meta.py to eliminate duplicate code | The {{{function_get_list}}} and {{{function_get_iterator}}} functions in {{{django/core/meta.py}}} are identical except for their return type. I propose refactoring them by making {{{function_get_list}}} into a simple wrapper around {{{function_get_iterator}}}. | adrian | rmunn@pobox.com | 0 | 1 | 0 | 0 | 0 | 0 | ||
204 | 2005-07-26 08:57:17 | 2007-07-03 23:04:23 | 2022-03-06 03:20:04.834991 | Accepted | closed | Tools | defect | normal | fixed | Inconsistent treatment of blank passwords for superusers | django-admin.py allows one to create a superuser with a blank password, but that password can't then be changed (eg to something non-blank) using the admin interface, because /admin/password_change/ demands that "Old password" be non-blank. Suggested action: fix django-admin.py so blank superuser passwords aren't allowed. | adrian | django@gimbo.org.uk | password blank superuser createsuperuser django-admin.py | 0 | 0 | 0 | 0 | 0 | 0 | |
215 | 2005-07-27 20:26:28 | 2007-07-03 23:04:58 | 2022-03-06 03:20:06.614681 | Accepted | closed | Database layer (models, ORM) | defect | normal | 1.1 | wontfix | Need to generate postgresql tables WITHOUT OIDS by default | When generating tables in Postgresql, django doesn't specify WITHOUT OIDS, which in Postgresql 7.4 or older (don't know about 8) results in tables that consumes the installation-wide OIDS. Most of the time this is unnecessary and undesirable. It would be good if the user is given a choice to specify WITH OIDS if they really know what they are doing. | adrian | wgunadi@nextcoder.net | OIDS | 0 | 0 | 0 | 0 | 0 | 0 |
219 | 2005-07-28 10:54:59 | 2007-07-03 23:05:04 | 2022-03-06 03:20:07.357752 | Accepted | closed | contrib.admin | defect | major | fixed | The change history for an object is recording changes with a 6-hour offset to the timestamp | From the tutorial: '''/admin/polls/polls/1/history/''' is recording changes made to the object, but the timestamp for the changes is 6 hours out (reading 5:12 AM rather than 11:12 AM). | adrian | fidothe | 0 | 0 | 0 | 0 | 0 | 0 | ||
223 | 2005-07-29 10:14:47 | 2007-07-03 23:05:03 | 2022-03-06 03:20:08.044979 | Accepted | closed | contrib.admin | defect | trivial | fixed | [PATCH] Breadcrumb navigation broken in admin documentation | The breadcrumb navigation in the admin documentation templates uses absolute references, rather than relative ones. This means that it won't work if you have your admin server running from anything other than the "root" directory. Example: My admin server is running at http://example.com:8000/admin/ But the code for the breadcrumb looks like this: {{{ <div class="breadcrumbs"> <a href="/">Home</a> › <a href="/doc/">Documentation</a> › <a href="/doc/models/">Models</a> › {{ name }} </div> }}} Which means that the link for documentation (e.g.) will go to http://example.com:8000/doc/, instead of http://example.com:8000/admin/doc. The links need to be changed to use the relative style links of the other page templates. e.g., {{{ <div class="breadcrumbs"> <a href="../../../">Home</a> › <a href="../../">Documentation</a> › <a href="../">Models</a> › {{ name }} </div> }}} The affected files are in django/conf/admin_templates/doc | adrian | Drew Amato <drewamato@gmail.com> | 0 | 0 | 0 | 0 | 0 | 0 | ||
228 | 2005-07-29 21:27:45 | 2007-07-03 23:04:56 | 2022-03-06 03:20:08.925632 | Accepted | closed | Database layer (models, ORM) | enhancement | normal | fixed | [patch] Better handling of timezones | The timezone-handling in [346] is still too naive: according to http://www.cl.cam.ac.uk/~mgk25/iso-time.html, timezones can be specified in any of the following forms: +hh +hhmm +hh:mm -hh -hhmm -hh:mm I propose the following patch, which can deal with any of these forms. It also saves the timezone data; although we don't currently use it for anything, this patch will make a good jumping-off point in the future if we decide to use it. {{{ Index: django/core/db/typecasts.py =================================================================== --- django/core/db/typecasts.py (revision 346) +++ django/core/db/typecasts.py (working copy) @@ -21,8 +21,16 @@ # "2005-07-29 09:56:00-05" if not s: return None d, t = s.split() - if t[-3] in ('-', '+'): - t = t[:-3] # Remove the time-zone information, if it exists. + # Extract timezone information, if it exists. Currently we just throw + # it away, but in the future we may make use of it. + if '-' in t: + t, tz = t.split('-', 1) + tz = '-' + tz + elif '+' in t: + t, tz = t.split('+', 1) + tz = '+' + tz + else: + tz = '' dates = d.split('-') times = t.split(':') seconds = times[2] }}} | adrian | rmunn@pobox.com | 0 | 1 | 0 | 0 | 0 | 0 | ||
232 | 2005-07-30 11:28:38 | 2007-07-03 23:05:43 | 2022-03-06 03:20:09.588572 | Accepted | closed | Documentation | defect | critical | duplicate | session example. | have django session support??? if yes then why don't have a session example??? if don't have a sesion support (in "user space") then add that criticaly. kd. ps. sorry for my en_US :) i'm not from en_US-country :) | jacob | kd. | sesion,example | 0 | 0 | 0 | 0 | 0 | 0 | |
245 | 2005-08-01 19:54:48 | 2008-04-27 02:50:16 | 2022-03-06 03:20:11.570188 | Accepted | closed | Metasystem | defect | trivial | fixed | Remove old ordering syntax | For the 1.0 release, we should remove the {{{DeprecationWarning}}} for use of old ordering syntax. This means old ordering syntax will no longer be supported. | nobody | adrian | 1.0 deprecated, qs-rf-fixed | 0 | 1 | 0 | 0 | 0 | 0 | |
247 | 2005-08-02 14:19:20 | 2007-07-03 23:04:54 | 2022-03-06 03:20:11.855299 | Accepted | closed | *.djangoproject.com | enhancement | normal | wontfix | Webpage to list web hosts | It would be useful to have a webpage (preferably Wiki) where web hosts supporting Django can be listed and found. The following is a suggested layout (with supported installation methods in italics) ---- [http://example.com/ Example Host] - Some description about the provider, this can be a paragraph of text so that they can express all the information they wish to. ''mod_python, fcgi'' [http://example.com Lame Host] - Some support for some applications and other stuff that is stuff and that stuff is stuff too. ''cgi'' [http://example.com Boring.net] - Support for nothing but everything and everything that is nothing, except when it isn't. ''mod_snake'' | jacob | Eric Windisch | 0 | 0 | 0 | 0 | 0 | 0 | ||
251 | 2005-08-02 19:41:21 | 2007-07-03 23:04:38 | 2022-03-06 03:20:12.406105 | Accepted | closed | Metasystem | enhancement | normal | fixed | [patch] Add "AND" and "OR" clauses to the SQL query syntax | After discussion on IRC about the undocumented _or syntax, which Adrian didn't like (see http://loglibrary.com/show_page/view/179?Multiplier=3600&Interval=6&StartTime=1122875881 and http://loglibrary.com/show_page/view/179?Multiplier=3600&Interval=6&StartTime=1122989955), a few ideas were tossed around. We ended up settling on having two "magic" functions, tentatively to live in the meta package and be named meta.AND and meta.OR, which will be called as follows: {{{ polls.get_list(pub_date__exact=datetime.now(), clause=meta.OR(question__startswith='a', question__startswith='b')) # Yields "SELECT * FROM polls WHERE pub_date=NOW AND ((question LIKE 'a%') OR (question LIKE 'b%'))" }}} The functions can also be nested: {{{ table.get_list(clause=meta.OR(field1__exact=10, clause=meta.AND(field1__gte=20, field1__lte=29))) # Yields "SELECT * FROM table WHERE field1=10 OR ((field1 >= 20) AND (field1 <= 29))" }}} They can also be invoked multiple times in the same get_list() call. Since you can't repeat exactly the same kwarg twice, anything starting with "clause" will be accepted, thus: {{{ table.get_list(field1__exact=5, clause1=meta.OR(field2__startswith='a', field2__startswith='b'), clause2=meta.OR(field3__startswith='a', field3__startswith='b')) # Yields "SELECT * FROM table WHERE field1=5 AND ((field2 LIKE 'a%') OR (field2 LIKE 'b%')) AND ((field3 LIKE 'a%') OR (field3 LIKE 'b%'))" }}} To avoid any possible conflict with a field name starting with "clause", what follows the word "clause" must be composed of nothing but digits. That way something like "{{{clause__exact='foo'}}}" would still be treated as a search clause, but "{{{clause1=meta.OR(...)}}}" would be treated as an OR. I'll write a patch to implement this idea. | hugo | rmunn@pobox.com | 0 | 1 | 0 | 0 | 0 | 0 | ||
259 | 2005-08-03 21:17:02 | 2007-07-03 23:05:14 | 2022-03-06 03:20:13.660366 | Accepted | closed | contrib.admin | defect | major | invalid | Admin errors with edit_inline and foreign keys. | The following model breaks the admin interface: {{{ #!python from django.core import meta # Create your models here. class Parent(meta.Model): fields = ( meta.CharField('title', maxlength=50), ) admin = meta.Admin() def __repr__(self): return self.title class Child(meta.Model): fields = ( meta.CharField('title', maxlength=50), ) admin = meta.Admin() def __repr__(self): return self.title class Relate(meta.Model): fields = ( meta.ForeignKey(Parent, edit_inline=True, edit_inline_type=meta.TABULAR), meta.ForeignKey(Child), ) def __repr__(self): return self.get_parent().title + " -> " + self.get_child().title }}} If there are no records in the 'relate' table, there appears to be no way to add them. If there are, then pressing 'save' in the parent admin view when one of the records shows a line of hyphens results in an error. | adrian | andrew@aylett.co.uk | ManyToMany edit_inline | 0 | 0 | 0 | 0 | 0 | 0 | |
265 | 2005-08-04 11:24:01 | 2007-11-13 16:35:45 | 2022-03-06 03:20:14.525142 | Accepted | closed | Core (Other) | defect | normal | wontfix | Patch: RequiredIfOtherField and friends don't work with edit_inline | They look at the all_data hash and that contains all lines of the inline editing table and so they don't find the other field. Maybe this could be changed in that validators on fields that are part of an edit_inline only get passed in a dictionary of those keys that relate to their row, with bare fieldnames (without the table.rownumber prefix)? That way those combined validators could work with inline tables, too. Otherwise any validator that uses all_data to look at other fields will break. | nobody | hugo <gb@bofh.ms> | 0 | 1 | 0 | 1 | 0 | 0 | ||
273 | 2005-08-04 18:51:31 | 2007-07-03 23:05:34 | 2022-03-06 03:20:15.811360 | Accepted | closed | Core (Other) | enhancement | normal | fixed | [patch] Password salt and other algorithms support | The auth_users database table uses a field called password_md5 to hold passwords. However, if found, MD5 hashes can be broken pretty quickly with Rainbow Tables. Could you please consider using SHA-512 encryption instead, perhaps with a varchar(128) field called "password_sha512"? All the best, Dave Hodder | adrian | dmh@dmh.org.uk | 0 | 1 | 0 | 0 | 0 | 0 | ||
278 | 2005-08-05 09:44:56 | 2007-07-03 23:04:53 | 2022-03-06 03:20:16.656915 | Accepted | closed | Database layer (models, ORM) | defect | normal | 1.0 | fixed | Problems saving objects with non-id primary key fields and SQLite database | There are several problems using models which have a non-id primary_key field, when using a SQLite backend. Can't test this with other databases, unfortunately. If we have a python file like: {{{ from django.core import meta class D(meta.Model): fields = ( meta.CharField('b', maxlength=8, primary_key=True), meta.CharField('c', maxlength=8), ) class B(meta.Model): fields = ( meta.CharField('b', maxlength=8), meta.CharField('c', maxlength=8), ) }}} then we get this problem: saving objects doesn't appear to add them to the database: {{{ Python 2.4.1 (#2, Mar 31 2005, 00:05:10) [GCC 3.3 20030304 (Apple Computer, Inc. build 1666)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from django.models.petrolprices import ds, bs >>> d = ds.D(b="a", c="a") >>> b = bs.B(b="a", c="a") >>> ds.get_list() [] >>> bs.get_list() [] >>> d.save() >>> b.save() >>> ds.get_list() [] >>> bs.get_list() [<B object>] }}} If, however, we have the python file containing this: {{{ class D(meta.Model): fields = ( meta.CharField('b', maxlength=8, primary_key=True), ) class B(meta.Model): fields = ( meta.CharField('b', maxlength=45), ) }}} Then attempting to save D objects gets a stack trace: {{{ >>> from django.models.petrolprices import ds, bs >>> d = ds.D(b='a') >>> b = bs.B(b='a') >>> ds.get_list() [] >>> bs.get_list() [] >>> b.save() >>> bs.get_list() [<B object>] >>> d.save() Traceback (most recent call last): File "<stdin>", line 1, in ? File "/Users/huw/Source/Django/django/utils/functional.py", line 3, in _curried return args[0](*(args[1:]+moreargs), **dict(kwargs.items() + morekwargs.items())) File "/Users/huw/Source/Django/django/core/meta/__init__.py", line 740, in method_save opts.pk.name), db_values + [getattr(self, opts.pk.name)]) File "/Users/huw/Source/Django/django/core/db/base.py", line 10, in execute result = self.curso… | adrian | huw@robotines.co.nz | 0 | 0 | 0 | 0 | 0 | 0 | |
285 | 2005-08-06 19:22:14 | 2011-09-28 16:12:16 | 2022-03-06 03:20:17.658682 | Accepted | closed | HTTP handling | defect | normal | 1.0-beta | worksforme | WSGIRequest should set request.path to full uri path | Following the instructions at http://wiki.dreamhost.com/index.php/Django, I got Django running under FastCGI. But the login form points to the wrong URL: instead of pointing to http://django.example.com/django-admin.fcgi/admin/, it points to http://django.example.com/admin/. The reason is found in {{{django/core/handlers/wsgi.py}}}, where the {{{WSGIRequest}}} class's {{{__init__()}}} sets {{{self.path}}} equal to {{{environ['PATH_INFO']}}}. The {{{request.path}}} value eventually makes its way to the login template, which uses "{{{app_path}}}" as the form submission URL. In a CGI environment (including FastCGI), {{{PATH_INFO}}} contains the path referenced *after* the script name (here, "{{{/admin/}}}"). {{{SCRIPT_NAME}}} contains the path to the script (here, "{{{/django-admin.fcgi}}}". To construct a proper self-referential URL, you need to concatenate {{{SCRIPT_NAME}}} and {{{PATH_INFO}}} to obtain, in this case, "{{{/django-admin.fcgi/admin/}}}". | mtredinnick | rmunn@pobox.com | 0 | 1 | 0 | 0 | 0 | 0 | |
289 | 2005-08-08 16:21:46 | 2011-07-08 04:19:57 | 2022-03-06 03:20:18.257063 | Accepted | closed | contrib.admin | defect | normal | wontfix | [patch] more details with "Please correct the errors below." | Sometimes this error appears in the admin side of a site, without actually showing any errors below it. This is most assuredly an error on the part of the developer, but with the multitude of things that can go wrong, this obfuscated error reporting surely doesn't help. | nobody | brantley (deadwisdom@gmail.com) | error please correct | 0 | 1 | 1 | 0 | 0 | 0 | |
317 | 2005-08-14 08:01:21 | 2007-02-26 11:42:12 | 2022-03-06 03:20:23.400464 | Accepted | closed | Generic views | defect | normal | 0.95 | fixed | [Patch] slugify delimits words by hyphens, but its validator doesn't like them | ''. words separated by underscores ("_") or hyphens ("-") in URLs. Google will treat "keyword-phrase" as "keyword phrase" and "keyword_phrase" as "keywordphrase.'' - google handles _ and - differently, where the - form usually is what the user needs. So the slugify code should just handle multi-word sentences by delimiting the slugified words by hyphens. | jacob | hugo <gb@bofh.ms> | slugs slug slugify validation | 0 | 1 | 0 | 0 | 0 | 0 |
326 | 2005-08-15 15:42:40 | 2011-11-17 16:06:56 | 2022-03-06 03:20:24.935250 | Accepted | closed | Database layer (models, ORM) | enhancement | normal | 1.0 | wontfix | IPAddressField in decimal format | == An IP address is stored in string format and allocating 15 bytes (120 bits) == But it would be possible convert that address to decimal format and store it in less bits. {{{ >>> import socket, struct >>> ip = "192.168.2.1" >>> q = ip.split(".") >>> n = reduce(lambda a,b: long(a)*256 + long(b), q) >>> n 3232236033L >>> socket.inet_ntoa(struct.pack('!I', n)) '192.168.2.1' }}} [http://groups-beta.google.com/group/comp.lang.python/browse_thread/thread/d4d9d1870a481568/] [http://groups-beta.google.com/group/comp.lang.python/browse_thread/thread/b2e259d7d55a6071/] | adrian | Bless | 0 | 0 | 0 | 0 | 0 | 0 | |
335 | 2005-08-16 22:23:07 | 2007-07-03 23:05:46 | 2022-03-06 03:20:26.948949 | Accepted | closed | contrib.admin | defect | normal | fixed | Admin login form should check for cookies | The admin login form should display a helpful error message if cookies aren't enabled in the user's browser. | adrian | adrian | 0 | 0 | 0 | 0 | 0 | 0 | ||
342 | 2005-08-17 10:19:26 | 2011-09-28 16:12:23 | 2022-03-06 03:20:28.526863 | Accepted | closed | contrib.admin | enhancement | normal | newforms-admin | fixed | Add a way for fields to be displayed in the admin without being editable | When editable=False option is used then that field isn't showed in the form. But it should be an option for show a field without can to editing it. | brosner | Bless | djangocon | 0 | 1 | 1 | 1 | 0 | 0 |
345 | 2005-08-17 15:38:48 | 2007-07-03 23:05:46 | 2022-03-06 03:20:28.922532 | Accepted | closed | Core (Other) | enhancement | normal | duplicate | Set http Content-type header from settings.py | It would be nice if you could set the default content-type for http-served pages in a settings module somewhere. I'll try to write a patch. | adrian | tim@gerla.net | 0 | 0 | 0 | 0 | 0 | 0 | ||
348 | 2005-08-17 20:27:49 | 2007-08-25 23:33:58 | 2022-03-06 03:20:29.314668 | Accepted | closed | contrib.admin | defect | normal | fixed | [patch] Multiple clicks on "Choose all" or "Clear all" in the Javascript "filter" interface causes strange behavior | I'm writing a simple contact-tracking application in Django. I have Person, Address, and Newsletter models. Newsletter is a many-to-many relation to Person, so that I can ask "Who got the June 2005 newsletter?" and "How many newsletters has John Smith missed?". I used the {{{filter_interface}}} option to tie Newsletter to Person in the admin interface. I then set up some test data to play around with the {{{filter_interface}}}, including three Persons: John Smith, Linda Jones, and Sophie Sophist (who lives at 123 Philosopher Lane, naturally). Selecting individual people and clicking the left and right arrows moved names around just fine. No problems there. And single-clicking on the "Clear all" and "Choose all" worked as expected. Double-clicking on either "Clear all" or "Choose all", though, produced some weird results: all the names would move across, but then when moved back, a single name would get left behind. E.g.: * "Available persons" contains all three names. * Click on "Choose all". All three names move to "Chosen persons". * Click on "Choose all" a second time. No visible result. * Click on "Clear all". All three names move to "Available persons", but a second copy of Linda Jones is left behind. * Click on "Choose all". All three names from "Available persons" move over to "Chosen persons", and there are now four names (including two Linda Jones entries) in "Chosen persons". Repeating such a procedure ends up yielding five names, then six, then seven, out of the original three. All of them act like real entries: I can select them one at a time and move them left or right, and they don't disappear. Furthermore, if I click three or four or five times on "Choose all" before clicking on "Clear all", then two or three or four names get left behind when I finally do click "Clear all". This also works in reverse, e.g. if I click "Clear all" multiple times and then click "Choose all", it will also leave some names behind. If I leave one side or the other ("Chosen persons" or "Availab… | adrian | rmunn@pobox.com | 0 | 1 | 1 | 0 | 0 | 0 | ||
351 | 2005-08-18 06:03:28 | 2007-07-03 23:05:55 | 2022-03-06 03:20:29.649542 | Accepted | closed | Generic views | defect | normal | fixed | Make list_detail.object_list respect allow_empty when paginating | The generic view '''django.views.generic.list_detail.object_list''' does not respect the keyword boolean argument '''allow_empty''' when paginating is enabled, instead raising Http404 if list is empty. | jacob | kmh | generic view | 0 | 0 | 0 | 0 | 0 | 0 | |
359 | 2005-08-18 12:22:22 | 2007-07-03 23:05:44 | 2022-03-06 03:20:30.762368 | Accepted | closed | contrib.admin | defect | normal | duplicate | Simplified assignment and lookup for related fields | Further to #122, I'd love to see a simpler syntax for direct assignment and reference of objects in related tables. It'd eliminate the last big separation (in my mind, at least) between how people work with normal Python objects and how they need to work Django database-backed objects. All you'd have left is {{{.save()}}}, which I'm all for keeping. {{{ from django.core import meta class Person(meta.Model): name = meta.CharField(maxlength=200) class CourtCase(meta.Model): plaintiff = meta.ForeignKey(Person) defendant = meta.ForeignKey(Person) me = persons.get_object(name__exact="garthk") you = persons.get_object(name__exact="hugo-") case = courtcases.CourtCase() case.defendant = me case.plaintiff = you case.save() print case.defendant.name }}} We'd also want to retain support for {{case.defendant_id = me.id}} for those who tend to think more in terms of the database structures than the Python structures. I'm definitely in the latter category, but I know plenty of people in the former. | adrian | garthk@gmail.com | 0 | 0 | 0 | 0 | 0 | 0 | ||
362 | 2005-08-18 15:07:12 | 2007-07-03 23:05:50 | 2022-03-06 03:20:31.134765 | Accepted | closed | Core (Other) | defect | normal | fixed | Anonymous sessions should try to prevent session-stealing | If a user can sniff (or guess) a session id, they can take over a user's session. The simpler types of attempts to steal sessions can be prevented by gathering as much information as possible about the client when creating a session, and then verifying that that information hasn't changed on subsequent requests. If it has, it should log a warning and log the user out. A hash of REMOTE_ADDR and, if it exists, PROXY_FORWARDED_FOR is commonly used to prevent replay attacks like this. This is easy enough to implement in the application, but it should probably be built into the framework. A way of providing page tokens/nonces would also be useful, and this could be used to avoid sending session tokens to the client entirely. Though this technically an RFE, I'm submitting it as severity normal, because the easiest way to do sessions should be secure by default. | adrian | jmcbray-django@carcosa.net | sessions, security, authentication | 0 | 0 | 0 | 0 | 0 | 0 | |
373 | 2005-08-19 18:15:29 | 2022-02-16 07:05:20 | 2022-03-06 03:20:32.803818 | Accepted | new | Database layer (models, ORM) | New feature | Normal | dev | Add support for multiple-column primary keys | In the interest of being able to use Django as an admin interface for ''any'' db schema, it really should support multiple column primary keys. Currently, you can "fake" it by declaring one of the keys to be primary in Django and adding a unique constraint to the model. You'd have to do without the auto-generated SQL that Django gives you, but if you're smart enough to know how and why to use multiple primary keys, you can probably write the schema by hand. Still, this is less than ideal. This is likely to be very difficult. | jacob | database | 0 | 0 | 0 | 0 | 0 | 0 | ||
376 | 2005-08-20 15:29:27 | 2008-09-06 10:27:28 | 2022-03-06 03:20:33.180679 | Accepted | closed | Core (Other) | enhancement | normal | dev | wontfix | Add a handler for mod_python v. 2 (Django requires v. 3) | I've adapted the mod_python handler to also work on mod_python 2. The differences with the mod_python 3 are fairly small, but it's still somewhat incompatible. In addition, I think you need an index.py file to make it work with the '/' URL given to a basic address. Here's the config I'm using, I'll attach modpython2.py. {{{ <Location /> SetHandler python-program AddHandler python-program .py DirectoryIndex index.py PythonHandler django.core.handlers.modpython2 PythonPath "['/home/dirkjan/dev'] + sys.path" PythonInterpreter weblog.main PythonDebug On SetEnv DJANGO_SETTINGS_MODULE weblog.settings.main </Location> }}} | nobody | Manuzhai | 0 | 1 | 1 | 1 | 0 | 0 | |
391 | 2005-08-22 01:44:46 | 2007-09-16 05:00:21 | 2022-03-06 03:20:35.427020 | Accepted | closed | Generic views | defect | normal | fixed | date_based generic views might be off by one | I created an item today, and now am trying to view it with date_based.object_detail. Unfortunately, the condition condition "date must be <= today" isn't working right. {{{ blog.notes does not exist for {'title__exact': 'test-title', 'created__lte': datetime.datetime(2005, 8, 21, 18, 34, 26, 74000), 'created__range': (datetime.datetime(2005, 8, 21, 0, 0), datetime.datetime(2005, 8, 21, 23, 59, 59, 999999))} }}} Turns out it's some sort of off-by-one bug in the __lte handler. If the <= comparison compares against tomorrow, it works fine, e.g. with {{{ Index: django/views/generic/date_based.py =================================================================== --- django/views/generic/date_based.py (revision 544) +++ django/views/generic/date_based.py (working copy) @@ -221,6 +221,8 @@ '%s__range' % date_field: (datetime.datetime.combine(date, datetime.time.min), datetime.datetime.combine(date, datetime.time.max)), } # Only bother to check current date if the date isn't in the past. + from datetime import timedelta + now += timedelta(days = 1) if date >= now.date(): lookup_kwargs['%s__lte' % date_field] = now if object_id: }}} I'm on SQLite, windows, python 2.4, svn [544]. Maybe it's a sqlite date comparison bug or something. | nobody | Brendan O'Connor <brenocon@gmail.com> | sprintsept14 | 0 | 1 | 0 | 0 | 0 | 0 | |
399 | 2005-08-22 21:49:01 | 2011-09-28 16:12:23 | 2022-03-06 03:20:36.553516 | Accepted | closed | Database layer (models, ORM) | enhancement | normal | dev | fixed | Bigint field object needed | The existing IntegerField is not adequate for generating schemas that require a "bigint" field. Either IntegerField needs to take a size/length parameter or a new Field type is necessary. | permon | jmadson@techie.com | sprintsept14, bigint | 0 | 1 | 0 | 0 | 0 | 0 |
425 | 2005-08-26 17:13:10 | 2007-07-03 23:06:34 | 2022-03-06 03:20:41.222770 | Accepted | closed | Tools | enhancement | normal | wontfix | django.utils.images should have a thumbnail function | i just taught that django.utils.images should have a function that could create a thumbnail. | adrian | espen@grindhaug.org | 0 | 0 | 0 | 0 | 0 | 0 | ||
470 | 2005-09-07 13:45:25 | 2022-03-01 05:55:35 | 2022-03-06 03:20:48.232775 | Accepted | assigned | Database layer (models, ORM) | New feature | normal | Add Field.db_default for defining database defaults | https://github.com/django/django/pull/13709 Apply this diff to django/core/mamagement.py Should work on any database. 75a76,77 > if f.default <> meta.fields.NOT_PROVIDED: > field_output.append("DEFAULT '%s'" % (f.default,)) | joshiayush | jws | sql schema | 0 | 1 | 1 | 0 | 0 | 0 | ||
482 | 2005-09-10 01:50:17 | 2007-03-02 07:32:08 | 2022-03-06 03:20:49.972726 | Accepted | closed | Core (Cache system) | defect | normal | invalid | ForeignKey inline editing drops records in the Admin application | I am using the {{{ForeignKey}}} with inline editing. 1. I have opened the admin editor tp modify an existing parent record 1. I have added an entry to child record 1. Saved 1. Go to edit the parent record 1. I now have 2 places to enter the data. The first one is populated with previous data. The second one is empty. 1. I click save 1. I get the exception as displayed below 1. If I go back and refresh the parent record view - it does not contain any child entries anymore. {{{ class Lankymas(meta.Model): nuo = meta.DateField(blank=True) iki = meta.DateField(blank=True, null=True) moksleivis = meta.ForeignKey(Moksleivis, edit_inline=meta.STACKED, num_in_admin=1) class META: module_name='lankymai' def __repr__(self): return "Nuo %s iki %s" % (self.nuo, self.iki) }}} {{{ There's been an error: Traceback (most recent call last): File "/usr/lib/python2.3/site-packages/django/core/handlers/base.py", line 64, in get_response response = callback(request, **param_dict) File "/usr/lib/python2.3/site-packages/django/views/admin/main.py", line 878, in change_stage new_object = manipulator.save(new_data) File "/usr/lib/python2.3/site-packages/django/utils/functional.py", line 3, in _curried return args[0](*(args[1:]+moreargs), **dict(kwargs.items() + morekwargs.items())) File "/usr/lib/python2.3/site-packages/django/core/meta/__init__.py", line 1549, in manipulator_save new_rel_obj.save() File "/usr/lib/python2.3/site-packages/django/utils/functional.py", line 3, in _curried return args[0](*(args[1:]+moreargs), **dict(kwargs.items() + morekwargs.items())) File "/usr/lib/python2.3/site-packages/django/core/meta/__init__.py", line 801, in method_save ','.join(field_names), ','.join(placeholders)), db_values) File "/usr/lib/python2.3/site-packages/django/core/db/base.py", line 10, in execute result = self.cursor.execute(sql, params) File "/usr/lib/pytho… | adrian | brovienas@yahoo.com | 0 | 0 | 0 | 0 | 0 | 0 | ||
494 | 2005-09-12 19:00:50 | 2016-01-11 19:15:03 | 2022-03-06 03:20:52.053302 | Accepted | closed | contrib.admin | New feature | Normal | dev | fixed | Collapse in admin interface for inline related objects | It would be nice if there is a property to tell the admin interface to collapse the related object. eg: organisatie = meta.ForeignKey(Organisatie, edit_inline=meta.STACKED, edit_inline_style='collapse') I changed line 610 in the django/views/admin/main.py to t.append('<fieldset class="module%s">\n' % ((rel_field.rel.edit_inline != meta.TABULAR) and ' aligned collapse' or ' collapse')) and it works. But using a property would be better. Thanks | Tim Graham <timograham@gmail.com> | jcstover@nilling.nl | edit_inline, nfa-someday | 0 | 1 | 0 | 0 | 0 | 1 |
518 | 2005-09-15 21:54:15 | 2007-07-03 23:06:35 | 2022-03-06 03:20:56.417698 | Accepted | closed | Validators | enhancement | normal | worksforme | Need validators that aren't attached to a form field | In implementing CSRF protection (#510) I needed to add a validator to the validation chain that wasn't tied to a specific field within the manipulator. This isn't currently possible. If implemented, it would also make validation rules that depend on more than one field a lot more elegant. In fact, it would let us ditch the requirement to pass all_data to validation functions. I think Ian Bicking's [http://funformkit.sourceforge.net/ FunFormKit] takes this approach. (Personally I'd like to replace Manipulators with a more general purpose idea of Validators - collections of validation rules. At the moment Manipulators are coupled to models, but there are situations where you would want to validate a form that doesn't directly relate to a model. Validation in Rails has exactly the same problem.) | adrian | Simon Willison | 0 | 0 | 0 | 0 | 0 | 0 | ||
526 | 2005-09-19 12:12:00 | 2007-08-31 03:42:09 | 2022-03-06 03:20:57.677778 | Accepted | closed | Database layer (models, ORM) | defect | major | dev | duplicate | Error when edit_inline model have unique_together constraint | Example: {{{ #!python class Locale(meta.Model): """ available languages """ locale = meta.CharField(maxlength=5, unique=True) encoding = meta.CharField(maxlength=50, choices=ENCODINGS, default='utf_8') name = meta.CharField(maxlength=200, unique=True) plural = meta.TextField('plural form', help_text='plural form expression, see: <a href="http://www.gnu.org/software/gettext/manual/html_node/gettext_150.html" target="_blank">gettext</a>', blank=True, null=True) nplurals = meta.PositiveSmallIntegerField('number of plural forms', blank=True, null=True) def __repr__(self): return self.name # def _manipulator_validate_plural(self, field_data, all_data): """ validate plurals """ field_data = field_data.strip() if field_data == '': return '' if all_data['nplurals'].strip() == '': from django.core import validators raise validators.ValidationError('No nplurals is defined!') # try to compile plural expression try: from gettext import c2py c2py(field_data) except ValueError, err: from django.core import validators raise validators.ValidationError('Plural form expression error %s' % err) # _manipulator_validate_plural class META: ordering = ['locale'] admin = meta.Admin( fields = ( (None, { 'fields': ('locale', 'encoding', 'name',),}), ('Plurals', { 'fields': ('nplurals', 'plural'),}), ), list_display = ('name', 'locale', 'encoding'), ) # META # Locale class Message(meta.Model): """ messages """ site = meta.ForeignKey(sites.Site, null=True) package = meta.ForeignKey(packages.Package, null=True) message = meta.CharField(maxlength=255) has_plural = meta.BooleanField(default=False) … | adrian | nesh <nesh [at] studioquattro [dot] co [dot] yu> | 0 | 0 | 0 | 0 | 0 | 0 | |
528 | 2005-09-19 16:29:25 | 2011-09-28 16:12:16 | 2022-03-06 03:20:57.968922 | Accepted | closed | Documentation | defect | trivial | dev | fixed | Add a documentation generator that creates a PDF or HTML files locally | It would be nice to have doc generation script for making pdf or static html at local computer after each svn update. | Harkins | anonymous | doc-refactor | 0 | 1 | 0 | 0 | 0 | 0 |
546 | 2005-09-23 10:20:36 | 2007-09-14 16:05:33 | 2022-03-06 03:21:01.238276 | Accepted | closed | Template system | defect | normal | fixed | [patch] make render_to_string and render_to_response use select_template | The attached patch looks for a ";" in the template_name. If there is one, it will split the template_name on ";" and use the resulting list with select_template instead of passing on the template_name to get_template. That way the shortened rendering syntax can be used with template-selection, too. | cmcavoy | hugo <gb@bofh.ms> | 0 | 1 | 0 | 0 | 0 | 0 | ||
555 | 2005-09-25 13:23:18 | 2007-05-22 22:29:47 | 2022-03-06 03:21:02.789616 | Accepted | closed | Core (Other) | defect | normal | fixed | DateTimeFields with auto_now and auto_now_add don't change in place | When saving an instance of a model that includes a DateTimeField with auto_now or auto_now_add, the automatically inserted date will not show up until the instance is reloaded from the db. Model: {{{ class Task(meta.Model): create_date = meta.DateTimeField("Created on", auto_now_add=True) title = meta.CharField(maxlength=200) }}} Behavior: {{{ >>> from django.models.tasks import * >>> t = Task(title="task") >>> print 'presave', t.create_date presave >>> t.save() >>> # Now t has a create_date >>> print 'postsave', t.create_date postsave >>> # But it shows only in the database, not in the instance t. }}} | adrian | Andreas | 0 | 1 | 0 | 0 | 0 | 0 | ||
556 | 2005-09-25 18:22:00 | 2007-07-03 23:06:59 | 2022-03-06 03:21:02.980661 | Accepted | closed | Metasystem | defect | normal | fixed | Non-integer primary keys don't work when pointed-to by a ManyToManyField | The join table automatically created by {{{ManyToManyField}}}s assumes primary keys in the two joined tables are integers. | adrian | adrian | 0 | 0 | 0 | 0 | 0 | 0 | ||
562 | 2005-09-26 21:08:56 | 2007-09-16 11:30:03 | 2022-03-06 03:21:04.345138 | Accepted | closed | contrib.admin | defect | normal | wontfix | "Add another" JavaScript doesn't add new value to all fields relating to the same type | Suppose we have a model containing two fields: {{{ class Foo(meta.Model): field1 = meta.ForeignKey(Bar) field2 = meta.ForeignKey(Bar) ... }}} The admin interface generates "Add another" links next to the dropdowns. If the link next to field1 is clicked, and a new value is added, then the new value only appears in the field1 dropdown and not in the dropdown for field2. This is also seen in "Add another" links next to edit_line fields. | nobody | Esaj | 0 | 0 | 0 | 0 | 0 | 0 | ||
565 | 2005-09-27 14:29:02 | 2008-08-01 15:55:49 | 2022-03-06 03:21:04.836045 | Accepted | closed | contrib.admin | defect | normal | dev | fixed | Unique fields don't work on edit_inline models | There seems to be a bug with validating inline editable items that have unique=true. To reproduce: 1) Modify the tutorial polls app so that the Choice model defines choice as: {{{ choice = meta.CharField(maxlength=200, core=True, unique=True) }}} 2) Create a poll with two choices, click 'save and continue editing' 3) Add a third choice (with unique name) and click 'save' You should see a "Choice with this choice already exists." validation error for the second choice. | nobody | kyrrigle@gmail.com | admin edit inline unique error nfa-fixed | 0 | 0 | 0 | 0 | 0 | 0 |
569 | 2005-09-27 17:50:44 | 2007-07-03 23:06:49 | 2022-03-06 03:21:05.593468 | Accepted | closed | contrib.admin | defect | normal | wontfix | [patch] better pluralization for table names | I ripped off the inflector.pluralize function from Ruby on Rails and ported it over to python. This gives much better pluralization than the simple rule used by django. The source of the pluralize function can be found [https://simon.bofh.ms/cgi-bin/trac-django-projects.cgi/file/stuff/trunk/inflector.py over here in my subversion tree]. | adrian | hugo <gb@bofh.ms> | 0 | 1 | 0 | 0 | 0 | 0 | ||
572 | 2005-09-28 06:41:14 | 2007-05-22 22:23:18 | 2022-03-06 03:21:06.035492 | Accepted | closed | contrib.admin | defect | normal | dev | invalid | When i have an ImageField and a auto_now DateTimeField in the same model it doesnt get saved | When there is an image field and a auto_now_add date time field in the same table, the date time field is not generated although the image is uploaded, and a postgres error is generated | adrian | lawgon@thenilgiris.com | 0 | 0 | 0 | 0 | 0 | 0 | |
575 | 2005-09-29 03:55:42 | 2008-08-01 15:18:44 | 2022-03-06 03:21:06.535209 | Accepted | closed | contrib.admin | defect | major | dev | fixed | edit_inline don't save child data when a "blank=True" field is not set | when I try to insert or modify throught the admin interface, child data is not saved when there is a "blank=True" field and it's not set. example: model: {{{ class Person(meta.Model): name = meta.CharField(maxlength=30) lastName = meta.CharField(maxlength=30) class Phone: person = meta.ForeignKey(Person, edit_inline=meta.STACKED, num_in_admin=2) number = meta.CharField(maxlength=30, core=True) description = meta.CharField(maxlength=100, blank=True, core=True) }}} if I set a Phone number and I don't set description, this don't throw any error, but the Phone data is not saved, but this would be saved if I set the description too | nobody | pylorca | nfa-fixed | 0 | 0 | 0 | 0 | 0 | 0 |
596 | 2005-10-06 17:32:50 | 2012-04-06 05:20:32 | 2022-03-06 03:21:10.053031 | Accepted | closed | Core (Other) | Bug | Normal | dev | wontfix | Allow Django to be packaged as a Python egg | This patch allows Django to be packaged as a [http://peak.telecommunity.com/DevCenter/PythonEggs Python egg file]. This means that you can download the Django source and build an egg file with "python setup.py bdist_egg", and that egg contains all of Django and can be dropped onto sys.path and used like other eggs. In particular, this makes it easier to use Django when you don't want to install it into your Python directory (either with "setup.py install" or with a symlink). This patch incorporates some code from ticket #582. | nobody | sil@kryogenix.org | 0 | 1 | 1 | 0 | 1 | 0 | |
607 | 2005-10-10 22:17:48 | 2010-05-20 21:33:36 | 2022-03-06 03:21:12.426017 | Accepted | closed | contrib.admin | enhancement | normal | wontfix | Admin option to show/hide fields | '''Concept:''' An admin option that specifies a list of fields to show/hide based on the value of another field. '''Example:''' An "I like cake" checkbox that, when checked, shows two previously hidden text fields "Favorite cake" and "Favorite frosting". '''Code Example:''' {{{ admin.switch = [('likes_cake', {'True': ['favorite_cake', 'favorite_frosting']})] }}} You could also tie this to a particular value of a select field: {{{ admin.switch = [('gender', {'M': ['favorite_sport'], 'F': ['favorite_soap_opera']})] }}} '''Unsolved issues:''' * Need some place to specify the initial state of the targeted fields (visible or hidden). Default (and most common case) would be hidden, but there are cases where this needs to be reversed. * All hiding and should happen in javascript, so fields don't get hidden that can't be turned back on with javascript disabled. The switch option could also tie into the validation framework so unnecessary fields (meant to be hidden) don't get filled in even when javascript is off. * Any other ideas? | nobody | wilson | 0 | 0 | 0 | 0 | 0 | 0 | ||
632 | 2005-10-16 10:58:52 | 2012-01-09 08:13:02 | 2022-03-06 03:21:16.333280 | Accepted | closed | Template system | enhancement | minor | wontfix | database stored templates | In [https://simon.bofh.ms/cgi-bin/trac-django-projects.cgi/browser/cms/trunk/apps/dbtemplate/ my repository] for my new CMS project I have a simple and little app that implements database stored templates. Actually it's just a model and a template loader. This might be something that could go into the django.contrib package. I think it's especially handy if your site is mostly Django admin driven and people should be able to make changes to templates through the web. | adrian | hugo | 0 | 1 | 0 | 0 | 0 | 0 | ||
639 | 2005-10-17 21:23:25 | 2007-02-26 17:17:11 | 2022-03-06 03:21:17.477080 | Accepted | closed | Core (Other) | defect | major | fixed | Model FileFields empty on first pass through save() | For models with file fields ({{{FileField/ImageField etc.}}}) save() is called twice on manipulator form submission - the first time the _pre_save() and _post_save() hooks are called the file fields are empty meaning that you must explicitly check that the field value is not empty string before taking any related action. This behaviour seems confusing and I think it explains this problem: http://groups.google.com/group/django-users/browse_frm/thread/99a9aa63b343d27e?tvc=1&q=filefield+_post_save | adrian | django@kieranholland.com | 0 | 0 | 0 | 0 | 0 | 0 | ||
689 | 2005-10-25 01:11:58 | 2011-09-28 16:12:20 | 2022-03-06 03:21:25.817740 | Accepted | closed | Core (Other) | enhancement | normal | dev | fixed | Honor Web server provided authentication | I would like to see a 2nd mod_python handler. one which takes the REMOTE_USER parameter passed to it and for it to use that as the user-id so that I can hook my app into the default intranet security system we use over here. here is the patch to the original to make that the case. NOTE: it creates a user-record if none exist for the user. {{{ Helios:/src/django_newadmin/django/core/handlers ianh$ diff modpython_apacheauth.py modpython.py 102,103c102 < #user_id = self.session[users.SESSION_KEY] < user_id = self._req.user --- > user_id = self.session[users.SESSION_KEY] 106,117c105,106 < try: < self._user = users.get_object(username__exact=user_id) < except (users.UserDoesNotExist): < from django.models.auth import User < import md5 < import datetime < password_md5 = md5.new('fake').hexdigest() < now = datetime.datetime.now() < self._user = User(None, user_id,'','', user_id+'@cnet.com',password_md5,False,True,False,now,now) < self._user.save() < #except (AttributeError, KeyError, ValueError, users.UserDoesNotExist): < except (AttributeError, KeyError, ValueError): --- > self._user = users.get_object(pk=user_id) > except (AttributeError, KeyError, ValueError, users.UserDoesNotExist): 120d108 < }}} | gwilson | Ian@holsman.net | 0 | 1 | 0 | 0 | 0 | 0 | |
690 | 2005-10-25 01:18:34 | 2007-07-17 21:56:24 | 2022-03-06 03:21:25.963116 | Accepted | closed | contrib.admin | defect | normal | duplicate | Model allowed me to 'hide' a required field, which produced unuseable error messages. | I had a data model which had a required field 'text'. When I was ordering the fields using the following syntax: admin = meta.Admin( # Add this to order the fields and even group them! fields = ( (None, {'fields': ('title', 'published_date')} ), ("Categories", {'fields': ('categories',)} ), ) ) I forgot to put in the 'text' field. Which meant that when I was adding a new item, it would complain that I should fix the 'error' below, but there was no error listed below, because the text field was never shown. The validate command should catch this maybe? But at the very least, if error messages aren't shown during the display of the form, they should be shown in a final list at the end. Or something. | adrian | lakin.wecker@gmail.com | 0 | 0 | 0 | 0 | 0 | 0 | ||
702 | 2005-10-27 16:26:51 | 2011-12-31 00:43:32 | 2022-03-06 03:21:27.846549 | Accepted | closed | Documentation | New feature | Normal | dev | fixed | document that ManyToMany fields can't be in unique_together | From IRC: * hugo- any way to get a unique_together that works with ManyToMany fields? * adrian_h I don't believe so, at the moment * hugo- yeah. I had it working with some simple validator, until I realized that my validator can't know wether I am creating or updating (and if updating, which one I am updating) :-) * hugo- I _think_ it could be done with the same check you do in manipulators_validator_unique_together in core.meta for ManyToOne * hugo- or at least a very similar one * adrian_h If a model has unique_together = (('slug', 'sites'),), where sites is a manytomany field, would the validator check that the slug is unique per each individual site, or per the specific combination of the sites? * hugo- per each site * hugo- at least that's how you use it in reverse: you use sites.get_current() to get the curent site and then for example check get_current().get_flatfile_object() to find the flatfile for that url for that site * hugo- currently you can add flatfiles for the same site with the same URL and get a nice exception ... * adrian_h Good point * adrian_h This is worth a ticket | nobody | hugo | model-validation | 0 | 1 | 0 | 0 | 0 | 0 |
717 | 2005-11-03 01:01:31 | 2011-03-01 18:55:40 | 2022-03-06 03:21:30.384821 | Accepted | closed | HTTP handling | defect | normal | fixed | If-Modified-Since checked for exact match | In ConditionalGetMiddleWare Last-Modified date is checked for exact match with If-Modified-Since and only then 'Not Modified' response returned. There should be check if Last-Modified >= If-Modiifed-Since. | adrian | Maniac <Maniac@SoftwareManiacs.Org> | http middleware conditional get if-modified-since | 0 | 1 | 0 | 0 | 0 | 0 | |
730 | 2005-11-04 20:44:11 | 2011-09-28 16:12:16 | 2022-03-06 03:21:32.123435 | Accepted | closed | Core (Other) | enhancement | normal | fixed | more explicit middlware ordering | In a [http://groups.google.com/group/django-developers/browse_frm/thread/2865c3f1e8780bf6/1123d4c87d0aff75#1123d4c87d0aff75 django-developer discussion] the problem of middlware ordering came up. I think a solution might be to have an optional way to give an explicit middleware ordering for the response phase. This could be done in a way so that if the user doesn't give an explicit ordering, the system automatically uses the reversed middleware list - that's the behaviour we have now. But if the users defines a setting for middlewar response order, the system could check that the content is identical in content, but can be different in order. That way people can give explicit order and response handling would be much more explicit and understandable. | andrewbadr | hugo | 0 | 1 | 1 | 1 | 1 | 0 | ||
758 | 2005-11-09 05:33:24 | 2007-07-12 18:02:16 | 2022-03-06 03:21:35.928754 | Accepted | closed | contrib.admin | defect | normal | fixed | django_admin_log items should be HTML-escaped when shown in admin interface | Admin actions are currently added to the `django_admin_log` table with the `object_repr` column set to the object's `__repr__`. When displayed in the "Recent Actions" sidebar in the admin, however, these bits of text are not escaped to be HTML-safe; anything enclosed in `<angle brackets>`, for instance, seems invisible to the admin interface user as the browser interprets it as a tag. | adrian | Tom Tobin <korpios@korpios.com> | 0 | 0 | 0 | 0 | 0 | 0 | ||
760 | 2005-11-09 10:52:24 | 2007-02-26 17:45:33 | 2022-03-06 03:21:36.275823 | Accepted | closed | contrib.admin | defect | normal | wontfix | Error reason not seen when 500 template is missing | When DEBUG = False (production environment) and an error happens, and the 500 template is not provided - one gets a traceback about the template not existing, but does not get a traceback for the exception that caused the actual failure. | turkey | wojtek@brandlay.com | 0 | 0 | 0 | 0 | 0 | 0 | ||
769 | 2005-11-10 22:49:16 | 2007-07-03 23:08:39 | 2022-03-06 03:21:37.557957 | Accepted | closed | contrib.admin | defect | normal | fixed | ForeignKey issue w/r/t recent get_db_column() -> get_attname_column() switch in core.meta.fields | This is in regards to the [http://code.djangoproject.com/browser/django/branches/new-admin new-admin branch] at revision [http://code.djangoproject.com/browser/django/branches/new-admin?rev=1158 1158]... During [1154], rjwittams merged in changes from trunk, including [1150] which changed Field.get_db_column() to Field.get_attname_column() and modified the various attributes used to refer to fields (e.g. manipulator fields, model object fields, database column names, &c). However, it looks like a couple spots were missed; see attached diff. | rjwittams | bitprophet | 0 | 0 | 0 | 0 | 0 | 0 | ||
776 | 2005-11-12 15:17:01 | 2007-07-03 23:09:08 | 2022-03-06 03:21:38.456974 | Accepted | closed | *.djangoproject.com | defect | trivial | new-admin | fixed | smart+question | Under Authentication data in templates there is a link to: http://www.djangoproject.com/documentation/models/templates_python/ I got a 404 when I clicked on it. | jacob | bmurdock | http404 | 0 | 0 | 0 | 0 | 0 | 0 |
785 | 2005-11-14 03:47:53 | 2007-12-02 01:21:14 | 2022-03-06 03:21:39.560674 | Accepted | closed | Database layer (models, ORM) | enhancement | normal | dev | duplicate | many2many table and legacy databases. | hi. I have the following table in a legacy database. {{{ CREATE TABLE `hostgroup_membership` ( `hostid` int(11) NOT NULL default '0', `groupid` int(11) NOT NULL default '0', KEY `hostid` (`hostid`), KEY `groupid` (`groupid`), CONSTRAINT `hostgroup_membership_ibfk_1` FOREIGN KEY (`hostid`) REFERENCES `host` (`id`) ON DELETE CA SCADE, CONSTRAINT `hostgroup_membership_ibfk_2` FOREIGN KEY (`groupid`) REFERENCES `hostgroup` (`id`) ON DEL ETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Hostgroup membership'; }}} and i would like to use a many2many field in my model to represent this. right now I have 2 limitations. 1. I can not specify the table name. 2. I can not specify the field names and what they map too. what I would like to be able to do is somehow specify the tablename, as well as how the fields map to their respective column names. something like {{{ class Host(meta.model): Groups = meta.manyTomanyfield(Groups, db_table='foo', columns={self_col:'hostid', to_col:'groupid' }) }}} and have the manytomany code do the right thing. | nobody | Ian@holsman.net | 0 | 1 | 1 | 0 | 0 | 0 | |
792 | 2005-11-14 15:26:55 | 2007-09-16 11:41:56 | 2022-03-06 03:21:40.397345 | Accepted | closed | contrib.admin | defect | normal | invalid | FileField and edit_inline=meta.STACKED | When using a FileField in a model that is edited inline in another model, I get the following error: {{{ #!python There's been an error: Traceback (most recent call last): File "/home/gb/projects/django/core/handlers/base.py", line 71, in get_response response = callback(request, **param_dict) File "/home/gb/projects/django/contrib/admin/views/decorators.py", line 49, in _checklogin return view_func(request, *args, **kwargs) File "/home/gb/projects/django/contrib/admin/views/main.py", line 795, in add_stage new_object = manipulator.save(new_data) File "/home/gb/projects/django/utils/functional.py", line 3, in _curried return args[0](*(args[1:]+moreargs), **dict(kwargs.items() + morekwargs.items())) File "/home/gb/projects/django/core/meta/__init__.py", line 1573, in manipulator_save f.save_file(rel_new_data, new_rel_obj, change and old_rel_obj or None, old_rel_obj is not None, rel=True) UnboundLocalError: local variable 'old_rel_obj' referenced before assignment }}} The model: {{{ #!python class Dokument(meta.Model): slug = meta.SlugField('Kurzname', prepopulate_from=('titel',)) titel = meta.CharField('Titel', maxlength=100) beschreibung = meta.TextField('Beschreibung') parent = meta.ForeignKey('self', null=True, blank=True) class META: admin = meta.Admin( search_fields = ('titel', 'beschreibung'), ) module_name = 'dokumente' verbose_name_plural = 'Dokumente' def __repr__(self): return self.titel class Anhang(meta.Model): titel = meta.CharField('Titel', maxlength=100) beschreibung = meta.TextField('Beschreibung') dokument = meta.ForeignKey(Dokument, edit_inline=meta.STACKED, num_in_admin=1) datei = meta.FileField('Datei', upload_to='uploads/%Y-%m-%d') class META: module_name = 'Anhaenge' verbose_name_plural = 'Anhaenge' def __repr__(self): return self.titel }}} | nobody | hugo | 0 | 0 | 0 | 0 | 0 | 0 | ||
851 | 2005-11-20 12:12:18 | 2007-07-03 23:08:55 | 2022-03-06 03:21:49.784836 | Accepted | closed | Database layer (models, ORM) | enhancement | normal | invalid | New SQL query API | I'm not sure how to put this nicely, but Django's SQL query API is pretty bad. I remember excitedly thinking of switching my project to Django and then seeing this terrible syntax and just giving up entirely. Indeed, I probably would never give Django a second look if I hadn't had lunch with Adrian. pub_date__date__lte='2005-01-01' is not just unintuitive, it's ugly. | adrian | aaronsw | 0 | 0 | 0 | 0 | 0 | 0 | ||
875 | 2005-11-22 09:46:55 | 2007-07-03 23:09:17 | 2022-03-06 03:21:53.172720 | Accepted | closed | Documentation | defect | normal | fixed | typo in docs | http://www.djangoproject.com/documentation/db_api/ in 'Field lookups' the examples says pub_date__lte translates to < NOW() and it translates to <= NOW() I believe :) | jacob | wojtek@brandlay.com | 0 | 0 | 0 | 0 | 0 | 0 | ||
893 | 2005-11-24 07:07:17 | 2007-09-18 00:07:33 | 2022-03-06 03:21:55.910809 | Accepted | closed | contrib.admin | defect | normal | fixed | "change password" and "log out" on admin site doesn't work on apache2 | When I setup a django project with apache2 and mod_python, the "change password" and "log out" on admin site doesn't work, I think the link in base.html should not be "/admin/password_change/", it should be "password_change/". | adrian | wangbin@gmail.com | 0 | 1 | 1 | 1 | 1 | 0 | ||
897 | 2005-11-24 10:59:37 | 2020-08-29 20:52:58 | 2022-03-06 03:21:56.427542 | Accepted | new | contrib.admin | New feature | Normal | Bi-Directional ManyToMany in Admin | Allow amnytomany relationships to be defined both ways E.G {{{ class ItemType(meta.Model): name = meta.CharField(maxlength=100) descritpion = meta.CharField(maxlength=250) class PropertyType(meta.Model): name = meta.CharField(maxlength=100) itemtypes = meta.ManyToManyField(ItemType) }}} Excellent. When I make a new property type in the admin screens I get a mutiselect window for item types. What I want to be able to do however is have this work back the other way too so that whe I create a new item i can specify what property types apply. Thanks | nobody | anonymous | 0 | 0 | 0 | 0 | 0 | 0 |
Advanced export
JSON shape: default, array, newline-delimited, object
CREATE TABLE tickets ( id int primary key, created datetime, changetime datetime, last_pulled_from_trac datetime, stage text, status text, component text, type text, severity text, version text, resolution text, summary text, description text, owner text, reporter text, keywords text, easy boolean, has_patch boolean, needs_better_patch boolean, needs_tests boolean, needs_docs boolean, ui_ux boolean );