Beispiel #1
0
def view_page(request):
    page_name = request.matchdict['page_name']
    page_locale = get_locale_name(request)

    page = DBSession.query(Page).filter_by(translite_name=page_name).\
                                 filter_by(visible=True).one()
    # clause for choised locale
    if not page.language == page_locale:
        page_on_lang = False
        if page.orign_page_id == 0:
            page_id = page.id
        else:
            page_id = page.orign_page_id

        page_on_lang = DBSession.query(Page).\
                            filter_by(orign_page_id=page_id).\
                            filter_by(language=page_locale).all()
        if page_on_lang:
            page = page_on_lang[0]

    childs = DBSession.query(Page).filter_by(parent_id=page.id).\
                                   filter_by(visible=True).all()

    def get_breadcrumbs_chain(page):
        chain = []
        chain.append(page)
        while page.parent_id:
            page = DBSession.query(Page).filter_by(id=page.parent_id).one()
            chain.append(page)
        if len(chain) == 1:
            chain = []
        return reversed(chain)

    breadcrumbs = get_breadcrumbs_chain(page)
    return dict(page=page, childs=childs, breadcrumbs=breadcrumbs)
Beispiel #2
0
def add_page(request):
    user = authenticated_userid(request)
    if 'form.submitted' in request.params:
        name = request.params['name']
        content = request.params['content']
        if 'visible' in request.params:
            visible = True
        else:
            visible = False
        max_id = DBSession.query(func.max(Page.id)).all()
        if max_id[0][0]:
            position = max_id[0][0] + 1
        else:
            position = 1
        page = Page(user, name, content, position, visible)
        if 'parent_id' in request.params:
            page.parent_id = request.params['parent_id']
        else:
            page.parent_id = 0
        if 'lang' in request.params:
            page.language = request.params['lang']
        if 'translated_page' in request.params:
            page.orign_page_id = request.params['translated_page']
        page.created_by = user

        page.tags = []
        tags = re.split(r'[,;]+', request.params['tags'])
        tags = filter(lambda x: x not in (None, '', ' '), tags)
        tags = map(lambda x: x.strip(), tags)
        tags = list(set(tags))
        for tag in tags:
            exist_tag = DBSession.query(Tag).filter_by(name=tag).all()
            if exist_tag:
                tag = exist_tag[0]
            else:
                tag = Tag(tag)
            page.tags.append(tag)
        DBSession.add(page)
        return HTTPFound(location=request.route_url('admin'))
    # if it child page
    if 'parent_id' in request.params:
        parent_id = request.params['parent_id']
    else:
        parent_id = ''
    LOCALE = get_locale_name(request)
    # if it translated page
    if 'add_translate' in request.params:
        translated_page_id = request.params['translated_page']
        translated_page = DBSession.query(Page).\
                               filter_by(id=translated_page_id).one()
        lang_list = get_lang(translated_page)
    else:
        lang_list = translated_page = None

    page = Page(user, '', '', '', '')
    return dict(page=page,
                parent_id=parent_id,
                translate_lang=lang_list,
                translated=translated_page,
                LOCALE=LOCALE)
Beispiel #3
0
def sort_page(request):
    page_list = request.params['page_list']
    parent_id = request.matchdict['target']
    if not page_list:
        return HTTPFound(location=request.environ['HTTP_REFERER'])
    else:
        page_list = json.loads("[" + page_list + "]")

    def sort_child(children, parent):
        for i, child in enumerate(children):
            page_id = child['id']
            ch = DBSession.query(Page).filter_by(id=page_id).one()
            ch.parent_id = parent
            ch.position = i
            DBSession.add(ch)
            if 'children' in child:
                sort_child(child['children'], ch.id)

    for i, page in enumerate(page_list):
        page_id = page['id']
        p = DBSession.query(Page).filter_by(id=page_id).one()
        if not page_id:
            p.parent_id = 0
        else:
            p.parent_id = parent_id
        p.position = i
        DBSession.add(p)
        children = page['children']
        if children:
            sort_child(children, p.id)

    return HTTPFound(location=request.environ['HTTP_REFERER'])
Beispiel #4
0
def sort_page(request):
    page_list = request.params['page_list']
    parent_id = request.matchdict['target']
    if not page_list:
        return HTTPFound(location=request.environ['HTTP_REFERER'])
    else:
        page_list = json.loads("[" + page_list + "]")

    def sort_child(children, parent):
        for i, child in enumerate(children):
            page_id = child['id']
            ch = DBSession.query(Page).filter_by(id=page_id).one()
            ch.parent_id = parent
            ch.position = i
            DBSession.add(ch)
            if 'children' in child:
                sort_child(child['children'], ch.id)

    for i, page in enumerate(page_list):
        page_id = page['id']
        p = DBSession.query(Page).filter_by(id=page_id).one()
        if not page_id:
            p.parent_id = 0
        else:
            p.parent_id = parent_id
        p.position = i
        DBSession.add(p)
        children = page['children']
        if children:
            sort_child(children, p.id)

    return HTTPFound(location=request.environ['HTTP_REFERER'])
