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())
def planning_exists(form, field): if Planning.select().where(Planning.planning_name == field.data).exists(): raise ValidationError('User with that name already exists.')