forked from indymedia/epicyon
				
			Validate content warnings
							parent
							
								
									2881e06287
								
							
						
					
					
						commit
						8d6b8f98b0
					
				
							
								
								
									
										14
									
								
								posts.py
								
								
								
								
							
							
						
						
									
										14
									
								
								posts.py
								
								
								
								
							|  | @ -47,6 +47,7 @@ from capabilities import getOcapFilename | |||
| from capabilities import capabilitiesUpdate | ||||
| from media import attachMedia | ||||
| from media import replaceYouTube | ||||
| from content import removeHtml | ||||
| from content import removeLongWords | ||||
| from content import addHtmlTags | ||||
| from content import replaceEmojiFromTags | ||||
|  | @ -654,6 +655,17 @@ def appendEventFields(newPost: {}, | |||
|         newPost['sensitive'] = False | ||||
| 
 | ||||
| 
 | ||||
| def validContentWarning(cw: str) -> str: | ||||
|     """Returns a validated content warning | ||||
|     """ | ||||
|     cw = removeHtml(cw) | ||||
|     # hashtags within content warnings apparently cause a lot of trouble | ||||
|     # so remove them | ||||
|     if '#' in cw: | ||||
|         cw = cw.replace('#', '').replace('  ', ' ') | ||||
|     return cw | ||||
| 
 | ||||
| 
 | ||||
| def createPostBase(baseDir: str, nickname: str, domain: str, port: int, | ||||
|                    toUrl: str, ccUrl: str, httpPrefix: str, content: str, | ||||
|                    followersOnly: bool, saveToFile: bool, clientToServer: bool, | ||||
|  | @ -713,7 +725,7 @@ def createPostBase(baseDir: str, nickname: str, domain: str, port: int, | |||
|     sensitive = False | ||||
|     summary = None | ||||
|     if subject: | ||||
|         summary = subject | ||||
|         summary = validContentWarning(subject) | ||||
|         sensitive = True | ||||
| 
 | ||||
|     toRecipients = [] | ||||
|  |  | |||
							
								
								
									
										15
									
								
								tests.py
								
								
								
								
							
							
						
						
									
										15
									
								
								tests.py
								
								
								
								
							|  | @ -20,6 +20,7 @@ from cache import getPersonFromCache | |||
| from threads import threadWithTrace | ||||
| from daemon import runDaemon | ||||
| from session import createSession | ||||
| from posts import validContentWarning | ||||
| from posts import deleteAllPosts | ||||
| from posts import createPublicPost | ||||
| from posts import sendPost | ||||
|  | @ -2041,8 +2042,22 @@ def testRemoveIdEnding(): | |||
|         'https://event.somedomain.net/users/foo/statuses/34544814814' | ||||
| 
 | ||||
| 
 | ||||
| def testValidContentWarning(): | ||||
|     print('testValidContentWarning') | ||||
|     resultStr = validContentWarning('Valid content warning') | ||||
|     assert resultStr == 'Valid content warning' | ||||
| 
 | ||||
|     resultStr = validContentWarning('Invalid #content warning') | ||||
|     assert resultStr == 'Invalid content warning' | ||||
| 
 | ||||
|     resultStr = \ | ||||
|         validContentWarning('Invalid <a href="somesite">content warning</a>') | ||||
|     assert resultStr == 'Invalid content warning' | ||||
| 
 | ||||
| 
 | ||||
| def runAllTests(): | ||||
|     print('Running tests...') | ||||
|     testValidContentWarning() | ||||
|     testRemoveIdEnding() | ||||
|     testJsonPostAllowsComments() | ||||
|     runHtmlReplaceQuoteMarks() | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue