Source code for clld.db.models.contributor

from sqlalchemy import Column, String, Unicode, UniqueConstraint

from zope.interface import implementer
from nameparser import HumanName

from clld.db.meta import Base, PolymorphicBaseMixin
from clld import interfaces

from .import (
    IdNameDescriptionMixin,
    DataMixin, FilesMixin, HasDataMixin, HasFilesMixin)

__all__ = ('Contributor',)


class Contributor_data(Base, DataMixin):
    pass


class Contributor_files(Base, FilesMixin):
    pass


[docs]@implementer(interfaces.IContributor) class Contributor(Base, PolymorphicBaseMixin, IdNameDescriptionMixin, HasDataMixin, HasFilesMixin): """Creator of a contribution.""" __table_args__ = (UniqueConstraint('name'),) url = Column(Unicode()) email = Column(String) address = Column(Unicode) def last_first(self): if not self.name: return '' return '{0.last}, {0.first} {0.middle}'.format(HumanName(self.name)).strip()