def test_wash_dashed_language(self): """messages - washing dashed language code (fr-ca)""" if 'fr' not in cfg['CFG_SITE_LANGS']: self.assertEqual(messages.wash_language('fr-ca'), cfg['CFG_SITE_LANG']) else: self.assertEqual(messages.wash_language('fr-ca'), 'fr')
def format_elements_doc(req, ln=CFG_SITE_LANG): """ Main page for format elements documentation. Check for authentication and print format elements list. @param req: the request object @param ln: language @return: a web page """ ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = bibformatadminlib.getnavtrail() try: uid = getUid(req) except: return error_page('Error', req) (auth_code, auth_msg) = check_user(req, 'cfgbibformat') if not auth_code: return page(title=_("Format Elements Documentation"), body=bibformatadminlib.perform_request_format_elements_documentation(ln=ln), uid=uid, language=ln, navtrail = navtrail_previous_links, lastupdated=__lastupdated__, req=req) else: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links)
def output_formats_manage(req, ln=CFG_SITE_LANG, sortby="code"): """ Main page for output formats management. Check for authentication and print output formats list. @param req: the request object @param ln: language @param sortby: the sorting crieteria (can be 'code' or 'name') @return: a web page """ ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = bibformatadminlib.getnavtrail() try: uid = getUid(req) except: return error_page('Error', req) (auth_code, auth_msg) = check_user(req, 'cfgbibformat') if not auth_code: sortby = wash_url_argument(sortby, 'str') return page(title=_("Manage Output Formats"), body=bibformatadminlib.perform_request_output_formats_management(ln=ln, sortby=sortby), uid=uid, language=ln, navtrail = navtrail_previous_links, lastupdated=__lastupdated__, req=req) else: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links)
def format_template_show_dependencies(req, bft, ln=CFG_SITE_LANG): """ Show the dependencies (on elements) of the given format. @param req: the request object @param ln: language @param bft: the filename of the template to show @return: a web page """ ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = bibformatadminlib.getnavtrail(''' > <a class="navtrail" href="%s/admin/bibformat/bibformatadmin.py/format_templates_manage?ln=%s">%s</a>''' % (CFG_SITE_SECURE_URL, ln, _("Manage Format Templates"))) try: uid = getUid(req) except: return error_page('Error', req) (auth_code, auth_msg) = check_user(req, 'cfgbibformat') if not auth_code: format_template = wash_url_argument(bft, 'str') format_name = bibformat_engine.get_format_template_attrs(bft)['name'] return page(title=_("Format Template %(x_name)s Dependencies", x_name=format_name), body=bibformatadminlib.perform_request_format_template_show_dependencies(bft, ln=ln), uid=uid, language=ln, navtrail = navtrail_previous_links, lastupdated=__lastupdated__, req=req) else: return page_not_authorized(req=req, text=auth_msg)
def format_templates_manage(req, ln=CFG_SITE_LANG, checking='0'): """ Main page for formats templates management. Check for authentication and print formats list. @param req: the request object @param ln: language @param checking: if 0, basic checking. Else perform extensive checking (time-consuming) @return: a web page """ ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = bibformatadminlib.getnavtrail() try: uid = getUid(req) except: return error_page('Error', req) (auth_code, auth_msg) = check_user(req, 'cfgbibformat') if not auth_code: checking_level = wash_url_argument(checking, 'int') return page(title=_("Manage Format Templates"), body=bibformatadminlib.perform_request_format_templates_management(ln=ln, checking=checking_level), uid=uid, language=ln, navtrail = navtrail_previous_links, lastupdated=__lastupdated__, req=req) else: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links)
def output_format_add(req, ln=CFG_SITE_LANG): """ Adds a new output format @param req: the request object @param ln: language @return: a web page (or redirection to a web page) """ ln = wash_language(ln) _ = gettext_set_language(ln) try: uid = getUid(req) except: return error_page('Error', req) (auth_code, auth_msg) = check_user(req, 'cfgbibformat') if not auth_code: bfo = bibformatadminlib.add_output_format() if bfo == None: return page(title=_("Cannot create output format"), body = """BibFormat cannot add an output format. Check output formats directory permissions.""", language=ln, lastupdated=__lastupdated__, req=req) redirect_to_url(req, "output_format_show_attributes?ln=%(ln)s&bfo=%(bfo)s" % {'ln':ln, 'bfo':bfo}) else: return page_not_authorized(req=req, text=auth_msg)
def moderatelist(req, url, action, listtype=None, ln=CFG_SITE_LANG): """ Add URL to list @param url: url @param listType: of CFG_WEBLINKBACK_LIST_TYPE """ ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = get_navtrail() navtrail_previous_links += ' > <a class="navtrail" href="%s/admin/weblinkback/weblinkbackadmin.py/">' % CFG_SITE_URL navtrail_previous_links += _("WebLinkback Admin") + '</a>' user_info = collect_user_info(req) (auth_code, auth_msg) = acc_authorize_action(user_info, 'cfgweblinkback') if auth_code: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links) else: url_field_value, return_code = perform_moderate_url(req=req, url=url, action=action, list_type=listtype) return lists(req=req, urlfieldvalue=url_field_value, returncode=return_code, ln=ln)
def lists(req, urlfieldvalue='', returncode=CFG_WEBLINKBACK_ACTION_RETURN_CODE['OK'], ln=CFG_SITE_LANG): """ Display whitelist and blacklist @param urlFieldValue: value of the url input field @return_code: might indicate errors from a previous action, of CFG_WEBLINKBACK_ACTION_RETURN_CODE @param ln: language """ # is passed as a string, must be an integer return_code = int(returncode) ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = get_navtrail() navtrail_previous_links += ' > <a class="navtrail" href="%s/admin/weblinkback/weblinkbackadmin.py/">' % CFG_SITE_URL navtrail_previous_links += _("WebLinkback Admin") + '</a>' uid = getUid(req) userInfo = collect_user_info(req) (auth_code, auth_msg) = acc_authorize_action(userInfo, 'cfgweblinkback') if auth_code: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links) else: return page(title=_("Linkback Whitelist/Blacklist Manager"), body=perform_request_display_list( return_code=return_code, url_field_value=urlfieldvalue, ln=ln), uid=uid, language=ln, navtrail=navtrail_previous_links, req=req)
def index(req, ln=CFG_SITE_LANG): """ Menu of admin options @param ln: language """ ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = get_navtrail() navtrail_previous_links += ' > <a class="navtrail" href="%s/admin/weblinkback/weblinkbackadmin.py/">' % CFG_SITE_URL navtrail_previous_links += _("WebLinkback Admin") + '</a>' uid = getUid(req) user_info = collect_user_info(req) (auth_code, auth_msg) = acc_authorize_action(user_info, 'cfgweblinkback') if auth_code: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links) else: return page(title=_("WebLinkback Admin"), body=perform_request_index(ln=ln), uid=uid, language=ln, navtrail=navtrail_previous_links, req=req)
def moderatelinkback(req, action, linkbackid, ln=CFG_SITE_LANG): """ Moderate linkbacks @param linkbackId: linkback id @param action: of CFG_WEBLINKBACK_ADMIN_MODERATION_ACTION """ ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = get_navtrail() navtrail_previous_links += ' > <a class="navtrail" href="%s/admin/weblinkback/weblinkbackadmin.py/">' % CFG_SITE_URL navtrail_previous_links += _("WebLinkback Admin") + '</a>' user_info = collect_user_info(req) (auth_code, auth_msg) = acc_authorize_action(user_info, 'cfgweblinkback') if auth_code: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links) else: return_code = perform_moderate_linkback(req=req, linkbackid=linkbackid, action=action) return linkbacks(req=req, status=CFG_WEBLINKBACK_STATUS['PENDING'], returncode=return_code, ln=ln)
def linkbacks(req, status, returncode=CFG_WEBLINKBACK_ACTION_RETURN_CODE['OK'], ln=CFG_SITE_LANG): """ Display linkbacks @param ln: language @param status: of CFG_WEBLINKBACK_STATUS, currently only CFG_WEBLINKBACK_STATUS['PENDING'] is supported """ return_code = int(returncode) ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = get_navtrail() navtrail_previous_links += ' > <a class="navtrail" href="%s/admin/weblinkback/weblinkbackadmin.py/">' % CFG_SITE_URL navtrail_previous_links += _("WebLinkback Admin") + '</a>' uid = getUid(req) user_info = collect_user_info(req) (auth_code, auth_msg) = acc_authorize_action(user_info, 'cfgweblinkback') if auth_code: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links) else: return page(title=_("Pending Linkbacks"), body=perform_request_display_linkbacks( return_code=return_code, status=status, ln=ln), uid=uid, language=ln, navtrail=navtrail_previous_links, req=req)
def format_element_show_dependencies(req, bfe, ln=CFG_SITE_LANG): """ Shows format element dependencies @param req: the request object @param req: the request object @param bfe: the name of the bfe to show @param ln: language @return: a web page """ ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = bibformatadminlib.getnavtrail(''' > <a class="navtrail" href="%s/admin/bibformat/bibformatadmin.py/format_elements_doc?ln=%s">%s</a>''' % (CFG_SITE_SECURE_URL, ln , _("Format Elements Documentation"))) try: uid = getUid(req) except: return error_page('Error', req) (auth_code, auth_msg) = check_user(req, 'cfgbibformat') if not auth_code: bfe = wash_url_argument(bfe, 'str') return page(title=_("Format Element %(x_name)s Dependencies", x_name=bfe), body=bibformatadminlib.perform_request_format_element_show_dependencies(bfe=bfe, ln=ln), uid=uid, language=ln, navtrail = navtrail_previous_links, lastupdated=__lastupdated__, req=req) else: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links)
def jscheckedit(req, chname, chdesc=None, chcommit="", ln=CFG_SITE_LANG): """Display the details of a WebSubmit checking function in a Web form so that it can be viewed and/or edited. @param chname: The unique Check name/identifier code. @param chdesc: The description of the Check (if present, Check will be updated, else Check details will be displayed) @param ln: language @return: page """ ln = wash_language(ln) _ = gettext_set_language(ln) uid = getUid(req) (auth_code, auth_msg) = check_user(req, 'cfgwebsubmit') if not auth_code: ## user is authorised to use WebSubmit Admin: # Generate content (title, body) = perform_request_edit_jscheck(chname, chdesc, chcommit) return page(title = title, body = body, navtrail = get_navtrail(ln), uid = uid, lastupdated = __lastupdated__, req = req, language = ln) else: ## user is not authorised to use WebSubmit Admin: return page_not_authorized(req=req, text=auth_msg, navtrail=get_navtrail(ln))
def format_records(records, of='hb', ln=None, **ctx): """Return records using Jinja template.""" from flask import request from invenio.base.i18n import wash_language from .registry import export_formats of = of.lower() jrec = request.values.get('jrec', ctx.get('jrec', 1), type=int) rg = request.values.get('rg', ctx.get('rg', 10), type=int) ln = ln or wash_language(request.values.get('ln', cfg['CFG_SITE_LANG'])) ot = (request.values.get('ot', ctx.get('ot')) or '').split(',') if jrec > records: jrec = rg * (records // rg) + 1 context = dict( of=of, jrec=jrec, rg=rg, ln=ln, ot=ot, facets={}, time=time, records=records, export_formats=export_formats, format_record=format_record, **TEMPLATE_CONTEXT_FUNCTIONS_CACHE.template_context_functions ) context.update(ctx) return render_template_to_string( ['format/records/%s.tpl' % of, 'format/records/%s.tpl' % of[0], 'format/records/%s.tpl' % get_output_format_content_type(of). replace('/', '_')], **context)
def doctypeadd(req, doctype=None, doctypename=None, doctypedescr=None, clonefrom=None, doctypedetailscommit="", ln=CFG_SITE_LANG): """Add a new document type to WebSubmit""" ln = wash_language(ln) _ = gettext_set_language(ln) uid = getUid(req) (auth_code, auth_msg) = check_user(req, 'cfgwebsubmit') if not auth_code: ## user is authorised to use WebSubmit Admin: (title, body) = perform_request_add_doctype(doctype=doctype, doctypename=doctypename, doctypedescr=doctypedescr, clonefrom=clonefrom, doctypedetailscommit=doctypedetailscommit ) return page(title = title, body = body, navtrail = get_navtrail(ln), uid = uid, lastupdated = __lastupdated__, req = req, language = ln) else: ## user is not authorised to use WebSubmit Admin: return page_not_authorized(req=req, text=auth_msg, navtrail=get_navtrail(ln))
def users(req, ln=CFG_SITE_LANG): """ View a list of all the users that have been reported, sorted by most reported @param req: request object to obtain user information @param ln: language """ ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = getnavtrail() navtrail_previous_links += ' > <a class="navtrail" href="%s/admin/webcomment/webcommentadmin.py/">' % CFG_SITE_URL navtrail_previous_links += _("WebComment Admin") + '</a>' try: uid = getUid(req) except Error: return page(title=_("Internal Error"), body = create_error_box(req, verbose=0, ln=ln), description="%s - Internal Error" % CFG_SITE_NAME, keywords="%s, Internal Error" % CFG_SITE_NAME, language=ln, req=req) (auth_code, auth_msg) = check_user(req,'cfgwebcomment') if (auth_code != 'false'): return page(title=_("View all reported users"), body=perform_request_users(ln=ln), uid=uid, language=ln, navtrail = navtrail_previous_links, lastupdated=__lastupdated__, req=req) else: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links)
def doctypeconfiguresubmissionpagespreview(req, doctype="", action="", pagenum="", ln=CFG_SITE_LANG): ln = wash_language(ln) _ = gettext_set_language(ln) uid = getUid(req) (auth_code, auth_msg) = check_user(req, 'cfgwebsubmit') if not auth_code: ## user is authorised to use WebSubmit Admin: (title, body) = perform_request_configure_doctype_submissionpage_preview(doctype=doctype, action=action, pagenum=pagenum) return page(title = title, body = body, navtrail = get_navtrail(ln), uid = uid, lastupdated = __lastupdated__, req = req, language = ln) else: ## user is not authorised to use WebSubmit Admin: return page_not_authorized(req=req, text=auth_msg, navtrail=get_navtrail(ln))
def linkbacks(req, status, returncode=CFG_WEBLINKBACK_ACTION_RETURN_CODE['OK'], ln=CFG_SITE_LANG): """ Display linkbacks @param ln: language @param status: of CFG_WEBLINKBACK_STATUS, currently only CFG_WEBLINKBACK_STATUS['PENDING'] is supported """ return_code = int(returncode) ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = get_navtrail() navtrail_previous_links +=' > <a class="navtrail" href="%s/admin/weblinkback/weblinkbackadmin.py/">' % CFG_SITE_URL navtrail_previous_links += _("WebLinkback Admin") + '</a>' uid = getUid(req) user_info = collect_user_info(req) (auth_code, auth_msg) = acc_authorize_action(user_info, 'cfgweblinkback') if auth_code: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links) else: return page(title=_("Pending Linkbacks"), body=perform_request_display_linkbacks(return_code=return_code, status=status, ln=ln), uid=uid, language=ln, navtrail = navtrail_previous_links, req=req)
def index(req, ln=CFG_SITE_LANG): """ Menu of admin options @param ln: language """ ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = getnavtrail() navtrail_previous_links +=' > <a class="navtrail" href="%s/admin/webcomment/webcommentadmin.py/">' % CFG_SITE_URL navtrail_previous_links += _("WebComment Admin") + '</a>' try: uid = getUid(req) except Error: return page(title=_("Internal Error"), body = create_error_box(req, verbose=0, ln=ln), description="%s - Internal Error" % CFG_SITE_NAME, keywords="%s, Internal Error" % CFG_SITE_NAME, language=ln, req=req) (auth_code, auth_msg) = check_user(req, 'cfgwebcomment') if (auth_code != 'false'): return page(title=_("WebComment Admin"), body=perform_request_index(ln=ln), uid=uid, language=ln, navtrail = navtrail_previous_links, lastupdated=__lastupdated__, req=req) else: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links)
def kb_delete(req, kb, ln=CFG_SITE_LANG, chosen_option=""): """ Deletes an existing kb @param kb the kb id to delete """ ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = """ > <a class="navtrail" href="%s/kb?ln=%s">%s</a> > %s""" % ( CFG_SITE_SECURE_URL, ln, _("Manage Knowledge Bases"), _("Delete Knowledge Base"), ) try: dummy = getUid(req) except: return error_page("Error", req) (auth_code, auth_msg) = check_user(req, "cfgbibknowledge") if not auth_code: kb_id = wash_url_argument(kb, "int") kb_name = bibknowledge.get_kb_name(kb_id) if kb_name is None: return page( title=_("Unknown Knowledge Base"), body="", language=ln, navtrail=navtrail_previous_links, errors=[("ERR_KB_ID_UNKNOWN", kb)], lastupdated=__lastupdated__, req=req, ) # Ask confirmation to user if not already done chosen_option = wash_url_argument(chosen_option, "str") if chosen_option == "": return dialog_box( req=req, ln=ln, title="Delete %s" % kb_name, message="""Are you sure you want to delete knowledge base <i>%s</i>?""" % kb_name, navtrail=navtrail_previous_links, options=[_("Cancel"), _("Delete")], ) elif chosen_option == _("Delete"): bibknowledge.delete_kb(kb_name) redirect_to_url(req, "kb?ln=%(ln)s" % {"ln": ln}) else: navtrail_previous_links = """ > <a class="navtrail" href="%s/kb">%s</a>""" % ( CFG_SITE_SECURE_URL, _("Manage Knowledge Bases"), ) return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links)
def kb_add(req, ln=CFG_SITE_LANG, sortby="to", kbtype=""): """ Adds a new kb @param req the request @param ln language @param sortby to or from @param kbtype type of knowledge base. one of: "", taxonomy, dynamic """ ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = ''' > <a class="navtrail" href="%s/kb?ln=%s">%s</a>''' % (CFG_SITE_SECURE_URL, ln, _("Manage Knowledge Bases")) try: dummy = getUid(req) except: return error_page('Error', req) (auth_code, auth_msg) = check_user(req, 'cfgbibknowledge') if not auth_code: name = "Untitled" if kbtype == "taxonomy": name = "Untitled Taxonomy" if kbtype == "dynamic": name = "Untitled dynamic" kb_id = bibknowledge.add_kb(kb_name=name, kb_type=kbtype) redirect_to_url(req, "kb?ln=%(ln)s&action=attributes&kb=%(kb)s" % {'ln':ln, 'kb':kb_id, 'sortby':sortby}) else: navtrail_previous_links = ''' > <a class="navtrail" href="%s/kb?ln=%s">%s</a>''' % (CFG_SITE_SECURE_URL, ln, _("Manage Knowledge Bases")) return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links)
def functionusage(req, funcname, ln=CFG_SITE_LANG): """View the usage cases (document-type and actions) in which a function is used. @param function: the function name @param ln: the language @return: a web page """ ln = wash_language(ln) _ = gettext_set_language(ln) uid = getUid(req) (auth_code, auth_msg) = check_user(req, 'cfgwebsubmit') if not auth_code: ## user is authorised to use WebSubmit Admin: body = perform_request_function_usage(funcname) return page(title = "WebSubmit Function Usage", body = body, navtrail = get_navtrail(ln), uid = uid, lastupdated = __lastupdated__, req = req, language = ln) else: ## user is not authorised to use WebSubmit Admin: return page_not_authorized(req=req, text=auth_msg, navtrail=get_navtrail(ln))
def perform_request_users(ln=CFG_SITE_LANG): """ """ ln = wash_language(ln) users_data = query_get_users_reported() return webcomment_templates.tmpl_admin_users(ln=ln, users_data=users_data)
def hot(req, ln=CFG_SITE_LANG, comments=1, top=10, collection=""): """ View most active comments/reviews @param req: request object to obtain user information @param ln: language @param comments: boolean enabled for comments, disabled for reviews @param top: number of results to be shown @param collection: filter results by collection """ ln = wash_language(ln) collection = wash_url_argument(collection, 'str') _ = gettext_set_language(ln) navtrail_previous_links = getnavtrail() navtrail_previous_links += ' > <a class="navtrail" href="%s/admin/webcomment/webcommentadmin.py/">' % CFG_SITE_URL navtrail_previous_links += _("WebComment Admin") + '</a>' user_info = collect_user_info(req) (auth_code, auth_msg) = acc_authorize_action(user_info, 'cfgwebcomment') if auth_code: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links) return page(title=(comments == '0' and _("View most reviewed records") or _("View most commented records")), body=perform_request_hot(req, ln=ln, comments=comments, top=top, collection=collection), uid=user_info['uid'], language=ln, navtrail=navtrail_previous_links, lastupdated=__lastupdated__, req=req)
def index(req, c=CFG_SITE_NAME, ln=CFG_SITE_LANG): """Approval web Interface. GET params: """ uid = getUid(req) (auth_code, auth_message) = acc_authorize_action(uid, 'submit') if auth_code > 0 or CFG_ACCESS_CONTROL_LEVEL_SITE >= 1: return page_not_authorized(req, "../approve.py/index", navmenuid='yourapprovals', text=auth_message) ln = wash_language(ln) _ = gettext_set_language(ln) args = wash_urlargd(req.form, {'access': (str, '')}) if args['access'] == "": return warning_page( _("approve.py: cannot determine document reference"), req, ln) url_params = get_approval_url_parameters(args['access']) if not url_params: return warning_page(_("approve.py: cannot find document in database"), req, ln) url_params['ln'] = ln url = "%s/submit/direct?%s" % (CFG_SITE_SECURE_URL, urllib.urlencode(url_params)) redirect_to_url(req, url)
def edit(req, ln=CFG_SITE_LANG, fname=""): """ creates an editor for the file. This is called also when the user wants to create a new file. In the case fname is empty""" ln = wash_language(ln) _ = gettext_set_language(ln) # sanity check for fname: fname = os.path.basename(fname) #check auth (admin_ok, uid) = is_admin(req) navtrail = """<a class="navtrail" href="%s/help/admin">%s</a>""" % \ (CFG_SITE_SECURE_URL, _("Admin Area")) navtrail += """> <a class="navtrail" href="%s/admin/bibcheck/bibcheckadmin.py/">BibCheck Admin</a> """ % CFG_SITE_SECURE_URL myout = _("File")+" " + cgi.escape(fname) + "<br/>" if admin_ok: #add a javascript checker so that the user cannot save a form with empty #fname myout += """<script language="JavaScript" type="text/javascript"> <!-- function checkform ( form ) { if (form.fname.value == "") { alert( "Missing filename." ); form.fname.focus(); return false ; } return true ; } --> </script>""" #read the file if there is one filelines = [] if fname: myfile = CFG_ETCDIR+"/bibcheck/"+fname infile = file(myfile, 'r') filelines = infile.readlines() infile.close() myout += '<form method="post" action="save" onsubmit="return checkform(this);">' #create a filename dialog box if there is no fname, otherwise it's hidden if fname: myout += '<input type="hidden" name="fname" value="'+fname+'">' else: myout += '<input name="fname" value="'+fname+'"><br/>' myout += '<input type="hidden" name="wasnew" value="1">' myout += '<input type="hidden" name="ln" value="'+ln+'">' myout += '<textarea name="code" id="code" rows="25" style="width:100%">' for line in filelines: myout += line #create a save button myout += '</textarea><br/><input type="submit" name="save" value="'+_("Save Changes")+'"></form>' #create page return page(title=_("Edit BibCheck config file"), body= myout, language= ln, uid=uid, navtrail = navtrail, lastupdated=__lastupdated__, req=req, warnings=[]) else: #not admin return page_not_authorized(req=req, text=_("Not authorized"), navtrail=navtrail)
def issue_control(req, journal_name="", issue=[], ln=CFG_SITE_LANG, action="cfg"): """ Page that allows full control over creating, backtracing, adding to, removing from issues. """ navtrail_previous_links = wjn.getnavtrail( ' > <a class="navtrail" href="%s/admin/webjournal/webjournaladmin.py">WebJournal Admin</a> > <a class="navtrail" href="%s/admin/webjournal/webjournaladmin.py/administrate?journal_name=%s">%s</a>' % (CFG_SITE_URL, CFG_SITE_URL, journal_name, journal_name)) ln = wash_language(ln) _ = gettext_set_language(ln) try: uid = getUid(req) except: return error_page('Error', req) try: journal_name = wash_journal_name(ln, journal_name) action = wash_url_argument(action, 'str') issue = wash_url_argument(issue, 'list') issues = [wash_issue_number(ln,journal_name, _issue) \ for _issue in issue \ if _issue != "ww/YYYY"] except InvenioWebJournalNoJournalOnServerError as e: register_exception(req=req) return e.user_box() except InvenioWebJournalNoNameError as e: register_exception(req=req) return e.user_box() except InvenioWebJournalNoCurrentIssueError as e: register_exception(req=req) return e.user_box() except InvenioWebJournalIssueNumberBadlyFormedError as e: register_exception(req=req) return e.user_box() auth = acc_authorize_action(getUid(req), 'cfgwebjournal', name="%s" % journal_name, with_editor_rights='yes') if auth[0] == 0: return page(title=_("Publishing Interface"), body=wjn.perform_request_issue_control( journal_name=journal_name, issues=issues, ln=ln, action=action), uid=uid, language=ln, req=req, navtrail=navtrail_previous_links, lastupdated=__lastupdated__) else: return page_not_authorized(req=req, text=auth[1], navtrail=navtrail_previous_links)
def hot(req, ln=CFG_SITE_LANG, comments=1, top=10, collection=""): """ View most active comments/reviews @param req: request object to obtain user information @param ln: language @param comments: boolean enabled for comments, disabled for reviews @param top: number of results to be shown @param collection: filter results by collection """ ln = wash_language(ln) collection = wash_url_argument(collection, 'str') _ = gettext_set_language(ln) navtrail_previous_links = getnavtrail() navtrail_previous_links += ' > <a class="navtrail" href="%s/admin/webcomment/webcommentadmin.py/">' % CFG_SITE_URL navtrail_previous_links += _("WebComment Admin") + '</a>' user_info = collect_user_info(req) (auth_code, auth_msg) = acc_authorize_action(user_info, 'cfgwebcomment') if auth_code: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links) return page(title=(comments=='0' and _("View most reviewed records") or _("View most commented records")), body=perform_request_hot(req, ln=ln, comments=comments, top=top, collection=collection), uid=user_info['uid'], language=ln, navtrail = navtrail_previous_links, lastupdated=__lastupdated__, req=req)
def doctyperemove(req, doctype="", doctypedelete="", doctypedeleteconfirm="", ln=CFG_SITE_LANG): """Delete a WebSubmit document-type. @param doctype: the unique id of the document type to be deleted @param ln: the interface language @return: HTML page. """ ln = wash_language(ln) _ = gettext_set_language(ln) uid = getUid(req) (auth_code, auth_msg) = check_user(req, 'cfgwebsubmit') if not auth_code: ## user is authorised to use WebSubmit Admin: (title, body) = perform_request_remove_doctype(doctype=doctype, doctypedelete=doctypedelete, doctypedeleteconfirm=doctypedeleteconfirm) return page(title = title, body = body, navtrail = get_navtrail(ln), uid = uid, lastupdated = __lastupdated__, req = req, language = ln) else: ## user is not authorised to use WebSubmit Admin: return page_not_authorized(req=req, text=auth_msg, navtrail=get_navtrail(ln))
def functionedit(req, funcname=None, funcdescr=None, funceditaddparam=None, funceditaddparamfree=None, \ funceditdelparam=None, funcdescreditcommit="", funcparamdelcommit="", funcparamaddcommit="", ln=CFG_SITE_LANG): """Edit a WebSubmit function""" ln = wash_language(ln) _ = gettext_set_language(ln) uid = getUid(req) (auth_code, auth_msg) = check_user(req, 'cfgwebsubmit') if not auth_code: ## user is authorised to use WebSubmit Admin: # Generate content (title, body) = perform_request_edit_function(funcname=funcname, funcdescr=funcdescr, funceditdelparam=funceditdelparam, funceditaddparam=funceditaddparam, funceditaddparamfree=funceditaddparamfree, funcdescreditcommit=funcdescreditcommit, funcparamdelcommit=funcparamdelcommit, funcparamaddcommit=funcparamaddcommit ) return page(title = title, body = body, navtrail = get_navtrail(ln), uid = uid, lastupdated = __lastupdated__, req = req, language = ln) else: ## user is not authorised to use WebSubmit Admin: return page_not_authorized(req=req, text=auth_msg, navtrail=get_navtrail(ln))
def index(req, ln=CFG_SITE_LANG): """ Menu of admin options @param ln: language """ ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = getnavtrail() navtrail_previous_links += ' > <a class="navtrail" href="%s/admin/webcomment/webcommentadmin.py/">' % CFG_SITE_URL navtrail_previous_links += _("WebComment Admin") + '</a>' try: uid = getUid(req) except Error: return page(title=_("Internal Error"), body=create_error_box(req, verbose=0, ln=ln), description="%s - Internal Error" % CFG_SITE_NAME, keywords="%s, Internal Error" % CFG_SITE_NAME, language=ln, req=req) (auth_code, auth_msg) = check_user(req, 'cfgwebcomment') if (auth_code != 'false'): return page(title=_("WebComment Admin"), body=perform_request_index(ln=ln), uid=uid, language=ln, navtrail=navtrail_previous_links, lastupdated=__lastupdated__, req=req) else: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links)
def lists(req, urlfieldvalue='', returncode=CFG_WEBLINKBACK_ACTION_RETURN_CODE['OK'], ln=CFG_SITE_LANG): """ Display whitelist and blacklist @param urlFieldValue: value of the url input field @return_code: might indicate errors from a previous action, of CFG_WEBLINKBACK_ACTION_RETURN_CODE @param ln: language """ # is passed as a string, must be an integer return_code = int(returncode) ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = get_navtrail() navtrail_previous_links +=' > <a class="navtrail" href="%s/admin/weblinkback/weblinkbackadmin.py/">' % CFG_SITE_URL navtrail_previous_links += _("WebLinkback Admin") + '</a>' uid = getUid(req) userInfo = collect_user_info(req) (auth_code, auth_msg) = acc_authorize_action(userInfo, 'cfgweblinkback') if auth_code: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links) else: return page(title=_("Linkback Whitelist/Blacklist Manager"), body=perform_request_display_list(return_code=return_code, url_field_value=urlfieldvalue, ln=ln), uid=uid, language=ln, navtrail = navtrail_previous_links, req=req)
def jscheckadd(req, chname=None, chdesc=None, chcommit="", ln=CFG_SITE_LANG): """Add a new JavaScript CHECK to the WebSubmit database. Web form for action details will be displayed if "actid" and "actname" are empty; else new action will be committed to WebSubmit. @param chname: unique name/ID for new check (if empty, Web form will be displayed) @param chdesc: description of new JS check (the JavaScript code that is the check.) (If empty, Web form will be displayed) @param ln: language @return: page """ ln = wash_language(ln) _ = gettext_set_language(ln) uid = getUid(req) (auth_code, auth_msg) = check_user(req, 'cfgwebsubmit') if not auth_code: ## user is authorised to use WebSubmit Admin: # Generate content (title, body) = perform_request_add_jscheck(chname, chdesc, chcommit) return page(title = title, body = body, navtrail = get_navtrail(ln), uid = uid, lastupdated = __lastupdated__, req = req, language = ln) else: ## user is not authorised to use WebSubmit Admin: return page_not_authorized(req=req, text=auth_msg, navtrail=get_navtrail(ln))
def actionedit(req, actid, actname=None, working_dir=None, status_text=None, actcommit="", ln=CFG_SITE_LANG): """Display the details of a WebSubmit action in a Web form so that it can be viewed and/or edited. @param actid: The unique action identifier code. @param actname: name of action (if present, action will be updated, else action details will be displayed) @param working_dir: action working directory for websubmit @param status_text: status text displayed at end of websubmit action @param ln: language @return: page """ ln = wash_language(ln) _ = gettext_set_language(ln) uid = getUid(req) (auth_code, auth_msg) = check_user(req, 'cfgwebsubmit') if not auth_code: ## user is authorised to use WebSubmit Admin: # Generate content (title, body) = perform_request_edit_action(actid, actname, working_dir, status_text, actcommit) return page(title = title, body = body, navtrail = get_navtrail(ln), uid = uid, lastupdated = __lastupdated__, req = req, language = ln) else: ## user is not authorised to use WebSubmit Admin: return page_not_authorized(req=req, text=auth_msg, navtrail=get_navtrail(ln))
def actionadd(req, actid=None, actname=None, working_dir=None, status_text=None, actcommit="", ln=CFG_SITE_LANG): """Add a new action to the WebSubmit database. Web form for action details will be displayed if "actid" and "actname" are empty; else new action will be committed to websubmit. @param actid: unique id for new action (if empty, Web form will be displayed) @param actname: name of new action (if empty, Web form will be displayed) @param working_dir: action working directory for WebSubmit @param status_text: status text displayed at end of WebSubmit action @param ln: language @return: page """ ln = wash_language(ln) _ = gettext_set_language(ln) uid = getUid(req) (auth_code, auth_msg) = check_user(req, 'cfgwebsubmit') if not auth_code: ## user is authorised to use WebSubmit Admin: # Generate content (title, body) = perform_request_add_action(actid, actname, working_dir, status_text, actcommit) return page(title = title, body = body, navtrail = get_navtrail(ln), uid = uid, lastupdated = __lastupdated__, req = req, language = ln) else: ## user is not authorised to use WebSubmit Admin: return page_not_authorized(req=req, text=auth_msg, navtrail=get_navtrail(ln))
def perform_request_comments(req=None, ln=CFG_SITE_LANG, uid="", comID="", recID="", reviews=0, abuse=False, collection=""): """ Display the list of comments/reviews along with information about the comment. Display the comment given by its ID, or the list of comments for the given record ID. If abuse == True, only list records reported as abuse. If comID and recID are not provided, list all comments, or all abused comments (check parameter 'abuse') """ ln = wash_language(ln) uid = wash_url_argument(uid, 'int') comID = wash_url_argument(comID, 'int') recID = wash_url_argument(recID, 'int') reviews = wash_url_argument(reviews, 'int') collection = wash_url_argument(collection, 'str') user_info = collect_user_info(req) user_collections = ['Show all'] user_collections.extend(get_user_collections(req)) if collection and collection != 'Show all': (auth_code, auth_msg) = acc_authorize_action(req, 'moderatecomments', collection=collection) if auth_code: return webcomment_templates.tmpl_admin_comments(ln=ln, uid=uid, comID=comID, recID=recID, comment_data=None, reviews=reviews, error=1, user_collections=user_collections, collection=collection) if collection: if recID or uid: comments = query_get_comments(uid, comID, recID, reviews, ln, abuse=abuse, user_collections=user_collections, collection=collection) else: comments = query_get_comments('', comID, '', reviews, ln, abuse=abuse, user_collections=user_collections, collection=collection) else: if recID or uid: comments = query_get_comments(uid, comID, recID, reviews, ln, abuse=abuse, user_collections=user_collections, collection=user_collections[0]) else: comments = query_get_comments('', comID, '', reviews, ln, abuse=abuse, user_collections=user_collections, collection=user_collections[0]) if comments: return webcomment_templates.tmpl_admin_comments(ln=ln, uid=uid, comID=comID, recID=recID, comment_data=comments, reviews=reviews, error=0, user_collections=user_collections, collection=collection) else: return webcomment_templates.tmpl_admin_comments(ln=ln, uid=uid, comID=comID, recID=recID, comment_data=comments, reviews=reviews, error=2, user_collections=user_collections, collection=collection)
def getnavtrail(previous = '', ln=CFG_SITE_LANG): """Get the navtrail""" previous = wash_url_argument(previous, 'str') ln = wash_language(ln) _ = gettext_set_language(ln) navtrail = """<a class="navtrail" href="%s/help/admin">%s</a> """ % (CFG_SITE_URL, _("Admin Area")) navtrail = navtrail + previous return navtrail
def perform_request_undel_single_com(ln=CFG_SITE_LANG, id=id): """ Mark comment referenced by id as active """ ln = wash_language(ln) id = wash_url_argument(id, 'int') return query_undel_single_comment(id)
def del_com(req, ln=CFG_SITE_LANG, action="delete", **hidden): """ private function Delete a comment @param req: request object to obtain user information @param ln: language @param **hidden: ids of comments to delete sent as individual variables comidX=on, where X is id """ ln = wash_language(ln) action = wash_url_argument(action, 'str') _ = gettext_set_language(ln) navtrail_previous_links = getnavtrail() navtrail_previous_links += ' > <a class="navtrail" href="%s/admin/webcomment/webcommentadmin.py/">' % CFG_SITE_URL navtrail_previous_links += _("WebComment Admin") + '</a>' try: uid = getUid(req) except Error: return page(title=_("Internal Error"), body=create_error_box(req, verbose=0, ln=ln), description="%s - Internal Error" % CFG_SITE_NAME, keywords="%s, Internal Error" % CFG_SITE_NAME, language=ln, req=req) (auth_code, auth_msg) = check_user(req, 'cfgwebcomment') if (auth_code != 'false'): comIDs = [] args = hidden.keys() for var in args: try: comIDs.append(int(var.split('comid')[1])) except: pass if action == 'delete': body = perform_request_del_com(ln=ln, comIDs=comIDs) title = _("Delete comments") elif action == 'unreport': body = suppress_abuse_report(ln=ln, comIDs=comIDs) title = _("Suppress abuse reports") elif action == 'undelete': body = perform_request_undel_com(ln=ln, comIDs=comIDs) title = _("Undelete comments") else: redirect_to_url( req, CFG_SITE_SECURE_URL + '/admin/webcomment/webcommentadmin.py') return page(title=title, body=body, uid=uid, language=ln, navtrail=navtrail_previous_links, lastupdated=__lastupdated__, req=req) else: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links)
def perform_request_latest(req=None, ln=CFG_SITE_LANG, comments=1, top=10, collection=""): """ Display the list of latest comments/reviews along with information about the comment. @param req: request object for obtaining user information @param ln: language @param comments: boolean activated if using comments, deactivated for reviews @param top: Specify number of results to be shown @param collection: filter by collection """ ln = wash_language(ln) comments = wash_url_argument(comments, 'int') top = wash_url_argument(top, 'int') collection = wash_url_argument(collection, 'str') user_info = collect_user_info(req) user_collections = ['Show all'] user_collections.extend(get_user_collections(req)) if collection and collection != 'Show all': (auth_code, auth_msg) = acc_authorize_action(req, 'moderatecomments', collection=collection) if auth_code: return webcomment_templates.tmpl_admin_latest( ln=ln, comment_data=None, comments=comments, error=1, user_collections=user_collections, collection=collection) if collection: comments_retrieved = query_get_latest(comments, ln, top, user_collections, collection) else: comments_retrieved = query_get_latest(comments, ln, top, user_collections, user_collections[0]) if comments_retrieved: return webcomment_templates.tmpl_admin_latest( ln=ln, comment_data=comments_retrieved, comments=comments, error=0, user_collections=user_collections, collection=collection) else: return webcomment_templates.tmpl_admin_latest( ln=ln, comment_data=comments_retrieved, comments=comments, error=2, user_collections=user_collections, collection=collection)
def __init__(self, recID, ln=CFG_SITE_LANG, search_pattern=None, xml_record=None, user_info=None, output_format=''): """ Creates a new bibformat object, with given record. You can either specify an record ID to format, or give its xml representation. if 'xml_record' is not None, use 'xml_record' instead of recID for the record. 'user_info' allows to grant access to some functionalities on a page depending on the user's priviledges. It is a dictionary in the following form:: user_info = { 'remote_ip' : '', 'remote_host' : '', 'referer' : '', 'uri' : '', 'agent' : '', 'uid' : -1, 'nickname' : '', 'email' : '', 'group' : [], 'guest' : '1' } :param recID: the id of a record :param ln: the language in which the record has to be formatted :param search_pattern: list of string representing the request used by the user in web interface :param xml_record: a xml string of the record to format :param user_info: the information of the user who will view the formatted page :param output_format: the output_format used for formatting this record """ self.xml_record = None # *Must* remain empty if recid is given if xml_record is not None: # If record is given as parameter self.xml_record = xml_record self.record = create_record(xml_record)[0] recID = record_get_field_value(self.record, "001") or None recID = int(recID) if recID is not None else recID try: assert isinstance(recID, (int, long, type(None))), 'Argument of wrong type!' except AssertionError: register_exception(prefix="recid needs to be an integer in BibFormatObject", alert_admin=True) recID = int(recID) self.recID = recID self.lang = wash_language(ln) if search_pattern is None: search_pattern = [] self.search_pattern = search_pattern self.output_format = output_format self.user_info = user_info if self.user_info is None: from invenio.ext.login.legacy_user import UserInfo self.user_info = UserInfo(None)
def perform_request_del_single_com_auth(ln=CFG_SITE_LANG, id=id): """ private function Delete a single comment requested by the author @param ln: language @param id: comment id to be deleted """ ln = wash_language(ln) id = wash_url_argument(id, 'int') return query_delete_comment_auth(id)
def perform_request_unreport_single_com(ln=CFG_SITE_LANG, id=""): """ private function Unreport a single comment @param ln: language @param id: comment id to be deleted """ ln = wash_language(ln) id = wash_url_argument(id, 'int') return query_suppress_abuse_report(id)
def kb_show(req, kb, sortby="to", ln=CFG_SITE_LANG, startat=0, search=""): """ Shows the content of the given knowledge base id. Check for authentication and kb existence. Before displaying the content of the knowledge base, check if a form was submitted asking for adding, editing or removing a value. @param ln language @param kb the kb id to show @param sortby the sorting criteria ('from' or 'to') @param startat the number from which start showing mapping rules in kb @param search search for this string in the kb """ ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = ''' > <a class="navtrail" href="%s/kb?ln=%s">%s</a>''' % (CFG_SITE_SECURE_URL, ln, _("Manage Knowledge Bases")) try: uid = getUid(req) except: return error_page('Error', req) (auth_code, auth_msg) = check_user(req, 'cfgbibknowledge') if not auth_code: kb_id = wash_url_argument(kb, 'int') kb_name = bibknowledge.get_kb_name(kb_id) if kb_name is None: return page(title=_("Unknown Knowledge Base"), body="", language=ln, navtrail=navtrail_previous_links, errors=[("ERR_KB_ID_UNKNOWN", kb)], lastupdated=__lastupdated__, req=req) return page( title=_("Knowledge Base %(x_name)s", x_name=kb_name), body=bibknowledgeadminlib.perform_request_knowledge_base_show( ln=ln, kb_id=kb_id, sortby=sortby, startat=startat, search_term=search), uid=uid, language=ln, navtrail=navtrail_previous_links, lastupdated=__lastupdated__, req=req) else: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links)
def main(): """ main entry point for webdoc via command line """ options = {'language':CFG_SITE_LANGS, 'verbose':1, 'mode':2} try: opts, args = getopt.getopt(sys.argv[1:], "hVv:l:m:", ["help", "version", "verbose=", "language=", "mode="]) except getopt.GetoptError as err: usage(1, err) try: for opt in opts: if opt[0] in ["-h", "--help"]: usage(0) elif opt[0] in ["-V", "--version"]: print(__revision__) sys.exit(0) elif opt[0] in ["-v", "--verbose"]: options["verbose"] = int(opt[1]) elif opt[0] in ["-l", "--language"]: options["language"] = [wash_language(lang.strip().lower()) \ for lang in opt[1].split(',') \ if lang in CFG_SITE_LANGS] elif opt[0] in ["-m", "--mode"]: options["mode"] = opt[1] except StandardError as e: usage(e) try: options["mode"] = int(options["mode"]) except ValueError: usage(1, "Mode must be an integer") if len(args) > 0: options["webdoc"] = args[0] if "webdoc" not in options: usage(0) # check if webdoc exists infos = get_webdoc_info(options["webdoc"]) if infos[0] is None: usage(1, "Could not find %s" % options["webdoc"]) update_webdoc_cache(webdoc=options["webdoc"], mode=options["mode"], verbose=options["verbose"], languages=options["language"])
def get_locale(): """Compute the language needed to return the answer to the client.""" from invenio.base.i18n import wash_language required_ln = None passed_ln = request.values.get('ln', type=str) if passed_ln: ## If ln is specified explictly as a GET or POST argument ## let's take it! required_ln = wash_language(passed_ln) if passed_ln != required_ln: ## But only if it was a valid language required_ln = None if required_ln is None and 'ln' not in session: ## If there is no language saved into the session... user_language = current_user.get('language') if user_language: ## ... and the user is logged in, we try to take it from its ## settings. required_ln = user_language else: ## Otherwise we try to guess it from its request headers for value, quality in request.accept_languages: value = str(value) ln = wash_language(value) if ln == value or ln[:2] == value[:2]: required_ln = ln break else: ## Too bad! We stick to the default :-) required_ln = current_app.config.get('CFG_SITE_LANG') elif required_ln is None: required_ln = session.get('ln') assert required_ln is not None if required_ln != session.get('ln', current_app.config.get('CFG_SITE_LANG')): session['ln'] = required_ln return required_ln
def kb_delete(req, kb, ln=CFG_SITE_LANG, chosen_option=""): """ Deletes an existing kb @param kb the kb id to delete """ ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = ''' > <a class="navtrail" href="%s/kb?ln=%s">%s</a> > %s''' % ( CFG_SITE_SECURE_URL, ln, _("Manage Knowledge Bases"), _("Delete Knowledge Base")) try: dummy = getUid(req) except: return error_page('Error', req) (auth_code, auth_msg) = check_user(req, 'cfgbibknowledge') if not auth_code: kb_id = wash_url_argument(kb, 'int') kb_name = bibknowledge.get_kb_name(kb_id) if kb_name is None: return page(title=_("Unknown Knowledge Base"), body="", language=ln, navtrail=navtrail_previous_links, errors=[("ERR_KB_ID_UNKNOWN", kb)], lastupdated=__lastupdated__, req=req) #Ask confirmation to user if not already done chosen_option = wash_url_argument(chosen_option, 'str') if chosen_option == "": return dialog_box(req=req, ln=ln, title="Delete %s" % kb_name, message="""Are you sure you want to delete knowledge base <i>%s</i>?""" % kb_name, navtrail=navtrail_previous_links, options=[_("Cancel"), _("Delete")]) elif chosen_option == _("Delete"): bibknowledge.delete_kb(kb_name) redirect_to_url(req, "kb?ln=%(ln)s" % {'ln': ln}) else: navtrail_previous_links = ''' > <a class="navtrail" href="%s/kb">%s</a>''' % ( CFG_SITE_SECURE_URL, _("Manage Knowledge Bases")) return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links)
def comments(req, ln=CFG_SITE_LANG, uid="", comid="", reviews=0, collection=""): """ View reported comments, filter by either user or a specific comment (only one given at a time) @param req: request object to obtain user information @param ln: language @param uid: user id @param comid: comment id @param reviews: boolean enabled for reviews, disabled for comments @param collection: filter results by collection """ ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = getnavtrail() navtrail_previous_links += ' > <a class="navtrail" href="%s/admin/webcomment/webcommentadmin.py/">' % CFG_SITE_URL navtrail_previous_links += _("WebComment Admin") + '</a>' try: auid = getUid(req) except Error: return page(title=_("Internal Error"), body=create_error_box(req, verbose=0, ln=ln), description="%s - Internal Error" % CFG_SITE_NAME, keywords="%s, Internal Error" % CFG_SITE_NAME, language=ln, req=req) (auth_code, auth_msg) = check_user(auid, 'cfgwebcomment') if (auth_code != 'false'): return page( title=(reviews == '0' and _("View all comments reported as abuse") or _("View all reviews reported as abuse")), body=perform_request_comments(req, ln=ln, uid=uid, comID=comid, reviews=reviews, abuse=True, collection=collection), uid=auid, language=ln, navtrail=navtrail_previous_links, lastupdated=__lastupdated__, req=req) else: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links)
def feature_record(req, journal_name="", recid="", img_url="", ln=CFG_SITE_LANG, action=""): """ Interface to feature a record. Will be saved in a flat file. """ navtrail_previous_links = wjn.getnavtrail( ' > <a class="navtrail" href="%s/admin/webjournal/webjournaladmin.py">WebJournal Admin</a> > <a class="navtrail" href="%s/admin/webjournal/webjournaladmin.py/administrate?journal_name=%s">%s</a>' % (CFG_SITE_URL, CFG_SITE_URL, journal_name, journal_name)) ln = wash_language(ln) _ = gettext_set_language(ln) try: uid = getUid(req) except: return error_page('Error', req) try: journal_name = wash_journal_name(ln, journal_name) except InvenioWebJournalNoJournalOnServerError as e: register_exception(req=req) return e.user_box() except InvenioWebJournalNoNameError as e: register_exception(req=req) return e.user_box() auth = acc_authorize_action(getUid(req), 'cfgwebjournal', name="%s" % journal_name, with_editor_rights='yes') if auth[0] == 0: return page(title=_("Feature a record"), body=wjn.perform_feature_record(ln=ln, journal_name=journal_name, recid=recid, img_url=img_url, action=action), uid=uid, language=ln, req=req, navtrail=navtrail_previous_links, lastupdated=__lastupdated__) else: return page_not_authorized(req=req, text=auth[1], navtrail=navtrail_previous_links)
def index(req, ln=CFG_SITE_LANG, journal_name=None, action=""): """ Main administration page. Lists the journals, and offers options to edit them, delete them or add new journals """ navtrail_previous_links = wjn.getnavtrail() ln = wash_language(ln) _ = gettext_set_language(ln) try: uid = getUid(req) except: return error_page('Error', req) try: journal_name = wash_journal_name(ln, journal_name) action = wash_url_argument(action, 'str') except InvenioWebJournalNoJournalOnServerError as e: # Ok, no journal. Let the admin add one... pass except InvenioWebJournalNoNameError as e: register_exception(req=req) return e.user_box() if action in ['delete', 'askDelete']: # To perform these, one must be authorized auth = acc_authorize_action(getUid(req), 'cfgwebjournal', name=journal_name, with_editor_rights='yes') else: auth = acc_authorize_action(getUid(req), 'cfgwebjournal') if auth[0] == 0: return page(title=_('WebJournal Admin'), body=wjn.perform_index(ln=ln, journal_name=journal_name, action=action, uid=getUid(req)), uid=uid, language=ln, req=req, navtrail=navtrail_previous_links, lastupdated=__lastupdated__) else: return page_not_authorized(req=req, text=auth[1], navtrail=navtrail_previous_links)
def kb_dynamic_update(req, kb_id, field, expression, collection, ln=CFG_SITE_LANG): """ Updates the configuration of a collection based KB by checking user rights and calling bibknowledgeadminlib.. @param req request @param kb_id knowledge base id @param field configured field for this dynamic kb @param expression search expression @param collection search in this collection @param ln language """ ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = ''' > <a class="navtrail" href="%s/kb?ln=%s">%s</a>''' % ( CFG_SITE_SECURE_URL, ln, _("Manage Knowledge Bases")) try: dummy = getUid(req) except: return error_page('Error', req) (auth_code, auth_msg) = check_user(req, 'cfgbibknowledge') if not auth_code: #actual config call err = bibknowledgeadminlib.perform_update_kb_config( kb_id, field, expression, collection) if err: return page(title=_("Error"), body=err, language=ln, navtrail=navtrail_previous_links, lastupdated=__lastupdated__, req=req) else: redirect_to_url( req, "kb?ln=%(ln)s&kb=%(kb_id)s" % { 'ln': ln, 'kb_id': kb_id }) else: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links)
def del_single_com_mod(req, ln=CFG_SITE_LANG, id=""): """ Allow moderator to delete a single comment @param req: request object to obtain user information @param ln: language @param id: comment id """ ln = wash_language(ln) user_info = collect_user_info(req) referer = user_info['referer'] (auth_code, auth_msg) = check_user(req, 'cfgwebcomment') if (auth_code != 'false') or check_user_is_author(user_info['uid'], id): perform_request_del_single_com_mod(ln=ln, id=id) redirect_to_url(req, referer) else: return page_not_authorized(req=req, text=auth_msg)
def unreport_com(req, ln=CFG_SITE_LANG, id=""): """ Unreport a comment @param req: request object to obtain user information @param ln: language @param id: comment id """ ln = wash_language(ln) user_info = collect_user_info(req) referer = user_info['referer'] (auth_code, auth_msg) = check_user(req, 'cfgwebcomment') if (auth_code != 'false'): perform_request_unreport_single_com(ln=ln, id=id) redirect_to_url(req, referer) else: return page_not_authorized(req=req, text=auth_msg)
def kb_show_attributes(req, kb, ln=CFG_SITE_LANG, sortby="to"): """ Shows the attributes (name, description) of a given kb @param ln language @param kb the kb id to show @param sortby the sorting criteria ('from' or 'to') """ ln = wash_language(ln) _ = gettext_set_language(ln) navtrail_previous_links = ''' > <a class="navtrail" href="%s/kb?ln=%s">%s</a>''' % ( CFG_SITE_SECURE_URL, ln, _("Manage Knowledge Bases")) try: uid = getUid(req) except: return error_page('Error', req) (auth_code, auth_msg) = check_user(req, 'cfgbibknowledge') if not auth_code: kb_id = wash_url_argument(kb, 'int') kb_name = bibknowledge.get_kb_name(kb_id) if kb_name is None: return page(title=_("Unknown Knowledge Base"), body="", language=ln, navtrail=navtrail_previous_links, errors=[("ERR_KB_ID_UNKNOWN", kb)], lastupdated=__lastupdated__, req=req) return page(title=_("Knowledge Base %(x_name)s Attributes", x_name=kb_name), body=bibknowledgeadminlib. perform_request_knowledge_base_show_attributes( ln=ln, kb_id=kb_id, sortby=sortby), uid=uid, language=ln, navtrail=navtrail_previous_links, lastupdated=__lastupdated__, req=req) else: return page_not_authorized(req=req, text=auth_msg, navtrail=navtrail_previous_links)