forked from indymedia/epicyon
Account migration functions
parent
324ab9bf2a
commit
6bf78d35c4
|
@ -0,0 +1,50 @@
|
|||
__filename__ = "migrate.py"
|
||||
__author__ = "Bob Mottram"
|
||||
__license__ = "AGPL3+"
|
||||
__version__ = "1.0.0"
|
||||
__maintainer__ = "Bob Mottram"
|
||||
__email__ = "bob@freedombone.net"
|
||||
__status__ = "Production"
|
||||
|
||||
import os
|
||||
|
||||
def migrateFollows(followFilename: str,oldHandle: str,newHandle: str) -> None:
|
||||
"""Changes a handle within following or followers list
|
||||
"""
|
||||
if not os.path.isfile(followFilename):
|
||||
return
|
||||
if oldHandle not in open(followFilename).read():
|
||||
return
|
||||
followData=None
|
||||
with open(followFilename, 'r') as followFile:
|
||||
followData=followFile.read()
|
||||
if not followData:
|
||||
return
|
||||
newFollowData=followData.replace(oldHandle,newHandle)
|
||||
if followData==newFollowData:
|
||||
return
|
||||
with open(followFilename, 'w') as followFile:
|
||||
followFile.write(newFollowData)
|
||||
|
||||
def migrateAccount(baseDir: str,oldHandle: str,newHandle: str) -> None:
|
||||
"""If a followed account changes then this modifies the
|
||||
following and followers lists for each account accordingly
|
||||
"""
|
||||
if oldHandle.startswith('@'):
|
||||
oldHandle=oldHandle[1:]
|
||||
if '@' not in oldHandle:
|
||||
return
|
||||
if newHandle.startswith('@'):
|
||||
ewHandle=newHandle[1:]
|
||||
if '@' not in newHandle:
|
||||
return
|
||||
|
||||
# update followers and following lists for each account
|
||||
for subdir, dirs, files in os.walk(baseDir+'/accounts'):
|
||||
for handle in dirs:
|
||||
if '@' in handle:
|
||||
accountDir=baseDir+'/accounts/'+handle
|
||||
followFilename=accountDir+'/following.txt'
|
||||
migrateFollows(followFilename,oldHandle,newHandle)
|
||||
followFilename=accountDir+'/followers.txt'
|
||||
migrateFollows(followFilename,oldHandle,newHandle)
|
Loading…
Reference in New Issue