Exemplo n.º 1
0
    def test_set_maintenance_with_end_date(self):
        end = timezone.now()
        maintenance.set_maintenance(message='', end=end.isoformat())
        current_state = MaintenanceState.objects.all().first()

        assert current_state.start == end - timedelta(1)
        assert current_state.end == end
Exemplo n.º 2
0
    def test_set_maintenance_with_start_date(self):
        start = timezone.now()
        maintenance.set_maintenance(start=start.isoformat())
        current_state = MaintenanceState.objects.all().first()

        assert current_state.start == start
        assert current_state.end == start + timedelta(1)
Exemplo n.º 3
0
    def test_set_maintenance_with_end_date(self):
        end = timezone.now()
        maintenance.set_maintenance(end=end.isoformat())
        current_state = MaintenanceState.objects.all().first()

        assert current_state.start == end - timedelta(1)
        assert current_state.end == end
    def test_set_maintenance_in_future(self):
        start = (timezone.now() + timedelta(1))
        maintenance.set_maintenance(message='', start=start.isoformat())
        current_state = MaintenanceState.objects.all().first()

        assert current_state.start == start
        assert current_state.end == start + timedelta(1)
Exemplo n.º 5
0
    def test_set_maintenance_in_future(self):
        start = (timezone.now() + timedelta(1))
        maintenance.set_maintenance(message='', start=start.isoformat())
        current_state = MaintenanceState.objects.all().first()

        assert current_state.start == start
        assert current_state.end == start + timedelta(1)
Exemplo n.º 6
0
    def test_set_maintenance_level(self):
        maintenance.set_maintenance(message='')
        assert MaintenanceState.objects.all().first().level == 1
        maintenance.unset_maintenance()

        maintenance.set_maintenance(message='', level=3)
        assert MaintenanceState.objects.all().first().level == 3
        maintenance.unset_maintenance()
    def test_set_maintenance_level(self):
        maintenance.set_maintenance(message='')
        assert MaintenanceState.objects.all().first().level == 1
        maintenance.unset_maintenance()

        maintenance.set_maintenance(message='', level=3)
        assert MaintenanceState.objects.all().first().level == 3
        maintenance.unset_maintenance()
Exemplo n.º 8
0
 def test_status_view_with_maintenance(self):
     maintenance.set_maintenance(message='test')
     url = '/{}status/'.format(API_BASE)
     res = self.app.get(url)
     m = maintenance.get_maintenance()
     assert_equal(res.status_code, 200)
     assert_equal(res.json['maintenance']['level'], 1)
     assert_equal(res.json['maintenance']['start'], m['start'])
     assert_equal(res.json['maintenance']['end'], m['end'])
     assert_equal(res.json['maintenance']['message'], 'test')
Exemplo n.º 9
0
 def test_status_view_with_maintenance(self):
     maintenance.set_maintenance(message='test')
     url = '/{}status/'.format(API_BASE)
     res = self.app.get(url)
     m = maintenance.get_maintenance()
     assert_equal(res.status_code, 200)
     assert_equal(res.json['maintenance']['level'], 1)
     assert_equal(res.json['maintenance']['start'], m['start'])
     assert_equal(res.json['maintenance']['end'], m['end'])
     assert_equal(res.json['maintenance']['message'], 'test')
Exemplo n.º 10
0
    def post(self, request, *args, **kwargs):
        data = request.POST

        start = convert_eastern_to_utc(
            data['start']).isoformat() if data.get('start') else None
        end = convert_eastern_to_utc(
            data['end']).isoformat() if data.get('end') else None

        maintenance.set_maintenance(data.get('message', ''), data['level'],
                                    start, end)
        return redirect('maintenance:display')
Exemplo n.º 11
0
def set_maintenance(ctx, start=None, end=None):
    from website.maintenance import set_maintenance, get_maintenance
    """Set the time period for the maintenance notice to be displayed.
    If no start or end values are displayed, default to starting now
    and ending 24 hours from now. If no timezone info is passed along,
    everything will be converted to UTC.

    If a given end time results in a start that is after the end, start
    will be changed to be 24 hours before the end time.

    Examples:
        invoke set_maintenance_state
        invoke set_maintenance_state --start 2016-03-16T15:41:00-04:00
        invoke set_maintenance_state --end 2016-03-16T15:41:00-04:00
    """
    set_maintenance(start, end)
    state = get_maintenance()
    print('Maintenance notice up for {} to {}.'.format(state['start'], state['end']))
