_description = "Employee"
_inherits = {'resource.resource': "resource_id"}
- def _get_image_resized(self, cr, uid, ids, name, args, context=None):
+ def _get_image(self, cr, uid, ids, name, args, context=None):
result = dict.fromkeys(ids, False)
- for hr_employee in self.browse(cr, uid, ids, context=context):
- result[hr_employee.id] = {'image_medium': False, 'image_small': False}
- if hr_employee.image:
- result[hr_employee.id]['image_medium'] = tools.resize_image_medium(hr_employee.image)
- result[hr_employee.id]['image_small'] = tools.resize_image_small(hr_employee.image)
+ for obj in self.browse(cr, uid, ids, context=context):
+ resized_image_dict = tools.get_resized_images(obj.image)
+ result[obj.id] = {
+ 'image_medium': resized_image_dict['image_medium'],
+ 'image_small': resized_image_dict['image_small'],
+ }
return result
- def _set_image_resized(self, cr, uid, id, name, value, args, context=None):
- if not value:
- vals = {'image': value}
- else:
- vals = {'image': tools.resize_image_big(value)}
- return self.write(cr, uid, [id], vals, context=context)
+ def _set_image(self, cr, uid, id, name, value, args, context=None):
+ return self.write(cr, uid, [id], {'image': tools.resize_image_big(value)}, context=context)
def onchange_image(self, cr, uid, ids, value, context=None):
- if not value:
- return {'value': {
- 'image': value,
- 'image_medium': value,
- 'image_small': value,
- }}
- return {'value': {
- 'image': tools.resize_image_big(value),
- 'image_medium': tools.resize_image_medium(value),
- 'image_small': tools.resize_image_small(value),
- }}
+ return {'value': tools.get_resized_images(value)}
_columns = {
'country_id': fields.many2one('res.country', 'Nationality'),
'coach_id': fields.many2one('hr.employee', 'Coach'),
'job_id': fields.many2one('hr.job', 'Job'),
'image': fields.binary("Photo",
- help="This field holds the photo used as image for the "\
- "user. The avatar field is used as an interface to "\
- "access this field. The image is base64 encoded, "\
- "and PIL-supported. It is stored as a 540x450 px "\
- "image, in case a bigger image must be used."),
- 'image_medium': fields.function(_get_image_resized, fnct_inv=_set_image_resized,
- string="Medium-sized photo", type="binary", multi="_get_image_resized",
+ help="This field holds the image used as a photo for the "\
+ "employee. The image is base64 encoded, and PIL-supported. "\
+ "It is limited to a 12024x1024 px image."),
+ 'image_medium': fields.function(_get_image, fnct_inv=_set_image,
+ string="Medium-sized photo", type="binary", multi="_get_image",
store = {
'hr.employee': (lambda self, cr, uid, ids, c={}: ids, ['image'], 10),
},
- help="Medium-sized photo of the user. It is automatically "\
- "resized as a 180x180px image, with aspect ratio keps. "\
+ help="Medium-sized photo of the employee. It is automatically "\
+ "resized as a 180x180px image, with aspect ratio kept. "\
"Use this field in form views or some kanban views."),
- 'image_small': fields.function(_get_image_resized, fnct_inv=_set_image_resized,
- string="Smal-sized photo", type="binary", multi="_get_image_resized",
+ 'image_small': fields.function(_get_image, fnct_inv=_set_image,
+ string="Smal-sized photo", type="binary", multi="_get_image",
store = {
'hr.employee': (lambda self, cr, uid, ids, c={}: ids, ['image'], 10),
},
- help="Small-sized photo of the user. It is automatically "\
+ help="Small-sized photo of the employee. It is automatically "\
"resized as a 50x50px image, with aspect ratio keps. "\
- "Use this field in form views or some kanban views."),
+ "Use this field anywhere a small image is required."),
'active': fields.boolean('Active'),
'passport_id':fields.char('Passport No', size=64),
'color': fields.integer('Color Index'),
_defaults = {
'active': 1,
- 'image_medium': _get_photo,
+ 'image': _get_photo,
'marital': 'single',
'color': 0,
}
##############################################################################
import datetime as DT
-import io
import openerp
import openerp.tools as tools
from operator import itemgetter
from osv import osv
from osv import fields
-from PIL import Image
-import StringIO
import tools
from tools.translate import _
def action_group_leave(self, cr, uid, ids, context={}):
return self.message_unsubscribe(cr, uid, ids, context=context);
- def _get_image_resized(self, cr, uid, ids, name, args, context=None):
+ def _get_image(self, cr, uid, ids, name, args, context=None):
result = dict.fromkeys(ids, False)
- for mail_group in self.browse(cr, uid, ids, context=context):
- result[mail_group.id] = {'image_medium': False, 'image_small': False}
- if mail_group.image:
- result[mail_group.id]['image_medium'] = tools.resize_image_medium(mail_group.image)
- result[mail_group.id]['image_small'] = tools.resize_image_small(mail_group.image)
+ for obj in self.browse(cr, uid, ids, context=context):
+ resized_image_dict = tools.get_resized_images(obj.image)
+ result[obj.id] = {
+ 'image_medium': resized_image_dict['image_medium'],
+ 'image_small': resized_image_dict['image_small'],
+ }
return result
- def _set_image_resized(self, cr, uid, id, name, value, args, context=None):
- if not value:
- vals = {'image': value}
- else:
- vals = {'image': tools.resize_image_big(value)}
- return self.write(cr, uid, [id], vals, context=context)
+ def _set_image(self, cr, uid, id, name, value, args, context=None):
+ return self.write(cr, uid, [id], {'image': tools.resize_image_big(value)}, context=context)
def onchange_image(self, cr, uid, ids, value, context=None):
- if not value:
- return {'value': {
- 'image': value,
- 'image_medium': value,
- 'image_small': value,
- }}
- return {'value': {
- 'image': tools.resize_image_big(value),
- 'image_medium': tools.resize_image_medium(value),
- 'image_small': tools.resize_image_small(value),
- }}
+ return {'value': tools.get_resized_images(value)}
def get_member_ids(self, cr, uid, ids, field_names, args, context=None):
if context is None:
help="Responsible of the group that has all rights on the record."),
'public': fields.boolean('Public', help='This group is visible by non members. Invisible groups can add members through the invite button.'),
'image': fields.binary("Photo",
- help="This field holds the photo used as image for the "\
- "group. The avatar field is used as an interface to "\
- "access this field. The image is base64 encoded, "\
- "and PIL-supported. It is stored as a 540x450 px "\
- "image, in case a bigger image must be used."),
- 'image_medium': fields.function(_get_image_resized, fnct_inv=_set_image_resized,
- string="Medium-sized photo", type="binary", multi="_get_image_resized",
+ help="This field holds the image used as photo for the "\
+ "user. The image is base64 encoded, and PIL-supported. "\
+ "It is limited to a 12024x1024 px image."),
+ 'image_medium': fields.function(_get_image, fnct_inv=_set_image,
+ string="Medium-sized photo", type="binary", multi="_get_image",
store = {
'mail.group': (lambda self, cr, uid, ids, c={}: ids, ['image'], 10),
},
help="Medium-sized photo of the group. It is automatically "\
- "resized as a 180x180px image, with aspect ratio keps. "\
+ "resized as a 180x180px image, with aspect ratio kept. "\
"Use this field in form views or some kanban views."),
- 'image_small': fields.function(_get_image_resized, fnct_inv=_set_image_resized,
- string="Smal-sized photo", type="binary", multi="_get_image_resized",
+ 'image_small': fields.function(_get_image, fnct_inv=_set_image,
+ string="Smal-sized photo", type="binary", multi="_get_image",
store = {
'mail.group': (lambda self, cr, uid, ids, c={}: ids, ['image'], 10),
},
help="Small-sized photo of the group. It is automatically "\
"resized as a 50x50px image, with aspect ratio keps. "\
- "Use this field in form views or some kanban views."),
+ "Use this field anywhere a small image is required."),
'member_ids': fields.function(get_member_ids, fnct_search=search_member_ids, type='many2many',
relation='res.users', string='Group members', multi='get_member_ids'),
'member_count': fields.function(get_member_ids, type='integer', string='Member count', multi='get_member_ids'),
_defaults = {
'public': True,
'responsible_id': (lambda s, cr, uid, ctx: uid),
- 'image_medium': _get_photo,
+ 'image': _get_photo,
}
import math
from _common import rounding
import re
+import tools
from tools.translate import _
def is_pair(x):
def _get_image(self, cr, uid, ids, name, args, context=None):
result = dict.fromkeys(ids, False)
for obj in self.browse(cr, uid, ids, context=context):
- result[obj.id] = {'image_medium': False, 'image_small': False}
- if obj.image:
- result[obj.id]['image_medium'] = tools.resize_image_medium(obj.image)
- result[obj.id]['image_small'] = tools.resize_image_small(obj.image)
+ resized_image_dict = tools.get_resized_images(obj.image)
+ result[obj.id] = {
+ 'image_medium': resized_image_dict['image_medium'],
+ 'image_small': resized_image_dict['image_small'],
+ }
return result
def _set_image(self, cr, uid, id, name, value, args, context=None):
- if value:
- value = tools.resize_image_big(value)
- return self.write(cr, uid, [id], {'image': value}, context=context)
+ return self.write(cr, uid, [id], {'image': tools.resize_image_big(value)}, context=context)
def onchange_image(self, cr, uid, ids, value, context=None):
- if not value:
- return {'value': {
- 'image': value,
- 'image_medium': value,
- 'image_small': value,
- }}
- return {'value': {
- 'image': tools.resize_image_big(value),
- 'image_medium': tools.resize_image_medium(value),
- 'image_small': tools.resize_image_small(value),
- }}
+ return {'value': tools.get_resized_images(value)}
_defaults = {
'active': lambda *a: 1,
'name_template': fields.related('product_tmpl_id', 'name', string="Name", type='char', size=128, store=True, select=True),
'color': fields.integer('Color Index'),
'image': fields.binary("Image",
- help="This field holds the image used for the "\
- "product. The image is base64 encoded, and PIL-supported. "\
+ help="This field holds the image used for the product. "\
+ "The image is base64 encoded, and PIL-supported. "\
"It is limited to a 12024x1024 px image."),
'image_medium': fields.function(_get_image, fnct_inv=_set_image,
string="Medium-sized image", type="binary", multi="_get_image",
<kanban>
<field name="color"/>
<field name="type"/>
- <field name="image"/>
<field name="list_price"/>
<templates>
<t t-name="kanban-box">