def new_planning():
    user_id = g.user_id
    planning_id = _generate_planning_uuid()
    folder = os.path.join(app.config['UPLOAD_FOLDER'], planning_id)
    if os.path.isdir(folder):
        raise Exception('Planning uuid collision. UUID4 busted ?')
    os.makedirs(folder)

    # Get ICS
    if 'ics_url' in request.form:
        try:
            ics_url = request.form['ics_url']
            ics_fullpath = _dl_and_save_ics_file(ics_url, folder)
        except CAPException as e:
            return e.res
    elif 'ics_file' in request.files:
        ics_file = request.files['ics_file']
        ics_fullpath = _save_ics_file(ics_file, folder)
    else:
        return _bad_request()

    # Get MBZ or empty mbz_fullpath
    mbz_fullpath = None
    if 'mbz_file' in request.files:
        mbz_file = request.files['mbz_file']
        mbz_fullpath = _save_mbz_file(mbz_file, folder)

    # .get() returns None if key is not defined
    # Client should be pressured to send the information from the front-end
    name = request.form.get('name')
    year = request.form.get('year')
    semester = request.form.get('semester')
    group = request.form.get('group')

    planning = Planning(planning_id, user_id, '', ics_fullpath, mbz_fullpath,
                        name, year, semester, group)
    db_session.add(planning)
    db_session.commit()

    return jsonify(planning=planning.as_pub_dict())
def new_planning():
    user_id = g.user_id
    planning_id = _generate_planning_uuid()
    folder = os.path.join(app.config['UPLOAD_FOLDER'], planning_id)
    if os.path.isdir(folder):
        raise Exception('Planning uuid collision. UUID4 busted ?')
    os.makedirs(folder)

    # Get ICS
    if 'ics_url' in request.form:
        try:
            ics_url = request.form['ics_url']
            ics_fullpath = _dl_and_save_ics_file(ics_url, folder)
        except CAPException as e:
            return e.res
    elif 'ics_file' in request.files:
        ics_file = request.files['ics_file']
        ics_fullpath = _save_ics_file(ics_file, folder)
    else:
        return _bad_request()

    # Get MBZ or empty mbz_fullpath
    mbz_fullpath = None
    if 'mbz_file' in request.files:
        mbz_file = request.files['mbz_file']
        mbz_fullpath = _save_mbz_file(mbz_file, folder)

    # .get() returns None if key is not defined
    # Client should be pressured to send the information from the front-end
    name = request.form.get('name')
    year = request.form.get('year')
    semester = request.form.get('semester')
    group = request.form.get('group')

    planning = Planning(planning_id, user_id, '', ics_fullpath, mbz_fullpath,
                        name, year, semester, group)
    db_session.add(planning)
    db_session.commit()

    return jsonify(planning=planning.as_pub_dict())
def new_planning():
    ics_url = request.form["ics_url"]
    if not ics_url:
        return _bad_request()

    mbz_file = request.files["file"]
    if not mbz_file:
        return _bad_request()

    planning_id = _generate_planning_uuid()

    folder = os.path.join(app.config["UPLOAD_FOLDER"], planning_id)
    if os.path.isdir(folder):
        raise Exception("Planning uuid collision. UUID4 busted ?")
    os.makedirs(folder)

    mbz_fullpath = _save_mbz_file(mbz_file, folder)

    planning = Planning(planning_id, "", ics_url, mbz_fullpath)
    db_session.add(planning)
    db_session.commit()

    return jsonify(planning=planning.as_pub_dict())
示例#4
0
def planning_exists(form, field):
    if Planning.select().where(Planning.planning_name == field.data).exists():
        raise ValidationError('User with that name already exists.')