split api pythons
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
from collections import defaultdict
|
||||
from datetime import date, datetime
|
||||
from decimal import Decimal
|
||||
|
||||
from flask import current_app, jsonify, request, url_for
|
||||
from flask_login import current_user, login_required, login_user
|
||||
from sqlalchemy import extract
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
|
||||
from . import api
|
||||
from .common import accessible_vehicles, boolv, fail, payload, response, role_required, station_dict, user_dict, vehicle_dict
|
||||
from .. import THEMES
|
||||
from ..api_tokens import create_access_token
|
||||
from ..extensions import db
|
||||
from ..models import AppSetting, CompanySettings, FuelCard, FuelCardPolicy, FuelCardStationRule, FuelEntry, FuelStationCompany, FuelStationPoint, OrlenPrice, User, Vehicle
|
||||
from ..services import POLISH_REGIONS, aggregate_ure_companies, calculate_costs, fetch_orlen_price, fetch_orlen_range, fetch_ure_stations, invoice_period
|
||||
from ..station_catalog import sync_station_catalog
|
||||
|
||||
FUEL_TYPES = ("PB95", "PB98", "DIESEL", "LPG")
|
||||
|
||||
@api.get('/settings')
|
||||
@role_required('boss','admin')
|
||||
def get_settings():
|
||||
s=CompanySettings.query.first();return response({'name':s.name,'entity_type':s.entity_type,'vat_rate':float(s.vat_rate),'vat_deduction_percent':float(s.vat_deduction_percent),'region':s.region,'invoice_split_day':s.invoice_split_day,'invoice_split_enabled':(db.session.get(AppSetting,'invoice_split_enabled').value=='1')})
|
||||
|
||||
@api.put('/settings')
|
||||
@role_required('boss','admin')
|
||||
def update_settings():
|
||||
d=payload();s=CompanySettings.query.first()
|
||||
try:
|
||||
s.name=d['name'];s.entity_type=d['entity_type'];s.vat_rate=Decimal(d['vat_rate']);s.vat_deduction_percent=Decimal(d['vat_deduction_percent']);s.region=d['region'].strip().lower();s.invoice_split_day=int(d.get('invoice_split_day') or 15)
|
||||
db.session.merge(AppSetting(key='invoice_split_enabled',value='1' if boolv(d,'invoice_split_enabled') else '0'));db.session.commit();return response(message='Zapisano ustawienia')
|
||||
except Exception as exc:db.session.rollback();return fail(str(exc))
|
||||
|
||||
|
||||
@api.get('/app-settings')
|
||||
@role_required('boss','admin')
|
||||
def get_app_settings():
|
||||
return response({'theme':(db.session.get(AppSetting,'theme') or AppSetting(value='bootstrap')).value})
|
||||
|
||||
@api.put('/app-settings')
|
||||
@role_required('boss','admin')
|
||||
def update_app_settings():
|
||||
d=payload();theme=d.get('theme','bootstrap')
|
||||
if theme not in THEMES:return fail('Nieprawidłowy motyw')
|
||||
db.session.merge(AppSetting(key='theme',value=theme));db.session.commit();return response(message='Zapisano ustawienia aplikacji')
|
||||
Reference in New Issue
Block a user