faset over fra Z3950 til google books
This commit is contained in:
1
python/gdata/calendar_resource/__init__.py
Normal file
1
python/gdata/calendar_resource/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
|
200
python/gdata/calendar_resource/client.py
Normal file
200
python/gdata/calendar_resource/client.py
Normal file
@@ -0,0 +1,200 @@
|
||||
#!/usr/bin/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.
|
||||
|
||||
"""CalendarResourceClient simplifies Calendar Resources API calls.
|
||||
|
||||
CalendarResourceClient extends gdata.client.GDClient to ease interaction with
|
||||
the Google Apps Calendar Resources API. These interactions include the ability
|
||||
to create, retrieve, update, and delete calendar resources in a Google Apps
|
||||
domain.
|
||||
"""
|
||||
|
||||
|
||||
__author__ = 'Vic Fryzel <vf@google.com>'
|
||||
|
||||
|
||||
import gdata.calendar_resource.data
|
||||
import gdata.client
|
||||
import urllib
|
||||
|
||||
|
||||
# Feed URI template. This must end with a /
|
||||
# The strings in this template are eventually replaced with the API version
|
||||
# and Google Apps domain name, respectively.
|
||||
RESOURCE_FEED_TEMPLATE = '/a/feeds/calendar/resource/%s/%s/'
|
||||
|
||||
|
||||
class CalendarResourceClient(gdata.client.GDClient):
|
||||
"""Client extension for the Google Calendar Resource API service.
|
||||
|
||||
Attributes:
|
||||
host: string The hostname for the Calendar Resouce API service.
|
||||
api_version: string The version of the Calendar Resource API.
|
||||
"""
|
||||
|
||||
host = 'apps-apis.google.com'
|
||||
api_version = '2.0'
|
||||
auth_service = 'apps'
|
||||
auth_scopes = gdata.gauth.AUTH_SCOPES['apps']
|
||||
ssl = True
|
||||
|
||||
def __init__(self, domain, auth_token=None, **kwargs):
|
||||
"""Constructs a new client for the Calendar Resource API.
|
||||
|
||||
Args:
|
||||
domain: string The Google Apps domain with Calendar Resources.
|
||||
auth_token: (optional) gdata.gauth.ClientLoginToken, AuthSubToken, or
|
||||
OAuthToken which authorizes this client to edit the calendar resource
|
||||
data.
|
||||
kwargs: The other parameters to pass to the gdata.client.GDClient
|
||||
constructor.
|
||||
"""
|
||||
gdata.client.GDClient.__init__(self, auth_token=auth_token, **kwargs)
|
||||
self.domain = domain
|
||||
|
||||
def make_resource_feed_uri(self, resource_id=None, params=None):
|
||||
"""Creates a resource feed URI for the Calendar Resource API.
|
||||
|
||||
Using this client's Google Apps domain, create a feed URI for calendar
|
||||
resources in that domain. If a resource_id is provided, return a URI
|
||||
for that specific resource. If params are provided, append them as GET
|
||||
params.
|
||||
|
||||
Args:
|
||||
resource_id: string (optional) The ID of the calendar resource for which
|
||||
to make a feed URI.
|
||||
params: dict (optional) key -> value params to append as GET vars to the
|
||||
URI. Example: params={'start': 'my-resource-id'}
|
||||
Returns:
|
||||
A string giving the URI for calendar resources for this client's Google
|
||||
Apps domain.
|
||||
"""
|
||||
uri = RESOURCE_FEED_TEMPLATE % (self.api_version, self.domain)
|
||||
if resource_id:
|
||||
uri += resource_id
|
||||
if params:
|
||||
uri += '?' + urllib.urlencode(params)
|
||||
return uri
|
||||
|
||||
MakeResourceFeedUri = make_resource_feed_uri
|
||||
|
||||
def get_resource_feed(self, uri=None, **kwargs):
|
||||
"""Fetches a ResourceFeed of calendar resources at the given URI.
|
||||
|
||||
Args:
|
||||
uri: string The URI of the feed to pull.
|
||||
kwargs: The other parameters to pass to gdata.client.GDClient.get_feed().
|
||||
|
||||
Returns:
|
||||
A ResourceFeed object representing the feed at the given URI.
|
||||
"""
|
||||
|
||||
if uri is None:
|
||||
uri = self.MakeResourceFeedUri()
|
||||
return self.get_feed(
|
||||
uri,
|
||||
desired_class=gdata.calendar_resource.data.CalendarResourceFeed,
|
||||
**kwargs)
|
||||
|
||||
GetResourceFeed = get_resource_feed
|
||||
|
||||
def get_resource(self, uri=None, resource_id=None, **kwargs):
|
||||
"""Fetches a single calendar resource by resource ID.
|
||||
|
||||
Args:
|
||||
uri: string The base URI of the feed from which to fetch the resource.
|
||||
resource_id: string The string ID of the Resource to fetch.
|
||||
kwargs: The other parameters to pass to gdata.client.GDClient.get_entry().
|
||||
|
||||
Returns:
|
||||
A Resource object representing the calendar resource with the given
|
||||
base URI and resource ID.
|
||||
"""
|
||||
|
||||
if uri is None:
|
||||
uri = self.MakeResourceFeedUri(resource_id)
|
||||
return self.get_entry(
|
||||
uri,
|
||||
desired_class=gdata.calendar_resource.data.CalendarResourceEntry,
|
||||
**kwargs)
|
||||
|
||||
GetResource = get_resource
|
||||
|
||||
def create_resource(self, resource_id, resource_common_name=None,
|
||||
resource_description=None, resource_type=None, **kwargs):
|
||||
"""Creates a calendar resource with the given properties.
|
||||
|
||||
Args:
|
||||
resource_id: string The resource ID of the calendar resource.
|
||||
resource_common_name: string (optional) The common name of the resource.
|
||||
resource_description: string (optional) The description of the resource.
|
||||
resource_type: string (optional) The type of the resource.
|
||||
kwargs: The other parameters to pass to gdata.client.GDClient.post().
|
||||
|
||||
Returns:
|
||||
gdata.calendar_resource.data.CalendarResourceEntry of the new resource.
|
||||
"""
|
||||
new_resource = gdata.calendar_resource.data.CalendarResourceEntry(
|
||||
resource_id=resource_id,
|
||||
resource_common_name=resource_common_name,
|
||||
resource_description=resource_description,
|
||||
resource_type=resource_type)
|
||||
return self.post(new_resource, self.MakeResourceFeedUri(), **kwargs)
|
||||
|
||||
CreateResource = create_resource
|
||||
|
||||
def update_resource(self, resource_id, resource_common_name=None,
|
||||
resource_description=None, resource_type=None, **kwargs):
|
||||
"""Updates the calendar resource with the given resource ID.
|
||||
|
||||
Args:
|
||||
resource_id: string The resource ID of the calendar resource to update.
|
||||
resource_common_name: string (optional) The common name to give the
|
||||
resource.
|
||||
resource_description: string (optional) The description to give the
|
||||
resource.
|
||||
resource_type: string (optional) The type to give the resource.
|
||||
kwargs: The other parameters to pass to gdata.client.GDClient.update().
|
||||
|
||||
Returns:
|
||||
gdata.calendar_resource.data.CalendarResourceEntry of the updated
|
||||
resource.
|
||||
"""
|
||||
new_resource = gdata.calendar_resource.data.CalendarResourceEntry(
|
||||
resource_id=resource_id,
|
||||
resource_common_name=resource_common_name,
|
||||
resource_description=resource_description,
|
||||
resource_type=resource_type)
|
||||
return self.update(
|
||||
new_resource,
|
||||
**kwargs)
|
||||
|
||||
UpdateResource = update_resource
|
||||
|
||||
def delete_resource(self, resource_id, **kwargs):
|
||||
"""Deletes the calendar resource with the given resource ID.
|
||||
|
||||
Args:
|
||||
resource_id: string The resource ID of the calendar resource to delete.
|
||||
kwargs: The other parameters to pass to gdata.client.GDClient.delete()
|
||||
|
||||
Returns:
|
||||
An HTTP response object. See gdata.client.request().
|
||||
"""
|
||||
|
||||
return self.delete(self.MakeResourceFeedUri(resource_id), **kwargs)
|
||||
|
||||
DeleteResource = delete_resource
|
193
python/gdata/calendar_resource/data.py
Normal file
193
python/gdata/calendar_resource/data.py
Normal file
@@ -0,0 +1,193 @@
|
||||
#!/usr/bin/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 for parsing and generating XML for the Calendar Resource API."""
|
||||
|
||||
|
||||
__author__ = 'Vic Fryzel <vf@google.com>'
|
||||
|
||||
|
||||
import atom.core
|
||||
import atom.data
|
||||
import gdata.apps
|
||||
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 name of the resourceId property
|
||||
RESOURCE_ID_NAME = 'resourceId'
|
||||
# The apps:property name of the resourceCommonName property
|
||||
RESOURCE_COMMON_NAME_NAME = 'resourceCommonName'
|
||||
# The apps:property name of the resourceDescription property
|
||||
RESOURCE_DESCRIPTION_NAME = 'resourceDescription'
|
||||
# The apps:property name of the resourceType property
|
||||
RESOURCE_TYPE_NAME = 'resourceType'
|
||||
|
||||
|
||||
class CalendarResourceEntry(gdata.data.GDEntry):
|
||||
"""Represents a Calendar Resource entry in object form."""
|
||||
|
||||
property = [gdata.apps_property.AppsProperty]
|
||||
|
||||
def _GetProperty(self, name):
|
||||
"""Get the apps:property value with the given name.
|
||||
|
||||
Args:
|
||||
name: string Name of the apps:property value to get.
|
||||
|
||||
Returns:
|
||||
The apps:property value with the given name, or None if the name was
|
||||
invalid.
|
||||
"""
|
||||
|
||||
for p in self.property:
|
||||
if p.name == name:
|
||||
return p.value
|
||||
return None
|
||||
|
||||
def _SetProperty(self, name, value):
|
||||
"""Set the apps:property value with the given name to the given value.
|
||||
|
||||
Args:
|
||||
name: string Name of the apps:property value to set.
|
||||
value: string Value to give the apps:property value with the given name.
|
||||
"""
|
||||
|
||||
for i in range(len(self.property)):
|
||||
if self.property[i].name == name:
|
||||
self.property[i].value = value
|
||||
return
|
||||
self.property.append(gdata.apps_property.AppsProperty(name=name, value=value))
|
||||
|
||||
def GetResourceId(self):
|
||||
"""Get the resource ID of this Calendar Resource object.
|
||||
|
||||
Returns:
|
||||
The resource ID of this Calendar Resource object as a string or None.
|
||||
"""
|
||||
|
||||
return self._GetProperty(RESOURCE_ID_NAME)
|
||||
|
||||
def SetResourceId(self, value):
|
||||
"""Set the resource ID of this Calendar Resource object.
|
||||
|
||||
Args:
|
||||
value: string The new resource ID value to give this object.
|
||||
"""
|
||||
|
||||
self._SetProperty(RESOURCE_ID_NAME, value)
|
||||
|
||||
resource_id = pyproperty(GetResourceId, SetResourceId)
|
||||
|
||||
def GetResourceCommonName(self):
|
||||
"""Get the common name of this Calendar Resource object.
|
||||
|
||||
Returns:
|
||||
The common name of this Calendar Resource object as a string or None.
|
||||
"""
|
||||
|
||||
return self._GetProperty(RESOURCE_COMMON_NAME_NAME)
|
||||
|
||||
def SetResourceCommonName(self, value):
|
||||
"""Set the common name of this Calendar Resource object.
|
||||
|
||||
Args:
|
||||
value: string The new common name value to give this object.
|
||||
"""
|
||||
|
||||
self._SetProperty(RESOURCE_COMMON_NAME_NAME, value)
|
||||
|
||||
resource_common_name = pyproperty(
|
||||
GetResourceCommonName,
|
||||
SetResourceCommonName)
|
||||
|
||||
def GetResourceDescription(self):
|
||||
"""Get the description of this Calendar Resource object.
|
||||
|
||||
Returns:
|
||||
The description of this Calendar Resource object as a string or None.
|
||||
"""
|
||||
|
||||
return self._GetProperty(RESOURCE_DESCRIPTION_NAME)
|
||||
|
||||
def SetResourceDescription(self, value):
|
||||
"""Set the description of this Calendar Resource object.
|
||||
|
||||
Args:
|
||||
value: string The new description value to give this object.
|
||||
"""
|
||||
|
||||
self._SetProperty(RESOURCE_DESCRIPTION_NAME, value)
|
||||
|
||||
resource_description = pyproperty(
|
||||
GetResourceDescription,
|
||||
SetResourceDescription)
|
||||
|
||||
def GetResourceType(self):
|
||||
"""Get the type of this Calendar Resource object.
|
||||
|
||||
Returns:
|
||||
The type of this Calendar Resource object as a string or None.
|
||||
"""
|
||||
|
||||
return self._GetProperty(RESOURCE_TYPE_NAME)
|
||||
|
||||
def SetResourceType(self, value):
|
||||
"""Set the type value of this Calendar Resource object.
|
||||
|
||||
Args:
|
||||
value: string The new type value to give this object.
|
||||
"""
|
||||
|
||||
self._SetProperty(RESOURCE_TYPE_NAME, value)
|
||||
|
||||
resource_type = pyproperty(GetResourceType, SetResourceType)
|
||||
|
||||
def __init__(self, resource_id=None, resource_common_name=None,
|
||||
resource_description=None, resource_type=None, *args, **kwargs):
|
||||
"""Constructs a new CalendarResourceEntry object with the given arguments.
|
||||
|
||||
Args:
|
||||
resource_id: string (optional) The resource ID to give this new object.
|
||||
resource_common_name: string (optional) The common name to give this new
|
||||
object.
|
||||
resource_description: string (optional) The description to give this new
|
||||
object.
|
||||
resource_type: string (optional) The type to give this new object.
|
||||
args: The other parameters to pass to gdata.entry.GDEntry constructor.
|
||||
kwargs: The other parameters to pass to gdata.entry.GDEntry constructor.
|
||||
"""
|
||||
super(CalendarResourceEntry, self).__init__(*args, **kwargs)
|
||||
if resource_id:
|
||||
self.resource_id = resource_id
|
||||
if resource_common_name:
|
||||
self.resource_common_name = resource_common_name
|
||||
if resource_description:
|
||||
self.resource_description = resource_description
|
||||
if resource_type:
|
||||
self.resource_type = resource_type
|
||||
|
||||
|
||||
class CalendarResourceFeed(gdata.data.GDFeed):
|
||||
"""Represents a feed of CalendarResourceEntry objects."""
|
||||
|
||||
# Override entry so that this feed knows how to type its list of entries.
|
||||
entry = [CalendarResourceEntry]
|
Reference in New Issue
Block a user