Ejemplo n.º 1
0
def org_reedit(org):
    lang = get_admin_lang()
    new_org = Organisation(
        lang=lang,
        org_id=org.org_id,
        description=org.description,
        name=org.name,
        status='edit',
        published=True,
        current=True,

        address=org.address,
        contact=org.contact,
        phone=org.phone,
        email=org.email,
        pgp_key=org.pgp_key,
        website=org.website,
        private=org.private,
        active=org.active,
        image=org.image,

    )
    db.session.add(new_org)
    if lang == org.lang:
        org.current = False
        db.session.add(org)
    db.session.commit()
    return new_org
Ejemplo n.º 2
0
Archivo: cms.py Proyecto: whythawk/hrd
def cms_list():
    set_menu()
    lang = get_admin_lang()
    permission_content(lang)
    pages = Cms.query.filter_by(lang=lang, current=True)
    pages = pages.order_by('title')
    for page in pages:
        p = Cms.query.filter_by(page_id=page.page_id,
                                lang=lang,
                                status='publish').first()
        page.has_published = bool(p)
    if lang == 'en':
        missing = []
        trans = {}
    else:
        # missing pages
        trans = db.session.query(Cms.page_id).filter_by(lang=lang)
        missing = db.session.query(Cms).filter_by(lang='en', current=True)
        missing = missing.filter(db.not_(Cms.page_id.in_(trans)))
        missing = missing.order_by('title')
    status = list_status()
    return render_template('admin/cms_list.html',
                           pages=pages,
                           lang=lang,
                           missing=missing,
                           trans=trans,
                           status=status)
Ejemplo n.º 3
0
def category_edit(id, cat_type):
    set_menu(cat_type)
    lang = get_admin_lang()
    category = Category.query.filter_by(category_id=id, lang=lang).first()
    if not category and lang != 'en':
        category = Category.query.filter_by(category_id=id, lang='en').first()
        if not category:
            abort(404)
        return category_trans(id, cat_type)
    if not category:
        abort(404)
    if lang != 'en':
        trans = Category.query.filter_by(category_id=category.category_id,
                                         lang='en').first()
    else:
        trans = {}
    if request.method == 'POST':
        category.title = request.form['title']
        category.description = request.form['description']
        db.session.add(category)
        # Update locked fields
        if lang == 'en':
            locked = {
                'active': get_bool('active'),
                'order': get_int('order', 99),
            }
            Category.query.filter_by(
                category_id=category.category_id
            ).update(locked)
        db.session.commit()
        return redirect(url_for_admin('category_list', cat_type=cat_type))
    translations = get_cat_trans(category.category_id)
    return render_template('admin/category_edit.html', category=category,
                           trans=trans, cat_type=cat_type,
                           translations=translations)
Ejemplo n.º 4
0
def org_reedit(org):
    lang = get_admin_lang()
    new_org = Organisation(
        lang=lang,
        org_id=org.org_id,
        description=org.description,
        name=org.name,
        status='edit',
        published=True,
        current=True,
        address=org.address,
        contact=org.contact,
        phone=org.phone,
        email=org.email,
        pgp_key=org.pgp_key,
        website=org.website,
        private=org.private,
        active=org.active,
        image=org.image,
    )
    db.session.add(new_org)
    if lang == org.lang:
        org.current = False
        db.session.add(org)
    db.session.commit()
    return new_org
Ejemplo n.º 5
0
def org_list():
    set_menu()
    lang = get_admin_lang()
    permission_content(lang)
    orgs = Organisation.query.filter_by(lang=lang, current=True)
    orgs = orgs.order_by('name')
    for org in orgs:
        p = Organisation.query.filter_by(
            org_id=org.org_id, lang=lang, status='publish'
        ).first()
        org.has_published = bool(p)
    if lang == 'en':
        missing = []
        trans = {}
    else:
        # missing orgs
        trans = db.session.query(Organisation.org_id).filter_by(
            lang=lang, current=True
        )
        missing = db.session.query(Organisation).filter_by(
            lang='en', current=True
        )
        missing = missing.filter(db.not_(Organisation.org_id.in_(trans)))
        missing = missing.order_by('name')
    status = list_status()
    return render_template('admin/org_list.html', orgs=orgs, lang=lang,
                           missing=missing, trans=trans, status=status)
