Ejemplo n.º 1
0
def _create_response_to_get_booking_by_token(booking: Booking) -> Dict:
    offer_name = booking.stock.offer.product.name
    date = None
    offer = booking.stock.offer
    is_event = ProductType.is_event(offer.type)
    if is_event:
        date = serialize(booking.stock.beginningDatetime)
    venue_departement_code = offer.venue.departementCode
    response = {
        "bookingId": humanize(booking.id),
        "date": date,
        "email": booking.user.email,
        "isUsed": booking.isUsed,
        "offerName": offer_name,
        "userName": booking.user.publicName,
        "venueDepartementCode": venue_departement_code,
    }

    if offer.type == str(EventType.ACTIVATION):
        response.update({
            "phoneNumber": booking.user.phoneNumber,
            "dateOfBirth": serialize(booking.user.dateOfBirth)
        })

    return response
Ejemplo n.º 2
0
def retrieve_data_for_beneficiary_booking_confirmation_email(
        booking: Booking) -> Dict:
    stock = booking.stock
    offer = stock.offer
    venue = offer.venue
    beneficiary = booking.user

    is_digital_offer = offer.isDigital
    is_physical_offer = ProductType.is_thing(
        name=offer.type) and not is_digital_offer
    is_event = ProductType.is_event(name=offer.type)
    can_expire = int(offer.offerType.get("canExpire", False))

    department_code = venue.departementCode if not is_digital_offer else beneficiary.departementCode
    booking_date_in_tz = utc_datetime_to_department_timezone(
        booking.dateCreated, department_code)

    beneficiary_first_name = beneficiary.firstName
    formatted_booking_date = get_date_formatted_for_email(booking_date_in_tz)
    formatted_booking_time = get_time_formatted_for_email(booking_date_in_tz)

    offer_name = offer.name
    offerer_name = venue.managingOfferer.name
    formatted_event_beginning_time = ""
    formatted_event_beginning_date = ""
    # FIXME: booking.price == stock.price, so we should just write str(booking.total_amount), right?
    stock_price = str(stock.price *
                      booking.quantity) if stock.price > 0 else "Gratuit"
    booking_token = booking.token
    venue_name = venue.name
    venue_address = venue.address or ""
    venue_postal_code = venue.postalCode or ""
    venue_city = venue.city or ""
    is_event_or_physical_offer_stringified_boolean = 1 if is_event or is_physical_offer else 0
    is_physical_offer_stringified_boolean = 1 if is_physical_offer else 0
    is_event_stringified_boolean = 1 if is_event else 0
    is_single_event_stringified_boolean = 1 if is_event and booking.quantity == 1 else 0
    is_duo_event_stringified_boolean = 1 if is_event and booking.quantity == 2 else 0
    offer_id = humanize(offer.id)
    mediation_id = humanize(
        offer.activeMediation.id) if offer.activeMediation else "vide"
    if is_event:
        event_beginning_date_in_tz = utc_datetime_to_department_timezone(
            stock.beginningDatetime, department_code)
        formatted_event_beginning_time = get_time_formatted_for_email(
            event_beginning_date_in_tz)
        formatted_event_beginning_date = get_date_formatted_for_email(
            event_beginning_date_in_tz)

    return {
        "MJ-TemplateID": 1163067,
        "MJ-TemplateLanguage": True,
        "Vars": {
            "user_first_name": beneficiary_first_name,
            "booking_date": formatted_booking_date,
            "booking_hour": formatted_booking_time,
            "offer_name": offer_name,
            "offerer_name": offerer_name,
            "event_date": formatted_event_beginning_date,
            "event_hour": formatted_event_beginning_time,
            "offer_price": stock_price,
            "offer_token": booking_token,
            "venue_name": venue_name,
            "venue_address": venue_address,
            "venue_postal_code": venue_postal_code,
            "venue_city": venue_city,
            "all_but_not_virtual_thing":
            is_event_or_physical_offer_stringified_boolean,
            "all_things_not_virtual_thing":
            is_physical_offer_stringified_boolean,
            "is_event": is_event_stringified_boolean,
            "is_single_event": is_single_event_stringified_boolean,
            "is_duo_event": is_duo_event_stringified_boolean,
            "offer_id": offer_id,
            "mediation_id": mediation_id,
            "can_expire": can_expire,
        },
    }
Ejemplo n.º 3
0
 def isEvent(self) -> bool:
     return ProductType.is_event(self.type)
Ejemplo n.º 4
0
 def is_booked_offer_event(self) -> bool:
     return ProductType.is_event(self.type)
Ejemplo n.º 5
0
        def test_if_name_is_ThingType_JEUX_VIDEO_return_False(self):
            # When
            is_event = ProductType.is_event(str(ThingType.JEUX_VIDEO))

            # Then
            assert is_event is False
Ejemplo n.º 6
0
        def test_if_name_is_EventType_MUSEES_PATRIMOINE_return_True(self):
            # When
            is_event = ProductType.is_event(str(EventType.MUSEES_PATRIMOINE))

            # Then
            assert is_event is True
Ejemplo n.º 7
0
        def test_if_name_is_empty_return_False(self):
            # When
            is_event = ProductType.is_event("")

            # Then
            assert is_event is False
Ejemplo n.º 8
0
def check_offer_type_is_valid(offer_type_name):
    if not ProductType.is_thing(offer_type_name) and not ProductType.is_event(
            offer_type_name):
        api_error = ApiErrors()
        api_error.add_error("type", "Le type de cette offre est inconnu")
        raise api_error