Вы получите следующую ошибку:
local variable 'attachment_id' referenced before assignment , line 52, in web_auth_signup
Эта ошибка произойдет, потому что следующий код должен быть внутри оператора if
:
value = {'attachment': attachment_id}
return request.render("fl_auth_signup.users", value)
Вы также использовали *args
и **kw
(в строке 75
), но они не объявлены:
return super(AuthSignupHome, self).web_login(*args, **kw)
Я проверил исходный код в auth_signup
и обнаружил, что вы изменили подпись метода web_auth_signup
. Я предлагаю вам оставить подпись такой, какая она есть, и использовать kw
вместо post
.
@http.route('/web/signup', type='http', auth='public', website=True,
sitemap=False)
def web_auth_signup(self, *args, **kw):
qcontext = self.get_auth_signup_qcontext()
# values = {}
if kw.get('attachment', False):
attachments = request.env['ir.attachment']
name = kw.get('attachment').filename
file = kw.get('attachment')
# project_id = kw.get('project_id')
attachment = file.read()
attachment_id = attachments.sudo().create({
'name': name,
'datas_fname': name,
'res_name': name,
'type': 'binary',
'res_model': 'model.model',
'datas': base64.b64encode(attachment),
})
value = {
'attachment': attachment_id
}
return request.render("fl_auth_signup.users", value)
# The rest of your code with no changes
Обновите тег form
и установите для enctype
значение multipart/form-data
, это требуется при использовании форм с элементом управления загрузкой файлов.
<template id="new_signup" inherit_id="auth_signup.signup" name="New Sign up login">
<xpath expr="//form" position="attributes">
<attribute name="enctype">multipart/form-data</attribute>
</xpath>
</template>