コード例 #1
0
def check_files():
    global reloading_exception
    if not reloading_exception:
        modules = [
            m for name, m in sys.modules.items()
            if getattr(m, 'USE_AUTORELOAD', False) and
            (name.startswith('pony.examples.') or not name.startswith('pony.'))
        ]
    try:
        for m in modules:
            filename = abspath(m.__file__)
            if filename.endswith(".pyc") or filename.endswith(".pyo"):
                filename = filename[:-1]
            if not exists(filename): continue
            mtime = get_mtime(filename)
            if mtimes.setdefault(filename, mtime) != mtime:
                try:
                    reload(modules, m, filename)
                except Exception:
                    # Запоминаем traceback так что мы можем отобразить его
                    # на веб-странице позднее, когда поступит какой-либо HTTP запрос
                    reloading_exception = sys.exc_info()
                else:
                    reloading_exception = None
                break
    except:
        log_exc()
        sys.exit()
コード例 #2
0
ファイル: autoreload.py プロジェクト: buhtigexa/Nerit
def check_files():
    global reloading_exception
    if not reloading_exception:
        modules = [ m for name, m in sys.modules.items()
                    if getattr(m, 'USE_AUTORELOAD', False)
                       and (name.startswith('pony.examples.')
                            or not name.startswith('pony.')) ]
    try:
        for m in modules:
            filename = abspath(m.__file__)
            if filename.endswith(".pyc") or filename.endswith(".pyo"):
                filename = filename[:-1]
            if not exists(filename): continue
            mtime = get_mtime(filename)
            if mtimes.setdefault(filename, mtime) != mtime:
                try: reload(modules, m, filename)
                except Exception:
                    # Запоминаем traceback так что мы можем отобразить его
                    # на веб-странице позднее, когда поступит какой-либо HTTP запрос
                    reloading_exception = sys.exc_info()
                else: reloading_exception = None
                break
    except:
        log_exc()
        sys.exit()
コード例 #3
0
def reg_trans_file(filename):
    for fname, mtime, trans in trans_files:
        if fname == filename: return
    mtime = get_mtime(filename)
    trans = load(filename)
    update(translations, trans)
    trans_files.append((filename, mtime, trans))
コード例 #4
0
ファイル: i18n.py プロジェクト: buhtigexa/Nerit
def reload():
    global last_check_time
    now = time()
    if abs(now - last_check_time) <= options.RELOADING_CHECK_INTERVAL: return
    with lock:
        if abs(now - last_check_time) <= options.RELOADING_CHECK_INTERVAL: return
        last_check_time = now
        changed = {}
        for fname, mtime, trans in trans_files:
            try: new_mtime = get_mtime(fname)
            except:  # file not found?
                new_mtime = None
            if new_mtime != mtime: changed[fname] = new_mtime
        if not changed: return

        erroneous = set()
        log(type='RELOAD:begin', prefix='RELOADING: ', text=shortened_filename(fname), severity=ERROR,
            files=[ fname for fname, mtime, trans in trans_files ], changed=changed)
        try:
            translations.clear()
            for i, (fname, mtime, trans) in enumerate(trans_files):
                if fname in changed:
                    new_mtime = changed[fname]
                    trans = {}
                    if new_mtime is not None:
                        try: trans = load(fname)
                        except:
                            erroneous.add(fname)
                            log_exc()
                    trans_files[i] = fname, new_mtime, trans
                update(translations, trans)
        finally: log(type='RELOAD:end', severity=DEBUG, success=not erroneous, erroneous=erroneous,
                     text='Reloaded with errors' if erroneous else 'Reloaded successfully')
コード例 #5
0
ファイル: i18n.py プロジェクト: buhtigexa/Nerit
def reg_trans_file(filename):
    for fname, mtime, trans in trans_files:
        if fname == filename: return
    mtime = get_mtime(filename)
    trans = load(filename)
    update(translations, trans)
    trans_files.append((filename, mtime, trans))
コード例 #6
0
def reload():
    global last_check_time
    now = time()
    if abs(now - last_check_time) <= options.RELOADING_CHECK_INTERVAL: return
    with lock:
        if abs(now - last_check_time) <= options.RELOADING_CHECK_INTERVAL: return
        last_check_time = now
        changed = {}
        for fname, mtime, trans in trans_files:
            try: new_mtime = get_mtime(fname)
            except:  # file not found?
                new_mtime = None
            if new_mtime != mtime: changed[fname] = new_mtime
        if not changed: return

        erroneous = set()
        log(type='RELOAD:begin', prefix='RELOADING: ', text=shortened_filename(fname), severity=ERROR,
            files=[ fname for fname, mtime, trans in trans_files ], changed=changed)
        try:
            translations.clear()
            for i, (fname, mtime, trans) in enumerate(trans_files):
                if fname in changed:
                    new_mtime = changed[fname]
                    trans = {}
                    if new_mtime is not None:
                        try: trans = load(fname)
                        except:
                            erroneous.add(fname)
                            log_exc()
                    trans_files[i] = fname, new_mtime, trans
                update(translations, trans)
        finally: log(type='RELOAD:end', severity=DEBUG, success=not erroneous, erroneous=erroneous,
                     text='Reloaded with errors' if erroneous else 'Reloaded successfully')
コード例 #7
0
def markup_from_file(str_cls, filename, encoding=None):
    key = filename, str_cls, encoding
    mtime = get_mtime(filename)
    old_mtime, markup = template_file_cache.get(key, (None, None))
    if markup and mtime == old_mtime: return markup
    s = read_text_file(filename, encoding)

    if s.startswith(redirect_prefix):
        new_filename = s[len(redirect_prefix):].strip()
        return markup_from_file(str_cls, new_filename, encoding)

    if s.startswith(translation_prefix):
        lang = s[len(redirect_prefix):].strip().lower()
        root, ext = os.path.splitext(filename)
        root, _ = root.split('-', 1)
        new_filename = '%s-%s%s' % (root, lang, ext)
        return markup_from_file(str_cls, new_filename, encoding)

    markup = markup_from_string(str_cls, s, encoding, True, False, filename)
    template_file_cache[filename] = mtime, markup
    return markup
コード例 #8
0
def markup_from_file(str_cls, filename, encoding=None):
    key = filename, str_cls, encoding
    mtime = get_mtime(filename)
    old_mtime, markup = template_file_cache.get(key, (None, None))
    if markup and mtime == old_mtime: return markup
    s = read_text_file(filename, encoding)

    if s.startswith(redirect_prefix):
        new_filename = s[len(redirect_prefix):].strip()
        return markup_from_file(str_cls, new_filename, encoding)

    if s.startswith(translation_prefix):
        lang = s[len(redirect_prefix):].strip().lower()
        root, ext = os.path.splitext(filename)
        root, _ = root.split('-', 1)
        new_filename = '%s-%s%s' % (root, lang, ext)
        return markup_from_file(str_cls, new_filename, encoding)

    markup = markup_from_string(str_cls, s, encoding, True, False, filename)
    template_file_cache[filename] = mtime, markup
    return markup