Update doVacation

This commit is contained in:
Ross Scroggs
2015-11-22 10:57:00 -08:00
parent b822608b15
commit ab6f8fa7bf

View File

@ -209,7 +209,7 @@ def printLine(message):
# #
# Open a file # Open a file
# #
def openFile(filename, mode='rb'): def openFile(filename, mode=u'rb'):
try: try:
if filename != u'-': if filename != u'-':
return open(filename, mode) return open(filename, mode)
@ -231,7 +231,7 @@ def closeFile(f):
# #
# Read a file # Read a file
# #
def readFile(filename, mode='rb', continueOnError=False, displayError=True): def readFile(filename, mode=u'rb', continueOnError=False, displayError=True):
try: try:
if filename != u'-': if filename != u'-':
with open(filename, mode) as f: with open(filename, mode) as f:
@ -247,7 +247,7 @@ def readFile(filename, mode='rb', continueOnError=False, displayError=True):
# #
# Write a file # Write a file
# #
def writeFile(filename, data, mode='wb', continueOnError=False, displayError=True): def writeFile(filename, data, mode=u'wb', continueOnError=False, displayError=True):
try: try:
with open(filename, mode) as f: with open(filename, mode) as f:
f.write(data) f.write(data)
@ -723,7 +723,7 @@ def getResCalObject():
def geturl(url, dst): def geturl(url, dst):
import urllib2 import urllib2
u = urllib2.urlopen(url) u = urllib2.urlopen(url)
f = openFile(dst, 'wb') f = openFile(dst, u'wb')
meta = u.info() meta = u.info()
try: try:
file_size = int(meta.getheaders(u'Content-Length')[0]) file_size = int(meta.getheaders(u'Content-Length')[0])
@ -1850,7 +1850,7 @@ def changeCalendarAttendees(users):
print u'ERROR: %s is not a valid argument for "gam <users> update calattendees"' % sys.argv[i] print u'ERROR: %s is not a valid argument for "gam <users> update calattendees"' % sys.argv[i]
sys.exit(2) sys.exit(2)
attendee_map = dict() attendee_map = dict()
csvfile = csv.reader(open(csv_file, 'rb')) csvfile = csv.reader(open(csv_file, u'rb'))
for row in csvfile: for row in csvfile:
attendee_map[row[0].lower()] = row[1].lower() attendee_map[row[0].lower()] = row[1].lower()
for user in users: for user in users:
@ -2674,7 +2674,7 @@ def doPhoto(users):
continue continue
else: else:
try: try:
with open(filename, 'rb') as f: with open(filename, u'rb') as f:
image_data = f.read() image_data = f.read()
except IOError, e: except IOError, e:
print u' couldn\'t open %s: %s' % (filename, e.strerror) print u' couldn\'t open %s: %s' % (filename, e.strerror)
@ -4478,7 +4478,6 @@ def doWebClips(users):
callGData(service=emailsettings, function=u'UpdateWebClipSettings', soft_errors=True, username=user, enable=enable) callGData(service=emailsettings, function=u'UpdateWebClipSettings', soft_errors=True, username=user, enable=enable)
def doVacation(users): def doVacation(users):
import cgi
subject = message = u'' subject = message = u''
if sys.argv[4] in true_values: if sys.argv[4] in true_values:
enable = u'true' enable = u'true'
@ -4518,19 +4517,7 @@ def doVacation(users):
i = 1 i = 1
count = len(users) count = len(users)
emailsettings = getEmailSettingsObject() emailsettings = getEmailSettingsObject()
message = cgi.escape(message).replace(u'\\n', u'&#xA;').replace(u'"', u"'") message = message.replace(u'\\n', u'\n')
vacxml = u'''<?xml version="1.0" encoding="utf-8"?>
<atom:entry xmlns:atom="http://www.w3.org/2005/Atom" xmlns:apps="http://schemas.google.com/apps/2006">
<apps:property name="enable" value="%s" />''' % enable
vacxml += u'''<apps:property name="subject" value="%s" />
<apps:property name="message" value="%s" />
<apps:property name="contactsOnly" value="%s" />
<apps:property name="domainOnly" value="%s" />''' % (subject, message, contacts_only, domain_only)
if start_date != None:
vacxml += u'''<apps:property name="startDate" value="%s" />''' % start_date
if end_date != None:
vacxml += u'''<apps:property name="endDate" value="%s" />''' % end_date
vacxml += u'</atom:entry>'
for user in users: for user in users:
if user.find(u'@') > 0: if user.find(u'@') > 0:
emailsettings.domain = user[user.find(u'@')+1:] emailsettings.domain = user[user.find(u'@')+1:]
@ -4538,9 +4525,11 @@ def doVacation(users):
else: else:
emailsettings.domain = domain #make sure it's back at default domain emailsettings.domain = domain #make sure it's back at default domain
print u"Setting Vacation for %s (%s of %s)" % (user+'@'+emailsettings.domain, i, count) print u"Setting Vacation for %s (%s of %s)" % (user+'@'+emailsettings.domain, i, count)
uri = u'https://apps-apis.google.com/a/feeds/emailsettings/2.0/%s/%s/vacation' % (emailsettings.domain, user)
i += 1 i += 1
callGData(service=emailsettings, function=u'Put', soft_errors=True, data=vacxml, uri=uri) callGData(service=emailsettings, function=u'UpdateVacation',
soft_errors=True,
username=userName, enable=enable, subject=subject, message=message,
contacts_only=contacts_only, domain_only=domain_only, start_date=start_date, end_date=end_date)
def getVacation(users): def getVacation(users):
emailsettings = getEmailSettingsObject() emailsettings = getEmailSettingsObject()
@ -8244,7 +8233,7 @@ def getUsersToModify(entity_type=None, entity=None, silent=False, return_uids=Fa
elif entity_type == u'file': elif entity_type == u'file':
users = [] users = []
filename = entity filename = entity
usernames = csv.reader(open(filename, 'rb')) usernames = csv.reader(open(filename, u'rb'))
for row in usernames: for row in usernames:
try: try:
users.append(row.pop()) users.append(row.pop())