7 Commits

Author SHA1 Message Date
8b55f74cd5 version increment 2026-01-18 11:27:51 +01:00
c0aa8bc732 added total coffee 2026-01-18 11:27:04 +01:00
6c7113849f typo and update of deb package description 2025-10-25 13:51:54 +02:00
321cbc7f89 increment version for new release 0.2.2b 2025-10-25 13:41:25 +02:00
aa5d5e6698 changed sender and receiver order in csv output 2025-10-25 13:39:56 +02:00
2b55aa62f0 refactored variables 2025-10-25 13:26:51 +02:00
cda807a467 updated compilation script, including requirements.txt 2025-10-06 12:32:18 +02:00
5 changed files with 48 additions and 19 deletions

View File

@@ -4,8 +4,19 @@ set -e
if [ "$VIRTUAL_ENV" == "" ] if [ "$VIRTUAL_ENV" == "" ]
then then
source venv/bin/activate if [ ! -d "./venv/bin" ]; then
echo "venv not found, trying to create one"
python3 -m venv venv
fi
source venv/bin/activate
fi fi
if [[ ! $(pip3 freeze | grep pyinstaller) ]];
then
echo "pyinstaller not found"
pip3 install -r requirements.txt
fi
version=$(cat version.txt) version=$(cat version.txt)
echo "current version set to: $version" echo "current version set to: $version"
new_version="" new_version=""

View File

@@ -1,5 +1,5 @@
Package: brovski-adressetiketten Package: brovski-adressetiketten
Version: 0.2.1b Version: 0.2.3b
Maintainer: Ovski Maintainer: Ovski
Architecture: all Architecture: all
Description: manage csv files for glables address labels Description: Manage and export addresses to csv. Can be used with glabels (example included in the source).

5
requirements.txt Normal file
View File

@@ -0,0 +1,5 @@
altgraph==0.17.4
packaging==25.0
pyinstaller==6.16.0
pyinstaller-hooks-contrib==2025.9
setuptools==80.9.0

View File

@@ -1,3 +1,4 @@
import _csv
import csv import csv
import os import os
import sys import sys
@@ -20,7 +21,7 @@ class Application:
y_offset = 200 y_offset = 200
width = 1050 width = 1050
height = 700 height = 700
VERSION = '0.2.1b' VERSION = '0.2.3b'
title = f"Brovski Adress-Etiketten Verwaltung {VERSION}" title = f"Brovski Adress-Etiketten Verwaltung {VERSION}"
self.root = tk.Tk(className="BrovskiAdressEtiketten") self.root = tk.Tk(className="BrovskiAdressEtiketten")
@@ -51,6 +52,7 @@ class Application:
self.statusbar = tk.StringVar() self.statusbar = tk.StringVar()
self.length_address_list = None self.length_address_list = None
self.length_address_list_active = None self.length_address_list_active = None
self.count_coffee = None
# leave application if settings are bad # leave application if settings are bad
if not self.config_good: if not self.config_good:
@@ -142,7 +144,7 @@ class Application:
"name": "Name", "name": "Name",
"strasse": "Strasse", "strasse": "Strasse",
"plzort": "Plz/Ort", "plzort": "Plz/Ort",
"anzahl": "Anzahl" "anzahl": "1"
} }
self.model.create_new(values) self.model.create_new(values)
self.populate_table() self.populate_table()
@@ -254,24 +256,29 @@ class Application:
if address["aktiv"] != "x": if address["aktiv"] != "x":
continue continue
for index in range(int(address["anzahl"])): for index in range(int(address["anzahl"])):
line = [] self.write_sender_to_csv(address, writer)
if address["firma"] != "": self.write_receiver_to_csv(address, writer)
line.append(address["firma"])
line.append(address["name"])
line.append(address["strasse"])
line.append(address["plzort"])
writer.writerow(line)
# todo: add "absender" to config parameters
line = []
for idx in range(4):
line.append(self.config.get("absender", f"{idx}"))
writer.writerow(line)
except FileNotFoundError: except FileNotFoundError:
show_error(message_title="Unexpected error", show_error(message_title="Unexpected error",
message=f"Could not write file {self.csv_file}", message=f"Could not write file {self.csv_file}",
parent=self.root parent=self.root
) )
def write_receiver_to_csv(self, address: dict, csv_writer: _csv.writer):
receiver_line = []
if address["firma"] != "":
receiver_line.append(address["firma"])
receiver_line.append(address["name"])
receiver_line.append(address["strasse"])
receiver_line.append(address["plzort"])
csv_writer.writerow(receiver_line)
def write_sender_to_csv(self, address: dict, csv_writer: _csv.writer):
sender_line = []
for idx in range(4):
sender_line.append(self.config.get("absender", f"{idx}"))
csv_writer.writerow(sender_line)
def populate_table(self, reload=True): def populate_table(self, reload=True):
if reload: if reload:
self.address_list = self.model.get_all() self.address_list = self.model.get_all()
@@ -316,15 +323,21 @@ class Application:
def update_status_bar(self): def update_status_bar(self):
self._count_address_records() self._count_address_records()
self.statusbar.set(f"Adressen: {self.length_address_list} | Aktive Adressen: {self.length_address_list_active}") self.statusbar.set(
f"Adressen: {self.length_address_list} | "
f"Aktive Adressen: {self.length_address_list_active} | "
f"Total Kaffee: {self.count_coffee}")
def _count_address_records(self): def _count_address_records(self):
self.length_address_list = len(self.address_list) self.length_address_list = len(self.address_list)
count = 0 count = 0
count_coffee = 0
for address in self.address_list: for address in self.address_list:
if address["aktiv"] == "x": if address["aktiv"] == "x":
count += 1 count += 1
count_coffee += count_coffee + int(address["anzahl"])
self.length_address_list_active = count self.length_address_list_active = count
self.count_coffee = count_coffee
def first_sort_after_start(self): def first_sort_after_start(self):
self.address_list.sort(key=lambda x: (x["firma"], x["name"])) self.address_list.sort(key=lambda x: (x["firma"], x["name"]))

View File

@@ -1 +1 @@
0.2.1b 0.2.3b