def delete_linkbacks_on_blacklist(): """ Delete all rejected, broken and pending linkbacks whose URL on in the blacklist """ linkbacks = list(get_all_linkbacks(status=CFG_WEBLINKBACK_STATUS['PENDING'])) linkbacks.extend(list(get_all_linkbacks(status=CFG_WEBLINKBACK_STATUS['REJECTED']))) linkbacks.extend(list(get_all_linkbacks(status=CFG_WEBLINKBACK_STATUS['BROKEN']))) for linkback in linkbacks: if infix_exists_for_url_in_list(linkback[1], CFG_WEBLINKBACK_LIST_TYPE['BLACKLIST']): remove_linkback(linkback[0])
def delete_linkbacks_on_blacklist(): """ Delete all rejected, broken and pending linkbacks whose URL on in the blacklist """ linkbacks = list( get_all_linkbacks(status=CFG_WEBLINKBACK_STATUS['PENDING'])) linkbacks.extend( list(get_all_linkbacks(status=CFG_WEBLINKBACK_STATUS['REJECTED']))) linkbacks.extend( list(get_all_linkbacks(status=CFG_WEBLINKBACK_STATUS['BROKEN']))) for linkback in linkbacks: if infix_exists_for_url_in_list( linkback[1], CFG_WEBLINKBACK_LIST_TYPE['BLACKLIST']): remove_linkback(linkback[0])
def send_pending_linkbacks_notification(linkback_type): """ Send notification emails to all linkback moderators for all pending linkbacks @param linkback_type: of CFG_WEBLINKBACK_LIST_TYPE """ pending_linkbacks = get_all_linkbacks( linkback_type=CFG_WEBLINKBACK_TYPE['TRACKBACK'], status=CFG_WEBLINKBACK_STATUS['PENDING']) if pending_linkbacks: pending_count = len(pending_linkbacks) cutoff_text = '' if pending_count > CFG_WEBLINKBACK_MAX_LINKBACKS_IN_EMAIL: cutoff_text = ' (Printing only the first %s requests)' % CFG_WEBLINKBACK_MAX_LINKBACKS_IN_EMAIL content = """There are %(count)s new %(linkback_type)s requests which you should approve or reject%(cutoff)s: """ % { 'count': pending_count, 'linkback_type': linkback_type, 'cutoff': cutoff_text } for pending_linkback in pending_linkbacks[ 0:CFG_WEBLINKBACK_MAX_LINKBACKS_IN_EMAIL]: content += """ For %(recordURL)s from %(origin_url)s. """ % { 'recordURL': generate_redirect_url(pending_linkback[2]), 'origin_url': pending_linkback[1] } for email in acc_get_authorized_emails('moderatelinkbacks'): send_email(CFG_SITE_ADMIN_EMAIL, email, 'Pending ' + linkback_type + ' requests', content)
def send_pending_linkbacks_notification(linkback_type): """ Send notification emails to all linkback moderators for all pending linkbacks @param linkback_type: of CFG_WEBLINKBACK_LIST_TYPE """ pending_linkbacks = get_all_linkbacks(linkback_type=CFG_WEBLINKBACK_TYPE['TRACKBACK'], status=CFG_WEBLINKBACK_STATUS['PENDING']) if pending_linkbacks: pending_count = len(pending_linkbacks) cutoff_text = '' if pending_count > CFG_WEBLINKBACK_MAX_LINKBACKS_IN_EMAIL: cutoff_text = ' (Printing only the first %s requests)' % CFG_WEBLINKBACK_MAX_LINKBACKS_IN_EMAIL content = """There are %(count)s new %(linkback_type)s requests which you should approve or reject%(cutoff)s: """ % {'count': pending_count, 'linkback_type': linkback_type, 'cutoff': cutoff_text} for pending_linkback in pending_linkbacks[0:CFG_WEBLINKBACK_MAX_LINKBACKS_IN_EMAIL]: content += """ For %(recordURL)s from %(origin_url)s. """ % {'recordURL': generate_redirect_url(pending_linkback[2]), 'origin_url': pending_linkback[1]} for email in acc_get_authorized_emails('moderatelinkbacks'): send_email(CFG_SITE_ADMIN_EMAIL, email, 'Pending ' + linkback_type + ' requests', content)
def perform_request_display_record_linbacks(req, recid, show_admin, weblinkback_templates, ln): # pylint: disable=W0613 """ Display linkbacks of a record @param recid @param argd @param show_admin: True, False --> show admin parts to approve/reject linkbacks pending requests @param weblinkback_templates: template object reference """ out = weblinkback_templates.tmpl_linkbacks_general(recid=recid, ln=ln) if show_admin: pending_linkbacks = get_all_linkbacks(recid, CFG_WEBLINKBACK_STATUS['PENDING'], CFG_WEBLINKBACK_ORDER_BY_INSERTION_TIME['DESC']) out += weblinkback_templates.tmpl_linkbacks_admin(pending_linkbacks=pending_linkbacks, recid=recid, ln=ln) approved_linkbacks = get_all_linkbacks(recid, CFG_WEBLINKBACK_STATUS['APPROVED'], CFG_WEBLINKBACK_ORDER_BY_INSERTION_TIME['DESC']) out += weblinkback_templates.tmpl_linkbacks(approved_linkbacks=approved_linkbacks, ln=ln) return out
def perform_request_display_linkbacks(status, return_code, ln=CFG_SITE_LANG): """ Display linkbacks @param status: of CFG_WEBLINKBACK_STATUS, currently only CFG_WEBLINKBACK_STATUS['PENDING'] is supported """ _ = gettext_set_language(ln) if status == CFG_WEBLINKBACK_STATUS['PENDING']: linkbacks = get_all_linkbacks(status=status, order=CFG_WEBLINKBACK_ORDER_BY_INSERTION_TIME['DESC']) entries = [] for (linkbackid, origin_url, recid, additional_properties, linkback_type, linkback_status, insert_time) in linkbacks: # pylint: disable=W0612 moderation_prefix = '<a href="moderatelinkback?action=%%s&linkbackid=%s&ln=%s">%%s</a>' % (linkbackid, ln) entries.append((linkback_type, format_record(recID=recid, of='hs', ln=ln), '<a href="%s">%s</a>' % (cgi.escape(origin_url), cgi.escape(get_url_title(origin_url))), convert_datetext_to_dategui(str(insert_time)), moderation_prefix % (CFG_WEBLINKBACK_ADMIN_MODERATION_ACTION['APPROVE'], 'Approve') + " / " + moderation_prefix % (CFG_WEBLINKBACK_ADMIN_MODERATION_ACTION['REJECT'], 'Reject'))) header = ['Linkback type', 'Record', 'Origin', 'Submitted on', ''] error_message = "" if return_code != CFG_WEBLINKBACK_ACTION_RETURN_CODE['OK']: error_message = _("Unknown error") if return_code == CFG_WEBLINKBACK_ACTION_RETURN_CODE['INVALID_ACTION']: error_message = _("Invalid action") error_message_html = "" if error_message != "": error_message_html = "<dt><b><font color=red>" + error_message + "</font></b></dt>" + "<br>" out = """ <dl> %(error_message)s <dt>%(heading)s</dt> <dd>%(description)s</dd> </dl> """ % {'heading': _("Pending linkbacks"), 'description': _("these linkbacks are not visible to users, they must be approved or rejected."), 'error_message': error_message_html} if entries: out += tupletotable(header=header, tuple=entries, highlight_rows_p=True, alternate_row_colors_p=True) else: out += "<i>There are no %s linkbacks.</i>" % status.lower() return addadminbox('<b>%s</b>'% _("Reduce the amount of currently pending linkback requests"), [out]) else: return "<i>%s</i>" % _('Currently only pending linkbacks are supported.')
def perform_request_display_record_linbacks(req, recid, show_admin, weblinkback_templates, ln): # pylint: disable=W0613 """ Display linkbacks of a record @param recid @param argd @param show_admin: True, False --> show admin parts to approve/reject linkbacks pending requests @param weblinkback_templates: template object reference """ out = weblinkback_templates.tmpl_linkbacks_general(recid=recid, ln=ln) if show_admin: pending_linkbacks = get_all_linkbacks( recid, CFG_WEBLINKBACK_STATUS['PENDING'], CFG_WEBLINKBACK_ORDER_BY_INSERTION_TIME['DESC']) out += weblinkback_templates.tmpl_linkbacks_admin( pending_linkbacks=pending_linkbacks, recid=recid, ln=ln) approved_linkbacks = get_all_linkbacks( recid, CFG_WEBLINKBACK_STATUS['APPROVED'], CFG_WEBLINKBACK_ORDER_BY_INSERTION_TIME['DESC']) out += weblinkback_templates.tmpl_linkbacks( approved_linkbacks=approved_linkbacks, ln=ln) return out
def tmpl_admin_index(self, ln): """ Index page of admin interface """ _ = gettext_set_language(ln) out = '<ol>' pending_linkback_count = len(get_all_linkbacks(status=CFG_WEBLINKBACK_STATUS['PENDING'])) stat_pending_text = "" if pending_linkback_count > 0: stat_pending_text = ' <span class="moreinfo"> (' if pending_linkback_count == 1: stat_pending_text += "%s pending linkback request" % pending_linkback_count elif pending_linkback_count > 1: stat_pending_text += "%s pending linkback requests"% pending_linkback_count stat_pending_text += ')</span>' out += '<li><a href="%(siteURL)s/admin/weblinkback/weblinkbackadmin.py/linkbacks?ln=%(ln)s&status=%(status)s">%(label)s</a>%(stat)s</li>' % \ {'siteURL': CFG_SITE_URL, 'ln': ln, 'status': CFG_WEBLINKBACK_STATUS['PENDING'], 'label': _("Pending Linkbacks"), 'stat': stat_pending_text} out += '<li><a href="%(siteURL)s/linkbacks?ln=%(ln)s">%(label)s</a></li>' % \ {'siteURL': CFG_SITE_URL, 'ln': ln, 'label': _("Recent Linkbacks")} out += '<li><a href="%(siteURL)s/admin/weblinkback/weblinkbackadmin.py/lists?ln=%(ln)s&returncode=%(returnCode)s">%(label)s</a></li>' % \ {'siteURL': CFG_SITE_URL, 'ln': ln, 'returnCode': CFG_WEBLINKBACK_ACTION_RETURN_CODE['OK'], 'label': _("Linkback Whitelist/Blacklist Manager")} out += '</ol>' from invenio.legacy.bibrank.adminlib import addadminbox return addadminbox('<b>%s</b>'% _("Menu"), [out])
def perform_request_display_linkbacks(status, return_code, ln=CFG_SITE_LANG): """ Display linkbacks @param status: of CFG_WEBLINKBACK_STATUS, currently only CFG_WEBLINKBACK_STATUS['PENDING'] is supported """ _ = gettext_set_language(ln) if status == CFG_WEBLINKBACK_STATUS['PENDING']: linkbacks = get_all_linkbacks( status=status, order=CFG_WEBLINKBACK_ORDER_BY_INSERTION_TIME['DESC']) entries = [] for (linkbackid, origin_url, recid, additional_properties, linkback_type, linkback_status, insert_time) in linkbacks: # pylint: disable=W0612 moderation_prefix = '<a href="moderatelinkback?action=%%s&linkbackid=%s&ln=%s">%%s</a>' % ( linkbackid, ln) entries.append(( linkback_type, format_record(recID=recid, of='hs', ln=ln), '<a href="%s">%s</a>' % (cgi.escape(origin_url), cgi.escape( get_url_title(origin_url))), convert_datetext_to_dategui(str(insert_time)), moderation_prefix % (CFG_WEBLINKBACK_ADMIN_MODERATION_ACTION['APPROVE'], 'Approve') + " / " + moderation_prefix % (CFG_WEBLINKBACK_ADMIN_MODERATION_ACTION['REJECT'], 'Reject'))) header = ['Linkback type', 'Record', 'Origin', 'Submitted on', ''] error_message = "" if return_code != CFG_WEBLINKBACK_ACTION_RETURN_CODE['OK']: error_message = _("Unknown error") if return_code == CFG_WEBLINKBACK_ACTION_RETURN_CODE[ 'INVALID_ACTION']: error_message = _("Invalid action") error_message_html = "" if error_message != "": error_message_html = "<dt><b><font color=red>" + error_message + "</font></b></dt>" + "<br>" out = """ <dl> %(error_message)s <dt>%(heading)s</dt> <dd>%(description)s</dd> </dl> """ % { 'heading': _("Pending linkbacks"), 'description': _("these linkbacks are not visible to users, they must be approved or rejected." ), 'error_message': error_message_html } if entries: out += tupletotable(header=header, tuple=entries, highlight_rows_p=True, alternate_row_colors_p=True) else: out += "<i>There are no %s linkbacks.</i>" % status.lower() return addadminbox( '<b>%s</b>' % _("Reduce the amount of currently pending linkback requests"), [out]) else: return "<i>%s</i>" % _( 'Currently only pending linkbacks are supported.')