GnuCash  5.6-150-g038405b370+
Data Structures | Functions | Variables
str_methods.py File Reference

Add str methods to financial objects so that. More...

Go to the source code of this file.

Data Structures

class  str_methods.ClassWithCutting__format__
 

Functions

def str_methods.setflag (self, name, value)
 
def str_methods.getflag (self, name)
 
def str_methods.register_optionflag (self, name)
 
def str_methods.ya_add_method (_class, function, method_name=None, clsmethod=False, noinstance=False)
 
def str_methods.infect (_class, function, method_name)
 
def str_methods.all_as_classwithcutting__format__ (args)
 
def str_methods.all_as_classwithcutting__format__keys (encoding=None, error=None, keys)
 
def str_methods.__split__str__ (self, encoding=None, error=None)
 
def str_methods.__transaction__str__ (self)
 
def str_methods.__invoice__str__ (self)
 
def str_methods.__entry__str__ (self)
 

Variables

string str_methods.DEFAULT_ENCODING = "UTF-8"
 
string str_methods.DEFAULT_ERROR = "ignore"
 

Detailed Description

Add str methods to financial objects so that.

print object

leads to human readable results

Definition in file str_methods.py.

Function Documentation

◆ __entry__str__()

def str_methods.__entry__str__ (   self)
__str__ method for Entry

Definition at line 326 of file str_methods.py.

326 def __entry__str__(self):
327  """__str__ method for Entry"""
328 
329  from gnucash.gnucash_business import Entry
330  self=Entry(instance=self)
331 
332  # This dict and the return statement can be changed according to individual needs
333  fmt_dict={
334  "date_name":"Date:",
335  "date_value":str(self.GetDate()),
336  "description_name":"Description:",
337  "description_value":self.GetDescription(),
338  "notes_name":"Notes:",
339  "notes_value":self.GetNotes(),
340  "quant_name":"Quantity:",
341  "quant_value":str(self.GetQuantity()),
342  "invprice_name":"InvPrice:",
343  "invprice_value":str(self.GetInvPrice())}
344 
345  return ("{date_name:6}{date_value:15} {description_name:13}{description_value:20} {notes_name:7}{notes_value:20}"+
346  "{quant_name:12}{quant_value:7} {invprice_name:10}{invprice_value:7}").\
347  format(**all_as_classwithcutting__format__keys(**fmt_dict))
348 

◆ __invoice__str__()

def str_methods.__invoice__str__ (   self)
__str__ method for Invoice

Definition at line 286 of file str_methods.py.

286 def __invoice__str__(self):
287  """__str__ method for Invoice"""
288 
289  from gnucash.gnucash_business import Invoice
290  self=Invoice(instance=self)
291 
292 
293  # This dict and the return statement can be changed according to individual needs
294  fmt_dict={
295  "id_name":"ID:",
296  "id_value":self.GetID(),
297  "notes_name":"Notes:",
298  "notes_value":self.GetNotes(),
299  "active_name":"Active:",
300  "active_value":str(self.GetActive()),
301  "owner_name":"Owner Name:",
302  "owner_value":self.GetOwner().GetName(),
303  "total_name":"Total:",
304  "total_value":str(self.GetTotal()),
305  "currency_mnemonic":self.GetCurrency().get_mnemonic()}
306 
307  ret_invoice= ("{id_name:4}{id_value:10} {notes_name:7}{notes_value:20} {active_name:8}{active_value:7} {owner_name:12}{owner_value:20}"+
308  "{total_name:8}{total_value:10}{currency_mnemonic:3}").\
309  format(**all_as_classwithcutting__format__keys(**fmt_dict))
310 
311  ret_entries=""
312  entry_list = self.GetEntries()
313  for entry in entry_list: # Type of entry has to be checked
314  if not(type(entry)==Entry):
315  entry=Entry(instance=entry)
316  ret_entries += " "+str(entry)+"\n"
317 
318  return ret_invoice+"\n"+ret_entries
319 
320 

◆ __split__str__()

def str_methods.__split__str__ (   self,
  encoding = None,
  error = None 
)
__str__(self, encoding=None, error=None) -> object

Serialize the Split object and return as a new Unicode object.

Keyword arguments:
encoding -- defaults to str_methods.default_encoding
error -- defaults to str_methods.default_error
See help(unicode) for more details or http://docs.python.org/howto/unicode.html.

Definition at line 199 of file str_methods.py.

