예제 #1
0
#    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"])
예제 #2
0
            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):
예제 #4
0
파일: _form.py 프로젝트: hectord/unifield
    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.
    """
예제 #5
0
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

예제 #6
0
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"])
예제 #7
0
                             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
예제 #8
0
        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
예제 #9
0
    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.
    """
예제 #10
0
                             _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"])
예제 #11
0
        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"])
예제 #12
0
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
예제 #13
0
    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
예제 #14
0
                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"])
예제 #16
0
        # 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("-", "_")
예제 #17
0
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
예제 #18
0
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:
예제 #19
0
        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