blob: 9bc467aa7f48e59ba0ab5f0a16c969b16844a4cd [file] [log] [blame]
#!/usr/bin/python2.4
#
# Copyright 2011 Google Inc. All Rights Reserved.
#
# 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.
"""Data model classes for the Multidomain Provisioning API."""
__author__ = 'Claudio Cherubino <ccherubino@google.com>'
import gdata.apps
import gdata.apps.apps_property_entry
import gdata.apps_property
import gdata.data
# This is required to work around a naming conflict between the Google
# Spreadsheets API and Python's built-in property function
pyproperty = property
# The apps:property firstName of a user entry
USER_FIRST_NAME = 'firstName'
# The apps:property lastName of a user entry
USER_LAST_NAME = 'lastName'
# The apps:property userEmail of a user entry
USER_EMAIL = 'userEmail'
# The apps:property password of a user entry
USER_PASSWORD = 'password'
# The apps:property hashFunction of a user entry
USER_HASH_FUNCTION = 'hashFunction'
# The apps:property isChangePasswordAtNextLogin of a user entry
USER_CHANGE_PASSWORD = 'isChangePasswordAtNextLogin'
# The apps:property agreedToTerms of a user entry
USER_AGREED_TO_TERMS = 'agreedToTerms'
# The apps:property isSuspended of a user entry
USER_SUSPENDED = 'isSuspended'
# The apps:property isAdmin of a user entry
USER_ADMIN = 'isAdmin'
# The apps:property ipWhitelisted of a user entry
USER_IP_WHITELISTED = 'ipWhitelisted'
# The apps:property quotaInGb of a user entry
USER_QUOTA = 'quotaInGb'
# The apps:property newEmail of a user rename request entry
USER_NEW_EMAIL = 'newEmail'
# The apps:property aliasEmail of an alias entry
ALIAS_EMAIL = 'aliasEmail'
class UserEntry(gdata.apps.apps_property_entry.AppsPropertyEntry):
"""Represents an User in object form."""
def GetFirstName(self):
"""Get the first name of the User object.
Returns:
The first name of this User object as a string or None.
"""
return self._GetProperty(USER_FIRST_NAME)
def SetFirstName(self, value):
"""Set the first name of this User object.
Args:
value: string The new first name to give this object.
"""
self._SetProperty(USER_FIRST_NAME, value)
first_name = pyproperty(GetFirstName, SetFirstName)
def GetLastName(self):
"""Get the last name of the User object.
Returns:
The last name of this User object as a string or None.
"""
return self._GetProperty(USER_LAST_NAME)
def SetLastName(self, value):
"""Set the last name of this User object.
Args:
value: string The new last name to give this object.
"""
self._SetProperty(USER_LAST_NAME, value)
last_name = pyproperty(GetLastName, SetLastName)
def GetEmail(self):
"""Get the email address of the User object.
Returns:
The email address of this User object as a string or None.
"""
return self._GetProperty(USER_EMAIL)
def SetEmail(self, value):
"""Set the email address of this User object.
Args:
value: string The new email address to give this object.
"""
self._SetProperty(USER_EMAIL, value)
email = pyproperty(GetEmail, SetEmail)
def GetPassword(self):
"""Get the password of the User object.
Returns:
The password of this User object as a string or None.
"""
return self._GetProperty(USER_PASSWORD)
def SetPassword(self, value):
"""Set the password of this User object.
Args:
value: string The new password to give this object.
"""
self._SetProperty(USER_PASSWORD, value)
password = pyproperty(GetPassword, SetPassword)
def GetHashFunction(self):
"""Get the hash function of the User object.
Returns:
The hash function of this User object as a string or None.
"""
return self._GetProperty(USER_HASH_FUNCTION)
def SetHashFunction(self, value):
"""Set the hash function of this User object.
Args:
value: string The new hash function to give this object.
"""
self._SetProperty(USER_HASH_FUNCTION, value)
hash_function = pyproperty(GetHashFunction, SetHashFunction)
def GetChangePasswordAtNextLogin(self):
"""Get the change password at next login flag of the User object.
Returns:
The change password at next login flag of this User object as a string or
None.
"""
return self._GetProperty(USER_CHANGE_PASSWORD)
def SetChangePasswordAtNextLogin(self, value):
"""Set the change password at next login flag of this User object.
Args:
value: string The new change password at next login flag to give this
object.
"""
self._SetProperty(USER_CHANGE_PASSWORD, value)
change_password_at_next_login = pyproperty(GetChangePasswordAtNextLogin,
SetChangePasswordAtNextLogin)
def GetAgreedToTerms(self):
"""Get the agreed to terms flag of the User object.
Returns:
The agreed to terms flag of this User object as a string or None.
"""
return self._GetProperty(USER_AGREED_TO_TERMS)
agreed_to_terms = pyproperty(GetAgreedToTerms)
def GetSuspended(self):
"""Get the suspended flag of the User object.
Returns:
The suspended flag of this User object as a string or None.
"""
return self._GetProperty(USER_SUSPENDED)
def SetSuspended(self, value):
"""Set the suspended flag of this User object.
Args:
value: string The new suspended flag to give this object.
"""
self._SetProperty(USER_SUSPENDED, value)
suspended = pyproperty(GetSuspended, SetSuspended)
def GetIsAdmin(self):
"""Get the isAdmin flag of the User object.
Returns:
The isAdmin flag of this User object as a string or None.
"""
return self._GetProperty(USER_ADMIN)
def SetIsAdmin(self, value):
"""Set the isAdmin flag of this User object.
Args:
value: string The new isAdmin flag to give this object.
"""
self._SetProperty(USER_ADMIN, value)
is_admin = pyproperty(GetIsAdmin, SetIsAdmin)
def GetIpWhitelisted(self):
"""Get the ipWhitelisted flag of the User object.
Returns:
The ipWhitelisted flag of this User object as a string or None.
"""
return self._GetProperty(USER_IP_WHITELISTED)
def SetIpWhitelisted(self, value):
"""Set the ipWhitelisted flag of this User object.
Args:
value: string The new ipWhitelisted flag to give this object.
"""
self._SetProperty(USER_IP_WHITELISTED, value)
ip_whitelisted = pyproperty(GetIpWhitelisted, SetIpWhitelisted)
def GetQuota(self):
"""Get the quota of the User object.
Returns:
The quota of this User object as a string or None.
"""
return self._GetProperty(USER_QUOTA)
def SetQuota(self, value):
"""Set the quota of this User object.
Args:
value: string The new quota to give this object.
"""
self._SetProperty(USER_QUOTA, value)
quota = pyproperty(GetQuota, GetQuota)
def __init__(self, uri=None, email=None, first_name=None, last_name=None,
password=None, hash_function=None, change_password=None,
agreed_to_terms=None, suspended=None, is_admin=None,
ip_whitelisted=None, quota=None, *args, **kwargs):
"""Constructs a new UserEntry object with the given arguments.
Args:
uri: string (optional) The uri of of this object for HTTP requests.
email: string (optional) The email address of the user.
first_name: string (optional) The first name of the user.
last_name: string (optional) The last name of the user.
password: string (optional) The password of the user.
hash_function: string (optional) The name of the function used to hash the
password.
change_password: Boolean (optional) Whether or not the user must change
password at first login.
agreed_to_terms: Boolean (optional) Whether or not the user has agreed to
the Terms of Service.
suspended: Boolean (optional) Whether or not the user is suspended.
is_admin: Boolean (optional) Whether or not the user has administrator
privileges.
ip_whitelisted: Boolean (optional) Whether or not the user's ip is
whitelisted.
quota: string (optional) The value (in GB) of the user's quota.
args: The other parameters to pass to gdata.entry.GDEntry constructor.
kwargs: The other parameters to pass to gdata.entry.GDEntry constructor.
"""
super(UserEntry, self).__init__(*args, **kwargs)
if uri:
self.uri = uri
if email:
self.email = email
if first_name:
self.first_name = first_name
if last_name:
self.last_name = last_name
if password:
self.password = password
if hash_function:
self.hash_function = hash_function
if change_password is not None:
self.change_password_at_next_login = str(change_password)
if agreed_to_terms is not None:
self.agreed_to_terms = str(agreed_to_terms)
if suspended is not None:
self.suspended = str(suspended)
if is_admin is not None:
self.is_admin = str(is_admin)
if ip_whitelisted is not None:
self.ip_whitelisted = str(ip_whitelisted)
if quota:
self.quota = quota
class UserFeed(gdata.data.GDFeed):
"""Represents a feed of UserEntry objects."""
# Override entry so that this feed knows how to type its list of entries.
entry = [UserEntry]
class UserRenameRequest(gdata.apps.apps_property_entry.AppsPropertyEntry):
"""Represents an User rename request in object form."""
def GetNewEmail(self):
"""Get the new email address for the User object.
Returns:
The new email address for the User object as a string or None.
"""
return self._GetProperty(USER_NEW_EMAIL)
def SetNewEmail(self, value):
"""Set the new email address for the User object.
Args:
value: string The new email address to give this object.
"""
self._SetProperty(USER_NEW_EMAIL, value)
new_email = pyproperty(GetNewEmail, SetNewEmail)
def __init__(self, new_email=None, *args, **kwargs):
"""Constructs a new UserRenameRequest object with the given arguments.
Args:
new_email: string (optional) The new email address for the target user.
args: The other parameters to pass to gdata.entry.GDEntry constructor.
kwargs: The other parameters to pass to gdata.entry.GDEntry constructor.
"""
super(UserRenameRequest, self).__init__(*args, **kwargs)
if new_email:
self.new_email = new_email
class AliasEntry(gdata.apps.apps_property_entry.AppsPropertyEntry):
"""Represents an Alias in object form."""
def GetUserEmail(self):
"""Get the user email address of the Alias object.
Returns:
The user email address of this Alias object as a string or None.
"""
return self._GetProperty(USER_EMAIL)
def SetUserEmail(self, value):
"""Set the user email address of this Alias object.
Args:
value: string The new user email address to give this object.
"""
self._SetProperty(USER_EMAIL, value)
user_email = pyproperty(GetUserEmail, SetUserEmail)
def GetAliasEmail(self):
"""Get the alias email address of the Alias object.
Returns:
The alias email address of this Alias object as a string or None.
"""
return self._GetProperty(ALIAS_EMAIL)
def SetAliasEmail(self, value):
"""Set the alias email address of this Alias object.
Args:
value: string The new alias email address to give this object.
"""
self._SetProperty(ALIAS_EMAIL, value)
alias_email = pyproperty(GetAliasEmail, SetAliasEmail)
def __init__(self, user_email=None, alias_email=None, *args, **kwargs):
"""Constructs a new AliasEntry object with the given arguments.
Args:
user_email: string (optional) The user email address for the object.
alias_email: string (optional) The alias email address for the object.
args: The other parameters to pass to gdata.entry.GDEntry constructor.
kwargs: The other parameters to pass to gdata.entry.GDEntry constructor.
"""
super(AliasEntry, self).__init__(*args, **kwargs)
if user_email:
self.user_email = user_email
if alias_email:
self.alias_email = alias_email
class AliasFeed(gdata.data.GDFeed):
"""Represents a feed of AliasEntry objects."""
# Override entry so that this feed knows how to type its list of entries.
entry = [AliasEntry]