Skip to content

Commit

Permalink
Better Skeleton
Browse files Browse the repository at this point in the history
  • Loading branch information
super3 committed Oct 14, 2015
1 parent 654951c commit 3191fd3
Showing 1 changed file with 40 additions and 14 deletions.
54 changes: 40 additions & 14 deletions dataserv/Audit.py
Expand Up @@ -2,13 +2,14 @@
from sqlalchemy import DateTime
from dataserv.run import db, app
from btctxstore import BtcTxStore
from dataserv.Farmer import Farmer

from dataserv.config import logging
logger = logging.getLogger(__name__)
is_btc_address = BtcTxStore().validate_address


class Farmer(db.Model):
class Audit(db.Model):
id = db.Column(db.Integer, primary_key=True)

btc_addr = db.Column(db.String(35))
Expand All @@ -19,16 +20,41 @@ class Farmer(db.Model):


def __init__(self, btc_addr, block):
"""
A farmer is a un-trusted client that provides some disk space
in exchange for payment. We use this object to keep track of
farmers connected to this node.
"""

if not is_btc_address(btc_addr):
msg = "Invalid BTC Address: {0}".format(btc_addr)
logger.warning(msg)
raise ValueError(msg)
self.btc_addr = btc_addr
self.block = block
if not is_btc_address(btc_addr):
msg = "Invalid BTC Address: {0}".format(btc_addr)
logger.warning(msg)
raise ValueError(msg)
if not Farmer(btc_addr).exists():
msg = "Farmer Not Found: {0}".format(btc_addr)
logger.warning(msg)
raise LookupError(msg)
if self.exists():
msg = "Audit already submitted for that block."
logger.warning(msg)
raise IndexError(msg)

self.btc_addr = btc_addr
self.block = block


def save(self):
db.session.add(self)
db.session.commit()


def exists(self):
"""Check to see if this address is already listed."""
return Audit.query.filter(Audit.btc_addr == self.btc_addr, Audit.block ==
self.block).count() > 0


def lookup(self):
"""Return the Farmer object for the bitcoin address passed."""
audit = Audit.query.filter_by(btc_addr=self.btc_addr,
block=self.block).first()
if not audit:
msg = "Block {0} Audit Missing: {1}".format(self.block, self.btc_addr)
logger.warning(msg)
raise LookupError(msg)

return audit

0 comments on commit 3191fd3

Please sign in to comment.