mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
[fix] Pep8
This commit is contained in:
parent
6c18e51b82
commit
a43b3dfa18
1 changed files with 31 additions and 20 deletions
|
@ -40,7 +40,7 @@ from moulinette.utils.filesystem import read_file
|
||||||
|
|
||||||
CATEGORIES_PATH = '/var/log/yunohost/categories/'
|
CATEGORIES_PATH = '/var/log/yunohost/categories/'
|
||||||
OPERATIONS_PATH = '/var/log/yunohost/categories/operation/'
|
OPERATIONS_PATH = '/var/log/yunohost/categories/operation/'
|
||||||
CATEGORIES = ['operation', 'history', 'package', 'system', 'access', 'service', \
|
CATEGORIES = ['operation', 'history', 'package', 'system', 'access', 'service',
|
||||||
'app']
|
'app']
|
||||||
METADATA_FILE_EXT = '.yml'
|
METADATA_FILE_EXT = '.yml'
|
||||||
LOG_FILE_EXT = '.log'
|
LOG_FILE_EXT = '.log'
|
||||||
|
@ -48,6 +48,7 @@ RELATED_CATEGORIES = ['app', 'domain', 'service', 'user']
|
||||||
|
|
||||||
logger = getActionLogger('yunohost.log')
|
logger = getActionLogger('yunohost.log')
|
||||||
|
|
||||||
|
|
||||||
def log_list(category=[], limit=None):
|
def log_list(category=[], limit=None):
|
||||||
"""
|
"""
|
||||||
List available logs
|
List available logs
|
||||||
|
@ -73,7 +74,8 @@ def log_list(category=[], limit=None):
|
||||||
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
logs = filter(lambda x: x.endswith(METADATA_FILE_EXT), os.listdir(category_path))
|
logs = filter(lambda x: x.endswith(METADATA_FILE_EXT),
|
||||||
|
os.listdir(category_path))
|
||||||
logs = reversed(sorted(logs))
|
logs = reversed(sorted(logs))
|
||||||
|
|
||||||
if limit is not None:
|
if limit is not None:
|
||||||
|
@ -93,7 +95,8 @@ def log_list(category=[], limit=None):
|
||||||
}
|
}
|
||||||
entry["description"] = _get_description_from_name(base_filename)
|
entry["description"] = _get_description_from_name(base_filename)
|
||||||
try:
|
try:
|
||||||
log_datetime = datetime.strptime(" ".join(log[:2]), "%Y%m%d %H%M%S")
|
log_datetime = datetime.strptime(" ".join(log[:2]),
|
||||||
|
"%Y%m%d %H%M%S")
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
|
@ -101,7 +104,8 @@ def log_list(category=[], limit=None):
|
||||||
|
|
||||||
result[category].append(entry)
|
result[category].append(entry)
|
||||||
|
|
||||||
# Reverse the order of log when in cli, more comfortable to read (avoid unecessary scrolling)
|
# Reverse the order of log when in cli, more comfortable to read (avoid
|
||||||
|
# unecessary scrolling)
|
||||||
if not is_api:
|
if not is_api:
|
||||||
for category in result:
|
for category in result:
|
||||||
result[category] = list(reversed(result[category]))
|
result[category] = list(reversed(result[category]))
|
||||||
|
@ -131,7 +135,7 @@ def log_display(path, number=50, share=False):
|
||||||
if os.path.exists(abs_path) or os.path.exists(abs_path + METADATA_FILE_EXT):
|
if os.path.exists(abs_path) or os.path.exists(abs_path + METADATA_FILE_EXT):
|
||||||
break
|
break
|
||||||
|
|
||||||
if os.path.exists(abs_path) and not path.endswith(METADATA_FILE_EXT) :
|
if os.path.exists(abs_path) and not path.endswith(METADATA_FILE_EXT):
|
||||||
log_path = abs_path
|
log_path = abs_path
|
||||||
|
|
||||||
if abs_path.endswith(METADATA_FILE_EXT) or abs_path.endswith(LOG_FILE_EXT):
|
if abs_path.endswith(METADATA_FILE_EXT) or abs_path.endswith(LOG_FILE_EXT):
|
||||||
|
@ -167,7 +171,7 @@ def log_display(path, number=50, share=False):
|
||||||
|
|
||||||
logger.info(m18n.n("log_available_on_yunopaste", url=url))
|
logger.info(m18n.n("log_available_on_yunopaste", url=url))
|
||||||
if msettings.get('interface') == 'api':
|
if msettings.get('interface') == 'api':
|
||||||
return { "url" : url }
|
return {"url": url}
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -191,27 +195,27 @@ def log_display(path, number=50, share=False):
|
||||||
if os.path.exists(log_path):
|
if os.path.exists(log_path):
|
||||||
from yunohost.service import _tail
|
from yunohost.service import _tail
|
||||||
logs = _tail(log_path, int(number))
|
logs = _tail(log_path, int(number))
|
||||||
#logs = [{"datetime": x.split(": ", 1)[0].replace("_", " "), "line": x.split(": ", 1)[1]} for x in logs if x]
|
|
||||||
infos['log_path'] = log_path
|
infos['log_path'] = log_path
|
||||||
infos['logs'] = logs
|
infos['logs'] = logs
|
||||||
|
|
||||||
return infos
|
return infos
|
||||||
|
|
||||||
|
|
||||||
def is_unit_operation(entities=['app', 'domain', 'service', 'user'],
|
def is_unit_operation(entities=['app', 'domain', 'service', 'user'],
|
||||||
exclude=['auth', 'password'], operation_key=None):
|
exclude=['auth', 'password'], operation_key=None):
|
||||||
"""
|
"""
|
||||||
Configure quickly a unit operation
|
Configure quickly a unit operation
|
||||||
|
|
||||||
This decorator help you to configure quickly the record of a unit operations.
|
This decorator help you to configure the record of a unit operations.
|
||||||
|
|
||||||
Argument:
|
Argument:
|
||||||
entities A list of entity types related to the unit operation. The entity
|
entities A list of entity types related to the unit operation. The entity
|
||||||
type is searched inside argument's names of the decorated function. If
|
type is searched inside argument's names of the decorated function. If
|
||||||
something match, the argument value is added as related entity. If the
|
something match, the argument value is added as related entity. If the
|
||||||
argument name is different you can specify it with a tuple
|
argument name is different you can specify it with a tuple
|
||||||
(argname, entity_type) instead of just put the entity type.
|
(argname, entity_type) instead of just put the entity type.
|
||||||
|
|
||||||
exclude Remove some arguments from the context. By default, arguments
|
exclude Remove some arguments from the context. By default, arguments
|
||||||
called 'password' and 'auth' are removed. If an argument is an object, you
|
called 'password' and 'auth' are removed. If an argument is an object, you
|
||||||
need to exclude it or create manually the unit operation without this
|
need to exclude it or create manually the unit operation without this
|
||||||
decorator.
|
decorator.
|
||||||
|
@ -279,14 +283,15 @@ def is_unit_operation(entities=['app', 'domain', 'service', 'user'],
|
||||||
return func_wrapper
|
return func_wrapper
|
||||||
return decorate
|
return decorate
|
||||||
|
|
||||||
|
|
||||||
class UnitOperation(object):
|
class UnitOperation(object):
|
||||||
"""
|
"""
|
||||||
Instances of this class represents unit operation the yunohost admin as done.
|
Instances of this class represents unit operation done on the ynh instance.
|
||||||
|
|
||||||
Each time an action of the yunohost cli/api change the system, one or several
|
Each time an action of the yunohost cli/api change the system, one or
|
||||||
unit operations should be registered.
|
several unit operations should be registered.
|
||||||
|
|
||||||
This class record logs and some metadata like context or start time/end time.
|
This class record logs and metadata like context or start time/end time.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, operation, related_to=None, **kwargs):
|
def __init__(self, operation, related_to=None, **kwargs):
|
||||||
|
@ -351,9 +356,9 @@ class UnitOperation(object):
|
||||||
name += [self.operation]
|
name += [self.operation]
|
||||||
|
|
||||||
if hasattr(self, "name_parameter_override"):
|
if hasattr(self, "name_parameter_override"):
|
||||||
# This is for special cases where the operation is not really unitary
|
# This is for special cases where the operation is not really
|
||||||
# For instance, the regen conf cannot be logged "per service" because of
|
# unitary. For instance, the regen conf cannot be logged "per
|
||||||
# the way it's built
|
# service" because of the way it's built
|
||||||
name.append(self.name_parameter_override)
|
name.append(self.name_parameter_override)
|
||||||
elif self.related_to:
|
elif self.related_to:
|
||||||
# We use the name of the first related thing
|
# We use the name of the first related thing
|
||||||
|
@ -379,7 +384,7 @@ class UnitOperation(object):
|
||||||
data['success'] = self._success
|
data['success'] = self._success
|
||||||
if self.error is not None:
|
if self.error is not None:
|
||||||
data['error'] = self._error
|
data['error'] = self._error
|
||||||
# TODO: detect if 'extra' erase some key of 'data'
|
# TODO: detect if 'extra' erase some key of 'data'
|
||||||
data.update(self.extra)
|
data.update(self.extra)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
@ -420,9 +425,10 @@ class UnitOperation(object):
|
||||||
else:
|
else:
|
||||||
if is_api:
|
if is_api:
|
||||||
msg = "<strong>" + m18n.n('log_link_to_failed_log',
|
msg = "<strong>" + m18n.n('log_link_to_failed_log',
|
||||||
name=self.name, desc=desc) + "</strong>"
|
name=self.name, desc=desc) + "</strong>"
|
||||||
else:
|
else:
|
||||||
msg = m18n.n('log_help_to_get_failed_log', name=self.name, desc=desc)
|
msg = m18n.n('log_help_to_get_failed_log', name=self.name,
|
||||||
|
desc=desc)
|
||||||
logger.info(msg)
|
logger.info(msg)
|
||||||
self.flush()
|
self.flush()
|
||||||
return msg
|
return msg
|
||||||
|
@ -435,7 +441,12 @@ class UnitOperation(object):
|
||||||
"""
|
"""
|
||||||
self.error(m18n.n('log_operation_unit_unclosed_properly'))
|
self.error(m18n.n('log_operation_unit_unclosed_properly'))
|
||||||
|
|
||||||
|
|
||||||
def _get_description_from_name(name):
|
def _get_description_from_name(name):
|
||||||
|
"""
|
||||||
|
Return the translated description from the filename
|
||||||
|
"""
|
||||||
|
|
||||||
parts = name.split("-", 3)
|
parts = name.split("-", 3)
|
||||||
try:
|
try:
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Add table
Reference in a new issue