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
Upgrade bootstrap-datepicker.js to latest version

Upgrade required to fix bug where date selection from previous and next year was wrong.

Closes-Bug: 1270884

Change-Id: I7cb6f7f5fd0a709cbf0c1325e832c92ec382b12c
Add dependencies on Quick Start page.

Change-Id: Ifc69ae397519c05d778d4d15062c00ae8e425b9d
Closes-bug: #1231227
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
Adding policy checks for heat

Change-Id: Ia454eefbaaf0c6262bfcc2890dead4d074555404
Implements: blueprint heat-rbac
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
Keep py3.X compatibility for urllib

Use six.moves.urllib.parse instead of urllib

Partial-Bug: #1280105

Change-Id: Ie10e9fd8ff42b65b1610839eaeee09e3c56f2de7
Reduce number of novaclient calls

Currently, each client creates a new session for
each call. This fix makes novaclient re-use
sessions in the most obvoius cases.

Partial-Bug: #1247056

Change-Id: Ie99ecb66304cf40e4f5fdd31fab5162ed11b863e
Merge "Keep py3.X compatibility for urllib"
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
Merge "Reduce number of novaclient calls"
Use six.StringIO/BytesIO instead of StringIO.StringIO

to keep Python 3.x compatibility, use six.StringIO/BytesIO to
replace StringIO.StringIO

StringIO works for unicode
BytesIO works for bytes

Change-Id: I1d4db56dd082916879b851f2d9ac71d17c0db94f
Closes-Bug: #1280100