Ejemplo n.º 6
0
def org_list():
    set_menu()
    lang = get_admin_lang()
    permission_content(lang)
    orgs = Organisation.query.filter_by(lang=lang, current=True)
    orgs = orgs.order_by('name')
    for org in orgs:
        p = Organisation.query.filter_by(org_id=org.org_id,
                                         lang=lang,
                                         status='publish').first()
        org.has_published = bool(p)
    if lang == 'en':
        missing = []
        trans = {}
    else:
        # missing orgs
        trans = db.session.query(Organisation.org_id).filter_by(lang=lang,
                                                                current=True)
        missing = db.session.query(Organisation).filter_by(lang='en',
                                                           current=True)
        missing = missing.filter(db.not_(Organisation.org_id.in_(trans)))
        missing = missing.order_by('name')
    status = list_status()
    return render_template('admin/org_list.html',
                           orgs=orgs,
                           lang=lang,
                           missing=missing,
                           trans=trans,
                           status=status)
Ejemplo n.º 7
0
def reedit(menu_item):
    lang = get_admin_lang()
    new_menu_item = MenuItem(
        lang=lang,
        menu_id=menu_item.menu_id,
        item=menu_item.item,
        active=menu_item.active,
        private=menu_item.private,
    )
    db.session.add(new_menu_item)
    db.session.commit()
    return new_menu_item
Ejemplo n.º 8
0
def menu_edit(id):
    set_menu()
    lang = get_admin_lang()
    menu_item = MenuItem.query.filter_by(menu_id=id, lang=lang).first()
    if not menu_item and lang != 'en':
        menu_item = MenuItem.query.filter_by(menu_id=id, lang='en').first()
        if not menu_item:
            abort(404)
    if not menu_item:
        abort(404)
    if request.method == 'POST' and 'title' in request.form:
        if menu_item.lang != lang:
            menu_item = reedit(menu_item)
        menu_item.title = request.form['title']
        db.session.add(menu_item)
        db.session.commit()
        # Update locked fields
        if lang == 'en':
            locked = {
                'active': get_bool('active'),
                'private': get_bool('private'),
                'item': get_str('item'),
                'order': get_int('order', 99),
            }
            MenuItem.query.filter_by(
                menu_id=id
            ).update(locked)
        db.session.commit()
        return redirect(url_for_admin('menu_list'))
    if lang != 'en':
        trans = MenuItem.query.filter_by(menu_id=menu_item.menu_id,
                                         lang='en').first()
    else:
        trans = {}
    translations = get_trans(id)
    options = []
    if lang == 'en':
        options = [
            {'value': 'orgs', 'name': 'Special: Organisation search'},
            {'value': 'res', 'name': 'Special: Resources'},
        ]

        menu_items = db.session.query(Cms.url, Cms.title).filter_by(
            lang='en', active=True, status='publish'
        )
        for i in menu_items:
            options.append({'value': i.url, 'name': 'Page: %s ~ %s'
                            % (i.title, i.url)})
    elif menu_item.lang == 'en':
        menu_item = MenuItem()
    return render_template('admin/menu_edit.html', menuitem=menu_item,
                           trans=trans, options=options,
                           translations=translations)
Ejemplo n.º 9
0
def code_trans(id, cat_type):
    lang = get_admin_lang()
    code = Code.query.filter_by(code_id=id, lang='en').first()
    if not code:
        abort(404)
    exists = Code.query.filter_by(code_id=code.code_id, lang=lang).first()
    if exists:
        abort(403)
    trans = Code(lang=lang)
    trans.status = 'edit'
    trans.code_id = id
    trans.category_id = code.category_id
    db.session.add(trans)
    db.session.commit()
    return redirect(url_for_admin('code_edit', id=id, cat_type=cat_type))
