예제 #1
0
def get_existing_webapp_hnmm_user(return_as_dict=False):
    query = keep_only_webapp_users(User.query)
    query = query.filter(User.email.contains('93.has-no-more-money'))
    user = query.first()
    if return_as_dict == False:
        return user
    return {"user": get_user_helper(user)}
예제 #2
0
def get_existing_pro_validated_user_with_validated_offerer_with_booking():
    query = Booking.query.join(Stock) \
                         .join(Offer) \
                         .join(Venue) \
                         .join(Offerer) \
                         .join(UserOfferer) \
                         .filter(
                            (Offerer.validationToken == None) & \
                            (UserOfferer.validationToken == None)
                         ) \
                         .join(User) \
                         .filter(User.validationToken == None)

    booking = query.first()
    stock = booking.stock
    offer = stock.offer
    venue = offer.venue
    offerer = venue.managingOfferer
    user = [
        uo.user for uo in offerer.UserOfferers
        if uo.user.validationToken == None
    ][0]
    return {
        "booking": get_booking_helper(booking),
        "offer": get_offer_helper(offer),
        "offerer": get_offerer_helper(offerer),
        "stock": get_stock_helper(stock),
        "user": get_user_helper(user),
        "venue": get_venue_helper(venue)
    }
예제 #3
0
def get_existing_pro_validated_user_with_validated_offerer_with_validated_user_offerer_with_thing_offer_with_stock_with_not_used_booking(
):
    query = User.query.filter(User.validationToken == None)
    query = filter_users_with_at_least_one_validated_offerer_validated_user_offerer(
        query)
    query = query.join(Venue) \
                 .filter(Venue.offers.any(~Offer.stocks.any()))
    query = query.join(Offer) \
                 .join(Stock) \
                 .filter(Stock.bookings.any(Booking.isUsed == False))
    user = query.first()

    for uo in user.UserOfferers:
        if uo.validationToken == None \
            and uo.offerer.validationToken == None:
            for venue in uo.offerer.managedVenues:
                for offer in venue.offers:
                    if offer.isThing:
                        for stock in offer.stocks:
                            if stock.bookings:
                                for booking in stock.bookings:
                                    if not booking.isUsed:
                                        return {
                                            "booking":
                                            get_booking_helper(booking),
                                            "offer":
                                            get_offer_helper(offer),
                                            "offerer":
                                            get_offerer_helper(uo.offerer),
                                            "user":
                                            get_user_helper(user),
                                            "venue":
                                            get_venue_helper(venue)
                                        }
예제 #4
0
def get_existing_webapp_validated_user_with_has_filled_cultural_survey():
    query = keep_only_webapp_users(User.query)
    query = query.filter_by(needsToFillCulturalSurvey=False,
                            resetPasswordToken=None)
    user = query.first()

    return {"user": get_user_helper(user)}
예제 #5
0
def get_existing_pro_validated_user_with_not_validated_offerer_validated_user_offerer_and_validated_offerer_not_validated_user_offerer_and_validated_offerer_validated_user_offerer():
    query = User.query.filter(User.validationToken == None)
    first_query = filter_users_with_at_least_one_not_validated_offerer_validated_user_offerer(query)
    second_query = filter_users_with_at_least_one_validated_offerer_not_validated_user_offerer(query)
    third_query = filter_users_with_at_least_one_validated_offerer_validated_user_offerer(query)
    query = first_query.intersect_all(second_query, third_query)
    user = query.first()

    not_validated_offerer = [
        uo.offerer for uo in user.UserOfferers
        if uo.offerer.validationToken != None \
        and uo.validationToken == None
    ][0]

    validated_offerer_with_not_validated_user_offerer = [
        uo.offerer for uo in user.UserOfferers
        if uo.offerer.validationToken == None \
        and uo.validationToken != None
    ][0]

    validated_offerer_with_validated_user_offerer = [
        uo.offerer for uo in user.UserOfferers
        if uo.offerer.validationToken == None \
        and uo.validationToken == None
    ][0]

    return {
        "notValidatedOfferer": get_offerer_helper(not_validated_offerer),
        "offerersCount": len(user.UserOfferers),
        "user": get_user_helper(user),
        "validatedOffererWithNotValidatedUserOfferer": get_offerer_helper(validated_offerer_with_not_validated_user_offerer),
        "validatedOffererWithValidatedUserOfferer": get_offerer_helper(validated_offerer_with_validated_user_offerer)
    }
