コード例 #1
0
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)
コード例 #2
0
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)
コード例 #3
0
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()