def add_project(project): db = connect_db(app.config.get('DB')) Project.set_db(db) # db_project = Project() db_project.author = project['author'] db_project.title = project['title'] db_project.start_date = datetime.date.today() db_project.due_date = datetime.date.today() db_project.text = project['descr'] # db.save_doc(db_project)
def edit(id): errors = [] form = EditProjectForm(request.form) project = None if id == NEW_PROJECT_ID: project = Project() else: if not g.db.doc_exist(id): abort(404) project = Project.get(id) if request.method == 'GET': form = EditProjectForm(obj=project) pass if request.method == 'POST' and form.validate(): form.populate_obj(project) project.author = session['username'] ''' if id != NEW_PROJECT_ID: for ff in request.files.keys(): f = request.files[ff] if f: fname = secure_filename(f.filename) fld = os.path.join(UPLOADED_FILES, id) if not os.path.exists(fld): os.mkdir(fld) target_path = os.path.join(fld, fname) while os.path.exists(target_path): filename, ext = os.path.splitext(target_path) r = ''.join(random.choice('0123456789abcdef') for i in range(8)) target_path = os.path.join(fld, filename + '-' + r + ext) f.save(target_path) flash('Successfully uploaded %s' % fname) ''' project.save() flash('Project was successfully %s' % ('created' if id == NEW_PROJECT_ID else 'updated')) return redirect(url_for('index.index')) errors.extend(format_form_errors(form.errors.items())) return render_template('project_edit.html', id=id, form=form, errors=errors)
router = APIRouter() @router.post("/test_file/") async def benford_test_file(file: UploadFile = File( ...)) -> BenfordStatsResponse: content = cast(bytes, await file.read()) try: if (df := get_data_frame(content)) is None: raise ValueError("Could not parse your file.") stats = {} for column in df.columns: if (lst := type_guard_and_parse(df[column].to_list())): # PyMongo does not allow for `.` in keys. digit_stats = significant_digits_stats(lst) stats[column.replace(".", ",")] = ColumnStats( values=digit_stats, obey=does_obey_benford(digit_stats)) response = BenfordStatsResponse(stats=stats) project = Project(stats=stats, filename=file.filename) await db.project.insert_one(project.mongo()) except (Exception, ValueError, ValidationError) as err: getLogger("fastapi").error(err) raise HTTPException(status_code=400, detail=str(err)) from err return response @router.get("/assert_stats/") async def benford_test_data() -> Dict[str, float]: return get_benford_assertion()