{"action":"created","comment":{"url":"https://api.github.com/repos/odoo/odoo/pulls/comments/41379784","id":41379784,"diff_hunk":"@@ -0,0 +1,1159 @@\n+# -*- encoding: utf-8 -*-\n+# Part of Odoo. See LICENSE file for full copyright and licensing details.\n+\n+import datetime\n+import logging\n+import re\n+import uuid\n+from collections import Counter, OrderedDict\n+from itertools import product\n+from urlparse import urljoin\n+\n+from openerp import api, fields, models, _\n+from openerp.addons.website.models.website import slug\n+from openerp.exceptions import UserError\n+\n+\n+_logger = logging.getLogger(__name__)\n+\n+class SurveyStage(models.Model):\n+    \"\"\"Stages for Kanban view of surveys\"\"\"\n+\n+    _name = 'survey.stage'\n+    _description = 'Survey Stage'\n+    _order = 'sequence,id'\n+\n+    name = fields.Char(required=True, translate=True)\n+    sequence = fields.Integer(default=1)\n+    closed = fields.Boolean(default=False, help=\"If closed, people won't be able to answer to surveys in this column.\")\n+    fold = fields.Boolean(string=\"Folded in kanban view\")\n+\n+    _sql_constraints = [\n+        ('positive_sequence', 'CHECK(sequence >= 0)', 'Sequence number MUST be a natural')\n+    ]\n+\n+\n+class Survey(models.Model):\n+    '''Settings for a multi-page/multi-question survey.\n+    Each survey can have one or more attached pages, and each page can display\n+    one or more questions.\n+    '''\n+\n+    _name = 'survey.survey'\n+    _description = 'Survey'\n+    _rec_name = 'title'\n+    _inherit = ['mail.thread', 'ir.needaction_mixin']\n+\n+    def _default_stage(self):\n+        return self.env['survey.stage'].search([], limit=1)\n+\n+    # Model fields #\n+\n+    title = fields.Char(required=True, translate=True)\n+    page_ids = fields.One2many('survey.page', 'survey_id', string='Pages', copy=True)\n+    stage_id = fields.Many2one('survey.stage', string=\"Stage\", copy=False,\n+        default='_default_stage')\n+    auth_required = fields.Boolean(string='Login required',\n+        help=\"Users with a public link will be requested to login before taking part to the survey\",\n+        oldname=\"authenticate\")\n+    users_can_go_back = fields.Boolean(help=\"If checked, users can go back to previous pages.\")\n+    tot_sent_survey = fields.Integer(compute=\"_compute_tot_sent_survey\",\n+        string=\"Number of sent surveys\")\n+    tot_start_survey = fields.Integer(compute=\"_compute_tot_start_survey\",\n+        string=\"Number of started surveys\")\n+    tot_comp_survey = fields.Integer(compute=\"_compute_tot_comp_survey\",\n+        string=\"Number of completed surveys\")\n+    description = fields.Html(translate=True,\n+        help=\"A long description of the purpose of the survey\")\n+    color = fields.Integer(string='Color Index')\n+    user_input_ids = fields.One2many('survey.user_input', 'survey_id',\n+        string='User responses', readonly=True)\n+    designed = fields.Boolean(compute='_compute_designed', string=\"Is designed?\")\n+    public_url = fields.Char(compute='_compute_public_url',\n+        string=\"Public link\")\n+    public_url_html = fields.Char(compute='_compute_public_url_html',\n+        string=\"Public link (html version)\")\n+    print_url = fields.Char(compute='_compute_print_url',\n+        string=\"Print link\")\n+    result_url = fields.Char(compute='_compute_result_url',\n+        string=\"Results link\")\n+    email_template_id = fields.Many2one('mail.template',\n+        string='Email Template')\n+    thank_you_message = fields.Html(translate=True,\n+        help=\"This message will be displayed when survey is completed\")\n+    quizz_mode = fields.Boolean(string='Quiz mode')\n+\n+    ## Function fields ##\n+\n+    @api.multi\n+    def _compute_designed(self):\n+        for survey in self:","path":"addons/survey/models/survey.py","position":90,"original_position":90,"commit_id":"802f971be7cbc1255762f396de4357f638ed3c69","original_commit_id":"802f971be7cbc1255762f396de4357f638ed3c69","user":{"login":"hmo-odoo","id":6368068,"avatar_url":"https://avatars.githubusercontent.com/u/6368068?v=3","gravatar_id":"","url":"https://api.github.com/users/hmo-odoo","html_url":"https://github.com/hmo-odoo","followers_url":"https://api.github.com/users/hmo-odoo/followers","following_url":"https://api.github.com/users/hmo-odoo/following{/other_user}","gists_url":"https://api.github.com/users/hmo-odoo/gists{/gist_id}","starred_url":"https://api.github.com/users/hmo-odoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hmo-odoo/subscriptions","organizations_url":"https://api.github.com/users/hmo-odoo/orgs","repos_url":"https://api.github.com/users/hmo-odoo/repos","events_url":"https://api.github.com/users/hmo-odoo/events{/privacy}","received_events_url":"https://api.github.com/users/hmo-odoo/received_events","type":"User","site_admin":false},"body":"need to optimize compute method. may be use sql query to filter survey. ","created_at":"2015-10-07T11:40:05Z","updated_at":"2015-10-07T11:40:05Z","html_url":"https://github.com/odoo/odoo/pull/7889#discussion_r41379784","pull_request_url":"https://api.github.com/repos/odoo/odoo/pulls/7889","_links":{"self":{"href":"https://api.github.com/repos/odoo/odoo/pulls/comments/41379784"},"html":{"href":"https://github.com/odoo/odoo/pull/7889#discussion_r41379784"},"pull_request":{"href":"https://api.github.com/repos/odoo/odoo/pulls/7889"}}},"pull_request":{"url":"https://api.github.com/repos/odoo/odoo/pulls/7889","id":41655798,"html_url":"https://github.com/odoo/odoo/pull/7889","diff_url":"https://github.com/odoo/odoo/pull/7889.diff","patch_url":"https://github.com/odoo/odoo/pull/7889.patch","issue_url":"https://api.github.com/repos/odoo/odoo/issues/7889","number":7889,"state":"open","locked":false,"title":"[survey] migration to new API","user":{"login":"rim-odoo","id":7300760,"avatar_url":"https://avatars.githubusercontent.com/u/7300760?v=3","gravatar_id":"","url":"https://api.github.com/users/rim-odoo","html_url":"https://github.com/rim-odoo","followers_url":"https://api.github.com/users/rim-odoo/followers","following_url":"https://api.github.com/users/rim-odoo/following{/other_user}","gists_url":"https://api.github.com/users/rim-odoo/gists{/gist_id}","starred_url":"https://api.github.com/users/rim-odoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rim-odoo/subscriptions","organizations_url":"https://api.github.com/users/rim-odoo/orgs","repos_url":"https://api.github.com/users/rim-odoo/repos","events_url":"https://api.github.com/users/rim-odoo/events{/privacy}","received_events_url":"https://api.github.com/users/rim-odoo/received_events","type":"User","site_admin":false},"body":"- Task: https://www.odoo.com/web#id=11957&view_type=form&model=project.task&action=333&active_id=131\r\n- Pad: https://pad.odoo.com/p/r.N3VUoDswhl3mbAnu","created_at":"2015-08-05T08:45:14Z","updated_at":"2015-10-07T11:40:05Z","closed_at":null,"merged_at":null,"merge_commit_sha":"37b5f4ee29a307033b901f1ce42622702c1661b9","assignee":{"login":"rim-odoo","id":7300760,"avatar_url":"https://avatars.githubusercontent.com/u/7300760?v=3","gravatar_id":"","url":"https://api.github.com/users/rim-odoo","html_url":"https://github.com/rim-odoo","followers_url":"https://api.github.com/users/rim-odoo/followers","following_url":"https://api.github.com/users/rim-odoo/following{/other_user}","gists_url":"https://api.github.com/users/rim-odoo/gists{/gist_id}","starred_url":"https://api.github.com/users/rim-odoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rim-odoo/subscriptions","organizations_url":"https://api.github.com/users/rim-odoo/orgs","repos_url":"https://api.github.com/users/rim-odoo/repos","events_url":"https://api.github.com/users/rim-odoo/events{/privacy}","received_events_url":"https://api.github.com/users/rim-odoo/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/odoo/odoo/pulls/7889/commits","review_comments_url":"https://api.github.com/repos/odoo/odoo/pulls/7889/comments","review_comment_url":"https://api.github.com/repos/odoo/odoo/pulls/comments{/number}","comments_url":"https://api.github.com/repos/odoo/odoo/issues/7889/comments","statuses_url":"https://api.github.com/repos/odoo/odoo/statuses/802f971be7cbc1255762f396de4357f638ed3c69","head":{"label":"odoo-dev:master-survey-new-api-jas","ref":"master-survey-new-api-jas","sha":"802f971be7cbc1255762f396de4357f638ed3c69","user":{"login":"odoo-dev","id":7466976,"avatar_url":"https://avatars.githubusercontent.com/u/7466976?v=3","gravatar_id":"","url":"https://api.github.com/users/odoo-dev","html_url":"https://github.com/odoo-dev","followers_url":"https://api.github.com/users/odoo-dev/followers","following_url":"https://api.github.com/users/odoo-dev/following{/other_user}","gists_url":"https://api.github.com/users/odoo-dev/gists{/gist_id}","starred_url":"https://api.github.com/users/odoo-dev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/odoo-dev/subscriptions","organizations_url":"https://api.github.com/users/odoo-dev/orgs","repos_url":"https://api.github.com/users/odoo-dev/repos","events_url":"https://api.github.com/users/odoo-dev/events{/privacy}","received_events_url":"https://api.github.com/users/odoo-dev/received_events","type":"Organization","site_admin":false},"repo":{"id":19853934,"name":"odoo","full_name":"odoo-dev/odoo","owner":{"login":"odoo-dev","id":7466976,"avatar_url":"https://avatars.githubusercontent.com/u/7466976?v=3","gravatar_id":"","url":"https://api.github.com/users/odoo-dev","html_url":"https://github.com/odoo-dev","followers_url":"https://api.github.com/users/odoo-dev/followers","following_url":"https://api.github.com/users/odoo-dev/following{/other_user}","gists_url":"https://api.github.com/users/odoo-dev/gists{/gist_id}","starred_url":"https://api.github.com/users/odoo-dev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/odoo-dev/subscriptions","organizations_url":"https://api.github.com/users/odoo-dev/orgs","repos_url":"https://api.github.com/users/odoo-dev/repos","events_url":"https://api.github.com/users/odoo-dev/events{/privacy}","received_events_url":"https://api.github.com/users/odoo-dev/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/odoo-dev/odoo","description":"RD Dev Repository","fork":true,"url":"https://api.github.com/repos/odoo-dev/odoo","forks_url":"https://api.github.com/repos/odoo-dev/odoo/forks","keys_url":"https://api.github.com/repos/odoo-dev/odoo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/odoo-dev/odoo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/odoo-dev/odoo/teams","hooks_url":"https://api.github.com/repos/odoo-dev/odoo/hooks","issue_events_url":"https://api.github.com/repos/odoo-dev/odoo/issues/events{/number}","events_url":"https://api.github.com/repos/odoo-dev/odoo/events","assignees_url":"https://api.github.com/repos/odoo-dev/odoo/assignees{/user}","branches_url":"https://api.github.com/repos/odoo-dev/odoo/branches{/branch}","tags_url":"https://api.github.com/repos/odoo-dev/odoo/tags","blobs_url":"https://api.github.com/repos/odoo-dev/odoo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/odoo-dev/odoo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/odoo-dev/odoo/git/refs{/sha}","trees_url":"https://api.github.com/repos/odoo-dev/odoo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/odoo-dev/odoo/statuses/{sha}","languages_url":"https://api.github.com/repos/odoo-dev/odoo/languages","stargazers_url":"https://api.github.com/repos/odoo-dev/odoo/stargazers","contributors_url":"https://api.github.com/repos/odoo-dev/odoo/contributors","subscribers_url":"https://api.github.com/repos/odoo-dev/odoo/subscribers","subscription_url":"https://api.github.com/repos/odoo-dev/odoo/subscription","commits_url":"https://api.github.com/repos/odoo-dev/odoo/commits{/sha}","git_commits_url":"https://api.github.com/repos/odoo-dev/odoo/git/commits{/sha}","comments_url":"https://api.github.com/repos/odoo-dev/odoo/comments{/number}","issue_comment_url":"https://api.github.com/repos/odoo-dev/odoo/issues/comments{/number}","contents_url":"https://api.github.com/repos/odoo-dev/odoo/contents/{+path}","compare_url":"https://api.github.com/repos/odoo-dev/odoo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/odoo-dev/odoo/merges","archive_url":"https://api.github.com/repos/odoo-dev/odoo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/odoo-dev/odoo/downloads","issues_url":"https://api.github.com/repos/odoo-dev/odoo/issues{/number}","pulls_url":"https://api.github.com/repos/odoo-dev/odoo/pulls{/number}","milestones_url":"https://api.github.com/repos/odoo-dev/odoo/milestones{/number}","notifications_url":"https://api.github.com/repos/odoo-dev/odoo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/odoo-dev/odoo/labels{/name}","releases_url":"https://api.github.com/repos/odoo-dev/odoo/releases{/id}","created_at":"2014-05-16T11:16:19Z","updated_at":"2015-09-29T13:16:00Z","pushed_at":"2015-10-07T11:39:23Z","git_url":"git://github.com/odoo-dev/odoo.git","ssh_url":"git@github.com:odoo-dev/odoo.git","clone_url":"https://github.com/odoo-dev/odoo.git","svn_url":"https://github.com/odoo-dev/odoo","homepage":"https://www.odoo.com","size":1411067,"stargazers_count":62,"watchers_count":62,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":24,"mirror_url":null,"open_issues_count":0,"forks":24,"open_issues":0,"watchers":62,"default_branch":"master"}},"base":{"label":"odoo:master","ref":"master","sha":"f2d26cef4cb0713e00b1e12622ac7382d22d8078","user":{"login":"odoo","id":6368483,"avatar_url":"https://avatars.githubusercontent.com/u/6368483?v=3","gravatar_id":"","url":"https://api.github.com/users/odoo","html_url":"https://github.com/odoo","followers_url":"https://api.github.com/users/odoo/followers","following_url":"https://api.github.com/users/odoo/following{/other_user}","gists_url":"https://api.github.com/users/odoo/gists{/gist_id}","starred_url":"https://api.github.com/users/odoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/odoo/subscriptions","organizations_url":"https://api.github.com/users/odoo/orgs","repos_url":"https://api.github.com/users/odoo/repos","events_url":"https://api.github.com/users/odoo/events{/privacy}","received_events_url":"https://api.github.com/users/odoo/received_events","type":"Organization","site_admin":false},"repo":{"id":19745004,"name":"odoo","full_name":"odoo/odoo","owner":{"login":"odoo","id":6368483,"avatar_url":"https://avatars.githubusercontent.com/u/6368483?v=3","gravatar_id":"","url":"https://api.github.com/users/odoo","html_url":"https://github.com/odoo","followers_url":"https://api.github.com/users/odoo/followers","following_url":"https://api.github.com/users/odoo/following{/other_user}","gists_url":"https://api.github.com/users/odoo/gists{/gist_id}","starred_url":"https://api.github.com/users/odoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/odoo/subscriptions","organizations_url":"https://api.github.com/users/odoo/orgs","repos_url":"https://api.github.com/users/odoo/repos","events_url":"https://api.github.com/users/odoo/events{/privacy}","received_events_url":"https://api.github.com/users/odoo/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/odoo/odoo","description":"Odoo (formerly OpenERP). Open Source Apps To Grow Your Business.","fork":false,"url":"https://api.github.com/repos/odoo/odoo","forks_url":"https://api.github.com/repos/odoo/odoo/forks","keys_url":"https://api.github.com/repos/odoo/odoo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/odoo/odoo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/odoo/odoo/teams","hooks_url":"https://api.github.com/repos/odoo/odoo/hooks","issue_events_url":"https://api.github.com/repos/odoo/odoo/issues/events{/number}","events_url":"https://api.github.com/repos/odoo/odoo/events","assignees_url":"https://api.github.com/repos/odoo/odoo/assignees{/user}","branches_url":"https://api.github.com/repos/odoo/odoo/branches{/branch}","tags_url":"https://api.github.com/repos/odoo/odoo/tags","blobs_url":"https://api.github.com/repos/odoo/odoo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/odoo/odoo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/odoo/odoo/git/refs{/sha}","trees_url":"https://api.github.com/repos/odoo/odoo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/odoo/odoo/statuses/{sha}","languages_url":"https://api.github.com/repos/odoo/odoo/languages","stargazers_url":"https://api.github.com/repos/odoo/odoo/stargazers","contributors_url":"https://api.github.com/repos/odoo/odoo/contributors","subscribers_url":"https://api.github.com/repos/odoo/odoo/subscribers","subscription_url":"https://api.github.com/repos/odoo/odoo/subscription","commits_url":"https://api.github.com/repos/odoo/odoo/commits{/sha}","git_commits_url":"https://api.github.com/repos/odoo/odoo/git/commits{/sha}","comments_url":"https://api.github.com/repos/odoo/odoo/comments{/number}","issue_comment_url":"https://api.github.com/repos/odoo/odoo/issues/comments{/number}","contents_url":"https://api.github.com/repos/odoo/odoo/contents/{+path}","compare_url":"https://api.github.com/repos/odoo/odoo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/odoo/odoo/merges","archive_url":"https://api.github.com/repos/odoo/odoo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/odoo/odoo/downloads","issues_url":"https://api.github.com/repos/odoo/odoo/issues{/number}","pulls_url":"https://api.github.com/repos/odoo/odoo/pulls{/number}","milestones_url":"https://api.github.com/repos/odoo/odoo/milestones{/number}","notifications_url":"https://api.github.com/repos/odoo/odoo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/odoo/odoo/labels{/name}","releases_url":"https://api.github.com/repos/odoo/odoo/releases{/id}","created_at":"2014-05-13T15:38:58Z","updated_at":"2015-10-07T11:29:23Z","pushed_at":"2015-10-07T11:39:24Z","git_url":"git://github.com/odoo/odoo.git","ssh_url":"git@github.com:odoo/odoo.git","clone_url":"https://github.com/odoo/odoo.git","svn_url":"https://github.com/odoo/odoo","homepage":"https://www.odoo.com","size":1552347,"stargazers_count":3201,"watchers_count":3201,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2796,"mirror_url":null,"open_issues_count":2618,"forks":2796,"open_issues":2618,"watchers":3201,"default_branch":"9.0"}},"_links":{"self":{"href":"https://api.github.com/repos/odoo/odoo/pulls/7889"},"html":{"href":"https://github.com/odoo/odoo/pull/7889"},"issue":{"href":"https://api.github.com/repos/odoo/odoo/issues/7889"},"comments":{"href":"https://api.github.com/repos/odoo/odoo/issues/7889/comments"},"review_comments":{"href":"https://api.github.com/repos/odoo/odoo/pulls/7889/comments"},"review_comment":{"href":"https://api.github.com/repos/odoo/odoo/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/odoo/odoo/pulls/7889/commits"},"statuses":{"href":"https://api.github.com/repos/odoo/odoo/statuses/802f971be7cbc1255762f396de4357f638ed3c69"}}}}