def get_existing_webapp_user_with_bookings():
    query = keep_only_webapp_users(User.query)
    query = query.filter(User.email.contains('93.has-booked-some'))
    user = query.first()
    return {
        "user": get_user_helper(user)
    }
예제 #7
0
def get_existing_pro_validated_user_with_validated_offerer_with_iban_validated_user_offerer_with_event_offer_with_stock(
):
    query = User.query.filter(User.validationToken == None)
    query = filter_users_with_at_least_one_validated_offerer_validated_user_offerer(
        query)
    query = query.join(BankInformation)
    query = query.join(Venue, Venue.managingOffererId == Offerer.id) \
        .join(Offer) \
        .join(Stock) \
        .filter((Stock.beginningDatetime != None) & (Stock.endDatetime != None))
    user = query.first()

    for uo in user.UserOfferers:
        if uo.validationToken == None \
                and uo.offerer.validationToken == None \
                and uo.offerer.iban:
            for venue in uo.offerer.managedVenues:
                for offer in venue.offers:
                    if offer.isEvent \
                            and offer.stocks:
                        for stock in offer.stocks:
                            if stock.beginningDatetime and stock.endDatetime:
                                return {
                                    "offer": get_offer_helper(offer),
                                    "offerer": get_offerer_helper(uo.offerer),
                                    "stock": get_stock_helper(stock),
                                    "user": get_user_helper(user),
                                    "venue": get_venue_helper(venue)
                                }
예제 #8
0
def get_existing_pro_validated_user_with_validated_offerer_with_iban_validated_user_offerer_with_thing_offer_with_stock(
):
    query = User.query.filter(User.validationToken == None)
    query = filter_users_with_at_least_one_validated_offerer_validated_user_offerer(
        query)
    query = query.join(BankInformation)
    query = query.join(Venue, Venue.managingOffererId == Offerer.id) \
        .join(Offer) \
        .join(Offer.stocks)
    user = query.first()

    for uo in user.UserOfferers:
        if uo.validationToken == None \
                and uo.offerer.validationToken == None \
                and uo.offerer.iban:
            for venue in uo.offerer.managedVenues:
                for offer in venue.offers:
                    if offer.isThing and offer.stocks and offer.isEditable:
                        return {
                            "offer": get_offer_helper(offer),
                            "offerer": get_offerer_helper(uo.offerer),
                            "stock": get_stock_helper(offer.stocks[0]),
                            "user": get_user_helper(user),
                            "venue": get_venue_helper(venue)
                        }
예제 #9
0
def get_existing_pro_validated_user_with_validated_offerer_with_iban_validated_user_offerer_with_event_offer_with_no_stock(
):
    query = User.query.filter(User.validationToken == None)
    query = filter_users_with_at_least_one_validated_offerer_validated_user_offerer(
        query)
    query = query.join(BankInformation)
    query = query.join(Venue, Venue.managingOffererId == Offerer.id).join(Offer).filter(
        (Offer.type.in_([str(event_type) for event_type in EventType])) & \
        (~Offer.stocks.any())
    )
    user = query.first()

    for uo in user.UserOfferers:
        if uo.validationToken == None \
                and uo.offerer.validationToken == None \
                and uo.offerer.iban:
            for venue in uo.offerer.managedVenues:
                for offer in venue.offers:
                    if offer.isEvent \
                            and len(offer.stocks) == 0:
                        return {
                            "offer": get_offer_helper(offer),
                            "offerer": get_offerer_helper(uo.offerer),
                            "user": get_user_helper(user),
                            "venue": get_venue_helper(venue)
                        }
