{"action":"created","comment":{"url":"https://api.github.com/repos/numfocus/gsoc/pulls/comments/56483389","id":56483389,"diff_hunk":"@@ -0,0 +1,210 @@\n+# Manage workflow for instructor training\n+\n+## Abstract\n+\n+Computing Skills have now become essential more so in the field of Science, but many a time we find researchers struggling with code or tools to get things done.\n+Software Carpentary is a step in this direction.\n+Since 1998, Software Carpentry has been teaching researchers in science, engineering, medicine, and related disciplines the computing skills they need to get more done in less time and with less pain.\n+Software Carpentary , uses AMY ( a django based web application) to to keep track of who's qualified to teach, what workshops have run, who taught and attended. As more and more people are applying to become instructors at Software Carpentary. It has become essential to manage the workflow for instructor training.\n+\n+This project aims at designing such a workflow and implementing it by adding appropriate views to AMY.\n+\n+## Proposed workflow\n+\n+![HTML MOCKUP flowchart](https://cloud.githubusercontent.com/assets/15982349/13770094/aa23d670-eaaa-11e5-81a8-312f860ecd7b.png)\n+\n+1. Interested Trainees apply as Group or Individuals by filling forms.\n+![HTML MOCKUP FORMS](https://cloud.githubusercontent.com/assets/15982349/13816694/6c7a68e6-ebb5-11e5-809e-eb5bd00d7a22.png)\n+2. All applications are listed in the *ALL_APPLICATIONS* view. In this view the lead trainer can accept or reject an application.\n+The lead trainer has to compose one sample email by filling a web-form before accepting an application, this email will contain information such as\n+date, location, mode(online or in person), instructor name and instructor email id. This information is also stored in the database for the accepted applicant to be queried on later.\n+Accepting an application will send an email, to the applicant that he/she has been accepted into the program with other details about the actual training along with one randomly generated password to login in to their account (this password can be changed to anything by the trainee after the first login).\n+The sample email has to be written once and can be sent to all the people who have been accepted for a particular training session.\n+For another training session the lead trainer would just have to fill the web-form again, overwriting previous values.\n+![HTML MOCKUP ALL_APPLICATIONS]( https://cloud.githubusercontent.com/assets/15982349/13816688/66a3e7e4-ebb5-11e5-83f1-5086ddddac13.png)\n+\n+3. All accepted applications, are then transferred to the Trainee view. In this view the lead trainer, trainers,discussion leaders, lesson maintainers can track progress of the trainees, provide feedback and update the status of every stage. They are also notified here if the Trainee has requested a discussion session.\n+This list can be filtered on the following criteria:\n+  * instructor assigned.\n+  * start date of training.\n+  * location of the training.\n+\n+  When the training is completed and the trainee has been certified, the lead instructor can export the trainee as instructor, to move their accounts to the Person table, and remove them from the Trainee table.\n+![HTML MOCKUP ALL_TRAINEE](https://cloud.githubusercontent.com/assets/15982349/13816909/3401c4a4-ebb6-11e5-9799-0eb21ccd5eea.png)\n+4. *Trainee Home page* -\n+After getting accepted for the training program, the trainees recieve a randomly generated password, which they can use to log in to AMY, a trainee's home page is different from the AMY DASHBOARD, the AMY DASHBOARD is reservered for administrative purposes only. After logging in the trainees are directed to TRAINEE_HOME. This view will have a nav-bar - **HOME** , **ABOUT** and **NOTIFICATION**.\n+  * *HOME*  shows the trainees progress, through a progress bar indicating which stages have been completed and the ones left. In this view the trainee can also request a discussion session by filling in a webform, with fields such as TOPIC, PREFERRED TIME, and so on.\n+This view will also list down the general guidelines for instructor training, informing what is required in each stage of the training.\n+  * *ABOUT* , this view shows the information entered by the trainee in their initial application, they can also edit this information, and change passwords here.\n+  * *NOTIFICATION*,  this view allows the trainee to view all the comments/feedback from the discussion leaders and the lesson maintainers.In the format *comment: by whom: timestamp*.\n+\n+\n+## Technical Details\n+The Software stack for this project can be divided into:\n+\n+ * Backend  : [Django](https://www.djangoproject.com/)\n+ * Database : [SQLite](https://www.sqlite.org/)\n+ * Frontend : [Bootstrap](http://getbootstrap.com/),[JQuery](https://jquery.com/) for AJAX requests\n+\n+### Features and Model Schemes\n+\n+Trainee would be the main Model, maintaining most of the Flags for Progress and other information:\n+\n+```python\n+lass Trainee(AbstractBaseUser):\n+    '''Model for a Trainee '''\n+    # listing just essential fields, more fields can and should be added when implementing\n+    COURSE_CHOICES = (\n+        ('1', 'SWC'),\n+        ('2', 'DC'),\n+        )\n+    personal    = models.CharField(max_length=STR_LONG)\n+    middle      = models.CharField(max_length=STR_LONG, null=True, blank=True)\n+    family      = models.CharField(max_length=STR_LONG)\n+    email       = models.CharField(max_length=STR_LONG, unique=True, null=True, blank=True)\n+    course      = models.CharField(max_length=STR_LONG, choices=COURSE_CHOICES, null=False, default='1')\n+    group       = models.ForeignKey(Trainee_Group,default=None,null=True)\n+    Attendance_Flag = models.BooleanField(default=False) # maintains attendance record\n+    Discussion_Flag = models.BooleanField(default=False) # maintains PASS or FAIL\n+    HomeWork_Flag = models.BooleanField(default=False) # maintains PASS or FAIL\n+\n+    username    = models.CharField(\n+        max_length=STR_MED, unique=True,\n+        validators=[RegexValidator(r'^[\\w\\-_]+$', flags=re.A)],\n+    )\n+ ```\n+\n+Maintaining Group information:\n+\n+```python\n+class Trainee_Group(models.Model):\n+\n+    instructor_assigned=models.ForeignKey(Person)\n+    primary_contact_personal    = models.CharField(max_length=STR_LONG)\n+    primary_contact_middle      = models.CharField(max_length=STR_LONG, null=True, blank=True)\n+    primary_contact_family      = models.CharField(max_length=STR_LONG)\n+    primary_contact_email       = models.CharField(max_length=STR_LONG, unique=True, null=True, blank=True)\n+    training_course             = models.CharField(max_length=STR_LONG)\n+```\n+Commenting System:\n+Since comments/feedback are only meant to be unidirectional (i.e from the discussion_leaders, lesson_maintainers to the trainee) a simple Commenting Model would suffice and there is no need for third party apps.\n+\n+```python\n+\n+class D_Comments(models.Model):","path":"2016/proposals/singh-shubham.md","position":94,"original_position":94,"commit_id":"ec7e18cd86f782354b1bcacecff77810717feedb","original_commit_id":"ec7e18cd86f782354b1bcacecff77810717feedb","user":{"login":"gvwilson","id":911566,"avatar_url":"https://avatars.githubusercontent.com/u/911566?v=3","gravatar_id":"","url":"https://api.github.com/users/gvwilson","html_url":"https://github.com/gvwilson","followers_url":"https://api.github.com/users/gvwilson/followers","following_url":"https://api.github.com/users/gvwilson/following{/other_user}","gists_url":"https://api.github.com/users/gvwilson/gists{/gist_id}","starred_url":"https://api.github.com/users/gvwilson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gvwilson/subscriptions","organizations_url":"https://api.github.com/users/gvwilson/orgs","repos_url":"https://api.github.com/users/gvwilson/repos","events_url":"https://api.github.com/users/gvwilson/events{/privacy}","received_events_url":"https://api.github.com/users/gvwilson/received_events","type":"User","site_admin":false},"body":"Please find a way to unify these two classes - comments are comments.","created_at":"2016-03-17T10:29:15Z","updated_at":"2016-03-17T10:29:15Z","html_url":"https://github.com/numfocus/gsoc/pull/117#discussion_r56483389","pull_request_url":"https://api.github.com/repos/numfocus/gsoc/pulls/117","_links":{"self":{"href":"https://api.github.com/repos/numfocus/gsoc/pulls/comments/56483389"},"html":{"href":"https://github.com/numfocus/gsoc/pull/117#discussion_r56483389"},"pull_request":{"href":"https://api.github.com/repos/numfocus/gsoc/pulls/117"}}},"pull_request":{"url":"https://api.github.com/repos/numfocus/gsoc/pulls/117","id":63141023,"html_url":"https://github.com/numfocus/gsoc/pull/117","diff_url":"https://github.com/numfocus/gsoc/pull/117.diff","patch_url":"https://github.com/numfocus/gsoc/pull/117.patch","issue_url":"https://api.github.com/repos/numfocus/gsoc/issues/117","number":117,"state":"open","locked":false,"title":"Shubham Singh : manage workflow for instructor training.","user":{"login":"shubhsingh594","id":15982349,"avatar_url":"https://avatars.githubusercontent.com/u/15982349?v=3","gravatar_id":"","url":"https://api.github.com/users/shubhsingh594","html_url":"https://github.com/shubhsingh594","followers_url":"https://api.github.com/users/shubhsingh594/followers","following_url":"https://api.github.com/users/shubhsingh594/following{/other_user}","gists_url":"https://api.github.com/users/shubhsingh594/gists{/gist_id}","starred_url":"https://api.github.com/users/shubhsingh594/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shubhsingh594/subscriptions","organizations_url":"https://api.github.com/users/shubhsingh594/orgs","repos_url":"https://api.github.com/users/shubhsingh594/repos","events_url":"https://api.github.com/users/shubhsingh594/events{/privacy}","received_events_url":"https://api.github.com/users/shubhsingh594/received_events","type":"User","site_admin":false},"body":"Checklist for prospect students for Google Summer of Code 2016:\r\n\r\n- [x] I contacted NumFOCUS mentors before writing my proposal\r\n- [x] I showed you my contribution (it can be any form: proof-of-concept project idea, some sample code or just a link to your commits from other project)\r\n- [x] I linked to my sample contribution from the proposal\r\n- [x] I linked to my opened issues in numfocus/gsoc repository from the proposal\r\n","created_at":"2016-03-16T21:44:50Z","updated_at":"2016-03-17T10:29:15Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ad6261b90eaac99f1d57fb0bf213fe49a48b7843","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/numfocus/gsoc/pulls/117/commits","review_comments_url":"https://api.github.com/repos/numfocus/gsoc/pulls/117/comments","review_comment_url":"https://api.github.com/repos/numfocus/gsoc/pulls/comments{/number}","comments_url":"https://api.github.com/repos/numfocus/gsoc/issues/117/comments","statuses_url":"https://api.github.com/repos/numfocus/gsoc/statuses/ec7e18cd86f782354b1bcacecff77810717feedb","head":{"label":"shubhsingh594:master","ref":"master","sha":"ec7e18cd86f782354b1bcacecff77810717feedb","user":{"login":"shubhsingh594","id":15982349,"avatar_url":"https://avatars.githubusercontent.com/u/15982349?v=3","gravatar_id":"","url":"https://api.github.com/users/shubhsingh594","html_url":"https://github.com/shubhsingh594","followers_url":"https://api.github.com/users/shubhsingh594/followers","following_url":"https://api.github.com/users/shubhsingh594/following{/other_user}","gists_url":"https://api.github.com/users/shubhsingh594/gists{/gist_id}","starred_url":"https://api.github.com/users/shubhsingh594/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shubhsingh594/subscriptions","organizations_url":"https://api.github.com/users/shubhsingh594/orgs","repos_url":"https://api.github.com/users/shubhsingh594/repos","events_url":"https://api.github.com/users/shubhsingh594/events{/privacy}","received_events_url":"https://api.github.com/users/shubhsingh594/received_events","type":"User","site_admin":false},"repo":{"id":54034108,"name":"gsoc","full_name":"shubhsingh594/gsoc","owner":{"login":"shubhsingh594","id":15982349,"avatar_url":"https://avatars.githubusercontent.com/u/15982349?v=3","gravatar_id":"","url":"https://api.github.com/users/shubhsingh594","html_url":"https://github.com/shubhsingh594","followers_url":"https://api.github.com/users/shubhsingh594/followers","following_url":"https://api.github.com/users/shubhsingh594/following{/other_user}","gists_url":"https://api.github.com/users/shubhsingh594/gists{/gist_id}","starred_url":"https://api.github.com/users/shubhsingh594/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shubhsingh594/subscriptions","organizations_url":"https://api.github.com/users/shubhsingh594/orgs","repos_url":"https://api.github.com/users/shubhsingh594/repos","events_url":"https://api.github.com/users/shubhsingh594/events{/privacy}","received_events_url":"https://api.github.com/users/shubhsingh594/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/shubhsingh594/gsoc","description":"Numfocus Google Summer of Code Materials","fork":true,"url":"https://api.github.com/repos/shubhsingh594/gsoc","forks_url":"https://api.github.com/repos/shubhsingh594/gsoc/forks","keys_url":"https://api.github.com/repos/shubhsingh594/gsoc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/shubhsingh594/gsoc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/shubhsingh594/gsoc/teams","hooks_url":"https://api.github.com/repos/shubhsingh594/gsoc/hooks","issue_events_url":"https://api.github.com/repos/shubhsingh594/gsoc/issues/events{/number}","events_url":"https://api.github.com/repos/shubhsingh594/gsoc/events","assignees_url":"https://api.github.com/repos/shubhsingh594/gsoc/assignees{/user}","branches_url":"https://api.github.com/repos/shubhsingh594/gsoc/branches{/branch}","tags_url":"https://api.github.com/repos/shubhsingh594/gsoc/tags","blobs_url":"https://api.github.com/repos/shubhsingh594/gsoc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/shubhsingh594/gsoc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/shubhsingh594/gsoc/git/refs{/sha}","trees_url":"https://api.github.com/repos/shubhsingh594/gsoc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/shubhsingh594/gsoc/statuses/{sha}","languages_url":"https://api.github.com/repos/shubhsingh594/gsoc/languages","stargazers_url":"https://api.github.com/repos/shubhsingh594/gsoc/stargazers","contributors_url":"https://api.github.com/repos/shubhsingh594/gsoc/contributors","subscribers_url":"https://api.github.com/repos/shubhsingh594/gsoc/subscribers","subscription_url":"https://api.github.com/repos/shubhsingh594/gsoc/subscription","commits_url":"https://api.github.com/repos/shubhsingh594/gsoc/commits{/sha}","git_commits_url":"https://api.github.com/repos/shubhsingh594/gsoc/git/commits{/sha}","comments_url":"https://api.github.com/repos/shubhsingh594/gsoc/comments{/number}","issue_comment_url":"https://api.github.com/repos/shubhsingh594/gsoc/issues/comments{/number}","contents_url":"https://api.github.com/repos/shubhsingh594/gsoc/contents/{+path}","compare_url":"https://api.github.com/repos/shubhsingh594/gsoc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/shubhsingh594/gsoc/merges","archive_url":"https://api.github.com/repos/shubhsingh594/gsoc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/shubhsingh594/gsoc/downloads","issues_url":"https://api.github.com/repos/shubhsingh594/gsoc/issues{/number}","pulls_url":"https://api.github.com/repos/shubhsingh594/gsoc/pulls{/number}","milestones_url":"https://api.github.com/repos/shubhsingh594/gsoc/milestones{/number}","notifications_url":"https://api.github.com/repos/shubhsingh594/gsoc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/shubhsingh594/gsoc/labels{/name}","releases_url":"https://api.github.com/repos/shubhsingh594/gsoc/releases{/id}","deployments_url":"https://api.github.com/repos/shubhsingh594/gsoc/deployments","created_at":"2016-03-16T13:27:26Z","updated_at":"2016-03-15T06:16:38Z","pushed_at":"2016-03-16T21:42:38Z","git_url":"git://github.com/shubhsingh594/gsoc.git","ssh_url":"git@github.com:shubhsingh594/gsoc.git","clone_url":"https://github.com/shubhsingh594/gsoc.git","svn_url":"https://github.com/shubhsingh594/gsoc","homepage":"http://numfocus.org/programs/gsoc.html","size":1570,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"numfocus:master","ref":"master","sha":"399c1777b0b3a037e6db4f17a8c06c2a3080a574","user":{"login":"numfocus","id":1421094,"avatar_url":"https://avatars.githubusercontent.com/u/1421094?v=3","gravatar_id":"","url":"https://api.github.com/users/numfocus","html_url":"https://github.com/numfocus","followers_url":"https://api.github.com/users/numfocus/followers","following_url":"https://api.github.com/users/numfocus/following{/other_user}","gists_url":"https://api.github.com/users/numfocus/gists{/gist_id}","starred_url":"https://api.github.com/users/numfocus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/numfocus/subscriptions","organizations_url":"https://api.github.com/users/numfocus/orgs","repos_url":"https://api.github.com/users/numfocus/repos","events_url":"https://api.github.com/users/numfocus/events{/privacy}","received_events_url":"https://api.github.com/users/numfocus/received_events","type":"Organization","site_admin":false},"repo":{"id":30978155,"name":"gsoc","full_name":"numfocus/gsoc","owner":{"login":"numfocus","id":1421094,"avatar_url":"https://avatars.githubusercontent.com/u/1421094?v=3","gravatar_id":"","url":"https://api.github.com/users/numfocus","html_url":"https://github.com/numfocus","followers_url":"https://api.github.com/users/numfocus/followers","following_url":"https://api.github.com/users/numfocus/following{/other_user}","gists_url":"https://api.github.com/users/numfocus/gists{/gist_id}","starred_url":"https://api.github.com/users/numfocus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/numfocus/subscriptions","organizations_url":"https://api.github.com/users/numfocus/orgs","repos_url":"https://api.github.com/users/numfocus/repos","events_url":"https://api.github.com/users/numfocus/events{/privacy}","received_events_url":"https://api.github.com/users/numfocus/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/numfocus/gsoc","description":"Numfocus Google Summer of Code Materials","fork":false,"url":"https://api.github.com/repos/numfocus/gsoc","forks_url":"https://api.github.com/repos/numfocus/gsoc/forks","keys_url":"https://api.github.com/repos/numfocus/gsoc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/numfocus/gsoc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/numfocus/gsoc/teams","hooks_url":"https://api.github.com/repos/numfocus/gsoc/hooks","issue_events_url":"https://api.github.com/repos/numfocus/gsoc/issues/events{/number}","events_url":"https://api.github.com/repos/numfocus/gsoc/events","assignees_url":"https://api.github.com/repos/numfocus/gsoc/assignees{/user}","branches_url":"https://api.github.com/repos/numfocus/gsoc/branches{/branch}","tags_url":"https://api.github.com/repos/numfocus/gsoc/tags","blobs_url":"https://api.github.com/repos/numfocus/gsoc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/numfocus/gsoc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/numfocus/gsoc/git/refs{/sha}","trees_url":"https://api.github.com/repos/numfocus/gsoc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/numfocus/gsoc/statuses/{sha}","languages_url":"https://api.github.com/repos/numfocus/gsoc/languages","stargazers_url":"https://api.github.com/repos/numfocus/gsoc/stargazers","contributors_url":"https://api.github.com/repos/numfocus/gsoc/contributors","subscribers_url":"https://api.github.com/repos/numfocus/gsoc/subscribers","subscription_url":"https://api.github.com/repos/numfocus/gsoc/subscription","commits_url":"https://api.github.com/repos/numfocus/gsoc/commits{/sha}","git_commits_url":"https://api.github.com/repos/numfocus/gsoc/git/commits{/sha}","comments_url":"https://api.github.com/repos/numfocus/gsoc/comments{/number}","issue_comment_url":"https://api.github.com/repos/numfocus/gsoc/issues/comments{/number}","contents_url":"https://api.github.com/repos/numfocus/gsoc/contents/{+path}","compare_url":"https://api.github.com/repos/numfocus/gsoc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/numfocus/gsoc/merges","archive_url":"https://api.github.com/repos/numfocus/gsoc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/numfocus/gsoc/downloads","issues_url":"https://api.github.com/repos/numfocus/gsoc/issues{/number}","pulls_url":"https://api.github.com/repos/numfocus/gsoc/pulls{/number}","milestones_url":"https://api.github.com/repos/numfocus/gsoc/milestones{/number}","notifications_url":"https://api.github.com/repos/numfocus/gsoc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/numfocus/gsoc/labels{/name}","releases_url":"https://api.github.com/repos/numfocus/gsoc/releases{/id}","deployments_url":"https://api.github.com/repos/numfocus/gsoc/deployments","created_at":"2015-02-18T17:54:16Z","updated_at":"2016-03-15T06:16:38Z","pushed_at":"2016-03-16T21:44:51Z","git_url":"git://github.com/numfocus/gsoc.git","ssh_url":"git@github.com:numfocus/gsoc.git","clone_url":"https://github.com/numfocus/gsoc.git","svn_url":"https://github.com/numfocus/gsoc","homepage":"http://numfocus.org/programs/gsoc.html","size":1641,"stargazers_count":20,"watchers_count":20,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":56,"mirror_url":null,"open_issues_count":30,"forks":56,"open_issues":30,"watchers":20,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/numfocus/gsoc/pulls/117"},"html":{"href":"https://github.com/numfocus/gsoc/pull/117"},"issue":{"href":"https://api.github.com/repos/numfocus/gsoc/issues/117"},"comments":{"href":"https://api.github.com/repos/numfocus/gsoc/issues/117/comments"},"review_comments":{"href":"https://api.github.com/repos/numfocus/gsoc/pulls/117/comments"},"review_comment":{"href":"https://api.github.com/repos/numfocus/gsoc/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/numfocus/gsoc/pulls/117/commits"},"statuses":{"href":"https://api.github.com/repos/numfocus/gsoc/statuses/ec7e18cd86f782354b1bcacecff77810717feedb"}}}}