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:
Danny Skubak 2019-12-09 17:00:01 -05:00 committed by Daniel Ternyak
parent 7e7650eeae
commit 96d0b9e30e
5 changed files with 14 additions and 17 deletions

View File

@ -717,12 +717,7 @@ class Proposal(db.Model):
@hybrid_property
def is_staked(self):
# Don't use self.contributed since that ignores stake contributions
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
return True
@hybrid_property
def is_funded(self):

View File

@ -264,12 +264,14 @@ def update_proposal(milestones, proposal_id, rfp_opt_in, **kwargs):
@blueprint.route("/<proposal_id>/tips", methods=["PUT"])
@requires_team_member_auth
@body({
"address": fields.Str(required=False, missing=None,
validate=lambda r: validate_blockchain_get('/validate/address', {'address': r})),
"address": fields.Str(required=False, missing=None),
"viewKey": fields.Str(required=False, missing=None)
})
def update_proposal_tip_jar(proposal_id, address, view_key):
if address is not None:
if address is not '':
validate_blockchain_get('/validate/address', {'address': address})
g.current_proposal.tip_jar_address = address
if view_key is not None:
g.current_proposal.tip_jar_view_key = view_key

View File

@ -365,8 +365,7 @@ def get_user_settings(user_id):
"emailSubscriptions": fields.Dict(required=False, missing=None),
"refundAddress": fields.Str(required=False, missing=None,
validate=lambda r: validate_blockchain_get('/validate/address', {'address': r})),
"tipJarAddress": fields.Str(required=False, missing=None,
validate=lambda r: validate_blockchain_get('/validate/address', {'address': r})),
"tipJarAddress": fields.Str(required=False, missing=None),
"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):
@ -382,8 +381,10 @@ def set_user_settings(user_id, email_subscriptions, refund_address, tip_jar_addr
if 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 '':
validate_blockchain_get('/validate/address', {'address': tip_jar_address})
g.current_user.settings.tip_jar_address = tip_jar_address
if tip_jar_view_key is not None:
g.current_user.settings.tip_jar_view_key = tip_jar_view_key

View File

@ -39,10 +39,10 @@ class ProfilePendingCCR extends React.Component<Props, State> {
const st = {
[STATUS.REJECTED]: {
color: 'red',
tag: 'Rejected',
tag: 'Changes Requested',
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>
<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]: {
color: 'purple',
tag: 'Pending',
tag: 'Pending Request',
blurb: (
<div>
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-block">
<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>
<div className={`ProfilePending-status is-${status.toLowerCase()}`}>
{st[status].blurb}

View File

@ -81,8 +81,7 @@
@media (min-width: @collapse-width) {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
text-overflow: unset;
}
@media (max-width: @collapse-width) {