从网站前端 Odoo 11.0 生成与任务相关的新时间表
Generate a new Timesheet related to a Task from website frontend Odoo 11.0
我正在制作一个模块,让用户可以使用更多功能(例如 material 使用...费用等)从他们的任务中读取和添加时间表。
这是我需要存储到数据库中的输入字段的视图
<div class='row' style="margin: 5px;">
<div class="col-md-12 col-sm-12" style="margin-top: 15px;">
<button class="btn btn-default" onclick="openTab('TimeSheet')">TimeSheet</button>
<button class="btn btn-default" onclick="openTab('Materials')">Materials</button>
<button class="btn btn-default" onclick="openTab('Expenses')">Expenses</button>
<button type="submit" class="btn btn-default">Signature</button>
</div>
<div id="TimeSheet" class="col-md-12 tabs" style="display:none">
<h2>Add new TimeSheet</h2>
<form action="/my/taskReport/add/">
<div class="form-group">
<input type="hidden" name="task_id" t-attf-value="{{ task.id }}"
class="o_website_from_input form-control"/>
<label class="control-label" for="data">Data:</label>
<input type="date" name="date" class="o_website_from_input form-control"/>
<br/>
<label class="control-label" for="employee">Employee:</label>
<input type="text" name="partner_id" class="o_website_from_input form-control"
t-att-value="user.name"/>
<br/>
<label class="control-label" for="description">Description:</label>
<textarea type="text" name="description" class="o_website_from_input form-control"/>
<br/>
<label class="control-label" for="duration">Duration:</label>
<input type="time" name="unit_amount" class="o_website_from_input form-control"
value="00:00"/>
<br/>
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
这里是获取数据字段的控制器
@http.route(['/my/taskReport/add/'],
type='http',
auth="user",
methods=['POST', 'GET'],
csrf=False,
website=True)
def project_task_report_add_timesheet(self, task_id, **post):
timesheet_value = {
'date': post.get('date'),
'partner_id': post.get('partner_id'),
'description': post.get('description'),
'unit_amount': post.get('unit_amount'),
'res_model': 'project.task',
'res_id': task_id,
}
timesheet_id = request.env['project.task'].sudo().create(timesheet_value)
return werkzeug.utils.redirect('/my/tasksReport/')
问题是未存储时间表。
有人可以帮忙吗?
问题与 post.get() 所采用的参数有关。
@http.route(['/my/taskReport/add/'],
type='http',
auth="user",
methods=['POST', 'GET'],
csrf=False,
website=True)
def project_task_report_add_timesheet(self, task_id, **post):
timesheet_value = {
'date': post.get('date'),
'partner_id': int(post.get('partner_id')),
'description': post.get('description'),
'unit_amount': post.get('unit_amount'),
'res_model': 'project.task',
'res_id': task_id,
}
timesheet_id = request.env['project.task'].sudo().create(timesheet_value)
return werkzeug.utils.redirect('/my/tasksReport/')
通过使用 int() 进行转换 partner_id 我没有得到错误,因为 post.get('partner_id') return 是一个字符串值而不是整数id!
我正在制作一个模块,让用户可以使用更多功能(例如 material 使用...费用等)从他们的任务中读取和添加时间表。
这是我需要存储到数据库中的输入字段的视图
<div class='row' style="margin: 5px;">
<div class="col-md-12 col-sm-12" style="margin-top: 15px;">
<button class="btn btn-default" onclick="openTab('TimeSheet')">TimeSheet</button>
<button class="btn btn-default" onclick="openTab('Materials')">Materials</button>
<button class="btn btn-default" onclick="openTab('Expenses')">Expenses</button>
<button type="submit" class="btn btn-default">Signature</button>
</div>
<div id="TimeSheet" class="col-md-12 tabs" style="display:none">
<h2>Add new TimeSheet</h2>
<form action="/my/taskReport/add/">
<div class="form-group">
<input type="hidden" name="task_id" t-attf-value="{{ task.id }}"
class="o_website_from_input form-control"/>
<label class="control-label" for="data">Data:</label>
<input type="date" name="date" class="o_website_from_input form-control"/>
<br/>
<label class="control-label" for="employee">Employee:</label>
<input type="text" name="partner_id" class="o_website_from_input form-control"
t-att-value="user.name"/>
<br/>
<label class="control-label" for="description">Description:</label>
<textarea type="text" name="description" class="o_website_from_input form-control"/>
<br/>
<label class="control-label" for="duration">Duration:</label>
<input type="time" name="unit_amount" class="o_website_from_input form-control"
value="00:00"/>
<br/>
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
这里是获取数据字段的控制器
@http.route(['/my/taskReport/add/'],
type='http',
auth="user",
methods=['POST', 'GET'],
csrf=False,
website=True)
def project_task_report_add_timesheet(self, task_id, **post):
timesheet_value = {
'date': post.get('date'),
'partner_id': post.get('partner_id'),
'description': post.get('description'),
'unit_amount': post.get('unit_amount'),
'res_model': 'project.task',
'res_id': task_id,
}
timesheet_id = request.env['project.task'].sudo().create(timesheet_value)
return werkzeug.utils.redirect('/my/tasksReport/')
问题是未存储时间表。 有人可以帮忙吗?
问题与 post.get() 所采用的参数有关。
@http.route(['/my/taskReport/add/'],
type='http',
auth="user",
methods=['POST', 'GET'],
csrf=False,
website=True)
def project_task_report_add_timesheet(self, task_id, **post):
timesheet_value = {
'date': post.get('date'),
'partner_id': int(post.get('partner_id')),
'description': post.get('description'),
'unit_amount': post.get('unit_amount'),
'res_model': 'project.task',
'res_id': task_id,
}
timesheet_id = request.env['project.task'].sudo().create(timesheet_value)
return werkzeug.utils.redirect('/my/tasksReport/')
通过使用 int() 进行转换 partner_id 我没有得到错误,因为 post.get('partner_id') return 是一个字符串值而不是整数id!