Как загрузить изображение на сайт odoo?

Я работаю над модулем Hr_Recruitment. Я добавил поле двоичного изображения для HR-> Приложение. Я пытаюсь добавить функциональность для внешнего пользователя, чтобы он мог самостоятельно заполнить заявление о приеме на работу через веб-сайт. Я добавил имя, адрес электронной почты, телефон, вложение резюме поля на веб-сайте для заявления о приеме на работу. Когда они нажимают «Отправить», оно обновляется в HR-> Форма заявления о приеме на работу. Но поле изображения не обновляется в приложении. изображение". Как решить эту проблему?

контроллер /main.py

if post.get('image',False):
            image = request.registry['ir.attachment']
            name = post.get('image').filename      
            file = post.get('image')
                attach = file.stream
                file.show()

                f = attach.getvalue()

                webbrowser.open(image)
            attachment_id = Attachments.create(request.cr, request.uid, {
                    'name': image,
                    'res_name': image,
                    'res_model': 'hr.applicant',
                    'res_id': applicant_id,
                        'datas': base64.decodestring(str(res[0])),
                        'datas_fname': post['image'].filename,
        }, request.context)

views/templates.xml

<div t-attf-class="form-group">
                    <label class="col-md-3 col-sm-4 control-label" for="image">Image</label>
                    <div class="col-md-7 col-sm-8">
                                        <img id="uploadPreview" style="width: 100px; height: 100px;" />
                            <input id="uploadImage" name="image" type="file" class="file" multiple="true" data-show-upload="true" data-show-caption="true" data-show-preview="true" onchange="PreviewImage();"/>
                    </div>
                     </div>

Форма заявки на странице веб-сайта HR-›Форма заявки


person Shravy    schedule 06.02.2016    source источник


Ответы (2)


Добавьте поле изображения, как показано ниже, в свой XML-шаблон:

<img itemprop="image" style="margin-top: -53px; margin-left:19px; width:80px;" class="img img-responsive" t-att-src="website.image_url(partner, 'image', None if product_image_big else '300x300')"/>
<input class="input-file profileChooser" id="fileInput" type="file" name="ufile" onchange="validateProfileImg();"/>

удалите ненужные вам атрибуты.

И в вашей функции контроллера вы можете получить значение из полей изображения как:

vals = {}
if post['ufile']:
    vals.update({'image': base64.encodestring(post['ufile'].read())})
request.registry['res.partner'].write(cr, uid, [partner_id], vals)

Приведенный выше код работает для меня, я использовал его для обновления партнерских изображений с веб-сайта ODOO.

person Gopakumar N G    schedule 22.06.2016
comment
Я попробовал этот Gopakumar, похоже, он не работает. - person Yaseen Shareef; 22.06.2017
comment
Вы получили какую-либо ошибку? Какую версию Odoo вы используете? - person Gopakumar N G; 22.06.2017

Я использую odoo13, и я использовал этот формат для загрузки изображения с веб-сайта в представление формы respartner:

<div class="col-md-6">
   <label for="image_1920" class="form-label">Passport Photo*</label>
   <input type="file" class="form-control" id="image_1920" name="image_1920" required="1" />
</div>

import base64

    @http.route('/registered', auth='public', methods=['GET', 'POST'], website=True)
    def registration_submit(self, *args, **kw):
        image = kw.get('image_1920', False)

        kw.update({
            'free_member': True,
            'image_1920': base64.encodestring(image.read()) if image else False
        })
        member = request.env['res.partner'].sudo().create(kw)
person Eric    schedule 07.02.2021