Пример #1
0
def format_element(bfo, format='%Y-%m-%d', date_format='%Y-%m-%d'):
    '''
    Get the record creation date.
    <b>Note:</b> parameter <code>format</code> is deprecated

    @param date_format: The date format in MySQL syntax
    '''
    recID = bfo.recID

    # Let's be gentle and backward compatible while "format" is here:
    if date_format == '%Y-%m-%d' and format != '%Y-%m-%d':
        date_format = format
    out = get_creation_date(recID, date_format)
    return out
Пример #2
0
def format_element(bfo, format='%Y-%m-%d', date_format='%Y-%m-%d'):
    '''
    Get the record creation date.
    <b>Note:</b> parameter <code>format</code> is deprecated

    @param date_format: The date format in MySQL syntax
    '''
    recID = bfo.recID

    # Let's be gentle and backward compatible while "format" is here:
    if date_format == '%Y-%m-%d' and format != '%Y-%m-%d':
        date_format = format
    out = get_creation_date(recID, date_format)
    return out
Пример #3
0
    def setUp(self):
        """
        webalert - prepare test alerts
        """
        from invenio import alert_engine
        from invenio.legacy.search_engine import get_creation_date

        # TODO: test alerts for baskets too
        self.added_query_ids = []
        q_query = """INSERT INTO query (type, urlargs) VALUES (%s,%s)"""
        q_user_query = """INSERT INTO user_query (id_user, id_query, date) VALUES (%%s,%(id_query)s,NOW())"""
        q_user_query_basket = """INSERT INTO user_query_basket (id_user, id_query, id_basket,
                                             frequency, date_creation,
                                             alert_name, notification, alert_recipient)
                                             VALUES (%%s,%(id_query)s,%%s,%%s,DATE(NOW()),%%s,%%s,%%s)"""
        parameters = {'romeo 1': {'query_params': ('r', 'c=Theses&c=Poetry',),
                                  'user_query_params': (5,),
                                  'user_query_basket_params': (5, 0, 'day', 'Romeo alert 1', 'y', '',)},
                      'juliet 1': {'query_params': ('r', 'c=Theses&c=Poetry',),
                                   'user_query_params': (6,),
                                   'user_query_basket_params': (6, 0, 'day', 'Juliet alert 1', 'y', '',)},
                      'mailing list 1': {'query_params': ('r', 'c=Theses&c=Poetry',),
                                         'user_query_params': (6,),
                                         'user_query_basket_params': (6, 0, 'day', 'Mailing list alert 1', 'y', CFG_SITE_ADMIN_EMAIL,)},
                      'juliet 2': {'query_params': ('r', 'c=Theses',),
                                   'user_query_params': (6,),
                                   'user_query_basket_params': (6, 0, 'day', 'Juliet alert 2', 'y', '',)},
                      }

        for params in parameters.values():
            row_id = run_sql(q_query, params['query_params'])
            self.added_query_ids.append(row_id)
            run_sql(q_user_query % {'id_query': row_id}, params['user_query_params'])
            run_sql(q_user_query_basket % {'id_query': row_id}, params['user_query_basket_params'])

        # Run the alert for a date when we expect some result, and
        # record output for later analysis.
        # First get creation date of demo records:
        alert_date = datetime.datetime(*(time.strptime(get_creation_date(41, fmt="%Y-%m-%d"),
                                                       '%Y-%m-%d')[:6])).date() + datetime.timedelta(days=1)
        # Prevent emails to be sent, raise verbosity:
        previous_cfg_webalert_debug_level = alert_engine.CFG_WEBALERT_DEBUG_LEVEL
        alert_engine.CFG_WEBALERT_DEBUG_LEVEL = 3
        # Re-route standard output:
        previous_stdout = sys.stdout # Re-route standard output
        sys.stdout = alert_output = StringIO()
        # Run the alert
        alert_engine.run_alerts(date=alert_date)
        # Restore standard output and alert debug level
        sys.stdout = previous_stdout
        alert_engine.CFG_WEBALERT_DEBUG_LEVEL = previous_cfg_webalert_debug_level

        # Remove test alerts
        for query_id in self.added_query_ids:
            run_sql('DELETE FROM user_query_basket WHERE id_query=%s', (query_id,))
            run_sql('DELETE FROM user_query WHERE id_query=%s', (query_id,))
            run_sql('DELETE FROM query WHERE id=%s', (query_id,))

        # Identify alerts, organize by name (hopefully unique for
        # these tests)
        self.alerts = {}
        for alert_message in alert_output.getvalue().split("+" * 80 + '\n'):
            if 'alert name: ' in alert_message:
                alert_name = alert_message.split('alert name: ')[1].split('\n')[0]
                self.alerts[alert_name] = alert_message