## $Id: export.py 14219 2016-10-20 12:48:21Z henrik $
##
## Copyright (C) 2014 Uli Fouquet & Henrik Bettermann
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##
"""Exporters for uniben customer objects and subobjects.
"""
import grok
from waeup.ikoba.customers.export import (
    CustomerExporter, CustomerDocumentExporterBase, ContractExporterBase)
from ikobacustom.uniben.customers.interfaces import (
    IUnibenCustomer, IUnibenCustomerJPGDocument, IRIAAContractProcess,
    IUnibenCustomerPDFDocument)
from ikobacustom.uniben.interfaces import MessageFactory as _

class UnibenCustomerExporter(CustomerExporter):
    """Exporter for Customers.
    """
    iface = IUnibenCustomer
    title = _(u'Uniben Customers')


class UnibenCustomerPDFDocumentExporter(CustomerDocumentExporterBase):
    """Exporter for documents.
    """
    grok.name('unibencustomerpdfdocuments')
    iface = IUnibenCustomerPDFDocument
    title = _(u'Uniben Customer PDF Documents')
    class_name = 'UnibenCustomerPDFDocument'


class UnibenCustomerJPGDocumentExporter(CustomerDocumentExporterBase):
    """Exporter for documents.
    """
    grok.name('unibencustomerjpgdocuments')
    iface = IUnibenCustomerJPGDocument
    title = _(u'Uniben Customer JPG Documents')
    class_name = 'UnibenCustomerJPGDocument'


class RIAAContractExporter(ContractExporterBase):
    """Exporter for Contract instances.
    """
    grok.name('riaacontracts')
    iface = IRIAAContractProcess
    title = _(u'RIAA Customer Contracts')
    class_name = 'RIAAContract'

    def mangle_value(self, value, name, context=None):

        if name == 'history':
            return value.messages
        mangled_value = getattr(value, 'document_id', None)
        if mangled_value:
            return mangled_value
        mangled_value = getattr(value, 'product_id', None)
        if mangled_value:
            return mangled_value
        if name == 'product_options' and value is not None:
            return [eval(entry.to_string()) for entry in value]
        return super(
            ContractExporterBase, self).mangle_value(
            value, name, context=context)
