domain: client
language: javascript
class Item class
The selections attribute stores a list of a primary key field values.
When a Multiple selection check box is checked on the
Layout tab in the
View Form Dialog or
multiselect attribute of the
table_options is set programmatically,
the check box in the leftmost column of the table appears and
each time a user clicks on the check box, the selections attrubute changes.
It can also be changed programmatically by using add or remove methods
or assigning an array.
In this example, the send_email function, on the client, uses Customers selection
attribute to get array of primary key field values selected by users and send them
to the send_email function defined in the server module of the item using
the
server
method
function send_email(subject, message) {
var selected = task.customers.selections;
if (!selected.length) {
selected.add(task.customers.id.value);
}
item.server('send_email', [selected, subject, message],
function(result, err) {
if (err) {
item.alert('Failed to send the mail: ' + err);
}
else {
item.alert('Successfully sent the mail');
}
}
);
}
On the server, this array is used to retrieve information about selected customers using open method
import smtplib
def send_email(item, selected, subject, mess):
cust = item.task.customers.copy()
cust.set_where(id__in=selected)
cust.open()
to = []
for c in cust:
to.append(c.email.value)
# code that sends email