Ejemplo n.º 10
0
Archivo: cms.py Proyecto: rrymrrsn/hrd
def cms_preview(id):
    set_menu()
    lang = get_admin_lang()
    permission_content(lang)
    page = Cms.query.filter_by(page_id=id, lang=lang, current=True).first()
    if not page:
        page = Cms.query.filter_by(page_id=id, lang='en', current=True).first()
        if not page:
            abort(404)
        page = None
    translations = get_trans(id)
    ctx = _request_ctx_stack.top
    if ctx:
        ctx.babel_locale = lang
    return render_template('admin/cms_preview.html',
                           page=page,
                           translations=translations)
Ejemplo n.º 11
0
def menu_list():
    set_menu()
    lang = get_admin_lang()
    permission_content(lang)
    menu_items = MenuItem.query.filter_by(lang=lang, parent_menu_id=None)
    menu_items = menu_items.order_by('"order"', 'title')
    if lang == 'en':
        missing = []
        trans = {}
    else:
        # missing menu_items
        trans = db.session.query(MenuItem.menu_id).filter_by(lang=lang)
        missing = db.session.query(MenuItem).filter_by(lang='en')
        missing = missing.filter(db.not_(MenuItem.menu_id.in_(trans)))
    status = list_status()
    return render_template('admin/menu_list.html', menu_items=menu_items, lang=lang,
                           missing=missing, trans=trans, status=status)
Ejemplo n.º 12
0
Archivo: cms.py Proyecto: whythawk/hrd
def cms_preview(id):
    set_menu()
    lang = get_admin_lang()
    permission_content(lang)
    page = Cms.query.filter_by(page_id=id, lang=lang, current=True).first()
    if not page:
        page = Cms.query.filter_by(page_id=id, lang='en', current=True).first()
        if not page:
            abort(404)
        page = None
    translations = get_trans(id)
    ctx = _request_ctx_stack.top
    if ctx:
        ctx.babel_locale = lang
    return render_template('admin/cms_preview.html',
                           page=page,
                           translations=translations)
Ejemplo n.º 13
0
Archivo: cms.py Proyecto: whythawk/hrd
def show_page(**kw):
    lang = get_admin_lang()
    lang = request.environ['LANG']
    page = Cms.query.filter_by(lang=lang, status='publish', active=True,
                               **kw).first()
    if not page:
        page = Cms.query.filter_by(lang='en',
                                   status='publish',
                                   active=True,
                                   **kw).first()
        if not page:
            abort(404)

    # only show public page
    if not bool(request.user) and page.private:
        abort(403)

    return render_template('page.html', page=page)
Ejemplo n.º 14
0
Archivo: cms.py Proyecto: rrymrrsn/hrd
def show_page(**kw):
    lang = get_admin_lang()
    lang = request.environ['LANG']
    page = Cms.query.filter_by(
        lang=lang, status='publish', active=True, **kw
    ).first()
    if not page:
        page = Cms.query.filter_by(
            lang='en', status='publish', active=True, **kw
        ).first()
        if not page:
            abort(404)

    # only show public page
    if not bool(request.user) and page.private:
        abort(403)

    return render_template('page.html', page=page)
Ejemplo n.º 15
0
Archivo: cms.py Proyecto: whythawk/hrd
def page_reedit(page):
    lang = get_admin_lang()
    new_page = Cms(lang=lang,
                   page_id=page.page_id,
                   content=page.content,
                   title=page.title,
                   url=page.url,
                   active=page.active,
                   private=page.private,
                   image=page.image,
                   status='edit',
                   current=True,
                   published=True)
    db.session.add(new_page)
    if lang == page.lang:
        page.current = False
        db.session.add(page)
    db.session.commit()
    return new_page
Ejemplo n.º 16
0
Archivo: cms.py Proyecto: rrymrrsn/hrd
def cms_state(id, state):
    lang = get_admin_lang()
    permission_content(lang)
    if state not in STATES:
        abort(403)
    page = Cms.query.filter_by(page_id=id, status=STATES[state], lang=lang,
                               current=True).first()
    if not page:
        abort(403)
    if state == 'publish':
        page.published = True
        old_page = Cms.query.filter_by(page_id=id, status='publish',
                                       lang=lang).first()
        if old_page:
            old_page.status = 'archive'
            db.session.add(old_page)
    page.status = state
    db.session.add(page)
    db.session.commit()
    return redirect(url_for_admin('cms_preview', id=id))