199 def __split__str__(self, encoding=None, error=None):
200  """__str__(self, encoding=None, error=None) -> object
201 
202  Serialize the Split object and return as a new Unicode object.
203 
204  Keyword arguments:
205  encoding -- defaults to str_methods.default_encoding
206  error -- defaults to str_methods.default_error
207  See help(unicode) for more details or http://docs.python.org/howto/unicode.html.
208 
209  """
210 
211  from gnucash import Split
212  import time
213  #self=Split(instance=self)
214 
215  lot=self.GetLot()
216  if lot:
217  if type(lot).__name__ == 'SwigPyObject':
218  lot=gnucash.GncLot(instance=lot)
219  lot_str=lot.get_title()
220  else:
221  lot_str='---'
222 
223  transaction=self.GetParent()
224 
225  # This dict and the return statement can be changed according to individual needs
226  fmt_dict={
227  "account":self.GetAccount().name,
228  "value":self.GetValue(),
229  "memo":self.GetMemo(),
230  "lot":lot_str}
231 
232  fmt_str= ("Account: {account:20} "+
233  "Value: {value:>10} "+
234  "Memo: {memo:30} ")
235 
236  if self.optionflags & self.OPTIONFLAGS_BY_NAME["PRINT_TRANSACTION"]:
237  fmt_t_dict={
238  "transaction_time":time.ctime(transaction.GetDate()),
239  "transaction2":transaction.GetDescription()}
240  fmt_t_str=(
241  "Transaction: {transaction_time:30} "+
242  "- {transaction2:30} "+
243  "Lot: {lot:10}")
244  fmt_dict.update(fmt_t_dict)
245  fmt_str += fmt_t_str
246 
247  return fmt_str.format(**all_as_classwithcutting__format__keys(encoding,error,**fmt_dict))
248 
249 # This could be something like an __init__. Maybe we could call it virus because it infects the Split object which
250 # thereafter mutates to have better capabilities.
251 infect(gnucash.Split,__split__str__,"__str__")
252 gnucash.Split.register_optionflag("PRINT_TRANSACTION")
253 gnucash.Split.setflag("PRINT_TRANSACTION",True)
254 

◆ __transaction__str__()

def str_methods.__transaction__str__ (   self)
__str__ method for Transaction class

Definition at line 255 of file str_methods.py.

255 def __transaction__str__(self):
256  """__str__ method for Transaction class"""
257  from gnucash import Transaction
258  import time
259  self=Transaction(instance=self)
260 
261  fmt_tuple=('Date:',time.ctime(self.GetDate()),
262  'Description:',self.GetDescription(),
263  'Notes:',self.GetNotes())
264 
265  transaction_str = "{0:6}{1:25} {2:14}{3:40} {4:7}{5:40}".format(
266  *all_as_classwithcutting__format__(*fmt_tuple))
267  transaction_str += "\n"
268 
269  splits_str=""
270  for n,split in enumerate(self.GetSplitList()):
271  if not (type(split)==gnucash.Split):
272  split=gnucash.Split(instance=split)
273 
274  transaction_flag = split.getflag("PRINT_TRANSACTION")
275  split.setflag("PRINT_TRANSACTION",False)
276  splits_str += "[{0:>2}] ".format(str(n))
277  splits_str += str(split)
278  splits_str += "\n"
279  split.setflag("PRINT_TRANSACTION",transaction_flag)
280 
281  return transaction_str + splits_str
282 
283 gnucash.gnucash_core_c.__transaction__str__=__transaction__str__
284 gnucash.Transaction.add_method("__transaction__str__","__str__")
285 

◆ all_as_classwithcutting__format__()

def str_methods.all_as_classwithcutting__format__ (   args)
Converts every argument to instance of ClassWithCutting__format__

Definition at line 168 of file str_methods.py.

168 def all_as_classwithcutting__format__(*args):
169  """Converts every argument to instance of ClassWithCutting__format__"""
170 
171  #import types
172  l=[]
173  for a in args:
174  #if type(a) in [types.StringType, types.UnicodeType]:
175  # a=a.decode("UTF-8")
176  l.append(ClassWithCutting__format__(a))
177 
178  return l
179 

◆ all_as_classwithcutting__format__keys()

def str_methods.all_as_classwithcutting__format__keys (   encoding = None,
  error = None,
  keys 
)
Converts every argument to instance of ClassWithCutting__format__

Definition at line 180 of file str_methods.py.

180 def all_as_classwithcutting__format__keys(encoding=None, error=None, **keys):
181  """Converts every argument to instance of ClassWithCutting__format__"""
182 
183  #import types
184  d={}
185  if encoding==None:
186  encoding=DEFAULT_ENCODING
187  if error==None:
188  error=DEFAULT_ERROR
189  for a in keys:
190  #if isinstance(keys[a], str):
191  # keys[a]=keys[a].decode(encoding,error)
192  d[a]=ClassWithCutting__format__(keys[a])
193 
194  return d
195 
196 
197 
198 # Split

◆ register_optionflag()

def str_methods.register_optionflag (   self,
  name 
)
Taken from doctest.py

Definition at line 53 of file str_methods.py.

53 def register_optionflag(self,name):
54  """Taken from doctest.py"""
55  # Create a new flag unless `name` is already known.
56  return self.OPTIONFLAGS_BY_NAME.setdefault(name, 1 << len(self.OPTIONFLAGS_BY_NAME))
57 

◆ ya_add_method()

def str_methods.ya_add_method (   _class,
  function,
  method_name = None,
  clsmethod = False,
  noinstance = False 
)
Calls add_method from function_methods.py but makes it
possible to use functions in this module. Also keeps the
docstring

Definition at line 58 of file str_methods.py.

58 def ya_add_method(_class, function, method_name=None, clsmethod=False, noinstance=False):
59  """Calls add_method from function_methods.py but makes it
60  possible to use functions in this module. Also keeps the
61  docstring"""
62 
63  if method_name == None:
64  method_name = function.__name__
65 
66  setattr(gnucash.gnucash_core_c,function.__name__,function)
67  if clsmethod:
68  mf=_class.ya_add_classmethod(function.__name__,method_name)
69  elif noinstance:
70  mf=_class.add_method(function.__name__,method_name)
71  else:
72  mf=_class.ya_add_method(function.__name__,method_name)
73  if function.__doc__ != None:
74  setattr(mf, "__doc__", function.__doc__)
75