Esempio n. 1
0
 def put(self, project):
     form = EditProjectForm(meta={'csrf': False})
     if form.validate():
         form.update(project)
         db.session.commit()
         return "UPDATED"
     return form.errors, 400
Esempio n. 2
0
def edit_project():
    edit_form = EditProjectForm()
    import_form = UploadForm()
    # Import form
    if import_form.validate_on_submit():
        try:
            import_project(import_form.file.data.stream, g.project)
            flash(_("Project successfully uploaded"))

            return redirect(url_for("main.list_bills"))
        except ValueError:
            flash(_("Invalid JSON"), category="error")

    # Edit form
    if edit_form.validate_on_submit():
        project = edit_form.update(g.project)
        db.session.add(project)
        db.session.commit()

        return redirect(url_for("main.list_bills"))
    else:
        edit_form.name.data = g.project.name
        edit_form.contact_email.data = g.project.contact_email

    return render_template(
        "edit_project.html",
        edit_form=edit_form,
        import_form=import_form,
        current_view="edit_project",
    )
Esempio n. 3
0
 def put(self, project):
     form = EditProjectForm(meta={"csrf": False})
     if form.validate() and current_app.config.get("ALLOW_PUBLIC_PROJECT_CREATION"):
         form.update(project)
         db.session.commit()
         return "UPDATED"
     return form.errors, 400
Esempio n. 4
0
def edit_project():
    edit_form = EditProjectForm()
    import_form = UploadForm()
    # Import form
    if import_form.validate_on_submit():
        try:
            import_project(import_form.file.data.stream, g.project)
            flash(_("Project successfully uploaded"))

            return redirect(url_for("main.list_bills"))
        except ValueError:
            flash(_("Invalid JSON"), category="danger")

    # Edit form
    if edit_form.validate_on_submit():
        project = edit_form.update(g.project)
        # Update converted currency
        if project.default_currency != CurrencyConverter.no_currency:
            for bill in project.get_bills():

                if bill.original_currency == CurrencyConverter.no_currency:
                    bill.original_currency = project.default_currency

                bill.converted_amount = CurrencyConverter().exchange_currency(
                    bill.amount, bill.original_currency,
                    project.default_currency)
                db.session.add(bill)

        db.session.add(project)
        db.session.commit()

        return redirect(url_for("main.list_bills"))
    else:
        edit_form.name.data = g.project.name

        if g.project.logging_preference != LoggingMode.DISABLED:
            edit_form.project_history.data = True
            if g.project.logging_preference == LoggingMode.RECORD_IP:
                edit_form.ip_recording.data = True

        edit_form.contact_email.data = g.project.contact_email
        edit_form.default_currency.data = g.project.default_currency

    return render_template(
        "edit_project.html",
        edit_form=edit_form,
        import_form=import_form,
        current_view="edit_project",
    )
Esempio n. 5
0
def edit_project():
    edit_form = EditProjectForm()
    if request.method == "POST":
        if edit_form.validate():
            project = edit_form.update(g.project)
            db.session.add(project)
            db.session.commit()

            return redirect(url_for(".list_bills"))
    else:
        edit_form.name.data = g.project.name
        edit_form.contact_email.data = g.project.contact_email

    return render_template("edit_project.html",
                           edit_form=edit_form,
                           current_view="edit_project")
Esempio n. 6
0
def edit_project():
    edit_form = EditProjectForm()
    export_form = ExportForm()
    if request.method == "POST":
        if edit_form.validate():
            project = edit_form.update(g.project)
            db.session.commit()
            session[project.id] = project.password

            return redirect(url_for(".list_bills"))

        if export_form.validate():
            export_format = export_form.export_format.data
            export_type = export_form.export_type.data

            if export_type == 'transactions':
                export = g.project.get_transactions_to_settle_bill(
                    pretty_output=True)
            if export_type == "bills":
                export = g.project.get_pretty_bills(
                    export_format=export_format)

            if export_format == "json":
                file2export = list_of_dicts2json(export)
            if export_format == "csv":
                file2export = list_of_dicts2csv(export)

            return send_file(file2export,
                             attachment_filename="%s-%s.%s" %
                             (g.project.id, export_type, export_format),
                             as_attachment=True
                             )
    else:
        edit_form.name.data = g.project.name
        edit_form.password.data = g.project.password
        edit_form.contact_email.data = g.project.contact_email

    return render_template("edit_project.html", edit_form=edit_form, export_form=export_form)
Esempio n. 7
0
def edit_project():
    edit_form = EditProjectForm()
    export_form = ExportForm()
    if request.method == "POST":
        if edit_form.validate():
            project = edit_form.update(g.project)
            db.session.add(project)
            db.session.commit()

            return redirect(url_for(".list_bills"))

        if export_form.validate():
            export_format = export_form.export_format.data
            export_type = export_form.export_type.data

            if export_type == 'transactions':
                export = g.project.get_transactions_to_settle_bill(
                    pretty_output=True)
            if export_type == "bills":
                export = g.project.get_pretty_bills(
                    export_format=export_format)

            if export_format == "json":
                file2export = list_of_dicts2json(export)
            if export_format == "csv":
                file2export = list_of_dicts2csv(export)

            return send_file(file2export,
                             attachment_filename="%s-%s.%s" %
                             (g.project.id, export_type, export_format),
                             as_attachment=True
                             )
    else:
        edit_form.name.data = g.project.name
        edit_form.password.data = g.project.password
        edit_form.contact_email.data = g.project.contact_email

    return render_template("edit_project.html", edit_form=edit_form, export_form=export_form)
Esempio n. 8
0
def edit_project():
    edit_form = EditProjectForm()
    import_form = UploadForm()
    # Import form
    if import_form.validate_on_submit():
        try:
            import_project(import_form.file.data.stream, g.project)
            flash(_("Project successfully uploaded"))

            return redirect(url_for("main.list_bills"))
        except ValueError:
            flash(_("Invalid JSON"), category="danger")

    # Edit form
    if edit_form.validate_on_submit():
        project = edit_form.update(g.project)
        db.session.add(project)
        db.session.commit()

        return redirect(url_for("main.list_bills"))
    else:
        edit_form.name.data = g.project.name

        if g.project.logging_preference != LoggingMode.DISABLED:
            edit_form.project_history.data = True
            if g.project.logging_preference == LoggingMode.RECORD_IP:
                edit_form.ip_recording.data = True

        edit_form.contact_email.data = g.project.contact_email

    return render_template(
        "edit_project.html",
        edit_form=edit_form,
        import_form=import_form,
        current_view="edit_project",
    )