mirror of
https://github.com/GAM-team/GAM.git
synced 2026-06-28 18:01:36 +00:00
875 lines
30 KiB
Python
875 lines
30 KiB
Python
#!/usr/bin/env python
|
|
#
|
|
# Copyright 2009 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 parsing and generating XML for the Contacts API."""
|
|
|
|
import atom
|
|
import gdata
|
|
|
|
## Constants from http://code.google.com/apis/gdata/elements.html ##
|
|
REL_HOME = 'http://schemas.google.com/g/2005#home'
|
|
REL_WORK = 'http://schemas.google.com/g/2005#work'
|
|
REL_OTHER = 'http://schemas.google.com/g/2005#other'
|
|
|
|
IM_AIM = 'http://schemas.google.com/g/2005#AIM' # AOL Instant Messenger protocol
|
|
IM_MSN = 'http://schemas.google.com/g/2005#MSN' # MSN Messenger protocol
|
|
IM_YAHOO = 'http://schemas.google.com/g/2005#YAHOO' # Yahoo Messenger protocol
|
|
IM_SKYPE = 'http://schemas.google.com/g/2005#SKYPE' # Skype protocol
|
|
IM_QQ = 'http://schemas.google.com/g/2005#QQ' # QQ protocol
|
|
IM_GOOGLE_TALK = 'http://schemas.google.com/g/2005#GOOGLE_TALK' # Google Talk protocol
|
|
IM_ICQ = 'http://schemas.google.com/g/2005#ICQ' # ICQ protocol
|
|
IM_JABBER = 'http://schemas.google.com/g/2005#JABBER' # Jabber protocol
|
|
IM_NETMEETING = 'http://schemas.google.com/g/2005#NETMEETING' # NetMeeting
|
|
|
|
PHOTO_LINK_REL = 'http://schemas.google.com/contacts/2008/rel#photo'
|
|
PHOTO_EDIT_LINK_REL = 'http://schemas.google.com/contacts/2008/rel#edit-photo'
|
|
|
|
# Different phone types, for more info see:
|
|
# http://code.google.com/apis/gdata/docs/2.0/elements.html#gdPhoneNumber
|
|
PHONE_ASSISTANT = 'http://schemas.google.com/g/2005#assistant'
|
|
PHONE_CALLBACK = 'http://schemas.google.com/g/2005#callback'
|
|
PHONE_CAR = 'http://schemas.google.com/g/2005#car'
|
|
PHONE_COMPANY_MAIN = 'http://schemas.google.com/g/2005#company_main'
|
|
PHONE_FAX = 'http://schemas.google.com/g/2005#fax'
|
|
PHONE_GENERAL = 'http://schemas.google.com/g/2005#general'
|
|
PHONE_HOME = REL_HOME
|
|
PHONE_HOME_FAX = 'http://schemas.google.com/g/2005#home_fax'
|
|
PHONE_INTERNAL = 'http://schemas.google.com/g/2005#internal-extension'
|
|
PHONE_ISDN = 'http://schemas.google.com/g/2005#isdn'
|
|
PHONE_MAIN = 'http://schemas.google.com/g/2005#main'
|
|
PHONE_MOBILE = 'http://schemas.google.com/g/2005#mobile'
|
|
PHONE_OTHER = REL_OTHER
|
|
PHONE_OTHER_FAX = 'http://schemas.google.com/g/2005#other_fax'
|
|
PHONE_PAGER = 'http://schemas.google.com/g/2005#pager'
|
|
PHONE_RADIO = 'http://schemas.google.com/g/2005#radio'
|
|
PHONE_SATELLITE = 'http://schemas.google.com/g/2005#satellite'
|
|
PHONE_TELEX = 'http://schemas.google.com/g/2005#telex'
|
|
PHONE_TTY_TDD = 'http://schemas.google.com/g/2005#tty_tdd'
|
|
PHONE_VOIP = 'http://schemas.google.com/g/2005#voip'
|
|
PHONE_WORK = REL_WORK
|
|
PHONE_WORK_FAX = 'http://schemas.google.com/g/2005#work_fax'
|
|
PHONE_WORK_MOBILE = 'http://schemas.google.com/g/2005#work_mobile'
|
|
PHONE_WORK_PAGER = 'http://schemas.google.com/g/2005#work_pager'
|
|
|
|
MAIL_BOTH = 'http://schemas.google.com/g/2005#both'
|
|
MAIL_LETTERS = 'http://schemas.google.com/g/2005#letters'
|
|
MAIL_PARCELS = 'http://schemas.google.com/g/2005#parcels'
|
|
MAIL_NEITHER = 'http://schemas.google.com/g/2005#neither'
|
|
|
|
GENERAL_ADDRESS = 'http://schemas.google.com/g/2005#general'
|
|
LOCAL_ADDRESS = 'http://schemas.google.com/g/2005#local'
|
|
|
|
EXTERNAL_ID_ORGANIZATION = 'organization'
|
|
|
|
RELATION_MANAGER = 'manager'
|
|
|
|
CONTACTS_NAMESPACE = 'http://schemas.google.com/contact/2008'
|
|
|
|
|
|
class GDataBase(atom.AtomBase):
|
|
"""The Google Contacts intermediate class from atom.AtomBase."""
|
|
_namespace = gdata.GDATA_NAMESPACE
|
|
_children = atom.AtomBase._children.copy()
|
|
_attributes = atom.AtomBase._attributes.copy()
|
|
|
|
def __init__(self, text=None):
|
|
atom.AtomBase.__init__(self, text=text)
|
|
|
|
class ContactsBase(GDataBase):
|
|
"""The Google Contacts intermediate class for Contacts namespace."""
|
|
_namespace = CONTACTS_NAMESPACE
|
|
|
|
class BillingInformation(ContactsBase):
|
|
"""The gContact:billingInformation element."""
|
|
_tag = 'billingInformation'
|
|
|
|
class Birthday(ContactsBase):
|
|
"""The gContact:birthday element."""
|
|
_tag = 'birthday'
|
|
_children = ContactsBase._children.copy()
|
|
_attributes = ContactsBase._attributes.copy()
|
|
_attributes['when'] = 'when'
|
|
|
|
def __init__(self, when=None):
|
|
ContactsBase.__init__(self)
|
|
self.when = when
|
|
|
|
class CalendarLink(ContactsBase):
|
|
"""The gContact:calendarLink element."""
|
|
_tag = 'calendarLink'
|
|
_children = ContactsBase._children.copy()
|
|
_attributes = ContactsBase._attributes.copy()
|
|
_attributes['href'] = 'href'
|
|
_attributes['label'] = 'label'
|
|
_attributes['primary'] = 'primary'
|
|
_attributes['rel'] = 'rel'
|
|
|
|
def __init__(self, href=None, label=None, primary='false', rel=None):
|
|
ContactsBase.__init__(self)
|
|
self.href = href
|
|
self.label = label
|
|
self.primary = primary
|
|
self.rel = rel
|
|
|
|
class Content(atom.AtomBase):
|
|
"""The Google Contacts Content element."""
|
|
_tag = 'content'
|
|
_namespace = atom.ATOM_NAMESPACE
|
|
|
|
def __init__(self, text=None):
|
|
atom.AtomBase.__init__(self, text=text)
|
|
|
|
class DirectoryServer(ContactsBase):
|
|
"""The gContact:directoryServer element."""
|
|
_tag = 'directoryServer'
|
|
|
|
class Email(GDataBase):
|
|
"""The gd:email element."""
|
|
_tag = 'email'
|
|
_children = GDataBase._children.copy()
|
|
_attributes = GDataBase._attributes.copy()
|
|
_attributes['address'] = 'address'
|
|
_attributes['primary'] = 'primary'
|
|
_attributes['rel'] = 'rel'
|
|
_attributes['label'] = 'label'
|
|
|
|
def __init__(self, label=None, rel=None, address=None, primary='false'):
|
|
GDataBase.__init__(self)
|
|
self.label = label
|
|
self.rel = rel
|
|
self.address = address
|
|
self.primary = primary
|
|
|
|
class When(GDataBase):
|
|
"""The Google Contacts when element."""
|
|
_tag = 'when'
|
|
_children = GDataBase._children.copy()
|
|
_attributes = GDataBase._attributes.copy()
|
|
_attributes['startTime'] = 'startTime'
|
|
_attributes['label'] = 'label'
|
|
|
|
def __init__(self, startTime=None, label=None):
|
|
GDataBase.__init__(self)
|
|
self.startTime = startTime
|
|
self.label = label
|
|
|
|
class Event(ContactsBase):
|
|
"""The gContact:event element."""
|
|
_tag = 'event'
|
|
_children = ContactsBase._children.copy()
|
|
_attributes = ContactsBase._attributes.copy()
|
|
_attributes['label'] = 'label'
|
|
_attributes['rel'] = 'rel'
|
|
_children['{%s}when' % GDataBase._namespace] = ('when', When)
|
|
|
|
def __init__(self, label=None, rel=None, when=None):
|
|
ContactsBase.__init__(self)
|
|
self.label = label
|
|
self.rel = rel
|
|
self.when = when
|
|
|
|
def EventFromString(xml_string):
|
|
return atom.CreateClassFromXMLString(Event, xml_string)
|
|
|
|
class ExternalId(ContactsBase):
|
|
"""The gContact:externalId element."""
|
|
_tag = 'externalId'
|
|
_children = ContactsBase._children.copy()
|
|
_attributes = ContactsBase._attributes.copy()
|
|
_attributes['label'] = 'label'
|
|
_attributes['rel'] = 'rel'
|
|
_attributes['value'] = 'value'
|
|
|
|
def __init__(self, label=None, rel=None, value=None):
|
|
ContactsBase.__init__(self)
|
|
self.label = label
|
|
self.rel = rel
|
|
self.value = value
|
|
|
|
def ExternalIdFromString(xml_string):
|
|
return atom.CreateClassFromXMLString(ExternalId, xml_string)
|
|
|
|
class Gender(ContactsBase):
|
|
"""The gContact:gender element."""
|
|
_tag = 'gender'
|
|
_children = ContactsBase._children.copy()
|
|
_attributes = ContactsBase._attributes.copy()
|
|
_attributes['value'] = 'value'
|
|
|
|
def __init__(self, value=None):
|
|
ContactsBase.__init__(self)
|
|
self.value = value
|
|
|
|
class Hobby(ContactsBase):
|
|
"""The gContact:hobby element."""
|
|
_tag = 'hobby'
|
|
|
|
class IM(GDataBase):
|
|
"""The gd:im element."""
|
|
_tag = 'im'
|
|
_children = GDataBase._children.copy()
|
|
_attributes = GDataBase._attributes.copy()
|
|
_attributes['address'] = 'address'
|
|
_attributes['primary'] = 'primary'
|
|
_attributes['protocol'] = 'protocol'
|
|
_attributes['label'] = 'label'
|
|
_attributes['rel'] = 'rel'
|
|
|
|
def __init__(self, primary='false', rel=None, address=None, protocol=None, label=None):
|
|
GDataBase.__init__(self)
|
|
self.protocol = protocol
|
|
self.address = address
|
|
self.primary = primary
|
|
self.rel = rel
|
|
self.label = label
|
|
|
|
class Initials(ContactsBase):
|
|
"""The gContact:initials element."""
|
|
_tag = 'initials'
|
|
|
|
class Jot(ContactsBase):
|
|
"""The gContact:jot element."""
|
|
_tag = 'jot'
|
|
_children = ContactsBase._children.copy()
|
|
_attributes = ContactsBase._attributes.copy()
|
|
_attributes['rel'] = 'rel'
|
|
|
|
def __init__(self, rel=None, text=None):
|
|
ContactsBase.__init__(self, text=text)
|
|
self.rel = rel
|
|
|
|
class Language(ContactsBase):
|
|
"""The gContact:language element."""
|
|
_tag = 'language'
|
|
_children = ContactsBase._children.copy()
|
|
_attributes = ContactsBase._attributes.copy()
|
|
_attributes['code'] = 'code'
|
|
_attributes['label'] = 'label'
|
|
|
|
def __init__(self, code=None, label=None):
|
|
ContactsBase.__init__(self)
|
|
self.code = code
|
|
self.label = label
|
|
|
|
class MaidenName(ContactsBase):
|
|
"""The gContact:maidenName element."""
|
|
_tag = 'maidenName'
|
|
|
|
class Mileage(ContactsBase):
|
|
"""The gContact:mileage element."""
|
|
_tag = 'mileage'
|
|
|
|
class NamePrefix(GDataBase):
|
|
"""The gd:namePrefix element."""
|
|
_tag = 'namePrefix'
|
|
|
|
class GivenName(GDataBase):
|
|
"""The gd:givenName element."""
|
|
_tag = 'givenName'
|
|
|
|
class AdditionalName(GDataBase):
|
|
"""The gd:additionalName element."""
|
|
_tag = 'additionalName'
|
|
|
|
class FamilyName(GDataBase):
|
|
"""The gd:familyName element."""
|
|
_tag = 'familyName'
|
|
|
|
class NameSuffix(GDataBase):
|
|
"""The gd:nameSuffix element."""
|
|
_tag = 'nameSuffix'
|
|
|
|
class FullName(GDataBase):
|
|
"""The gd:fullName element."""
|
|
_tag = 'fullName'
|
|
|
|
class Name(GDataBase):
|
|
"""The gd:name element."""
|
|
_tag = 'name'
|
|
_children = GDataBase._children.copy()
|
|
_attributes = GDataBase._attributes.copy()
|
|
_children['{%s}namePrefix' % GDataBase._namespace] = ('name_prefix', NamePrefix)
|
|
_children['{%s}givenName' % GDataBase._namespace] = ('given_name', GivenName)
|
|
_children['{%s}additionalName' % GDataBase._namespace] = ('additional_name', AdditionalName)
|
|
_children['{%s}familyName' % GDataBase._namespace] = ('family_name', FamilyName)
|
|
_children['{%s}nameSuffix' % GDataBase._namespace] = ('name_suffix', NameSuffix)
|
|
_children['{%s}fullName' % GDataBase._namespace] = ('full_name', FullName)
|
|
|
|
def __init__(self, given_name=None, additional_name=None, family_name=None,
|
|
name_prefix=None, name_suffix=None, full_name=None,):
|
|
GDataBase.__init__(self)
|
|
self.given_name = given_name
|
|
self.additional_name = additional_name
|
|
self.family_name = family_name
|
|
self.name_prefix = name_prefix
|
|
self.name_suffix = name_suffix
|
|
self.full_name = full_name
|
|
|
|
class Nickname(ContactsBase):
|
|
"""The gContact:nickname element."""
|
|
_tag = 'nickname'
|
|
|
|
class Occupation(ContactsBase):
|
|
"""The gContact:occupation element."""
|
|
_tag = 'occupation'
|
|
|
|
class PhoneNumber(GDataBase):
|
|
"""The gd:phoneNumber element."""
|
|
_tag = 'phoneNumber'
|
|
_children = GDataBase._children.copy()
|
|
_attributes = GDataBase._attributes.copy()
|
|
_attributes['label'] = 'label'
|
|
_attributes['rel'] = 'rel'
|
|
_attributes['uri'] = 'uri'
|
|
_attributes['primary'] = 'primary'
|
|
|
|
def __init__(self, label=None, rel=None, uri=None, primary='false', text=None):
|
|
GDataBase.__init__(self, text=text)
|
|
self.label = label
|
|
self.rel = rel
|
|
self.uri = uri
|
|
self.primary = primary
|
|
|
|
class OrgName(GDataBase):
|
|
"""The gd:orgName element."""
|
|
_tag = 'orgName'
|
|
|
|
class OrgTitle(GDataBase):
|
|
"""The gd:orgTitle element."""
|
|
_tag = 'orgTitle'
|
|
|
|
class OrgSymbol(GDataBase):
|
|
"""The gd:orgSymbol element."""
|
|
_tag = 'orgSymbol'
|
|
|
|
class OrgDepartment(GDataBase):
|
|
"""The gd:orgDepartment element."""
|
|
_tag = 'orgDepartment'
|
|
|
|
class OrgJobDescription(GDataBase):
|
|
"""The gd:orgJobDescription element."""
|
|
_tag = 'orgJobDescription'
|
|
|
|
class Where(GDataBase):
|
|
"""The gd:where element."""
|
|
_tag = 'where'
|
|
_children = GDataBase._children.copy()
|
|
_attributes = GDataBase._attributes.copy()
|
|
_attributes['valueString'] = 'value_string'
|
|
|
|
def __init__(self, value_string=None):
|
|
GDataBase.__init__(self)
|
|
self.value_string = value_string
|
|
|
|
class Organization(GDataBase):
|
|
"""The gd:organization element."""
|
|
_tag = 'organization'
|
|
_children = GDataBase._children.copy()
|
|
_attributes = GDataBase._attributes.copy()
|
|
_attributes['label'] = 'label'
|
|
_attributes['rel'] = 'rel'
|
|
_attributes['primary'] = 'primary'
|
|
_children['{%s}orgName' % GDataBase._namespace] = ('name', OrgName)
|
|
_children['{%s}orgSymbol' % GDataBase._namespace] = ('symbol', OrgSymbol)
|
|
_children['{%s}orgTitle' % GDataBase._namespace] = ('title', OrgTitle)
|
|
_children['{%s}orgDepartment' % GDataBase._namespace] = ('department', OrgDepartment)
|
|
_children['{%s}orgJobDescription' % GDataBase._namespace] = ('job_description', OrgJobDescription)
|
|
_children['{%s}where' % GDataBase._namespace] = ('where', Where)
|
|
|
|
def __init__(self, label=None, rel=None, primary='false', name=None,
|
|
title=None, symbol=None, department=None, job_description=None, where=None,):
|
|
GDataBase.__init__(self)
|
|
self.label = label
|
|
self.rel = rel
|
|
self.primary = primary
|
|
self.name = name
|
|
self.symbol = symbol
|
|
self.title = title
|
|
self.department = department
|
|
self.job_description = job_description
|
|
self.where = where
|
|
|
|
class PostalAddress(GDataBase):
|
|
"""The gd:postalAddress element."""
|
|
_tag = 'postalAddress'
|
|
_children = GDataBase._children.copy()
|
|
_attributes = GDataBase._attributes.copy()
|
|
_attributes['label'] = 'label'
|
|
_attributes['rel'] = 'rel'
|
|
_attributes['primary'] = 'primary'
|
|
|
|
def __init__(self, primary=None, rel=None, label=None, text=None):
|
|
GDataBase.__init__(self, text=text)
|
|
self.label = label
|
|
self.rel = rel
|
|
self.primary = primary
|
|
|
|
class Priority(ContactsBase):
|
|
"""The gContact:priority element."""
|
|
_tag = 'priority'
|
|
_children = ContactsBase._children.copy()
|
|
_attributes = ContactsBase._attributes.copy()
|
|
_attributes['rel'] = 'rel'
|
|
|
|
def __init__(self, rel=None):
|
|
ContactsBase.__init__(self)
|
|
self.rel = rel
|
|
|
|
class Relation(ContactsBase):
|
|
"""The gContact:relation element."""
|
|
_tag = 'relation'
|
|
_children = ContactsBase._children.copy()
|
|
_attributes = ContactsBase._attributes.copy()
|
|
_attributes['label'] = 'label'
|
|
_attributes['rel'] = 'rel'
|
|
|
|
def __init__(self, label=None, rel=None, text=None):
|
|
ContactsBase.__init__(self, text=text)
|
|
self.label = label
|
|
self.rel = rel
|
|
|
|
def RelationFromString(xml_string):
|
|
return atom.CreateClassFromXMLString(Relation, xml_string)
|
|
|
|
class Sensitivity(ContactsBase):
|
|
"""The gContact:sensitivity element."""
|
|
_tag = 'sensitivity'
|
|
_children = ContactsBase._children.copy()
|
|
_attributes = ContactsBase._attributes.copy()
|
|
_attributes['rel'] = 'rel'
|
|
|
|
def __init__(self, rel=None):
|
|
ContactsBase.__init__(self)
|
|
self.rel = rel
|
|
|
|
class ShortName(ContactsBase):
|
|
"""The gContact:shortName element."""
|
|
_tag = 'shortName'
|
|
|
|
class Street(GDataBase):
|
|
"""The gd:street element.
|
|
Can be street, avenue, road, etc. This element also includes the
|
|
house number and room/apartment/flat/floor number.
|
|
"""
|
|
_tag = 'street'
|
|
|
|
class PoBox(GDataBase):
|
|
"""The gd:pobox element.
|
|
Covers actual P.O. boxes, drawers, locked bags, etc. This is usually
|
|
but not always mutually exclusive with street.
|
|
"""
|
|
_tag = 'pobox'
|
|
|
|
class Neighborhood(GDataBase):
|
|
"""The gd:neighborhood element.
|
|
This is used to disambiguate a street address when a city contains more
|
|
than one street with the same name, or to specify a small place whose
|
|
mail is routed through a larger postal town. In China it could be a
|
|
county or a minor city.
|
|
"""
|
|
_tag = 'neighborhood'
|
|
|
|
class City(GDataBase):
|
|
"""The gd:city element.
|
|
Can be city, village, town, borough, etc. This is the postal town and
|
|
not necessarily the place of residence or place of business.
|
|
"""
|
|
_tag = 'city'
|
|
|
|
class Region(GDataBase):
|
|
"""The gd:region element.
|
|
A state, province, county (in Ireland), Land (in Germany),
|
|
departement (in France), etc.
|
|
"""
|
|
_tag = 'region'
|
|
|
|
class Postcode(GDataBase):
|
|
"""The gd:postcode element.
|
|
Postal code. Usually country-wide, but sometimes specific to the
|
|
city (e.g. "2" in "Dublin 2, Ireland" addresses).
|
|
"""
|
|
_tag = 'postcode'
|
|
|
|
class Country(GDataBase):
|
|
"""The gd:country element.
|
|
The name or code of the country.
|
|
"""
|
|
_tag = 'country'
|
|
|
|
class FormattedAddress(GDataBase):
|
|
"""The gd:formattedAddress element."""
|
|
_tag = 'formattedAddress'
|
|
|
|
class StructuredPostalAddress(GDataBase):
|
|
"""The gd:structuredPostalAddress element."""
|
|
_tag = 'structuredPostalAddress'
|
|
_children = GDataBase._children.copy()
|
|
_attributes = GDataBase._attributes.copy()
|
|
_attributes['label'] = 'label'
|
|
_attributes['rel'] = 'rel'
|
|
_attributes['primary'] = 'primary'
|
|
_children['{%s}street' % GDataBase._namespace] = ('street', Street)
|
|
_children['{%s}pobox' % GDataBase._namespace] = ('pobox', PoBox)
|
|
_children['{%s}neighborhood' % GDataBase._namespace] = ('neighborhood', Neighborhood)
|
|
_children['{%s}city' % GDataBase._namespace] = ('city', City)
|
|
_children['{%s}region' % GDataBase._namespace] = ('region', Region)
|
|
_children['{%s}postcode' % GDataBase._namespace] = ('postcode', Postcode)
|
|
_children['{%s}country' % GDataBase._namespace] = ('country', Country)
|
|
_children['{%s}formattedAddress' % GDataBase._namespace] = ('formatted_address', FormattedAddress)
|
|
|
|
def __init__(self, rel=None, label=None, primary='false',
|
|
street=None,
|
|
pobox=None,
|
|
neighborhood=None,
|
|
city=None,
|
|
region=None,
|
|
postcode=None,
|
|
country=None,
|
|
formatted_address=None):
|
|
GDataBase.__init__(self)
|
|
self.label = label
|
|
self.rel = rel
|
|
self.primary = primary
|
|
self.street = street
|
|
self.pobox = pobox
|
|
self.neighborhood = neighborhood
|
|
self.city = city
|
|
self.region = region
|
|
self.postcode = postcode
|
|
self.country = country
|
|
self.formatted_address = formatted_address
|
|
|
|
class Subject(ContactsBase):
|
|
"""The gContact:Subject element."""
|
|
_tag = 'subject'
|
|
|
|
class UserDefinedField(ContactsBase):
|
|
"""The gContact:userDefinedField element."""
|
|
_tag = 'userDefinedField'
|
|
_children = ContactsBase._children.copy()
|
|
_attributes = ContactsBase._attributes.copy()
|
|
_attributes['key'] = 'key'
|
|
_attributes['value'] = 'value'
|
|
|
|
def __init__(self, key=None, value=None):
|
|
ContactsBase.__init__(self)
|
|
self.key = key
|
|
self.value = value
|
|
|
|
def UserDefinedFieldFromString(xml_string):
|
|
return atom.CreateClassFromXMLString(UserDefinedField, xml_string)
|
|
|
|
class Website(ContactsBase):
|
|
"""The gContact:Website element."""
|
|
_tag = 'website'
|
|
_children = ContactsBase._children.copy()
|
|
_attributes = ContactsBase._attributes.copy()
|
|
_attributes['href'] = 'href'
|
|
_attributes['label'] = 'label'
|
|
_attributes['primary'] = 'primary'
|
|
_attributes['rel'] = 'rel'
|
|
|
|
def __init__(self, href=None, label=None, primary='false', rel=None):
|
|
ContactsBase.__init__(self)
|
|
self.href = href
|
|
self.label = label
|
|
self.primary = primary
|
|
self.rel = rel
|
|
|
|
def WebsiteFromString(xml_string):
|
|
return atom.CreateClassFromXMLString(Website, xml_string)
|
|
|
|
class PersonEntry(gdata.BatchEntry):
|
|
"""Base class for ContactEntry and ProfileEntry."""
|
|
_children = gdata.BatchEntry._children.copy()
|
|
_children['{%s}billingInformation' % CONTACTS_NAMESPACE] = ('billingInformation', BillingInformation)
|
|
_children['{%s}birthday' % CONTACTS_NAMESPACE] = ('birthday', Birthday)
|
|
_children['{%s}calendarLink' % CONTACTS_NAMESPACE] = ('calendarLink', [CalendarLink])
|
|
_children['{%s}content' % atom.ATOM_NAMESPACE] = ('content', Content)
|
|
_children['{%s}directoryServer' % CONTACTS_NAMESPACE] = ('directoryServer', DirectoryServer)
|
|
_children['{%s}email' % gdata.GDATA_NAMESPACE] = ('email', [Email])
|
|
_children['{%s}event' % CONTACTS_NAMESPACE] = ('event', [Event])
|
|
_children['{%s}externalId' % CONTACTS_NAMESPACE] = ('externalId', [ExternalId])
|
|
_children['{%s}gender' % CONTACTS_NAMESPACE] = ('gender', Gender)
|
|
_children['{%s}hobby' % CONTACTS_NAMESPACE] = ('hobby', [Hobby])
|
|
_children['{%s}im' % gdata.GDATA_NAMESPACE] = ('im', [IM])
|
|
_children['{%s}initials' % CONTACTS_NAMESPACE] = ('initials', Initials)
|
|
_children['{%s}jot' % CONTACTS_NAMESPACE] = ('jot', [Jot])
|
|
_children['{%s}language' % CONTACTS_NAMESPACE] = ('language', Language)
|
|
_children['{%s}maidenName' % CONTACTS_NAMESPACE] = ('maidenName', MaidenName)
|
|
_children['{%s}mileage' % CONTACTS_NAMESPACE] = ('mileage', Mileage)
|
|
_children['{%s}name' % gdata.GDATA_NAMESPACE] = ('name', Name)
|
|
_children['{%s}nickname' % CONTACTS_NAMESPACE] = ('nickname', Nickname)
|
|
_children['{%s}occupation' % CONTACTS_NAMESPACE] = ('occupation', Occupation)
|
|
_children['{%s}organization' % gdata.GDATA_NAMESPACE] = ('organization', [Organization])
|
|
_children['{%s}phoneNumber' % gdata.GDATA_NAMESPACE] = ('phoneNumber', [PhoneNumber])
|
|
_children['{%s}postalAddress' % gdata.GDATA_NAMESPACE] = ('postalAddress', [PostalAddress])
|
|
_children['{%s}priority' % CONTACTS_NAMESPACE] = ('priority', Priority)
|
|
_children['{%s}relation' % CONTACTS_NAMESPACE] = ('relation', [Relation])
|
|
_children['{%s}sensitivity' % CONTACTS_NAMESPACE] = ('sensitivity', Sensitivity)
|
|
_children['{%s}shortName' % CONTACTS_NAMESPACE] = ('shortName', ShortName)
|
|
_children['{%s}structuredPostalAddress' % gdata.GDATA_NAMESPACE] = ('structuredPostalAddress', [StructuredPostalAddress])
|
|
_children['{%s}subject' % CONTACTS_NAMESPACE] = ('subject', Subject)
|
|
_children['{%s}userDefinedField' % CONTACTS_NAMESPACE] = ('userDefinedField', [UserDefinedField])
|
|
_children['{%s}website' % CONTACTS_NAMESPACE] = ('website', [Website])
|
|
_children['{%s}where' % gdata.GDATA_NAMESPACE] = ('where', Where)
|
|
|
|
_attributes = gdata.BatchEntry._attributes.copy()
|
|
_attributes['{%s}etag' % gdata.GDATA_NAMESPACE] = 'etag'
|
|
|
|
def __init__(self,
|
|
billingInformation=None,
|
|
birthday=None,
|
|
calendarLink=None,
|
|
content=None,
|
|
directoryServer=None,
|
|
email=None,
|
|
event=None,
|
|
externalId=None,
|
|
gender=None,
|
|
hobby=None,
|
|
im=None,
|
|
initials=None,
|
|
jot=None,
|
|
language=None,
|
|
maidenName=None,
|
|
mileage=None,
|
|
name=None,
|
|
nickname=None,
|
|
occupation=None,
|
|
organization=None,
|
|
phoneNumber=None,
|
|
postalAddress=None,
|
|
priority=None,
|
|
relation=None,
|
|
sensitivity=None,
|
|
shortName=None,
|
|
structuredPostalAddress=None,
|
|
subject=None,
|
|
text=None,
|
|
title=None,
|
|
userDefinedField=None,
|
|
website=None,
|
|
where=None,
|
|
etag=None):
|
|
gdata.BatchEntry.__init__(self)
|
|
self.billingInformation = billingInformation
|
|
self.birthday = birthday
|
|
self.calendarLink = calendarLink or []
|
|
self.content = content
|
|
self.directoryServer = directoryServer
|
|
self.email = email or []
|
|
self.event = event or []
|
|
self.externalId = externalId or []
|
|
self.gender = gender
|
|
self.hobby = hobby or []
|
|
self.im = im or []
|
|
self.initials = initials
|
|
self.jot = jot or []
|
|
self.language = language
|
|
self.maidenName = maidenName
|
|
self.mileage = mileage
|
|
self.name = name
|
|
self.nickname = nickname
|
|
self.occupation = occupation
|
|
self.organization = organization or []
|
|
self.phoneNumber = phoneNumber or []
|
|
self.postalAddress = postalAddress or []
|
|
self.priority = priority
|
|
self.relation = relation or []
|
|
self.sensitivity = sensitivity
|
|
self.shortName = shortName
|
|
self.structuredPostalAddress = structuredPostalAddress or []
|
|
self.subject = subject
|
|
self.text = text
|
|
self.userDefinedField = userDefinedField or []
|
|
self.website = website or []
|
|
self.where = where
|
|
self.extension_attributes = {}
|
|
self.extension_elements = []
|
|
self.etag = etag
|
|
|
|
class Deleted(GDataBase):
|
|
"""The gd:Deleted element."""
|
|
_tag = 'deleted'
|
|
|
|
class GroupMembershipInfo(ContactsBase):
|
|
"""The Google Contacts GroupMembershipInfo element."""
|
|
_tag = 'groupMembershipInfo'
|
|
_children = ContactsBase._children.copy()
|
|
_attributes = ContactsBase._attributes.copy()
|
|
_attributes['deleted'] = 'deleted'
|
|
_attributes['href'] = 'href'
|
|
|
|
def __init__(self, deleted=None, href=None, text=None):
|
|
ContactsBase.__init__(self, text=text)
|
|
self.deleted = deleted
|
|
self.href = href
|
|
|
|
class ContactEntry(PersonEntry):
|
|
"""Represents a contact."""
|
|
_tag = 'entry'
|
|
_namespace = atom.ATOM_NAMESPACE
|
|
_children = PersonEntry._children.copy()
|
|
|
|
_children['{%s}deleted' % gdata.GDATA_NAMESPACE] = ('deleted', Deleted)
|
|
_children['{%s}groupMembershipInfo' % CONTACTS_NAMESPACE] = ('groupMembershipInfo', [GroupMembershipInfo])
|
|
_children['{%s}extendedProperty' % gdata.GDATA_NAMESPACE] = ('extended_property', [gdata.ExtendedProperty])
|
|
# Overwrite the organization rule in PersonEntry so that a ContactEntry
|
|
# may only contain one <gd:organization> element.
|
|
#_children['{%s}organization' % gdata.GDATA_NAMESPACE] = ('organization', Organization)
|
|
|
|
def __init__(self,
|
|
billingInformation=None,
|
|
birthday=None,
|
|
calendarLink=None,
|
|
content=None,
|
|
deleted=None,
|
|
directoryServer=None,
|
|
email=None,
|
|
event=None,
|
|
extended_property=None,
|
|
externalId=None,
|
|
gender=None,
|
|
groupMembershipInfo=None,
|
|
hobby=None,
|
|
im=None,
|
|
initials=None,
|
|
jot=None,
|
|
language=None,
|
|
maidenName=None,
|
|
mileage=None,
|
|
name=None,
|
|
nickname=None,
|
|
occupation=None,
|
|
organization=None,
|
|
phoneNumber=None,
|
|
postalAddress=None,
|
|
priority=None,
|
|
relation=None,
|
|
sensitivity=None,
|
|
shortName=None,
|
|
structuredPostalAddress=None,
|
|
subject=None,
|
|
text=None,
|
|
title=None,
|
|
userDefinedField=None,
|
|
website=None,
|
|
where=None,
|
|
etag=None):
|
|
PersonEntry.__init__(self,
|
|
billingInformation=billingInformation,
|
|
birthday=birthday,
|
|
calendarLink=calendarLink,
|
|
content=content,
|
|
directoryServer=directoryServer,
|
|
email=email,
|
|
event=event,
|
|
externalId=externalId,
|
|
gender=gender,
|
|
hobby=hobby,
|
|
im=im,
|
|
initials=initials,
|
|
jot=jot,
|
|
language=language,
|
|
maidenName=maidenName,
|
|
mileage=mileage,
|
|
name=name,
|
|
nickname=nickname,
|
|
occupation=occupation,
|
|
organization=organization,
|
|
phoneNumber=phoneNumber,
|
|
postalAddress=postalAddress,
|
|
priority=priority,
|
|
relation=relation,
|
|
sensitivity=sensitivity,
|
|
shortName=shortName,
|
|
structuredPostalAddress=structuredPostalAddress,
|
|
subject=subject,
|
|
text=text,
|
|
title=title,
|
|
userDefinedField=userDefinedField,
|
|
website=website,
|
|
where=where,
|
|
etag=etag)
|
|
self.deleted = deleted
|
|
self.extended_property = extended_property or []
|
|
self.groupMembershipInfo = groupMembershipInfo or []
|
|
|
|
def GetPhotoLink(self):
|
|
for a_link in self.link:
|
|
if a_link.rel == PHOTO_LINK_REL:
|
|
return a_link
|
|
return None
|
|
|
|
def GetPhotoEditLink(self):
|
|
for a_link in self.link:
|
|
if a_link.rel == PHOTO_EDIT_LINK_REL:
|
|
return a_link
|
|
return None
|
|
|
|
def ContactEntryFromString(xml_string):
|
|
return atom.CreateClassFromXMLString(ContactEntry, xml_string)
|
|
|
|
class ContactsFeed(gdata.BatchFeed, gdata.LinkFinder):
|
|
"""A Google contacts feed flavor of an Atom Feed."""
|
|
_tag = 'feed'
|
|
_namespace = atom.ATOM_NAMESPACE
|
|
_children = gdata.BatchFeed._children.copy()
|
|
_children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', [ContactEntry])
|
|
|
|
def __init__(self):
|
|
gdata.BatchFeed.__init__(self)
|
|
|
|
def ContactsFeedFromString(xml_string):
|
|
return atom.CreateClassFromXMLString(ContactsFeed, xml_string)
|
|
|
|
class GroupEntry(gdata.BatchEntry):
|
|
"""Represents a contact group."""
|
|
_children = gdata.BatchEntry._children.copy()
|
|
_children['{%s}deleted' % gdata.GDATA_NAMESPACE] = ('deleted', Deleted)
|
|
_children['{%s}extendedProperty' % gdata.GDATA_NAMESPACE] = ('extended_property', [gdata.ExtendedProperty])
|
|
|
|
_attributes = gdata.BatchEntry._attributes.copy()
|
|
_attributes['{%s}etag' % gdata.GDATA_NAMESPACE] = 'etag'
|
|
|
|
def __init__(self,
|
|
title=None,
|
|
deleted=None,
|
|
extended_property=None,
|
|
etag=None):
|
|
gdata.BatchEntry.__init__(self)
|
|
self.title = title
|
|
self.deleted = deleted
|
|
self.extended_property = extended_property or []
|
|
self.etag = etag
|
|
|
|
def GroupEntryFromString(xml_string):
|
|
return atom.CreateClassFromXMLString(GroupEntry, xml_string)
|
|
|
|
class GroupsFeed(gdata.BatchFeed):
|
|
"""A Google contact groups feed flavor of an Atom Feed."""
|
|
_tag = 'feed'
|
|
_namespace = atom.ATOM_NAMESPACE
|
|
_children = gdata.BatchFeed._children.copy()
|
|
_children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', [GroupEntry])
|
|
|
|
def __init__(self):
|
|
gdata.BatchFeed.__init__(self)
|
|
|
|
def GroupsFeedFromString(xml_string):
|
|
return atom.CreateClassFromXMLString(GroupsFeed, xml_string)
|