Increase the datepicker input width

Increase the datepicker box input width to fit all sorts of date.

Change-Id: I4f5b379c6dc92830cb35044f5138ea3483ea03d7
Closes-bug: #1298209
Refer local_settings in doc to customize settings

There are couple of places in the docs where it isn't explicitly
mentioned whether to modify settings.py or local_settings.py to
customize settings (this might not be obvious to people who are new
to Horizon and Django).

The changes include:
- In the `Customizing Horizon` guide, under the section 'Modifying
  Existing Dashboards and Panels', explicitly mention local_settings.py
  file to be modified to update ``HORIZON_CONFIG`` setting
- In the QuickStart guide, under the `Setup` section, add a note which
  mentions that to customize any settings use the local_settings.py file
- In the 2013 Havana release notes, under section `Upgrade Information'
  for 'Allowed Hosts', specify only local_settings.py file to add the
  new 'ALLOWED_HOSTS' setting (instead of settings.py or local_settings.py)

Change-Id: I38314cadd8a5a61d1edea26c6cd0d34e713fd66c
Closes-Bug: 1301484
Fix start date should after end date in calendar

Start date should after end date in calendar

Change-Id: I17a7679875716d9e39d29dc70d8bf0f9f2234d58
Closes-bug:#1309339
Allow static files to be exposed for any plugin

Change the parsing of plugin configuration files to allow
a new Django application to be added. This enables the static file
finder to find the plugin's static files when they are referenced.
Previously only plugins that defined a new dashboard could do this.

Change-Id: I69bd8f24fa0855174a05203eabe7c932246dda21
Closes-Bug: #1309183
Allow changing any horizon settings from the plugin config files

Sometimes we want our pluggable dashboard to change more than just
the selected handful of options in the HORIZON_CONFIG. This patch
lets the configuration files for the plugins add and modify any
horizon settings.

Change-Id: I25aec577733631d1e2057bde0b12f1e50c56b05b
Closes-bug: #1302387
Use escapejs filter on JavaScript strings

The escapejs filter will correctly escape single quotes from JavaScript
strings which may otherwise trigger syntax errors. In this case, the
issue was visible using the French translation.

Also removed a trailing paranthesis coming out of nowhere.

Change-Id: I25001815e17be5afa8eb28cc28c5423e3dcd973c
Closes-Bug: #1311047
Add semi-colons in Less files.

Change-Id: Ibdc374c019a2e3e813cda9d59e99f334004678b2
Closes-bug: #1311194
Flavor access list titles consistent capitalization.

On the flavor access tab of the edit flavor workflow, you
can select the projects that have access to the flavor.
Currently, the left list is "All Projects" and the right
list is "Selected projects". The "p" should be capitalized
in Selected projects.

This changes "Projects" in both list titles to be capitalized.

Change-Id: Ica2958b50bd4d5dad7c1237bb2450a1c6f3e6efe
Closes-Bug: #1311715
Add sort indicator to table headers

Currently, it is not possible to know which column determines the sort
order for the table. This patch adds a directional indicator that let
users know which column(s) is being sorted and the direction of the
sort.

known issue: because sorting indicator is a background image, it will
appear below column name if the name is too long.

Change-Id: If7194728d4335a04e9e8a7becd0086e2d3dc4b67
Closes-Bug: #1279578
Fixes wrong logic for clean method in SetInstanceDetailsAction

If the 'Instance Boot Source' is 'Boot from image (creates a new
volume)', the 'Device Size' and 'Device Name' fields will never be
checked.

Change-Id: Ic34de83a46716f6489d017275f9b64ce0c951858
Fixes-bug: 1313473
Avoid AttributeError: SecurityGroup error handle

On the project/access_and_security/security_groups/<detail> page, some
errors inside the
openstack_dashboard/dashboards/
project/access_and_security/security_groups/views
DetailView._get_data method are still resulting in a None being
returned. This causes an error in the DetailView.get_data method as
NoneTypes clearly don't have a .rules attribute.

I'm not sure why the error is sneaking through the exceptions.handle
above, but they most definitely are. Perhaps Ana Krivokapic's changes
here: https://review.openstack.org/#/c/84109/ may eventually solve this,
but it's unclear.

In the mean time, and potentially correct overall, if a None is
returned, the get_data method should return an empty list instead of
throwing an exception.

Change-Id: Ibc3bbb8c1302fca0c8a134abee8b7c649ad8c315
Closes-Bug: 1312192
Avoid attr error on database backup page

For some reason (and I genuinely do not have a clue why) some
database-backups don't appear to have an instance attribute. This causes
a problem when loading the table data, as the db_name helper-function
raises an AttributeError.

It appears that we're prepared for obj.instance.name to not exist, but
if obj.instance doesn't exist, then we raise the attribute error.

The solution is to return the obj.instance_id in both cases.

Change-Id: I77a30e4aeb97744aa14151eca0b4c011476fb08d
Closes-Bug: 1312235
Changes in assert message and select dropdown

Three small changes in pageobject.py:

1. Updating the assert message in the page verification method
(is_the_current_page) to go along with the page title partial matching
way we decided on (reminder: the _page_title field only stores the
significant part of the page's title, due to the fact that the site
branding is configurable).

2. select_dropdown and select_dropdown_by_value now receivs the
webelement itself as an attribute, as oppose to an locator, needed to
be located again (by find_element). These methods aren't yet in
use, but definitely will be ,in patches I'm currently working on.

3. fill_field_by_locator was erased since it is not needed.
fill_field_element method receives the web element itself instead
of passing a locator (which is a private field of it's relevant object)
to fill_field_by_locator, finding it and then calling fill_field_element.
This way, fill_field_element is now used directly.

https://wiki.openstack.org/wiki/Horizon/Testing/UI

Partially implements blueprint: selenium-integration-testing

Change-Id: I12ade631069244876f0b4357c21d312255629437
Fix endpoint error when running keystone on apache

When running keystone in httpd, horizon could not generate the
right keystone endpoint url. Fixes this issue by retrieving the
whole path from the service_catalog or OPENSTACK_KEYSTONE_URL
and generating a new url.

Change-Id: Id8459947498127e47700d9f690d4ed4d5cadbba9
Closes-bug: #1295128
Hide disk config option if the extension is not supported

Change-Id: I3a30d055ca2f419f5427e62e8b70f66153b14927
Closes-Bug: #1306302
Fixing Neutron Subnet Details help text

Removing the '&lt;' and '&gt;' tags which were wrongly displayed in
the help text of the Subnet Details dialog for Neutron Networks /
Subnet create.

Closes-Bug: #1311820
Change-Id: I9e730a2d90a6174634c3233230e48e63549e1b9c
Use floats instead of integer in memory calculation of admin dashboard

In the case that hypervisors have large amounts of memory, you'll find that
the dashboard reports improper memory usage when in the TB and PB range.
For example, 1.95 TB as an integer equals 1 so we convert to float instead.

Fixes bug: 1313009

Change-Id: Ie107986fa3ed9aad5c68c34353cdfc5943788069
Added tabindex value to links in the sidebar.

The tabindexes are reseted for each panel, beginning with 1. Because
of the accordion nature of the interface only the links of one of them
will be visible at any given time (the elementts with display:none
will not be focusable).

Change-Id: I3556a3f5b3b2db13c77ed6434b3f54ca7a530dc4
Closes-Bug: #1308442
Added the field label to the field arguments.

Initially, the field key was used as the label. In the return dictionary
has the label, so I use that value and fall back to the key if it does
not exist.

Change-Id: I39b4a7f25d8947276d3bdc3e12e728f84696a203
Co-Authored-By: Yves-Gwenaël Bourhis <yves-gwenael.bourhis@cloudwatt.com>
Update documentation to clarify Image Upload setting

The documentation at http://docs.openstack.org/developer/horizon/topics
/deployment.html#file-uploads states that the end user should change the
setting "HORIZON_IMAGES_ALLOW_UPLOAD = False" to disable image uploads.

This suggests that image uploads will be completely disabled, however it
will still be possible to upload images via URL.

This change adds this clarification to the documentation.

Closes-Bug: 1215921
Change-Id: Ie1cc51aaf459f9eb2881121b405fb16e762e265b