#!/usr/bin/python # # Copyright (C) 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. """Contains the data classes of the Google Finance Portfolio Data API""" __author__ = 'j.s@google.com (Jeff Scudder)' import atom.core import atom.data import gdata.data import gdata.opensearch.data GF_TEMPLATE = '{http://schemas.google.com/finance/2007/}%s' class Commission(atom.core.XmlElement): """Commission for the transaction""" _qname = GF_TEMPLATE % 'commission' money = [gdata.data.Money] class CostBasis(atom.core.XmlElement): """Cost basis for the portfolio or position""" _qname = GF_TEMPLATE % 'costBasis' money = [gdata.data.Money] class DaysGain(atom.core.XmlElement): """Today's gain for the portfolio or position""" _qname = GF_TEMPLATE % 'daysGain' money = [gdata.data.Money] class Gain(atom.core.XmlElement): """Total gain for the portfolio or position""" _qname = GF_TEMPLATE % 'gain' money = [gdata.data.Money] class MarketValue(atom.core.XmlElement): """Market value for the portfolio or position""" _qname = GF_TEMPLATE % 'marketValue' money = [gdata.data.Money] class PortfolioData(atom.core.XmlElement): """Data for the portfolio""" _qname = GF_TEMPLATE % 'portfolioData' return_overall = 'returnOverall' currency_code = 'currencyCode' return3y = 'return3y' return4w = 'return4w' market_value = MarketValue return_y_t_d = 'returnYTD' cost_basis = CostBasis gain_percentage = 'gainPercentage' days_gain = DaysGain return3m = 'return3m' return5y = 'return5y' return1w = 'return1w' gain = Gain return1y = 'return1y' class PortfolioEntry(gdata.data.GDEntry): """Describes an entry in a feed of Finance portfolios""" portfolio_data = PortfolioData class PortfolioFeed(gdata.data.GDFeed): """Describes a Finance portfolio feed""" entry = [PortfolioEntry] class PositionData(atom.core.XmlElement): """Data for the position""" _qname = GF_TEMPLATE % 'positionData' return_y_t_d = 'returnYTD' return5y = 'return5y' return_overall = 'returnOverall' cost_basis = CostBasis return3y = 'return3y' return1y = 'return1y' return4w = 'return4w' shares = 'shares' days_gain = DaysGain gain_percentage = 'gainPercentage' market_value = MarketValue gain = Gain return3m = 'return3m' return1w = 'return1w' class Price(atom.core.XmlElement): """Price of the transaction""" _qname = GF_TEMPLATE % 'price' money = [gdata.data.Money] class Symbol(atom.core.XmlElement): """Stock symbol for the company""" _qname = GF_TEMPLATE % 'symbol' symbol = 'symbol' exchange = 'exchange' full_name = 'fullName' class PositionEntry(gdata.data.GDEntry): """Describes an entry in a feed of Finance positions""" symbol = Symbol position_data = PositionData class PositionFeed(gdata.data.GDFeed): """Describes a Finance position feed""" entry = [PositionEntry] class TransactionData(atom.core.XmlElement): """Data for the transction""" _qname = GF_TEMPLATE % 'transactionData' shares = 'shares' notes = 'notes' date = 'date' type = 'type' commission = Commission price = Price class TransactionEntry(gdata.data.GDEntry): """Describes an entry in a feed of Finance transactions""" transaction_data = TransactionData class TransactionFeed(gdata.data.GDFeed): """Describes a Finance transaction feed""" entry = [TransactionEntry]