manila-ui/manila_ui/dashboards/utils.py
Miriam Yumi 646fee8ccd Add mountable snapshots support to manila-ui
This patch adds support to manila-ui for the mountable snapshots
feature.

Manage Rules row buttons are included in Snapshots tables from
projects section. Snapshots Rules table is accessible from Manage
Rules row buttons.
Snapshot and Share details views are updated to show information
about mountable snapshots.

Implements: blueprint manila-mountable-snapshots
Change-Id: I2804bf20767ac60a0b9566346465e69d74d89d45
Depends-On: Idb2eb5ee18ce55edb77545bcdf4df4ec4dd90135
Depends-On: I785a784bcae7cf3bcef4fa6c64ba28ee58328389
2017-01-26 16:21:44 -02:00

115 lines
3.8 KiB
Python

# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from django.forms import ValidationError # noqa
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
html_escape_table = {
"&": "&",
'"': """,
"'": "'",
">": ">",
"<": "&lt;",
}
def html_escape(text):
return ''.join(html_escape_table.get(s, s) for s in text)
def parse_str_meta(meta_s):
"""Parse multiline string with data from form.
:option meta_s: str - string with keys and values
:returns: tuple of dict with key-value for set and list with keys for unset
:raises: ValidationError
"""
strings = [el.strip() for el in meta_s.split("\n") if len(el.strip()) > 0]
set_dict = {}
unset_list = []
msg = ""
for string in strings:
if string.count("=") == 0:
# Key for unsetting
key = string.strip('\"\'\ ')
if len(key) not in range(1, 256):
msg = _("Key '%s' has improper length.") % key
elif " " in key:
msg = _("Key can not contain spaces. See string '%s'.") % key
elif key not in unset_list:
unset_list.append(key)
else:
# Key-value pair for setting
pair = [p.strip('\"\'\ ') for p in string.split("=", 1)]
if not all(len(p) in range(1, 256) for p in pair):
msg = _("All keys and values must be in range from 1 to 255.")
elif pair[0] in list(set_dict.keys()):
msg = _("Duplicated keys '%s'.") % pair[0]
elif " " in pair[0]:
msg = _("Keys should not contain spaces. "
"Error in '%s'.") % string
else:
set_dict[pair[0]] = pair[1]
duplicated_keys = [uk for uk in unset_list if uk in list(set_dict.keys())]
if duplicated_keys:
msg = _("Duplicated keys '%s'.") % str(duplicated_keys)
if msg:
raise ValidationError(message=msg)
return set_dict, unset_list
def metadata_to_str(metadata, meta_visible_limit=4, text_length_limit=25):
# Only convert dictionaries
if not hasattr(metadata, 'keys'):
return metadata
meta = []
meta_keys = metadata.keys()
meta_keys.sort()
meta_keys = meta_keys[:meta_visible_limit]
for k in meta_keys:
k_shortenned = k
if len(k) > text_length_limit:
k_shortenned = k[:text_length_limit] + '...'
v = metadata[k]
if len(v) > text_length_limit:
v = v[:text_length_limit] + '...'
meta.append("%s = %s" % (html_escape(k_shortenned), html_escape(v)))
meta_str = "<br/>".join(meta)
if len(metadata.keys()) > meta_visible_limit and meta_str[-3:] != "...":
meta_str += '...'
return mark_safe(meta_str)
def get_nice_security_service_type(security_service):
type_mapping = {
'ldap': 'LDAP',
'active_directory': 'Active Directory',
'kerberos': 'Kerberos',
}
return type_mapping.get(security_service.type, security_service.type)
def calculate_longest_str_size(str_list):
size = 40
for str_val in str_list:
current_size = len(str_val)
if current_size > size:
size = current_size
return size