| #summary tracks progress for the "integration with external apis" project. |
| #labels Phase-Requirements |
| |
| <wiki:toc max_depth="3" /> |
| |
| = 1. Introduction = |
| |
| This page is tracking of progress for GSoC 2011 Project: Integration with External API's |
| ---- |
| |
| = 2. Requirements = |
| == 2.1 Melange Lists == |
| ===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) |
| ===Problems & Solutions=== |
| * *Problem:* exporting a JavaScript list |
| * *Solution:* export spreadsheet on client side. Implement JS methods over GData Protocols. |
| |
| == 2.2 Student Proposals == |
| ===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. |
| ===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:* |
| |
| == 2.3 Surveys (issue 1243) == |
| ===Overview=== |
| Export a survey as either a pdf, google doc, plain text, something to save the entire webpage view. |
| |
| == 2.4 Tracking Numbers (issue 1239) == |
| === Overview === |
| Program administrators have spreadsheets that will enable students to have tracking numbers for their welcome packages and tshirts. Same for payment status. |
| |
| == 2.5 Export Melange stuff for developers' use == |
| === Overview === |
| Export some statistics and data to Google Documents to work on or to integrate with other services like Fusion Tables. |
| |
| |
| ---- |
| |
| = 4. Project Timeline = |
| This table is based on deliverables. |
| |
| || 25 May - 31 May (Week 1) || Add Google Data packages to Melange. || |
| || 1 June - 7 June (Week 2) || Add related fields create required models. || |
| || 8 June - 21 June (Week 3,4) || Integrate OAuth. || |
| || 22 June - 12 July (Week 5,6,7) || Student proposal syncing. Write tests if possible. || |
| || 13 July - 15 July || Midterm Evaluation. || |
| || 15 July - 19 July (Week 8) || Learn how Melange lists actually works. || |
| || 20 July - 2 August (Week 9,10) || Melange List exporting. || |
| || 3 August - 17 August (Week 11,12) || Work on open issues about APIs. issue 1239, issue 1243 || |
| || 17 August - 26 August (Week 13) || Export Melange stuff for developers' use || |
| |
| = 5. Design & Terminology = |
| == 5.1 Open Auth Roundtrip == |
| https://lh3.googleusercontent.com/-G5GUxfUdXS0/TgC_I0dXVmI/AAAAAAAAADI/hAGOlYZngq0/s640/MelangeOAuth%252520%2525281%252529.png |
| == 5.2 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')) |
| }}} |
| ---- |
| =6. Meeting Notes & Agendas = |
| == Monday, May 16 18:30:00 in UTC (Skype Conference)== |
| === TODOs === |
| * Create the blogpost summarizing last week today. |
| * Have a call with your mentor this week, most of us are in PDT time zone. |
| * Put a link to your GAE instance on the wiki page (and blog if possible) |
| * Don't forget to make your next blogpost before the next meeting. |
| * Get ready to start coding! |
| |
| == Tuesday, May 20 20:00:00 in UTC (GTalk with Mario) == |
| |
| Mario delivered me notes for my project from discussion with Melange team. |
| ===TODOS:=== |
| * Update project requirements |
| * Start working on exporting a html document from Google Documents and integrating with Melange. |
| * Come up with a timeline. Designate deliverables. |
| * Focus on the main problems instead of thinking whole project or other stuff that is already known how to handle. |
| |
| == Monday, June 21 20:00:00 in UTC (GTalk with Mario) == |
| |
| ===TODOS:=== |
| * Store tokens in datastore. |
| * Provide a "remember me" checkbox with login button. |
| * Store "remember me" choice and access token in Profile model. |
| |
| == Monday, July 21 20:00:00 in UTC (GTalk with Mario) == |
| === Notes === |
| It's not convenient to export lists from server side. GAE has 30 second request limit that may prevent uploading big lists. Instead of that, we can upload spreadsheets with JS over GData rest protocol. |