Esempio n. 1
0
def get(lang):
    """Get the i18n of language lang and output dict."""
    i18nkey = 'i18n:' + lang
    gval = g.get(i18nkey, None)
    if gval:
        return gval
    if redisconnection.exists(i18nkey):
        return json.loads(redisconnection.get(i18nkey))

    data = {}
    fallbacklist = _create_fallback(lang)
    datafiles = _loadi18nfiles(fallbacklist)
    for key in datafiles['en']:
        if key == '@metadata':
            # @metadata is a dict not a string
            continue

        for code in fallbacklist:
            if key in datafiles.get(code, {}):
                data[key] = datafiles[code][key]
                # <'s and >'s aren't supposed to be here;
                # if the translation breaks due to double escaping,
                # oh well, why are you hacking this tool?
                # --XSS prevention
                data[key] = data[key].replace('<', '&lt;')
                data[key] = data[key].replace('>', '&gt;')
                break
    data['@lang'] = lang
    data['@dir'] = _dir(lang)

    setattr(g, i18nkey, data)
    redisconnection.setex(i18nkey, json.dumps(data), 60)
    return data
Esempio n. 2
0
def get(lang):
    """Get the i18n of language lang and output dict."""
    i18nkey = 'i18n:' + lang
    gval = g.get(i18nkey, None)
    if gval:
        return gval
    if redisconnection.exists(i18nkey):
        return json.loads(redisconnection.get(i18nkey))

    data = {}
    fallbacklist = _create_fallback(lang)
    datafiles = _loadi18nfiles(fallbacklist)
    for key in datafiles['en']:
        if key == '@metadata':
            # @metadata is a dict not a string
            continue

        for code in fallbacklist:
            if key in datafiles.get(code, {}):
                data[key] = datafiles[code][key]
                # <'s and >'s aren't supposed to be here;
                # if the translation breaks due to double escaping,
                # oh well, why are you hacking this tool?
                # --XSS prevention
                data[key] = data[key].replace('<', '&lt;')
                data[key] = data[key].replace('>', '&gt;')
                break
    data['@dir'] = _dir(lang)

    setattr(g, i18nkey, data)
    redisconnection.setex(i18nkey, json.dumps(data), 60)
    return data
Esempio n. 3
0
def restart_task():
    """Reastart a task: run a task with params of another task."""
    id = request.form['id']

    filename = redisconnection.get('titles:' + id)
    assert filename, 'Task does not exist'
    assert id in \
        redisconnection.lrange('tasks:' + session['username'], 0, -1), \
        'Task must belong to you.'

    restarted = redisconnection.get('restarted:' + id)
    assert not restarted, \
        'Task has already been restarted with id ' + restarted
    params = redisconnection.get('params:' + id)
    assert params, 'Could not extract the task parameters.'

    newid = run_task_internal(filename, pickle.loads(params))
    redisconnection.set('restarted:' + id, newid)

    return jsonify(restart='success', id=id, taskid=newid)
Esempio n. 4
0
def restart_task():
    """Reastart a task: run a task with params of another task."""
    id = request.form['id']

    filename = redisconnection.get('titles:' + id)
    assert filename, 'Task does not exist'
    assert id in \
        redisconnection.lrange('tasks:' + session['username'], 0, -1), \
        'Task must belong to you.'

    restarted = redisconnection.get('restarted:' + id)
    assert not restarted, \
        'Task has already been restarted with id ' + restarted
    params = redisconnection.get('params:' + id)
    assert params, 'Could not extract the task parameters.'

    newid = run_task_internal(filename, json.loads(params))
    redisconnection.set('restarted:' + id, newid)

    redis_publish('update', {'taskid': id, 'data': _status(id)})

    return jsonify(restart='success', id=id, taskid=newid)
Esempio n. 5
0
def get_title_from_task(id):
    """Get task title from task ID."""
    return redisconnection.get('titles:' + id)
Esempio n. 6
0
def get_title_from_task(id):
    """Get task title from task ID."""
    return redisconnection.get('titles:' + id)