From a0d77595678aa57db47e27711f3266a81245fcde Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 6 Nov 2019 22:56:55 +0000 Subject: [PATCH] Donation link within profile --- daemon.py | 7 +++++ person.py | 67 ++++++++++++++++++++++++++++++++++++++++++++ translations/ar.json | 3 +- translations/ca.json | 3 +- translations/cy.json | 3 +- translations/de.json | 3 +- translations/en.json | 3 +- translations/es.json | 3 +- translations/fr.json | 3 +- translations/ga.json | 3 +- translations/hi.json | 3 +- translations/it.json | 3 +- translations/ja.json | 3 +- translations/pt.json | 3 +- translations/ru.json | 3 +- translations/zh.json | 3 +- webinterface.py | 7 ++++- 17 files changed, 108 insertions(+), 15 deletions(-) diff --git a/daemon.py b/daemon.py index 97127124..60b2ccff 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 242dc500..feba84ce 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 e572557d..aa58da38 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 6250bc0f..a3265810 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 86172a02..3a20e638 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 436056d7..fe857de9 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 52b0397c..3aa6a2ec 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 92149895..8802e7d0 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 1d8b9743..9e74f1f4 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 eb294b6b..5e2d38ae 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 9463a913..436669c4 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 0ec4ecb6..d6107f66 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 9a82cc35..046657cf 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 5f47957a..3bfb366e 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 ae20f322..5c375f86 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 75982d19..2b4c924a 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 da6b1a8c..b836a967 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) ' '+ \ '
' \ ' ' \ - ' ' \ + ' '+ \ + translate['Donations link']+'
'+ \ + ' ' \ '
' \ '
' \ ' '+translate['The files attached below should be no larger than 10MB in total uploaded at once.']+'
' \