{"id": 16181, "created": "2011-06-09 10:34:35", "changetime": "2011-06-09 10:47:02", "last_pulled_from_trac": "2022-03-06 04:02:29.874172", "stage": "Unreviewed", "status": "closed", "component": "Template system", "type": "Bug", "severity": "Normal", "version": "1.3", "resolution": "duplicate", "summary": "Template debugger highlights the row with error incorrectly", "description": "Imagine you have a template like\r\n{{{\r\n{% for item in loop %}\r\n {% broken_tag %}\r\n{% endfor %}\r\n}}}\r\nwhere loop is any not empty iterable, and \"broken_tag\" tag raises an exception (whatever the exception is). Then template debugger will highlight the first string with the for statement instead of the \"broken_tag\" string as a place where the error occured.", "owner": "nobody", "reporter": "vladmos", "keywords": null, "easy": 0, "has_patch": 0, "needs_better_patch": 0, "needs_tests": 0, "needs_docs": 0, "ui_ux": 0} {"id": 16191, "created": "2011-06-09 13:48:58", "changetime": "2011-06-09 13:59:25", "last_pulled_from_trac": "2022-03-06 04:02:31.359658", "stage": "Unreviewed", "status": "closed", "component": "Documentation", "type": "Bug", "severity": "Normal", "version": "1.3", "resolution": "invalid", "summary": "indentation typo in tutorial part 2", "description": "On https://docs.djangoproject.com/en/1.3/intro/tutorial02/ the last line of the following snippet needs to have a tab?\r\n\r\ndef was_published_today(self):\r\n return self.pub_date.date() == datetime.date.today()\r\nwas_published_today.short_description = 'Published today?'\r\n", "owner": "nobody", "reporter": "anonymous", "keywords": null, "easy": 0, "has_patch": 0, "needs_better_patch": 0, "needs_tests": 0, "needs_docs": 0, "ui_ux": 0} {"id": 16186, "created": "2011-06-09 12:48:10", "changetime": "2011-06-09 15:39:13", "last_pulled_from_trac": "2022-03-06 04:02:30.588387", "stage": "Ready for checkin", "status": "closed", "component": "contrib.admin", "type": "Cleanup/optimization", "severity": "Normal", "version": "dev", "resolution": "fixed", "summary": "Remove inline CSS from admin templates", "description": "The templates in contrib.admin have a lot of inline javascript. Also inline css styling appears at several places. This should be cleaned up so improving or redesigning the admin in the future is more easy. Javascripts could and should also be more based on jQuery, since it has been available in the admin anyway for some time now.", "owner": "cscheng", "reporter": "bsimons", "keywords": "admin, templates, html, css, javascript", "easy": 0, "has_patch": 1, "needs_better_patch": 0, "needs_tests": 0, "needs_docs": 0, "ui_ux": 1} {"id": 16178, "created": "2011-06-09 04:03:13", "changetime": "2011-06-09 23:15:44", "last_pulled_from_trac": "2022-03-06 04:02:29.461590", "stage": "Ready for checkin", "status": "closed", "component": "HTTP handling", "type": "Cleanup/optimization", "severity": "Normal", "version": "1.3", "resolution": "fixed", "summary": "Cleanup request classes' __repr__()", "description": "As discussed in https://code.djangoproject.com/ticket/14614#comment:16, there are a few small inconsistencies and some duplicated code in `HttpRequest`'s, `ModPythonRequest`'s, and `WSGIRequest`'s `__repr__()` methods, and since [16339] also in `ExceptionReporterFilter.get_request_repr ()`. The attached patch consolidates all that code into a single function. Note that I had to initialise the `_post_parse_error` attribute in the `HttpRequest` constructor, which should make sense since that attribute is used in some of `HttpRequest`'s methods anyway.", "owner": "nobody", "reporter": "julien", "keywords": null, "easy": 0, "has_patch": 1, "needs_better_patch": 0, "needs_tests": 0, "needs_docs": 0, "ui_ux": 0} {"id": 16185, "created": "2011-06-09 12:03:45", "changetime": "2011-06-10 08:26:06", "last_pulled_from_trac": "2022-03-06 04:02:30.431603", "stage": "Ready for checkin", "status": "closed", "component": "Testing framework", "type": "New feature", "severity": "Normal", "version": "1.3", "resolution": "fixed", "summary": "Allow to override TEST_RUNNER setting with a command-line option to 'manage.py 'test'", "description": "In order to enable the integration of the Django test framework with IDE test runners, it's useful to be able to replace or decorate the test runner specified by the TEST_RUNNER setting in settings.py. Currently, the only way to do so is to provide our own settings.py which imports the user's settings.py and then changes the TEST_RUNNER setting. This is ugly and not always works.\r\n\r\nA much preferred solution is to be able to override the test runner with a command line option passed to 'manage.py test'.\r\n\r\nI've discussed this approach with russelm at the DjangoCon.EU sprint, and it was approved in general. ", "owner": "nobody", "reporter": "intelliyole", "keywords": null, "easy": 0, "has_patch": 1, "needs_better_patch": 0, "needs_tests": 0, "needs_docs": 0, "ui_ux": 0} {"id": 16196, "created": "2011-06-09 15:57:03", "changetime": "2011-06-10 10:18:07", "last_pulled_from_trac": "2022-03-06 04:02:32.150766", "stage": "Ready for checkin", "status": "closed", "component": "Uncategorized", "type": "Cleanup/optimization", "severity": "Normal", "version": "dev", "resolution": "fixed", "summary": "Redundant or incorrect code in tests", "description": "Ran a static analysis tool on Django tests, found and fixed several classes of issues:\r\n- Unnecessary semicolons\r\n- Unnecessary backslashes\r\n- Duplicate keys in dictionaries containing testdata (sometimes causing testcases present in the code to be missed)\r\n- One case of incorrectly inserted line break preventing the execution of an assertion\r\n\r\nAttached patch fixing the issues.", "owner": "melinath", "reporter": "intelliyole", "keywords": null, "easy": 0, "has_patch": 1, "needs_better_patch": 0, "needs_tests": 0, "needs_docs": 0, "ui_ux": 0} {"id": 16198, "created": "2011-06-09 15:58:59", "changetime": "2011-06-10 14:08:52", "last_pulled_from_trac": "2022-03-06 04:02:32.474874", "stage": "Ready for checkin", "status": "closed", "component": "Testing framework", "type": "Cleanup/optimization", "severity": "Normal", "version": "1.3", "resolution": "fixed", "summary": "model_forms tests are still doctests.", "description": "Refactor model_forms tests to be unittests instead of doctests.", "owner": "nobody", "reporter": "gregmuellegger", "keywords": "model_forms, doctests", "easy": 0, "has_patch": 1, "needs_better_patch": 0, "needs_tests": 0, "needs_docs": 0, "ui_ux": 0} {"id": 16195, "created": "2011-06-09 15:39:30", "changetime": "2011-06-11 15:43:52", "last_pulled_from_trac": "2022-03-06 04:02:32.003277", "stage": "Ready for checkin", "status": "closed", "component": "Documentation", "type": "Cleanup/optimization", "severity": "Normal", "version": "dev", "resolution": "fixed", "summary": "Document the ModelAdmin.get_changelist", "description": "Was commited in [11910]. It need some documentation.", "owner": "msaelices", "reporter": "msaelices", "keywords": "modeladmin changelist", "easy": 0, "has_patch": 1, "needs_better_patch": 0, "needs_tests": 0, "needs_docs": 0, "ui_ux": 0} {"id": 16183, "created": "2011-06-09 11:45:09", "changetime": "2011-06-14 10:45:50", "last_pulled_from_trac": "2022-03-06 04:02:30.154612", "stage": "Ready for checkin", "status": "closed", "component": "contrib.auth", "type": "Bug", "severity": "Normal", "version": "1.3", "resolution": "fixed", "summary": "Incorrect test in contrib.auth silently passes", "description": "There are a test case: [source:django/trunk/django/contrib/auth/tests/permissions.py@16341#L36 auth.TestAuthPermissions]. It checks that the ordering of autogenerated permissions is the same (ticket [ticket:14731]) by creating permissions and trying to load fixture, then checking that 'loaddata' passed with clean stderr.\r\n\r\nThe problem is that this fixture (\"test_permissions.json\") has been checked in with different name (\"permissionstestdata.json\"). The bigger problem is that \"loaddata test_permissions.json\" yields \"No fixtures found.\" in stdout, leaving stderr clean. So the test was here and passed without an error since checkin.\r\n\r\nAttaching patch that fixes fixture name and the fixture itself (as it contains contenttype for legacy auth.Message model which breaks the test).", "owner": "desh", "reporter": "desh", "keywords": null, "easy": 0, "has_patch": 1, "needs_better_patch": 0, "needs_tests": 0, "needs_docs": 0, "ui_ux": 0} {"id": 16200, "created": "2011-06-09 16:06:11", "changetime": "2011-06-16 16:33:47", "last_pulled_from_trac": "2022-03-06 04:02:32.967466", "stage": "Ready for checkin", "status": "closed", "component": "Template system", "type": "Bug", "severity": "Normal", "version": "1.3", "resolution": "fixed", "summary": "__init__ of TemplateIfParser has return statement", "description": null, "owner": "nobody", "reporter": "traff", "keywords": null, "easy": 0, "has_patch": 1, "needs_better_patch": 0, "needs_tests": 0, "needs_docs": 0, "ui_ux": 0} {"id": 16182, "created": "2011-06-09 10:53:19", "changetime": "2011-06-17 09:53:42", "last_pulled_from_trac": "2022-03-06 04:02:30.021189", "stage": "Accepted", "status": "closed", "component": "Core (Other)", "type": "Bug", "severity": "Normal", "version": "dev", "resolution": "wontfix", "summary": "TimestampSigner should use a more precise timestamp", "description": "Generating a secure cookie using the TimestampSigner within the same second and the same data actually generates precisely the same cookie.\r\n\r\nI'm currently developing a cookie-based session backend, and this line keeps failing as a result, because cycling the cookie isn't really cycling the cookie: https://code.djangoproject.com/browser/django/trunk/django/contrib/sessions/tests.py#L153\r\n\r\nI've attached a small patch that fixes the problem by increasing the precision.", "owner": "floguy", "reporter": "floguy", "keywords": null, "easy": 0, "has_patch": 1, "needs_better_patch": 0, "needs_tests": 0, "needs_docs": 0, "ui_ux": 0} {"id": 16206, "created": "2011-06-09 18:25:12", "changetime": "2011-06-17 18:38:06", "last_pulled_from_trac": "2022-03-06 04:02:33.767912", "stage": "Unreviewed", "status": "closed", "component": "Uncategorized", "type": "Bug", "severity": "Normal", "version": "1.3", "resolution": "invalid", "summary": "DB router example causes bug in django admin delete", "description": "Caused by auth models not having an _meta.\r\n\r\nExample based off the code in:\r\nhttps://docs.djangoproject.com/en/dev/topics/db/multi-db/#an-example\r\n\r\nCal\r\n\r\n{{{\r\nclass DBRouter(object):\r\n \"\"\"A router to control all database operations on models in\r\n the myapp application\"\"\"\r\n\r\n def db_for_read(self, model, **hints):\r\n \"Point all operations on myapp models to 'other'\"\r\n if model._meta.app_label == 'carma':\r\n return 'carma_ro'\r\n elif model._meta.app_label == 'nats':\r\n return 'nats_ro'\r\n elif model._meta.app_label == 'ddcms':\r\n return 'nats_rw'\r\n else:\r\n return 'default'\r\n return None\r\n\r\n def db_for_write(self, model, **hints):\r\n \"Point all operations on myapp models to 'other'\"\r\n if model._meta.app_label == 'carma':\r\n return 'carma_ro'\r\n elif model._meta.app_label == 'nats':\r\n return 'nats_ro'\r\n elif model._meta.app_label == 'ddcms':\r\n return 'nats_rw'\r\n else:\r\n return 'default'\r\n return None\r\n\r\n def allow_relation(self, obj1, obj2, **hints):\r\n \"Allow any relation if a model in myapp is involved\"\r\n if obj1._meta.app_label == 'carma' or obj2._meta.app_label == 'carma':\r\n # Allow DDCMS to have a relation with CARMA and NATS.\r\n if obj1._meta.app_label in ('carma', 'nats', 'ddcms') and obj2._meta.app_label in ('carma', 'nats', 'ddcms'):\r\n return True\r\n \r\n else:\r\n return False\r\n else:\r\n return True\r\n\r\n def allow_syncdb(self, db, model):\r\n if model._meta.app_label == 'carma':\r\n return False\r\n elif model._meta.app_label == 'nats':\r\n return False\r\n elif model._meta.app_label == 'ddcms' and db == 'default':\r\n return False\r\n else:\r\n return True\r\n}}}\r\n\r\n{{{\r\n\r\nEnvironment:\r\nRequest Method: GET\r\nRequest URL: http://dev.cp.dukedollars.com/admin/auth/user/2/delete/\r\nDjango Version: 1.2.4\r\nPython Version: 2.6.6\r\nInstalled Applications:\r\n['django.contrib.auth',\r\n'django.contrib.contenttypes',\r\n'django.contrib.sessions',\r\n'django.contrib.sites',\r\n'django.contrib.messages',\r\n'django.contrib.admin',\r\n'django.contrib.admindocs',\r\n'debug_toolbar',\r\n'webapp.nats',\r\n'webapp.carma',\r\n'webapp.ddcms',\r\n'webapp.sites.ma',\r\n'webapp.sites.cp',\r\n'webapp.accounts']\r\nInstalled Middleware:\r\n('django.middleware.common.CommonMiddleware',\r\n'django.contrib.sessions.middleware.SessionMiddleware',\r\n'django.middleware.csrf.CsrfViewMiddleware',\r\n'django.contrib.auth.middleware.AuthenticationMiddleware',\r\n'django.contrib.messages.middleware.MessageMiddleware',\r\n'webapp.strip_whitespace.StripWhitespaceMiddleware',\r\n'webapp.multihost.MultiHostMiddleware',\r\n'debug_toolbar.middleware.DebugToolbarMiddleware',\r\n'webapp.djerror.DJErrorMiddleware')\r\nTraceback:\r\nFile \"/usr/local/lib/python2.6/site-packages/Django-1.2.4-py2.6.egg/django/core/handlers/base.py\" in get_response\r\n100. response = callback(request, *callback_args, **callback_kwargs)\r\nFile \"/usr/local/lib/python2.6/site-packages/Django-1.2.4-py2.6.egg/django/contrib/admin/options.py\" in wrapper\r\n265. return self.admin_site.admin_view(view)(*args, **kwargs)\r\nFile \"/usr/local/lib/python2.6/site-packages/Django-1.2.4-py2.6.egg/django/utils/decorators.py\" in _wrapped_view\r\n76. response = view_func(request, *args, **kwargs)\r\nFile \"/usr/local/lib/python2.6/site-packages/Django-1.2.4-py2.6.egg/django/views/decorators/cache.py\" in _wrapped_view_func\r\n78. response = view_func(request, *args, **kwargs)\r\nFile \"/usr/local/lib/python2.6/site-packages/Django-1.2.4-py2.6.egg/django/contrib/admin/sites.py\" in inner\r\n190. return view(request, *args, **kwargs)\r\nFile \"/usr/local/lib/python2.6/site-packages/Django-1.2.4-py2.6.egg/django/utils/decorators.py\" in _wrapper\r\n21. return decorator(bound_func)(*args, **kwargs)\r\nFile \"/usr/local/lib/python2.6/site-packages/Django-1.2.4-py2.6.egg/django/utils/decorators.py\" in _wrapped_view\r\n76. response = view_func(request, *args, **kwargs)\r\nFile \"/usr/local/lib/python2.6/site-packages/Django-1.2.4-py2.6.egg/django/utils/decorators.py\" in bound_func\r\n17. return func(self, *args2, **kwargs2)\r\nFile \"/usr/local/lib/python2.6/site-packages/Django-1.2.4-py2.6.egg/django/contrib/admin/options.py\" in delete_view\r\n1135. (deleted_objects, perms_needed) = get_deleted_objects((obj,), opts, request.user, self.admin_site)\r\nFile \"/usr/local/lib/python2.6/site-packages/Django-1.2.4-py2.6.egg/django/contrib/admin/util.py\" in get_deleted_objects\r\n111. obj._collect_sub_objects(collector)\r\nFile \"/usr/local/lib/python2.6/site-packages/Django-1.2.4-py2.6.egg/django/db/models/base.py\" in _collect_sub_objects\r\n625. db = router.db_for_write(f.rel.through.__class__, instance=self)\r\nFile \"/usr/local/lib/python2.6/site-packages/Django-1.2.4-py2.6.egg/django/db/utils.py\" in _route_db\r\n134. chosen_db = method(model, **hints)\r\nFile \"/ddcms/dev/webapp/db_router.py\" in db_for_write\r\n19. if model._meta.app_label == 'carma':\r\nException Type: AttributeError at /admin/auth/user/2/delete/\r\nException Value: type object 'ModelBase' has no attribute '_meta'\r\n}}}", "owner": "nobody", "reporter": "foxwhisper", "keywords": null, "easy": 0, "has_patch": 0, "needs_better_patch": 0, "needs_tests": 0, "needs_docs": 0, "ui_ux": 0} {"id": 16207, "created": "2011-06-09 18:33:45", "changetime": "2011-06-25 12:39:57", "last_pulled_from_trac": "2022-03-06 04:02:33.903554", "stage": "Ready for checkin", "status": "closed", "component": "Documentation", "type": "Bug", "severity": "Normal", "version": "1.3", "resolution": "fixed", "summary": "UserProfile documentation (not extensive enough)", "description": "https://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users#\r\n\r\n{{{The method get_profile() does not create the profile, if it does not exist. You need to register a handler for the signal django.db.models.signals.post_save on the User model, and, in the handler, if created=True, create the associated user profile.}}}\r\n\r\nHowever, it does not show how to do this. For new users, this will be quite off putting, especially as most people skim the documentation, and don't bother with the 'fat'.\r\n\r\nMay I suggest the documentation is included to use the following snippet:\r\nhttp://stackoverflow.com/questions/44109/extending-the-user-model-with-custom-fields-in-django\r\n\r\n{{{\r\n#in models.py\r\nfrom django.contrib.auth.models import User\r\nfrom django.db.models.signals import post_save\r\n\r\nclass UserProfile(models.Model): \r\n user = models.OneToOneField(User) \r\n #other fields here\r\n\r\n def __str__(self): \r\n return \"%s's profile\" % self.user \r\n\r\ndef create_user_profile(sender, instance, created, **kwargs): \r\n if created: \r\n profile, created = UserProfile.objects.get_or_create(user=instance) \r\n\r\npost_save.connect(create_user_profile, sender=User) \r\n\r\n#in settings.py\r\nAUTH_PROFILE_MODULE = 'YOURAPP.UserProfile'\r\n}}}\r\n", "owner": "melinath", "reporter": "foxwhisper", "keywords": "userprofile", "easy": 0, "has_patch": 1, "needs_better_patch": 0, "needs_tests": 0, "needs_docs": 0, "ui_ux": 0} {"id": 16189, "created": "2011-06-09 13:38:41", "changetime": "2011-06-25 13:17:34", "last_pulled_from_trac": "2022-03-06 04:02:31.063585", "stage": "Ready for checkin", "status": "closed", "component": "Testing framework", "type": "Cleanup/optimization", "severity": "Normal", "version": "1.3", "resolution": "fixed", "summary": "Tests with URLField(verify_exists=True) should use a mock and not access the internet directly.", "description": "Currently the testsuite tries to hit some domains to test the verify_exists=True behaviour of URLFields. However unittests should not require any external resources.\r\n\r\nurllib2.urlopen should be mocked in the tests to provide faster and more reliable tests.", "owner": "gregmuellegger", "reporter": "gregmuellegger", "keywords": "verify_exists", "easy": 0, "has_patch": 1, "needs_better_patch": 0, "needs_tests": 0, "needs_docs": 0, "ui_ux": 0} {"id": 16209, "created": "2011-06-09 20:27:56", "changetime": "2011-06-26 16:52:14", "last_pulled_from_trac": "2022-03-06 04:02:34.164293", "stage": "Ready for checkin", "status": "closed", "component": "Documentation", "type": "New feature", "severity": "Normal", "version": "1.3", "resolution": "fixed", "summary": "Add alternative repositories to 'Installing the development version' in the docs.", "description": "https://docs.djangoproject.com/en/dev/topics/install/#installing-development-version\r\n\r\nThe current page only refers to the subversion repo, but there are official github and bitbucket repos which some users will find more convenient.", "owner": "ShawnMilo", "reporter": "ShawnMilo", "keywords": null, "easy": 1, "has_patch": 1, "needs_better_patch": 0, "needs_tests": 0, "needs_docs": 0, "ui_ux": 0} {"id": 16199, "created": "2011-06-09 15:59:23", "changetime": "2011-06-26 17:00:25", "last_pulled_from_trac": "2022-03-06 04:02:32.722465", "stage": "Accepted", "status": "closed", "component": "contrib.sessions", "type": "New feature", "severity": "Normal", "version": "dev", "resolution": "fixed", "summary": "Create a secure cookie-based session backend", "description": "I have built a third-party implementation of this, but after talking to some core devs at DjangoCon.eu, it seems there's some interest in having this be in core.\r\n\r\nHere's my implementation: https://github.com/ericflo/django-cookie-sessions\r\n\r\nThere's really not a whole lot of code there, it passes all of Django's session tests, and it seems to work great (except the one that checks for existence, which doesn't make sense in a cookie backend, so that test is overwritten with a no-op.) Most of the code is here: https://github.com/ericflo/django-cookie-sessions/blob/master/cookiesessions/engine.py", "owner": "nobody", "reporter": "floguy", "keywords": null, "easy": 0, "has_patch": 1, "needs_better_patch": 1, "needs_tests": 0, "needs_docs": 1, "ui_ux": 0} {"id": 16190, "created": "2011-06-09 13:46:03", "changetime": "2011-07-14 02:14:54", "last_pulled_from_trac": "2022-03-06 04:02:31.210671", "stage": "Design decision needed", "status": "closed", "component": "Core (Other)", "type": "Cleanup/optimization", "severity": "Normal", "version": "1.3", "resolution": "duplicate", "summary": "django.views.debug.technical_500_response() not much helpful for AJAX request", "description": "When DEBUG=True and exception is raised inside a view, Django generates complete HTML page with exception info.\r\nFor AJAX requests it's not much readable (redundant CSS,
, etc.), it would be nice if there is another template for AJAX, which returns some simplified HTML or event text which can be than displayed to developer.", "owner": "nobody", "reporter": "zimnyx", "keywords": null, "easy": 0, "has_patch": 0, "needs_better_patch": 0, "needs_tests": 0, "needs_docs": 0, "ui_ux": 1} {"id": 16204, "created": "2011-06-09 16:42:23", "changetime": "2011-08-22 02:52:21", "last_pulled_from_trac": "2022-03-06 04:02:33.511909", "stage": "Ready for checkin", "status": "closed", "component": "contrib.admin", "type": "Cleanup/optimization", "severity": "Normal", "version": "dev", "resolution": "fixed", "summary": "Remove unused functions in admin core.js (getCorrectYear and getISODate).", "description": "Functions getCorrectYear and getISODate are not used anymore. They should be removed.", "owner": "nobody", "reporter": "mbraak", "keywords": null, "easy": 0, "has_patch": 1, "needs_better_patch": 0, "needs_tests": 0, "needs_docs": 0, "ui_ux": 0} {"id": 16201, "created": "2011-06-09 16:09:56", "changetime": "2011-08-23 15:57:01", "last_pulled_from_trac": "2022-03-06 04:02:33.100229", "stage": "Ready for checkin", "status": "closed", "component": "HTTP handling", "type": "Bug", "severity": "Normal", "version": "1.3-rc", "resolution": "fixed", "summary": "When Content-Length is 0, MultiPartParser violates RFC2616", "description": "RFC 2616 says that: \"Any Content-Length greater than or equal to zero is a valid value.\" http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13\r\n\r\nCurrently {{{ MultiPartParser }}} doesn't handle \"Content-Length: 0\".\r\n\r\nThe patch I've attached returns an empty request.POST in {{{ MultiPartParser.parser() }}} if the \"Content-Length: 0\" instead of raising an exception on\r\n{{{ MultiPartParser.__init__() }}}.\r\n\r\nI've also added the tests for this particular case in requests/tests.\r\n( {{{ ./runtests.py --settings=test_sqlite requests.RequestsTests.test_POST_multipart_with_content_length_zero }}} )\r\n", "owner": "nobody", "reporter": "albsen", "keywords": "http multipart", "easy": 0, "has_patch": 1, "needs_better_patch": 0, "needs_tests": 0, "needs_docs": 0, "ui_ux": 0} {"id": 16202, "created": "2011-06-09 16:09:58", "changetime": "2011-08-28 13:51:29", "last_pulled_from_trac": "2022-03-06 04:02:33.239504", "stage": "Ready for checkin", "status": "closed", "component": "contrib.localflavor", "type": "New feature", "severity": "Normal", "version": "1.3", "resolution": "fixed", "summary": "Localflavor support for Slovenia (si)", "description": "Attached patch provides checking for: personal id number for slovenia, tax number, postal codes and a postal code widget.\r\n\r\nSlovenian localflavor patch done in collaboration with Gasper Zejn and Domen Kozar.", "owner": "nobody", "reporter": "Jure Cuhalev