[openstack-dev] [horizon] Support for Django 1.7: there's a bit of work, though it looks fixable to me...

Romain Hardouin romain.hardouin at cloudwatt.com
Mon Aug 4 09:05:12 UTC 2014


Hi,

Note that Django 1.7 requires Python 2.7 or above[1] while Juno still requires to be compatible with Python 2.6 (Suse ES 11 uses 2.6 if my memory serves me).

[1] https://docs.djangoproject.com/en/dev/releases/1.7/#python-compatibility

Best,

Romain


----- Original Message -----
From: "Thomas Goirand" <zigo at debian.org>
To: "OpenStack Development Mailing List" <openstack-dev at lists.openstack.org>
Sent: Sunday, August 3, 2014 12:55:19 PM
Subject: [openstack-dev] [horizon] Support for Django 1.7: there's a bit of work, though it looks fixable to me...

Hi,

The Debian maintainer of Django would like to upload Django 1.7 before
Jessie is frozen on the 5th of November. As for OpenStack, I would like
Icehouse to be in Jessie, since it will be supported by major companies
(RedHat and Canonical both will use Icehouse as LTS, and will work on
security for a longer time than previously planned in the OpenStack
community).

Though Horizon Icehouse doesn't currently work with Django 1.7. The
first thing to fix would be the TEMPLATE_DIRS thing:

./run_tests.sh -N -P || true
Running Horizon application tests
Traceback (most recent call last):
  File
"/home/zigo/sources/openstack/icehouse/horizon/build-area/horizon-2014.1.1/manage.py",
line 25, in <module>
    execute_from_command_line(sys.argv)
  File
"/usr/lib/python2.7/dist-packages/django/core/management/__init__.py",
line 385, in execute_from_command_line
    utility.execute()
[... not useful stack dump ...]
  File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line
42, in _setup
    self._wrapped = Settings(settings_module)
  File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line
110, in __init__
    "Please fix your settings." % setting)
django.core.exceptions.ImproperlyConfigured: The TEMPLATE_DIRS setting
must be a tuple. Please fix your settings.
Running openstack_dashboard tests
WARNING:root:No local_settings file found.

Then of course, the rest of the tests are completely broken because
there's no local_settings. Adding a comma at the end of:

TEMPLATE_DIRS = (os.path.join(ROOT_PATH, 'tests', 'templates'))

in horizon/test/settings.py fixes the issue. Note that this works in
both Django 1.6 and 1.7. Some other TEMPLATE_DIRS declaration already
have the comma, so I guess it's fine to add it. Which is why I did this:
https://review.openstack.org/111561

FYI, there's this document that talks about it:
https://docs.djangoproject.com/en/1.7/releases/1.7/#backwards-incompatible-changes-in-1-7

Then, after fixing this, I get this error:
======================================================================
ERROR: Failure: TypeError (Error when calling the metaclass bases
    function() argument 1 must be code, not str)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/nose/loader.py", line 414, in
loadTestsFromName
    addr.filename, addr.module)
  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 47, in
importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 94, in
importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File
"/home/zigo/sources/openstack/icehouse/horizon/build-area/horizon-2014.1.1/horizon/test/tests/tables.py",
line 28, in <module>
    from horizon.test import helpers as test
  File
"/home/zigo/sources/openstack/icehouse/horizon/build-area/horizon-2014.1.1/horizon/test/helpers.py",
line 184, in <module>
    class JasmineTests(SeleniumTestCase):
TypeError: Error when calling the metaclass bases
    function() argument 1 must be code, not str

There's the same issue in the definition of SeleniumTestCase() in
openstack_dashboard/test/helpers.py (line 365 in Icehouse).

Since I don't really care about selenium (it can't be tested in Debian
because it's non-free), I commented out the class
JasmineTests(SeleniumTestCase), then I get more errors. A few instances
of this one:

  File
"/home/zigo/sources/openstack/icehouse/horizon/build-area/horizon-2014.1.1/horizon/tables/base.py",
line 206, in <lambda>
    "average": lambda data: sum(data, 0.0) / len(data)
TypeError: unsupported operand type(s) for +: 'float' and 'str'

I'm not a Django expert, so I it'd be awesome to get help on this. Best
would be that:
1/ Support for Django 1.7 is added to Juno
2/ The changes are backported to Icehouse (even if this doesn't make it
into the stable branch because of "let's stay safe", I can add the
patches as Debian specific).

Thoughts from the Horizon team would be welcome.

Cheers,

Thomas Goirand (zigo)

_______________________________________________
OpenStack-dev mailing list
OpenStack-dev at lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



More information about the OpenStack-dev mailing list