reload trx list on adding - currently broken

This commit is contained in:
2022-12-03 12:58:45 +01:00
parent 0e1e9b0a3a
commit fc8907c333
2 changed files with 64 additions and 38 deletions

40
db.py
View File

@ -19,13 +19,14 @@ except sqlite3.Error as error:
def create_transmissions_table(): def create_transmissions_table():
scheme = """ scheme = """
CREATE TABLE IF NOT EXISTS transmissions ( CREATE TABLE IF NOT EXISTS transmissions (
date TEXT NOT NULL, uid TEXT NOT NULL UNIQUE,
author TEXT NOT NULL, date TEXT,
title TEXT NOT NULL, author TEXT,
transmission_text TEXT NOT NULL, title TEXT,
timeslots TEXT NOT NULL, transmission_text TEXT,
transmission_order INT NOT NULL, timeslots TEXT,
play BOOLEAN NOT NULL transmission_order INT,
play BOOLEAN
); );
""" """
if cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='transmissions';").fetchall() == []: if cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='transmissions';").fetchall() == []:
@ -33,7 +34,8 @@ def create_transmissions_table():
cursor.execute(scheme) cursor.execute(scheme)
log.info("Successfully created database transmissions") log.info("Successfully created database transmissions")
except sqlite3.Error as error: except sqlite3.Error as error:
log.critical("Couldn't create transmissions table: ", error) log.critical("Couldn't create transmissions table")
log.critical(error)
exit(1) exit(1)
else: else:
log.debug('DB transmissions exists, not creating.') log.debug('DB transmissions exists, not creating.')
@ -41,16 +43,24 @@ def create_transmissions_table():
def get_transmissions(date=None, timeslot=None): def get_transmissions(date=None, timeslot=None):
return cursor.execute("SELECT * FROM transmissions").fetchall() return cursor.execute("SELECT * FROM transmissions").fetchall()
def create_transmission(date, author, title, transmission_text, timeslots, transmission_order, play=True): def add_transmission(uid):
command=""" command="INSERT INTO transmissions(uid, play) VALUES(?, 0)"
INSERT INTO transmissions VALUES(?, ?, ?, ?, ?, %d, %d);
"""%(transmission_order, (1 if play else 0))
try: try:
cursor.execute(command, (date, author, title, transmission_text, timeslots)) cursor.execute(command, (uid,))
sqliteConnection.commit() sqliteConnection.commit()
log.debug("Created a transmission with date %s, author %s, timeslots %s"%(date, author, timeslots)) log.debug("Created a transmission uid %s"%(uid))
except sqlite3.Error as error: except sqlite3.Error as error:
log.error("Couldn't create a transmission with date %s, author %s, timeslots %s"%(date, author, bin(timeslots))) log.error("Couldn't create a transmission with uid: %s"%(uid))
log.error(error)
def edit_transmission(uid, date, author, title, transmission_text, timeslots, transmission_order, play):
command="UPDATE transmissions set date=?, author=?, title=?, transmission_text=?, timeslots=?, transmission_order=?, play=? WHERE uid=?"
try:
cursor.execute(command, date, author, title, transmission_text, timeslots, transmission_order, play, uid)
sqliteConnection.commit()
log.debug("Updated a transmission with uid %s (date %s, author %s)"%(uid, date, author))
except sqlite3.Error as error:
log.error("Couldn't create a transmission with uid %s (date %s, author %s)"%uid, (date, author))
log.error(error) log.error(error)

62
main.py
View File

@ -4,6 +4,8 @@ import gi
import config import config
import logging import logging
from datetime import datetime from datetime import datetime
from random import choice
from string import ascii_lowercase, digits
gi.require_version("Gtk", "3.0") gi.require_version("Gtk", "3.0")
from gi.repository import Gtk from gi.repository import Gtk
@ -63,12 +65,8 @@ class MainWindow(Gtk.Window):
self.transmission_list = Gtk.ListBox() self.transmission_list = Gtk.ListBox()
self.transmission_list.connect("row-activated", self.on_picked_transmission) self.transmission_list.connect("row-activated", self.on_picked_transmission)
transmissions = db.get_transmissions() self.transmissions = None
for trx in transmissions: self.update_transmission_list()
trxID = "%s %s %s" % (trx[0], trx[2], trx[1])
label = Gtk.Label()
label.set_text("%s" % trxID)
self.transmission_list.add(label)
self.add_transmission_button = Gtk.Button(label="Add transmission") self.add_transmission_button = Gtk.Button(label="Add transmission")
self.add_transmission_button.connect("clicked", self.on_add_transmission) self.add_transmission_button.connect("clicked", self.on_add_transmission)
@ -158,15 +156,7 @@ class MainWindow(Gtk.Window):
self.clear_save_box.pack_start(self.clear_button, True, True, 0) self.clear_save_box.pack_start(self.clear_button, True, True, 0)
self.clear_save_box.pack_start(self.save_button, True, True, 0) self.clear_save_box.pack_start(self.save_button, True, True, 0)
def on_picked_transmission(self, row, user_data): ############################## Helper functions #############################
log.debug("row %i activated" % user_data.get_index())
def on_add_transmission(self, user_data):
log.debug("new transmission %s"%(datetime.now().isoformat()))
def on_delete_transmission(self, user_data):
log.debug("transmission %s deleted" % self.transmission_list.get_selected_row().get_index())
# The save button should be greyed out until all the data is input # The save button should be greyed out until all the data is input
def update_save_button(self, user_data): def update_save_button(self, user_data):
messageBuffer = self.message.get_buffer() messageBuffer = self.message.get_buffer()
@ -191,18 +181,44 @@ class MainWindow(Gtk.Window):
selected += "%d " % i selected += "%d " % i
return selected return selected
def update_transmission_list(self):
self.transmissions = db.get_transmissions()
print(self.transmissions)
for child in self.transmission_list.get_children():
self.transmission_list.remove(child)
for trx in self.transmissions:
trxID = "%s %s %s" % (trx[0], trx[1], trx[3])
print(trxID)
label = Gtk.Label()
label.set_text("%s" % trxID)
self.transmission_list.insert(label, -1)
############################ Button functions ###############################
def on_add_transmission(self, user_data):
uid = "".join(choice(ascii_lowercase + digits) for char in range(8))
log.debug(uid)
db.add_transmission(uid)
self.update_transmission_list()
def on_picked_transmission(self, row, user_data):
log.debug("row %i activated" % user_data.get_index())
def on_delete_transmission(self, user_data):
log.debug("transmission %s deleted" % self.transmission_list.get_selected_row().get_index())
def on_transmission_saved(self, user_data): def on_transmission_saved(self, user_data):
messageBuffer = self.message.get_buffer() messageBuffer = self.message.get_buffer()
startIter, endIter = messageBuffer.get_bounds() startIter, endIter = messageBuffer.get_bounds()
message = messageBuffer.get_text(startIter, endIter, False) message = messageBuffer.get_text(startIter, endIter, False)
#(date, author, title, transmission_text, timeslots, transmission_order, play) print(message, " saved")
db.create_transmission( self.picked_date,\ #(uid, date, author, title, transmission_text, timeslots, transmission_order, play)
self.author.get_buffer().get_text(),\ #db.create_transmission( self.picked_date,\
self.title.get_buffer().get_text(),\ # self.author.get_buffer().get_text(),\
message, # self.title.get_buffer().get_text(),\
self.get_selected_timeslots(),\ # message,
1,\ # self.get_selected_timeslots(),\
True) # 1,\
# True)
win = MainWindow() win = MainWindow()