Beispiel #1
0
class AMDevice(db.Model):
    __tablename__ = 'amdevice'
    id = db.Column(db.Integer(), primary_key=True)
    wallet_id = db.Column(db.Integer,
                          db.ForeignKey('amwallet.id'),
                          nullable=False)
    wallet = db.relationship('AMWallet',
                             backref=db.backref('devices', lazy='joined'))
    date = db.Column(db.DateTime())
    app_version = db.Column(db.String())
    os = db.Column(db.String())
    os_version = db.Column(db.String())
    manufacturer = db.Column(db.String())
    brand = db.Column(db.String())
    device_id = db.Column(db.String())

    def __init__(self, wallet, app_version, os, os_version, manufacturer,
                 brand, device_id):
        self.wallet = wallet
        self.date = datetime.datetime.now()
        self.app_version = app_version
        self.os = os
        self.os_version = os_version
        self.manufacturer = manufacturer
        self.brand = brand
        self.device_id = device_id

    def __repr__(self):
        return "<AMDevice %r %r>" % (self.brand, self.device_id)
Beispiel #2
0
class Role(db.Model, RoleMixin):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))

    @classmethod
    def from_name(cls, session, name):
        return session.query(cls).filter(cls.name == name).first()

    def __str__(self):
        return self.name
Beispiel #3
0
class PayDbTransaction(db.Model):
    ACTION_ISSUE = "issue"
    ACTION_TRANSFER = "transfer"
    ACTION_DESTROY = "destroy"

    id = db.Column(db.Integer, primary_key=True)
    token = db.Column(db.String(255), unique=True, nullable=False)
    date = db.Column(db.DateTime())
    action = db.Column(db.String(255), nullable=False)
    sender_token = db.Column(db.String(255), db.ForeignKey('user.token'), nullable=False)
    sender = db.relationship('User', foreign_keys=[sender_token], backref=db.backref('sent', lazy='dynamic'))
    recipient_token = db.Column(db.String(255), db.ForeignKey('user.token'), nullable=True)
    recipient = db.relationship('User', foreign_keys=[recipient_token], backref=db.backref('recieved', lazy='dynamic'))
    amount = db.Column(db.Integer())
    attachment = db.Column(db.String(255))

    def __init__(self, action, sender, recipient, amount, attachment):
        self.token = secrets.token_urlsafe(8)
        self.date = datetime.datetime.now()
        self.action = action
        self.sender = sender
        self.recipient = recipient
        self.amount = amount
        self.attachment = attachment

    @property
    def timestamp(self):
        if not self.date:
            return 0
        return int(datetime.datetime.timestamp(self.date))

    @classmethod
    def from_token(cls, session, token):
        return session.query(cls).filter(cls.token == token).first()

    @classmethod
    def related_to_user(cls, session, user, offset, limit):
        # pylint: disable=no-member
        return session.query(cls).filter(or_(cls.sender_token == user.token, cls.recipient_token == user.token)).order_by(cls.id.desc()).offset(offset).limit(limit)

    @classmethod
    def all(cls, session):
        return session.query(cls).all()

    def __str__(self):
        return self.token

    def to_json(self):
        tx_schema = PayDbTransactionSchema()
        return tx_schema.dump(self)
Beispiel #4
0
class Role(db.Model, RoleMixin):
    ROLE_ADMIN = 'admin'
    ROLE_PROPOSER = 'proposer'
    ROLE_AUTHORIZER = 'authorizer'
    ROLE_REFERRAL_CLAIMER = 'referral_claimer'

    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))

    @classmethod
    def from_name(cls, session, name):
        return session.query(cls).filter(cls.name == name).first()

    def __str__(self):
        return f'{self.name}'
Beispiel #5
0
class Category(db.Model):
    CATEGORY_MARKETING = 'marketing'
    CATEGORY_MISC = 'misc'
    CATEGORY_TESTING = 'testing'
    CATEGORY_REFERRAL = 'referral'

    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))

    @classmethod
    def from_name(cls, session, name):
        return session.query(cls).filter(cls.name == name).first()

    def __str__(self):
        return f'{self.name}'
Beispiel #6
0
class Permission(db.Model):
    PERMISSION_RECIEVE = 'receive'
    PERMISSION_BALANCE = 'balance'
    PERMISSION_HISTORY = 'history'
    PERMISSION_TRANSFER = 'transfer'
    PERMISSION_ISSUE = 'issue'
    PERMS_ALL = [PERMISSION_BALANCE, PERMISSION_HISTORY, PERMISSION_ISSUE, PERMISSION_RECIEVE, PERMISSION_TRANSFER]

    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))

    @classmethod
    def from_name(cls, session, name):
        return session.query(cls).filter(cls.name == name).first()

    def __str__(self):
        return f'{self.name}'
