Remove inheritance from PolyModel in Answer and Linkable model. Replace PolyModel inheritance with base.ModelWithFieldAttributes.
A little explanation why we are trying to get rid of PolyModel. We decided to use PolyModel in order to get support for model inheritance in App Engine, however as we know this was a hacky workaround which added inheritance_line property to each model. Recent commits which added Linkable model caused our data viewer in admin console to show only one model "Linkable" since all of the classes inherited from it. Basically datastore viewer was useless plus we had a really big mess in datastore since everything was of one kind (Linkable). It's almost like creating one huge table in SQL database. Upcoming commits will eliminate all usage of PolyModel and finally remove PolyModel from our repository. We are still using inheritance however this doesn't modify how models are saved in data store so basically it's like copy and paste of properties from parent models.
Patch by: Pawel Solyga, Sverre Rabbelier
Copyright 2008 Google Inc.
All rights reserved.
App Engine SDK - Development tools for Google App Engine
CONTENTS
========
* Installing on Mac OSX
* Installing on Windows
* Installing on Linux and other platforms
* Running the SDK
* Using the SDK
INSTALLING ON Mac OSX
=====================
1) Download and install Python 2.5 from http://www.python.org/download/
2) Download the SDK installer from http://code.google.com/appengine/downloads
3) Install the SDK by double-clicking on the GoogleAppEngine.dmg file and
running the installer.
INSTALLING ON WINDOWS
=====================
1) Download and install Python 2.5 from http://www.python.org/download/
2) Download the SDK installer from http://code.google.com/appengine/downloads
2) Install the SDK by double-clicking on the GoogleAppEngine.msi file and
running the installer.
INSTALLING ON LINUX AND OTHER PLATFORMS
===============================
1) Download and install Python 2.5 from http://www.python.org/download/
2) Download the SDK zip file from http://code.google.com/appengine/downloads
3) Unpack the zip file.
RUNNING THE SDK
=========================
You can run the SDK with the following command:
dev_appserver.py [options] <application root>
Application root must be the path to the application to run in this server.
Must contain a valid app.yaml or app.yml file.
Options:
--help, -h View this helpful message.
--debug, -d Use debug logging. (Default false)
--clear_datastore, -c Clear the Datastore on startup. (Default false)
--address=ADDRESS, -a ADDRESS
Address to which this server should bind. (Default
localhost).
--port=PORT, -p PORT Port for the server to run on. (Default 8080)
--datastore_path=PATH Path to use for storing Datastore file stub data.
(Default /tmp/dev_appserver.datastore)
--history_path=PATH Path to use for storing Datastore history.
(Default /tmp/dev_appserver.datastore.history)
--require_indexes Disallows queries that require composite indexes
not defined in index.yaml.
--smtp_host=HOSTNAME SMTP host to send test mail to. Leaving this
unset will disable SMTP mail sending.
(Default '')
--smtp_port=PORT SMTP port to send test mail to.
(Default 25)
--smtp_user=USER SMTP user to connect as. Stub will only attempt
to login if this field is non-empty.
(Default '').
--smtp_password=PASSWORD Password for SMTP server.
(Default '')
--enable_sendmail Enable sendmail when SMTP not configured.
(Default false)
--show_mail_body Log the body of emails in mail stub.
(Default false)
--auth_domain Authorization domain that this app runs in.
(Default gmail.com)
--debug_imports Enables debug logging for module imports, showing
search paths used for finding modules and any
errors encountered during the import process.
--disable_static_caching Never allow the browser to cache static files.
(Default enable if expiration set in app.yaml)
USING THE SDK
=======================
For instructions on getting started with Google App Engine, please see the
Google App Engine Getting Started Guide
http://code.google.com/appengine/docs/gettingstarted