manager: translate state names (#34234)

This commit is contained in:
Benjamin Dauvergne 2019-06-23 13:04:53 +02:00
parent 09b7aefe24
commit 1e492fb87f
3 changed files with 25 additions and 8 deletions

View File

@ -56,8 +56,8 @@
<tbody>
{% for report in reports %}
<tr data-uuid="{{ report.uuid }}">
<td class="created">{% if report.state != 'running' %}<a href="{% url "a2-manager-users-import-report" import_uuid=user_import.uuid report_uuid=report.uuid %}">{{ report.created }}</a>{% else %}{{ report.created }}{% endif %}</td>
<td class="state"><span>{{ report.state }}</span> {% if report.state == 'error' %}"{{ report.exception }}"{% endif %} {% if not report.is_running %}!failed before finishing!{% endif %}</td>
<td class="created">{% if report.state != report.STATE_RUNNING %}<a href="{% url "a2-manager-users-import-report" import_uuid=user_import.uuid report_uuid=report.uuid %}">{{ report.created }}</a>{% else %}{{ report.created }}{% endif %}</td>
<td class="state"><span>{{ report.state_display }}</span> {% if report.state == report.STATE_ERROR %}"{{ report.exception }}"{% endif %} {% if not report.is_running %}!failed before finishing!{% endif %}</td>
<td class="applied">{% if not report.simulate %}<span class="icon-check"></span>{% endif %}</td>
<td class="delete-action">{% if report.simulate %}<form method="post" id="delete-form-{{ report.uuid }}">{% csrf_token %}<button name="delete" value="{{ report.uuid }}">{% trans "Delete" %}</button></form>{% endif %}</td>
</tr>

View File

@ -34,6 +34,7 @@ from django.db import connection
from django.utils import six
from django.utils.functional import cached_property
from django.utils.timezone import utc
from django.utils.translation import ugettext_lazy as _
from authentic2.utils import gettid
@ -123,6 +124,17 @@ class UserImport(object):
class Report(object):
STATE_WAITING = 'waiting'
STATE_RUNNING = 'running'
STATE_FINISHED = 'finished'
STATE_ERROR = 'error'
STATES = {
STATE_WAITING: _('Waiting'),
STATE_RUNNING: _('Running'),
STATE_FINISHED: _('Finished'),
STATE_ERROR: _('Error'),
}
def __init__(self, user_import, uuid):
self.user_import = user_import
self.uuid = uuid
@ -140,6 +152,11 @@ class Report(object):
data = pickle.load(fd)
return data
@property
def state_display(self):
state = self.data['state']
return self.STATES.get(state, state)
@property
@contextlib.contextmanager
def data_update(self):
@ -155,11 +172,11 @@ class Report(object):
with report.data_update as data:
data['encoding'] = user_import.meta['encoding']
data['ou'] = user_import.meta.get('ou')
data['state'] = 'waiting'
data['state'] = cls.STATE_WAITING
return report
def run(self, start=True, simulate=False):
assert self.data.get('state') == 'waiting'
assert self.data.get('state') == self.STATE_WAITING
with self.data_update as data:
data['simulate'] = simulate
@ -171,7 +188,7 @@ class Report(object):
importer = UserCsvImporter()
start = datetime.datetime.now()
with self.data_update as data:
data['state'] = 'running'
data['state'] = self.STATE_RUNNING
data['pid'] = os.getpid()
data['tid'] = gettid()
try:
@ -181,14 +198,14 @@ class Report(object):
simulate=simulate)
except Exception as e:
logger.exception('error during report %s:%s run', self.user_import.uuid, self.uuid)
state = 'error'
state = self.STATE_ERROR
try:
exception = six.text_type(e)
except Exception:
exception = repr(repr(e))
else:
exception = None
state = 'finished'
state = self.STATE_FINISHED
finally:
duration = datetime.datetime.now() - start
try:

View File

@ -271,7 +271,7 @@ x,x,x,x'''.encode(encoding),
def wait_finished():
new_resp = response.click('Users Import')
if new_resp.pyquery('tr[data-uuid="%s"] td.state span' % uuid).text() == 'finished':
if new_resp.pyquery('tr[data-uuid="%s"] td.state span' % uuid).text() == 'Finished':
return new_resp
simulate = reports[0]