text:
from datetime import date, timedelta, datetime
from django.conf import settings
from django.db import models, transaction
from django.template.loader import render_to_string
from django.utils.translation import ugettext_lazy as _
from django.core.urlresolvers import reverse
from filebrowser_safe.fields import FileBrowseField
from django_fsm import FSMIntegerField
from mezzanine.core.models import Displayable
from cartridge.shop import models as cartridge_models
from os import path
import reversion
from weasyprint import HTML
from international.models import countries, currencies, countries_raw
from .const.postaladdressprefix import (POSTAL_ADDRESS_PREFIX_CHOICES,
                                        PostalAddressPrefix)
from .const.purpose import (POSTAL_ADDRESS_PURPOSE_CHOICES,
                            PHONE_ADDRESS_PURPOSE_CHOICES,
                            EMAIL_ADDRESS_PURPOSE_CHOICES, EmailAddressPurpose,
                            PhoneAddressPurpose, PostalAddressPurpose)
from .const.states import (CONTRACT_STATE_CHOICES, ContractStatesEnum,
                           ContractStatesLabelEnum)
from django_extensions.db.fields import (CreationDateTimeField,
                                         ModificationDateTimeField)
from solo.models import SingletonModel

# ######################
# ##   Base Classes   ##
# ######################

class Contact(models.Model):
    prefix = models.CharField(max_length=1,
                              choices=POSTAL_ADDRESS_PREFIX_CHOICES,
                              verbose_name=_("Title"), blank=True, null=True)
    name = models.CharField(max_length=300, verbose_name=_("Name"))
    dateofcreation = CreationDateTimeField(verbose_name=_("Created at"))
    lastmodification = ModificationDateTimeField(
        verbose_name=_("Last modified"))
    lastmodifiedby = models.ForeignKey(settings.AUTH_USER_MODEL,
                                       limit_choices_to={'is_staff': True},
                                       blank=True,
                                       verbose_name=_("Last modified by"),
                                       null=True)
    default_currency = models.CharField(verbose_name=_('Currency'),
                                        max_length=3, choices=currencies,
                                        blank=True, null=True)

    class Meta:
        abstract = True

    @property
    def get_prefix(self):
        if self.prefix:
            return PostalAddressPrefix.choices[self.prefix]
        return ""

    @transaction.atomic()
    @reversion.create_revision()
    def save(self, *args, **kwargs):
        super(Contact, self).save(*args, **kwargs)

    def __str__(self):
        if self.prefix:
            return "%s %s" % (self.get_prefix, self.name)
        return self.name

class EmailAddress(models.Model):
    email = models.EmailField(max_length=200, verbose_name=_("Email Address"))
    purpose = models.CharField(verbose_name=_("Purpose"),
                               max_length=1,
                               choices=EMAIL_ADDRESS_PURPOSE_CHOICES,
                               default='H')

    class Meta:
        abstract = True
        verbose_name = _('Email Address')
        verbose_name_plural = _('Email Address')
        permissions = (
            ('view_emailaddress', 'Can view email address'),
        )

    def get_purpose(self):
        return EmailAddressPurpose.choices[self.purpose]

    def __str__(self):
        return "%s" % self.email

class PhoneAddress(models.Model):
    phone = models.CharField(max_length=20, verbose_name=_("Phone Number"))
    purpose = models.CharField(verbose_name=_("Purpose"), max_length=1,
                               choices=PHONE_ADDRESS_PURPOSE_CHOICES,
                               default='H')

    class Meta:
        abstract = True
        verbose_name = _('Phone Address')
        verbose_name_plural = _('Phone Address')
        permissions = (
            ('view_phoneaddress', 'Can view phone address'),
        )

    def get_purpose(self):
        return PhoneAddressPurpose.choices[self.purpose]

    def __str__(self):
        return "%s" % self.phone

class PostalAddress(models.Model):
    addressline1 = models.CharField(max_length=200,
                                    verbose_name=_("Addressline 1"),
                                    blank=True, null=True)
    addressline2 = models.CharField(max_length=200,
                                    verbose_name=_("Addressline 2"),
                                    blank=True, null=True)
    zipcode = models.IntegerField(verbose_name=_("Zipcode"),
                                  blank=True, null=True)
    city = models.CharField(max_length=100, verbose_name=_("City"),
                            blank=True, null=True)
    state = models.CharField(max_length=100, verbose_name=_("State"),
                             blank=True, null=True)
    country = models.CharField(max_length=2, choices=countries,
                               verbose_name=_("Country"),
                               blank=True, null=True)
    purpose = models.CharField(verbose_name=_("Purpose"), max_length=1,
                               choices=POSTAL_ADDRESS_PURPOSE_CHOICES,
                               default='C')

    class Meta:
        abstract = True
        verbose_name = _('Postal Address')
        verbose_name_plural = _('Postal Address')
        permissions = (
            ('view_postaladdress', 'Can view postal address'),
        )

    def get_purpose(self):
        return PostalAddressPurpose.choices[self.purpose]

    def get_country(self):
        return list(c[4].partition(',')[0].partition('(')[0].strip() for c in countries_raw if c[1] == self.country)[0]

    def __str__(self):
        if self.addressline1 and self.zipcode and self.city:
            return '%s, %s %s' % (self.addressline1, self.zipcode, self.city)
        elif self.addressline1 and self.city:
            return '%s, %s' % (self.addressline1, self.city)
        elif self.zipcode and self.city:
            return '%s %s' % (self.zipcode, self.city)
        elif self.city:
            return unicode(self.city)
        return self.addressline1

class SalesContract(models.Model):
    external_reference = models.CharField(verbose_name=_("External Reference"),
                                          max_length=100, blank=True)
    discount = models.DecimalField(max_digits=5, decimal_places=2,
                                   verbose_name=_("Discount"), blank=True,
                                   null=True)
    customer = models.ForeignKey('crm_core.Customer',
                                 verbose_name=_("Customer"))
    dateofcreation = CreationDateTimeField(verbose_name=_("Created at"),
                                           editable=False)
    lastmodification = ModificationDateTimeField(
        verbose_name=_("Last modified"), editable=False)
    lastmodifiedby = models.ForeignKey(settings.AUTH_USER_MODEL,
                                       limit_choices_to={'is_staff': True},
                                       blank=True,
                                       verbose_name=_("Last modified by"),
                                       null=True)
    pdf_path = models.CharField(max_length=200,
                                null=True, blank=True, editable=False)

    class Meta:
        abstract = True

    @transaction.atomic()
    @reversion.create_revision()
    def save(self, *args, **kwargs):
        super(SalesContract, self).save(*args, **kwargs)

# #############################
# ## CARTRIDGE MODIFICATIONS ##
# #############################

class CustomerCartItem(cartridge_models.CartItem):
    product = models.ForeignKey(cartridge_models.Product,
                                verbose_name=_('Product'))

    def save(self, *args, **kwargs):
        self.sku = self.product.sku
        self.unit_price = self.product.price()
        self.url = self.product.get_absolute_url()
        super(CustomerCartItem, self).save(*args, **kwargs)

CustomerCartItem._meta.get_field('description').blank = True

# ########################
# ##    PARTICIPANTS    ##
# ########################

class Customer(Contact, Displayable):
    firstname = models.CharField(max_length=300,
                                 verbose_name=_("Prename"),
                                 blank=True, null=True)
    billingcycle = models.ForeignKey('crm_core.CustomerBillingCycle',
                                     verbose_name=_('Billing Cycle'))
    ismemberof = models.ManyToManyField('crm_core.CustomerGroup',
                                        verbose_name=_('Is member of'),
                                        blank=True)
    search_fields = ('firstname', 'name')

    class Meta:
        verbose_name = _('Customer')
        verbose_name_plural = _('Customers')
        permissions = (
            ('view_customer', 'Can view customers'),
        )

    def get_absolute_url(self):
        return reverse('customer_detail', args=[str(self.id)])

    def create_contract(self, request):
        contract = Contract()
        contract.default_customer = self
        contract.default_currency = self.default_currency
        contract.lastmodifiedby = request.user
        contract.staff = request.user
        contract.save()
        return contract

    def get_invoice_address(self):
        for address in self.addresses.all():
            if address.purpose == 'B':
                return address
            elif address.purpose == 'D':
                return address
            elif address.purpose == 'C':
                return address
        return "No Address"

    def get_quote_address(self):
        for address in self.addresses.all():
            if address.purpose == 'B':
                return address
            elif address.purpose == 'D':
                return address
            elif address.purpose == 'C':
                return address
        return "No Address"

    def get_contact_address(self):
        for address in self.addresses.all():
            if address.purpose == 'C':
                return address
            elif address.purpose == 'B':
                return address
            elif address.purpose == 'D':
                return address
        return "No Address"

    def get_phone_address(self):
        for pn in self.phonenumbers.all():
            if pn.purpose == 'O':
                return pn
            elif pn.purpose == 'B':
                return pn
            elif pn.purpose == 'H':
                return pn
            elif pn.purpose == 'P':
                return pn
        return "No Phone"

    def get_email_address(self):
        for ea in self.emailaddresses.all():
            if ea.purpose == 'O':
                return ea
            elif ea.purpose == 'H':
                return ea
        return "No email address"

    def is_in_group(self, customer_group):
        for customerGroupMembership in self.ismemberof.all():
            if customerGroupMembership.id == customer_group.id:
                return 1
        return 0

    def short_name(self):
        if self.firstname:
            return "%s %s" % (self.firstname, self.name)
        return self.name

    def __str__(self):
        if self.prefix and self.firstname:
            return "%s %s %s" % (self.get_prefix, self.firstname, self.name)
        else:
            return self.short_name()

class Supplier(Contact, Displayable):
    direct_shipment_to_customers = models.BooleanField(
        verbose_name=_("Offers direct Shipment to Customer"), default=False)
    search_fields = ('name', )

    class Meta:
        verbose_name = _("Supplier")
        verbose_name_plural = _("Suppliers")
        permissions = (
            ('view_supplier', 'Can view suppliers'),
        )

    def get_absolute_url(self):
        return reverse('supplier_detail', args=[str(self.id)])

    def __str__(self):
        if self.prefix:
            return "%s %s" % (self.get_prefix, self.name)
        return self.name

# #########################
# ##   Contact Related   ##
# #########################

