예제 #1
0
class GiftThankYouLetterModel(database.Model):
    """A gift thank you model"""

    __tablename__ = 'gift_thank_you_letter'
    id = database.Column(database.Integer,
                         primary_key=True,
                         autoincrement=True,
                         nullable=False)
    gift_id = database.Column(database.Integer, nullable=False)
    gift = database.relationship(
        'GiftModel',
        foreign_keys=[GiftModel.id],
        primaryjoin='GiftThankYouLetterModel.gift_id == GiftModel.id',
        uselist=False)

    @hybrid_property
    def user(self):
        """Hybrid user attribute"""
        try:
            user = get_ultsys_user({'ID': {'eq': self.gift.user_id}}).json()[0]
        except (AttributeError, IndexError, KeyError):
            user = None
        if user:
            return {
                'firstname': user['firstname'],
                'lastname': user['lastname'],
                'address': user['address'],
                'city': user['city'],
                'state': user['state'],
                'email': user['email'],
            }
        return None
class MethodUsedModel(database.Model):
    """Agents model that defines who is modifying records."""

    __tablename__ = 'method_used'
    id = database.Column(BIGINT,
                         primary_key=True,
                         autoincrement=True,
                         nullable=False)
    name = database.Column(database.VARCHAR(128),
                           nullable=False,
                           default='Web Form Credit Card')
    billing_address_required = database.Column(TINYINT,
                                               nullable=False,
                                               default=0)

    @staticmethod
    def get_method_used(field, field_value):
        """Place latest transaction status on the Gift."""
        equals_operator = '__eq__'
        column = getattr(MethodUsedModel, field, None)
        filter_by_equals = getattr(column, equals_operator)(field_value)
        method_used_model = MethodUsedModel.query.filter(
            filter_by_equals).one_or_none()
        if not method_used_model:
            column = getattr(MethodUsedModel, 'name', None)
            filter_by_equals = getattr(column,
                                       equals_operator)('Unknown Method Used')
            method_used_model = MethodUsedModel.query.filter(
                filter_by_equals).one_or_none()
        return method_used_model
예제 #3
0
class CandidateModel(database.Model):
    """Details the SQL schema for candidate"""

    __tablename__ = 'candidate'
    id = database.Column(SMALLINT,
                         primary_key=True,
                         autoincrement=True,
                         nullable=False)
    name = database.Column(database.String(200), nullable=False)
    election_id = database.Column(SMALLINT, nullable=False)
예제 #4
0
class PaypalETLModel( database.Model ):
    """PaypalETLs model"""

    __tablename__ = 'paypal_etl'
    id = database.Column(
        database.Integer, primary_key=True,
        autoincrement=True, nullable=False
    )
    enacted_by_agent_id = database.Column( database.Integer, nullable=False )
    file_name = database.Column( database.VARCHAR( 128 ), nullable=False )
    date_in_utc = database.Column( database.DateTime, nullable=False )
예제 #5
0
class UserModel(database.Model):
    """Details the SQL schema for user"""

    __tablename__ = 'user'
    id = database.Column(SMALLINT,
                         primary_key=True,
                         autoincrement=True,
                         nullable=False)
    name = database.Column(database.String(20), nullable=False)
    username_hash = database.Column(database.String(50), nullable=False)
    password_hash = database.Column(database.String(100), nullable=False)
예제 #6
0
파일: vote.py 프로젝트: MaliaMcLau/VoteAPI
class VoteModel(database.Model):
    """Details the SQL schema for vote"""

    __tablename__ = 'vote'
    id = database.Column(SMALLINT,
                         primary_key=True,
                         autoincrement=True,
                         nullable=False)
    user_id = database.Column(SMALLINT, nullable=False)
    election_id = database.Column(SMALLINT, nullable=False)
    candidate_id = database.Column(SMALLINT, nullable=False)
    cast_date_utc = database.Column(database.DateTime, nullable=True)
예제 #7
0
class ElectionModel(database.Model):
    """Details the SQL schema for election"""

    __tablename__ = 'election'
    id = database.Column(SMALLINT,
                         primary_key=True,
                         autoincrement=True,
                         nullable=False)
    name = database.Column(database.String(20), nullable=False)
    start_date_utc = database.Column(database.DateTime, nullable=False)
    duration = database.Column(MEDIUMINT, nullable=False)
    type = database.Column(database.String(10), nullable=False)
예제 #8
0
class CampaignAmountsModel(database.Model):
    """A user model that associates an amount ID with a campaign ID."""

    __tablename__ = 'campaign_amounts'
    id = database.Column(database.Integer,
                         primary_key=True,
                         autoincrement=True,
                         nullable=False)
    amount = database.Column(database.DECIMAL(10, 2), nullable=False)
    weight = database.Column(database.Integer, nullable=True)
    campaign_id = database.Column(database.Integer,
                                  nullable=True,
                                  default=None)
