Example #1
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])
Example #2
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])
Example #3
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)
Example #4
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)
Example #5
0
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
Example #6
0
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.')
Example #7
0
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
Example #8
0
    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&amp;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&amp;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])
Example #9
0
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.')