diff --git a/daemon.py b/daemon.py index 971271240..60b2ccff2 100644 --- a/daemon.py +++ b/daemon.py @@ -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={} diff --git a/person.py b/person.py index 242dc5007..feba84ce0 100644 --- a/person.py +++ b/person.py @@ -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 ' 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=''+donateUrl+'' + + 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) diff --git a/translations/ar.json b/translations/ar.json index e572557db..aa58da38a 100644 --- a/translations/ar.json +++ b/translations/ar.json @@ -169,5 +169,6 @@ "Danger Zone": "Danger Zone", "Deactivate this account": "Deactivate this account", "Snooze": "Snooze", - "Unsnooze": "Unsnooze" + "Unsnooze": "Unsnooze", + "Donations link": "Donations link" } diff --git a/translations/ca.json b/translations/ca.json index 6250bc0f2..a32658108 100644 --- a/translations/ca.json +++ b/translations/ca.json @@ -169,5 +169,6 @@ "Danger Zone": "Danger Zone", "Deactivate this account": "Deactivate this account", "Snooze": "Snooze", - "Unsnooze": "Unsnooze" + "Unsnooze": "Unsnooze", + "Donations link": "Donations link" } diff --git a/translations/cy.json b/translations/cy.json index 86172a02b..3a20e6388 100644 --- a/translations/cy.json +++ b/translations/cy.json @@ -169,5 +169,6 @@ "Danger Zone": "Danger Zone", "Deactivate this account": "Deactivate this account", "Snooze": "Snooze", - "Unsnooze": "Unsnooze" + "Unsnooze": "Unsnooze", + "Donations link": "Donations link" } diff --git a/translations/de.json b/translations/de.json index 436056d7e..fe857de94 100644 --- a/translations/de.json +++ b/translations/de.json @@ -169,5 +169,6 @@ "Danger Zone": "Danger Zone", "Deactivate this account": "Deactivate this account", "Snooze": "Snooze", - "Unsnooze": "Unsnooze" + "Unsnooze": "Unsnooze", + "Donations link": "Donations link" } diff --git a/translations/en.json b/translations/en.json index 52b0397cf..3aa6a2ec7 100644 --- a/translations/en.json +++ b/translations/en.json @@ -169,5 +169,6 @@ "Danger Zone": "Danger Zone", "Deactivate this account": "Deactivate this account", "Snooze": "Snooze", - "Unsnooze": "Unsnooze" + "Unsnooze": "Unsnooze", + "Donations link": "Donations link" } diff --git a/translations/es.json b/translations/es.json index 921498953..8802e7d0c 100644 --- a/translations/es.json +++ b/translations/es.json @@ -169,5 +169,6 @@ "Danger Zone": "Danger Zone", "Deactivate this account": "Deactivate this account", "Snooze": "Snooze", - "Unsnooze": "Unsnooze" + "Unsnooze": "Unsnooze", + "Donations link": "Donations link" } diff --git a/translations/fr.json b/translations/fr.json index 1d8b97430..9e74f1f45 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -169,5 +169,6 @@ "Danger Zone": "Danger Zone", "Deactivate this account": "Deactivate this account", "Snooze": "Snooze", - "Unsnooze": "Unsnooze" + "Unsnooze": "Unsnooze", + "Donations link": "Donations link" } diff --git a/translations/ga.json b/translations/ga.json index eb294b6b9..5e2d38aee 100644 --- a/translations/ga.json +++ b/translations/ga.json @@ -169,5 +169,6 @@ "Danger Zone": "Danger Zone", "Deactivate this account": "Deactivate this account", "Snooze": "Snooze", - "Unsnooze": "Unsnooze" + "Unsnooze": "Unsnooze", + "Donations link": "Donations link" } diff --git a/translations/hi.json b/translations/hi.json index 9463a9134..436669c4a 100644 --- a/translations/hi.json +++ b/translations/hi.json @@ -169,5 +169,6 @@ "Danger Zone": "Danger Zone", "Deactivate this account": "Deactivate this account", "Snooze": "Snooze", - "Unsnooze": "Unsnooze" + "Unsnooze": "Unsnooze", + "Donations link": "Donations link" } diff --git a/translations/it.json b/translations/it.json index 0ec4ecb6a..d6107f661 100644 --- a/translations/it.json +++ b/translations/it.json @@ -169,5 +169,6 @@ "Danger Zone": "Danger Zone", "Deactivate this account": "Deactivate this account", "Snooze": "Snooze", - "Unsnooze": "Unsnooze" + "Unsnooze": "Unsnooze", + "Donations link": "Donations link" } diff --git a/translations/ja.json b/translations/ja.json index 9a82cc35c..046657cf3 100644 --- a/translations/ja.json +++ b/translations/ja.json @@ -169,5 +169,6 @@ "Danger Zone": "Danger Zone", "Deactivate this account": "Deactivate this account", "Snooze": "Snooze", - "Unsnooze": "Unsnooze" + "Unsnooze": "Unsnooze", + "Donations link": "Donations link" } diff --git a/translations/pt.json b/translations/pt.json index 5f47957a5..3bfb366ec 100644 --- a/translations/pt.json +++ b/translations/pt.json @@ -169,5 +169,6 @@ "Danger Zone": "Danger Zone", "Deactivate this account": "Deactivate this account", "Snooze": "Snooze", - "Unsnooze": "Unsnooze" + "Unsnooze": "Unsnooze", + "Donations link": "Donations link" } diff --git a/translations/ru.json b/translations/ru.json index ae20f3226..5c375f86e 100644 --- a/translations/ru.json +++ b/translations/ru.json @@ -169,5 +169,6 @@ "Danger Zone": "Danger Zone", "Deactivate this account": "Deactivate this account", "Snooze": "Snooze", - "Unsnooze": "Unsnooze" + "Unsnooze": "Unsnooze", + "Donations link": "Donations link" } diff --git a/translations/zh.json b/translations/zh.json index 75982d192..2b4c924a3 100644 --- a/translations/zh.json +++ b/translations/zh.json @@ -169,5 +169,6 @@ "Danger Zone": "Danger Zone", "Deactivate this account": "Deactivate this account", "Snooze": "Snooze", - "Unsnooze": "Unsnooze" + "Unsnooze": "Unsnooze", + "Donations link": "Donations link" } diff --git a/webinterface.py b/webinterface.py index da6b1a8c4..b836a967a 100644 --- a/webinterface.py +++ b/webinterface.py @@ -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) ' '+ \ '