class CustomerPostalAddress(PostalAddress):
    person = models.ForeignKey(Customer, related_name='addresses')

class SupplierPostalAddress(PostalAddress):
    person = models.ForeignKey(Supplier, related_name='addresses')

class CustomerPhoneAddress(PhoneAddress):
    person = models.ForeignKey(Customer, related_name='phonenumbers')

class SupplierPhoneAddress(PhoneAddress):
    person = models.ForeignKey(Supplier, related_name='phonenumbers')

class CustomerEmailAddress(EmailAddress):
    person = models.ForeignKey(Customer, related_name='emailaddresses')

class SupplierEmailAddress(EmailAddress):
    person = models.ForeignKey(Supplier, related_name='emailaddresses')

class CustomerBillingCycle(models.Model):
    name = models.CharField(max_length=300, verbose_name=_("Name"))
    days_to_payment = models.IntegerField(
        verbose_name=_("Days to Payment Date"))
    prefix = models.CharField(max_length=300,
                              verbose_name=_("Prefix"), null=True)

    class Meta:
        verbose_name = _('Billing Cycle')
        verbose_name_plural = _('Billing Cycles')
        permissions = (
            ('view_customerbillingcycle', 'Can view billing cycles'),
        )

    def __str__(self):
        return "%s %s" % (self.prefix, self.name)

class CustomerGroup(models.Model):
    name = models.CharField(verbose_name=_('Name'), max_length=300)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = _('Customer Group')
        verbose_name_plural = _('Customer Groups')
        permissions = (
            ('view_customer_group', 'Can view customer groups'),
        )

# ##########################
# ##   CONTRACT RELATED   ##
# ##########################

class Contract(Displayable):
    state = FSMIntegerField(default=10, choices=CONTRACT_STATE_CHOICES)
    staff = models.ForeignKey(settings.AUTH_USER_MODEL,
                              limit_choices_to={'is_staff': True}, blank=True,
                              verbose_name=_("Staff"),
                              related_name="db_relcontractstaff", null=True)
    default_customer = models.ForeignKey(Customer,
                                         verbose_name=_("Default Customer"),
                                         null=True, blank=True)
    default_supplier = models.ForeignKey(Supplier,
                                         verbose_name=_("Default Supplier"),
                                         null=True, blank=True)
    default_currency = models.CharField(max_length=3, choices=currencies,
                                        verbose_name=_("Currency"),
                                        blank=True, null=True)
    dateofcreation = CreationDateTimeField(verbose_name=_("Created at"))
    lastmodification = ModificationDateTimeField(
        verbose_name=_("Last modified"))
    lastmodifiedby = models.ForeignKey(settings.AUTH_USER_MODEL,
                                       limit_choices_to={'is_staff': True},
                                       verbose_name=_("Last modified by"),
                                       related_name="db_contractlstmodified",
                                       null=True)
    search_fields = ('title', 'description', )

    class Meta:
        verbose_name = _('Contract')
        verbose_name_plural = _('Contracts')
        permissions = (
            ('view_contract', 'Can view contracts'),
        )
        get_latest_by = 'lastmodification'

    # ToDo refs #67
    def get_price(self):
        res = "N/A"
        if self.has_quotes() and not self.has_invoices() and not self.has_purchaseorders():
            res = str(self.quotes.last().get_price())
        elif self.has_purchaseorders() and not self.has_invoices():
            res = str(self.purchaseorders.last().get_price())
        elif self.has_invoices():
            res = str(self.invoices.last().get_price())
        return res

    def create_invoice(self):
        invoice = Invoice(
            contract=self,
            customer=self.default_customer,
            payableuntil=date.today() + timedelta(
                days=self.default_customer.billingcycle.days_to_payment)
        )
        invoice.discount = 0
        invoice.staff = self.staff
        invoice.cart = self.purchaseorders.latest().cart
        invoice.save()
        return invoice

    def create_quote(self):
        quote = Quote(contract=self, customer=self.default_customer)
        quote.discount = 0
        quote.staff = self.staff
        quote.status = 1
        quote.validuntil = date.today() + timedelta(
            days=self.default_customer.billingcycle.days_to_payment)
        quote.save()
        return quote

    def create_purchase_order(self):
        purchaseorder = PurchaseOrder(contract=self,
                                      customer=self.default_customer)
        purchaseorder.description = self.description
        purchaseorder.discount = 0
        purchaseorder.staff = self.staff
        purchaseorder.supplier = self.default_supplier
        purchaseorder.status = 1
        if self.quotes.count() > 0:
            purchaseorder.cart = self.quotes.latest().cart
        purchaseorder.save()
        return purchaseorder

    def get_name(self):
        return _('Contract') + ' #' + str(self.id)

    def get_state(self):
        return ContractStatesEnum.choices[self.state]

    def get_state_class(self):
        return ContractStatesLabelEnum.choices[self.state]

    def get_absolute_url(self):
        return reverse('contract_detail', args=[str(self.pk)])

    def get_quote_detail_url(self):
        return self.quotes.latest().get_document_url()

    def get_quote_edit_url(self):
        return self.quotes.latest().get_absolute_url()

    def get_purchaseorder_detail_url(self):
        return self.purchaseorders.latest().get_document_url()

    def get_purchaseorder_edit_url(self):
        return self.purchaseorders.latest().get_absolute_url()

    def get_invoice_detail_url(self):
        return self.invoices.latest().get_document_url()

    def get_invoice_edit_url(self):
        return self.invoices.latest().get_absolute_url()

    def has_quotes(self):
        return bool(self.quotes.count() > 0)

    def has_purchaseorders(self):
        return bool(self.purchaseorders.count() > 0)

    def has_invoices(self):
        return bool(self.invoices.count() > 0)

    def __str__(self):
        return self.get_name()

class PurchaseOrder(SalesContract, Displayable):
    contract = models.ForeignKey(Contract,
                                 verbose_name=_("Contract"),
                                 related_name='purchaseorders')
    validuntil = models.DateField(verbose_name=_("Valid until"), null=True)
    staff = models.ForeignKey(settings.AUTH_USER_MODEL,
                              limit_choices_to={'is_staff': True},
                              blank=True, verbose_name=_("Staff"),
                              null=True, related_name='purchaseorder_staff')
    cart = models.ForeignKey(cartridge_models.Cart, null=True)
    search_fields = ('title', 'description', )

    class Meta:
        verbose_name = _('Purchase Order')
        verbose_name_plural = _('Purchase Order')
        permissions = (
            ('view_purchaseorder', 'Can view purchase orders'),
        )
        get_latest_by = 'lastmodification'

    def __init__(self, *args, **kwargs):
        super(PurchaseOrder, self).__init__(*args, **kwargs)
        if not self.cart:
            cart = cartridge_models.Cart()
            cart.save()
            self.cart = cart
            self.save()

    def to_html(self):
        crtitems = []
        for itm in self.cart.items.all():
            crtitems.append(CustomerCartItem.objects.get(
                cartitem_ptr_id=itm.id))
        company_data = CompanyContactData.objects.get(pk=1)
        customer = self.customer
        return render_to_string('pdf_templates/purchaseorder.html',
                                {
                                    'purchaseorder': self,
                                    'positions': crtitems,
                                    'company_data': company_data,
                                    'customer': customer
                                })

    def create_pdf(self):
        html = self.to_html()
        pth = path.normpath(
            '%s/%s/data/pdf/purchaseorders/purchaseorder-%s.pdf' % (
                settings.PROJECT_ROOT, settings.MEDIA_URL, self.pk))
        self.pdf_path = pth
        HTML(string=html, encoding="utf8").write_pdf(target=pth)

    def get_absolute_url(self):
        return reverse('purchaseorder_edit', args=[str(self.id)])

    def get_document_url(self):
        return reverse('purchaseorder_detail', args=[str(self.id)])

    def get_price(self):
        return "%s %s" % (self.cart.total_price(),
                          self.contract.default_currency)

    def __str__(self):
        return _("Purchase Order") + " #" + str(self.id)

    @transaction.atomic()
    @reversion.create_revision()
    def save(self, *args, **kwargs):
        self.cart.last_updated = datetime.now()
        self.cart.save()
        super(PurchaseOrder, self).save(*args, **kwargs)
        self.contract.state = 70
        self.contract.save()
        self.create_pdf()

class Quote(SalesContract, Displayable):
    contract = models.ForeignKey(Contract,
                                 verbose_name=_('Contract'),
                                 related_name='quotes')
    validuntil = models.DateField(verbose_name=_("Valid until"), null=True)
    staff = models.ForeignKey(settings.AUTH_USER_MODEL,
                              limit_choices_to={'is_staff': True}, blank=True,
                              verbose_name=_("Staff"), null=True,
                              related_name="quote_staff")
    cart = models.ForeignKey(cartridge_models.Cart, null=True)
    search_fields = ('title', 'description', )

    class Meta:
        verbose_name = _('Quote')
        verbose_name_plural = _('Quotes')
        permissions = (
            ('view_quote', 'Can view quotes'),
        )
        get_latest_by = "lastmodification"

    def __init__(self, *args, **kwargs):
        super(Quote, self).__init__(*args, **kwargs)
        if not self.cart:
            cart = cartridge_models.Cart()
            cart.save()
            self.cart = cart
            self.save()

    def create_invoice(self):
        invoice = Invoice()
        invoice.contract = self.contract
        invoice.description = self.description
        invoice.discount = self.discount
        invoice.customer = self.customer
        invoice.staff = self.staff
        invoice.status = 10
        invoice.derived_from_quote = self
        invoice.payableuntil = date.today() + timedelta(
            days=self.customer.billingcycle.days_to_payment)
        invoice.customerBillingCycle = self.customer.billingcycle
        invoice.save()
        self.save()
        return

    def create_purchase_order(self):
        purchase_order = self.contract.create_purchase_order()
        self.save()
        return purchase_order

    def to_html(self):
        crtitems = []
        for itm in self.cart.items.all():
            crtitems.append(CustomerCartItem.objects.get(
                cartitem_ptr_id=itm.id))
        company_data = CompanyContactData.objects.get(pk=1)
        customer = self.customer
        return render_to_string('pdf_templates/quote.html',
                                {
                                    'quote': self,
                                    'positions': crtitems,
                                    'company_data': company_data,
                                    'customer': customer
                                })

    def create_pdf(self):
        html = self.to_html()
        pth = path.normpath('%s/%s/data/pdf/quotes/quote-%s.pdf' % (
            settings.PROJECT_ROOT, settings.MEDIA_URL, self.pk))
        self.pdf_path = pth
        HTML(string=html, encoding="utf8").write_pdf(target=pth)

    def get_absolute_url(self):
        return reverse('quote_edit', args=[str(self.id)])

    def get_document_url(self):
        return reverse('quote_detail', args=[str(self.id)])

    def get_price(self):
        return "%s %s" % (self.cart.total_price(),
                          self.contract.default_currency)

    def __str__(self):
        return _('Quote') + ' #' + str(self.id)

    @transaction.atomic()
    @reversion.create_revision()
    def save(self, *args, **kwargs):
        self.cart.last_updated = datetime.now()
        self.cart.save()
        super(Quote, self).save(*args, **kwargs)
        self.contract.state = 50
        self.contract.save()
        self.create_pdf()