Ejemplo n.º 17
0
def org_preview(id):
    set_menu()
    lang = get_admin_lang()
    permission_content(lang)
    org = Organisation.query.filter_by(org_id=id, lang=lang,
                                       current=True).first()
    if not org:
        org = Organisation.query.filter_by(org_id=id, lang='en',
                                           current=True).first()
        if not org:
            abort(404)
    translations = get_trans(id)
    cat_codes = org_cat_codes(lang, id)
    ctx = _request_ctx_stack.top
    if ctx:
        ctx.babel_locale = lang
    return render_template('admin/org_preview.html',
                           org=org,
                           cat_codes=cat_codes,
                           translations=translations)
Ejemplo n.º 18
0
def category_list(cat_type):
    set_menu(cat_type)
    check_cat_type(cat_type)
    lang = get_admin_lang()
    categories = Category.query.filter_by(
        lang=lang, current=True, cat_type=cat_type
    )
    categories = categories.order_by('"order"', 'title')
    all_ = all_codes(lang, cat_type)
    if lang == 'en':
        missing_cat = []
        m_codes = []
    else:
        # missing categories
        trans = db.session.query(Category.category_id).filter_by(
            lang=lang, cat_type=cat_type
        )
        missing_cat = db.session.query(Category).filter_by(
            lang='en', cat_type=cat_type
        )
        missing_cat = missing_cat.filter(
            db.not_(Category.category_id.in_(trans))
        )
        # missing codes
        trans = db.session.query(Code.code_id).filter_by(lang=lang)
        missing_codes = db.session.query(Code).filter_by(lang='en')
        missing_codes = missing_codes.filter(db.not_(Code.code_id.in_(trans)))
        m_codes = {}
        for code in missing_codes:
            if code.category_id not in m_codes:
                m_codes[code.category_id] = []
            m_codes[code.category_id].append(code)
    status = list_status(cat_type)
    return render_template('admin/category_list.html',
                           categories=categories,
                           missing_cat=missing_cat,
                           m_codes=m_codes,
                           all=all_,
                           cat_type=cat_type,
                           status=status,
                           lang=lang)
Ejemplo n.º 19
0
Archivo: cms.py Proyecto: rrymrrsn/hrd
def page_reedit(page):
    lang = get_admin_lang()
    new_page = Cms(
        lang=lang,
        page_id=page.page_id,
        content=page.content,
        title=page.title,
        url=page.url,
        active=page.active,
        private=page.private,
        image=page.image,
        status='edit',
        current=True,
        published=True
    )
    db.session.add(new_page)
    if lang == page.lang:
        page.current = False
        db.session.add(page)
    db.session.commit()
    return new_page
Ejemplo n.º 20
0
def org_preview(id):
    set_menu()
    lang = get_admin_lang()
    permission_content(lang)
    org = Organisation.query.filter_by(
        org_id=id, lang=lang, current=True
    ).first()
    if not org:
        org = Organisation.query.filter_by(
            org_id=id, lang='en', current=True
        ).first()
        if not org:
            abort(404)
    translations = get_trans(id)
    cat_codes = org_cat_codes(lang, id)
    ctx = _request_ctx_stack.top
    if ctx:
        ctx.babel_locale = lang
    return render_template('admin/org_preview.html', org=org,
                           cat_codes=cat_codes,
                           translations=translations)
Ejemplo n.º 21
0
Archivo: cms.py Proyecto: rrymrrsn/hrd
def cms_list():
    set_menu()
    lang = get_admin_lang()
    permission_content(lang)
    pages = Cms.query.filter_by(lang=lang, current=True)
    pages = pages.order_by('title')
    for page in pages:
        p = Cms.query.filter_by(page_id=page.page_id, lang=lang,
                                status='publish').first()
        page.has_published = bool(p)
    if lang == 'en':
        missing = []
        trans = {}
    else:
        # missing pages
        trans = db.session.query(Cms.page_id).filter_by(lang=lang)
        missing = db.session.query(Cms).filter_by(lang='en', current=True)
        missing = missing.filter(db.not_(Cms.page_id.in_(trans)))
        missing = missing.order_by('title')
    status = list_status()
    return render_template('admin/cms_list.html', pages=pages, lang=lang,
                           missing=missing, trans=trans, status=status)
