Esempio n. 1
0
class Star:
    lum = 0
    rad = 0
    temp = 0
    mass = 0
    age = 0
    color = None
    maturity = None

    def __init__(self, lum, rad, temp, mass):
        (self.lum, self.rad, self.temp, self.mass) = (lum, rad, temp, mass)
        self.maturity = Maturity(self)
        self.color = calc_color(self.temp)

    def __str__(self):
        return (f"luminosity: {round(self.lum, N_DEC)}\n"
                f"radius: {round(self.rad, N_DEC)}\n"
                f"temp: {round(self.temp, N_DEC)}\n"
                f"age: {round(self.age, N_DEC)}\n"
                f"mass: {round(self.mass, N_DEC)}\n"
                f"stage: {self.maturity.__str__()}\n")

    def grow_up(self):
        self.maturity.grow_star()
        self.color = calc_color(self.temp)
Esempio n. 2
0
 def filter(cls, pid=None, account=None, issue=None):
     (all_pids, all_accounts, all_issues) = (False, False, False)
     if not pid:
         all_pids = True
     if account:
         uid = account.id
     else: 
         uid = None
         all_accounts = True
     if issue:
         iid = issue.id
     else:
         iid = None
         all_issues = True
     result = []
     with cls.db.conn.cursor() as curs:
         curs.execute('''SELECT maturity.id, maturity.matures, contract_type.id,
                         contract_type.issue, issue.url, issue.title,
                         position.account, position.quantity, position.basis,
                         position.created, position.modified, position.id
                         FROM maturity JOIN contract_type ON maturity.id = contract_type.matures
                         JOIN issue ON issue.id = contract_type.issue
                         JOIN position ON contract_type.id = position.contract_type
                         WHERE (position.id = %s OR %s)
                         AND (account = %s OR %s)
                         AND (issue = %s OR %s)
                         ''', (pid, all_pids, uid, all_accounts, iid, all_issues))
         for row in curs.fetchall():
             (mid, matures, cid, iid, url, title, uid, quantity, basis, created, modified, pid) = row
             account = Account(uid=uid)
             issue = Issue(url=url, iid=iid, title=title)
             maturity = Maturity(matures, mid)
             ctype = ContractType(issue, maturity, cid)
             result.append(cls(pid, account, ctype, quantity, basis, created, modified))
     return result
Esempio n. 3
0
    def filter(cls, account=None, issue=None, ticker=False):
        all_events = not ticker
        (all_accounts, all_issues) = (False, False)
        if issue:
            iid = issue.id
        else:
            iid = None
            all_issues = True
        if account:
            uid = account.id
        else:
            uid = None
            all_accounts = True

        result = []
        # Cursor object for the database driver. Database can have different
        # queries. curs points to this particular query. curs.execute runs a
        # SQL statement that you pass to the database. The result of this
        # execution can then be "fetched".
        with cls.db.conn.cursor() as curs:
            curs.execute(
                '''SELECT issue, url, title, maturity, matures,
                            id, class, created,
                            contract_type, side, price, quantity, message
                            FROM message_overview
                            WHERE (%s OR issue = %s)
                            AND (%s OR recipient = %s)
                            AND (%s OR (side = true AND
                                (class = 'contract_created' OR class = 'contract_resolved')
                                AND quantity > 0))
                            ORDER BY created DESC''',
                (all_issues, iid, all_accounts, uid, all_events))
            for row in curs.fetchall():
                (iid, url, title, maturity_id, matures, mid, mclass, created,
                 cid, side, price, quantity, text) = row
                if ticker and (not url or not title or not matures
                               or not maturity_id):
                    pass
                    # continue #FIXME
                (issue, maturity, contract_type) = (None, None, None)
                if iid:
                    issue = Issue(iid=iid, url=url, title=title)
                if maturity_id and matures:
                    maturity = Maturity(matures, maturity_id)
                if issue and maturity:
                    contract_type = ContractType(issue, maturity, cid=cid)
                result.append(
                    cls(mclass,
                        account=account,
                        contract_type=contract_type,
                        side=side,
                        price=price,
                        quantity=quantity,
                        text=text,
                        created=created,
                        mid=mid))
            return result
Esempio n. 4
0
 def lookup(cls, iid, mid):
     with cls.db.conn.cursor() as curs:
         curs.execute(
             '''INSERT INTO contract_type (issue, matures) VALUES (%s, %s)
                         ON CONFLICT (issue, matures) DO UPDATE set matures = %s RETURNING id''',
             (iid, mid, mid))
         cid = curs.fetchone()[0]
         curs.execute(
             '''SELECT maturity.matures, issue.url, issue.title
                         FROM maturity JOIN contract_type on maturity.id = contract_type.matures
                         JOIN issue ON issue.id = contract_type.issue
                         WHERE contract_type.id = %s''', (cid, ))
         (matures, url, title) = curs.fetchone()
         issue = Issue(url=url, iid=iid, title=title)
         maturity = Maturity(matures, mid)
         return cls(issue, maturity, cid)
Esempio n. 5
0
 def resolvable(cls):
     result = []
     with cls.db.conn.cursor() as curs:
         curs.execute(
             '''SELECT DISTINCT maturity.matures, maturity.id, issue.url, issue.title, issue.id, contract_type.id
                         FROM maturity JOIN contract_type on maturity.id = contract_type.matures
                         JOIN issue ON issue.id = contract_type.issue
                         JOIN position ON contract_type.id = position.contract_type
                         WHERE maturity.matures < NOW()
                         ORDER BY maturity.matures''')
         for row in curs.fetchall():
             (matures, mid, url, title, iid, cid) = row
             issue = Issue(url=url, iid=iid, title=title)
             maturity = Maturity(matures, mid)
             result.append(cls(issue, maturity, cid))
     return result
Esempio n. 6
0
 def __init__(self, lum, rad, temp, mass):
     (self.lum, self.rad, self.temp, self.mass) = (lum, rad, temp, mass)
     self.maturity = Maturity(self)
     self.color = calc_color(self.temp)