def org_cat_codes(lang, id): codes = all_codes(lang, 'org') current = [c.code for c in OrgCodes.query.filter_by(org_id=id).all()] out = [] for cat in codes: found = [] for code in cat['codes']: if code['code_id'] in current: found.append(code['title']) if found: out.append((cat['title'], ', '.join(found))) return out
def org_cat_codes(lang, id): codes = all_codes(lang, 'org') current = [ c.code for c in OrgCodes.query.filter_by(org_id=id).all() ] out = [] for cat in codes: found = [] for code in cat['codes']: if code['code_id'] in current: found.append(code['title']) if found: out.append((cat['title'], ', '.join(found))) return out
def org_search(): lang = request.environ['LANG'] cats = all_codes(lang, 'org') codes_list = cat_codes(lang, 'org') orgs = Organisation.query.filter_by(lang=lang, status='publish', active=True) # only show public orgs if not bool(request.user): orgs = orgs.filter_by(private=False) search_codes = set() for field, _null in request.args.items(): if field == 'Filter': continue search_codes.add(field) for codes in codes_list: union = set(codes) & search_codes if union: c = db.session.query(OrgCodes.org_id).filter( OrgCodes.code.in_(list(union))) orgs = orgs.filter(Organisation.org_id.in_(c)) orgs = orgs.order_by('name') count = orgs.count() try: page = int(request.args.get('page', 0)) except ValueError: page = 0 pages = page_num(count, config.ORG_PER_PAGE) orgs = orgs.limit(config.ORG_PER_PAGE).offset(page * config.ORG_PER_PAGE) orgs = orgs.all() return render_template('org_search.html', cats=cats, orgs=orgs, count=count, page=page, pages=pages)
def org_search(): lang = request.environ['LANG'] cats = all_codes(lang, 'org') codes_list = cat_codes(lang, 'org') orgs = Organisation.query.filter_by( lang=lang, status='publish', active=True ) # only show public orgs if not bool(request.user): orgs = orgs.filter_by(private=False) search_codes = set() for field, _null in request.args.items(): if field == 'Filter': continue search_codes.add(field) for codes in codes_list: union = set(codes) & search_codes if union: c = db.session.query(OrgCodes.org_id).filter(OrgCodes.code.in_(list(union))) orgs = orgs.filter(Organisation.org_id.in_(c)) orgs = orgs.order_by('name') count = orgs.count() try: page = int(request.args.get('page', 0)) except ValueError: page = 0 pages = page_num(count, config.ORG_PER_PAGE) orgs = orgs.limit(config.ORG_PER_PAGE).offset(page * config.ORG_PER_PAGE) orgs = orgs.all() return render_template( 'org_search.html', cats=cats, orgs=orgs, count=count, page=page, pages=pages )
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)
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)