class Invoice(SalesContract, Displayable):
    contract = models.ForeignKey(Contract,
                                 verbose_name=_('Contract'),
                                 related_name='invoices')
    payableuntil = models.DateField(verbose_name=_("To pay until"))
    payment_bank_reference = models.CharField(
        verbose_name=_("Payment Bank Reference"),
        max_length=100, blank=True, null=True)
    staff = models.ForeignKey(settings.AUTH_USER_MODEL,
                              limit_choices_to={'is_staff': True}, blank=True,
                              verbose_name=_("Staff"),
                              related_name="db_relscstaff", null=True)
    cart = models.ForeignKey(cartridge_models.Cart, null=True)
    search_fields = ('title', 'description', )

    class Meta:
        verbose_name = _('Invoice')
        verbose_name_plural = _('Invoices')
        permissions = (
            ('view_invoice', 'Can view invoices'),
        )
        get_latest_by = 'lastmodification'

    def __init__(self, *args, **kwargs):
        super(Invoice, self).__init__(*args, **kwargs)
        if not self.cart:
            cart = cartridge_models.Cart()
            cart.save()
            self.cart = cart
            self.save()

    def to_html(self):
        crtitems = []
        for itm in self.cart.items.all():
            crtitems.append(CustomerCartItem.objects.get(
                cartitem_ptr_id=itm.id))
        company_data = CompanyContactData.objects.get(pk=1)
        customer = self.customer
        return render_to_string('pdf_templates/invoice.html',
                                {
                                    'invoice': self,
                                    'positions': crtitems,
                                    'company_data': company_data,
                                    'customer': customer
                                })

    def create_pdf(self):
        html = self.to_html()
        pth = path.normpath('%s/%s/data/pdf/invoices/invoice-%s.pdf' % (
            settings.PROJECT_ROOT, settings.MEDIA_URL, self.pk))
        self.pdf_path = pth
        HTML(string=html, encoding="utf8").write_pdf(target=pth)

    def get_absolute_url(self):
        return reverse('invoice_edit', args=[str(self.id)])

    def get_document_url(self):
        return reverse('invoice_detail', args=[str(self.id)])

    def get_price(self):
        return "%s %s" % (self.cart.total_price(),
                          self.contract.default_currency)

    def __str__(self):
        return _("Invoice") + " #" + str(self.id)

    @transaction.atomic()
    @reversion.create_revision()
    def save(self, *args, **kwargs):
        self.cart.last_updated = datetime.now()
        self.cart.save()
        super(Invoice, self).save(*args, **kwargs)
        self.contract.state = 30
        self.contract.save()
        self.create_pdf()

class Unit(models.Model):
    description = models.CharField(verbose_name=_("Description"),
                                   max_length=100)
    shortname = models.CharField(
        verbose_name=_("Displayed Name After Quantity In The Position"),
        max_length=3)
    fractionof = models.ForeignKey('self', blank=True, null=True,
                                   verbose_name=_("Is A Fraction Of"))
    factor = models.IntegerField(
        verbose_name=_("Factor Between This And Next Higher Unit"),
        blank=True, null=True)

    class Meta:
        verbose_name = _('Unit')
        verbose_name_plural = _('Units')
        permissions = (
            ('view_unit', 'Can view units'),
        )

    def __str__(self):
        return self.shortname

class TaxRate(models.Model):
    taxrate_in_percent = models.DecimalField(
        max_digits=5, decimal_places=2,
        verbose_name=_("Taxrate in Percentage"))
    name = models.CharField(verbose_name=_("Taxname"), max_length=100)

    class Meta:
        verbose_name = _('Tax')
        verbose_name_plural = _('Taxes')
        permissions = (
            ('view_tax', 'Can view tax rates'),
        )

    def __str__(self):
        return self.name

class UnitTransform(models.Model):
    from_unit = models.ForeignKey(Unit, verbose_name=_("From Unit"),
                                  related_name="db_reltransformfromunit")
    to_unit = models.ForeignKey(Unit, verbose_name=_("To Unit"),
                                related_name="db_reltransformtounit")
    product = models.ForeignKey(cartridge_models.Product,
                                verbose_name=_("Product"))
    factor = models.IntegerField(
        verbose_name=_("Factor between From and To Unit"),
        blank=True, null=True)

    def transform(self, unit):
        if self.from_unit == unit:
            return self.to_unit
        else:
            return unit

    class Meta:
        verbose_name = _('Unit Transform')
        verbose_name_plural = _('Unit Transforms')

    def __str__(self):
        return "From " + self.from_unit.shortname + " to " + self.to_unit.shortname

class HTMLFile(models.Model):
    title = models.CharField(verbose_name=_("Title"), max_length=60)
    file = FileBrowseField(verbose_name=_("HTML File"), max_length=200)

    class Meta:
        verbose_name = _('HTML File')
        verbose_name_plural = _('HTML Files')

    def __str__(self):
        return self.title

class TemplateSet(models.Model):
    title = models.CharField(verbose_name=_("Title"), max_length=60)
    invoice_html_file = models.ForeignKey(
        HTMLFile,
        verbose_name=_("HTML File for Invoice"),
        related_name="invoice_template")
    quote_html_file = models.ForeignKey(
        HTMLFile,
        verbose_name=_("HTML File for Quote"),
        related_name="quote_template")
    purchaseorder_html_file = models.ForeignKey(
        HTMLFile,
        verbose_name=_("HTML File for Purchaseorder"),
        related_name="purchaseorder_template")

    class Meta:
        verbose_name = _('Templateset')
        verbose_name_plural = _('Templatesets')

    def __str__(self):
        return self.title

class CompanyContactData(SingletonModel):
    name = models.CharField(max_length=300, verbose_name=_("Name"))
    slogan = models.CharField(verbose_name=_("Slogan"), max_length=120,
                              blank=True, null=True)
    logo = models.ImageField(verbose_name=_("Logo"), blank=True,
                             null=True, max_length=200)
    addresser = models.CharField(max_length=200, verbose_name=_("Addresser"),
                                 blank=True, null=True)
    addressline1 = models.CharField(max_length=200,
                                    verbose_name=_("Addressline 1"),
                                    blank=True, null=True)
    addressline2 = models.CharField(max_length=200,
                                    verbose_name=_("Addressline 2"),
                                    blank=True, null=True)
    zipcode = models.IntegerField(verbose_name=_("Zipcode"),
                                  blank=True, null=True)
    city = models.CharField(max_length=100, verbose_name=_("City"),
                            blank=True, null=True)
    state = models.CharField(max_length=100, verbose_name=_("State"),
                             blank=True, null=True)
    country = models.CharField(max_length=2, choices=countries,
                               verbose_name=_("Country"),
                               blank=True, null=True)
    phone = models.CharField(max_length=20, verbose_name=_("Phone Number"),
                             blank=True, null=True)
    email = models.EmailField(max_length=200, verbose_name=_("Email Address"),
                              blank=True, null=True)
    header_text_salesorders = models.TextField(
        verbose_name=_("Header Text On Salesorders"), blank=True, null=True)
    header_text_purchaseorders = models.TextField(
        verbose_name=_("Header Text On Purchaseorders"), blank=True, null=True)
    page_footer_left = models.CharField(
        max_length=40, verbose_name=_("Page Footer Left"),
        blank=True, null=True)
    footer_text_salesorders = models.TextField(
        verbose_name=_("Footer Text On Salesorders"), blank=True, null=True)
    footer_text_purchaseorders = models.TextField(
        verbose_name=_("Footer Text On Purchaseorders"), blank=True, null=True)

    class Meta:
        verbose_name = _('Company settings')
        verbose_name_plural = _('Company settings')

    def __str__(self):
        return self.name

class UserExtension(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL,
                                related_name='extension',
                                verbose_name=_('Benutzer'))
    image = models.ImageField(
        upload_to='avatars/', default='avatars/avatar.jpg',
        verbose_name=_('Bild'), null=True, blank=True)
    default_templateset = models.ForeignKey(TemplateSet,
                                            verbose_name=_('Vorlagen'),
                                            null=True, blank=True)
    default_currency = models.CharField(verbose_name=_('Currency'),
                                        max_length=3, choices=currencies,
                                        null=True, blank=True)

    class Meta:
        verbose_name = _('User Extension')
        verbose_name_plural = _('User Extensions')

    def __str__(self):
        return self.user.__str__()

class ProductUnit(models.Model):
    product = models.OneToOneField(cartridge_models.Product,
                                   verbose_name=_('Product'),
                                   related_name='item_unit')
    unit = models.ForeignKey(Unit, verbose_name=_('Unit'))

    class Meta:
        verbose_name = _('Product Unit')
        verbose_name_plural = _('Product Units')

    def __str__(self):
        return "%s [%s]" % (self.product, self.unit)

class ProductTax(models.Model):
    product = models.OneToOneField(cartridge_models.Product,
                                   verbose_name=_('Product'),
                                   related_name='item_tax')
    tax = models.ForeignKey(TaxRate, verbose_name=_('Tax Rate'))

    class Meta:
        verbose_name = _('Product Taxrate')
        verbose_name_plural = _('Product Taxrates')

    def __str__(self):
        return "%s [%s]" % (self.product, self.tax)


