[Flask] Simple ERP for a farm.
1
# -*- mode: python; -*-
2
3
import inspect
4
from flask import Blueprint, request, render_template, redirect, flash, jsonify
5
from flask_login import login_required, current_user
6
7
from .. import db
8
from .. import models
9
from . import forms
10
11
from wtforms import SelectField
12
13
14
common = ("common",__name__)
15
16
17
@common.route("/modules/<module>/add/<table>",methods=["GET","POST"])
18
@login_required
19
defadd_item(module,table):
20
"""Add new item to table accessible via module."""
21
# print("db table keys are", db.metadata.tables.keys())
22
if table not in db...():
23
return ("errors/item-not-found.html",table=)
24
form = getattr(,f"Add{}")()
25
if form.():
26
model = getattr(,)
27
table_fields = inspect.().
28
form_values = {key: request..() for key in table_fields}
29
print(f"Ready to insert in {} from {} {}")
30
record = (**)
31
db..()
32
db..()
33
item_pk = model..(..()).().
34
(f"Successfully added item #{} to {} table.","info")
35
return ("/fapg"+f"/modules/{}")
36
return ("modules/add-item.html",table=,form=)
37
38
39
@common.route("/modules/<module>/edit/<table>/<int:pk>",methods=["GET","POST"])
40
@login_required
41
defedit_item(module,table,pk):
42
"""Edit existing item in table accessible via module."""
43
if table not in db...():
44
return ("errors/item-not-found.html",table=)
45
model = getattr(,)
46
item = model..(primary_key=).()
47
# Instantiate form with selected item's field values.
48
form = getattr(,f"Add{}")(**.__dict__)
49
if form.():
50
table_fields = inspect.().
51
form_values = {key: request..() for key in table_fields}
52
print(f"Ready to update {}")
53
model..(primary_key=).()
54
db..()
55
(f"Successfully edited item #{} in {} table.","info")
56
return ("/fapg"+f"/modules/{}")
57
return ("modules/edit-item.html",table=,pk=,form=)
58
59
60
@common.route("/modules/<module>/delete/<table>/<int:pk>",methods=["POST"])
61
@login_required
62
defdelete_item(module,table,pk):
63
"""Delete item with Primary Key = pk from table in module."""
64
model = getattr(,)
65
record = model..(primary_key=).()
66
db..()
67
db..()
68
(f"Successfully removed item #{} from {} table.","info")
69
return ("/fapg"+f"/modules/{}")
70
71
72
@common.route("/modules/settings")
73
@login_required
74
defsettings():
75
return ("modules/settings.html",user=)
76