mirror of
https://git.wownero.com/wownero/wownero-funding-system.git
synced 2024-08-15 00:53:45 +00:00
Added database schema to keep track of payouts
This commit is contained in:
parent
4044c5c644
commit
4851805fd0
2 changed files with 38 additions and 1 deletions
|
@ -99,6 +99,8 @@ class Proposal(base):
|
|||
user_id = sa.Column(sa.Integer, sa.ForeignKey('users.user_id'))
|
||||
user = relationship("User", back_populates="proposals")
|
||||
|
||||
payouts = relationship("Payout", back_populates="proposal")
|
||||
|
||||
def __init__(self, headline, content, category, user: User):
|
||||
if not headline or not content:
|
||||
raise Exception('faulty proposal')
|
||||
|
@ -228,3 +230,38 @@ class Proposal(base):
|
|||
Proposal.headline.ilike(key_ilike),
|
||||
Proposal.content.ilike(key_ilike)))
|
||||
return q.all()
|
||||
|
||||
|
||||
class Payout(base):
|
||||
__tablename__ = "payouts"
|
||||
id = sa.Column(sa.Integer, primary_key=True)
|
||||
|
||||
proposal_id = sa.Column(sa.Integer, sa.ForeignKey('proposals.id'))
|
||||
proposal = relationship("Proposal", back_populates="payouts")
|
||||
|
||||
amount = sa.Column(sa.Integer, nullable=False)
|
||||
to_address = sa.Column(sa.VARCHAR, nullable=False)
|
||||
|
||||
ix_proposal_id = sa.Index("ix_proposal_id", proposal_id)
|
||||
|
||||
@classmethod
|
||||
def add(cls, proposal_id, amount, to_address):
|
||||
# @TODO: validate that we can make this payout; check previous payouts
|
||||
from flask.ext.login import current_user
|
||||
if not current_user.admin:
|
||||
raise Exception("user must be admin to add a payout")
|
||||
from wowfunding.factory import db_session
|
||||
|
||||
try:
|
||||
payout = Payout(propsal_id=proposal_id, amount=amount, to_address=to_address)
|
||||
db_session.add(payout)
|
||||
db_session.commit()
|
||||
db_session.flush()
|
||||
return payout
|
||||
except Exception as ex:
|
||||
db_session.rollback()
|
||||
raise
|
||||
|
||||
@staticmethod
|
||||
def get_payouts(proposal_id):
|
||||
return db_session.query(Payout).filter(Payout.proposal_id == proposal_id).all()
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from datetime import datetime
|
||||
from flask import request, redirect, Response, abort, render_template, url_for, flash, make_response, send_from_directory, jsonify
|
||||
from flask.ext.login import login_user , logout_user , current_user , login_required, current_user
|
||||
from flask.ext.login import login_user , logout_user , current_user, login_required, current_user
|
||||
from flask_yoloapi import endpoint, parameter
|
||||
|
||||
import settings
|
||||
|
|
Loading…
Reference in a new issue