text:
LINDSAY CANNON,
FARMERS INSURANCE COMPANY, INC.,
1. The interpretation of an insurance policy exclusion, as well as the interpretation of Kansas statutory law relating to the permissible exclusions of mandatory uninsured motorist coverage, are questions of law for which this court's review is unlimited.
2. The express purpose of uninsured motorist coverage is to fill the gap inherent in motor vehicle financial responsibility and compulsory insurance legislation mandated in the state. The uninsured motorist statutes are remedial in nature and should be liberally construed to provide broad protection to the insured against all damages resulting from bodily injuries sustained by the insured that are caused by an automobile accident and arise out of the ownership, maintenance, or use of the insured motor vehicle, where those damages are caused by the acts of an uninsured or underinsured motorist.
3. Any attempts not authorized by statute to condition, limit, or dilute the broad, unqualified mandated uninsured motorist coverage are void and unenforceable. Where insurance policy exclusions with regard to uninsured motorist coverage are overbroad and thus unenforceable, the statutory exclusions provided for by K.S.A. 40-284(e) are applied in place of the unenforceable provisions.
4. An insurance policy is ambiguous if there is genuine uncertainty as to which of two or more possible meanings is proper. To be ambiguous, a contract must contain provisions or language of doubtful or conflicting meaning, as gleaned from a natural and reasonable interpretation of its language.
5. K.S.A. 40-284(e)(3) authorizes exclusion of uninsured motorist coverage where there is no reliable competent evidence to prove the facts of the accident from a disinterested witness.
6. The concept of disinterestedness is commonly associated with a person's ability to be impartial. As applied to witnesses, a disinterested witness is one who has no right, claim, title, or legal stake in the claim or matter at issue. Thus, a disinterested witness does not stand to gain a benefit or suffer a detriment as a result of the outcome of the case and, therefore, has no motivation based on personal or pecuniary interest.
7. The operative phrase in K.S.A. 40-284(e)(3), "a disinterested witness not making claim under the policy," is most reasonably read as referring to a person who has no claim at the time that the witness offers testimony to corroborate the facts of the accident, rather than at the time of the accident.
Appeal from Johnson district court, JOHN P. BENNETT, judge. Opinion filed July 12, 2002. Affirmed.
Jeffrey S. Southard, of Law Offices of Kenneth J. Berra, of Kansas City, Missouri, argued the cause and was on the brief for appellant.
David R. Smith, of Sanders, Simpson, Fletcher & Smith, L.C., of Kansas City, Missouri, argued the cause and was on the brief for appellee.
DAVIS, J. Lindsay Cannon and her passenger Adam Hipp were injured in a one-car accident allegedly caused by the negligent driver of a phantom vehicle. Farmers Insurance Company, Inc. (Farmers) settled with Hipp on his liability claim against Cannon. However, Farmers denied Cannon's uninsured motorist claim based on a policy exclusion preventing Hipp, as one having a claim from the same accident, from verifying the facts of the accident. The trial court held that Hipp's liability claim did not disqualify him as a witness under statutory mandated uninsured motorist coverage. K.S.A. 40-284 et seq. We affirm.
Cannon sustained severe injuries early one December morning on her way to school when a dark sports utility vehicle stopped immediately in front of her vehicle, causing her to swerve, slip on ice, veer off the road, and crash into a utility pole. She and Hipp, who was also injured in the accident, were the sole occupants of Cannon's vehicle. There was no contact with the phantom vehicle. Hipp verified that the phantom vehicle caused the accident.
On behalf of Cannon, Farmers settled Hipp's claim for injuries against Cannon. Farmers refused to cover Cannon's uninsured motorist claim based upon a policy exclusion requiring verification of the facts of the accident from one not making a claim from the same accident. Cannon prevailed in the trial court, and Farmers appeals from summary judgment granted Cannon on her uninsured motorist claim.
The phantom vehicle is an uninsured vehicle under Farmers' policy which defines an uninsured motor vehicle in part as "[a] hit-and-run vehicle whose operator or owner has not been identified and which causes bodily injury with or without physical contact."
Farmers argued before the trial court that Hipp was not a witness who qualified to verify the facts of the accident under the policy exclusion because he had made a claim from the same accident against Cannon for his injuries. Farmers makes a similar argument on appeal under its policy and under K.S.A. 40-284(e)(3). Cannon claims that the trial court was correct that Hipp is qualified because his claim was not an uninsured motorist claim, but rather a liability claim against Cannon. Farmers and Cannon agreed that if coverage was found to exist, Cannon would be entitled to uninsured motorist policy limits in the amount of $100,000. We have jurisdiction by reason of our transfer of this case under K.S.A. 20-3018(c).
The questions raised by this appeal involve the interpretation of the contractual exclusion provisions of Farmers' policy, as well as the interpretation of Kansas statutory law relating to the permissible exclusions of mandatory uninsured motorist coverage, specifically K.S.A. 40-284(e)(3). Both are questions of law for which this court's review is unlimited. Hartford Cas. Ins. Co. v. Credit Union 1 of Kansas, 268 Kan. 121, 124, 992 P.2d 800 (1999); First Financial Ins. Co. v. Bugg, 265 Kan. 690, 694, 962 P.2d 515 (1998).
Uninsured Motorist Coverage
Uninsured motorist coverage became mandatory when K.S.A. 40-284 was adopted in 1968. L. 1968, ch. 273, § 1. Following a 1981 amendment, if the other motorist had liability insurance but the limits of liability were less than the insured's damages and less than the insured's uninsured motorist converge, the insured could recover the excess damages from his or her own insurer up to policy limits. L. 1981, ch. 191, § 1; Jerry, New Developments in Kansas Insurance Law, 37 Kan. L. Rev. 841, 878 (1989); Jerry, Recent Developments in Kansas Insurance Law: A Survey, Some Analysis, and Some Suggestions, 32 Kan. L. Rev. 287, 343-44 (1984).
The purpose of uninsured motorist coverage is to fill the gap inherent in motor vehicle financial responsibility and compulsory insurance legislation mandated by the State of Kansas. Degollado v. Gallegos, 260 Kan. 169, 172-73, 917 P.2d 823 (1996). Thus, the statutory mandate is remedial in nature and is to be liberally construed to provide broad coverage:
"The uninsured and underinsured motorist statutes are remedial in nature. They should be liberally construed to provide a broad protection to the insured against all damages resulting from bodily injuries sustained by the insured that are caused by an automobile accident and arise out of the ownership, maintenance, or use of the insured motor vehicle, where those damages are caused by the acts of an uninsured or underinsured motorist." Rich v. Farm Bur. Mut. Ins. Co., 250 Kan. 209, 215, 824 P.2d 955 (1992).
See Clements v. United States Fidelity & Guaranty Co., 243 Kan. 124, 127, 753 P.2d 1274 (1988).
Any attempts not authorized by statute to condition, limit, or dilute the broad, unqualified mandated uninsured motorist coverage are void and unenforceable. Allied Mut. Ins. Co. v. Gordon, 248 Kan. 715, 730, 811 P.2d 1112 (1991). Where an uninsured motorist coverage insurance policy is overbroad and thus unenforceable, the statutory exclusions provided for by K.S.A. 40-284(e) are applied in place of the unenforceable provisions. Ball v. Midwestern Ins. Co., 250 Kan. 738, 741, 829 P.2d 897 (1992).
Simpson v. Farmers Ins. Co., 225 Kan. 508, 592 P.2d 445 (1979), provides an early example of a policy provision excluding uninsured motorist coverage contrary to law. The policy in Simpson excluded coverage when there was no physical contact between the insured and the uninsured phantom vehicle. This court held that the "physical contact" requirement in the "hit and run" provisions of the automobile liability policy was in derogation of the uninsured motorist statute and was, therefore, void as against public policy. 225 Kan at 515. In 1981, the legislature, primarily in response to Simpson, amended the law to permit, among other exclusions, the one we consider in this case regarding the phantom hit-and-run vehicle. See Scott, Uninsured/Underinsured Motorist Insurance: A Sleeping Giant, 63 J. K. B. A. 28, 31 (May 1994). The provision relating to the phantom vehicle is designed to protect against fraudulent claims in one-car accidents when there is no independent proof of the existence of the phantom driver. See Jerry, 32 Kan. L. Rev. at 343-44.
The 1981 amendment is set forth in K.S.A. 40-284(e)(3) and provides that uninsured motorist coverage may exclude coverage under the following circumstance:
"(3) when there is no evidence of physical contact with the uninsured motor vehicle and when there is no reliable competent evidence to prove the facts of the accident from a disinterested witness not making claim under the policy."
Farmers' policy is somewhat similar to the statutory exclusion in providing coverage under the following circumstances:
"If there is no physical contact, the facts of the accident must be verified by someone other than you or another person having a claim from the same accident."
Farmers denied coverage based upon the above exclusion. While the above statutory exclusion and Farmers' policy exclusion are similar in nature, Farmers' exclusion appears to exclude more than the statute allows. The trial court in its summary judgment reached this conclusion and replaced Farmers' exclusion with the language of the statutory exclusion.
Farmers Policy Exclusion
Farmers' exclusion is set forth in that part of the policy dealing exclusively with uninsured motorist coverage as follows:
"PART II-UNINSURED MOTORIST
Coverage C-Uninsured Motorist Coverage
(Including Underinsured Motorists Protection)
3. Uninsured motor vehicle means a motor vehicle which is:
b. A hit-and-run vehicle whose operator or owner has not been identified and which causes bodily injury with or without physical contact to:
(1) You or any family member.
If there is no physical contact, the facts of the accident must be verified by someone other than you or another person having a claim from the same accident."
Trial Court Decision
Based upon the undisputed facts, the trial court concluded that Farmers' exclusion was overbroad and applied the statutory exclusion in analyzing the question of coverage. Based on the statute, the trial court determined that Hipp was a witness who could provide corroborating evidence concerning the facts of the accident. It found that (1) Hipp settled his claim against the bodily injury provisions of the policy and that this claim was against Cannon, the driver of the vehicle; and (2) the statutory exclusion providing for a claim under the policy applies only where the witness actually makes a claim under the uninsured motorist coverage of the policy. The court concluded that its interpretation was consistent with the purpose of the exclusion to protect against fraud and that it gave broader effect to uninsured motorist coverage required by law.
Farmers argues in this appeal that the trial court did not find the policy or the statute ambiguous. However, our standard of review is unlimited. "Regardless of the construction given a written contract by the trial court, an appellate court may construe a written contract and determine its legal effect." City of Topeka v. Watertower Place Dev. Group, 265 Kan. 148, 152-53, 959 P.2d 894 (1998). We, therefore, examine Farmers' policy provision to determine whether there is ambiguity and whether Farmers' exclusion is overbroad compared to the authorized statutory exclusion set forth in K.S.A. 40-284(e)(3).
Policy Ambiguity
Cannon claims that the policy language incorporating the exclusion is ambiguous in several respects. An insurance policy is ambiguous if there is genuine uncertainty as to which of two or more possible meanings is proper. Steinle v. Knowles, 265 Kan. 545, 549, 961 P.2d 1228 (1998); Spivey v. Safeco In. Co., 254 Kan. 237, 240, 865 P.2d 182 (1993). "To be ambiguous, 'a contract must contain provisions or language of doubtful or conflicting meaning, as gleaned from a natural and reasonable interpretation of its language.'" Steinle, 265 Kan. at 551. "'Where terms are ambiguous, the policy shall be construed to mean what a reasonable person in the position of the insured would have understood them to mean.'" 265 Kan. at 549. "The test to determine whether an insurance contract is ambiguous is not what the insurer intends the language to mean, but what a reasonably prudent insured would understand the language to mean." Union State Bank v. St. Paul Fire and Marine Ins. Co., 18 Kan. App. 2d 466, 470-71, 856 P.2d 174 (1993).
The insured argues that the exclusionary language in the policy is ambiguous because the word "having" makes no distinction between being able to make a claim, actually being in the process of making a claim, or previously having made a claim. Cannon suggests the most reasonable interpretation of the policy exclusion would require her to present a witness other than one who has a pending uninsured motorist claim. Because Hipp's liability claim was settled before Cannon filed her uninsured motorist action against Farmers, Cannon contends, he did not have a pending claim. In this sense, while Hipp "had a claim," he is not someone "having a claim." Cannon argues that the suffix "-ing" forms the present participle of the verb "have." Webster's Third New International Dictionary 1039 (1993). Hence, according to Cannon's argument, the present tense of the verb-form "have" was chosen by Farmers and necessarily excludes Hipp because he no longer had a pending claim.
Farmers takes the position that the policy language excludes a witness who ever had a claim arising out of the same accident. Farmers interprets its own policy as saying "having or ever had a claim." Thus, the fact that Hipp's claim was settled prior to Cannon's action does not make Hipp qualified to corroborate the facts of the accident.
Cannon further argues the word "claim" is ambiguous as that word is used in the policy. She argues that "claim" must mean an uninsured motorist claim. As noted above, the exclusion appears in Part II of the policy, which deals exclusively with uninsured motorist coverage. Farmers interprets the word "claim" to mean any claim arising from this same accident. Thus, Farmers asserts that Hipp's liability claim against Cannon is included in the definition of "claim."
We agree that ambiguity exists both in the use of the words "having a claim" and in the use of the word "claim." "Having" is susceptible to the following interpretations: (1) A person with a pending claim is someone "having a claim"; (2) a person who is capable of making a claim, even if he or she chooses not to, may be someone "having a claim"; and (3) a person who at one time made a claim, but resolved the claim, may still be someone "having a claim." Moreover, by its use of the word "claim," the policy language is susceptible to varying interpretations. It could refer to uninsured claims only based upon its location in Part II of the policy. Further, the statutory language exclusively concerns uninsured motorist coverage, which strengthens Cannon's interpretation that "claim" refers only to uninsured motorist claims. However, as we discuss below, the policy excludes more than is permitted by statute.
If we limit our consideration to the policy exclusion, the exclusionary language used by Farmers is ambiguous. Under such circumstances, we interpret the policy exclusion against Farmers and in favor of the insured, Cannon. See Shelter Mut. Ins. Co. v. Williams, 248 Kan. 17, 23, 804 P.2d 1374 (1991). Since Hipp's claim was not an uninsured motorist claim under the policy but, rather, a claim against Cannon, he would be qualified as a witness to verify the facts regarding the phantom vehicle. In addition, the phrase "having a claim" would refer to someone presently having a claim, which would exclude Hipp because, although he had a claim, Hipp's claim against Cannon had been settled by Farmers. Thus, under the interpretations most favorable to the insured, summary judgment for Cannon was correctly entered by the district court.
Comparison of Policy and Statutory Exclusions
Cannon argues that the policy exclusion is broader than is permitted by the statutory exclusion and is, therefore, void. Citing familiar law, Cannon points out that when a contractual exclusion is broader in scope than its authorizing statute, the policy provisions are void and unenforceable. Degollado v. Gallegos, 260 Kan. at 171. Uninsured motorist coverage is mandated under Kansas law and any attempt to condition, limit, or dilute uninsured motorist coverage beyond the exclusions and limitations expressly allowed by statute are contrary to public policy and void. Ball v. Midwestern Ins. Co., 250 Kan. at 740-41. The question remains whether Farmers' policy provisions are broader than those provided by K.S.A. 40-284(e)(3) and, if so, what is their effect in this case.
K.S.A. 40-284(e)(3) allows exclusion of uninsured motorist coverage when: (a) there is no evidence of physical contact with the uninsured motor vehicle and (b) there is no reliable competent evidence to prove the facts of the accident from a disinterested witness not making claim under the policy. Farmers' policy exclusion reaches beyond the statute by preventing any person having a claim from the same accident from verifying the facts of the accident.
The district court based its decision upon K.S.A. 40-284(e)(3), thereby implicitly concluding that Farmers' policy exclusion was broader than allowed by the statute:
"The facts admitted show that Mr. Hipp settled a claim against the bodily injury provisions of the policy, that is, a claim against the driver of the vehicle. The issue here is whether such a claim is 'under the policy' as that term appears in K.S.A. 40-284(e)(3). K.S.A. 40-284 is a statute dealing with uninsured motorist coverage and subparagraph (e) contains authorized exclusions from such required coverage.
"The court reads the provisions of K.S.A. 40-284(e)(3) to allow exclusion only where the witness actually makes a claim under the uninsured motorist coverage of the policy. The court finds that this interpretation is more consistent with the purpose of the exclusion to protect against fraud. This interpretation further gives broader effect to uninsured motorist coverage required by law. Therefore, defendant's motion for summary judgment should be denied."
Farmers' policy requires verification by someone other than the insured or another person having a claim from the same accident. The statute authorizes exclusion "when there is no reliable competent evidence to prove the facts of the accident from a disinterested witness not making a claim under the policy." K.S.A. 40-284(c)(3). Notwithstanding the ambiguity of the phrase in the policy "having a claim from the same accident," it is apparent that this language is broader than "making claim under the policy." For example, Hipp may be automatically excluded under policy provisions from offering evidence of the accident based upon his claim against Cannon. His claim was against Cannon for injuries he sustained based upon her alleged negligence. This claim was a third-party claim not under or against the policy but rather against Cannon. Farmers paid Hipp its policy limits under the liability portion of the policy by way of indemnifying Cannon. However, Hipp would not necessarily be excluded as a witness under the statute because he was not, at the time Cannon filed suit, making a claim against Farmers; rather, his claim was against Cannon.
In comparing the policy language to the statutory language, we question the meaning of the statutory phrase "under the policy." The policy language excludes persons having a claim from the same accident. The meaning of "under the policy" in the statute is important if that language is to be applied in place of the policy language. The trial court concluded "under the policy" refers to an uninsured motorist claim. We agree with the trial court.
Hipp's claim is commonly referred to as a third-party claim, that is, a claim against another person as opposed to a first-party claim, which is a claim directly against the insurance company. In this case, Hipp's claim is one sounding in tort against Cannon based on her own negligence in the operation of her vehicle. Hipp seeks to obtain judgment against Cannon for his injuries. She purchased a policy of insurance which indemnifies her in the event such a judgment is obtained against her by Hipp. In that event, Farmers pays the claim. In the present case, Farmers settled with Hipp, paying him the policy limits of $100,000. On the other hand, Cannon's claim is a first-party claim, that is, one directly against Farmers. In her action, Farmers becomes the defendant. Cannon's action is one sounding in contract seeking to enforce the contractual provisions in the policy between herself and Farmers.
The difference in the separate actions discussed above serve to enlighten us on the meaning of the statutory phrase "under the policy." Hipp's action is against Cannon. Cannon's action is against Farmers, based upon the policy. As such, Cannon's action is one "under the policy" while Hipp's action only relies on the policy for indemnification of Cannon's liability to him. Moreover, the exclusion we deal with appears in K.S.A. 40-284, which exclusively concerns uninsured motorist coverage. The same holds true in Farmers' policy. Part II as quoted above deals exclusively with uninsured motorist coverage. Thus, based upon the meaning of the phrase "under the policy" and the location of that phrase in the statute, and based on the location of the word "claim" in Part II of the policy, it is clear that the statute, as well as the policy, refers to first-party uninsured motorist claims and not third-party claims. Hipp is, therefore, not precluded from serving as a witness for Cannon under the exclusion because he made a third-party claim.
K.S.A. 40-284(e)(3) authorizes exclusion of uninsured motorist coverage where there is no reliable competent evidence to prove the facts of the accident from a disinterested witness. The statute does not define "disinterested," and there are no Kansas cases defining the term as it is used in the statute. This case presents a question of first impression for this court.
The purpose of the statutory exclusion where there is no physical contact between the insured's vehicle and the phantom vehicle is the prevention of fraudulent claims. Clements v. United States Fidelity & Guaranty Co., 243 Kan. 124, 127, 753 P.2d 1274 (1988). In a one-vehicle accident with no witnesses, an insurance carrier has no way to refute the insured's statement that he or she swerved to avoid an on-coming vehicle. Thus, in 1981 the Kansas Legislature amended the mandatory uninsured motorist coverage provision and authorized insurance carriers to require, from the insured, a disinterested witness.
As we have stated, the mandated coverage is intended to provide recompense to innocent persons injured through the wrongful conduct of motorists who, because they are uninsured and not financially responsible, cannot compensate innocent persons for the damages. We recognize the remedial nature of this coverage and liberally construe the legislation to provide the intended protection. Ball v. Midwestern Ins. Co., 250 Kan. at 738- 41. We also recognize that fraud prevention is a legitimate and important consideration. Clements, 243 Kan. at 127. Other states have attempted to limit or exclude recovery in cases involving phantom vehicles. While authority from other jurisdictions provides some help, the cases in different states vary widely based on individual states' statutory language.
The issue is whether Hipp is a disinterested witness who may corroborate Cannon's version of the facts of this accident. As indicated above, the trial court found Hipp could provide evidence of the facts of the accident based upon its determination that Hipp was not making an uninsured motorist claim under the policy and was, therefore, qualified. There was no discussion of the meaning of the term "disinterested" in the trial court's decision. We are advised in the interpretation of a statute to give words their accepted and usual meaning in the absence of an expressed contrary legislative intention. See Kilner v. State Farm Mut. Auto. Ins. Co., 252 Kan. 675, 686, 847 P.2d 1292 (1993) (holding subsections of K.S.A. 40-284[e] should be interpreted consistently and harmoniously).
"Disinterested" is defined as "not influenced by regard to personal advantage," "free from selfish motive," and "not biased or prejudiced." Webster's Third New International Dictionary 650 (3d ed. 1993). Black's Law Dictionary defines "disinterested" as "[f]ree from bias, prejudice, or partiality; not having a pecuniary interest." Black's Law Dictionary 481 (7th ed. 1999). Black's defines the phrase "disinterested witness" as "[a] witness who is legally competent to testify and has no private interest in the matter at issue." Black's Law Dictionary 1596. The Iowa Supreme Court, in a different context, defined "disinterested witness" as "[o]ne who has no right, claim, title, or legal share in the cause or matter in issue." Post-Newsweek Cable v. Bd. of Review, 497 N.W.2d 810, 813 (Iowa 1993).
Other jurisdictions interpreting their own statutes regarding the exclusion we now consider have defined "disinterestedness" within the context of specific facts. See generally, Annot., Uninsured Motorist Indorsement: Construction and Application of Requirement That There be "Physical Contact" with Unidentified or Hit-and-Run Vehicle; "Miss-and-Run Cases," 77 A.L.R.5th 319, § 5[c] and § 6 [d]; Annot., Uninsured Motorist Indorsement: General Issues Regarding Requirement That There Be "Physical Contact" with Unidentified or Hit-and-Run Vehicle, 78 A.L.R.5th 341.
Consistent with the avowed purpose of preventing fraud, the definitions of disinterested, and case law, we perceive two distinct aspects involved in the determination of whether a witness is disinterested. The first pertains to the relationship of the parties and the second pertains to the lack of a pecuniary interest in the outcome of the case. As noted by most cases on this subject, the determination is fact intensive and in most instances will be made on a case-by-case basis. However, there are those cases where the answer is self evident, as it would be, for example, if Hipp were making, along with Cannon, an uninsured motorist claim against Farmers. However, since his claim is a liability claim against Cannon, the answer becomes more difficult and depends upon the relationship between Hipp and Cannon and upon Hipp's pecuniary interest in the outcome of Cannon's claim against Farmers.
The record in this case contains no evidence regarding the relationship between Hipp and Cannon. Farmers settled Hipp's liability claim against Cannon without any evidence of their relationship. We know that Hipp was a passenger and Cannon was driving early one December morning to school. Beyond this, we have no additional information about their relationship. Based upon the record, we conclude that the relationship is one of driver-passenger, a relationship that would not prevent Hipp from being disinterested and from providing evidence as to the facts of the accident.
We also note that Hipp's initial response was that the dark sports utility vehicle stopped abruptly in front of Cannon's vehicle, causing her to lose control of her vehicle. Hipp's initial response and his stance throughout Cannon's action did not change. While not determinative, his initial response as well as his consistency throughout militates against a finding of fraud.
The second inquiry involves Hipp's pecuniary interest in the outcome of the case. Certainly, Hipp had a pecuniary interest in the outcome of his own claim, but his interest was not necessarily aligned with Cannon's. Hipp's third-party claim is against Cannon, with indemnification of Cannon by Farmers. In a comparative fault jurisdiction such as Kansas, see K.S.A. 60-258a, Hipp and Cannon have divergent interests based upon the claims asserted. Hipp's interest would be to establish that Cannon was solely responsible for the accident. To the extent Farmers' representation of Cannon could establish that the phantom vehicle was the cause of the accident, Hipp's recovery against Cannon would be diminished by the percentage of fault attributed to the driver of the phantom vehicle. Cannon's interest in her uninsured motorist claim against Farmers would be enhanced by the percentage of fault she was able to posit against the phantom vehicle, the uninsured vehicle defined as such under Farmers' policy. We conclude that Hipp's pecuniary interest is opposite of Cannon's. Thus, Hipp's interest would not prevent him from providing facts of the accident under K.S.A. 40-284(e)(3).
Finally, most jurisdictions dealing with this question conclude that the time for making a determination regarding a witness' qualifications under statutory exclusions, including his or her disinterested status, is at the time such witness' testimony is given. The Supreme Court of Oregon is representative of this conclusion:
"In the absence of an express temporal qualification in the text of ORS 742.504(2)(g)(B) itself, we believe that the corroboration requirement set out in that subparagraph should be read consistently with the companion requirements set out in subparagraphs (A) and (C). Accordingly, we conclude that, based on text and context, the operative phrase in ORS 742.504(2)(g)(B)--'any person having an uninsured motorist claim resulting from the accident'--is most reasonably read as referring to a person who has such a claim at the time that the determination of uninsured motorist coverage is being made--i.e., the time when the person's testimony is offered to corroborate the facts of the 'phantom vehicle' accident--rather than to a person who has such a claim at the time of the accident." To v. State Farm Mutual Ins., 319 Or. 93, 101, 873 P.2d 1072 (1994).
Farmers settled with Hipp on his claim against Cannon. At the time of Cannon's action against Farmers, and under the provisions of K.S.A. 40-284(e)(3), Hipp is "not making a claim under the policy," for his claim had been settled by Farmers. Hipp, at that time, had absolutely no pecuniary interest in the outcome of the case. We conclude that the trial court properly entered summary judgment in favor of Cannon.
DAVID S. KNUDSON, J., assigned.1
1REPORTER'S NOTE: 1Judge Knudson, of the Kansas Court of Appeals, was appointed to hear case No. 87080 vice Justice Abbott pursuant to the authority vested in the Supreme Court by K.S.A. 20-3002(c).
Updated: July 12, 2002.
URL: http://www.kscourts.org/kscases/supct/2002/20020712/87080.htm.

