/gdata/apps/emailsettings/service.py
Python | 264 lines | 245 code | 2 blank | 17 comment | 0 complexity | abee22365f184ce6fb0fb5c028a5c34e MD5 | raw file
- #!/usr/bin/python
- #
- # Copyright (C) 2008 Google, Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- """Allow Google Apps domain administrators to set users' email settings.
- EmailSettingsService: Set various email settings.
- """
- __author__ = 'google-apps-apis@googlegroups.com'
- import gdata.apps
- import gdata.apps.service
- import gdata.service
- API_VER='2.0'
- # Forwarding and POP3 options
- KEEP='KEEP'
- ARCHIVE='ARCHIVE'
- DELETE='DELETE'
- ALL_MAIL='ALL_MAIL'
- MAIL_FROM_NOW_ON='MAIL_FROM_NOW_ON'
- class EmailSettingsService(gdata.apps.service.PropertyService):
- """Client for the Google Apps Email Settings service."""
- def _serviceUrl(self, setting_id, username, domain=None):
- if domain is None:
- domain = self.domain
- return '/a/feeds/emailsettings/%s/%s/%s/%s' % (API_VER, domain, username,
- setting_id)
- def CreateLabel(self, username, label):
- """Create a label.
- Args:
- username: User to create label for.
- label: Label to create.
- Returns:
- A dict containing the result of the create operation.
- """
- uri = self._serviceUrl('label', username)
- properties = {'label': label}
- return self._PostProperties(uri, properties)
- def CreateFilter(self, username, from_=None, to=None, subject=None,
- has_the_word=None, does_not_have_the_word=None,
- has_attachment=None, label=None, should_mark_as_read=None,
- should_archive=None):
- """Create a filter.
- Args:
- username: User to create filter for.
- from_: Filter from string.
- to: Filter to string.
- subject: Filter subject.
- has_the_word: Words to filter in.
- does_not_have_the_word: Words to filter out.
- has_attachment: Boolean for message having attachment.
- label: Label to apply.
- should_mark_as_read: Boolean for marking message as read.
- should_archive: Boolean for archiving message.
- Returns:
- A dict containing the result of the create operation.
- """
- uri = self._serviceUrl('filter', username)
- properties = {}
- properties['from'] = from_
- properties['to'] = to
- properties['subject'] = subject
- properties['hasTheWord'] = has_the_word
- properties['doesNotHaveTheWord'] = does_not_have_the_word
- properties['hasAttachment'] = gdata.apps.service._bool2str(has_attachment)
- properties['label'] = label
- properties['shouldMarkAsRead'] = gdata.apps.service._bool2str(should_mark_as_read)
- properties['shouldArchive'] = gdata.apps.service._bool2str(should_archive)
- return self._PostProperties(uri, properties)
- def CreateSendAsAlias(self, username, name, address, reply_to=None,
- make_default=None):
- """Create alias to send mail as.
- Args:
- username: User to create alias for.
- name: Name of alias.
- address: Email address to send from.
- reply_to: Email address to reply to.
- make_default: Boolean for whether this is the new default sending alias.
- Returns:
- A dict containing the result of the create operation.
- """
- uri = self._serviceUrl('sendas', username)
- properties = {}
- properties['name'] = name
- properties['address'] = address
- properties['replyTo'] = reply_to
- properties['makeDefault'] = gdata.apps.service._bool2str(make_default)
- return self._PostProperties(uri, properties)
- def UpdateWebClipSettings(self, username, enable):
- """Update WebClip Settings
- Args:
- username: User to update forwarding for.
- enable: Boolean whether to enable Web Clip.
- Returns:
- A dict containing the result of the update operation.
- """
- uri = self._serviceUrl('webclip', username)
- properties = {}
- properties['enable'] = gdata.apps.service._bool2str(enable)
- return self._PutProperties(uri, properties)
- def UpdateForwarding(self, username, enable, forward_to=None, action=None):
- """Update forwarding settings.
- Args:
- username: User to update forwarding for.
- enable: Boolean whether to enable this forwarding rule.
- forward_to: Email address to forward to.
- action: Action to take after forwarding.
- Returns:
- A dict containing the result of the update operation.
- """
- uri = self._serviceUrl('forwarding', username)
- properties = {}
- properties['enable'] = gdata.apps.service._bool2str(enable)
- if enable is True:
- properties['forwardTo'] = forward_to
- properties['action'] = action
- return self._PutProperties(uri, properties)
- def UpdatePop(self, username, enable, enable_for=None, action=None):
- """Update POP3 settings.
- Args:
- username: User to update POP3 settings for.
- enable: Boolean whether to enable POP3.
- enable_for: Which messages to make available via POP3.
- action: Action to take after user retrieves email via POP3.
- Returns:
- A dict containing the result of the update operation.
- """
- uri = self._serviceUrl('pop', username)
- properties = {}
- properties['enable'] = gdata.apps.service._bool2str(enable)
- if enable is True:
- properties['enableFor'] = enable_for
- properties['action'] = action
- return self._PutProperties(uri, properties)
- def UpdateImap(self, username, enable):
- """Update IMAP settings.
- Args:
- username: User to update IMAP settings for.
- enable: Boolean whether to enable IMAP.
- Returns:
- A dict containing the result of the update operation.
- """
- uri = self._serviceUrl('imap', username)
- properties = {'enable': gdata.apps.service._bool2str(enable)}
- return self._PutProperties(uri, properties)
- def UpdateVacation(self, username, enable, subject=None, message=None,
- contacts_only=None):
- """Update vacation settings.
- Args:
- username: User to update vacation settings for.
- enable: Boolean whether to enable vacation responses.
- subject: Vacation message subject.
- message: Vacation message body.
- contacts_only: Boolean whether to send message only to contacts.
- Returns:
- A dict containing the result of the update operation.
- """
- uri = self._serviceUrl('vacation', username)
- properties = {}
- properties['enable'] = gdata.apps.service._bool2str(enable)
- if enable is True:
- properties['subject'] = subject
- properties['message'] = message
- properties['contactsOnly'] = gdata.apps.service._bool2str(contacts_only)
- return self._PutProperties(uri, properties)
- def UpdateSignature(self, username, signature):
- """Update signature.
- Args:
- username: User to update signature for.
- signature: Signature string.
- Returns:
- A dict containing the result of the update operation.
- """
- uri = self._serviceUrl('signature', username)
- properties = {'signature': signature}
- return self._PutProperties(uri, properties)
- def UpdateLanguage(self, username, language):
- """Update user interface language.
- Args:
- username: User to update language for.
- language: Language code.
- Returns:
- A dict containing the result of the update operation.
- """
- uri = self._serviceUrl('language', username)
- properties = {'language': language}
- return self._PutProperties(uri, properties)
- def UpdateGeneral(self, username, page_size=None, shortcuts=None, arrows=None,
- snippets=None, str=None):
- """Update general settings.
- Args:
- username: User to update general settings for.
- page_size: Number of messages to show.
- shortcuts: Boolean whether shortcuts are enabled.
- arrows: Boolean whether arrows are enabled.
- snippets: Boolean whether snippets are enabled.
- unicode: Wheter unicode is enabled.
- Returns:
- A dict containing the result of the update operation.
- """
- uri = self._serviceUrl('general', username)
- properties = {}
- if page_size != None:
- properties['pageSize'] = str(page_size)
- if shortcuts != None:
- properties['shortcuts'] = gdata.apps.service._bool2str(shortcuts)
- if arrows != None:
- properties['arrows'] = gdata.apps.service._bool2str(arrows)
- if snippets != None:
- properties['snippets'] = gdata.apps.service._bool2str(snippets)
- if str != None:
- properties['unicode'] = gdata.apps.service._bool2str(str)
- return self._PutProperties(uri, properties)