Donation link within profile

main2
Bob Mottram 2019-11-06 22:56:55 +00:00
parent a1a8f31693
commit a0d7759567
17 changed files with 108 additions and 15 deletions

View File

@ -23,6 +23,8 @@ from session import createSession
from webfinger import webfingerMeta
from webfinger import webfingerLookup
from webfinger import webfingerHandle
from person import getDonationUrl
from person import setDonationUrl
from person import activateAccount
from person import deactivateAccount
from person import registerAccount
@ -3224,6 +3226,11 @@ class PubServer(BaseHTTPRequestHandler):
if fields['displayNickname']!=actorJson['name']:
actorJson['name']=fields['displayNickname']
actorChanged=True
if fields.get('donateUrl'):
currentDonateUrl=getDonationUrl(actorJson)
if fields['donateUrl']!=currentDonateUrl:
setDonationUrl(actorJson,fields['donateUrl'])
actorChanged=True
if fields.get('bio'):
if fields['bio']!=actorJson['summary']:
actorTags={}

View File

@ -835,3 +835,70 @@ def personUnsnooze(baseDir: str,nickname: str,domain: str,snoozeActor: str) -> N
if writeSnoozedFile:
writeSnoozedFile.write(content)
writeSnoozedFile.close()
def getDonationTypes() -> str:
return ('patreon','paypal','gofundme','liberapay')
def getDonationUrl(actorJson: {}) -> str:
"""Returns a link used for donations
"""
if not actorJson.get('attachment'):
return ''
donationType=getDonationTypes()
for propertyValue in actorJson['attachment']:
if not propertyValue.get('name'):
continue
if propertyValue['name'].lower() not in donationType:
continue
if not propertyValue.get('type'):
continue
if not propertyValue.get('value'):
continue
if propertyValue['type']!='PropertyValue':
continue
if '<a href="' not in propertyValue['value']:
continue
donateUrl=value.split('<a href="')[1]
if '"' in donateUrl:
return donateUrl.split('"')[0]
return ''
def setDonationUrl(actorJson: {},donateUrl: str) -> None:
"""Sets a link used for donations
"""
if not actorJson.get('attachment'):
actorJson['attachment']=[]
donateName=None
if 'patreon' in donateUrl:
donateName='Patreon'
elif 'gofundme' in donateUrl:
donateName='GoFundMe'
elif 'liberapay' in donateUrl:
donateName='LiberaPay'
elif 'paypal' in donateUrl:
donateName='PayPal'
else:
return
donateValue='<a href="'+donateUrl+'" rel="me nofollow noopener noreferrer" target="_blank">'+donateUrl+'</a>'
for propertyValue in actorJson['attachment']:
if not propertyValue.get('name'):
continue
if not propertyValue.get('type'):
continue
if propertyValue['name']!=donateName:
continue
if propertyValue['type']!='PropertyValue':
continue
propertyValue['value']=donateValue
return
newDonate={
"name": donateName,
"type": "PropertyValue",
"value": donateValue
}
actorJson['attachment'].append(newDonate)

View File

@ -169,5 +169,6 @@
"Danger Zone": "Danger Zone",
"Deactivate this account": "Deactivate this account",
"Snooze": "Snooze",
"Unsnooze": "Unsnooze"
"Unsnooze": "Unsnooze",
"Donations link": "Donations link"
}

View File

@ -169,5 +169,6 @@
"Danger Zone": "Danger Zone",
"Deactivate this account": "Deactivate this account",
"Snooze": "Snooze",
"Unsnooze": "Unsnooze"
"Unsnooze": "Unsnooze",
"Donations link": "Donations link"
}

View File

@ -169,5 +169,6 @@
"Danger Zone": "Danger Zone",
"Deactivate this account": "Deactivate this account",
"Snooze": "Snooze",
"Unsnooze": "Unsnooze"
"Unsnooze": "Unsnooze",
"Donations link": "Donations link"
}

View File

@ -169,5 +169,6 @@
"Danger Zone": "Danger Zone",
"Deactivate this account": "Deactivate this account",
"Snooze": "Snooze",
"Unsnooze": "Unsnooze"
"Unsnooze": "Unsnooze",
"Donations link": "Donations link"
}

View File

