GnuCash c935c2f+
Loading...
Searching...
No Matches
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

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

Variables

str str_methods.DEFAULT_ENCODING = "UTF-8"
 
str str_methods.DEFAULT_ERROR = "ignore"
 
 str_methods.OPTIONFLAGS_BY_NAME
 

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__()

str_methods.__entry__str__ (   self)
__str__ method for Entry

Definition at line 324 of file str_methods.py.

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

◆ __invoice__str__()

str_methods.__invoice__str__ (   self)
__str__ method for Invoice

Definition at line 284 of file str_methods.py.

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

◆ __split__str__()

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.

199def __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 lot_str=lot.get_title()
218 else:
219 lot_str='---'
220
221 transaction=self.GetParent()
222
223 # This dict and the return statement can be changed according to individual needs
224 fmt_dict={
225 "account":self.GetAccount().name,
226 "value":self.GetValue(),
227 "memo":self.GetMemo(),
228 "lot":lot_str}
229
230 fmt_str= ("Account: {account:20} "+
231 "Value: {value:>10} "+
232 "Memo: {memo:30} ")
233
234 if self.optionflags & self.OPTIONFLAGS_BY_NAME["PRINT_TRANSACTION"]:
235 fmt_t_dict={
236 "transaction_time":time.ctime(transaction.GetDate()),
237 "transaction2":transaction.GetDescription()}
238 fmt_t_str=(
239 "Transaction: {transaction_time:30} "+
240 "- {transaction2:30} "+
241 "Lot: {lot:10}")
242 fmt_dict.update(fmt_t_dict)
243 fmt_str += fmt_t_str
244
245 return fmt_str.format(**all_as_classwithcutting__format__keys(encoding,error,**fmt_dict))
246
247# This could be something like an __init__. Maybe we could call it virus because it infects the Split object which
248# thereafter mutates to have better capabilities.

◆ __transaction__str__()

str_methods.__transaction__str__ (   self)
__str__ method for Transaction class

Definition at line 253 of file str_methods.py.

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

◆ all_as_classwithcutting__format__()

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

Definition at line 168 of file str_methods.py.

168def 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()

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.

180def 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

◆ getflag()

str_methods.getflag (   self,
  name 
)

Definition at line 48 of file str_methods.py.

48def getflag(self, name):
49 if not(name in self.OPTIONFLAGS_BY_NAME):
50 raise KeyError(str(name)+" is not a registered key.")
51 return ((self.optionflags & self.OPTIONFLAGS_BY_NAME[name]) != 0)
52

◆ infect()

str_methods.infect (   _class,
  function,
  method_name 
)

Definition at line 76 of file str_methods.py.

76def infect(_class, function, method_name):
77 if not getattr(_class, "OPTIONFLAGS_BY_NAME", None):
78 _class.OPTIONFLAGS_BY_NAME={}
79 _class.optionflags=0
80 ya_add_method(_class,register_optionflag,clsmethod=True)
81 ya_add_method(_class,setflag,clsmethod=True)
82 ya_add_method(_class,getflag,clsmethod=True)
83 ya_add_method(_class, function, method_name)
84

◆ register_optionflag()

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

Definition at line 53 of file str_methods.py.

53def 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

◆ setflag()

str_methods.setflag (   self,
  name,
  value 
)

Definition at line 40 of file str_methods.py.

40def setflag(self, name, value):
41 if not(name in self.OPTIONFLAGS_BY_NAME):
42 self.register_optionflag(name)
43 if value == True:
44 self.optionflags |= self.OPTIONFLAGS_BY_NAME[name]
45 else:
46 self.optionflags &= ~self.OPTIONFLAGS_BY_NAME[name]
47

◆ ya_add_method()

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.

58def 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

Variable Documentation

◆ DEFAULT_ENCODING

str str_methods.DEFAULT_ENCODING = "UTF-8"

Definition at line 37 of file str_methods.py.

◆ DEFAULT_ERROR

str str_methods.DEFAULT_ERROR = "ignore"

Definition at line 38 of file str_methods.py.

◆ OPTIONFLAGS_BY_NAME

str_methods.OPTIONFLAGS_BY_NAME

Definition at line 41 of file str_methods.py.