Merged back the wiki.
diff --git a/MeetingAgendasNotes.wiki b/MeetingAgendasNotes.wiki index 50966e1..f0fe7ee 100644 --- a/MeetingAgendasNotes.wiki +++ b/MeetingAgendasNotes.wiki
@@ -13,6 +13,68 @@ <wiki:toc max_depth="2" /> +== 12 Jul 2010 Team Conference Call == + +* Chaired by:* Sverre Rabbelier <br/> +* Notes taken by:* Leo (Chong Liu)<br/> + + +=== Meeting notes 12 Jul 2010 === + * Felix couldn't participate due to issues with his internet connection. + * Update on testing project: + * Leo solved the problem that coverage does not track the properties definition of Melange models by using pymox stubout to stub out nose.plugins.cover.Coverage.begin so that it loads Melange before the testing coverage starts. + * The test coverage of Melange is now over 50%. + * He further worked on various views, e.g. sponsor, program, student, organization, etc. + * He will do more view and logic tests and aim to increase the overall code coverage to over 60%. + * Update on document editor project: + * Pavel has implemented all functions of revisions, e.g. "Revert to revision", and uploaded them to his appspot instance. + * He managed to make button work with the help of Mario. + * He plans to deploy python html diff engine, create view that show diffs for revisions and make code clean-up this week. + * Daniel will send Pavel some feedback later. + * Update on social features: + * Savitha worked on getting the workflow for the Calendars features and uploaded the latest to my appspot, e.g. Progadmin activates Calendars, Orgadmins get notifications, Orgadmins accept, all users can now view all calendars and events, users can add events by selecting which Calendar they want add to (non-owners such as students and mentors will have to wait for approval). + * She will work on user authentication (plain text password and user name are currently used) and the synchronizing of calendar events between Melange and Google Calendar. + * She considers GData APIs but needs to figure out a way to get Auth token from the user API with Madhu. + * She and Madhu are going to go through the workflow, code and integration. + * *Important notes:* + * Daniel suggested to take meeting notes on Google Wave and Sverre suggested to still put one copy on the wiki. Leo will have a try. + * Felix needs to complete a blog post. + +== 5 Jul 2010 Team Conference Call == + +* Chaired by:* Sverre Rabbelier <br/> +* Notes taken by:* Leo (Chong Liu)<br/> + + +=== Meeting notes 5 Jul 2010 === + * Blog posts: All students have posted their blogs in this week. + * Update on data seeder: + * The seeder is able to seed models without any references and the data providers work correctly. + * Error/progress reporting has been implemented on the backend but not on the web interface frontend. + * Mario and Felix think about integrating a client-side HTML templating engine in JavaScript to Melange in order to build HTML on the fly on the client side. + * Three options are being considered, i.e. pure, jQuery tempest plugin and DOJO DTL. Mario feels that the third option may be too much messing on the current architecture. + * Mario and Felix will further talk about the three options after the meeting, possibly on the list. + * Update on testing project: + * Leo found that Python coverage does not track the properties definition of models. So, doing model tests adds little testing coverage. + * He also found there are not a lot to do logic tests because most methods of other logical are inherited from base logic. + * He will focus on doing view tests now, especially on those with low coverage. + * He has not done a lot last week due to breakdown of his hard drive and he'll try to do more this week. + * Update on document editor project: + * Pavel implemented views that show revision with given revision number and lists all the revisions for the given entity and uploaded them to his GAE instance, which looks good. + * He met two problems. The first one is to track different key/value pairs for the params dict. He solved it by using a debugger. The second one is to create configuration JSON for buttons and actions with list framework. With the help of Daniel, Sverre and Mario and reading the JQGrid documentation, he has started to understand the lists and could even create some buttons and associate behaviour. + * He will do his best to finish views in a couple of days to start implementing diffs before the midterm evaluation. + * Update on social features: + * Savitha started working on the Calendars/Events feature: she has created the event data model/logic/views (e.g. list events), and uploaded to her GAE instance http://melange-social.appspot.com/site/show/site. + * Two types of events are created, one is the local event_entity stored in Melange and the other is the one sent to Google Calendar. They are not synchronized until now and Savitha is working on it. + * The UI of the calendars is being discussed on the mailing list and not decided yet. Google Calendar UI is currently used. + * User Page has been mostly done. The new CSS designs will be uploaded by this wednesday. + * There are no restrictions for different user roles at present, e.g. everyone could create their User Pages and the go on to add events to the Calendar. Savitha is working on it and will get it done hopefully by this weekend. + * Savitha decided to get the Key for the JS API maps following Mario's advice. + * *Important notes:* + * Pavel and Felix found the params mechanism a bit hard to understand, especially combined with other things such as patterns and checking access etc. Felix thinks more documentation is needed. Sverre encourages students to add their findings to the params wiki page http://code.google.com/p/soc/wiki/SocParams . + * Sverre suggests Pavel and Mario together with him to create a wiki page for the list framework. + * Mario suggests Pavel to add link of JQGrid documentation that it's not yet linked, if any, inside the text of the ListsProtocol wiki page. + == 28 Jun 2010 Team Conference Call == * Chaired by:* Sverre Rabbelier <br/>
diff --git a/SocialFeaturesMelangeGSoC2010.wiki b/SocialFeaturesMelangeGSoC2010.wiki index e67fc2d..17123bc 100644 --- a/SocialFeaturesMelangeGSoC2010.wiki +++ b/SocialFeaturesMelangeGSoC2010.wiki
@@ -266,6 +266,123 @@ http://www.comp.nus.edu.sg/~savitha/gsoc/calendars_usecase2.png +== Latest Workflow (as of Week 7) == + +=== User Pages === + + # User Pages features are only accessible for those who have been assigned a role. + # The workflow changes slightly based on the different roles Users will have. + # User Page entities are Program scoped. + +*Student Role* : + # Users can Register as a Student + # Upon successful registration, they will see a red highlighted "Create User Page" link on the sidebar. + # They can click on this to activate the User Pages feature and fill in the User Page forms. + # Once they create their User Page entity, it will be listed in the "List User Pages" link and all other users will be able to view their page if they have set their User Pages as "Visible". + # Each User may edit their User Page visibility and other information appearing on their User Page at anytime by selecting "Edit User Page". + +*Mentor* : + # Users can apply to become a mentor for an accepted organization. + # The respective org_admin then accepts the user as a mentor. + # The user is then notified of his acceptance as a mentor and made to fill out the mentor registration form. + # Upon successful registration as mentor, the red highlighted "Create User Page" link will appear. + # The steps from this point on are same as the Student Role. + +*Org Admin and Program Admin*: + # Upon accepting invitation to be org/program admin, they will be fill in the form to register. + # Upon successful registration, they will see the red highlighted "Create User Page" link appear on the sidebar. + # The steps from this point on are same as the Student Role. + +===Calendars=== + +*Calendar Feature Activation* + + # Once the timeline passes the "Accepted Organization Announced" deadline, the program_admin will see a red highlighted "Activate Calendars for Orgs" link on their sidebar. + # Cliking on this will trigger the creation of one calendar for all accepted organizations. + # Simultaneously, notifications will be sent to all org_admins about the new feature. + # Org_Admins can choose to accept their calendar, upon which time, their user email will be added with 'owner' rights to their organization's Google calendar. + +*Calendars Feature* + + # Once the Calendar feature is officially "activated" by the program_admin, all users will see "Events", "List Events" and "Add Event" links on their sidebar. + # "Events" link will show them the calendars. They may select to view different calendars using a drop down box. + # "List Events" will give a list view of events with the respective event tags. + # "Add Event" will take them to a form, where users choose the calendar they want to add their event to and the fill in the other event details. + +*Event Creation by Owners*: + + # If the user posting the event has 'owner' rights(org_admin or program_admin) to the calendar they are posting to, the event entity will be created on Melange as well as on the actual Google Calendar immidiately. + +*Event Creation by Non-Owners*: + + # If the user posting the even does not have 'owner' access to the calendar, the even entity will still be created on Melange with status "Unconfirmed" and will not posted to the Google Calendar. Instead, a notification with the event details will be sent to the 'owner' of the Calendar. + # Upon recieving the notification, the owner may choose to accept the event, whereby the event will be posted to the Google Calendar, and the status of the correpoding event entity set to "Confirmed". + + += Code Work Flow & Documentation = + +== User Pages == + +*Main Files*: + +*Code*: + * User Page View - soc/modules/social/views/models/user_page.py + * User Page Model - soc/modules/social/models/user_page.py + * User Page Logic - soc/modules/social/logic/models/user_page.py + +*Other Files* + * edit.html - soc/templates/modules/social/edit.html + * view_page.html - soc/templates/modules/social/view_page.html + * userpage.css - soc/content/modules/social/css/userpage.css + +*User Page View*: + * *__init__* function: + # Access params are set for 'create','edit' and 'list' access for User Pages. + # new_params[] is used to set: *(i)* module and url names, *(ii)* templates for create, edit, view_page and list, *(iii)* create,edit and exclude dynaproperties, *(iv)* set public fields to be shown in User Page lists. + # Setting url patterns for 'create','edit','list' and 'viewpage'. + * *viewpage* function: + # sets the template to be used for View Page + # calls Logic method to get context, containing User Page entity details. + * *_editPost_* function: + # used to set User Page properties before User Page entity is created + # properties such as *(i)* User reference, *(ii)* link_id, *(iii)* last_modified, *(iv)* role_entity of user, *(v)* calls Logic functions to get Student Projects associated with the role of the User, *(vi)* sets tags associated with user, *(vii)* image property(yet to be fixed) *(viii)* call Logic functions to get additional Work and Education entities added from the POST dictionary. + * *_editGet_* function: + # sets 'link_id' and 'tags' as a string before going to edit page. + * *_edit_* function: + # if request method is 'GET', call logic function to get all Work and Education entities associated with User Page to load to edit form. + # if request method is 'POST', call logic function to create the additional Work and Education entities added to edit form. + * *getExtraMenus* function: + # creates Extra menu item called 'User (Community)' + # if user if not logged in, shows a 'Sign In' link + # if user if logged in, call redirect functions to get links for 'create', 'edit', 'view', and 'list' user pages based on respective access checks. + * *list* function: + # Filter and list user pages whose status is set to 'Visible'. + +*User Page Logic* + * *getRoleEntity* function: gets the role entity associated with current user. + * *getProjects* function: get student projects associated with current user. + # student projects in which current user is participating as student. + # student projects in which current user is particiapting as mentor. + # if current user is org_admin, all student projects associated with the org. + * *getEducation* function: + # gets all additional education-related field values from POST dict and updateOrCreates the Education entities. + * *getWork* function: + # gets all additional work-related field values from POST dict and updateOrCreates the Job entities. + * *getUserPageContext* function: + # gets the User Page entity, and the addtional education and job entities associated with the user. + +*User Page Model* + * Contains all the properties of the user page data model. + +*edit.html* + * *Javascript* functions: + # *afterLoad()* function: This function is called upon the loading of the page. It gets the additional education and job entities in the context and calls *getWork()* and *getEducation()* functions to create the additional fields in the form for these entities. + # *getWork()* function: for each work entity in the context dictionary, this creates the additional form fields and fills it in with the already existing work entities, if any. + # *getEducation()* function: for each education entity in the context dictionary, creates the additional education form feilds and fills it with respective values. + # *$('#moreEducation').click* function: Creates a new set of empty education form fields for user to fill. + # *$('#moreWork').click* function: Creates a new set of empty Work form fields for the user to fill. + + = Timeline = The tentative project timeline will be added here.