Merge lp:~raoul-snyman/openlp/bug-825809 into lp:openlp

Proposed by Raoul Snyman
Status: Merged
Approved by: Andreas Preikschat
Approved revision: 1711
Merged at revision: 1716
Proposed branch: lp:~raoul-snyman/openlp/bug-825809
Merge into: lp:openlp
Diff against target: 198 lines (+65/-45)
5 files modified
openlp/core/lib/db.py (+3/-1)
openlp/plugins/songusage/forms/songusagedeletedialog.py (+17/-10)
openlp/plugins/songusage/forms/songusagedeleteform.py (+29/-20)
openlp/plugins/songusage/forms/songusagedetaildialog.py (+15/-14)
openlp/plugins/songusage/songusageplugin.py (+1/-0)
To merge this branch: bzr merge lp:~raoul-snyman/openlp/bug-825809
Reviewer Review Type Date Requested Status
Andreas Preikschat (community) Approve
Tim Bentley Approve
Review via email: mp+71770@code.launchpad.net

Commit message

Fixed bug #825809 where SQLAlchemy 0.7 throws a 'ArgumentError: SQL expression object or string expected' when passed something other than an SQL expression object or a string.

Description of the change

Fixed bug #825809 where SQLAlchemy 0.7 throws a 'ArgumentError: SQL expression object or string expected' when passed something other than an SQL expression object or a string.

