[IMP]project_average_acceptable_time:fix page crash when the portal user is follower of any project #33

Open
laetitiadacosta wants to merge 1 commits from 18.0-dev-portail into 18.0
3 changed files with 20 additions and 9 deletions

View File

@@ -3,7 +3,7 @@
{
"name": "project_average_acceptable_time",
"version": "18.0.1.0.0",
"version": "18.0.1.1.0",
"author": "Elabore",
"website": "https://git.elabore.coop/elabore/project-tools",
"maintainer": "Clément Thomas",

View File

@@ -17,9 +17,12 @@ class CustomCustomerPortal(CustomerPortal):
if post and request.httprequest.method == "POST":
error, error_message = self.details_form_validate(post)
if not error:
user = request.env.user
if user.default_project_id and post["average_acceptable_time"]:
user.default_project_id.average_acceptable_time = post[
# sudo: a portal user has no write access at all on
# project.project, and no read access on its default project
# unless it follows it
project_sudo = request.env.user.sudo().default_project_id
if project_sudo and post.get("average_acceptable_time"):
project_sudo.average_acceptable_time = post[
"average_acceptable_time"
]

View File

@@ -8,11 +8,19 @@
priority="40"
>
<xpath expr="//div[@class='o_portal_my_details']" position="inside">
<hr class="mt-1 mb-0" />
<b>Average acceptable time</b>: <t
t-esc="user_id.default_project_id.average_acceptable_time"
t-options="{'widget': 'float_time'}"
<!-- sudo: a portal user cannot read its own default project
unless it follows it (project.project_project_rule_portal) -->
<t
t-set="default_project_sudo"
t-value="user_id.sudo().default_project_id"
/>
<t t-if="default_project_sudo">
<hr class="mt-1 mb-0" />
<b>Average acceptable time</b>: <t
t-esc="default_project_sudo.average_acceptable_time"
t-options="{'widget': 'float_time'}"
/>
</t>
</xpath>
</template>
@@ -34,7 +42,7 @@
type="text"
name="average_acceptable_time"
t-attf-class="form-control #{error.get('average_acceptable_time') and 'is-invalid' or ''}"
t-att-value="average_acceptable_time or user_id.default_project_id.average_acceptable_time"
t-att-value="average_acceptable_time or user_id.sudo().default_project_id.average_acceptable_time"
t-options="{'widget': 'float_time'}"
/>
</div>