# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # ############################################################################## import random from openerp.widgets import TinyInputWidget, register_widget from openobject.widgets import JSLink class Matrix(TinyInputWidget): template = "/smile_matrix_widget/widgets/templates/matrix.mako" javascript = [ JSLink("smile_matrix_widget", "javascript/matrix.js"), ] def __init__(self, **kwargs): # Explanation of attrs and context hacks belows can be found at: https://github.com/Smile-SA/smile_openerp_matrix_widget/issues/3 #attrs = kwargs.get('attrs', {}) #xml_attrs = isinstance(attrs, (str, unicode)) and eval(attrs) or attrs #xml_context = isinstance(context, (str, unicode)) and eval(context) or context super(Matrix, self).__init__(**kwargs) register_widget(Matrix, ["matrix"])
except: pass self.screen = Screen(current, prefix=self.name, views_preloaded=view, editable=self.editable, readonly=self.editable, selectable=selectable, nolinks=self.link, **{'_m2m': 1}) self.screen.widget.checkbox_name = False self.screen.widget.m2m = True self.validator = validators.many2many() def set_value(self, value): ids = value if isinstance(ids, basestring): if not ids.startswith('['): ids = '[' + ids + ']' ids = eval(ids) self.ids = ids self.screen.ids = ids def get_value(self): return [(6, 0, self.ids or [])] register_widget(M2M, ["many2many"]) # vim: ts=4 sts=4 sw=4 si et
def set_value(self, value): #XXX: server bug work-arround try: binascii.a2b_base64(value) except: self.val = False if self.value_bin_size: self.text = value return try: self.text = utils.get_size(value) except: self.text = value or '' register_widget(Binary, ["binary"]) class Image(TinyInputWidget): template = "/openerp/widgets/form/templates/image.mako" params = [ "src", "width", "height", "model", "id", "field", "stock", 'bin_src' ] src = "" width = None height = None field = '' stock = True def __init__(self, **attrs):
params = ['fake_widget'] member_widgets = ['children'] valign = "top" def __init__(self, **attrs): super(Notebook, self).__init__(**attrs) self.nolabel = True self.colspan = attrs.get('colspan', 3) self.fake_widget = '_fake' if attrs.get('prefix'): self.fake_widget = attrs['prefix'] + '/_fake' register_widget(Notebook, ["notebook"]) class Page(Frame): def __init__(self, **attrs): super(Page, self).__init__(**attrs) if self.invisible: self.attributes = "{'invisible': [1]}" register_widget(Page, ["page"]) class Separator(TinyWidget): """Separator widget. """
from openobject.widgets import JSLink from openerp import validators from openerp.widgets import TinyInputWidget from openerp.widgets import register_widget __all__ = ["CKEditor"] class CKEditor(TinyInputWidget): template = "/widget_ckeditor/widgets/templates/ckeditor.mako" javascript = [JSLink("widget_ckeditor", "javascript/ck_editor/ckeditor.js"), JSLink("widget_ckeditor", "javascript/ck_editor/adapters/jquery.js")] def __init__(self, **attrs): super(CKEditor, self).__init__(**attrs) self.validator = validators.String() self.readonly = not self.editable or self.readonly def set_value(self, value): super(CKEditor, self).set_value(value) register_widget(CKEditor, ["text_html"]) # vim: ts=4 sts=4 sw=4 si et
class WikiWidget(Text): template = "/wiki/widgets/templates/wiki.mako" params = ["data"] css = [CSSLink("wiki", "css/wiki.css")] data = None def set_value(self, value): super(WikiWidget, self).set_value(value) if value: toc = True id = False if hasattr(cherrypy.request, 'terp_record'): params = cherrypy.request.terp_params if params._terp_model == 'wiki.wiki': proxy = rpc.RPCProxy('wiki.wiki') toc = proxy.read([params.id], ['toc'])[0]['toc'] id = params.id text = value + '\n\n' html = wiki2html(text, toc, id) self.data = html register_widget(WikiWidget, ["text_wiki"])
views_preloaded=view, editable=self.editable, readonly=self.editable, selectable=selectable, nolinks=self.link, **{'_m2m': 1}) self.screen.widget.checkbox_name = False self.screen.widget.m2m = True self.validator = validators.many2many() def set_value(self, value): ids = value if isinstance(ids, basestring): if not ids.startswith('['): ids = '[' + ids + ']' ids = eval(ids) self.ids = ids self.screen.ids = ids def get_value(self): return [(6, 0, self.ids or [])] register_widget(M2M, ["many2many"]) # vim: ts=4 sts=4 sw=4 si et
self.context = attrs.get('context', {}) self.link = attrs.get('link') self.onchange = None # override onchange in js code self.default_focus = attrs.get('default_focus', 0) self.validator = validators.many2one() def set_value(self, value): if value and isinstance(value, (tuple, list)) and len(value) == 2: self.default, self.text = value elif value and isinstance(value, basestring): self.text = value else: self.default = value self.text = rpc.name_get(self.relation, self.default, rpc.get_session().context) def update_params(self, params): super(M2O, self).update_params(params) if params['value'] and not params['text']: try: value = expr_eval(params['value'], {'context':rpc.get_session().context}) except: value = params['value'] params['text'] = rpc.name_get(self.relation, value, rpc.get_session().context) register_widget(M2O, ["many2one"]) # vim: ts=4 sts=4 sw=4 si et
_o2m=1) self.id = id self.ids = ids if view_type == 'tree': self.id = None elif view_type == 'form': records_count = len(self.screen.ids or []) current_record = 0 if records_count and self.screen.id in self.screen.ids: current_record = self.screen.ids.index(self.screen.id) + 1 self.pager_info = _('%d of %d') % (current_record, records_count) else: self.pager_info = _('- of %d') % (records_count) def get_value(self): if not self.ids: return [] values = getattr(self.screen.widget, 'values', []) return [(1, val.get('id', False), val) for val in values] register_widget(O2M, ["one2many", "one2many_form", "one2many_list"])
self.screen = Screen(current, prefix=self.name, views_preloaded=view, editable=self.editable, readonly=self.readonly, selectable=0, nolinks=self.link, _o2m=1) self.id = id self.ids = ids if view_type == 'tree': self.id = None elif view_type == 'form': records_count = len(self.screen.ids or []) current_record = 0 if records_count and self.screen.id in self.screen.ids: current_record = self.screen.ids.index(self.screen.id) + 1 self.pager_info = _('%d of %d') % (current_record, records_count) else: self.pager_info = _('- of %d') % (records_count) def get_value(self): if not self.ids: return [] values = getattr(self.screen.widget, 'values', []) return [(1, val.get('id', False), val) for val in values] register_widget(O2M, ["one2many", "one2many_form", "one2many_list"])
from openerp import validators from openerp.widgets import TinyInputWidget from openerp.widgets import register_widget __all__ = ["CKEditor"] class CKEditor(TinyInputWidget): template = "/widget_ckeditor/widgets/templates/ckeditor.mako" javascript = [ JSLink("widget_ckeditor", "javascript/ck_editor/ckeditor.js"), JSLink("widget_ckeditor", "javascript/ck_editor/adapters/jquery.js") ] def __init__(self, **attrs): super(CKEditor, self).__init__(**attrs) self.validator = validators.String() self.readonly = not self.editable or self.readonly def set_value(self, value): super(CKEditor, self).set_value(value) register_widget(CKEditor, ["text_html"]) # vim: ts=4 sts=4 sw=4 si et
template = "/openerp/widgets/form/templates/reference.mako" params = ["options", "domain", "context", "text", "relation"] options = [] def __init__(self, **attrs): super(Reference, self).__init__(**attrs) self.options = attrs.get('selection', []) self.domain = attrs.get('domain', []) self.context = attrs.get('context', {}) self.validator = validators.Reference() self.onchange = None # override onchange in js code def set_value(self, value): if value: self.relation, self.default = value.split(",") self.text = rpc.name_get(self.relation, self.default, rpc.session.context) else: self.relation = '' self.default = '' self.text = '' register_widget(Reference, ["reference"]) # vim: ts=4 sts=4 sw=4 si et
params.updateAttrs( model=self.action['res_model'], id=False, ids=None, view_ids=view_ids, view_mode=view_mode, context=self.context, domain=self.domain, offset = 0, limit = 50 ) # get pager vars if set if hasattr(cherrypy.request, 'terp_params'): current = cherrypy.request.terp_params current = current.chain_get(self.name or '') or current params.updateAttrs( offset=current.offset, limit=current.limit ) self.screen = screen.Screen(params, prefix=self.name, editable=True, selectable=3) elif self.action['view_type']=='tree': pass #TODO register_widget(Action, ["action"]) # vim: ts=4 sts=4 sw=4 si et
# # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # ############################################################################## import random from openerp.widgets import TinyInputWidget, register_widget from openobject.widgets import JSLink class Matrix(TinyInputWidget): template = "/smile_matrix_widget/widgets/templates/matrix.mako" javascript = [ JSLink("smile_matrix_widget", "javascript/matrix.js"), ] def __init__(self, **kwargs): # Explanation of attrs and context hacks belows can be found at: https://github.com/Smile-SA/smile_openerp_matrix_widget/issues/3 #attrs = kwargs.get('attrs', {}) #xml_attrs = isinstance(attrs, (str, unicode)) and eval(attrs) or attrs #xml_context = isinstance(context, (str, unicode)) and eval(context) or context super(Matrix, self).__init__(**kwargs) register_widget(Matrix, ["matrix"])
# if bin_size was in context when reading the binary field, then the field's value is actually the binary # field's content size self.value_bin_size = getattr(self, "context", {}).get("bin_size", False) def set_value(self, value): # XXX: server bug work-arround if self.value_bin_size: self.text = value return try: self.text = utils.get_size(value) except: self.text = value or "" register_widget(Binary, ["binary"]) class Image(TinyInputWidget): template = "/openerp/widgets/form/templates/image.mako" params = ["src", "width", "height", "model", "id", "field", "stock", "bin_src"] src = "" width = None height = None field = "" stock = True def __init__(self, **attrs): icon = attrs.get("name") attrs["name"] = attrs.get("name", "Image").replace("-", "_")
class Reference(TinyInputWidget): template = "/openerp/widgets/form/templates/reference.mako" params = ["options", "domain", "context", "text", "relation"] options = [] def __init__(self, **attrs): super(Reference, self).__init__(**attrs) self.options = attrs.get('selection', []) self.domain = attrs.get('domain', []) self.context = attrs.get('context', {}) self.validator = validators.Reference() self.onchange = None # override onchange in js code def set_value(self, value): if value: self.relation, self.default = value.split(",") self.text = rpc.name_get(self.relation, self.default, rpc.get_session().context) else: self.relation = '' self.default = '' self.text = '' register_widget(Reference, ["reference"]) # vim: ts=4 sts=4 sw=4 si et
class WikiWidget(Text): template = "/wiki/widgets/templates/wiki.mako" params = ["data"] css = [CSSLink("wiki", "css/wiki.css")] data = None def set_value(self, value): super(WikiWidget, self).set_value(value) if value: toc = True id = False if hasattr(cherrypy.request, 'terp_record'): params = cherrypy.request.terp_params if params._terp_model == 'wiki.wiki': proxy = rpc.RPCProxy('wiki.wiki') toc = proxy.read([params.id], ['toc'])[0]['toc'] id = params.id text = value+'\n\n' html = wiki2html(text, toc, id) self.data = html register_widget(WikiWidget, ["text_wiki"]) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
self.default_focus = attrs.get('default_focus', 0) self.validator = validators.many2one() def set_value(self, value): if value and isinstance(value, (tuple, list)) and len(value) == 2: self.default, self.text = value elif value and isinstance(value, basestring): self.text = value else: self.default = value self.text = rpc.name_get(self.relation, self.default, rpc.session.context) def update_params(self, params): super(M2O, self).update_params(params) if params['value'] and not params['text']: try: value = expr_eval(params['value'], {'context': rpc.session.context}) except: value = params['value'] params['text'] = rpc.name_get(self.relation, value, rpc.session.context) register_widget(M2O, ["many2one"]) # vim: ts=4 sts=4 sw=4 si et