예제 #9
0
class AgentModel(database.Model):
    """Agents model that defines who is modifying records."""

    __tablename__ = 'agent'
    id = database.Column(database.Integer,
                         primary_key=True,
                         autoincrement=True,
                         nullable=False)
    name = database.Column(database.VARCHAR(64), nullable=False, default='')
    user_id = database.Column(database.Integer, nullable=True, default=None)
    staff_id = database.Column(database.Integer, nullable=True, default=None)
    type = database.Column(database.Enum('Staff Member',
                                         'Organization',
                                         'Automated',
                                         native_enum=False),
                           nullable=False,
                           default='Staff Member')

    @staticmethod
    def get_agent(agent_type, field, field_value):
        """Place latest transaction status on the Gift."""
        equals_operator = '__eq__'
        column = getattr(AgentModel, field, None)
        filter_by_equals = getattr(column, equals_operator)(field_value)
        agent_model = AgentModel.query.filter(filter_by_equals).one_or_none()
        if not agent_model:
            column = getattr(AgentModel, 'name', None)
            if agent_type == 'Staff Member':
                filter_by_equals = getattr(
                    column, equals_operator)('Unknown Staff Member')
            elif agent_type in ('Automated', 'Organization'):
                filter_by_equals = getattr(
                    column, equals_operator)('Unknown Organization')
            agent_model = AgentModel.query.filter(
                filter_by_equals).one_or_none()
        return agent_model
예제 #10
0
class GiftModel(database.Model):
    """Head, or master table, for donations."""

    __tablename__ = 'gift'
    id = database.Column(database.Integer,
                         primary_key=True,
                         autoincrement=True,
                         nullable=False)
    searchable_id = database.Column(BinaryUUID,
                                    nullable=False,
                                    default=uuid.uuid4)
    user_id = database.Column(database.Integer, nullable=True, default=None)
    campaign_id = database.Column(database.Integer,
                                  nullable=True,
                                  default=None)
    customer_id = database.Column(database.VARCHAR(36),
                                  nullable=True,
                                  default='')
    method_used_id = database.Column(TINYINT, nullable=False, default=1)
    sourced_from_agent_id = database.Column(database.Integer,
                                            nullable=True,
                                            default=None)
    given_to = database.Column(database.Enum('ABI',
                                             'ACTION',
                                             'BECK',
                                             'GREEN',
                                             'INTER',
                                             'MCRI',
                                             'NERF',
                                             'P-USA',
                                             'PROD',
                                             'UNRES',
                                             'VIDEO',
                                             'TBD',
                                             'SUPPORT',
                                             native_enum=False),
                               default='ACTION',
                               nullable=False)
    recurring_subscription_id = database.Column(database.VARCHAR(32),
                                                nullable=True,
                                                default=None)
    transactions = database.relationship(
        'TransactionModel',
        order_by='desc( TransactionModel.date_in_utc )',
        foreign_keys=[TransactionModel.gift_id],
        primaryjoin='GiftModel.id == TransactionModel.gift_id')

    @hybrid_property
    def date_in_utc(self):
        """Place latest transaction date_in_utc on the Gift."""
        if self.transactions:
            return self.transactions[0].date_in_utc
        return None

    @hybrid_property
    def status(self):
        """Place latest transaction status on the Gift."""
        if self.transactions:
            return self.transactions[0].status
        return None

    @hybrid_property
    def gross_gift_amount(self):
        """Place latest transaction gross_gift_amount on the Gift."""
        if self.transactions:
            return self.transactions[0].gross_gift_amount
        return None
예제 #11
0
class CampaignModel(database.Model):
    """A campaign model to persist ."""

    __tablename__ = 'campaign'
    id = database.Column(database.Integer,
                         primary_key=True,
                         autoincrement=True,
                         nullable=False)
    name = database.Column(database.VARCHAR(80), nullable=True)
    description = database.Column(database.VARCHAR(80), nullable=True)
    date_from_utc = database.Column(database.DateTime, nullable=True)
    date_to_utc = database.Column(database.DateTime, nullable=True)
    message = database.Column(database.TEXT(), nullable=True)
    photo_type = database.Column(database.VARCHAR(80), nullable=True)
    background = database.Column(database.Integer, nullable=True)
    video_name = database.Column(database.VARCHAR(80), nullable=True)
    video_url = database.Column(database.VARCHAR(80), nullable=True)
    is_active = database.Column(database.Integer, nullable=True, default=1)
    is_default = database.Column(database.Integer, nullable=True, default=0)
class UltsysUserModel( database.Model ):
    """A user model for testing.

    The Ultsys user model is part of the test database and allows the behavior of the Ultsys user endpoints to be
    mocked more thoroughly.
    """

    __tablename__ = 'user'
    ID = database.Column( database.Integer, primary_key=True, autoincrement=True, nullable=False )
    email = database.Column( database.VARCHAR( 255 ), nullable=False )
    firstname = database.Column( database.VARCHAR( 64 ), nullable=True, default='' )
    lastname = database.Column( database.VARCHAR( 64 ), nullable=True, default=None )
    address = database.Column( database.VARCHAR( 255 ), nullable=True, default=None )
    state = database.Column( database.VARCHAR( 2 ), nullable=True, default=None )
    city = database.Column( database.VARCHAR( 64 ), nullable=True, default=None )
    zip = database.Column( database.VARCHAR( 5 ), nullable=True, default=None )
    phone = database.Column( database.VARCHAR( 16 ), nullable=True, default=None )
    donation_prior_amount = database.Column( database.VARCHAR( 255 ), nullable=True, default=None )
    donation_sum = database.Column( database.VARCHAR( 255 ), nullable=True, default=None )
    donation_time = database.Column( database.DateTime, nullable=True )
    uid = database.Column( database.Integer, nullable=True )
