Example #1
0
def add_to_favorite():
    mediation = None
    offer_id = request.json.get('offerId')
    mediation_id = request.json.get('mediationId')
    check_offer_id_is_present_in_request(offer_id)

    offer = load_or_404(Offer, offer_id)
    if mediation_id != None:
        mediation = load_or_404(Mediation, mediation_id)

    favorite = create_favorite(mediation, offer, current_user)
    PcObject.save(favorite)

    return jsonify(_serialize_favorite(favorite)), 201
Example #2
0
def edit_venue(venueId):
    venue = load_or_404(Venue, venueId)
    ensure_current_user_has_rights(app.model.RightsType.editor,
                                   venue.managingOffererId)
    update(venue, request.json)
    app.model.PcObject.check_and_save(venue)
    return jsonify(venue._asdict(include=VENUES_INCLUDES)), 200
Example #3
0
def deactivate_venue_offers(venueId):
    venue = load_or_404(Venue, venueId)
    ensure_current_user_has_rights(RightsType.editor, venue.managingOffererId)
    offers = venue.offers
    deactivated_offers = update_is_active_status(offers, False)
    PcObject.save(*deactivated_offers)
    return jsonify([as_dict(offer, includes=OFFER_INCLUDES) for offer in deactivated_offers]), 200
def delete_event_occurence(id):
    eo = load_or_404(EventOccurence, id)
    ensure_current_user_has_rights(app.model.RightsType.editor,
                                   eo.venue.managingOffererId)
    #TODO: S'il y a des réservations il faut envoyer des mails !
    #TODO: Interdire la suppression d'évenements passés
    return delete(eo, request.json)
def create_event_occurence():
    print('request.json', request.json)
    eo = EventOccurence(from_dict=request.json)
    venue = load_or_404(Venue, request.json['venueId'])
    ensure_current_user_has_rights(app.model.RightsType.editor,
                                   venue.managingOffererId)
    app.model.PcObject.check_and_save(eo)
    return jsonify(eo._asdict()), 201
Example #6
0
def patch_thing(id):
    thing = load_or_404(Thing, id)
    update(thing, request.json)
    app.model.PcObject.check_and_save(thing)
    return jsonify(
        thing._asdict(include=THING_INCLUDES,
                      has_dehumanized_id=True,
                      has_model_name=True)), 200
Example #7
0
def edit_venue(venueId):
    venue = load_or_404(Venue, venueId)
    check_valid_edition(request, venue)
    validate_coordinates(request.json.get('latitude', None), request.json.get('longitude', None))
    ensure_current_user_has_rights(RightsType.editor, venue.managingOffererId)
    venue.populate_from_dict(request.json)
    save_venue(venue)
    return jsonify(as_dict(venue, includes=VENUE_INCLUDES)), 200
def edit_event_occurence(id):
    eo = load_or_404(EventOccurence, id)
    ensure_current_user_has_rights(app.model.RightsType.editor,
                                   eo.venue.managingOffererId)
    update(eo, request.json)
    #TODO: Si changement d'horaires et qu'il y a des réservations il faut envoyer des mails !
    #TODO: Interdire la modification d'évenements passés
    app.model.PcObject.check_and_save(eo)
    return jsonify(eo._asdict(include=VENUES_INCLUDES)), 200
Example #9
0
def patch_event(id):
    event = load_or_404(Event, id)
    update(event, request.json)
    app.model.PcObject.check_and_save(event)
    return jsonify(
        event._asdict(
            include=EVENT_INCLUDES,
            has_dehumanized_id=True,
            has_model_name=True
        )
    ), 200
Example #10
0
def update_mediation(mediation_id):
    mediation = load_or_404(Mediation, mediation_id)
    ensure_current_user_has_rights(RightsType.editor,
                                   mediation.offer.venue.managingOffererId)
    mediation = Mediation.query.filter_by(id=dehumanize(mediation_id)).first()
    data = request.json
    mediation.populate_from_dict(data)
    invalidate_recommendations_if_deactivating_object(
        data, mediation.recommendations)
    PcObject.save(mediation)
    return jsonify(as_dict(mediation, includes=MEDIATION_INCLUDES)), 200
Example #11
0
def get_stock(stock_id, mediation_id):
    filters = request.args.copy()
    query = find_stocks_with_possible_filters(
        filters, current_user).filter_by(id=dehumanize(stock_id))

    if mediation_id is not None:
        mediation = load_or_404(Mediation, mediation_id)

    if stock_id == '0':
        stock = {'id': '0', 'thing': {'id': '0', 'mediations': [mediation]}}
        return jsonify(stock)
    else:
        stock = query.first_or_404()
        return jsonify(as_dict(stock))
Example #12
0
def delete_stock(id):
    stock = load_or_404(Stock, id)
    check_offer_is_editable(stock.offer)
    offerer_id = stock.resolvedOffer.venue.managingOffererId
    ensure_current_user_has_rights(RightsType.editor, offerer_id)
    bookings = delete_stock_and_cancel_bookings(stock)

    if bookings:
        try:
            send_batch_cancellation_emails_to_users(bookings, send_raw_email)
            send_batch_cancellation_email_to_offerer(bookings, 'stock',
                                                     send_raw_email)
        except MailServiceException as e:
            app.logger.error('Mail service failure', e)

    PcObject.save(stock, *bookings)

    return jsonify(as_dict(stock)), 200