Ejemplo n.º 22
0
def org_state(id, state):
    lang = get_admin_lang()
    permission_content(lang)
    if state not in STATES:
        abort(403)
    org = Organisation.query.filter_by(
        org_id=id, status=STATES[state], lang=lang, current=True
    ).first()
    if not org:
        abort(403)
    if state == 'publish':
        org.published = True
        old_org = Organisation.query.filter_by(
            org_id=id, status='publish', lang=lang
        ).first()
        if old_org:
            old_org.status = 'archive'
            db.session.add(old_org)
    org.status = state
    db.session.add(org)
    db.session.commit()
    return redirect(url_for_admin('org_preview', id=id))
Ejemplo n.º 23
0
Archivo: cms.py Proyecto: whythawk/hrd
def cms_state(id, state):
    lang = get_admin_lang()
    permission_content(lang)
    if state not in STATES:
        abort(403)
    page = Cms.query.filter_by(page_id=id,
                               status=STATES[state],
                               lang=lang,
                               current=True).first()
    if not page:
        abort(403)
    if state == 'publish':
        page.published = True
        old_page = Cms.query.filter_by(page_id=id, status='publish',
                                       lang=lang).first()
        if old_page:
            old_page.status = 'archive'
            db.session.add(old_page)
    page.status = state
    db.session.add(page)
    db.session.commit()
    return redirect(url_for_admin('cms_preview', id=id))
Ejemplo n.º 24
0
def org(id):
    lang = get_admin_lang()
    lang = request.environ['LANG']
    org = Organisation.query.filter_by(
        org_id=id, lang=lang, status='publish', active=True
    )

    org = org.first()
    if not org:
        org = Organisation.query.filter_by(
            org_id=id, lang='en', status='publish', active=True
        ).first()
        if not org:
            abort(404)

    # only show public orgs
    if not bool(request.user) and org.private:
        abort(403)

    cat_codes = org_cat_codes(lang, id)
    return render_template('admin/org.html',
                           org=org,
                           cat_codes=cat_codes)
Ejemplo n.º 25
0
def org(id):
    lang = get_admin_lang()
    lang = request.environ['LANG']
    org = Organisation.query.filter_by(org_id=id,
                                       lang=lang,
                                       status='publish',
                                       active=True)

    org = org.first()
    if not org:
        org = Organisation.query.filter_by(org_id=id,
                                           lang='en',
                                           status='publish',
                                           active=True).first()
        if not org:
            abort(404)

    # only show public orgs
    if not bool(request.user) and org.private:
        abort(403)

    cat_codes = org_cat_codes(lang, id)
    return render_template('admin/org.html', org=org, cat_codes=cat_codes)
Ejemplo n.º 26
0
def org_state(id, state):
    lang = get_admin_lang()
    permission_content(lang)
    if state not in STATES:
        abort(403)
    org = Organisation.query.filter_by(org_id=id,
                                       status=STATES[state],
                                       lang=lang,
                                       current=True).first()
    if not org:
        abort(403)
    if state == 'publish':
        org.published = True
        old_org = Organisation.query.filter_by(org_id=id,
                                               status='publish',
                                               lang=lang).first()
        if old_org:
            old_org.status = 'archive'
            db.session.add(old_org)
    org.status = state
    db.session.add(org)
    db.session.commit()
    return redirect(url_for_admin('org_preview', id=id))
