Exemplo n.º 1
0
def update_broadcast_message(service_id, broadcast_message_id):
    data = request.get_json()

    validate(data, update_broadcast_message_schema)

    broadcast_message = dao_get_broadcast_message_by_id_and_service_id(broadcast_message_id, service_id)

    if broadcast_message.status not in BroadcastStatusType.PRE_BROADCAST_STATUSES:
        raise InvalidRequest(
            f'Cannot update broadcast_message {broadcast_message.id} while it has status {broadcast_message.status}',
            status_code=400
        )

    if ('areas' in data and 'simple_polygons' not in data) or ('areas' not in data and 'simple_polygons' in data):
        raise InvalidRequest(
            f'Cannot update broadcast_message {broadcast_message.id}, areas or polygons are missing.',
            status_code=400
        )

    if 'personalisation' in data:
        broadcast_message.personalisation = data['personalisation']
    if 'starts_at' in data:
        broadcast_message.starts_at = _parse_nullable_datetime(data['starts_at'])
    if 'finishes_at' in data:
        broadcast_message.finishes_at = _parse_nullable_datetime(data['finishes_at'])
    if 'areas' in data and 'simple_polygons' in data:
        broadcast_message.areas = {"areas": data["areas"], "simple_polygons": data["simple_polygons"]}

    dao_save_object(broadcast_message)

    return jsonify(broadcast_message.serialize()), 200
Exemplo n.º 2
0
def update_broadcast_message_status(service_id, broadcast_message_id):
    data = request.get_json()

    validate(data, update_broadcast_message_status_schema)
    broadcast_message = dao_get_broadcast_message_by_id_and_service_id(broadcast_message_id, service_id)

    new_status = data['status']
    updating_user = get_user_by_id(data['created_by'])

    _update_broadcast_message(broadcast_message, new_status, updating_user)
    dao_save_object(broadcast_message)

    if new_status in {BroadcastStatusType.BROADCASTING, BroadcastStatusType.CANCELLED}:
        _create_broadcast_event(broadcast_message)

    return jsonify(broadcast_message.serialize()), 200
def test_valid_post_cap_xml_broadcast_sets_stubbed_to_true_for_training_mode_services(
        client, sample_broadcast_service, training_mode_service):
    sample_broadcast_service.restricted = training_mode_service
    auth_header = create_authorization_header(
        service_id=sample_broadcast_service.id)

    response = client.post(
        path='/v2/broadcast',
        data=sample_cap_xml_documents.WAINFLEET,
        headers=[('Content-Type', 'application/cap+xml'), auth_header],
    )

    assert response.status_code == 201
    response_json = json.loads(response.get_data(as_text=True))

    broadcast_message = dao_get_broadcast_message_by_id_and_service_id(
        response_json['id'], sample_broadcast_service.id)
    assert broadcast_message.stubbed == training_mode_service
Exemplo n.º 4
0
def test_create_broadcast_message(admin_request, sample_broadcast_service,
                                  training_mode_service):
    sample_broadcast_service.restricted = training_mode_service
    t = create_template(sample_broadcast_service, BROADCAST_TYPE)

    response = admin_request.post('broadcast_message.create_broadcast_message',
                                  _data={
                                      'template_id': str(t.id),
                                      'service_id': str(t.service_id),
                                      'created_by': str(t.created_by_id),
                                  },
                                  service_id=t.service_id,
                                  _expected_status=201)

    assert response['template_name'] == t.name
    assert response['status'] == BroadcastStatusType.DRAFT
    assert response['created_at'] is not None
    assert response['created_by_id'] == str(t.created_by_id)
    assert response['personalisation'] == {}
    assert response['areas'] == []

    broadcast_message = dao_get_broadcast_message_by_id_and_service_id(
        response["id"], sample_broadcast_service.id)
    assert broadcast_message.stubbed == training_mode_service
Exemplo n.º 5
0
def get_broadcast_message(service_id, broadcast_message_id):
    return jsonify(dao_get_broadcast_message_by_id_and_service_id(broadcast_message_id, service_id).serialize())