Beispiel #5
0
def view_page(request):
    page_name = request.matchdict['page_name']
    page_locale = get_locale_name(request)

    page = DBSession.query(Page).filter_by(translite_name=page_name).\
                                 filter_by(visible=True).one()
    # clause for choised locale
    if not page.language == page_locale:
        page_on_lang = False
        if page.orign_page_id == 0:
            page_id = page.id
        else:
            page_id = page.orign_page_id

        page_on_lang = DBSession.query(Page).\
                            filter_by(orign_page_id=page_id).\
                            filter_by(language=page_locale).all()
        if page_on_lang:
            page = page_on_lang[0]

    childs = DBSession.query(Page).filter_by(parent_id=page.id).\
                                   filter_by(visible=True).all()

    def get_breadcrumbs_chain(page):
        chain = []
        chain.append(page)
        while page.parent_id:
            page = DBSession.query(Page).filter_by(id=page.parent_id).one()
            chain.append(page)
        if len(chain) == 1:
            chain = []
        return reversed(chain)
    breadcrumbs = get_breadcrumbs_chain(page)
    return dict(page=page, childs=childs, breadcrumbs=breadcrumbs)
Beispiel #6
0
 def sort_child(children, parent):
     for i, child in enumerate(children):
         page_id = child['id']
         ch = DBSession.query(Page).filter_by(id=page_id).one()
         ch.parent_id = parent
         ch.position = i
         DBSession.add(ch)
         if 'children' in child:
             sort_child(child['children'], ch.id)
Beispiel #7
0
 def sort_child(children, parent):
     for i, child in enumerate(children):
         page_id = child['id']
         ch = DBSession.query(Page).filter_by(id=page_id).one()
         ch.parent_id = parent
         ch.position = i
         DBSession.add(ch)
         if 'children' in child:
             sort_child(child['children'], ch.id)
Beispiel #8
0
def add_page(request):
    user = authenticated_userid(request)
    if 'form.submitted' in request.params:
        name = request.params['name']
        content = request.params['content']
        if 'visible' in request.params:
            visible = True
        else:
            visible = False
        max_id = DBSession.query(func.max(Page.id)).all()
        if max_id[0][0]:
            position = max_id[0][0] + 1
        else:
            position = 1
        page = Page(user, name, content, position, visible)
        if 'parent_id' in request.params:
            page.parent_id = request.params['parent_id']
        else:
            page.parent_id = 0
        if 'lang' in request.params:
            page.language = request.params['lang']
        if 'translated_page' in request.params:
            page.orign_page_id = request.params['translated_page']
        page.created_by = user

        page.tags = []
        tags = re.split(r'[,;]+', request.params['tags'])
        tags = filter(lambda x: x not in (None, '', ' '), tags)
        tags = map(lambda x: x.strip(), tags)
        tags = list(set(tags))
        for tag in tags:
            exist_tag = DBSession.query(Tag).filter_by(name=tag).all()
            if exist_tag:
                tag = exist_tag[0]
            else:
                tag = Tag(tag)
            page.tags.append(tag)
        DBSession.add(page)
        return HTTPFound(location=request.route_url('admin'))
    # if it child page
    if 'parent_id' in request.params:
        parent_id = request.params['parent_id']
    else:
        parent_id = ''
    LOCALE = get_locale_name(request)
    # if it translated page
    if 'add_translate' in request.params:
        translated_page_id = request.params['translated_page']
        translated_page = DBSession.query(Page).\
                               filter_by(id=translated_page_id).one()
        lang_list = get_lang(translated_page)
    else:
        lang_list = translated_page = None

    page = Page(user, '', '', '', '')
    return dict(page=page, parent_id=parent_id, translate_lang=lang_list,
                translated=translated_page, LOCALE=LOCALE)
Beispiel #9
0
def add_user(request):
    if 'form.submitted' in request.params:
        login = request.params['user_login']
        groups = request.params['user_groups']
        password = request.params['user_password']
        user = User(login=login, password=password, groups=groups)
        DBSession.add(user)
        return HTTPFound(location=request.route_path('admin_object',
                         object="user", action="view"))
    user = User('', '', '')
    return dict(user=user)