Example #13
0
def create_venue_provider():
    new_vp = VenueProvider(from_dict=request.json)

    # CHECK THAT THIS PROVIDER IS ACTIVE
    provider = load_or_404(Provider, request.json['providerId'])
    if not provider.isActive:
        errors = app.model.ApiErrors()
        errors.status_code = 401
        errors.addError('localClass', "Ce fournisseur n' est pas activé")
        errors.maybeRaise()
        return

    # CHECK THAT THERE IS NOT ALREADY A VENUE PROVIDER
    # FOR THE SAME VENUE, PROVIDER, IDENTIFIER
    same_venue_provider = VenueProvider.query.filter_by(
        providerId=provider.id,
        venueId=dehumanize(request.json['venueId']),
        venueIdAtOfferProvider=request.json['venueIdAtOfferProvider']
    ).first()
    if same_venue_provider:
        errors = app.model.ApiErrors()
        errors.status_code = 401
        errors.addError('venueIdAtOfferProvider', "Il y a déjà un fournisseur pour votre identifiant")
        errors.maybeRaise()

    # SAVE
    app.model.PcObject.check_and_save(new_vp)

    # CALL THE PROVIDER SUB PROCESS
    api_root = Path(path.dirname(path.realpath(__file__))) / '..'
    p = subprocess.Popen('PYTHONPATH="." python scripts/pc.py update_providables'
                         + ' --venueProvider ' + str(new_vp.id),
                         #stdout=subprocess.PIPE,
                         #stderr=subprocess.PIPE,
                         shell=True,
                         cwd=api_root)
    #out, err = p.communicate()
    #print("STDOUT:", out)
    #print("STDERR:", err)

    # RETURN
    return jsonify(new_vp._asdict(include=VENUE_PROVIDER_INCLUDES)), 201
Example #14
0
def get_event(id):
    event = load_or_404(Event, id)
    print('event.type', event.type)
    return jsonify(
        event._asdict(include=EVENT_INCLUDES)
    ), 200
Example #15
0
def edit_venue_provider(id):
    vp = load_or_404(VenueProvider, id)
    update(vp, request.json)
    app.model.PcObject.check_and_save(vp)
    return jsonify(vp._asdict()), 200
Example #16
0
def get_venue_provider(id):
    vp = load_or_404(VenueProvider, id)
    return jsonify(vp._asdict(include=VENUE_PROVIDER_INCLUDES))
Example #17
0
def get_venue_provider(id):
    venue_provider = load_or_404(VenueProvider, id)
    return jsonify(as_dict(venue_provider, includes=VENUE_PROVIDER_INCLUDES))
Example #18
0
def get_offerer(id):
    ensure_current_user_has_rights(RightsType.editor, dehumanize(id))
    offerer = load_or_404(Offerer, id)

    return jsonify(get_dict_offerer(offerer)), 200
Example #19
0
def get_mediation(id):
    mediation = load_or_404(Mediation, id)
    return jsonify(mediation._asdict())
Example #20
0
def get_score(id):
    score = load_or_404(Score, id)
    return jsonify(score.asdict(includes=SCORE_INCLUDES)), 200
def get_event_occurence(venueId):
    eo = load_or_404(EventOccurence, id)
    return jsonify(eo._asdict())
Example #22
0
def delete_mediation(id):
    mediation = load_or_404(Mediation, id)
    ensure_current_user_has_rights(RightsType.editor, mediation.offererId)
    return delete(mediation)
Example #23
0
def patch_staff_voice(id):
    staff_voice = load_or_404(StaffVoice, id)
    staff_voice.populateFromDict(request.json)
    Wrapper.check_and_save(staff_voice)
    return jsonify(staff_voice.asdict(includes=STAFF_VOICE_INCLUDES)), 200
Example #24
0
def get_venue(venueId):
    venue = load_or_404(Venue, venueId)
    return jsonify(venue._asdict(include=VENUES_INCLUDES))
Example #25
0
def get_favorite(favorite_id):
    favorite = load_or_404(Favorite, favorite_id)
    return jsonify(_serialize_favorite(favorite)), 200
Example #26
0
def get_mediation(mediation_id):
    mediation = load_or_404(Mediation, mediation_id)
    return jsonify(as_dict(mediation))
Example #27
0
def delete_venue_provider(id):
    vp = load_or_404(VenueProvider, id)
    ensure_current_user_has_rights(app.model.RightsType.editor,
                                   vp.venue.managingOffererId)
    # TODO: should we also delete all the associated events/things...?
    return delete(vp)
Example #28
0
def get_offer(id):
    offer = load_or_404(Offer, id)
    return jsonify(as_dict(offer, includes=OFFER_INCLUDES))
Example #29
0
def get_venue(venueId):
    venue = load_or_404(Venue, venueId)
    ensure_current_user_has_rights(RightsType.editor, venue.managingOffererId)
    return jsonify(as_dict(venue, includes=VENUE_INCLUDES)), 200