Ejemplo n.º 27
0
def code_edit(id, cat_type):
    set_menu(cat_type)
    lang = get_admin_lang()
    code = Code.query.filter_by(code_id=id, lang=lang).first()
    if not code and lang != 'en':
        code = Code.query.filter_by(code_id=id, lang='en').first()
        if not code:
            abort(404)
        return code_trans(id, cat_type)
    if not code:
        abort(404)
    if request.method == 'POST':
        code.title = request.form['title']
        code.description = request.form['description']
        db.session.add(code)
        if lang == 'en':
            locked = {
                'active': get_bool('active'),
                'order': get_int('order', 99),
            }
            Code.query.filter_by(code_id=code.code_id).update(locked)
        db.session.commit()
        return redirect(url_for_admin('category_list', cat_type=cat_type))

    if lang != 'en':
        trans = Code.query.filter_by(code_id=code.code_id, lang='en').first()
    else:
        trans = {}
    cats = Category.query.filter_by(lang='en', current=True)
    categories = []
    for cat in cats:
        categories.append({'name': cat.title, 'value': cat.category_id})

    translations = get_code_trans(code.code_id)
    return render_template('admin/code_edit.html', code=code, trans=trans,
                           categories=categories, cat_type=cat_type,
                           translations=translations)
Ejemplo n.º 28
0
def org_edit(id):
    set_menu()
    lang = get_admin_lang()
    permission_content(lang)
    errors = []
    org = Organisation.query.filter_by(org_id=id, lang=lang,
                                       current=True).first()
    if not org and lang != 'en':
        org = Organisation.query.filter_by(org_id=id, lang='en',
                                           current=True).first()
        if not org:
            abort(404)
    if not org:
        abort(404)
    if request.method == 'POST' and 'name' in request.form:
        if org.lang != lang:
            # No translation
            org = org_reedit(org)
        if (org.name != get_str('name')
                or org.description != get_str('description')):
            if org.status == 'publish':
                org = org_reedit(org)
            org.name = get_str('name')
            org.description = get_str('description')
            org.status = 'edit'
            trans_need_update(org)

        if lang == 'en':
            org.address = get_str('address')
            org.contact = get_str('contact')
            org.phone = get_str('phone')
            org.email = get_str('email')
            org.pgp_key = get_str('pgp_key')
            org.website = get_str('website')
            org.private = get_bool('private')
            org.active = get_bool('active')

            if get_bool('logo_remove'):
                org.image = None

            logo = request.files['logo']
            if logo:
                extension = os.path.splitext(logo.filename)[1]
                if extension and extension.lower(
                ) in config.ALLOWED_IMAGE_TYPES:
                    filename = unicode(uuid.uuid4())
                    filename += extension
                    logo.save(
                        os.path.join(app.config['UPLOAD_FOLDER'], filename))
                    org.image = filename
                else:
                    errors.append(
                        'The image uploaded is not of an allowed type')

        db.session.add(org)
        if lang == 'en':
            # codes
            codes_data = all_codes('en', 'org')
            cats = [cat for cat in codes_data if cat['active']]
            cat_codes = []
            for cat in cats:
                cat_codes += cat['codes']
            codes = [code['code'] for code in cat_codes if code['active']]
            c_in = []
            c_out = []
            for code in codes:
                if get_bool(code):
                    c_in.append(code)
                else:
                    c_out.append(code)
            current = [
                c.code for c in OrgCodes.query.filter_by(org_id=id).all()
            ]
            for code in c_in:
                if code not in current:
                    code = OrgCodes(org_id=id, code=code)
                    db.session.add(code)
            for code in c_out:
                OrgCodes.query.filter_by(org_id=id, code=code).delete()

        db.session.commit()
        if lang == 'en':
            update_translations(org)
        if not errors:
            return redirect(url_for_admin('org_preview', id=id))
    if lang != 'en':
        trans = Organisation.query.filter_by(org_id=org.org_id,
                                             lang='en',
                                             current=True).first()
    else:
        trans = {}

    if lang == 'en':
        codes = all_codes('en', 'org')
        current = [c.code for c in OrgCodes.query.filter_by(org_id=id).all()]
    else:
        codes = []
        current = []
    translations = get_trans(id)
    if lang != org.lang:
        org = {}
    return render_template('admin/org_edit.html',
                           org=org,
                           trans=trans,
                           codes=codes,
                           current=current,
                           errors=errors,
                           translations=translations)