Beispiel #10
0
def add_user(request):
    if 'form.submitted' in request.params:
        login = request.params['user_login']
        groups = request.params['user_groups']
        password = request.params['user_password']
        user = User(login=login, password=password, groups=groups)
        DBSession.add(user)
        return HTTPFound(location=request.route_path(
            'admin_object', object="user", action="view"))
    user = User('', '', '')
    return dict(user=user)
Beispiel #11
0
def edit_user(request):
    user_id = request.matchdict['target']
    user = DBSession.query(User).filter_by(id=user_id).one()
    if 'form.submitted' in request.params:
        user.login = request.params['user_login']
        password = request.params['user_password']
        user.groups = request.params['user_groups']
        if password:
            user.password = password
        DBSession.add(user)
        return HTTPFound(location=request.route_path(
            'admin_object', object="user", action="view"))
    return dict(user=user)
Beispiel #12
0
def settings(request):
    settings = get_settings()

    if 'form.submitted' in request.params:
        for key, value in settings.items():
            key_form = request.params[key]
            if not settings[key]:
                settings[key] = Settings(key, key_form)
            else:
                settings[key].value = key_form
            DBSession.add(settings[key])
        return HTTPFound(location=request.route_url('admin'))
    return dict(settings=settings)
Beispiel #13
0
def edit_user(request):
    user_id = request.matchdict['target']
    user = DBSession.query(User).filter_by(id=user_id).one()
    if 'form.submitted' in request.params:
        user.login = request.params['user_login']
        password = request.params['user_password']
        user.groups = request.params['user_groups']
        if password:
            user.password = password
        DBSession.add(user)
        return HTTPFound(location=request.route_path('admin_object',
                         object="user", action="view"))
    return dict(user=user)
Beispiel #14
0
def settings(request):
    settings = get_settings()

    if 'form.submitted' in request.params:
        for key, value in settings.items():
            key_form = request.params[key]
            if not settings[key]:
                settings[key] = Settings(key, key_form)
            else:
                settings[key].value = key_form
            DBSession.add(settings[key])
        return HTTPFound(location=request.route_url('admin'))
    return dict(settings=settings)
Beispiel #15
0
def get_page(key):
    page = DBSession.query(Page).filter(Page.id == key).all()
    if page:
        page = page[0]
    else:
        page = Page('', '', '', '', '')
    return page
Beispiel #16
0
def get_page(key):
    page = DBSession.query(Page).filter(Page.id == key).all()
    if page:
        page = page[0]
    else:
        page = Page('', '', '', '', '')
    return page
Beispiel #17
0
def get_lang(page):
    exist_translations = DBSession.query(Page).\
            filter_by(orign_page_id=page.id).all()
    exist_languages = [lang.language for lang in exist_translations]
    exist_languages.append(page.language)
    settings = get_current_registry().settings
    languages = settings['available_languages'].split()
    lang_list = list(set(languages) - set(exist_languages))
    return lang_list
Beispiel #18
0
def get_lang(page):
    exist_translations = DBSession.query(Page).\
            filter_by(orign_page_id=page.id).all()
    exist_languages = [lang.language for lang in exist_translations]
    exist_languages.append(page.language)
    settings = get_current_registry().settings
    languages = settings['available_languages'].split()
    lang_list = list(set(languages) - set(exist_languages))
    return lang_list
Beispiel #19
0
 def get_breadcrumbs_chain(page):
     chain = []
     chain.append(page)
     while page.parent_id:
         page = DBSession.query(Page).filter_by(id=page.parent_id).one()
         chain.append(page)
     if len(chain) == 1:
         chain = []
     return reversed(chain)
Beispiel #20
0
 def get_breadcrumbs_chain(page):
     chain = []
     chain.append(page)
     while page.parent_id:
         page = DBSession.query(Page).filter_by(id=page.parent_id).one()
         chain.append(page)
     if len(chain) == 1:
         chain = []
     return reversed(chain)
Beispiel #21
0
def get_settings():
    settings = {}
    list_of_settings = ['sitename', 'signature', 'author', 'copyright',
                        'description', 'keywords']
    for key in list_of_settings:
        setting = DBSession.query(Settings).\
                                  filter_by(name=key).all()
        if setting:
            settings[key] = setting[0]
        else:
            settings[key] = Settings(key, '')
    return settings
Beispiel #22
0
def get_settings():
    settings = {}
    list_of_settings = [
        'sitename', 'signature', 'author', 'copyright', 'description',
        'keywords'
    ]
    for key in list_of_settings:
        setting = DBSession.query(Settings).\
                                  filter_by(name=key).all()
        if setting:
            settings[key] = setting[0]
        else:
            settings[key] = Settings(key, '')
    return settings
