This page is tracking of progress for GSoC 2011 Project: Integration with External API's
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)
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.
Problem: Student may not be awere that proposal is syncronised only when he/she clicks “Sync Now” button.
Solution: Give responsibility to student.
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: Google Documents no longer supports HTML editing. We export document format documents as HTML. This document comes style embed in.
Syncing proposal is student‘s responsibity. Student selects it’s document through an autocomplete widget after logged in to Google Documents.
Export a survey as either a pdf, google doc, plain text, something to save the entire webpage view.
Program administrators have spreadsheets that will enable students to have tracking numbers for their welcome packages and tshirts. Same for payment status.
Export some statistics and data to Google Documents to work on or to integrate with other services like Fusion Tables.
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 (on Google Code), issue 1243 (on Google Code) |
17 August - 26 August (Week 13) | Export Melange stuff for developers' use |
It's important to authenticate user without leaving page especially if user has some unposted data on page. Popup mechanism works in the following way.
Mario delivered me notes for my project from discussion with Melange team.
Bacause GAE filesystem is not writable it‘s not possible to export a document with current GData API, we talked how to overcome this. We decided, to modify gdata library as least as possible, we need to extend ‘Export’ funciton’s defination to accept a memory file besides file path. Not broking current API is important.
I asked Mario about easiest integration of ‘gdata.js’ script for each page that uses it. I asked how to eliminate initializing it in every page (by moving initialization to base template). The reason for this was, in future ther would be probably lots of pages that uses ‘gdata.js’ script and i wanted to move intialization code to base.html where initializaiton is done automatically.
Mario conclusion: “sometimes it's a tradeoff between DRY and YAGNI :)”
We decided to keep the initalization in each page uses ‘gdata.js’ until we really need to move it to the base template.
It‘s not possible to show OAuth roundtrip in an IFrame. Mario pointed a few ways of possible solutions. I tried on a https connection but that didn’t work. So we had to decide to show OAuth roundtrip in a popup window. I created an issue for this.
for proposal sync page, we decided leaving search queries to GData API, instead of getting full documents after the page is loaded.
Mario suggested to use Restful API for GData on client-side as there isn‘t a ready JS API. This will also prevent wasting datastore cycles as we won’t run two transaction for the same entities.
We talked about how to skip popup blockers for popup pages. We decided we should trigger popup mechanism exactly just after a click event occurs. We rediscussed our current popup mechanism and decided to make some changes on design through this.