text: #!/usr/bin/env python
  #
  # Copyright (C) 2007 SIOS Technology, 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.
  
  """Contains objects used with Google Apps."""
  
  __author__ = 'tmatsuo@sios.com (Takashi MATSUO)'
  
  
  import atom
  import gdata
  
  
  # XML namespaces which are often used in Google Apps entity.
  APPS_NAMESPACE = 'http://schemas.google.com/apps/2006'
  APPS_TEMPLATE = '{http://schemas.google.com/apps/2006}%s'
  
  
  class EmailList(atom.AtomBase):
    """The Google Apps EmailList element"""
    
    _tag = 'emailList'
    _namespace = APPS_NAMESPACE
    _children = atom.AtomBase._children.copy()
    _attributes = atom.AtomBase._attributes.copy()
    _attributes['name'] = 'name'
  
    def __init__(self, name=None, extension_elements=None,
                 extension_attributes=None, text=None):
      self.name = name
      self.text = text
      self.extension_elements = extension_elements or []
      self.extension_attributes = extension_attributes or {}
  
  def EmailListFromString(xml_string):
    return atom.CreateClassFromXMLString(EmailList, xml_string)
    
  
  class Who(atom.AtomBase):
    """The Google Apps Who element"""
    
    _tag = 'who'
    _namespace = gdata.GDATA_NAMESPACE
    _children = atom.AtomBase._children.copy()
    _attributes = atom.AtomBase._attributes.copy()
    _attributes['rel'] = 'rel'
    _attributes['email'] = 'email'
  
    def __init__(self, rel=None, email=None, extension_elements=None,
                 extension_attributes=None, text=None):
      self.rel = rel
      self.email = email
      self.text = text
      self.extension_elements = extension_elements or []
      self.extension_attributes = extension_attributes or {}
  
  def WhoFromString(xml_string):
    return atom.CreateClassFromXMLString(Who, xml_string)
    
  
  class Login(atom.AtomBase):
    """The Google Apps Login element"""
    
    _tag = 'login'
    _namespace = APPS_NAMESPACE
    _children = atom.AtomBase._children.copy()
    _attributes = atom.AtomBase._attributes.copy()
    _attributes['userName'] = 'user_name'
    _attributes['password'] = 'password'
    _attributes['suspended'] = 'suspended'
    _attributes['admin'] = 'admin'
    _attributes['changePasswordAtNextLogin'] = 'change_password'
    _attributes['agreedToTerms'] = 'agreed_to_terms'
    _attributes['ipWhitelisted'] = 'ip_whitelisted'
    _attributes['hashFunctionName'] = 'hash_function_name'
  
    def __init__(self, user_name=None, password=None, suspended=None,
                 ip_whitelisted=None, hash_function_name=None, 
                 admin=None, change_password=None, agreed_to_terms=None, 
                 extension_elements=None, extension_attributes=None, 
                 text=None):
      self.user_name = user_name
      self.password = password
      self.suspended = suspended
      self.admin = admin
      self.change_password = change_password
      self.agreed_to_terms = agreed_to_terms
      self.ip_whitelisted = ip_whitelisted
      self.hash_function_name = hash_function_name
      self.text = text
      self.extension_elements = extension_elements or []
      self.extension_attributes = extension_attributes or {}
  
      
  def LoginFromString(xml_string):
      return atom.CreateClassFromXMLString(Login, xml_string)
      
  
  class Quota(atom.AtomBase):
    """The Google Apps Quota element"""
    
    _tag = 'quota'
    _namespace = APPS_NAMESPACE
    _children = atom.AtomBase._children.copy()
    _attributes = atom.AtomBase._attributes.copy()
    _attributes['limit'] = 'limit'
  
    def __init__(self, limit=None, extension_elements=None,
                 extension_attributes=None, text=None):
      self.limit = limit
      self.text = text
      self.extension_elements = extension_elements or []
      self.extension_attributes = extension_attributes or {}
  
      
  def QuotaFromString(xml_string):
      return atom.CreateClassFromXMLString(Quota, xml_string)
  
      
  class Name(atom.AtomBase):
    """The Google Apps Name element"""
  
    _tag = 'name'
    _namespace = APPS_NAMESPACE
    _children = atom.AtomBase._children.copy()
    _attributes = atom.AtomBase._attributes.copy()  
    _attributes['familyName'] = 'family_name'
    _attributes['givenName'] = 'given_name'
    
    def __init__(self, family_name=None, given_name=None,
                 extension_elements=None, extension_attributes=None, text=None):
      self.family_name = family_name
      self.given_name = given_name
      self.text = text
      self.extension_elements = extension_elements or []
      self.extension_attributes = extension_attributes or {}
  
  
  def NameFromString(xml_string):
      return atom.CreateClassFromXMLString(Name, xml_string)
  
  
  class Nickname(atom.AtomBase):
    """The Google Apps Nickname element"""
    
    _tag = 'nickname'
    _namespace = APPS_NAMESPACE
    _children = atom.AtomBase._children.copy()
    _attributes = atom.AtomBase._attributes.copy() 
    _attributes['name'] = 'name'
  
    def __init__(self, name=None,
                 extension_elements=None, extension_attributes=None, text=None):
      self.name = name
      self.text = text
      self.extension_elements = extension_elements or []
      self.extension_attributes = extension_attributes or {}
  
  
  def NicknameFromString(xml_string):
      return atom.CreateClassFromXMLString(Nickname, xml_string)
    
  
  class NicknameEntry(gdata.GDataEntry):
    """A Google Apps flavor of an Atom Entry for Nickname"""
    
    _tag = 'entry'
    _namespace = atom.ATOM_NAMESPACE
    _children = gdata.GDataEntry._children.copy()
    _attributes = gdata.GDataEntry._attributes.copy()
    _children['{%s}login' % APPS_NAMESPACE] = ('login', Login)
    _children['{%s}nickname' % APPS_NAMESPACE] = ('nickname', Nickname)
  
    def __init__(self, author=None, category=None, content=None,
                 atom_id=None, link=None, published=None, 
                 title=None, updated=None,
                 login=None, nickname=None,
                 extended_property=None, 
                 extension_elements=None, extension_attributes=None, text=None):
  
      gdata.GDataEntry.__init__(self, author=author, category=category, 
                                content=content,
                                atom_id=atom_id, link=link, published=published,
                                title=title, updated=updated)
      self.login = login
      self.nickname = nickname
      self.extended_property = extended_property or []
      self.text = text
      self.extension_elements = extension_elements or []
      self.extension_attributes = extension_attributes or {}
  
  
  def NicknameEntryFromString(xml_string):
    return atom.CreateClassFromXMLString(NicknameEntry, xml_string)
  
  
  class NicknameFeed(gdata.GDataFeed, gdata.LinkFinder):
    """A Google Apps Nickname feed flavor of an Atom Feed"""
    
    _tag = 'feed'
    _namespace = atom.ATOM_NAMESPACE
    _children = gdata.GDataFeed._children.copy()
    _attributes = gdata.GDataFeed._attributes.copy()
    _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', [NicknameEntry])
  
    def __init__(self, author=None, category=None, contributor=None,
                 generator=None, icon=None, atom_id=None, link=None, logo=None, 
                 rights=None, subtitle=None, title=None, updated=None,
                 entry=None, total_results=None, start_index=None,
                 items_per_page=None, extension_elements=None,
                 extension_attributes=None, text=None):
      gdata.GDataFeed.__init__(self, author=author, category=category,
                               contributor=contributor, generator=generator,
                               icon=icon,  atom_id=atom_id, link=link,
                               logo=logo, rights=rights, subtitle=subtitle,
                               title=title, updated=updated, entry=entry,
                               total_results=total_results,
                               start_index=start_index,
                               items_per_page=items_per_page,
                               extension_elements=extension_elements,
                               extension_attributes=extension_attributes,
                               text=text)
  
  
  def NicknameFeedFromString(xml_string):
    return atom.CreateClassFromXMLString(NicknameFeed, xml_string)
  
  
  class UserEntry(gdata.GDataEntry):
    """A Google Apps flavor of an Atom Entry"""
    
    _tag = 'entry'
    _namespace = atom.ATOM_NAMESPACE
    _children = gdata.GDataEntry._children.copy()
    _attributes = gdata.GDataEntry._attributes.copy()
    _children['{%s}login' % APPS_NAMESPACE] = ('login', Login)
    _children['{%s}name' % APPS_NAMESPACE] = ('name', Name)
    _children['{%s}quota' % APPS_NAMESPACE] = ('quota', Quota)
    # This child may already be defined in GDataEntry, confirm before removing.
    _children['{%s}feedLink' % gdata.GDATA_NAMESPACE] = ('feed_link', 
                                                         [gdata.FeedLink])
    _children['{%s}who' % gdata.GDATA_NAMESPACE] = ('who', Who)
  
    def __init__(self, author=None, category=None, content=None,
                 atom_id=None, link=None, published=None, 
                 title=None, updated=None,
                 login=None, name=None, quota=None, who=None, feed_link=None,
                 extended_property=None, 
                 extension_elements=None, extension_attributes=None, text=None):
  
      gdata.GDataEntry.__init__(self, author=author, category=category, 
                                content=content,
                                atom_id=atom_id, link=link, published=published,
                                title=title, updated=updated)
      self.login = login
      self.name = name
      self.quota = quota
      self.who = who
      self.feed_link = feed_link or []
      self.extended_property = extended_property or []
      self.text = text
      self.extension_elements = extension_elements or []
      self.extension_attributes = extension_attributes or {}
      
  
  def UserEntryFromString(xml_string):
    return atom.CreateClassFromXMLString(UserEntry, xml_string)
  
    
  class UserFeed(gdata.GDataFeed, gdata.LinkFinder):
    """A Google Apps User feed flavor of an Atom Feed"""
    
    _tag = 'feed'
    _namespace = atom.ATOM_NAMESPACE
    _children = gdata.GDataFeed._children.copy()
    _attributes = gdata.GDataFeed._attributes.copy()
    _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', [UserEntry])
  
    def __init__(self, author=None, category=None, contributor=None,
                 generator=None, icon=None, atom_id=None, link=None, logo=None, 
                 rights=None, subtitle=None, title=None, updated=None,
                 entry=None, total_results=None, start_index=None,
                 items_per_page=None, extension_elements=None,
                 extension_attributes=None, text=None):
      gdata.GDataFeed.__init__(self, author=author, category=category,
                               contributor=contributor, generator=generator,
                               icon=icon,  atom_id=atom_id, link=link,
                               logo=logo, rights=rights, subtitle=subtitle,
                               title=title, updated=updated, entry=entry,
                               total_results=total_results,
                               start_index=start_index,
                               items_per_page=items_per_page,
                               extension_elements=extension_elements,
                               extension_attributes=extension_attributes,
                               text=text)
  
  
  def UserFeedFromString(xml_string):
    return atom.CreateClassFromXMLString(UserFeed, xml_string)
  
  
  class EmailListEntry(gdata.GDataEntry):
    """A Google Apps EmailList flavor of an Atom Entry"""
    
    _tag = 'entry'
    _namespace = atom.ATOM_NAMESPACE
    _children = gdata.GDataEntry._children.copy()
    _attributes = gdata.GDataEntry._attributes.copy()
    _children['{%s}emailList' % APPS_NAMESPACE] = ('email_list', EmailList)
    # Might be able to remove this _children entry.
    _children['{%s}feedLink' % gdata.GDATA_NAMESPACE] = ('feed_link', 
                                                         [gdata.FeedLink])
  
    def __init__(self, author=None, category=None, content=None,
                 atom_id=None, link=None, published=None, 
                 title=None, updated=None,
                 email_list=None, feed_link=None,
                 extended_property=None, 
                 extension_elements=None, extension_attributes=None, text=None):
  
      gdata.GDataEntry.__init__(self, author=author, category=category, 
                                content=content,
                                atom_id=atom_id, link=link, published=published,
                                title=title, updated=updated)
      self.email_list = email_list
      self.feed_link = feed_link or []
      self.extended_property = extended_property or []
      self.text = text
      self.extension_elements = extension_elements or []
      self.extension_attributes = extension_attributes or {}
  
  
  def EmailListEntryFromString(xml_string):
    return atom.CreateClassFromXMLString(EmailListEntry, xml_string)
    
  
  class EmailListFeed(gdata.GDataFeed, gdata.LinkFinder):
    """A Google Apps EmailList feed flavor of an Atom Feed"""
    
    _tag = 'feed'
    _namespace = atom.ATOM_NAMESPACE
    _children = gdata.GDataFeed._children.copy()
    _attributes = gdata.GDataFeed._attributes.copy()
    _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', [EmailListEntry])
  
    def __init__(self, author=None, category=None, contributor=None,
                 generator=None, icon=None, atom_id=None, link=None, logo=None, 
                 rights=None, subtitle=None, title=None, updated=None,
                 entry=None, total_results=None, start_index=None,
                 items_per_page=None, extension_elements=None,
                 extension_attributes=None, text=None):
      gdata.GDataFeed.__init__(self, author=author, category=category,
                               contributor=contributor, generator=generator,
                               icon=icon,  atom_id=atom_id, link=link,
                               logo=logo, rights=rights, subtitle=subtitle,
                               title=title, updated=updated, entry=entry,
                               total_results=total_results,
                               start_index=start_index,
                               items_per_page=items_per_page,
                               extension_elements=extension_elements,
                               extension_attributes=extension_attributes,
                               text=text)
                               
  
  def EmailListFeedFromString(xml_string):
    return atom.CreateClassFromXMLString(EmailListFeed, xml_string)
  
  
  class EmailListRecipientEntry(gdata.GDataEntry):
    """A Google Apps EmailListRecipient flavor of an Atom Entry"""
    
    _tag = 'entry'
    _namespace = atom.ATOM_NAMESPACE
    _children = gdata.GDataEntry._children.copy()
    _attributes = gdata.GDataEntry._attributes.copy()
    _children['{%s}who' % gdata.GDATA_NAMESPACE] = ('who', Who)
  
    def __init__(self, author=None, category=None, content=None,
                 atom_id=None, link=None, published=None, 
                 title=None, updated=None,
                 who=None,
                 extended_property=None, 
                 extension_elements=None, extension_attributes=None, text=None):
  
      gdata.GDataEntry.__init__(self, author=author, category=category, 
                                content=content,
                                atom_id=atom_id, link=link, published=published,
                                title=title, updated=updated)
      self.who = who
      self.extended_property = extended_property or []
      self.text = text
      self.extension_elements = extension_elements or []
      self.extension_attributes = extension_attributes or {}
  
  
  def EmailListRecipientEntryFromString(xml_string):
    return atom.CreateClassFromXMLString(EmailListRecipientEntry, xml_string)
  
  
  class EmailListRecipientFeed(gdata.GDataFeed, gdata.LinkFinder):
    """A Google Apps EmailListRecipient feed flavor of an Atom Feed"""
    
    _tag = 'feed'
    _namespace = atom.ATOM_NAMESPACE
    _children = gdata.GDataFeed._children.copy()
    _attributes = gdata.GDataFeed._attributes.copy()
    _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', 
                                                    [EmailListRecipientEntry])
  
    def __init__(self, author=None, category=None, contributor=None,
                 generator=None, icon=None, atom_id=None, link=None, logo=None, 
                 rights=None, subtitle=None, title=None, updated=None,
                 entry=None, total_results=None, start_index=None,
                 items_per_page=None, extension_elements=None,
                 extension_attributes=None, text=None):
      gdata.GDataFeed.__init__(self, author=author, category=category,
                               contributor=contributor, generator=generator,
                               icon=icon,  atom_id=atom_id, link=link,
                               logo=logo, rights=rights, subtitle=subtitle,
                               title=title, updated=updated, entry=entry,
                               total_results=total_results,
                               start_index=start_index,
                               items_per_page=items_per_page,
                               extension_elements=extension_elements,
                               extension_attributes=extension_attributes,
                               text=text)
  
  
  def EmailListRecipientFeedFromString(xml_string):
    return atom.CreateClassFromXMLString(EmailListRecipientFeed, xml_string)
  
  
  class Property(atom.AtomBase):
    """The Google Apps Property element"""
  
    _tag = 'property'
    _namespace = APPS_NAMESPACE
    _children = atom.AtomBase._children.copy()
    _attributes = atom.AtomBase._attributes.copy()
    _attributes['name'] = 'name'
    _attributes['value'] = 'value'
  
    def __init__(self, name=None, value=None, extension_elements=None,
                 extension_attributes=None, text=None):
      self.name = name
      self.value = value
      self.text = text
      self.extension_elements = extension_elements or []
      self.extension_attributes = extension_attributes or {}
  
  
  def PropertyFromString(xml_string):
    return atom.CreateClassFromXMLString(Property, xml_string)
  
  
  class PropertyEntry(gdata.GDataEntry):
    """A Google Apps Property flavor of an Atom Entry"""
  
    _tag = 'entry'
    _namespace = atom.ATOM_NAMESPACE
    _children = gdata.GDataEntry._children.copy()
    _attributes = gdata.GDataEntry._attributes.copy()
    _children['{%s}property' % APPS_NAMESPACE] = ('property', [Property])
  
    def __init__(self, author=None, category=None, content=None,
                 atom_id=None, link=None, published=None,
                 title=None, updated=None,
                 property=None,
                 extended_property=None,
                 extension_elements=None, extension_attributes=None, text=None):
  
      gdata.GDataEntry.__init__(self, author=author, category=category,
                                content=content,
                                atom_id=atom_id, link=link, published=published,
                                title=title, updated=updated)
      self.property = property
      self.extended_property = extended_property or []
      self.text = text
      self.extension_elements = extension_elements or []
      self.extension_attributes = extension_attributes or {}
  
  
  def PropertyEntryFromString(xml_string):
    return atom.CreateClassFromXMLString(PropertyEntry, xml_string)
  
  class PropertyFeed(gdata.GDataFeed, gdata.LinkFinder):
    """A Google Apps Property feed flavor of an Atom Feed"""
    
    _tag = 'feed'
    _namespace = atom.ATOM_NAMESPACE
    _children = gdata.GDataFeed._children.copy()
    _attributes = gdata.GDataFeed._attributes.copy()
    _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', [PropertyEntry])
  
    def __init__(self, author=None, category=None, contributor=None,
                 generator=None, icon=None, atom_id=None, link=None, logo=None, 
                 rights=None, subtitle=None, title=None, updated=None,
                 entry=None, total_results=None, start_index=None,
                 items_per_page=None, extension_elements=None,
                 extension_attributes=None, text=None):
      gdata.GDataFeed.__init__(self, author=author, category=category,
                               contributor=contributor, generator=generator,
                               icon=icon,  atom_id=atom_id, link=link,
                               logo=logo, rights=rights, subtitle=subtitle,
                               title=title, updated=updated, entry=entry,
                               total_results=total_results,
                               start_index=start_index,
                               items_per_page=items_per_page,
                               extension_elements=extension_elements,
                               extension_attributes=extension_attributes,
                               text=text)
  
  def PropertyFeedFromString(xml_string):
    return atom.CreateClassFromXMLString(PropertyFeed, xml_string)
  