[billreminder] Initial work to handle adding new Bill objects using the new db layer.
- From: Og B. Maciel <ogmaciel src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [billreminder] Initial work to handle adding new Bill objects using the new db layer.
- Date: Fri, 2 Oct 2009 17:30:58 +0000 (UTC)
commit a21087c027560282f45c06611a787278ce41e7e7
Author: Og B. Maciel <ogmaciel gnome org>
Date: Fri Oct 2 13:30:42 2009 -0400
Initial work to handle adding new Bill objects using the new db layer.
src/gui/adddialog.py | 63 +++++++++++++++++++++++++-----------------------
src/gui/maindialog.py | 5 +---
src/lib/actions.py | 4 +++
src/lib/dal.py | 6 +---
4 files changed, 40 insertions(+), 38 deletions(-)
---
diff --git a/src/gui/adddialog.py b/src/gui/adddialog.py
index d63b3bf..2a1d0e6 100644
--- a/src/gui/adddialog.py
+++ b/src/gui/adddialog.py
@@ -13,7 +13,7 @@ import gobject
from lib import utils
from lib import common
from lib import scheduler
-from lib.bill import Bill
+from db.entities import Bill, Category
from lib.actions import Actions
from lib.utils import create_pixbuf
from lib import i18n
@@ -43,7 +43,7 @@ class AddDialog(gtk.Dialog):
# If we have a selected date, then set calendar to use it
if not selectedDate:
- selectedDate = datetime.datetime.today()
+ selectedDate = datetime.date.today()
self.selectedDate = selectedDate
self.gconf_client = gconf.client_get_default()
@@ -260,27 +260,27 @@ class AddDialog(gtk.Dialog):
def _populate_widgets_with_record(self):
# Format the amount field
- if self.currentrecord.AmountDue:
- self.amount.set_text(utils.float_to_currency(self.currentrecord.AmountDue))
+ if self.currentrecord.amount:
+ self.amount.set_text(utils.float_to_currency(self.currentrecord.amount))
else:
self.amount.set_text("")
# Format the dueDate field
- dt = scheduler.datetime_from_timestamp(self.currentrecord.DueDate)
+ dt = self.currentrecord.dueDate
self.dueDate.set_date(dt)
- utils.select_combo_text(self.payee, self.currentrecord.Payee)
+ utils.select_combo_text(self.payee, self.currentrecord.payee)
actions = Actions()
- records = actions.get_categories({'id': self.currentrecord.Category})
+ records = actions.get_categories(id=self.currentrecord.category[0])
if records:
- categoryname = records[0]['categoryname']
+ categoryname = records[0].name
utils.select_combo_text(self.category, categoryname, 1)
else:
self.category.set_active(0)
- self.txtbuffer.set_text(self.currentrecord.Notes)
+ self.txtbuffer.set_text(self.currentrecord.notes)
#self.chkPaid.set_active(self.currentrecord.Paid)
- if self.currentrecord.Alarm > 0:
- self.alarmbutton.set_date(self.currentrecord.Alarm)
+ if self.currentrecord.alarm > 0:
+ self.alarmbutton.set_date(self.currentrecord.alarm)
def _populate_payee(self):
""" Populates combobox with existing payees """
@@ -289,10 +289,10 @@ class AddDialog(gtk.Dialog):
# List of payees from database
payees = []
- records = actions.get_bills("paid IN (0,1) ORDER BY payee ASC")
+ records = actions.get_bills()
for rec in records:
- if rec['payee'] not in payees:
- payees.append(rec['payee'])
+ if rec.payee not in payees:
+ payees.append(rec.payee)
store = gtk.ListStore(gobject.TYPE_STRING)
for payee in payees:
@@ -332,17 +332,17 @@ class AddDialog(gtk.Dialog):
# List of categories from database
categories = []
- records = actions.get_categories("id > 0 ORDER BY categoryname ASC") or []
+ records = actions.get_categories()
ret = 0
empty_color = create_pixbuf()
for rec in records:
#if [rec['categoryname'], rec['id']] not in categories:
#TODO: Better put color creation in a function
- color = rec['color']
+ color = rec.color and rec.color or '#000'
- categories.append([create_pixbuf(color=color), rec['categoryname'], int(rec['id'])])
- if categoryname and categoryname == rec['categoryname']:
+ categories.append([create_pixbuf(color=color), rec.name, int(rec.id)])
+ if categoryname and categoryname == rec.name:
ret = len(categories) + 1
store = gtk.ListStore(gtk.gdk.Pixbuf, str, int)
@@ -375,11 +375,11 @@ class AddDialog(gtk.Dialog):
if not name or name == _("None"):
return None
- records = actions.get_categories({'categoryname': name})
+ records = actions.get_categories(name=name)
if records:
- cat_id = records[0]['id']
-
- return cat_id and int(cat_id) or None
+ return records[0]
+ else:
+ return None
def get_record(self):
@@ -432,19 +432,23 @@ class AddDialog(gtk.Dialog):
for day in days:
if alarm != -1:
alarm = self.__get_alarm_date(day)
- rec = Bill(payee, category, day, amount, sbuffer, 0, -1, alarm)
+ rec = Bill(payee, amount, day, sbuffer, 0)
+ if category:
+ rec.category.append(category)
+ #rec = Bill(payee, category, day, amount, sbuffer, 0, -1, alarm)
records.append (rec)
print records
return records
else:
# Edit existing bill
- self.currentrecord.Category = category
- self.currentrecord.Payee = payee
- self.currentrecord.DueDate = int(scheduler.timestamp_from_datetime(selectedDate))
- self.currentrecord.AmountDue = amount
- self.currentrecord.Notes = sbuffer
- self.currentrecord.Alarm = alarm
+ self.currentrecord.payee = payee
+ self.currentrecord.dueDate = selectedDate
+ self.currentrecord.amountDue = amount
+ self.currentrecord.notes = sbuffer
+ self.currentrecord.alarm = alarm
+ if category:
+ self.currentrecord.category.append(category)
#return the bill
return [self.currentrecord]
@@ -527,4 +531,3 @@ class AddDialog(gtk.Dialog):
adays = 3
return scheduler.get_alarm_timestamp(adays, atime, date)
-
diff --git a/src/gui/maindialog.py b/src/gui/maindialog.py
index 953c3b6..ee09e1a 100644
--- a/src/gui/maindialog.py
+++ b/src/gui/maindialog.py
@@ -376,17 +376,14 @@ class MainDialog:
self.box.pack_start(menubar, expand=False, fill=True, padding=0)
def add_bill(self):
- #selectedDate = scheduler.datetime_from_timestamp(selectedDate)
selectedDate = self.timeline.value
- # Convert from datetime.date to datetime.datetime
- selectedDate = datetime.datetime(selectedDate.year, selectedDate.month, selectedDate.day)
records = dialogs.add_dialog(parent=self.window, selectedDate=selectedDate)
# Checks if the user did not cancel the action
if records:
# Add new bill to database
for rec in records:
- bill = self.actions.add_bill(rec.Dictionary)
+ bill = self.actions.add_bill(rec)
if bill:
self.list.add(self.format_row(bill))
self.update_statusbar()
diff --git a/src/lib/actions.py b/src/lib/actions.py
index e34fe18..c91cf26 100644
--- a/src/lib/actions.py
+++ b/src/lib/actions.py
@@ -123,3 +123,7 @@ class Actions(object):
session.close()
return records
+
+ def add_bill(self, bill):
+ return self.dal.add(bill)
+
diff --git a/src/lib/dal.py b/src/lib/dal.py
index 5008a54..4d804cc 100644
--- a/src/lib/dal.py
+++ b/src/lib/dal.py
@@ -31,14 +31,12 @@ class DAL(object):
# Creates all database tables
Bill.metadata.create_all(self.engine)
- def add(self, dbobjects):
- if not isinstance(dbobjects, list):
- dbobjects = [dbobjects]
+ def add(self, dbobject):
session = self.Session()
try:
- session.add_all(dbobjects)
+ session.add(dbobject)
session.commit()
except Exception, e:
session.rollback()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]