Widgets are the GUI elements that can perform some controlling tasks. In OpenERP, we can see a few of widgets that have significance in the views like statuses of the any process, seeing states of an object, or getting lists out of huge data, or splitting data.
Some interesting widgets I came across are:
selection: this widget adds a drop down list when we have many2one field, for example displaying only journal name where a journal_id is a many2one field.
<field name="journal_id" widget="selection"/>
progressbar: this widget is used to show the progress of a task in percentage, so we add a float field in the model and then use in the view.
'progress': fields.float('Progress', readonly=True, help='Shows you the progress made today on the reconciliation process')
<field name="progress" widget="progressbar" colspan="4"/>
statusbar: this widget can display the various states of a task, for this we add a selection field in the model,
'state': fields.selection([
('draft','Draft'),
('proforma','Pro-forma'),
('proforma2','Pro-forma'),
('open','Open'),
('paid','Paid'),
('cancel','Cancelled')
],'State', select=True, readonly=True,
help=' * The \'Draft\' state is used when a user is encoding a new and unconfirmed Invoice. \
\n* The \'Pro-forma\' when invoice is in Pro-forma state,invoice does not have an invoice number. \
\n* The \'Open\' state is used when user create invoice,a invoice number is generated.Its in open state till user does not pay invoice. \
\n* The \'Paid\' state is set automatically when the invoice is paid. Its related journal entries may or may not be reconciled. \
\n* The \'Cancelled\' state is used when user cancel invoice.'),
this field describes all the states of an invoice: draft/open/proforma/paid etc.
<field name="state" widget="statusbar" statusbar_visible="draft,open,paid" statusbar_colors='{"proforma":"blue","proforma2":"blue"}'/>
one2many: the one2many widget is used when we want to view a many2many field as one2many, we simply add a many2many field like an invoice_line,
<field colspan="4" name="invoice_line" nolabel="1" widget="one2many_list" context="{'type': type}"/>
many2many: this widget displays a one2many field as a many2many field, for example a journal entry consists of the journal items, so it will be displayed a single line, describing it completely,
<field colspan="4" name="move_line_ids" nolabel="1" widget="many2many" domain="[('account_id','=',account_id),('statement_id', '=', False)]">
image: for adding an image, we add a binary field in the model, for example displaying image of the employee in the employee form or list,
'image': fields.binary("Photo",help="This field holds the image used as photo for the employee."),
<field name="image" widget="image" />
email: use this widget for an email field.
<field name="work_email" widget="email"/>
url: use this widget for the char field which is a website or a link.
0 Comment(s)