#!/usr/bin/env python # # Copyright 2009 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. # This module is used for version 2 of the Google Data APIs. """Provides classes and constants for XML in the Google Project Hosting API. Canonical documentation for the raw XML which these classes represent can be found here: http://code.google.com/p/support/wiki/IssueTrackerAPI """ __author__ = 'jlapenna@google.com (Joe LaPenna)' import atom.core import gdata.data ISSUES_TEMPLATE = '{http://schemas.google.com/projecthosting/issues/2009}%s' ISSUES_FULL_FEED = '/feeds/issues/p/%s/issues/full' COMMENTS_FULL_FEED = '/feeds/issues/p/%s/issues/%s/comments/full' class Uri(atom.core.XmlElement): """The issues:uri element.""" _qname = ISSUES_TEMPLATE % 'uri' class Username(atom.core.XmlElement): """The issues:username element.""" _qname = ISSUES_TEMPLATE % 'username' class Cc(atom.core.XmlElement): """The issues:cc element.""" _qname = ISSUES_TEMPLATE % 'cc' uri = Uri username = Username class Label(atom.core.XmlElement): """The issues:label element.""" _qname = ISSUES_TEMPLATE % 'label' class Owner(atom.core.XmlElement): """The issues:owner element.""" _qname = ISSUES_TEMPLATE % 'owner' uri = Uri username = Username class Stars(atom.core.XmlElement): """The issues:stars element.""" _qname = ISSUES_TEMPLATE % 'stars' class State(atom.core.XmlElement): """The issues:state element.""" _qname = ISSUES_TEMPLATE % 'state' class Status(atom.core.XmlElement): """The issues:status element.""" _qname = ISSUES_TEMPLATE % 'status' class Summary(atom.core.XmlElement): """The issues:summary element.""" _qname = ISSUES_TEMPLATE % 'summary' class OwnerUpdate(atom.core.XmlElement): """The issues:ownerUpdate element.""" _qname = ISSUES_TEMPLATE % 'ownerUpdate' class CcUpdate(atom.core.XmlElement): """The issues:ccUpdate element.""" _qname = ISSUES_TEMPLATE % 'ccUpdate' class Updates(atom.core.XmlElement): """The issues:updates element.""" _qname = ISSUES_TEMPLATE % 'updates' summary = Summary status = Status ownerUpdate = OwnerUpdate label = [Label] ccUpdate = [CcUpdate] class IssueEntry(gdata.data.GDEntry): """Represents the information of one issue.""" _qname = atom.data.ATOM_TEMPLATE % 'entry' owner = Owner cc = [Cc] label = [Label] stars = Stars state = State status = Status class IssuesFeed(gdata.data.GDFeed): """An Atom feed listing a project's issues.""" entry = [IssueEntry] class CommentEntry(gdata.data.GDEntry): """An entry detailing one comment on an issue.""" _qname = atom.data.ATOM_TEMPLATE % 'entry' updates = Updates class CommentsFeed(gdata.data.GDFeed): """An Atom feed listing a project's issue's comments.""" entry = [CommentEntry]