mirror of https://gitlab.com/bashrc2/epicyon
				
				
				
			
		
			
				
	
	
		
			96 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
| __filename__ = "conversation.py"
 | |
| __author__ = "Bob Mottram"
 | |
| __license__ = "AGPL3+"
 | |
| __version__ = "1.2.0"
 | |
| __maintainer__ = "Bob Mottram"
 | |
| __email__ = "bob@libreserver.org"
 | |
| __status__ = "Production"
 | |
| __module_group__ = "Timeline"
 | |
| 
 | |
| import os
 | |
| from utils import hasObjectDict
 | |
| from utils import acctDir
 | |
| from utils import removeIdEnding
 | |
| 
 | |
| 
 | |
| def _getConversationFilename(baseDir: str, nickname: str, domain: str,
 | |
|                              postJsonObject: {}) -> str:
 | |
|     """Returns the conversation filename
 | |
|     """
 | |
|     if not hasObjectDict(postJsonObject):
 | |
|         return None
 | |
|     if not postJsonObject['object'].get('conversation'):
 | |
|         return None
 | |
|     if not postJsonObject['object'].get('id'):
 | |
|         return None
 | |
|     conversationDir = acctDir(baseDir, nickname, domain) + '/conversation'
 | |
|     if not os.path.isdir(conversationDir):
 | |
|         os.mkdir(conversationDir)
 | |
|     conversationId = postJsonObject['object']['conversation']
 | |
|     conversationId = conversationId.replace('/', '#')
 | |
|     return conversationDir + '/' + conversationId
 | |
| 
 | |
| 
 | |
| def updateConversation(baseDir: str, nickname: str, domain: str,
 | |
|                        postJsonObject: {}) -> bool:
 | |
|     """Ads a post to a conversation index in the /conversation subdirectory
 | |
|     """
 | |
|     conversationFilename = \
 | |
|         _getConversationFilename(baseDir, nickname, domain, postJsonObject)
 | |
|     if not conversationFilename:
 | |
|         return False
 | |
|     postId = removeIdEnding(postJsonObject['object']['id'])
 | |
|     if not os.path.isfile(conversationFilename):
 | |
|         try:
 | |
|             with open(conversationFilename, 'w+') as fp:
 | |
|                 fp.write(postId + '\n')
 | |
|                 return True
 | |
|         except BaseException:
 | |
|             print('EX: updateConversation ' +
 | |
|                   'unable to write to ' + conversationFilename)
 | |
|             pass
 | |
|     elif postId + '\n' not in open(conversationFilename).read():
 | |
|         try:
 | |
|             with open(conversationFilename, 'a+') as fp:
 | |
|                 fp.write(postId + '\n')
 | |
|                 return True
 | |
|         except BaseException:
 | |
|             print('EX: updateConversation 2 ' +
 | |
|                   'unable to write to ' + conversationFilename)
 | |
|             pass
 | |
|     return False
 | |
| 
 | |
| 
 | |
| def muteConversation(baseDir: str, nickname: str, domain: str,
 | |
|                      conversationId: str) -> None:
 | |
|     """Mutes the given conversation
 | |
|     """
 | |
|     conversationDir = acctDir(baseDir, nickname, domain) + '/conversation'
 | |
|     conversationFilename = \
 | |
|         conversationDir + '/' + conversationId.replace('/', '#')
 | |
|     if not os.path.isfile(conversationFilename):
 | |
|         return
 | |
|     if os.path.isfile(conversationFilename + '.muted'):
 | |
|         return
 | |
|     with open(conversationFilename + '.muted', 'w+') as fp:
 | |
|         fp.write('\n')
 | |
| 
 | |
| 
 | |
| def unmuteConversation(baseDir: str, nickname: str, domain: str,
 | |
|                        conversationId: str) -> None:
 | |
|     """Unmutes the given conversation
 | |
|     """
 | |
|     conversationDir = acctDir(baseDir, nickname, domain) + '/conversation'
 | |
|     conversationFilename = \
 | |
|         conversationDir + '/' + conversationId.replace('/', '#')
 | |
|     if not os.path.isfile(conversationFilename):
 | |
|         return
 | |
|     if not os.path.isfile(conversationFilename + '.muted'):
 | |
|         return
 | |
|     try:
 | |
|         os.remove(conversationFilename + '.muted')
 | |
|     except BaseException:
 | |
|         print('EX: unmuteConversation unable to delete ' +
 | |
|               conversationFilename + '.muted')
 | |
|         pass
 |