예제 #1
0
	def test_toCurrencyStr(self):
		self.assertEqual(currency.toCurrencyStr(23, 'USD'), u'$23.00')
		self.assertEqual(currency.toCurrencyStr(23.00, 'USD'), u'$23.00')
		self.assertEqual(currency.toCurrencyStr(23000, 'USD'), u'$23,000.00')
		self.assertEqual(currency.toCurrencyStr(23000000.00, 'USD'), u'$23,000,000.00')

		self.assertEqual(currency.toCurrencyStr(23, 'GBP'), u'£23.00')
		self.assertEqual(currency.toCurrencyStr(23.00, 'GBP'), u'£23.00')
		self.assertEqual(currency.toCurrencyStr(23000, 'GBP'), u'£23,000.00')
		self.assertEqual(currency.toCurrencyStr(23000000.00, 'GBP'), u'£23,000,000.00')
예제 #2
0
파일: recordModel.py 프로젝트: mrbez/pydosh
	def data(self, item, role=QtCore.Qt.DisplayRole):
		""" Return data from the model, formatted for viewing
		"""
		if not item.isValid():
			return None

		if role == QtCore.Qt.CheckStateRole:
			if item.column() == enum.kRecords_Checked:
				if super(RecordModel, self).data(item):
					return QtCore.Qt.Checked
				else:
					return QtCore.Qt.Unchecked

		elif role == QtCore.Qt.FontRole:
			if item.column() == enum.kRecords_Description:
				if self._highlightText and self._highlightText.lower() in item.data(QtCore.Qt.DisplayRole).lower():
					font = QtGui.QFont()
					font.setBold(True)
					return font

		elif role == QtCore.Qt.ToolTipRole:
			if item.column() == enum.kRecords_Tags:
				# Show tag names for this record
				return ', '.join(item.data(QtCore.Qt.UserRole))

			elif item.column() == enum.kRecords_Checked:
				if item.data(QtCore.Qt.CheckStateRole) == QtCore.Qt.Checked:
					text = "Checked: " + super(RecordModel, self).data(
						self.index(item.row(), enum.kRecords_CheckDate)).toString("dd/MM/yy hh:mm")
					return text

			elif item.column() == enum.kRecords_Date:
				# Show when the record was imported
				text = "Imported: " + super(RecordModel, self).data(
					self.index(item.row(), enum.kRecords_InsertDate)).toString("dd/MM/yy hh:mm")
				return text

			elif item.column() == enum.kRecords_Description:
				# Full, raw text
				return super(RecordModel, self).data(item, QtCore.Qt.DisplayRole)

		elif role == QtCore.Qt.UserRole:
			if item.column() == enum.kRecords_Tags:
				# Tags as comma separated string (from database)
				tags = super(RecordModel, self).data(item, QtCore.Qt.DisplayRole)
				return tags.split(',') if tags else []

			elif item.column() == enum.kRecords_Amount:
				# signed float
				return super(RecordModel, self).data(item, QtCore.Qt.DisplayRole)

			elif item.column() == enum.kRecords_Date:
				# QDate object
				return super(RecordModel, self).data(item, QtCore.Qt.DisplayRole)

		elif role == QtCore.Qt.ForegroundRole:
			if item.column() == enum.kRecords_Amount:
				# Indicate credit/debit with colour
				if item.data(QtCore.Qt.UserRole) > 0.0:
					return QtGui.QColor(0, 255, 0)
				else:
					return QtGui.QColor(255, 0, 0)

		elif role == QtCore.Qt.DecorationRole:
			if item.column() == enum.kRecords_Tags:
				# Show tag icon if we have any
				if item.data(QtCore.Qt.UserRole):
					return QtGui.QIcon(':/icons/tag_yellow.png')

		elif role == QtCore.Qt.DisplayRole:
			if item.column() in (enum.kRecords_Checked, enum.kRecords_Tags):
				# Don't display anything for these fields
				return None

			elif item.column() == enum.kRecords_Amount:
				# Display absolute currency values. credit/debit is indicated by background colour
				code = self.index(item.row(), enum.kRecords_Currency).data()
				return currency.toCurrencyStr(abs(super(RecordModel, self).data(item)), code)

			elif item.column() == enum.kRecords_Description:
				# Replace multiple spaces with single
				return re.sub('[ ]+', ' ', super(RecordModel, self).data(item))

			elif item.column() == enum.kRecords_Date:
				# Ensure date display is day/month/year, or I'll get confused.
				# Use UserRole to return QDate object
				return super(RecordModel, self).data(item, role).toString('dd/MM/yyyy')

		return super(RecordModel, self).data(item, role)