Office driver api get data works

This commit is contained in:
2024-03-12 18:28:22 -04:00
parent b71bbe2dc5
commit 001b8218bd
17 changed files with 345 additions and 34 deletions

4
.dockerignore Executable file
View File

@@ -0,0 +1,4 @@
local_settings.py
.git
.gitignore
githubtoken.txt

135
.gitignore vendored Executable file
View File

@@ -0,0 +1,135 @@
# Created by .ignore support plugin (hsz.mobi)
### Python template
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
*.idea
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
*.iml
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
db.sqlite3
# Flask stuff:
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
venvwindows/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
app/package.json
app/package-lock.json
.vscode/
clearnet.ini
rsync_svg.txt
setup/
word_seeds.txt
workspace.code-workspace
app/static/bootstrap
/app/static/images/
/app/static/fonts/
/app/static/css/
/app/static/js/
/app/static/javascriptaddons/
.idea
/config.py
instance/config.py
.idea/
/passwords.py
config.py
crons.txt
getnewitems.py
helperfunctions/
test.py
tools/
nginx.txt
app/node_modules/

18
Dockerfile Executable file
View File

@@ -0,0 +1,18 @@
FROM python:3.12-bullseye
ENV PYTHONFAULTHANDLER=1
ENV PYTHONUNBUFFERED=1
RUN mkdir -p /app
COPY requirements.txt /app
WORKDIR /app
RUN pip3 install -r requirements.txt
COPY . /app
CMD ["python", "app.py", "--host", "0.0.0.0"]

View File

@@ -180,6 +180,10 @@ app.register_blueprint(delivery_blueprint, url_prefix='/delivery')
from .delivery_data import delivery_data as delivery_data_blueprint
app.register_blueprint(delivery_data_blueprint, url_prefix='/deliverydata')
from .delivery_status import deliverystatus as delivery_status_blueprint
app.register_blueprint(delivery_status_blueprint, url_prefix='/deliverystatus')
from .search import search as search_blueprint
app.register_blueprint(search_blueprint, url_prefix='/search')

View File

