Empty email for users gets saved as an empty string

The actual behavior is that horizon sends an empty string
on the "email" field when creating a new user if the field
isn't filled by the user.
To match the keystone client behaviour, instead of sending
an empty string, this patch sends a "None" value when the
field isn't filled by the user.
By doing this, when creating a new user from both,
keystone client and horizon, a "null" value is stored
under the same conditions.
in the database. This will keep the data consistency.
From the presentation point of view, when a "null" value
is received, it is presented as an empty string instead
of showing "None" on the "email" field of the users table.

Change-Id: Ib5df774b3fe9d82c084f380c9c11aea46b2984aa
Closes-Bug: #1265805
The order of fields have changed for update default quota form.

Changed the ordering of the the fields for update default quota form
so that it now matches the default quota table page.

Change-Id: I76c5b75f30d9db39c83b395bffbf11340b2e0bde
Closes-Bug: #1275892
Remove delete action and bar when stack is DELETE_COMPLETE.

Heat is returning stack in DELETE_COMPLETE status. Beside that
the table don't consider DELETE_COMPLETE status so the animation is
always visible after deletion.

As a side effect, the checkbox and delete (row action) button are enabled.

This patch will remove the animation on DELETE_COMPLETE state and
disable 'Delete' button and checkbox so it cannot be delete again
by Table Delete action.

Change-Id: Id9c8d34c99a4079d2afa7438353490bfaf91072b
Closes-Bug: #1243087
get_user_home test fix for django 1.6

In django 1.6, the django.utils.html.strip_tags method no longer
calls force_text on the object passed in.  This causes a
get_user_home test to fail as it attempts to concatenate the User
object and a str and fails.  Changing to a method that will take
an Object.

Change-Id: If879a1597fe334f67a3f7109defa0694db005f81
Partially-implements: blueprint django-1point6
Restrict the length of the Security Group name input

There is an allowed maximum length for security group name field, but in
current code, it doesn't check or restrict that from UI side, i.e. user
will be able to type in more than what is allowed. After form
submission, it will fail but there is no clear message telling user what
caused failure.

After adding the code to restrict the max length of the security group
name field, user will not be able to input more than what is allowed,
thus this error will be prevented from UI.

Change-Id: I0f560e78e67a0259343f1a2c820270506653b254
Closes-Bug: #1279472
Replace horizon.conf with an angular one

    Horizon configuration is now fully integrated into the angular
application. The object horizon.conf is still available in the
application in order to keep the compatibility, it is a link to the
angular constant object.

Change-Id: I55e1672a89a78032b24c096258471d0ea9d2489e
Implements: blueprint horizon-angular
Replace horizon.utils with an angular one

    Horizon utilitaries are now fully integrated into the angular
application. The object horizon.utils is still available in the
application in order to keep the compatibility, it is a link to the
angular constant object.

Change-Id: I3d44c5c281a8e61e93f4d1b7c3b8b61c128e36ea
Implements: blueprint horizon-angular
Add jasmine testing and helpers

    With the integration of the AngularJS framework we need a powerfull
testing, Jasmine could be a good choices because of its great features
and it is the one which is described into angularjs documentation. It
will allow us to have good example for creating our tests.

    To create a test you just have to inherit JasmineTests class, and
specify the tests files to run (with their path) in the specs class
attribute. If some html elements are needed, just inherit from the
jasmine.html template and add them to the content block, to finish
specify the template in the test class into the template_name attribute.

Implements: blueprint jasmine-integration
Change-Id: Ic39d3a4f097de045d1c789052ff4e43eb0ebde7e
Exclude local directory from flake8 tests.

Closes-Bug: 1281346

Change-Id: I099c3448b16aa7e9066c996fcf3d7520a6b14639
Fix wrong key for 'usage.summary.instances' in CSV summary

In the project overview, the key for 'usage.summary.instances' the CSV
summary is wrong, it should be "Active Instances" instead of "Total
Active VCPUs".

Change-Id: Idf09fee592d522b7ebf5cffd0ce31240407c59d0
Closes-bug: 1288020
Using '0' instead of '-' in overview page.

When there is no data in the project, Usage Summary in overview page
always show '-' for `Active Instances` and other values, it would be
better showing '0' instead '-'.

Change-Id: I121de36ac9dc5ced2218c08b82a8b2e4a3d5e459
Closes-bug: 1288015
update test to handle IntegerField html change

With Django 1.6, the html output for IntegerField in django.forms
has changed. Providing a test to check for earlier Django versions
as well as Django 1.6.

Partially-implements blueprint django-1point6

Change-Id: If4e544788306e07b268a9ebb67a3284bc8879f26
Integration tests - running the tests

Initial setup for running the integration tests. A basic test is
included to ensure this works, although it will be rewritten to follow
the Page Object pattern. Thanks to Daniel Korn for the initial test.

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

Implements blueprint: selenium-integration-testing

Change-Id: Id5b62cdeac5295667a3922f7bed1db3c7617f841
Add missing mocked calls to the Volumes tests

There is a quota check for the Create Volume button to see if it
should be enabled. These new calls to tenant_quota_usages were missed
when the volume snapshots tests moved to the main volumes
directory/panel.

Change-Id: If09afd6d69a9a9b14dfb6d802be92b7e24e63c60
Closes-Bug: #1284664
Rename UpdateDefaultQuotas to UpdateDefaultQuotasStep

A class with the name of UpdateDefaultQuotas was declared twice in the
same file. Rename one occurrence to UpdateDefaultQuotasStep.

Change-Id: Ie2adb0d540656c5b106607bfc992f553ad1fa45b
Closes-Bug: #1285135
Clean up Cinder client traces in the test output

The Volumes index page has 2 tabs now, for volumes and snapshots. The
calls to list the snapshots were not mocked in a couple of places.

Change-Id: I0f4a59c19b7f5dfb12df41f8c9d3261eea802874
Closes-Bug: #1284665
Merge "Replace horizon.conf with an angular one"
Implementing accordion navigation

Left hand side navigation is now an accordion with collapsable
dashboards and panel groups.

The project and region pickers have been relocated to the header.
They will be further enhanced in a future bp.

The help link and settings link have now been placed in a user
dropdown as well.

The page header text is still preserved and now sits above the
main content. This information is generally redundant with the
table headers or the panel selected in the left hand navigation,
and should be considered for removal in a different bp.

Implements blueprint navigation-enhancement

Change-Id: I9588cabdf4ce41bd08cadff780b1a87f73dbbea5
Merge "Clean up Cinder client traces in the test output"
Merge "Rename UpdateDefaultQuotas to UpdateDefaultQuotasStep"