uprawnienia do stacji i usuwanie firm

This commit is contained in:
Mateusz Gruszczyński committed 2026-07-13 15:32:00 +02:00
1 parent a989889e3f
commit 31f10fc8d9
3 files changed
+2 -4

No files matched your search

-2
View File
@@ -58,8 +58,6 @@ def create_app(test_config=None):
response.headers["Cache-Control"] = "public, max-age=2592000, immutable"
elif response.mimetype == "text/html":
response.headers["Cache-Control"] = "no-store, no-cache, private, must-revalidate"
response.headers["Pragma"] = "no-cache"
response.headers["Expires"] = "0"
return response
@login_manager.user_loader
+1 -1
View File
@@ -2,7 +2,7 @@
{% block title %}Firmy i karty{% endblock %}
{% block content %}
<div class="d-flex flex-column flex-lg-row justify-content-between align-items-lg-center gap-3 mb-3">
<div><h1 class="h2 mb-1">Administracja</h1><p class="text-body-secondary mb-0">Firmy, karty paliwowe i firmowe ulubione stacje. <span class="badge text-bg-info ms-1">wersja: company-stations-v2</span></p></div>
<div><h1 class="h2 mb-1">Administracja</h1><p class="text-body-secondary mb-0">Firmy, karty paliwowe i firmowe ulubione stacje.</p></div>
{% if current_user.role == 'admin' %}<button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#createCompanyModal">Dodaj firmę</button>{% endif %}
</div>
{% include '_admin_nav.html' %}
+1 -1
View File
@@ -1 +1 @@
{% extends 'base.html' %}{% block content %}<div class="row justify-content-center"><div class="col-lg-8"><div class="card"><div class="card-body p-4"><h1 class="h2">Nowe tankowanie</h1><form method="post" class="ajax-form row g-3" id="fuel-form"><div class="col-md-6"><label class="form-label">Pojazd</label><select class="form-select" name="vehicle_id" required>{% for v in vehicles %}<option value="{{v.id}}" data-card-id="{{v.fuel_card_id or v.owner.fuel_card_id or ''}}">{{v.name}} · {{v.registration}}</option>{% endfor %}</select></div><div class="col-md-6"><label class="form-label">Data</label><input class="form-control" type="datetime-local" name="fueled_at" value="{{now}}" required></div><div class="col-md-4"><label class="form-label">Paliwo</label><select class="form-select" name="fuel_type"><option>PB95</option><option>PB98</option><option>DIESEL</option><option>LPG</option></select></div><div class="col-md-4"><label class="form-label">Litry</label><input class="form-control" type="number" step="0.001" min="0.001" name="liters" required></div><div class="col-md-4"><label class="form-label">Cena na dystrybutorze</label><input class="form-control" type="number" step="0.0001" min="0" name="price_per_liter" required></div><div class="col-md-6"><label class="form-label">Stan licznika</label><input class="form-control" type="number" min="0" name="odometer" required></div><div class="col-md-6"><label class="form-label">Firma / sieć stacji</label><select class="form-select" name="station_company_id" id="station-company"><option value="">Inna stacja</option>{% if favorite_stations %}<optgroup label="Ulubione">{% for s in favorite_stations %}<option value="{{s.id}}" data-region="{{s.selected_region}}" data-search="{{s.display_name}} {{s.company_name}} {{s.station_name_list|join(' ')}}">{{s.display_name}}{% if s.company_name != s.display_name %} — {{s.company_name}}{% endif %}</option>{% endfor %}</optgroup>{% endif %}{% if top_stations %}<optgroup label="10 największych sieci">{% for s in top_stations %}<option value="{{s.id}}" data-region="{{s.selected_region}}" data-search="{{s.display_name}} {{s.company_name}} {{s.station_name_list|join(' ')}}">{{s.display_name}}{% if s.company_name != s.display_name %} — {{s.company_name}}{% endif %}</option>{% endfor %}</optgroup>{% endif %}{% if other_stations %}<optgroup label="Pozostałe dozwolone">{% for s in other_stations %}<option value="{{s.id}}" data-region="{{s.selected_region}}" data-search="{{s.display_name}} {{s.company_name}} {{s.station_name_list|join(' ')}}">{{s.display_name}}{% if s.company_name != s.display_name %} — {{s.company_name}}{% endif %}</option>{% endfor %}</optgroup>{% endif %}</select><div class="form-text">Najpierw pokazujemy ulubione oraz 10 największych pozostałych sieci. <button type="button" class="btn btn-link btn-sm p-0 align-baseline" data-bs-toggle="modal" data-bs-target="#favorite-stations-modal">Edytuj ulubione</button>{% if restricted %} · firma ograniczyła listę do dozwolonych sieci{% endif %}.</div></div><div class="col-md-6"><label class="form-label">Własna nazwa stacji</label><input class="form-control" name="station" placeholder="Używane, gdy nie wybierzesz firmy"></div><div class="col-md-6"><label class="form-label">Numer faktury</label><input class="form-control" name="invoice_number"></div><div class="col-md-6"><label class="form-label">Karta paliwowa</label><select class="form-select" name="fuel_card_id" id="fuel-card-select"><option value="">Bez karty</option>{% for card in fuel_cards %}<option value="{{card.id}}">{{card.name}} · {{card.provider}}</option>{% endfor %}</select><div class="form-check mt-2"><input class="form-check-input" type="checkbox" name="used_fuel_card" id="used-card"><label class="form-check-label" for="used-card">Rozlicz kartą paliwową</label></div></div><div class="col-12"><div id="orlen-preview" class="alert alert-secondary py-2">Cena Orlen zostanie pobrana automatycznie.</div></div><div class="col-12"><button class="btn btn-primary">Zapisz tankowanie</button></div></form></div></div></div></div><div class="modal fade" id="favorite-stations-modal" tabindex="-1"><div class="modal-dialog modal-lg modal-dialog-scrollable"><div class="modal-content"><form action="/api/me/favorite-stations" data-method="PUT" class="ajax-form favorite-station-form" data-max-favorites="10"><div class="modal-header"><h2 class="modal-title fs-5">Ulubione stacje</h2><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><p class="text-body-secondary">Wybierz maksymalnie 10 sieci. Gdy nic nie wybierzesz, aplikacja proponuje 10 największych sieci według liczby punktów.</p><input class="form-control mb-3 station-modal-search" placeholder="Szukaj po nazwie stacji"><div class="table-responsive"><table class="table table-hover align-middle"><thead class="sticky-top"><tr><th style="width:3rem"></th><th>Nazwa</th><th class="text-end">Punkty</th></tr></thead><tbodLine truncated
{% extends 'base.html' %}{% block content %}<div class="row justify-content-center"><div class="col-lg-8"><div class="card"><div class="card-body p-4"><h1 class="h2">Nowe tankowanie</h1><form method="post" class="ajax-form row g-3" id="fuel-form"><div class="col-md-6"><label class="form-label">Pojazd</label><select class="form-select" name="vehicle_id" required>{% for v in vehicles %}<option value="{{v.id}}" data-card-id="{{v.fuel_card_id or v.owner.fuel_card_id or ''}}">{{v.name}} · {{v.registration}}</option>{% endfor %}</select></div><div class="col-md-6"><label class="form-label">Data</label><input class="form-control" type="datetime-local" name="fueled_at" value="{{now}}" required></div><div class="col-md-4"><label class="form-label">Paliwo</label><select class="form-select" name="fuel_type"><option>PB95</option><option>PB98</option><option>DIESEL</option><option>LPG</option></select></div><div class="col-md-4"><label class="form-label">Litry</label><input class="form-control" type="number" step="0.001" min="0.001" name="liters" required></div><div class="col-md-4"><label class="form-label">Cena na dystrybutorze</label><input class="form-control" type="number" step="0.0001" min="0" name="price_per_liter" required></div><div class="col-md-6"><label class="form-label">Stan licznika</label><input class="form-control" type="number" min="0" name="odometer" required></div><div class="col-md-6"><label class="form-label">Firma / sieć stacji</label><select class="form-select" name="station_company_id" id="station-company"><option value="">Inna stacja</option>{% if favorite_stations %}<optgroup label="Ulubione">{% for s in favorite_stations %}<option value="{{s.id}}" data-region="{{s.selected_region}}" data-search="{{s.display_name}} {{s.company_name}} {{s.station_name_list|join(' ')}}">{{s.display_name}}{% if s.company_name != s.display_name %} — {{s.company_name}}{% endif %}</option>{% endfor %}</optgroup>{% endif %}{% if top_stations %}<optgroup label="10 największych sieci">{% for s in top_stations %}<option value="{{s.id}}" data-region="{{s.selected_region}}" data-search="{{s.display_name}} {{s.company_name}} {{s.station_name_list|join(' ')}}">{{s.display_name}}{% if s.company_name != s.display_name %} — {{s.company_name}}{% endif %}</option>{% endfor %}</optgroup>{% endif %}{% if other_stations %}<optgroup label="Pozostałe dozwolone">{% for s in other_stations %}<option value="{{s.id}}" data-region="{{s.selected_region}}" data-search="{{s.display_name}} {{s.company_name}} {{s.station_name_list|join(' ')}}">{{s.display_name}}{% if s.company_name != s.display_name %} — {{s.company_name}}{% endif %}</option>{% endfor %}</optgroup>{% endif %}</select><div class="form-text">Najpierw pokazujemy ulubione oraz 10 największych pozostałych sieci. <button type="button" class="btn btn-link btn-sm p-0 align-baseline" data-bs-toggle="modal" data-bs-target="#favorite-stations-modal">Edytuj ulubione</button>{% if restricted %} · firma ograniczyła listę do dozwolonych sieci{% endif %}.</div></div><div class="col-md-6"><label class="form-label">Własna nazwa stacji</label><input class="form-control" name="station" placeholder="Używane, gdy nie wybierzesz firmy"></div><div class="col-md-6"><label class="form-label">Numer faktury</label><input class="form-control" name="invoice_number"></div><div class="col-md-6"><label class="form-label">Karta paliwowa</label><select class="form-select" name="fuel_card_id" id="fuel-card-select"><option value="">Bez karty</option>{% for card in fuel_cards %}<option value="{{card.id}}">{{card.name}} · {{card.provider}}</option>{% endfor %}</select><div class="form-check mt-2"><input class="form-check-input" type="checkbox" name="used_fuel_card" id="used-card"><label class="form-check-label" for="used-card">Rozlicz kartą paliwową</label></div></div><div class="col-12"><div id="orlen-preview" class="alert alert-secondary py-2">Cena Orlen zostanie pobrana automatycznie.</div></div><div class="col-12"><button class="btn btn-primary">Zapisz tankowanie</button></div></form></div></div></div></div><div class="modal fade" id="favorite-stations-modal" tabindex="-1"><div class="modal-dialog modal-lg modal-dialog-scrollable"><div class="modal-content"><form action="/api/me/favorite-stations" data-method="PUT" class="ajax-form favorite-station-form" data-max-favorites="10" data-page-size="10"><div class="modal-header"><h2 class="modal-title fs-5">Ulubione stacje</h2><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><p class="text-body-secondary">Wybierz maksymalnie 10 sieci. Gdy nic nie wybierzesz, aplikacja proponuje 10 największych sieci według liczby punktów.</p><input class="form-control mb-3 station-modal-search" type="search" placeholder="Szukaj po nazwie sieci, firmy lub punktu"><div class="table-responsive"><table class="table table-hover align-middle mb-2"><thead><tr><th style="width:3rem"></th><th>Nazwa</th><th class="teLine truncated