Ejemplo n.º 29
0
def org_edit(id):
    set_menu()
    lang = get_admin_lang()
    permission_content(lang)
    errors = []
    org = Organisation.query.filter_by(
        org_id=id, lang=lang, current=True
    ).first()
    if not org and lang != 'en':
        org = Organisation.query.filter_by(
            org_id=id, lang='en', current=True
        ).first()
        if not org:
            abort(404)
    if not org:
        abort(404)
    if request.method == 'POST' and 'name' in request.form:
        if org.lang != lang:
            # No translation
            org = org_reedit(org)
        if (org.name != get_str('name')
                or org.description != get_str('description')):
            if org.status == 'publish':
                org = org_reedit(org)
            org.name = get_str('name')
            org.description = get_str('description')
            org.status = 'edit'
            trans_need_update(org)

        if lang == 'en':
            org.address = get_str('address')
            org.contact = get_str('contact')
            org.phone = get_str('phone')
            org.email = get_str('email')
            org.pgp_key = get_str('pgp_key')
            org.website = get_str('website')
            org.private = get_bool('private')
            org.active = get_bool('active')

            if get_bool('logo_remove'):
                org.image = None

            logo = request.files['logo']
            if logo:
                extension = os.path.splitext(logo.filename)[1]
                if extension and extension.lower() in config.ALLOWED_IMAGE_TYPES:
                    filename = unicode(uuid.uuid4())
                    filename += extension
                    logo.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
                    org.image = filename
                else:
                    errors.append(
                        'The image uploaded is not of an allowed type'
                    )


        db.session.add(org)
        if lang == 'en':
            # codes
            codes_data = all_codes('en', 'org')
            cats = [cat for cat in codes_data if cat['active']]
            cat_codes = []
            for cat in cats:
                cat_codes += cat['codes']
            codes = [code['code'] for code in cat_codes if code['active']]
            c_in = []
            c_out = []
            for code in codes:
                if get_bool(code):
                    c_in.append(code)
                else:
                    c_out.append(code)
            current = [
                c.code for c in OrgCodes.query.filter_by(org_id=id).all()
            ]
            for code in c_in:
                if code not in current:
                    code = OrgCodes(org_id=id, code=code)
                    db.session.add(code)
            for code in c_out:
                OrgCodes.query.filter_by(org_id=id, code=code).delete()

        db.session.commit()
        if lang == 'en':
            update_translations(org)
        if not errors:
            return redirect(url_for_admin('org_preview', id=id))
    if lang != 'en':
        trans = Organisation.query.filter_by(
            org_id=org.org_id, lang='en', current=True
        ).first()
    else:
        trans = {}

    if lang == 'en':
        codes = all_codes('en', 'org')
        current = [
            c.code for c in OrgCodes.query.filter_by(org_id=id).all()
        ]
    else:
        codes = []
        current = []
    translations = get_trans(id)
    if lang != org.lang:
        org = {}
    return render_template('admin/org_edit.html', org=org, trans=trans,
                           codes=codes, current=current, errors=errors,
                           translations=translations)
