Hi All,
I am writing a python Script which tries to read png files with title as username for e.g admin.png, where the admin.png file will be set as profile picture for the user with username 'admin'.
#!/usr/bin/python
# BulkPhotoUpload.py
#Script to read *.png files from a directory and upload as profile picture for users
import os
import shutil
import fnmatch
import xmlrpclib
import string
import re
#Function to generate files that match a given filename pattern with in a directory
def get_files_in_directory(filepat,top):
for path, dirlist, filelist in os.walk(top):
for userphoto in fnmatch.filter(filelist,filepat):
yield os.path.join(path,userphoto)
#Main Function
if __name__ == '__main__':
#Source Directory must be specified
source = 'C:\BulkUploadPhoto\UserPhotos' # From where pictures of the users are read
#Destination Directory must be specified
destination = 'C:\BulkUploadPhoto\Archive' # To where pictures of the users are archived after uploading
#The confluence server must be specified and the XML-RPC API must be enabled in the system
server = xmlrpclib.ServerProxy('http://localhost:8090/rpc/xmlrpc')
try:
#Must specify the UserName & the Password of the usercontext on which the operation must be performed
token = server.confluence2.login('admin', '20605104002');
#Gets all the PNG files from the directory
userphotocollection = get_files_in_directory("*png",source)
#Iterate the files to upload them as profile photo for users
for userPhoto in userphotocollection:
pictureData = xmlrpclib.Binary(open(userPhoto).read())
picName = os.path.basename(userPhoto)
userName = os.path.splitext(picName)[0]
profilePictureAdded = server.confluence2.addProfilePicture(token, userName, picName, 'image/png', pictureData)
if profilePictureAdded:
#Move the uploaded images to the Archive directory
shutil.move(userPhoto, destination)
print "Successfully added profile picture for %d" % userName
else:
print "Failed to add profile picture for %d" % userName
except xmlrpclib.Fault, err:
print "Fault code: %d" % err.faultCode
print "Fault string: %s" % err.faultString