예제 #13
0
class TransactionModel( database.Model ):
    """A general transaction model to include Braintree and other donations."""

    __tablename__ = 'transaction'
    id = database.Column( database.Integer, primary_key=True, autoincrement=True, nullable=False )
    gift_id = database.Column( database.Integer, nullable=False )
    date_in_utc = database.Column( database.DateTime, nullable=False )
    receipt_sent_in_utc = database.Column( database.DateTime, nullable=True )
    enacted_by_agent_id = database.Column( database.Integer, nullable=True, default=None )
    type = database.Column(
        database.Enum(
            'Gift', 'Correction', 'Refund', 'Deposit to Bank', 'Bounced', 'Void', 'Dispute', 'Note',
            'Fine',
            native_enum=False
        ),
        default='Gift',
        nullable=False
    )
    status = database.Column(
        database.Enum(
            'Accepted', 'Completed', 'Declined', 'Denied', 'Failed', 'Forced', 'Lost', 'Refused', 'Requested',
            'Won', 'Thank You Sent', native_enum=False
        ),
        default='Accepted',
        nullable=True
    )
    reference_number = database.Column( database.VARCHAR( 32 ), nullable=True, default='' )
    gross_gift_amount = database.Column( database.DECIMAL( 10, 2 ), nullable=False )
    fee = database.Column( database.DECIMAL( 8, 2 ), nullable=False )
    notes = database.Column( database.Text, nullable=True )
    gift = database.relationship(
        'GiftModel',
        foreign_keys=[ gift_id ],
        primaryjoin='TransactionModel.gift_id == GiftModel.id',
        uselist=False
    )

    @hybrid_property
    def gift_searchable_id( self ):
        """Add gift_searchable_id property to Transaction object"""

        if self.gift:
            return self.gift.searchable_id
        return None
class UnresolvedPaypalETLTransactionModel(database.Model):
    """In the PayPal CSV upload there are a class of transactions that cannot be resolved."""

    __tablename__ = 'unresolved_paypal_etl_transaction'
    id = database.Column(database.Integer,
                         primary_key=True,
                         autoincrement=True,
                         nullable=False)
    enacted_by_agent_id = database.Column(database.Integer, nullable=True)
    date = database.Column(database.VARCHAR(20), nullable=True, default=None)
    time = database.Column(database.VARCHAR(20), nullable=True, default=None)
    time_zone = database.Column(database.VARCHAR(5),
                                nullable=True,
                                default=None)
    name = database.Column(database.VARCHAR(255), nullable=True, default=None)
    type = database.Column(database.VARCHAR(255), nullable=True, default=None)
    status = database.Column(database.VARCHAR(64), nullable=True, default=None)
    subject = database.Column(database.VARCHAR(255),
                              nullable=True,
                              default=None)
    gross = database.Column(database.VARCHAR(64), nullable=True, default=None)
    fee = database.Column(database.VARCHAR(64), nullable=True, default=None)
    from_email_address = database.Column(database.VARCHAR(255),
                                         nullable=True,
                                         default=None)
    to_email_address = database.Column(database.VARCHAR(255),
                                       nullable=True,
                                       default=None)
    transaction_id = database.Column(database.VARCHAR(255),
                                     nullable=True,
                                     default=None)
    reference_txn_id = database.Column(database.VARCHAR(255),
                                       nullable=True,
                                       default=None)
class QueuedDonorModel( database.Model ):
    """If a donor cannot be confidently associated with an existing user cage them."""

    __tablename__ = 'queued_donor'
    id = database.Column( database.Integer, primary_key=True, autoincrement=True, nullable=False )
    gift_id = database.Column( database.Integer, nullable=True )
    gift_searchable_id = database.Column( BinaryUUID, nullable=True )
    campaign_id = database.Column( database.Integer, nullable=True, default=None )
    customer_id = database.Column( database.VARCHAR( 36 ), nullable=True, default='' )
    user_email_address = database.Column( database.VARCHAR( 255 ), nullable=False, default=None )
    user_first_name = database.Column( database.VARCHAR( 64 ), nullable=True, default='' )
    user_last_name = database.Column( database.VARCHAR( 64 ), nullable=True, default=None )
    user_address = database.Column( database.VARCHAR( 255 ), nullable=True, default=None )
    user_state = database.Column( database.CHAR( 2 ), nullable=True, default=None )
    user_city = database.Column( database.VARCHAR( 64 ), nullable=True, default=None )
    user_zipcode = database.Column( database.VARCHAR( 5 ), nullable=True, default=None )
    user_phone_number = database.Column( database.BigInteger, nullable=True, default=0 )
    times_viewed = database.Column( database.Integer, nullable=True )