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_id = sa.Column(sa.Integer, sa.ForeignKey('users.user_id'))
|
||||||
user = relationship("User", back_populates="proposals")
|
user = relationship("User", back_populates="proposals")
|
||||||
|
|
||||||
|
payouts = relationship("Payout", back_populates="proposal")
|
||||||
|
|
||||||
def __init__(self, headline, content, category, user: User):
|
def __init__(self, headline, content, category, user: User):
|
||||||
if not headline or not content:
|
if not headline or not content:
|
||||||
raise Exception('faulty proposal')
|
raise Exception('faulty proposal')
|
||||||
|
@ -228,3 +230,38 @@ class Proposal(base):
|
||||||
Proposal.headline.ilike(key_ilike),
|
Proposal.headline.ilike(key_ilike),
|
||||||
Proposal.content.ilike(key_ilike)))
|
Proposal.content.ilike(key_ilike)))
|
||||||
return q.all()
|
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 datetime import datetime
|
||||||
from flask import request, redirect, Response, abort, render_template, url_for, flash, make_response, send_from_directory, jsonify
|
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
|
from flask_yoloapi import endpoint, parameter
|
||||||
|
|
||||||
import settings
|
import settings
|
||||||
|
|
Loading…
Reference in a new issue