예제 #10
0
def get_existing_pro_validated_user_with_validated_offerer_with_no_iban_validated_user_offerer_with_event_offer(
):
    query = User.query.filter(User.validationToken == None)
    query = filter_users_with_at_least_one_validated_offerer_validated_user_offerer(
        query)
    query = query.filter(Offerer.bankInformation == None)
    query = query.join(Venue).join(Offer).filter(
        Offer.type.in_([str(thing_type) for thing_type in ThingType]))
    query = query.filter(Venue.isVirtual == False)
    user = query.first()

    for uo in user.UserOfferers:
        if uo.validationToken == None \
                and uo.offerer.validationToken == None \
                and not uo.offerer.iban:
            for venue in uo.offerer.managedVenues:
                if not venue.isVirtual:
                    for offer in venue.offers:
                        if offer.isEvent:
                            return {
                                "offer": get_offer_helper(offer),
                                "offerer": get_offerer_helper(uo.offerer),
                                "user": get_user_helper(user),
                                "venue": get_venue_helper(venue)
                            }
예제 #11
0
def get_existing_pro_validated_user_with_validated_offerer_with_no_iban_validated_user_offerer_with_thing_offer_with_no_stock(
):
    query = User.query.filter(User.validationToken == None)
    query = filter_users_with_at_least_one_validated_offerer_validated_user_offerer(
        query)
    query = query.filter(Offerer.bankInformation == None)
    query = query.join(Venue).filter(Venue.offers.any(
        (Offer.type.in_([str(thing_type) for thing_type in ThingType])) & \
        (~Offer.stocks.any())
    ))
    user = query.first()

    for uo in user.UserOfferers:
        if uo.validationToken == None \
                and uo.offerer.validationToken == None \
                and not uo.offerer.iban:
            for venue in uo.offerer.managedVenues:
                for offer in venue.offers:
                    if offer.isThing and len(
                            offer.stocks) == 0 and offer.isEditable:
                        return {
                            "offer": get_offer_helper(offer),
                            "offerer": get_offerer_helper(uo.offerer),
                            "user": get_user_helper(user),
                            "venue": get_venue_helper(venue)
                        }
예제 #12
0
def get_existing_webapp_user_can_book_multidates():
    query = keep_only_webapp_users(User.query)
    query = query.filter(User.email.contains('97.has-confirmed-activation'))
    user = query.first()
    return {
        "user": get_user_helper(user)
    }
예제 #13
0
def get_existing_webapp_user_has_no_more_money():
  query = keep_only_webapp_users(User.query)
  query = query.filter(User.email.contains('has-no-more-money'))
  user = query.first()
  return {
      "user": get_user_helper(user)
  }
예제 #14
0
def get_existing_webapp_user_with_bookings():
    query = keep_only_webapp_users(User.query)
    query = query.join(Booking)
    user = query.first()

    return {
        "user": get_user_helper(user)
    }
예제 #15
0
def get_pro_validated_no_reset_password_token_user():
    query = User.query.filter(
        (User.validationToken == None) &\
        (User.resetPasswordToken == None)
    )
    query = query.join(UserOfferer)
    user = query.first()

    return {"user": get_user_helper(user)}
예제 #16
0
def get_existing_webapp_user_with_at_least_one_recommendation():
    query = Recommendation.query.join(User)
    query = keep_only_webapp_users(query)
    query = query.reset_joinpoint().join(Offer)

    recommendation = query.first()
    return {
        "user": get_user_helper(recommendation.user),
        "recommendation": get_recommendation_helper(recommendation)
    }
예제 #17
0
def get_existing_pro_validated_user_with_first_offerer():
    query = User.query.filter(User.validationToken == None)
    query = query.join(UserOfferer)
    user = query.first()

    offerer = [uo.offerer for uo in user.UserOfferers][0]

    return {
        "offerer": get_offerer_helper(offerer),
        "user": get_user_helper(user)
    }