Beispiel #23
0
def add_global(event):
    settings = get_current_registry().settings
    event['settings'] = get_settings()
    event['languages'] = settings['available_languages'].split()
    locale = get_locale_name(event['request'])
    event['partition'] = DBSession.query(Page).\
                         filter(Page.visible == True).\
                         filter(Page.parent_id == 0).\
                         filter(Page.language == locale).\
                         filter(or_(Page.orign_page.has(Page.parent_id == 0),
                                    Page.orign_page_id == 0)).\
                         order_by(Page.position).all()

    event['logged_in'] = authenticated_userid(event['request'])
Beispiel #24
0
def add_global(event):
    settings = get_current_registry().settings
    event['settings'] = get_settings()
    event['languages'] = settings['available_languages'].split()
    locale = get_locale_name(event['request'])
    event['partition'] = DBSession.query(Page).\
                         filter(Page.visible == True).\
                         filter(Page.parent_id == 0).\
                         filter(Page.language == locale).\
                         filter(or_(Page.orign_page.has(Page.parent_id == 0),
                                    Page.orign_page_id == 0)).\
                         order_by(Page.position).all()

    event['logged_in'] = authenticated_userid(event['request'])
Beispiel #25
0
def get_tree(request):
    '''Return child pages on demand.
    '''
    json_tree_nodes = []

    if 'id' in request.params:
        id = request.params['id']
    elif 'target' in request.matchdict:
        id = int(request.matchdict['target'])
    else:
        id = 0

    nodes = DBSession.query(Page).filter_by(parent_id=id).\
            filter_by(orign_page_id=0).\
            order_by(Page.position).all()
    for node in nodes:
        childs = DBSession.query(Page).filter_by(parent_id=node.id).\
                                       filter_by(orign_page_id=0).\
                                       order_by(Page.position).all()
        state = 'open' if not len(childs) else 'closed'
        node = TreeObject(node.id, node.name, state)
        json_tree_nodes.append(node)

    return json_tree_nodes
Beispiel #26
0
def get_tree(request):
    '''Return child pages on demand.
    '''
    json_tree_nodes = []

    if 'id' in request.params:
        id = request.params['id']
    elif 'target' in request.matchdict:
        id = int(request.matchdict['target'])
    else:
        id = 0

    nodes = DBSession.query(Page).filter_by(parent_id=id).\
            filter_by(orign_page_id=0).\
            order_by(Page.position).all()
    for node in nodes:
        childs = DBSession.query(Page).filter_by(parent_id=node.id).\
                                       filter_by(orign_page_id=0).\
                                       order_by(Page.position).all()
        state = 'open' if not len(childs) else 'closed'
        node = TreeObject(node.id, node.name, state)
        json_tree_nodes.append(node)

    return json_tree_nodes
Beispiel #27
0
def edit_page(request):
    user = authenticated_userid(request)
    page_id = request.matchdict['target']
    page = DBSession.query(Page).filter_by(id=page_id).one()
    if 'form.submitted' in request.params:
        page.name = request.params['name']
        page.content = request.params['content']
        page.updated_by = user
        if 'visible' in request.params:
            page.visible = True
        else:
            page.visible = False

        page.tags = []
        tags = re.split(r'[,;]+', request.params['tags'])
        tags = filter(lambda x: x not in (None, '', ' '), tags)
        tags = map(lambda x: x.strip(), tags)
        tags = list(set(tags))
        for tag in tags:
            exist_tag = DBSession.query(Tag).filter_by(name=tag).all()
            if exist_tag:
                tag = exist_tag[0]
            else:
                tag = Tag(tag)
            page.tags.append(tag)
        DBSession.add(page)
        return HTTPFound(location=request.environ['HTTP_REFERER'])
    # if it translated page
    LOCALE = get_locale_name(request)
    translated_page = DBSession.query(Page).\
                                filter_by(id=page.orign_page_id).all()
    translated_page = translated_page[0] if translated_page else None
    if translated_page:
        exist_translations = DBSession.query(Page).\
                filter_by(orign_page_id=translated_page.id).all()
        lang_list = get_lang(translated_page)
    else:
        exist_translations = DBSession.query(Page).\
                filter_by(orign_page_id=page.id).all()
        lang_list = None
    return dict(page=page,
                translated=translated_page,
                LOCALE=LOCALE,
                exist_translations=exist_translations,
                translate_lang=lang_list)
