Changeset f468e6d


Ignore:
Timestamp:
Jan 6, 2010, 3:04:46 AM (16 years ago)
Author:
Alex Dehnert <adehnert@…>
Branches:
master, client
Children:
b26026c
Parents:
6027277
git-author:
Alex Dehnert <adehnert@…> (01/06/10 03:04:46)
git-committer:
Alex Dehnert <adehnert@…> (01/06/10 03:04:46)
Message:

Split vouchers off into a finance_core app too

Location:
treasury
Files:
6 added
6 edited

Legend:

Unmodified
Added
Removed
  • treasury/settings.py

    r3306b90 rf468e6d  
    8888    'treebeard',
    8989    'vouchers',
     90    'finance_core',
    9091)
  • treasury/urls.py

    r13a23ce rf468e6d  
    11from django.conf.urls.defaults import *
     2
     3# Necessary views
     4import treasury.finance_core.views
    25
    36# Uncomment the next two lines to enable the admin:
     
    710urlpatterns = patterns('',
    811    # Example:
     12    (r'^accounts/display_tree', treasury.finance_core.views.display_tree),
    913    (r'^vouchers/', include('treasury.vouchers.urls')),
     14    (r'^finance_core/', include('treasury.finance_core.urls')),
    1015
    1116    # Uncomment the admin/doc line below and add 'django.contrib.admindocs'
  • treasury/vouchers/admin.py

    r6027277 rf468e6d  
    11import vouchers
    22from django.contrib import admin
    3 
    4 indent_str = u"\u00A0\u00A0"
    5 
    6 
    7 class BudgetAreaAdmin(admin.ModelAdmin):
    8     pass
    9     #fields = [ 'path', 'name', 'comment', 'owner', 'interested', ]
    10 
    11 
    12 class BudgetTermAdmin(admin.ModelAdmin):
    13     prepopulated_fields = {"slug": ("name",)}
    143
    154
     
    2413
    2514    def get_budgetarea_name(self, area, ):
    26         return indent_str*area.depth + unicode(area)
     15        return area.indented_name()
    2716
    2817    fieldsets = [
     
    3322
    3423
    35 admin.site.register(vouchers.models.BudgetArea, BudgetAreaAdmin)
    36 admin.site.register(vouchers.models.BudgetTerm, BudgetTermAdmin)
    37 admin.site.register(vouchers.models.BudgetAreaTerm)
    3824admin.site.register(vouchers.models.ReimbursementRequest, ReimbursementRequestAdmin)
  • treasury/vouchers/models.py

    r6027277 rf468e6d  
    11from django.db import models
    2 import treebeard.mp_tree
    32import settings
    4 
    5 
    6 class BudgetArea(treebeard.mp_tree.MP_Node):
    7     name = models.CharField(max_length=50)
    8     comment = models.TextField(blank=True)
    9     always = models.BooleanField(blank=True, default=False)
    10 
    11     # Contact / ACL information
    12     # If not specified, inherit from parent
    13     owner = models.EmailField(help_text = 'Email address of the officer responsible for the area', blank=True) # owner of the budget area
    14     interested = models.EmailField(help_text='Email address of parties interested in the area', blank=True) # interested parties (ie, whole committee)
    15     use_owner = models.BooleanField(default=False, blank=True)
    16 
    17     def contact_address(self,):
    18         address = ''
    19         if self.use_owner:
    20             address = self.owner or self.interested
    21         else:
    22             address = self.interested or self.owner
    23         return address or self.get_parent().contact_address()
    24 
    25     def mark_used(self, term, comment=""):
    26         BudgetAreaTerm.objects.get_or_create(
    27             budget_area=self,
    28             budget_term=term,
    29             defaults={'comment':comment}
    30         )
    31 
    32     @classmethod
    33     def get_by_path(cls, path):
    34         root = BudgetArea.objects.get(name=path[0], depth=1)
    35         node = root
    36         for name in path[1:]:
    37             node = node.get_children().filter(name=name)[0]
    38         return node
    39 
    40     def dump_to_html(self):
    41         struct = self.dump_bulk()
    42         return self.struct_to_html(struct, depth=0)
    43 
    44     def struct_to_html(self, struct, depth=0):
    45         def format_data(data):
    46             return "<em>"+data['name']+"</em> "+unicode(data)
    47         prefix = "\t"*depth
    48         html = prefix+"<ul>\n"
    49         html = html + "\n".join(
    50             [("%(prefix)s\t<li>%(data)s\n%(children)s\t%(prefix)s</li>\n" % {
    51                 'prefix':prefix,
    52                 'data':format_data(elem['data']),
    53                 'children':('children' in elem and self.struct_to_html(elem['children'], depth+1) or '')
    54             }) for elem in struct])
    55         html = html + prefix + "</ul>\n"
    56         return html
    57 
    58     def __unicode__(self,):
    59         return u"%s [%s] (%s)" % (self.name, self.contact_address(), self.always, )
    60 
    61 
    62 class BudgetTerm(models.Model):
    63     name = models.CharField(max_length=20)
    64     slug = models.SlugField(max_length=20)
    65     start_date = models.DateField()
    66     end_date = models.DateField()
    67     submit_deadline = models.DateField()
    68 
    69     def __unicode__(self,):
    70         return "%s (%s to %s [due %s])" % (self.name, self.start_date, self.end_date, self.submit_deadline, )
    71 
    72 
    73 class BudgetAreaTerm(models.Model):
    74     budget_area = models.ForeignKey(BudgetArea)
    75     budget_term = models.ForeignKey(BudgetTerm)
    76     comment = models.TextField(blank=True, )
    77 
    78     def __unicode__(self,):
    79         return "%s during %s" % (self.budget_area, self.budget_term, )
     3from finance_core.models import BudgetArea, BudgetTerm
    804
    815
     
    8812    budget_area = models.ForeignKey(BudgetArea)
    8913    budget_term = models.ForeignKey(BudgetTerm)
    90 
    91 def coerce_full_email(email):
    92     if '@' in email: return email
    93     else: return email + '@' + settings.DEFAULT_DOMAIN
  • treasury/vouchers/urls.py

    r13a23ce rf468e6d  
    33
    44urlpatterns = patterns('',
    5     (r'^accounts/display_tree', treasury.vouchers.views.display_tree),
    65)
  • treasury/vouchers/views.py

    r13a23ce rf468e6d  
    1 from django.http import HttpResponse
    2 import treasury.vouchers.models
    3 
    4 def display_tree(request):
    5     root = treasury.vouchers.models.BudgetArea.get_by_path(['Accounts'])
    6     return HttpResponse(root.dump_to_html())
     1# Create your views here.
Note: See TracChangeset for help on using the changeset viewer.