예제 #18
0
def get_existing_pro_user_with_offerer():
    query = User.query.join(UserOfferer)
    user = query.first()

    offerer = [
        uo.offerer for uo in user.UserOfferers
    ][0]

    return {
        "offerer": get_offerer_helper(offerer),
        "user": get_user_helper(user)
    }
예제 #19
0
def get_existing_pro_validated_user_with_validated_offerer_validated_user_offerer():
    query = User.query.filter(User.validationToken == None)
    query = filter_users_with_at_least_one_validated_offerer_validated_user_offerer(query)
    user = query.first()

    offerer = [
        uo.offerer for uo in user.UserOfferers
        if uo.validationToken == None \
        and uo.offerer.validationToken == None
    ][0]

    return {
        "offerer": get_offerer_helper(offerer),
        "user": get_user_helper(user)
    }
예제 #20
0
def get_existing_pro_validated_user_with_offerer_with_no_iban():
    query = User.query.join(UserOfferer) \
                      .join(Offerer) \
                      .filter(User.UserOfferers.any(Offerer.bankInformation == None))
    query = query.filter(User.validationToken == None)
    user = query.first()

    offerer = [
        uo.offerer for uo in user.UserOfferers if uo.offerer.iban == None
    ][0]

    return {
        "offerer": get_offerer_helper(offerer),
        "user": get_user_helper(user)
    }
예제 #21
0
def get_existing_pro_validated_user_with_validated_offerer_validated_user_offerer_with_at_least_one_physical_venue():
    query = User.query.filter(User.validationToken == None)
    query = filter_users_with_at_least_one_validated_offerer_validated_user_offerer(query)
    query = keep_offerers_with_at_least_one_physical_venue(query)
    user = query.first()

    for uo in user.UserOfferers:
        if uo.validationToken == None and uo.offerer.validationToken == None:
            for venue in uo.offerer.managedVenues:
                if not venue.isVirtual:
                    return {
                        "offerer": get_offerer_helper(uo.offerer),
                        "user": get_user_helper(user),
                        "venue": get_venue_helper(venue)
                    }
예제 #22
0
def get_existing_pro_not_validated_user_with_real_offerer():
    query = User.query.filter(User.validationToken != None)
    query = query.join(UserOfferer) \
                 .join(Offerer) \
                 .filter(~Offerer.siren.startswith('222'))
    user = query.first()

    offerer = [
        uo.offerer for uo in user.UserOfferers
        if not uo.offerer.siren.startswith('222')
    ][0]

    return {
        "offerer": get_offerer_helper(offerer),
        "user": get_user_helper(user)
    }
예제 #23
0
def get_existing_webapp_user_with_no_date_read():
    query = keep_only_webapp_users(User.query)
    query = query.filter_by(
        needsToFillCulturalSurvey=False,
        resetPasswordToken=None
    )
    query = query.filter(
        ~User.recommendations.any(
            Recommendation.dateRead != None
        )
    )
    user = query.first()


    return {
        "user": get_user_helper(user),
    }
예제 #24
0
def get_existing_pro_validated_user_with_at_least_one_visible_activated_offer(
):
    query = User.query.filter(User.validationToken == None)
    query = filter_users_with_at_least_one_validated_offerer_validated_user_offerer(
        query)
    query = query.join(Venue).join(Offer).filter(Offer.isActive == True)
    user = query.first()

    for uo in user.UserOfferers:
        if uo.offerer.validationToken == None and uo.validationToken == None:
            for venue in uo.offerer.managedVenues:
                for offer in venue.offers:
                    if offer.isActive:
                        return {
                            "offer": get_offer_helper(offer),
                            "user": get_user_helper(user)
                        }
예제 #25
0
def get_existing_pro_validated_user_with_validated_offerer_validated_user_offerer_no_physical_venue():
    query = User.query.filter(User.validationToken == None)
    query = filter_users_with_at_least_one_validated_offerer_validated_user_offerer(query)
    query = keep_offerers_with_no_physical_venue(query)
    user = query.first()

    offerer = [
        uo.offerer for uo in user.UserOfferers
        if uo.offerer.validationToken == None \
        and uo.validationToken == None \
        and all([v.isVirtual for v in uo.offerer.managedVenues])
    ][0]

    return {
        "offerer": get_offerer_helper(offerer),
        "user": get_user_helper(user)
    }