Exemplo n.º 12
0
def set_maintenance(ctx, message='', level=1, start=None, end=None):
    from website.app import setup_django
    setup_django()
    from website.maintenance import set_maintenance
    """Display maintenance notice across OSF applications (incl. preprints, registries, etc.)

    start - Start time for the maintenance period
    end - End time for the mainteance period
        NOTE: If no start or end values are provided, default to starting now
        and ending 24 hours from now.
    message - Message to display. If omitted, will be:
        "The site will undergo maintenance between <localized start time> and <localized end time>. Thank you
        for your patience."
    level - Severity level. Modifies the color of the displayed notice. Must be one of 1 (info), 2 (warning), 3 (danger).

    Examples:
        invoke set_maintenance --start 2016-03-16T15:41:00-04:00 --end 2016-03-16T15:42:00-04:00
        invoke set_maintenance --message 'The OSF is experiencing issues connecting to a 3rd party service' --level 2 --start 2016-03-16T15:41:00-04:00 --end 2016-03-16T15:42:00-04:00
    """
    state = set_maintenance(message, level, start, end)
    print('Maintenance notice up {} to {}.'.format(state['start'], state['end']))
Exemplo n.º 13
0
def set_maintenance(ctx, message='', level=1, start=None, end=None):
    from website.app import setup_django
    setup_django()
    from website.maintenance import set_maintenance
    """Display maintenance notice across OSF applications (incl. preprints, registries, etc.)

    start - Start time for the maintenance period
    end - End time for the mainteance period
        NOTE: If no start or end values are provided, default to starting now
        and ending 24 hours from now.
    message - Message to display. If omitted, will be:
        "The site will undergo maintenance between <localized start time> and <localized end time>. Thank you
        for your patience."
    level - Severity level. Modifies the color of the displayed notice. Must be one of 1 (info), 2 (warning), 3 (danger).

    Examples:
        invoke set_maintenance --start 2016-03-16T15:41:00-04:00 --end 2016-03-16T15:42:00-04:00
        invoke set_maintenance --message 'The OSF is experiencing issues connecting to a 3rd party service' --level 2 --start 2016-03-16T15:41:00-04:00 --end 2016-03-16T15:42:00-04:00
    """
    state = set_maintenance(message, level, start, end)
    print('Maintenance notice up {} to {}.'.format(state['start'], state['end']))
Exemplo n.º 14
0
def set_maintenance(ctx, message='', level=1, start=None, end=None):
    from website.app import setup_django
    setup_django()
    from website.maintenance import set_maintenance
    """Creates a maintenance notice.

    Message is required.
    Level defaults to 1. Valid levels are 1 (info), 2 (warning), and 3 (danger).

    Set the time period for the maintenance notice to be displayed.
    If no start or end values are displayed, default to starting now
    and ending 24 hours from now. If no timezone info is passed along,
    everything will be converted to UTC.

    If a given end time results in a start that is after the end, start
    will be changed to be 24 hours before the end time.

    Examples:
        invoke set_maintenance --message 'OSF down for scheduled maintenance.' --start 2016-03-16T15:41:00-04:00
        invoke set_maintenance --message 'Apocalypse' --level 3 --end 2016-03-16T15:41:00-04:00
    """
    state = set_maintenance(message, level, start, end)
    print('Maintenance notice up {} to {}.'.format(state['start'],
                                                   state['end']))
Exemplo n.º 15
0
 def test_unset_maintenance(self):
     maintenance.set_maintenance()
     assert MaintenanceState.objects.exists()
     maintenance.unset_maintenance()
     assert not MaintenanceState.objects.exists()
Exemplo n.º 16
0
def maintenance_alert():
    maintenance.set_maintenance('')
    return maintenance.get_maintenance()
Exemplo n.º 17
0
 def test_unset_maintenance(self):
     maintenance.set_maintenance(message='')
     assert MaintenanceState.objects.exists()
     maintenance.unset_maintenance()
     assert not MaintenanceState.objects.exists()
Exemplo n.º 18
0
 def test_status_view_with_maintenance(self):
     maintenance.set_maintenance()
     url = '/{}status/'.format(API_BASE)
     res = self.app.get(url)
     assert_equal(res.status_code, 200)
     assert_equal(res.json, {'maintenance': maintenance.get_maintenance()})
Exemplo n.º 19
0
 def test_set_maintenance_twice(self):
     assert not MaintenanceState.objects.exists()
     maintenance.set_maintenance()
     assert MaintenanceState.objects.all().count() == 1
     maintenance.set_maintenance()
     assert MaintenanceState.objects.all().count() == 1
Exemplo n.º 20
0
 def test_get_maintenance(self):
     start = timezone.now()
     maintenance.set_maintenance(start=start.isoformat())
     state = maintenance.get_maintenance()
     assert state['start'] == start.isoformat()
     assert state['end'] == (start + timedelta(1)).isoformat()
Exemplo n.º 21
0
 def test_set_maintenance_twice(self):
     assert not MaintenanceState.objects.exists()
     maintenance.set_maintenance(message='')
     assert MaintenanceState.objects.all().count() == 1
     maintenance.set_maintenance(message='')
     assert MaintenanceState.objects.all().count() == 1
Exemplo n.º 22
0
 def test_get_maintenance_in_future(self):
     start = (timezone.now() + timedelta(1)).isoformat()
     maintenance.set_maintenance(start=start)
     assert MaintenanceState.objects.exists()
     state = maintenance.get_maintenance()
     assert state['start'] == start