Beispiel #28
0
def edit_page(request):
    user = authenticated_userid(request)
    page_id = request.matchdict['target']
    page = DBSession.query(Page).filter_by(id=page_id).one()
    if 'form.submitted' in request.params:
        page.name = request.params['name']
        page.content = request.params['content']
        page.updated_by = user
        if 'visible' in request.params:
            page.visible = True
        else:
            page.visible = False

        page.tags = []
        tags = re.split(r'[,;]+', request.params['tags'])
        tags = filter(lambda x: x not in (None, '', ' '), tags)
        tags = map(lambda x: x.strip(), tags)
        tags = list(set(tags))
        for tag in tags:
            exist_tag = DBSession.query(Tag).filter_by(name=tag).all()
            if exist_tag:
                tag = exist_tag[0]
            else:
                tag = Tag(tag)
            page.tags.append(tag)
        DBSession.add(page)
        return HTTPFound(location=request.environ['HTTP_REFERER'])
    # if it translated page
    LOCALE = get_locale_name(request)
    translated_page = DBSession.query(Page).\
                                filter_by(id=page.orign_page_id).all()
    translated_page = translated_page[0] if translated_page else None
    if translated_page:
        exist_translations = DBSession.query(Page).\
                filter_by(orign_page_id=translated_page.id).all()
        lang_list = get_lang(translated_page)
    else:
        exist_translations = DBSession.query(Page).\
                filter_by(orign_page_id=page.id).all()
        lang_list = None
    return dict(page=page, translated=translated_page, LOCALE=LOCALE,
                exist_translations=exist_translations,
                translate_lang=lang_list)
Beispiel #29
0
def admin(request):
    pages = DBSession.query(Page).filter(Page.orign_page_id == 0).\
            order_by(Page.position).all()
    return dict(pages=pages)
Beispiel #30
0
def get_user(login):
    user = DBSession.query(User).filter(User.login == login).all()
    if user:
        return user[0]
    else:
        return None
Beispiel #31
0
def del_page(request):
    page_id = request.matchdict['target']
    page = DBSession.query(Page).filter_by(id=page_id).one()
    parent_id = page.parent_id
    childs = DBSession.query(Page).filter(Page.parent_id == page_id).all()
    for child in childs:
        child.parent_id = parent_id
        DBSession.add(child)
    translations = DBSession.query(Page).\
                filter_by(orign_page_id=page_id).all()
    page = DBSession.query(Page).filter_by(id=page_id).one()
    DBSession.delete(page)
    DBSession.flush()
    for trans in translations:
        DBSession.delete(trans)
        DBSession.flush()
    return HTTPFound(location=request.route_url('admin'))
Beispiel #32
0
def user_view(request):
    user_id = request.matchdict['target']
    user = DBSession.query(User).filter_by(id=user_id).one()
    return {'user': user}
Beispiel #33
0
def users_view(request):
    users = DBSession.query(User).all()
    return {'users': users}
Beispiel #34
0
def del_user(request):
    user_id = request.matchdict['target']
    user = DBSession.query(User).filter_by(id=user_id).one()
    DBSession.delete(user)
    return HTTPFound(location=request.route_path(
        'admin_object', object="user", action="view"))
Beispiel #35
0
def user_view(request):
    user_id = request.matchdict['target']
    user = DBSession.query(User).filter_by(id=user_id).one()
    return {'user': user}
Beispiel #36
0
def users_view(request):
    users = DBSession.query(User).all()
    return {'users': users}
Beispiel #37
0
def del_user(request):
    user_id = request.matchdict['target']
    user = DBSession.query(User).filter_by(id=user_id).one()
    DBSession.delete(user)
    return HTTPFound(location=request.route_path('admin_object',
                     object="user", action="view"))
Beispiel #38
0
def get_user(login):
    user = DBSession.query(User).filter(User.login == login).all()
    if user:
        return user[0]
    else:
        return None
Beispiel #39
0
def del_page(request):
    page_id = request.matchdict['target']
    page = DBSession.query(Page).filter_by(id=page_id).one()
    parent_id = page.parent_id
    childs = DBSession.query(Page).filter(Page.parent_id == page_id).all()
    for child in childs:
        child.parent_id = parent_id
        DBSession.add(child)
    translations = DBSession.query(Page).\
                filter_by(orign_page_id=page_id).all()
    page = DBSession.query(Page).filter_by(id=page_id).one()
    DBSession.delete(page)
    DBSession.flush()
    for trans in translations:
        DBSession.delete(trans)
        DBSession.flush()
    return HTTPFound(location=request.route_url('admin'))
Beispiel #40
0
def admin(request):
    pages = DBSession.query(Page).filter(Page.orign_page_id == 0).\
            order_by(Page.position).all()
    return dict(pages=pages)