예제 #26
0
def get_existing_pro_validated_user_with_at_least_one_visible_offer():
    query = User.query.filter(User.validationToken == None)
    query = filter_users_with_at_least_one_validated_offerer_validated_user_offerer(
        query)
    query = query.join(Venue,
                       Venue.managingOffererId == Offerer.id).join(Offer)
    user = query.first()

    for uo in user.UserOfferers:
        if uo.validationToken == None and uo.offerer.validationToken == None:
            for venue in uo.offerer.managedVenues:
                if venue.offers:
                    offer = venue.offers[0]
                    return {
                        "offer": get_offer_helper(offer),
                        "user": get_user_helper(user)
                    }
예제 #27
0
def get_existing_pro_validated_user_with_at_least_one_visible_offer_with_no_mediation(
):
    query = User.query.filter(User.validationToken == None)
    query = filter_users_with_at_least_one_validated_offerer_validated_user_offerer(
        query)
    query = query.join(Venue) \
                 .join(Offer) \
                 .join(Mediation)
    user = query.first()

    for uo in user.UserOfferers:
        if uo.offerer.validationToken == None and uo.validationToken == None:
            for venue in uo.offerer.managedVenues:
                for offer in venue.offers:
                    if len(offer.mediations) == 0:
                        return {
                            "offer": get_offer_helper(offer),
                            "user": get_user_helper(user)
                        }
예제 #28
0
def get_existing_digital_offer_with_active_mediation_already_booked_and_user_hnmm_93(
):
    offer_with_stock_id_tuples = Offer.query.outerjoin(Product) \
        .filter(Offer.mediations.any(Mediation.isActive)) \
        .filter(Product.url != None) \
        .join(Stock, (Offer.id == Stock.offerId)) \
        .add_columns(Stock.id) \
        .all()
    user = get_existing_webapp_hnmm_user()
    bookings = get_cancellable_bookings_for_user(user)
    offer = find_offer_compatible_with_bookings(offer_with_stock_id_tuples,
                                                bookings)

    for mediation in offer.mediations:
        if mediation.isActive:
            return {
                "mediation": get_mediation_helper(mediation),
                "offer": get_offer_helper(offer),
                "user": get_user_helper(user)
            }
예제 #29
0
def get_existing_pro_validated_user_with_validated_offerer_validated_user_offerer_with_event_offer(
):
    query = User.query.filter(User.validationToken == None)
    query = filter_users_with_at_least_one_validated_offerer_validated_user_offerer(
        query)
    query = query.join(Venue).join(Offer).filter(
        Offer.type.in_([str(event_type) for event_type in EventType]))
    user = query.first()

    for uo in user.UserOfferers:
        if uo.validationToken == None and uo.offerer.validationToken == None:
            for venue in uo.offerer.managedVenues:
                for offer in venue.offers:
                    if offer.isEvent:
                        return {
                            "offer": get_offer_helper(offer),
                            "offerer": get_offerer_helper(uo.offerer),
                            "user": get_user_helper(user),
                            "venue": get_venue_helper(venue)
                        }
예제 #30
0
def get_existing_event_offer_with_active_mediation_already_booked_but_cancellable_and_user_hnmm_93(
):
    offer_with_stock_id_tuples = Offer.query \
        .filter(Offer.mediations.any(Mediation.isActive)) \
        .join(Stock) \
        .filter(Stock.beginningDatetime != None) \
        .add_columns(Stock.id) \
        .all()
    user = get_existing_webapp_hnmm_user()
    bookings = get_cancellable_bookings_for_user(user)
    offer = find_offer_compatible_with_bookings(offer_with_stock_id_tuples,
                                                bookings)

    for mediation in offer.mediations:
        if mediation.isActive:
            return {
                "mediation": get_mediation_helper(mediation),
                "offer": get_offer_helper(offer),
                "user": get_user_helper(user)
            }