Ejemplo n.º 30
0
Archivo: cms.py Proyecto: whythawk/hrd
def cms_edit(id):
    set_menu()
    lang = get_admin_lang()
    permission_content(lang)
    errors = []
    page = Cms.query.filter_by(page_id=id, lang=lang, current=True)
    page = page.first()
    if not page and lang != 'en':
        page = Cms.query.filter_by(page_id=id, lang='en', current=True)
        page = page.first()
        if not page:
            abort(404)
    if not page:
        abort(404)
    if request.method == 'POST' and 'title' in request.form:
        if page.lang != lang:
            # no translation
            page = page_reedit(page)

        if (page.title != get_str('title')
                or page.content != get_str('content')):
            if page.status == 'publish':
                page = page_reedit(page)

            page.title = get_str('title')
            page.content = get_str('content')
            page.status = 'edit'
            trans_need_update(page)
        if lang == 'en':
            page.active = get_bool('active')
            page.private = get_bool('private')

            url = get_str('url')
            if url:
                check = Cms.query.filter(Cms.page_id != id, Cms.url == url)
                check = check.filter(
                    db.or_(Cms.status == 'publish', Cms.current == True))
                if check.count():
                    errors.append(
                        'The url is already used by another page choose ' + \
                        'a new url or change the url of the existing page ' + \
                        'first. The url has been reset in this form.'
                    )
                elif url in config.DISALLOWED_URLS:
                    errors.append(
                        'The url provided is not allowed please choose ' + \
                        'a new one. The url has been reset in this form.'
                    )
                else:
                    page.url = url

            if get_bool('logo_remove'):
                page.image = None

            logo = request.files['logo']
            if logo:
                extension = os.path.splitext(logo.filename)[1]
                if extension and extension.lower(
                ) in config.ALLOWED_IMAGE_TYPES:
                    filename = unicode(uuid.uuid4())
                    filename += extension
                    logo.save(
                        os.path.join(app.config['UPLOAD_FOLDER'], filename))
                    page.image = filename
                else:
                    errors.append(
                        'The image uploaded is not of an allowed type')

        db.session.add(page)
        db.session.commit()
        if lang == 'en':
            update_translations(page)
        if not errors:
            return redirect(url_for_admin('cms_preview', id=id))
    if lang != 'en':
        trans = Cms.query.filter_by(page_id=id, lang='en',
                                    current=True).first()
    else:
        trans = {}
    if lang != page.lang:
        page = {}
    translations = get_trans(id)
    return render_template('admin/cms_edit.html',
                           page=page,
                           trans=trans,
                           translations=translations,
                           errors=errors)
Ejemplo n.º 31
0
Archivo: cms.py Proyecto: rrymrrsn/hrd
def cms_edit(id):
    set_menu()
    lang = get_admin_lang()
    permission_content(lang)
    errors = []
    page = Cms.query.filter_by(page_id=id, lang=lang, current=True)
    page = page.first()
    if not page and lang != 'en':
        page = Cms.query.filter_by(page_id=id, lang='en', current=True)
        page = page.first()
        if not page:
            abort(404)
    if not page:
        abort(404)
    if request.method == 'POST' and 'title' in request.form:
        if page.lang != lang:
            # no translation
            page = page_reedit(page)

        if (page.title != get_str('title')
                or page.content != get_str('content')):
            if page.status == 'publish':
                page = page_reedit(page)

            page.title = get_str('title')
            page.content = get_str('content')
            page.status = 'edit'
            trans_need_update(page)
        if lang == 'en':
            page.active = get_bool('active')
            page.private = get_bool('private')

            url = get_str('url')
            if url:
                check = Cms.query.filter(Cms.page_id != id, Cms.url == url)
                check = check.filter(db.or_(
                    Cms.status == 'publish', Cms.current == True
                ))
                if check.count():
                    errors.append(
                        'The url is already used by another page choose ' + \
                        'a new url or change the url of the existing page ' + \
                        'first. The url has been reset in this form.'
                    )
                elif url in config.DISALLOWED_URLS:
                    errors.append(
                        'The url provided is not allowed please choose ' + \
                        'a new one. The url has been reset in this form.'
                    )
                else:
                    page.url = url

            if get_bool('logo_remove'):
                page.image = None

            logo = request.files['logo']
            if logo:
                extension = os.path.splitext(logo.filename)[1]
                if extension and extension.lower() in config.ALLOWED_IMAGE_TYPES:
                    filename = unicode(uuid.uuid4())
                    filename += extension
                    logo.save(
                        os.path.join(app.config['UPLOAD_FOLDER'], filename)
                    )
                    page.image = filename
                else:
                    errors.append(
                        'The image uploaded is not of an allowed type'
                    )

        db.session.add(page)
        db.session.commit()
        if lang == 'en':
            update_translations(page)
        if not errors:
            return redirect(url_for_admin('cms_preview', id=id))
    if lang != 'en':
        trans = Cms.query.filter_by(page_id=id, lang='en',
                                    current=True).first()
    else:
        trans = {}
    if lang != page.lang:
        page = {}
    translations = get_trans(id)
    return render_template('admin/cms_edit.html', page=page, trans=trans,
                           translations=translations, errors=errors)