@ -169,5 +169,6 @@
"Danger Zone": "Danger Zone",
"Deactivate this account": "Deactivate this account",
"Snooze": "Snooze",
"Unsnooze": "Unsnooze"
"Unsnooze": "Unsnooze",
"Donations link": "Donations link"
}

View File

@ -169,5 +169,6 @@
"Danger Zone": "Danger Zone",
"Deactivate this account": "Deactivate this account",
"Snooze": "Snooze",
"Unsnooze": "Unsnooze"
"Unsnooze": "Unsnooze",
"Donations link": "Donations link"
}

View File

@ -169,5 +169,6 @@
"Danger Zone": "Danger Zone",
"Deactivate this account": "Deactivate this account",
"Snooze": "Snooze",
"Unsnooze": "Unsnooze"
"Unsnooze": "Unsnooze",
"Donations link": "Donations link"
}

View File

@ -169,5 +169,6 @@
"Danger Zone": "Danger Zone",
"Deactivate this account": "Deactivate this account",
"Snooze": "Snooze",
"Unsnooze": "Unsnooze"
"Unsnooze": "Unsnooze",
"Donations link": "Donations link"
}

View File

@ -169,5 +169,6 @@
"Danger Zone": "Danger Zone",
"Deactivate this account": "Deactivate this account",
"Snooze": "Snooze",
"Unsnooze": "Unsnooze"
"Unsnooze": "Unsnooze",
"Donations link": "Donations link"
}

View File

@ -169,5 +169,6 @@
"Danger Zone": "Danger Zone",
"Deactivate this account": "Deactivate this account",
"Snooze": "Snooze",
"Unsnooze": "Unsnooze"
"Unsnooze": "Unsnooze",
"Donations link": "Donations link"
}

View File

@ -169,5 +169,6 @@
"Danger Zone": "Danger Zone",
"Deactivate this account": "Deactivate this account",
"Snooze": "Snooze",
"Unsnooze": "Unsnooze"
"Unsnooze": "Unsnooze",
"Donations link": "Donations link"
}

View File

@ -169,5 +169,6 @@
"Danger Zone": "Danger Zone",
"Deactivate this account": "Deactivate this account",
"Snooze": "Snooze",
"Unsnooze": "Unsnooze"
"Unsnooze": "Unsnooze",
"Donations link": "Donations link"
}

View File

@ -169,5 +169,6 @@
"Danger Zone": "Danger Zone",
"Deactivate this account": "Deactivate this account",
"Snooze": "Snooze",
"Unsnooze": "Unsnooze"
"Unsnooze": "Unsnooze",
"Donations link": "Donations link"
}

View File

@ -169,5 +169,6 @@
"Danger Zone": "Danger Zone",
"Deactivate this account": "Deactivate this account",
"Snooze": "Snooze",
"Unsnooze": "Unsnooze"
"Unsnooze": "Unsnooze",
"Donations link": "Donations link"
}

View File

@ -19,6 +19,7 @@ from shutil import copyfileobj
from pprint import pprint
from person import personBoxJson
from person import isPersonSnoozed
from person import getDonationUrl
from utils import getNicknameFromActor
from utils import getDomainFromActor
from utils import locatePost
@ -528,9 +529,11 @@ def htmlEditProfile(translate: {},baseDir: str,path: str,domain: str,port: int)
followDMs=''
displayNickname=nickname
bioStr=''
donateUrl=''
manuallyApprovesFollowers=''
actorJson=loadJson(actorFilename)
if actorJson:
donateUrl=getDonationUrl(actorJson)
if actorJson.get('name'):
displayNickname=actorJson['name']
if actorJson.get('summary'):
@ -612,7 +615,9 @@ def htmlEditProfile(translate: {},baseDir: str,path: str,domain: str,port: int)
' </div>'+ \
' <div class="container">' \
' <input type="text" placeholder="name" name="displayNickname" value="'+displayNickname+'">' \
' <textarea id="message" name="bio" placeholder="'+translate['Your bio']+'..." style="height:200px">'+bioStr+'</textarea>' \
' <textarea id="message" name="bio" placeholder="'+translate['Your bio']+'..." style="height:200px">'+bioStr+'</textarea>'+ \
translate['Donations link']+'<br>'+ \
' <input type="text" placeholder="https://..." name="donateUrl" value="'+donateUrl+'">' \
' </div>' \
' <div class="container">' \
' '+translate['The files attached below should be no larger than 10MB in total uploaded at once.']+'<br>' \