blob: f48947f6b4cdaa8744625c25949dffccfe92e439 [file] [log] [blame]
#labels gsoc2011,externalapisproject
#Tracks progress for the "integration with external apis" project.
= 1. Introduction =
This page is tracking of progress for GSoC 2011 Project: Integration with External API's
----
= 2. Requirements =
== 2.1 Melange Lists ==
===2.1.1 Overview===
Basically an export button for each lists on Melange that triggers an export mechanism to Google SpreadSheets. (including OAuth roundtrip, access token storing on datastore)
===2.1.2 Problems & Solutions===
* *Problem:* exporting a JavaScript list
* *Solution:*
== 2.2 Student Proposals ==
=== 2.2.1 Overview ===
Students will be able to edit their proposals through tinyMCE editor or link to a Google Document file. There will be a "Sync Now" button to syncronize proposal that Melage holds with actual Google Documents file.
=== 2.2.2 Problems & Solutions ===
* *Problem:* Student may not be awere that proposal is syncronised only when he/she clicks "Sync Now" button.
* *Solution1:* Give responsibility to student.
* *Solution2:* Sync proposal with stored ACL. Check for single revisions and get the closest revision to deadline.
* *Problem:* As Google Documents stores HTML files in full-HTML form (including images, css files etc.) a method must be implemented to embed that document to actual proposal entry.
* *Solution:*
----
= Design & Terminology =
== Resource ==
Resource is a document or file that is exported to GDocs and being kept track of. When Melange exports a document to GDocs it will store returned document ID from Google Documents API. This document should be associated with user for whom resource exported for, and with a unique key that tells where the resource exported from. This shows the basic structure of Resource class:
{{{
class Resource(db.Model):
"""Model of an exported Google Docs resource
"""
#: Required field storing "ID" of exported resource.
#: This value is returned from Google Documents at first upload.
resource_id = db.StringProperty(required=True)
#: Name of the resource. This value is changed only when
#: actual name of exported Google document changes.
resource_name = db.StringProperty(required=True)
#: Owner of document for whom document exported for, and
#: whose Google Documents account is expected to has the resource.
owner = db.ReferenceProperty(reference_class=soc.models.user.User,
required=True,
collection_name='exported_documents',
verbose_name=ugettext('Owner'))
}}}