def _create_blackouts(): Blackout.create( name='An excellent day for an exorcism', start_date='12/25/2021', end_date='12/25/2021', ) std_commit(allow_test_environment=True)
def _run(self): kaltura = Kaltura() for blackout in Blackout.all_blackouts(): if blackout.end_date < utc_now(): app.logger.info(f'Removing past blackout: {blackout}') Blackout.delete_blackout(blackout.id) else: events = kaltura.get_events_in_date_range(end_date=blackout.end_date, start_date=blackout.start_date) for event in events: created_by_diablo = CREATED_BY_DIABLO_TAG in event['tags'] if created_by_diablo and not represents_recording_series(event): kaltura.delete(event['id']) app.logger.info(f"'Event {event['summary']} deleted per {blackout}.")
def test_overlapping_date_ranges(self, client, admin_session): """Expect error when blackout dates overlap.""" Blackout.create( name='Final exams', start_date='2021-12-13', end_date='2021-12-17', ) std_commit(allow_test_environment=True) self._api_create_blackout( client, name='Boston Tea Party week', start_date='2021-12-16', end_date='2021-12-23', expected_status_code=400, )
def test_get_blackout(self, client, admin_session): """Admin user has access to blackout data.""" blackout = next( (t for t in Blackout.all_blackouts() if 'exorcism' in t.name), None) assert blackout api_json = self._api_blackout(client, blackout.id) assert api_json['id'] == blackout.id assert 'exorcism' in api_json['name']
def _validate_date_range(start_date, end_date, blackout_id=None): if start_date > end_date: raise BadRequestError( 'Start date must be less than or equal to end date.') for blackout in Blackout.all_blackouts(): if blackout.id != blackout_id: latest_start = max(start_date, blackout.start_date) earliest_end = min(end_date, blackout.end_date) if max(0, (earliest_end - latest_start).days + 1) > 0: raise BadRequestError( f'Date range overlaps with existing blackout {blackout.id}' )
def test_authorized(self, client, admin_session): """Admin user can update blackout dates.""" blackout = Blackout.create( name='Bloomsday', start_date='2020-06-16', end_date='2020-06-16', ) std_commit(allow_test_environment=True) blackout = Blackout.get_blackout(blackout.id) name = f'{blackout.name} (modified)' blackout = self._api_update_blackout( client, blackout_id=blackout.id, name=name, start_date='2021-06-16', end_date='2021-06-16', ) assert len(blackout) assert blackout['name'] == name assert blackout['startDate'] == '2021-06-16' assert blackout['endDate'] == '2021-06-16'
def update_blackout(): params = request.get_json() blackout_id = params.get('blackoutId') blackout = Blackout.get_blackout(blackout_id) if blackout_id else None if blackout: name = params.get('name') start_date = params.get('startDate') end_date = params.get('endDate') if None in [name, start_date, end_date]: raise BadRequestError('Required parameters are missing.') start_date = _local_blackout_date_to_utc(f'{start_date}T00:00:00') end_date = _local_blackout_date_to_utc(f'{end_date}T23:59:59') _validate_date_range(start_date, end_date) blackout = Blackout.update( blackout_id=blackout_id, name=name, start_date=start_date, end_date=end_date, ) return tolerant_jsonify(blackout.to_api_json()) else: raise ResourceNotFoundError('No such email template')
def create_blackout(): params = request.get_json() name = params.get('name') start_date = params.get('startDate') end_date = params.get('endDate') if None in [name, start_date, end_date]: raise BadRequestError('Required parameters are missing.') start_date = _local_blackout_date_to_utc(f'{start_date}T00:00:00') end_date = _local_blackout_date_to_utc(f'{end_date}T23:59:59') _validate_date_range(start_date, end_date) blackout = Blackout.create(name=name, start_date=start_date, end_date=end_date) return tolerant_jsonify(blackout.to_api_json())
def delete_blackout(blackout_id): Blackout.delete_blackout(blackout_id) return tolerant_jsonify( {'message': f'Email template {blackout_id} has been deleted'}), 200
def get_blackout(blackout_id): blackout = Blackout.get_blackout(blackout_id) if blackout: return tolerant_jsonify(blackout.to_api_json()) else: raise ResourceNotFoundError('No such blackout')
def get_all_blackouts(): return tolerant_jsonify( [blackout.to_api_json() for blackout in Blackout.all_blackouts()])