Ignore:
Timestamp:
20 Nov 2014, 08:32:17 (10 years ago)
Author:
Henrik Bettermann
Message:

Add customer documents exporter.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.ikoba/trunk/src/waeup/ikoba/customers/export.py

    r11997 r12006  
    1 ## $Id: export.py 11757 2014-07-10 12:20:30Z henrik $
     1## $Id$
    22##
    33## Copyright (C) 2014 Uli Fouquet & Henrik Bettermann
     
    2727from waeup.ikoba.customers.catalog import CustomersQuery
    2828from waeup.ikoba.customers.interfaces import (
    29     ICustomer, ICSVCustomerExporter)
     29    ICustomer, ICSVCustomerExporter, ICustomerDocument)
    3030from waeup.ikoba.utils.batching import ExporterBase
    3131from waeup.ikoba.utils.helpers import iface_names, to_timezone
     
    3333#: A tuple containing all exporter names referring to customers or
    3434#: subobjects thereof.
    35 EXPORTER_NAMES = ('customers', )
     35EXPORTER_NAMES = ('customers', 'customerdocuments')
    3636
    3737
     
    4040    """
    4141    return cust_filter.query()
     42
     43def get_documents(customers):
     44    """Get all documents of `customers`.
     45    """
     46    documents = []
     47    for customer in customers:
     48        for document in customer.get('documents', {}).values():
     49            documents.append(document)
     50    return documents
    4251
    4352
     
    127136            CustomersExporter, self).mangle_value(
    128137            value, name, context=context)
     138
     139class CustomerDocumentsExporter(grok.GlobalUtility, CustomerExporterBase):
     140    """Exporter for CustomerDocument instances.
     141    """
     142    grok.name('customerdocuments')
     143
     144    #: Fieldnames considered by this exporter
     145    fields = tuple(
     146        sorted(iface_names(
     147            ICustomerDocument, exclude_attribs=False))) + (
     148            'customer_id',)
     149
     150    #: The title under which this exporter will be displayed
     151    title = _(u'Customer Documents')
     152
     153    def filter_func(self, x, **kw):
     154        return get_documents(x, **kw)
     155
     156    def mangle_value(self, value, name, context=None):
     157        """Treat location values special.
     158        """
     159        if context is not None:
     160            customer = context.customer
     161            if name in ('customer_id',) and customer is not None:
     162                value = getattr(customer, name, None)
     163        return super(
     164            CustomerDocumentsExporter, self).mangle_value(
     165            value, name, context=context)
Note: See TracChangeset for help on using the changeset viewer.