@@ -18,11 +18,13 @@ def create_oil_price():
price_from_supplier = request.json["price_from_supplier"]
price_for_customer = request.json["price_for_customer"]
price_for_employee = request.json["price_for_employee"]
price_same_day = request.json["price_same_day"]
new_admin_oil_price = Pricing_Oil_Oil(
price_from_supplier=price_from_supplier,
price_for_customer=price_for_customer,
price_for_employee=price_for_employee,
price_same_day=price_same_day,
date=now,
)
@@ -41,11 +43,14 @@ def create_service_price():
Changes general labor rates prices
"""
now = datetime.utcnow()
price_service_hour = request.json["price_service_hour"]
price_emergency_service_hourly_rate = request.json["price_emergency_service_hour"]
price_emergency_call = request.json["price_emergency_call"]
price_out_of_oil = request.json["price_out_of_oil"]
price_prime = request.json["price_prime"]
price_cleaning = request.json["price_cleaning"]
price_service = Pricing_Service_General(
price_service_hour=price_service_hour,
@@ -53,6 +58,7 @@ def create_service_price():
price_emergency_service_hour=price_emergency_service_hourly_rate,
price_prime=price_prime,
price_emergency_call=price_emergency_call,
price_cleaning=price_cleaning,
date=now,
)

View File

@@ -94,16 +94,8 @@ def login():
.filter_by(username=username)\
.first()
if not bcrypt.check_password_hash(user.password_hash, password):
current_fails = int(user.fails)
new_fails = current_fails + 1
user.fails = new_fails
db.session.add(user)
db.session.commit()
return jsonify({"error": True}), 200
user.locked = 0
user.fails = 0
db.session.add(user)
db.session.commit()

View File

@@ -59,7 +59,7 @@ class Delivery_Delivery(db.Model):
payment_type = db.Column(db.INTEGER)
payment_card_id = db.Column(db.INTEGER)
driver_employee_id = db.Column(db.VARCHAR(140))
driver_employee_id = db.Column(db.INTEGER)
driver_first_name = db.Column(db.VARCHAR(140))
driver_last_name = db.Column(db.VARCHAR(140))

View File

@@ -17,7 +17,6 @@ class Pricing_Service_General(db.Model):
price_emergency_call = db.Column(db.DECIMAL(50, 2))
price_out_of_oil = db.Column(db.DECIMAL(50, 2))
price_prime = db.Column(db.DECIMAL(50, 2))
price_same_day = db.Column(db.DECIMAL(50, 2))
price_cleaning = db.Column(db.DECIMAL(50, 2))
date = db.Column(db.TIMESTAMP(), default=datetime.utcnow())
@@ -40,6 +39,8 @@ class Pricing_Oil_Oil(db.Model):
price_from_supplier = db.Column(db.DECIMAL(50, 2))
price_for_customer = db.Column(db.DECIMAL(50, 2))
price_for_employee = db.Column(db.DECIMAL(50, 2))
price_same_day = db.Column(db.DECIMAL(50, 2))
price_prime = db.Column(db.DECIMAL(50, 2))
date = db.Column(db.TIMESTAMP(), default=datetime.utcnow())

View File

@@ -53,7 +53,6 @@ def get_a_customer(customer_id):
.query(Customer_Customer)
.filter(Customer_Customer.id == customer_id)
.first())
print(get_customer)
customer_schema = Customer_Customer_schema(many=False)
return jsonify(customer_schema.dump(get_customer))
@@ -186,7 +185,6 @@ def delete_customer(customer_id):
db.session.delete(get_customer)
db.session.commit()
print("deleted")
return jsonify({
"ok": True,
'user': {

View File

@@ -1,9 +1,8 @@
from flask import request, jsonify
from flask_login import current_user
from datetime import date
from datetime import date, datetime, timedelta
from app.delivery import delivery
from app import db
from datetime import datetime
from app.classes.customer import Customer_Customer
from app.classes.delivery import (Delivery_Delivery,
Delivery_Delivery_schema,
@@ -11,6 +10,7 @@ from app.classes.delivery import (Delivery_Delivery,
Delivery_Payment,
Delivery_Payment_schema,
)
from app.classes.employee import Employee_Employee
from app.classes.cards import Card_Card
from app.classes.pricing import Pricing_Oil_Oil
from app.classes.auth import Auth_User
@@ -20,12 +20,10 @@ from app.classes.pricing import Pricing_Service_General
def get_a_delivery(delivery_id):
"""
"""
get_delivery = db.session\
.query(Delivery_Delivery)\
.filter(Delivery_Delivery.id == delivery_id)\
.first()
return jsonify({
"ok": True,
'delivery': {
@@ -42,10 +40,14 @@ def get_a_delivery(delivery_id):
'delivery_status': get_delivery.delivery_status,
'payment_type': get_delivery.payment_type,
'payment_card_id': get_delivery.payment_card_id,
'driver_employee_id': get_delivery.driver_employee_id,
'driver_first_name': get_delivery.driver_first_name,
'driver_last_name': get_delivery.driver_last_name,
},
}), 200
@delivery.route("/order/<int:delivery_id>", methods=["GET"])
def get_a_specific_delivery(delivery_id):
@@ -362,13 +364,16 @@ def edit_a_delivery(delivery_id):
delivery_status = request.json["delivery_status"]
when_to_deliver = request.json["expected_delivery_date"]
dispatcher_notes_taken = request.json["dispatcher_notes_taken"]
customer_wants_fill = request.json["customer_asked_for_fill"]
card_payment = request.json["credit"]
cash_payment = request.json["cash"]
delivery_driver_id = request.json["driver_employee_id"]
get_driver = (db.session
.query(Employee_Employee)
.filter(Employee_Employee.id == delivery_driver_id)
.first())
if request.json["credit_card_id"]:
card_payment_id = request.json["credit_card_id"]
else:
@@ -423,6 +428,10 @@ def edit_a_delivery(delivery_id):
get_delivery.payment_type = delivery_payment_method
get_delivery.payment_card_id = card_id_from_customer
get_delivery.driver_last_name = get_driver.employee_last_name
get_delivery.driver_first_name = get_driver.employee_first_name
get_delivery.driver_employee_id = get_driver.id
db.session.add(get_delivery)
db.session.commit()
@@ -465,6 +474,18 @@ def create_a_delivery(user_id):
card_payment = request.json["credit"]
cash_payment = request.json["cash"]
delivery_driver_id = request.json["driver_employee_id"]
get_driver = (db.session
.query(Employee_Employee)
.filter(Employee_Employee.id == delivery_driver_id)
.first())
driver_l_name = get_driver.employee_last_name
driver_f_name = get_driver.employee_first_name
driver_emp_id = get_driver.id
try:
if request.json["credit_card_id"]:
card_payment_id = request.json["credit_card_id"]
@@ -522,13 +543,13 @@ def create_a_delivery(user_id):
precharge_amount = int(gallons_ordered) * get_today_price.price_for_customer
if same_day_asked == 1 and prime_asked == 0:
total_precharge_amount = precharge_amount + get_service_prices.price_same_day
total_precharge_amount = precharge_amount + get_today_price.price_same_day
elif prime_asked == 1 and same_day_asked == 0:
total_precharge_amount = precharge_amount + get_service_prices.price_prime
total_precharge_amount = precharge_amount + get_today_price.price_prime
else:
total_precharge_amount = precharge_amount + get_service_prices.price_prime + get_service_prices.price_same_day
total_precharge_amount = precharge_amount + get_today_price.price_prime + get_today_price.price_same_day
new_delivery = Delivery_Delivery(
@@ -559,6 +580,9 @@ def create_a_delivery(user_id):
pre_charge_amount=total_precharge_amount,
total_price=precharge_amount,
final_price=0,
driver_last_name = driver_l_name,
driver_first_name = driver_f_name,
driver_employee_id= driver_emp_id,
)

View File

@@ -0,0 +1,7 @@
# coding=utf-8
from flask import Blueprint
deliverystatus = Blueprint('delivery_status', __name__)
from . import views

View File

@@ -0,0 +1,62 @@
from flask import request, jsonify
from flask_login import current_user
from datetime import date, timedelta, time
from app.delivery_status import deliverystatus
from app import db
from datetime import datetime
from app.classes.customer import Customer_Customer
from app.classes.delivery import (Delivery_Delivery,
Delivery_Delivery_schema,
Delivery_Notes_Driver,
Delivery_Payment,
Delivery_Payment_schema,
)
from app.classes.cards import Card_Card
from app.classes.pricing import Pricing_Oil_Oil
from app.classes.auth import Auth_User
from app.classes.pricing import Pricing_Service_General
@deliverystatus.route("/today/driver/<int:user_id>", methods=["GET"])
def get_deliveries_driver_day(user_id):
"""
Get deliveries for driver that day
"""
get_delivery = (db.session
.query(Delivery_Delivery)
.filter(Delivery_Delivery.driver_employee_id == user_id)
.filter(Delivery_Delivery.expected_delivery_date == date.today())
.all())
delivery_schema = Delivery_Delivery_schema(many=True)
return jsonify(delivery_schema.dump(get_delivery))
@deliverystatus.route("/tommorrow/driver/<int:user_id>", methods=["GET"])
def get_deliveries_driver_tommorrow(user_id):
"""
Get deliveries for driver tommrrow
"""
tomm = datetime.now() + timedelta(days=1)
get_delivery = (db.session
.query(Delivery_Delivery)
.filter(Delivery_Delivery.driver_employee_id == user_id)
.filter(Delivery_Delivery.expected_delivery_date == tomm)
.all())
delivery_schema = Delivery_Delivery_schema(many=True)
return jsonify(delivery_schema.dump(get_delivery))
@deliverystatus.route("/waiting/driver/<int:user_id>", methods=["GET"])
def get_deliveries_driver_waiting(user_id):
"""
waiting deliveries scheduled out
"""
get_delivery = (db.session
.query(Delivery_Delivery)
.filter(Delivery_Delivery.driver_employee_id == user_id)
.filter(Delivery_Delivery.delivery_status == 1)
.all())
delivery_schema = Delivery_Delivery_schema(many=True)
return jsonify(delivery_schema.dump(get_delivery))

View File

@@ -12,6 +12,7 @@ from app.classes.employee import Employee_Employee, Employee_Employee_schema
@employees.route("/<int:userid>", methods=["GET"])
@login_required
def get_specific_employee(userid):
print(userid)
employee = db.session \
.query(Employee_Employee) \
.filter(Employee_Employee.id == userid) \
@@ -27,7 +28,6 @@ def get_specific_employee_user_id(userid):
.query(Employee_Employee) \
.filter(Employee_Employee.user_id == userid) \
.first()
# print(employee.id)
employee_schema = Employee_Employee_schema(many=False)
return jsonify(employee_schema.dump(employee))
@@ -69,9 +69,11 @@ def all_employees():
def all_employees_drivers():
employee_list = db.session \
.query(Employee_Employee) \
.filter(Employee_Employee.employee_type == 4) \
.filter(or_(Employee_Employee.employee_type == 4,
Employee_Employee.employee_type == 8)) \
.all()
customer_schema = Employee_Employee_schema(mwany=True)
customer_schema = Employee_Employee_schema(many=True)
return jsonify(customer_schema.dump(employee_list))
@@ -152,7 +154,7 @@ def employee_edit(employee_id):
e_type = request.json["employee_type"]
e_start_date = request.json["employee_start_date"]
e_end_date = request.json["employee_end_date"]
print(request.json["employee_end_date"])
get_employee = db.session \
.query(Employee_Employee) \

View File

@@ -24,7 +24,6 @@ def get_service_price():
.first())
return jsonify({"ok": True,
'same_day': get_price_query.price_same_day,
'price_hourly': get_price_query.price_service_hour,
'emergency_fee': get_price_query.price_emergency_call,
'emergency_rate': get_price_query.price_emergency_service_hour,

View File

@@ -14,21 +14,15 @@ def set_card_main(user_id):
.query(Card_Card) \
.filter(Card_Card.user_id == user_id) \
.count()
print(get_card_count)
if get_card_count > 0:
print("true")
get_old_card = db.session \
.query(Card_Card) \
.filter(Card_Card.main_card == True) \
.filter(Card_Card.user_id == user_id) \
.first()
print(get_old_card.id)
get_old_card.main_card = False
db.session.add(get_old_card)
db.session.commit()

54
local_settings.py Executable file
View File

@@ -0,0 +1,54 @@
import redis
class ApplicationConfig:
"""
Basic Configuration for a generic User
"""
CURRENT_SETTINGS = 'LOCAL'
# databases info
POSTGRES_USERNAME = 'postgres'
POSTGRES_PW = 'password'
POSTGRES_SERVER = '192.168.1.204:5432'
POSTGRES_DBNAME00 = 'eamco'
SQLALCHEMY_DATABASE_URI = "postgresql+psycopg2://{}:{}@{}/{}".format(POSTGRES_USERNAME,
POSTGRES_PW,
POSTGRES_SERVER,
POSTGRES_DBNAME00
)
SQLALCHEMY_BINDS = {'eamco': SQLALCHEMY_DATABASE_URI}
# sqlalchemy config
SQLALCHEMY_TRACK_MODIFICATIONS = False
TRAP_HTTP_EXCEPTIONS = True
PROPAGATE_EXCEPTIONS = True
DEBUG = True
UPLOADED_FILES_DEST_ITEM = '/data/item'
# file uploads
UPLOADED_FILES_ALLOW = ['png', 'jpeg', 'jpg', 'png', 'gif']
MAX_CONTENT_LENGTH = 5 * 2500 * 2500
ALLOWED_EXTENSIONS = ['png', 'jpeg', 'jpg', 'png', 'gif']
# secret keys
SECRET_KEY = "youwillneverguessthiskeycia"
# sessions
SESSION_COOKIE_NAME = "eamco_session"
SESSION_COOKIE_SECURE = False
SESSION_COOKIE_HTTPONLY = True
REMEMBER_COOKIE_HTTPONLY = True
SESSION_COOKIE_SAMESITE = "Strict"
SESSION_PERMANENT = False
SESSION_USE_SIGNER = True
# CORS
ORIGIN_URL = "*"
CORS_SEND_WILDCARD = False
CORS_SUPPORT_CREDENTIALS = True
CORS_EXPOSE_HEADERS = None
CORS_ALLOW_HEADERS = "*"
CORS_ORIGIN_WHITELIST = ['http://localhost:5173', '*']

11
runProduction.py Executable file
View File

@@ -0,0 +1,11 @@
# coding=utf-8
from app import app
PORT = 6000
HOST = '0.0.0.0'
if __name__ == '__main__':
app.run(
host=HOST,
port=PORT,
threaded=True
)