To post a comment you must log in.
Revision history for this message
Tim Bentley (trb143) :
review: Approve
Revision history for this message
Andreas Preikschat (googol-deactivatedaccount) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'openlp/core/lib/db.py'
2--- openlp/core/lib/db.py 2011-06-12 16:02:52 +0000
3+++ openlp/core/lib/db.py 2011-08-16 20:00:26 +0000
4@@ -223,7 +223,9 @@
5 query = self.session.query(object_class)
6 if filter_clause is not None:
7 query = query.filter(filter_clause)
8- if order_by_ref is not None:
9+ if isinstance(order_by_ref, list):
10+ return query.order_by(*order_by_ref).all()
11+ elif order_by_ref is not None:
12 return query.order_by(order_by_ref).all()
13 return query.all()
14
15
16=== modified file 'openlp/plugins/songusage/forms/songusagedeletedialog.py'
17--- openlp/plugins/songusage/forms/songusagedeletedialog.py 2011-06-12 16:02:52 +0000
18+++ openlp/plugins/songusage/forms/songusagedeletedialog.py 2011-08-16 20:00:26 +0000
19@@ -34,26 +34,33 @@
20 def setupUi(self, songUsageDeleteDialog):
21 songUsageDeleteDialog.setObjectName(u'songUsageDeleteDialog')
22 songUsageDeleteDialog.resize(291, 243)
23- self.layoutWidget = QtGui.QWidget(songUsageDeleteDialog)
24- self.layoutWidget.setGeometry(QtCore.QRect(20, 10, 247, 181))
25- self.layoutWidget.setObjectName(u'layoutWidget')
26- self.verticalLayout = QtGui.QVBoxLayout(self.layoutWidget)
27+ self.verticalLayout = QtGui.QVBoxLayout(songUsageDeleteDialog)
28+ self.verticalLayout.setSpacing(8)
29+ self.verticalLayout.setContentsMargins(8, 8, 8, 8)
30 self.verticalLayout.setObjectName(u'verticalLayout')
31- self.deleteCalendar = QtGui.QCalendarWidget(self.layoutWidget)
32+ self.deleteLabel = QtGui.QLabel(songUsageDeleteDialog)
33+ self.deleteLabel.setObjectName(u'deleteLabel')
34+ self.verticalLayout.addWidget(self.deleteLabel)
35+ self.deleteCalendar = QtGui.QCalendarWidget(songUsageDeleteDialog)
36 self.deleteCalendar.setFirstDayOfWeek(QtCore.Qt.Sunday)
37 self.deleteCalendar.setGridVisible(True)
38 self.deleteCalendar.setVerticalHeaderFormat(
39 QtGui.QCalendarWidget.NoVerticalHeader)
40 self.deleteCalendar.setObjectName(u'deleteCalendar')
41 self.verticalLayout.addWidget(self.deleteCalendar)
42- self.buttonBox = create_accept_reject_button_box(
43- songUsageDeleteDialog, True)
44- self.buttonBox.setGeometry(QtCore.QRect(30, 210, 245, 25))
45+ self.buttonBox = QtGui.QDialogButtonBox(songUsageDeleteDialog)
46+ self.buttonBox.setStandardButtons(
47+ QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel)
48 self.buttonBox.setObjectName(u'buttonBox')
49+ self.verticalLayout.addWidget(self.buttonBox)
50 self.retranslateUi(songUsageDeleteDialog)
51- QtCore.QMetaObject.connectSlotsByName(songUsageDeleteDialog)
52
53 def retranslateUi(self, songUsageDeleteDialog):
54 songUsageDeleteDialog.setWindowTitle(
55 translate('SongUsagePlugin.SongUsageDeleteForm',
56- 'Delete Song Usage Data'))
57+ 'Delete Song Usage Data'))
58+ self.deleteLabel.setText(
59+ translate('SongUsagePlugin.SongUsageDeleteForm',
60+ 'Select the date up to which the song usage data should be '
61+ 'deleted. All data recorded before this date will be '
62+ 'permanently deleted.'))
63
64=== modified file 'openlp/plugins/songusage/forms/songusagedeleteform.py'
65--- openlp/plugins/songusage/forms/songusagedeleteform.py 2011-06-12 16:02:52 +0000
66+++ openlp/plugins/songusage/forms/songusagedeleteform.py 2011-08-16 20:00:26 +0000
67@@ -25,7 +25,7 @@
68 # Temple Place, Suite 330, Boston, MA 02111-1307 USA #
69 ###############################################################################
70
71-from PyQt4 import QtGui
72+from PyQt4 import QtCore, QtGui
73
74 from openlp.core.lib import translate, Receiver
75 from openlp.plugins.songusage.lib.db import SongUsageItem
76@@ -42,23 +42,32 @@
77 self.manager = manager
78 QtGui.QDialog.__init__(self, parent)
79 self.setupUi(self)
80+ QtCore.QObject.connect(
81+ self.buttonBox, QtCore.SIGNAL(u'clicked(QAbstractButton*)'),
82+ self.onButtonBoxClicked)
83
84- def accept(self):
85- ret = QtGui.QMessageBox.question(self,
86- translate('SongUsagePlugin.SongUsageDeleteForm',
87- 'Delete Selected Song Usage Events?'),
88- translate('SongUsagePlugin.SongUsageDeleteForm',
89- 'Are you sure you want to delete selected Song Usage data?'),
90- QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok |
91- QtGui.QMessageBox.Cancel),
92- QtGui.QMessageBox.Cancel)
93- if ret == QtGui.QMessageBox.Ok:
94- deleteDate = self.deleteCalendar.selectedDate().toPyDate()
95- self.manager.delete_all_objects(SongUsageItem,
96- SongUsageItem.usagedate <= deleteDate)
97- Receiver.send_message(u'openlp_information_message', {
98- u'title': translate('SongUsagePlugin.SongUsageDeleteForm',
99- 'Deletion Successful'),
100- u'message': translate('SongUsagePlugin.SongUsageDeleteForm',
101- 'All requested data has been deleted successfully. ')})
102- self.close()
103+ def onButtonBoxClicked(self, button):
104+ if self.buttonBox.standardButton(button) == QtGui.QDialogButtonBox.Ok:
105+ ret = QtGui.QMessageBox.question(self,
106+ translate('SongUsagePlugin.SongUsageDeleteForm',
107+ 'Delete Selected Song Usage Events?'),
108+ translate('SongUsagePlugin.SongUsageDeleteForm',
109+ 'Are you sure you want to delete selected Song Usage '
110+ 'data?'),
111+ QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes |
112+ QtGui.QMessageBox.No),
113+ QtGui.QMessageBox.No)
114+ if ret == QtGui.QMessageBox.Yes:
115+ deleteDate = self.deleteCalendar.selectedDate().toPyDate()
116+ self.manager.delete_all_objects(SongUsageItem,
117+ SongUsageItem.usagedate <= deleteDate)
118+ Receiver.send_message(u'openlp_information_message', {
119+ u'title': translate('SongUsagePlugin.SongUsageDeleteForm',
120+ 'Deletion Successful'),
121+ u'message': translate(
122+ 'SongUsagePlugin.SongUsageDeleteForm',
123+ 'All requested data has been deleted successfully. ')}
124+ )
125+ self.accept()
126+ else:
127+ self.reject()
128
129=== modified file 'openlp/plugins/songusage/forms/songusagedetaildialog.py'
130--- openlp/plugins/songusage/forms/songusagedetaildialog.py 2011-06-12 16:02:52 +0000
131+++ openlp/plugins/songusage/forms/songusagedetaildialog.py 2011-08-16 20:00:26 +0000
132@@ -35,12 +35,14 @@
133 songUsageDetailDialog.setObjectName(u'songUsageDetailDialog')
134 songUsageDetailDialog.resize(609, 413)
135 self.verticalLayout = QtGui.QVBoxLayout(songUsageDetailDialog)
136+ self.verticalLayout.setSpacing(8)
137+ self.verticalLayout.setContentsMargins(8, 8, 8, 8)
138 self.verticalLayout.setObjectName(u'verticalLayout')
139 self.dateRangeGroupBox = QtGui.QGroupBox(songUsageDetailDialog)
140 self.dateRangeGroupBox.setObjectName(u'dateRangeGroupBox')
141- self.verticalLayout2 = QtGui.QVBoxLayout(self.dateRangeGroupBox)
142- self.verticalLayout2.setObjectName(u'verticalLayout2')
143- self.dateHorizontalLayout = QtGui.QHBoxLayout()
144+ self.dateHorizontalLayout = QtGui.QHBoxLayout(self.dateRangeGroupBox)
145+ self.dateHorizontalLayout.setSpacing(8)
146+ self.dateHorizontalLayout.setContentsMargins(8, 8, 8, 8)
147 self.dateHorizontalLayout.setObjectName(u'dateHorizontalLayout')
148 self.fromDate = QtGui.QCalendarWidget(self.dateRangeGroupBox)
149 self.fromDate.setObjectName(u'fromDate')
150@@ -53,26 +55,25 @@
151 self.toDate = QtGui.QCalendarWidget(self.dateRangeGroupBox)
152 self.toDate.setObjectName(u'toDate')
153 self.dateHorizontalLayout.addWidget(self.toDate)
154- self.verticalLayout2.addLayout(self.dateHorizontalLayout)
155+ self.verticalLayout.addWidget(self.dateRangeGroupBox)
156 self.fileGroupBox = QtGui.QGroupBox(self.dateRangeGroupBox)
157 self.fileGroupBox.setObjectName(u'fileGroupBox')
158- self.verticalLayout4 = QtGui.QVBoxLayout(self.fileGroupBox)
159- self.verticalLayout4.setObjectName(u'verticalLayout4')
160- self.horizontalLayout = QtGui.QHBoxLayout()
161- self.horizontalLayout.setObjectName(u'horizontalLayout')
162+ self.fileHorizontalLayout = QtGui.QHBoxLayout(self.fileGroupBox)
163+ self.fileHorizontalLayout.setSpacing(8)
164+ self.fileHorizontalLayout.setContentsMargins(8, 8, 8, 8)
165+ self.fileHorizontalLayout.setObjectName(u'fileHorizontalLayout')
166 self.fileLineEdit = QtGui.QLineEdit(self.fileGroupBox)
167 self.fileLineEdit.setObjectName(u'fileLineEdit')
168 self.fileLineEdit.setReadOnly(True)
169- self.fileLineEdit.setEnabled(False)
170- self.horizontalLayout.addWidget(self.fileLineEdit)
171+ self.fileHorizontalLayout.addWidget(self.fileLineEdit)
172 self.saveFilePushButton = QtGui.QPushButton(self.fileGroupBox)
173+ self.saveFilePushButton.setMaximumWidth(
174+ self.saveFilePushButton.size().height())
175 self.saveFilePushButton.setIcon(
176 build_icon(u':/general/general_open.png'))
177 self.saveFilePushButton.setObjectName(u'saveFilePushButton')
178- self.horizontalLayout.addWidget(self.saveFilePushButton)
179- self.verticalLayout4.addLayout(self.horizontalLayout)
180- self.verticalLayout2.addWidget(self.fileGroupBox)
181- self.verticalLayout.addWidget(self.dateRangeGroupBox)
182+ self.fileHorizontalLayout.addWidget(self.saveFilePushButton)
183+ self.verticalLayout.addWidget(self.fileGroupBox)
184 self.buttonBox = create_accept_reject_button_box(
185 songUsageDetailDialog, True)
186 self.verticalLayout.addWidget(self.buttonBox)
187
188=== modified file 'openlp/plugins/songusage/songusageplugin.py'
189--- openlp/plugins/songusage/songusageplugin.py 2011-08-02 18:17:07 +0000
190+++ openlp/plugins/songusage/songusageplugin.py 2011-08-16 20:00:26 +0000
191@@ -96,6 +96,7 @@
192 self.songUsageActiveButton = QtGui.QToolButton(
193 self.formparent.statusBar)
194 self.songUsageActiveButton.setCheckable(True)
195+ self.songUsageActiveButton.setAutoRaise(True)
196 self.songUsageActiveButton.setStatusTip(translate('SongUsagePlugin',
197 'Toggle the tracking of song usage.'))
198 self.songUsageActiveButton.setObjectName(u'songUsageActiveButton')