Fix Misc Bugs (#106)
* consider all proposals to be staked * allow proposal titles to wrap * rejected -> changes requested * allow empty strings as tip addresses
This commit is contained in:
parent
7e7650eeae
commit
96d0b9e30e
|
@ -717,12 +717,7 @@ class Proposal(db.Model):
|
||||||
|
|
||||||
@hybrid_property
|
@hybrid_property
|
||||||
def is_staked(self):
|
def is_staked(self):
|
||||||
# Don't use self.contributed since that ignores stake contributions
|
return True
|
||||||
contributions = ProposalContribution.query \
|
|
||||||
.filter_by(proposal_id=self.id, status=ContributionStatus.CONFIRMED) \
|
|
||||||
.all()
|
|
||||||
funded = reduce(lambda prev, c: prev + Decimal(c.amount), contributions, 0)
|
|
||||||
return Decimal(funded) >= PROPOSAL_STAKING_AMOUNT
|
|
||||||
|
|
||||||
@hybrid_property
|
@hybrid_property
|
||||||
def is_funded(self):
|
def is_funded(self):
|
||||||
|
|
|
@ -264,12 +264,14 @@ def update_proposal(milestones, proposal_id, rfp_opt_in, **kwargs):
|
||||||
@blueprint.route("/<proposal_id>/tips", methods=["PUT"])
|
@blueprint.route("/<proposal_id>/tips", methods=["PUT"])
|
||||||
@requires_team_member_auth
|
@requires_team_member_auth
|
||||||
@body({
|
@body({
|
||||||
"address": fields.Str(required=False, missing=None,
|
"address": fields.Str(required=False, missing=None),
|
||||||
validate=lambda r: validate_blockchain_get('/validate/address', {'address': r})),
|
|
||||||
"viewKey": fields.Str(required=False, missing=None)
|
"viewKey": fields.Str(required=False, missing=None)
|
||||||
})
|
})
|
||||||
def update_proposal_tip_jar(proposal_id, address, view_key):
|
def update_proposal_tip_jar(proposal_id, address, view_key):
|
||||||
if address is not None:
|
if address is not None:
|
||||||
|
if address is not '':
|
||||||
|
validate_blockchain_get('/validate/address', {'address': address})
|
||||||
|
|
||||||
g.current_proposal.tip_jar_address = address
|
g.current_proposal.tip_jar_address = address
|
||||||
if view_key is not None:
|
if view_key is not None:
|
||||||
g.current_proposal.tip_jar_view_key = view_key
|
g.current_proposal.tip_jar_view_key = view_key
|
||||||
|
|
|
@ -365,8 +365,7 @@ def get_user_settings(user_id):
|
||||||
"emailSubscriptions": fields.Dict(required=False, missing=None),
|
"emailSubscriptions": fields.Dict(required=False, missing=None),
|
||||||
"refundAddress": fields.Str(required=False, missing=None,
|
"refundAddress": fields.Str(required=False, missing=None,
|
||||||
validate=lambda r: validate_blockchain_get('/validate/address', {'address': r})),
|
validate=lambda r: validate_blockchain_get('/validate/address', {'address': r})),
|
||||||
"tipJarAddress": fields.Str(required=False, missing=None,
|
"tipJarAddress": fields.Str(required=False, missing=None),
|
||||||
validate=lambda r: validate_blockchain_get('/validate/address', {'address': r})),
|
|
||||||
"tipJarViewKey": fields.Str(required=False, missing=None) # TODO: add viewkey validation here
|
"tipJarViewKey": fields.Str(required=False, missing=None) # TODO: add viewkey validation here
|
||||||
})
|
})
|
||||||
def set_user_settings(user_id, email_subscriptions, refund_address, tip_jar_address, tip_jar_view_key):
|
def set_user_settings(user_id, email_subscriptions, refund_address, tip_jar_address, tip_jar_view_key):
|
||||||
|
@ -382,8 +381,10 @@ def set_user_settings(user_id, email_subscriptions, refund_address, tip_jar_addr
|
||||||
if refund_address:
|
if refund_address:
|
||||||
g.current_user.settings.refund_address = refund_address
|
g.current_user.settings.refund_address = refund_address
|
||||||
|
|
||||||
# TODO: is additional validation needed similar to refund_address?
|
|
||||||
if tip_jar_address is not None:
|
if tip_jar_address is not None:
|
||||||
|
if tip_jar_address is not '':
|
||||||
|
validate_blockchain_get('/validate/address', {'address': tip_jar_address})
|
||||||
|
|
||||||
g.current_user.settings.tip_jar_address = tip_jar_address
|
g.current_user.settings.tip_jar_address = tip_jar_address
|
||||||
if tip_jar_view_key is not None:
|
if tip_jar_view_key is not None:
|
||||||
g.current_user.settings.tip_jar_view_key = tip_jar_view_key
|
g.current_user.settings.tip_jar_view_key = tip_jar_view_key
|
||||||
|
|
|
@ -39,10 +39,10 @@ class ProfilePendingCCR extends React.Component<Props, State> {
|
||||||
const st = {
|
const st = {
|
||||||
[STATUS.REJECTED]: {
|
[STATUS.REJECTED]: {
|
||||||
color: 'red',
|
color: 'red',
|
||||||
tag: 'Rejected',
|
tag: 'Changes Requested',
|
||||||
blurb: (
|
blurb: (
|
||||||
<>
|
<>
|
||||||
<div>This request was rejected for the following reason:</div>
|
<div>This request has changes requested for the following reason:</div>
|
||||||
<q>{rejectReason}</q>
|
<q>{rejectReason}</q>
|
||||||
<div>You may edit this request and re-submit it for approval.</div>
|
<div>You may edit this request and re-submit it for approval.</div>
|
||||||
</>
|
</>
|
||||||
|
@ -50,7 +50,7 @@ class ProfilePendingCCR extends React.Component<Props, State> {
|
||||||
},
|
},
|
||||||
[STATUS.PENDING]: {
|
[STATUS.PENDING]: {
|
||||||
color: 'purple',
|
color: 'purple',
|
||||||
tag: 'Pending',
|
tag: 'Pending Request',
|
||||||
blurb: (
|
blurb: (
|
||||||
<div>
|
<div>
|
||||||
You will receive an email when this request has completed the review process.
|
You will receive an email when this request has completed the review process.
|
||||||
|
@ -63,7 +63,7 @@ class ProfilePendingCCR extends React.Component<Props, State> {
|
||||||
<div className="ProfilePending">
|
<div className="ProfilePending">
|
||||||
<div className="ProfilePending-block">
|
<div className="ProfilePending-block">
|
||||||
<Link to={`/ccrs/${ccrId}`} className="ProfilePending-title">
|
<Link to={`/ccrs/${ccrId}`} className="ProfilePending-title">
|
||||||
{title} <Tag color={st[status].color}>{st[status].tag} Request</Tag>
|
{title} <Tag color={st[status].color}>{st[status].tag}</Tag>
|
||||||
</Link>
|
</Link>
|
||||||
<div className={`ProfilePending-status is-${status.toLowerCase()}`}>
|
<div className={`ProfilePending-status is-${status.toLowerCase()}`}>
|
||||||
{st[status].blurb}
|
{st[status].blurb}
|
||||||
|
|
|
@ -81,8 +81,7 @@
|
||||||
|
|
||||||
@media (min-width: @collapse-width) {
|
@media (min-width: @collapse-width) {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
white-space: nowrap;
|
text-overflow: unset;
|
||||||
text-overflow: ellipsis;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: @collapse-width) {
|
@media (max-width: @collapse-width) {
|
||||||
|
|
Loading…
Reference in New Issue