Changeset 52c3467
- Timestamp:
- Jan 22, 2010, 4:56:19 AM (16 years ago)
- Branches:
- master, client
- Children:
- 31bd056
- Parents:
- e64b195
- git-author:
- Alex Dehnert <adehnert@…> (01/22/10 04:56:19)
- git-committer:
- Alex Dehnert <adehnert@…> (01/22/10 04:56:19)
- Location:
- treasury
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
treasury/finance_core/models.py
r169d7b5 r52c3467 85 85 86 86 87 class Transaction(models.Model): 88 name = models.CharField(max_length=40) 89 desc = models.TextField(blank=True) 90 91 def __unicode__(self,): 92 return self.name 93 94 def make_transfer(name, amount, 95 layer, budget_term, from_area, to_area, desc, ): 96 tx = Transaction( 97 name=name, 98 desc=desc, 99 ) 100 tx.save() 101 102 from_li = LineItem( 103 label='Send: %s' % (name, ), 104 amount=-amount, 105 budget_area=from_area, 106 budget_term=budget_term, 107 layer=layer, 108 tx=tx, 109 ) 110 from_li.save() 111 112 to_li = LineItem( 113 label='Receive: %s' % (name, ), 114 amount=amount, 115 budget_area=to_area, 116 budget_term=budget_term, 117 layer=layer, 118 tx=tx, 119 ) 120 to_li.save() 121 122 return tx 123 124 125 class LineItem(models.Model): 126 tx = models.ForeignKey(Transaction) 127 amount = models.DecimalField(max_digits=7, decimal_places=2, help_text='Do not include "$"') 128 label = models.CharField(max_length=40) 129 budget_area = models.ForeignKey(BudgetArea) 130 budget_term = models.ForeignKey(BudgetTerm) 131 layer = models.IntegerField() # this might actually be a Transaction property... 132 133 def layer_string(self,): 134 layer = self.layer 135 return layer_name(get_layer_by_num(layer)) 136 137 def __unicode__(self, ): 138 return "%s: %s: $%s (%s) in %s during %s" % ( 139 self.tx, self.label, self.amount, self.layer, 140 self.budget_area, self.budget_term, ) 141 142 143 layers=( 144 (10, 'budget'), 145 (20, 'allocation'), 146 (30, 'expenditure'), 147 (40, 'closeout'), 148 ) 149 def get_layer_by_name(name): 150 for layer in layers: 151 if name == layer[1]: 152 return layer 153 raise KeyError, "layer %s not found" % (name, ) 154 def get_layer_by_num(num): 155 for layer in layers: 156 if num == layer[0]: 157 return layer 158 raise KeyError, "layer %d not found" % (num, ) 159 def layer_name(layer): return layer[1] 160 def layer_num(layer): return layer[0] 161 162 87 163 def coerce_full_email(email): 88 164 if '@' in email: return email -
treasury/vouchers/import_budget.py
r7874f6a r52c3467 4 4 import subprocess 5 5 import vouchers.models 6 from vouchers.models import BudgetArea 7 from vouchers.models import coerce_full_email 6 import finance_core.models 7 from finance_core.models import BudgetArea 8 from finance_core.models import coerce_full_email 9 from finance_core.models import Transaction 10 from finance_core.models import get_layer_by_name, layer_num 11 from decimal import * 8 12 9 13 columns = ['comm_name','priority','expense_type','start_date','end_date','project','item_name','desc','people','count','costitem','subtotal','per_person','email_list'] … … 14 18 reader = csv.reader(infile) 15 19 for comm in reader: 16 email_list,chair_list,name,prefer_chair,area = comm20 email_list,chair_list,name,prefer_chair,area,account = comm 17 21 if prefer_chair=='yes': prefer_chair = True 18 22 else: prefer_chair = False 19 committees[email_list] = { 'email_list': email_list, 'chair_list': chair_list, 'name': name, 'prefer_chair':prefer_chair, 'area':area }23 committees[email_list] = { 'email_list': email_list, 'chair_list': chair_list, 'name': name, 'prefer_chair':prefer_chair, 'area':area, 'account':account} 20 24 return committees 21 25 … … 60 64 for comm in committees.values(): 61 65 parent = parents[comm['area']] 62 parent.add_child( 63 name=comm['name'], 64 owner=coerce_full_email(comm['chair_list']), 65 interested=coerce_full_email(comm['email_list']), 66 use_owner=comm['prefer_chair'], 67 always=True, 68 ) 66 if len(parent.get_children().filter(name=comm['name'])) > 0: 67 pass 68 else: 69 parent.add_child( 70 name=comm['name'], 71 owner=coerce_full_email(comm['chair_list']), 72 interested=coerce_full_email(comm['email_list']), 73 use_owner=comm['prefer_chair'], 74 always=True, 75 ) 69 76 return (depth+1, ) 70 77 78 budget_layer = layer_num(get_layer_by_name('budget')) 71 79 def do_process_rows(committees, budget, term, depth): 72 80 reader = csv.reader(budget) … … 105 113 else: line_item_obj = line_items[0] 106 114 line_item_obj.mark_used(term) 115 amount = Decimal(subtotal.replace('$', '').replace(',', '')) 116 finance_core.models.make_transfer( 117 item_name, amount, budget_layer, 118 term, budget_source, line_item_obj, desc=desc) 119 107 120 108 121 def main(committees_file, budget_file, term_name, ):
Note: See TracChangeset
for help on using the changeset viewer.