redpajama_set_name: RedPajamaCommonCrawl


According to the Communications Decency Act of 1996, a provider of an interactive computer service cannot be held liable for publishing a defamatory statement made by another party. In addition, the service provider cannot be held liable for refusing to remove the statement from its service. This article postulates that such immunity from producer and distributor liability is a suspect public policy, and argues that the statute should be amended to include a broad definition of "development" and a "take-down and put-back" provision.


Since this was a bit tricky, I think it will be useful to write it somewhere.
So Kdenlive can generate proxy clips, that are smaller and lighter representation of currently processed video files. With proxy you can see more (or more complex) video effects in real time. My computer was able to handle 1080p files directly (not in real time – but close enough to be editable), but since I switched to 4k … I was also force to use proxy :).
Anyway, proxy usage is straight forward. You can define it on project level, and mark if you want to have auto generated proxies for files with width larger then X pixels (yes, this is width – it's not stated anywhere). Or you can right click mouse on clip, in video list, and check mark "proxy" (this also works for entire folder).
Ok, so the Internet is crawling with plenty of howtos for configuring different/many operating systems during boot with GRUB2. But I haven't found the single one, how to make it depended on simple key press – not have to choose from GRUB menu.
So, in my case, I want to have boot up Linux/Debian all the time – as the default system, but from time to time, use Windows for Fusion 360 (or for gaming). Of course I can choose different OS from GRUB menu – like everyone else, but it would be much nicer and faster to simply press "shift" during boot and see Windows.
Camera has no build in GPS receiver but it can use location information provided by your smartphone over bluetooth connection. Nothing new here. You need to install Sony dedicated app on your Android phone – PlayMemories which is crap. First of all, this app requires you to enable WiFi (even if you don't use it to control your camera), second of all, you need to remember to enable it and check if it's still running after a while – since Android can freeze it or kill it after some time. Luckily Sony did not invented the wheel here again, and used already available GPSD subsystem on Android to provide location information (and it's not only GPS – it's also Galileo, Glonass or Beidou). So as a matter a fact, we just need to enable it. You can use many available apps like "Bluetooth GPS output" (there is time limit in free version) or like I – use AFtrack, that I already have since Symbian phones. In AFtrack, you need to enable "GPS Daemon" in GPS settings. That's it. No more need to use PlayMemories (but you still need it for pairing and initial run) and it should work all the time (you can even enable it on boot if you like).


Just few days after we reported that only two pension fund administrators were up to date with their reporting and transparency as it relates to the newly formulated multi-fund structure, our analyst went back to the various websites of the pension administrators and their findings will blow your mind.
It was discovered that, in what looked like a wave of competition, a lot more pension fund administrators have upped their game by reporting on the pricing and valuation of the new funds. Our analysts were amazed and fascinated that most of them did not show the prices for the last 10 business days, instead, they reported for the entire month of July. This is very commendable given that for most, they had to recreate or give their website a new look to accommodate the new reporting requirement.
OAK Pension Fund Administrators. Wow! Oak, you rock! This fund administrator packaged the pricing information in such a downloadable form that any one can see it in pdf format for the entire month, however, they are yet to update their information for Fund 1, that notwithstanding, what they have reported so far is a big step in the right direction.
First Guarantee Fund Administrators reports on funds, 2, 3 and 4 in what looked like a hidden clickable button that opens up to show the last 10 business days thereby meeting the minimum requirement. Again, it would have been good to show the entire month for anyone who does not or did not have the time to visit the site weekly. Not sure when the data for fund 1 will be made available.
Stanbic IBTC Fund Administrators is one of the most transparent fund managers in Nigeria both in mutual and pension funds. In a beautiful copiable format, this fund administrator reports its valuation for all four funds. Bravo Stanbic pension fund managers.
Anchor Fund Administrators wow! Never seen Anchor this creative. In the past, prices were reported weekly but following the introduction of the new funds, Anchor pension fund administrators now reports in a very imaginative form where you are allowed to define the period of interest, and boom! the information for the 4 funds jump out at you. Excellent job.
Legacy Pension Fund Administrators reports on funds, all 4 funds, on beautifully and strategically positioned clickable icons on their website. The icons which open up when you click on the view history part of it, display the required information which is accessible by defining the period of interest. One draw back of their presentation is that though they offer you the ability to copy to excel or word, the alignment of the date and information is out of whack, Legacy, good job but you need to fix this alignment issue.
ARM Pension Fund Administrators reports on all 4 funds on a beautifully and strategically positioned and strategically clickable icons on their website, like Legacy but unlike Legacy, you do not need the extra step of defining date range, just click and voila. It is of no surprise that ARM Pension fund administrators was able to do this, they have been transparent from day one, just like Stanbic IBTC. Excellent job.
There are still some administrators that do not seem to be making any effort to report on the new funds. One of them is InvestmentOne Pension fund administrators, whose website does not any indication of intent to report the prices of the new funds. Other funds in the status quo or as it was in the beginning, so it is mode include NPF and Premium Pension Administrators.
In an industry that survives on fighting competition with service excellence, it is surprising to see that some pension administrators are still very opaque with reporting their fund valuations. The 2 strictly opaque administrators that we noticed are Leadway Pensure and Radix Pension fund.
Most Nigerian Pension Fund Administrators have shown that what most of their compatriots, mutual fund managers, cannot doe, they can do easily and quickly. This is indeed a challenge to those mutual fund managers who have not been forthcoming with their valuation reporting to step up their game. We shall call them out soon.
Any idea when pension widow will open for transfer to new PFA? What is delaying the widow..


Russell Hobbs stands for design, quality, and user-friendliness. There are different Russell Hobbs series, so there's something for everyone. The Russell Hobbs assortment consists of kettles, coffee machines, toasters, immersion blenders, juicers, and blenders.


We are the leading service provider of Dual Insulation.
Known and appreciated as a reliable service provider, we render the premium quality of Hot and Cold Insulation Services. Timely and prompt execution of the rendered hot and cold insulation services, make these services extremely popular among our patrons. Due to their highly effective dual insulation, the rendered hot and cold insulation services are highly demanded.


text:
Hot Research PM
Bank of New York's Full Valuation
Updated Jan. 20, 2011 12:01 am ET / Original Jan. 20, 2011 12:43 pm ET
Bank of New York Mellon (BK: NYSE)
By Sandler O'Neill & Partners ($31.48, Jan. 20, 2011)
Bank of New York Mellon announced fourth-quarter core earnings-per-share of 59 cents, versus our 59 cents estimate and the consensus of 57 cents.
Revenue was 1% above what we were expecting, and Bank of New York (ticker: BK) had a negative credit provision of $22 million. However, noninterest expenses were above our expectations.
We are maintaining our estimates and $34 price target but reducing our rating to Hold [from Buy] on valuation. We are maintaining our 2011 and 2012 EPS estimates of $2.70 and $3.20, respectively.
Our price target of $34 represents 12.5 times our 2011 EPS estimate of $2.70, in line with the company's prior four-year average price to future 12-month earnings ratio. However, the stock has had a significant rally, which has left the risk/reward less compelling.
To become more constructive on the stock, we need to believe that a rise in short-term rates is on the horizon. However, we believe this will be a 2012 event rather than a 2011 event as the Federal Reserve will choose to be conservative in a fragile economic recovery.
Management noted that the company is seeing more new business opportunities as a result of recent acquisitions then they originally expected. That being said, Bank of New York is not likely to make a meaningful acquisition in the near future because management is still integrating the acquisitions made in 2010, and they believe they are closer to being able to return capital to shareholders via dividends and stock repurchases, which they believe will be a better use of capital. In the near future, management is focusing on organic growth, especially in the emerging markets.
Management released $37 million of reserves as charge-offs remained flat at $15 million and management had a negative provision of $22 million as an asset manager that had previously filed for bankruptcy repaid a loan. Nonperforming loans (NPLs) declined to 1.05% of loans from 1.48% in the third quarter, and the allowance for loan losses remains adequate at 127% of NPLs and 1.3% of loans. Loans grew by 2% sequentially.
Capital remains strong. In the fourth quarter Bank of New York generated $576 million of new Tier 1 common equity, up 5% sequentially, as the Tier 1 common ratio improved by 110 basis points to 11.8%. Currently Bank of New York is modestly below 6% on a Basel III [a global bank accord] calculation, and management expects to be Basel III compliant by the end of the year. In addition, management noted that they recently submitted their dividend stress test to regulators and expects to be able to increase the dividend and resume stock repurchases once regulators approve the application. The company expects to target a dividend payout range of approximately 20%-30%.
Assets under custody (AUC) and assets under management (AUM) growth continues but was less than we were expecting. AUC rose by 2.5% sequentially, and AUM rose by 2.7% sequentially. While growth continues and was consistent with trends reported by peers, the growth was less than we were expecting given a 10% equity-market rally in the quarter. Management noted that levels reflect new business wins and higher equity values but were offset by a decline in fixed-income valuations and the relative strength of the U.S. dollar.
Management also noted that AUM experienced a record $48 billion in net long-term inflows in 2010. The company also won a record $350 billion in new asset-servicing wins. Management noted that the current pipeline remains strong, with approximately $500 billion of AUC to convert from prior wins, with 50% of the asset-servicing wins coming from outside the U.S.
-- Jeff Harte
-- Ted Holzman
The companies mentioned in Hot Research are subjects of research reports issued recently by investment firms. Their opinions in no way represent those of Barrons.com or Dow Jones & Company, Inc. Share prices at the time the report was issued and the date of the report are in parentheses.
To be considered for this feature, please send material to
Comments: E-mail online.editors@barrons.com


Hans Ulrich Obrist speaks at the Armory Show.
According to curator Hans Ulrich Obrist, the best term to describe his job might be "junction-maker." With his exhibitions at the Serpentine Galleries in London, where he is artistic director, he wants to create connections "between not only objects, but also people," he told a packed room this past Friday at the Armory Show in New York.
In his talk, titled "Exhibition Making in the 21st Century," Obrist offered a far-reaching vision of the role of curators, today and in the future. The keynote of a larger curatorial summit, the address was both urgent (one of his favorite words), as he discussed "exacerbating inequality," and inscrutable, as he enthusiastically proposed "an architecture which enables people to think the unthinkable," an idea he attributed to the English architect Cedric Price. It was, in other words, a typically endearing performance for him.
To curate, Obrist explained, is to preserve. "I think curating involves a daily protest against forgetting," he said, arguing that using the newest technologies available to make exhibitions is essential to that process. He talked at length about artificial intelligence, noting that artists are grappling with its uses and drawbacks.
Obrist's speech was followed by a panel called "Collapsing Structures," which focused on art institutions' obligation to take political and social stands. Moderated by El Museo del Barrio's executive director, Patrick Charpenel, the panel—which included the Swiss Institute's director, Simon Castets; curator Michy Marxuach; artist Carlos Motta; and the Queens Museum's former executive director, Laura Raicovich—offered ways of subverting historically oppressive systems.
Ultimately, Raicovich believes that art institutions must act on their purported values and interests. "Part of what I wanted to say today was about the values that cultural institutions espouse and how they talk very specifically about engaging with many different cultures," Raicovich said. And yet, she continued, "we're not actually doing and working the way that we say that our values are in the world." Her term at the Queens Museum was a stand against that, she said. Marxuach echoed Raicovich's message, adding that we should all "put forward hard questions" to institutions and their boards.
One artist who's taken that to heart is Motta, who discussed a project that began in 2011 titled "Gender Talents"—an online archive of video portraits of trans and intersex activists. The project is international and ongoing, but Motta spoke specifically about his work in Guatemala, where he collaborated with Red Multicultural de Mujeres Trans de Guatemala, a grassroots organization in Guatemala City that was founded by and for transgender women, to create video portraits of members of the group.
With these portraits, Motta hoped to create discussion around the organization's work, which is centered on racial justice and the empowerment of trans women. In one instance, Motta screened the videos exclusively for various NGO groups (selected by the women he collaborated with) and an audience of 300 trans women, including women of indigenous descent. "There was a certain kind of piercing of that institutional framework," Motta said, since the artist and members of the organization he worked with decided to prioritize the interests of individuals traditionally excluded from the Biennial de Arte Paiz, where the piece first debuted.
What did the panel's title mean, anyway? Castets said that he's been thinking a lot lately about what it means to collapse a structure, since he's been preparing to reopen the Swiss Institute, long a resident of SoHo in Manhattan, in the East Village. "It is our responsibility to contribute to our neighborhood in a thoughtful way," he said, and added that he plans to do this by working with community organizations. There's "another idea of collapsing, meaning to bring things together," he said.


This action-packed psychological thriller takes you into the twisted depths of brutality at its worst. As a struggling young filmmaker, Mickey accidentally stumbles upon a notorious serial killer, James Lemac (Mark Borkowski), and catches one of his murders on film.
Believing he can capture the ultimate reality show, Mickey contacts Lemac and sets a face to face to make the serial killer simple offer; Lemac is to be the subject of his new documentary or the grisly murder footage goes straight to the cops. Lemac gives in to the blackmail. What follows is an exhausting and psychological game of cat and mouse between filmmaker and subject. As the lines of blackmail continually shift back and forth, Mickey must ultimately confront the darkest side of not only the killer's nature, but his own.


text:
Q: Retrofit change string chars during the request I built the request like following:
public static ApiBuilder newInstance(){
        GsonBuilder gsonBuilder = new GsonBuilder()
                .registerTypeAdapter(Boolean.class, booleanAsIntAdapter)
                .registerTypeAdapter(boolean.class, booleanAsIntAdapter)
                .registerTypeAdapter(Date.class, (JsonDeserializer<Date>) (json, typeOfT, context)
                        -> new Date(Long.valueOf(json.getAsString())));

        OkHttpClient client = new OkHttpClient();
        client.setConnectTimeout(180, TimeUnit.SECONDS);
        client.setReadTimeout(240, TimeUnit.SECONDS);

        String url = MyApplicationConfiguration.getInstance().get("urlofservice");

        RestAdapter restAdapter = new RestAdapter.Builder()
                .setRequestInterceptor(
                        request -> {
                            request.addHeader(deviceIdHeader, MyApplication.getDeviceId());
                        }

                ).setConverter(new GsonConverter(gsonBuilder.create()))
                .setEndpoint(url)
                .setClient(new OkClient(client)).build();

        restAdapter.setLogLevel(RestAdapter.LogLevel.FULL);

        return restAdapter.create(ApiExtendedValidation.class);
    }

    private static final TypeAdapter<Boolean> booleanAsIntAdapter = new TypeAdapter<Boolean>() {
        @Override
        public void write(JsonWriter out, Boolean value) throws IOException {
            if (value == null) {
                out.nullValue();
            } else {
                out.value(value);
            }
        }

        @Override
        public Boolean read(JsonReader in) throws IOException {
            JsonToken peek = in.peek();
            switch (peek) {
                case BOOLEAN:
                    return in.nextBoolean();
                case NULL:
                    in.nextNull();
                    return null;
                case NUMBER:
                    return in.nextInt() != 0;
                case STRING:
                    return Boolean.parseBoolean(in.nextString());
                default:
                    throw new IllegalStateException("Expected BOOLEAN or NUMBER but was " + peek);
            }
        }
    };

The API interface is:
@Headers("Content-Type: application/json")
@POST("/validate")
Observable<QRValidateResponse> validateQRCode(@Body QRRequest request);

The QRRequest is an object, that contains a String field with a Base64 ecnoded string
Encoding example
byte[] data = rawResult.getText().getBytes(StandardCharsets.ISO_8859_1);
        String encodedResult = Base64.encodeToString(data, Base64.DEFAULT);

object example
request{
    "lang": "EN",
    "content": "SGVsbG8gV29ybGQh="
}

When Retrofit execute the request, the request.content changes like follwing:
SGVsbG8gV29ybGQh\u003d

The Server doesn't recognize the content, so its response in an error.
Why during the request the content changes? Is there a way to avoid it?
SOLUTION
There was an escaping error linked to the use of Gson.
According to this post, solved adding this disableHtmlEscaping() to the GsonBuilder.

redpajama_set_name: RedPajamaStackExchange


text:
HomePress release
Latest multimedia galleries
Press release no. 6/2015 - Date Monday | 23 March 2015
The European Ombudsman, Emily O'Reilly, has welcomed the latest steps taken by the European Commission to increase the transparency of the on-going Transatlantic Trade and Investment Partnership (TTIP) negotiations.
In response to her own-initiative inquiry, the Commission is building on its more pro-active approach to publishing TTIP documents. It stated that its soon-to-be-published list of TTIP documents will be comprehensive, and signalled that it continues to seek to persuade the United States of the need for greater transparency in these trade talks.
Emily O'Reilly commented: "The Commission has engaged positively with the Ombudsman to increase the transparency of the TTIP negotiations. While more can be done in the coming months to increase public awareness of the content and implications of TTIP – and particularly when consolidated texts of EU and US positions come close to being finalised - I am pleased with the way in which the Commission has further moved to build on the transparency measures already put in place.
I commend the European Parliament and civil society groups who have also pushed for more transparency. The democratic responsibility now lies with the elected representatives to scrutinise the negotiations on behalf of their constituents, engage with European citizens and decide the future of TTIP."
More can still be done about lobbying transparency
The Ombudsman opened her TTIP investigation in July 2014 and also conducted a public consultation. In January 2015, she submitted a list of recommendations to the Commission, including a call for increased transparency around meetings that Commission officials hold on TTIP with business organisations, lobby groups or NGOs.
In its reply, the Commission states that, for reasons of 'proportionality', it does not currently intend to publish agendas or minutes of such meetings or to extend the transparency obligations to levels of Director, Head of Unit and negotiator. It also argues that data protection reasons stand in the way of it publishing the names of meeting participants without their consent.
In the Ombudsman's view, data protection should not be used as an automatic obstacle to public scrutiny of lobbying activities in the context of TTIP. It is possible to deal with data protection concerns by informing participants when they are invited to meetings of the intention to disclose their names. This should be done in the public interest.
She plans to publish her analysis of the Commission's reply in the coming weeks.
The Ombudsman's recommendations for greater TTIP transparency are available here.
The Commission's reply to her recommendations is available here.
Download this publication in PDF format (96.81 KB)
Thursday | 27 June 2019Press release
Wednesday | 19 June 2019Press release
Ombudsman welcomes Dutch initiative on EU transparency
For press inquiries
For further information about the Ombudsman's media activities, please contact: Ms Gundi Gadesmann, Head of communication, Tel. +32 2 284 26 09.


the splintered midnight of the cause.
you like a landmine in a clearing in the fog.
swelter in this sauna at the center of the light.
These ruptured rites of batteries. This thirst.
Line them with sawdust to leave in the rain.
& I am always running late.
made for the shaking of leaves.
& refuse to be evacuated.
the space between the lines.
Zachary Evans is an MFA candidate in poetry at Colorado State University. His work can be found in Cloud Rodeo, Alien Mouth, Potluck, Sundog Lit, and elsewhere.


Hoo. What a mess. You know that feeling when you've gone waaaaay too long without cleaning a room? That's how I feel about my poor blog. It has been severely neglected. Like in Animal Crossing when you haven't visited your town in months, and there are weeds everywhere. Never mind.
In any case. I need to set a date to get things back on track, instead of just letting the last few posts just float here in limbo.
I will return to the rock-solid five-day-a-week posting schedule I've held to for the past few years. It will be rad.
I know that feeling. But it's always fun to go back and crush all those little cockroaches that make their way into your home.


text:
Public figure hurdle remains high
August 20, 2008 September 5, 2018 Kelsey Beltramea
Courts in two recent cases have reaffirmed that university professors and administrators are public figures who face heavy burdens when trying to claim they were harmed by information published or circulated about them.Courts in Minnesota and Maine threw out the officials' lawsuits, ruling that because the plaintiffs hold public positions at their institutions, they must meet standards the law requires of public figures.Eric Robinson, staff attorney for the Media Law Resource Center, said neither case is necessarily groundbreaking; they just underline present law."My impression is that public university employees have more or less typically been held to be public officials," he said. "These cases just reinforce that."Breathing space for error'In Minnesota, the state's appeals court ruled in January that Richard D. Lewis could not win his libel and defamation lawsuit against St. Cloud State University's student newspaper because the University Chronicle did not publish its statements with "actual malice," knowing the statements were false. The Minnesota Supreme Court refused to review the case in May.The Chronicle quoted a former student saying Lewis "mistreated" her by changing her grade from an A to an incomplete. The student also said that the former dean was anti-Semitic and accused him of using racial slurs, but she later retracted those statements, saying she meant them about someone else. The Chronicle printed a partial correction, and Lewis sued.But in January, the Minnesota Court of Appeals threw out the lawsuit, ruling that Lewis is a "limited-purpose public figure." Lewis was meaningfully involved in a public controversy regarding anti-Semitism on campus and the paper's allegedly defamatory statements were related to that controversy, the court ruled. For those reasons, Lewis could win his lawsuit only if the paper published the statements with "actual malice.""It's always gratifying in a case like this when there's an admitted and serious error that's made and you win," said the Chronicle's attorney, Mark Anfinson. "That's the whole notion of New York Times v. Sullivan where the actual malice standard came from — a necessary breathing space for error and debate."Truth as a defenseIn Maine, a federal appeals court ruled that administrator David Fiacco could not win his intentional infliction of emotional distress lawsuit against a fraternity because the statements he claimed members made were essentially true. Fiacco is the director of the Office of Community Standards, Rights and Responsibilities at the University of Maine at Orono.Whereas private individuals can win emotional distress claims even if they concede the statements in question were true, public officials or public figures must show those that published the statements knew they were false or were reckless in verifying their accuracy.And because what the campus chapter of Sigma Alpha Epsilon said about Fiacco was essentially true, Fiacco — as a public official — had to meet this standard of "actual malice." The 1st U.S. Circuit Court of Appeals ruled he did not.After Fiacco began investigating Sigma Alpha Epsilon for misconduct in 2002, a group of fraternity brothers hired a private investigator to look for evidence of bias Fiacco might hold against fraternities. Instead, the investigator uncovered a Colorado Driving While Ability Impaired conviction and a restraining order against Fiacco that his former girlfriend had secured.Members of the fraternity decided to use this information. They made copies of the records, sealing them with an unsigned memo that read: "Enclosed please find newspaper articles and court documents detailing Mr. Fiacco's previous legal difficulties: DWI, Sexual harassment, and Domestic Violence. Is this honestly the best qualified candidate the University of Maine could find for the Office of Judicial Affairs?"With the help of an alumnus in Colorado, the fraternity members mailed the packages without return addresses to the university president, several deans, the University of Maine System Board of Trustees and two local newspapers. In his lawsuit, Fiacco said this caused him insomnia, nightmares and depression.But the court ruled the statements in the memo were not false because Fiacco was convicted of Driving While Ability Impaired, similar to Driving While Intoxicated, and his former girlfriend obtained the restraining order under the Colorado Domestic Abuse Act, which indicated the court found Fiacco had committed an act of violence or threatened to do so.Drawing linesGary Dickstein, president of the Association for Student Judicial Affairs, said presidents of universities are obviously public officials. But he said judicial affairs officers at fair-sized institutions are not typically considered to wield that much executive power."Generally, they're somewhere between middle managers and senior staff," he said. The court's reasoning, distinguishing Fiacco as a public official because he had authority to decide whether students were allowed to continue in school, could be applied to many school officials, he said.Jane Kirtley, director of the Silha Center for the Study of Media Ethics and Law, said without the actual malice standard, it would be impossible to evaluate people in positions of power."When we're talking about professors at any kind of state university, certainly at least there is a threshold to the argument that since you're on the public payroll, your actions are clearly a matter of public interest and you should be considered a public figure for at least that particular purpose," she said.But the expanse of that classification is a reasonable topic for debate and discussion.Said Kirtley, "I'm not sure just becoming a professor, and I speak as one, doesn't necessarily open you up as a public figure in every instance."
Tagged Fall 2008, reports