Beispiel #7
0
import base58
import qrcode
import qrcode.image.svg
from wtforms.validators import DataRequired

from app_core import app, db, aw, mail
from utils import generate_key, ib4b_response, bankaccount_is_valid, blockchain_transactions, apply_merchant_rate, is_email, generate_random_password

logger = logging.getLogger(__name__)

#
# Define models
#

roles_users = db.Table(
    'roles_users', db.Column('user_id', db.Integer(),
                             db.ForeignKey('user.id')),
    db.Column('role_id', db.Integer(), db.ForeignKey('role.id')))


class Role(db.Model, RoleMixin):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))

    @classmethod
    def from_name(cls, session, name):
        return session.query(cls).filter(cls.name == name).first()

    def __str__(self):
        return self.name
Beispiel #8
0
class AMWallet(db.Model):
    __tablename__ = 'amwallet'
    id = db.Column(db.Integer(), primary_key=True)
    address = db.Column(db.String(), unique=True)

    def __init__(self, address):
        self.address = address

    @classmethod
    def from_address(cls, session, address):
        return session.query(cls).filter(cls.address == address).first()

    @classmethod
    def with_multiple_devices(cls, session):
        ids = []
        for wallet in session.query(cls).join(cls.devices).group_by(
                cls.id).having(func.count(AMDevice.id) > 1):
            ids.append(wallet.id)
        return session.query(cls).filter(cls.id.in_(ids))

    @classmethod
    def initialize_wallet_addresses(cls, session):
        # update txs
        addrs = {}
        try:
            node = cfg.node_http_base_url[:-1]
            issuer_addr = issuer_address(node, cfg.asset_id)
            if not issuer_addr:
                return False
            limit = 1000
            oldest_txid = None
            txs_count = None
            txs = []
            while True:
                have_tx = False
                txs = blockchain_transactions(node, issuer_addr, limit,
                                              oldest_txid)
                for tx in txs:
                    oldest_txid = tx["id"]
                    if tx["type"] == 4 and tx["assetId"] == cfg.asset_id:
                        if 'sender' in tx:
                            addrs[tx['sender']] = 1
                        if 'recipient' in tx:
                            addrs[tx['recipient']] = 1
                # reached end of transaction history for this address
                if len(txs) < limit:
                    break
        except requests.exceptions.ConnectionError as ex:
            logger.error(ex)
            return False
        # create all the AMWallet and AMDevice db entries
        for key, value in addrs.items():
            wallet = AMWallet(key)
            session.add(wallet)
            session.add(
                AMDevice(wallet, 'n/a', 'n/a', 'n/a', 'n/a', 'n/a', 'n/a'))
        session.commit()
        return True

    @classmethod
    def is_empty(cls, session):
        return not session.query(cls).first()

    def __repr__(self):
        return "<AMWallet %r>" % (self.address)
Beispiel #9
0
### helper functions/classes


class ReloadingIterator:
    def __init__(self, iterator_factory):
        self.iterator_factory = iterator_factory

    def __iter__(self):
        return self.iterator_factory()


### Define zapsend models

roles_users = db.Table(
    'roles_users', db.Column('user_id', db.Integer(),
                             db.ForeignKey('user.id')),
    db.Column('role_id', db.Integer(), db.ForeignKey('role.id')))


class Role(db.Model, RoleMixin):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))

    @classmethod
    def from_name(cls, session, name):
        return session.query(cls).filter(cls.name == name).first()

    def __str__(self):
        return self.name
Beispiel #10
0
logger = logging.getLogger(__name__)

### helper functions/classes

class ReloadingIterator:
    def __init__(self, iterator_factory):
        self.iterator_factory = iterator_factory

    def __iter__(self):
        return self.iterator_factory()

### Define premio stage models

roles_users = db.Table(
    'roles_users',
    db.Column('user_id', db.Integer(), db.ForeignKey('user.id')),
    db.Column('role_id', db.Integer(), db.ForeignKey('role.id'))
)

class Role(db.Model, RoleMixin):
    ROLE_ADMIN = 'admin'
    ROLE_PROPOSER = 'proposer'
    ROLE_AUTHORIZER = 'authorizer'
    ROLE_REFERRAL_CLAIMER = 'referral_claimer'

    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))

    @classmethod
    def from_name(cls, session, name):