Updated Design & Timeline(up until mid-term)
diff --git a/SocialFeaturesMelangeGSoC2010.wiki b/SocialFeaturesMelangeGSoC2010.wiki index 5b599cd..2ab916c 100644 --- a/SocialFeaturesMelangeGSoC2010.wiki +++ b/SocialFeaturesMelangeGSoC2010.wiki
@@ -36,7 +36,7 @@ # If they do not click on the email link, whenever they next log into Melange, they will see ‘User Page’ on their sidebar under the ‘User’ tab. Clicking on this will take them to the profile tab of their user page. # They may further update the data on their profile tab, or the other two (Project, MyStuff) tabs by clicking on the ‘Edit User Page’ button to be redirected to a form where they can edit/add data for all the three tabs. # The *Profile tab* will display a subset of the properties from the user_page data model. Profile related information such as contact, personal profile details, education and job information will be shown here. - # In the *Project tab*, students can fill in details of the project they are working on, while mentors can provide details about the project they are mentoring for. Organization Admins can use this page to provide information about all their student projects. Program Admins can use this page to provide general information about the GSoC/GHOP program itself. + # In the *Project tab*, students can fill in details of the project they are working on, while mentors can provide details about the project they are mentoring for. Past and Current project data for both mentors and students will be pulled from the database. Users can add on to it using a text field.Organization Admins can use this page to provide information about all their student projects. Program Admins can use this page to provide general information about the GSoC/GHOP program itself. # In the *My Stuff tab*, users can click on “Add Blog Feed”, to insert their blog url to display updates from their personal blogs using Melange’s RSS widget. For organization and program admins, there is provision to display two blog feeds. This is to display their own personal blog feed as well their organization/program blog feeds. # Once changes are saved, users may return anytime during the course of the program to change and save the information on their user pages. ----- @@ -54,12 +54,7 @@ The Data Models * user_page.py - * education.py (not finalized) - * job.py (not finalized) - * project_details.py - * project_update.py (Nice to have, if time permits) - * project_comment.py (Nice to have, if time permits) - + * project_details.py (pulled from database) Properties of user_page.py * user - *ReferenceProperty* @@ -67,66 +62,19 @@ * phone_number – *IntegerProperty* * address - *StringProperty* * website - *LinkProperty* - * about_myself - *StringProperty* - * activities – *StringProperty* - * books – *StringProperty* - * movies – *StringProperty* - * television - *StringProperty* + * biography - *TextProperty* * profile_picture – *BlobProperty* - * education – *ListProperty* - * job – *ListProperty* * last_modified - *DateTimeProperty* - * project_details – *ListProperty* + * project_details – *ListProperty* (pull from program database) * feed_url - *LinkProperty* * user_page_status - *StringProperty* * tags - *StringProperty* (for filtering in maps+calendars searches) -Properties of education.py - * user - *ReferenceProperty* - * college_name – *StringProperty* - * major_name – *StringProperty* - * start_date – *DateProperty* - * end_date – *DateProperty* - -Properties of job.py - * user - *ReferenceProperty* - * employer_name – *StringProperty* - * position_name – *StringProperty* - * start_date – *DateProperty* - * end_date – *DateProperty* - -Properties for project_details.py - * user - *ReferenceProperty* - * student - *ReferenceProperty* - * organization - *ReferenceProperty* - * mentor – *ReferenceProperty* - * project_title - *StringProperty* - * languages – *StringProperty* - * apis_frameworks – *IntegerProperty* - * related_url - *LinkProperty* - * project_overview - *StringProperty* - * other_general_info – *StringProperty* - * proposal_link = *LinkProperty* - * user_project_update – *ListProperty* (Nice to have, if time permits) - * current_project – *BooleanProperty* - * past_project - *BooleanProperty* - -Properties of for project_update.py - * project_details - *ReferenceProperty* - * update_text – *StringProperty* - * update_time – *DateTimeProperty* - * project_comment – *ListProperty* (Nice to have, if time permits) - -Properties of for project_comment.py - * project_update - *ReferenceProperty* - * comment_text – *StringProperty* - * comment_time – *DateTimeProperty* - * comment_user – *ReferenceProperty* The User page feature should be in one of the following states implied by the user_page_status property of the model. * Visible - This state occurs after the user is accepted into the program. Only the minimal information about the user already entered during registration period is shown on the user page. In this state, the user may edit or add to his user page at any time during the program. - * Invisible - This state of the user page can be activated by the user if the user wishes to prevent other users from viewing their profile. (Should this be allowed?) + * Invisible - This state of the user page can be activated by the user if the user wishes to prevent other users from viewing their profile. * Invalid - The user account has been terminated. ----- @@ -185,6 +133,10 @@ Workflow for Users: + * All calendars will be hosted under a single Google account owned by the program_admin. When the accepted organizations are announced, a new calendar can be created for each new organization. If organizations have participated in the program previously and they already have a calendar with the account, then that same calendar can be used. +The Google ids of org_admins can be added to their respective org calendars giving them +rights to publish on their calendar. +Org_admins can be notified about their org_calendar on acceptance. A short message and link can be added in their acceptance notification emails leading them to their org calendar page. (*Note* : Program_admins will have to provide the google account under which the program and org calendars are to be hosted.) * Click on 'Calendars' under the User tab in the sidebar. They view a single calendar containing events in the Program calendar as well as the events in their organization calendar. (Organization admins are owners of their respective org calendars.) * From this point onwards, users may choose any of the following: * *For Admins* Add a new event by clicking on the 'Add Event' button, which will take them to a form where they can fill in the event details and it will be shown on the org calendar. @@ -192,6 +144,7 @@ * *For Non-Admins* User can choose to request to add a new event by clicking on the 'Request Add Event' button. They will be redirected to a similar form as the admins 'Add Event' function. They can submit it and this event will be shown on the respective org or program calendar after it is approved by the respective admin. * View user's org events only. * View Program events only. + * Additionally, users can also subscribe to feeds to be notified about events with certain tags. ===Data Models=== @@ -203,11 +156,13 @@ * owner - *ReferenceProperty* * event_name - *StringProperty* * description – *StringProperty* - * location – *StrinkProperty* + * lat_location – *FloatProperty* + * long_location – *FloatProperty* * is_org_event – *BooleanProperty* * organization - *ReferenceProperty* * status - *StringProperty* * time - *DateTimeProperty* + * tags - *StringProperty* An event can only be published in one calendar(i.e. program calendar or org calendar). If is_org_event is true, then it will be published in the current user's org calendar, if is_org_event is set to false, then the event will be published in the program calendar. These two status properties differentiate the program admin and the org admins. @@ -219,7 +174,14 @@ * *is_declined* : If the calendar owner chooses to decline an event request this state is set. -===Views, Templates & Logic=== + + +=== APIs & Libraries === + * Google Calendars API + * Google Maps API + * CalVi's UI library + * GeoModel (filtering locations, tentative) + (more coming up...) == Use-Case Diagrams == @@ -239,12 +201,140 @@ http://www.comp.nus.edu.sg/~savitha/gsoc/calendars_usecase1.png -= Specification & Requirements = - The detailed project specification will be added and updated here. - = Timeline = The tentative project timeline will be added here. +===Week 1(22 May - 28 May)=== + +*To Do*: + # Code the models, views/templates and logic for User Pages as per design above. + # Modify existing code to accommodate new feature (sending out user page link in acceptance notifications etc.) + # Test code on localhost instance of Melange + # Find out how to pull data from past year databases (how to test this? can we import the database files from somewhere?) + +*Deliverables*: + # Partial User Page feature: + * On receiving acceptance notification, users can click on the link to their User Page or access it from the User tab in Melange. + * User's will see default values on their User Page. + * Users can view only their *own* user page. (search and view others' user pages not added yet). + * Users can edit their user page data using forms. + + + +===Week 2(29 May - 4 June)=== + +*To Do*: + # Develop an All Users ListView for viewing all users (who are not private) where clicking on a user takes them to the User pages + # Work on providing filtering in the list view based on user-tags, location and org + # Testing and Debugging previous weeks' work. + +*Deliverables*: + # Almost-There User Page feature: + * Users can use ListView to sift through the rest of the users and click on them to view their user pages. + * Users can apply dynamic filtering to view users by location, org and tags using ListView. + + + +===Week 3(5 June - 11 June)=== + +*To Do*: + # Tie up loose ends and bugs for User Page feature. + # Testing of feature plus writing tests(to be confirmed). + # code event.py data model. + # Design UI for calendar to be displayed (CSS/ CalVis). + +*Deliverables*: + # Fully-Functional User Page feature: + * User can view/edit their own user pages. + * Users can have a list view of all users participating in the program and view them by location, org and tags. + * Users can view user pages of other users by clicking on their names in the ListView. + + + +===Week 4(12 June - 18 June)=== + +*To Do*: + # Modify View, Logic for Program_admin to authenticate an account where the program calendar and org calendar will be hosted. Create new org calendars once accepted orgs are announced. + # Modify Views and Logic for users and admins, to view the program and their org calendars Clicking on calendars in their User tab. + # Create templates for viewing the calendars based on user roles. + # Use calendar api to import calendars and display them in Melange. +*Deliverables*: + # Very-Partial Calendars feature: + * On org acceptance, new calendars are created for each org. + * All users can access their 'Calendars' link in their User tab. + * They get to view their respective org and program calendars. + + + +===Week 5(19 June - 25 June)=== + +*To Do*: + # Code or modify existing user Views, create forms and templates for event creation/requests based on user roles. + # Create templates and modify Views for org_admins and program_admins to approve or decline event requests. + # Add event.py Logic to add new event in the actual Google calendar using API once its status is set to is_approved. + # When adding event, use Maps Api to show a mini-map which users can use(optional) to point to the location of the event. Store this as Lat,Long attributes of event.py data model. + +*Deliverables*: + # Partial Calendar feature: + * Users can view Calendars + * Admins can add events to their respective calendars and approve/decline requests. + * Non-admins can send requests to add event. + + + +===Week 6(26 June - 2 July)=== + +*To Do*: + # Write a feed function using Django's feed generator(to be confirmed) allowing users to subscribe to rss feeds on events with certain tags. + # Test previous weeks' code. + # Fix Bugs, complete lagging work from previous week. + # Write tests? + +*Deliverables*: + # Almost-there Calendar feature: + * All deliverables from Week 4 and 5. + * Users can subscribe to feeds for events with certain tags. + + + +===Week 7(3 July - 9 July)=== + +*To Do*: + # Develop ListView for events (similar to users ListView) + # Allow dynamic filtering by tags, location. + # Users can click on events they are interested in to see a pop-out widget with the event details. + +*Deliverables*: + # Almost-there Calendar feature: + * All deliverables from weeks 4,5 and 6. + * Calendars ListView + * Event filtering by categories. + * View event using pop-up widget. + + +===Week 8(10 July - 16 July)=== + +*To Do*: + # Any left-over todo's from previous weeks. + # Testing, Testing and Testing. + # Bug fixing. + # Documentation + # Get ready for mid-term evaluations. + +*Deliverables*: + # User Page feature + * View/edit User Page + * View User Pages of all other users in the program. + * Use ListView to filter users by location, org and tags. + # Calendars Features + * View Program and User's org calendar. + * Add or Request to add Events. + * ListView of all program and org events and all other events marked as public. + * View a particular event's details. + + +Post Mid-term timeline will be up shortly. + = Meetings and Agendas = == Friday April 30, 2010 13:30:00 in UTC ==