onchange="update_data('from_cm2')"
function update_data(from){
if (from != 'from_cm1') {
ajax('{{=URL('default','get_options_for_cm1_id')}}', ['search_string','cm1_id','cm2_id','cm3_id','cm4_id','ng'], ':eval');
}
if (from != 'from_cm2') {
ajax('{{=URL('default','get_options_for_cm2_id')}}', ['search_string','cm1_id','cm2_id','cm3_id','cm4_id','ng'], ':eval');
}
if (from != 'from_cm3') {
ajax('{{=URL('default','get_options_for_cm3_id')}}', ['search_string','cm1_id','cm2_id','cm3_id','cm4_id','ng'], ':eval');
}
if (from != 'from_cm4') {
ajax('{{=URL('default','get_options_for_cm4_id')}}', ['search_string','cm1_id','cm2_id','cm3_id','cm4_id','ng'], ':eval');
}
if (from != 'from_ng') {
ajax('{{=URL('default','get_options_for_ng')}}', ['search_string','cm1_id','cm2_id','cm3_id','cm4_id','ng'], ':eval');
}
switch (from) {
case 'from_previous':
ajax('{{=URL('default','get_products_grid', vars={'from':'from_previous'})}}', ['search_string','cm1_id','cm2_id','cm3_id','cm4_id','ng'], 'target_data');
break;
case 'from_next':
ajax('{{=URL('default','get_products_grid', vars={'from':'from_next'})}}', ['search_string','cm1_id','cm2_id','cm3_id','cm4_id','ng'], 'target_data');
break;
default:
ajax('{{=URL('default','get_products_grid')}}', ['search_string','cm1_id','cm2_id','cm3_id','cm4_id','ng'], 'target_data');
}
}
def get_options_for_cm1_id():
search_string = request.vars['search_string']
cm1_id = int(request.vars['cm1_id'])
cm2_id = int(request.vars['cm2_id'])
cm3_id = int(request.vars['cm3_id'])
cm4_id = int(request.vars['cm4_id'])
ng = int(request.vars['ng'])
criteria = 0
query_str = ''
if len(search_string) > 0:
query_main_str = "(db.products.code.contains('" + search_string + "')) | (db.products.material_number.contains('" + search_string + "')) | (db.products.description.contains('" + search_string + "'))"
else:
query_main_str = 'db.products.cm1 == db.cm1.id'
if cm1_id != 0:
cm1 = db.cm1(request.vars['cm1_id'])
if cm2_id != 0:
cm2 = db.cm2(request.vars['cm2_id'])
if criteria > 0:
query_str += ' & '
query_str += '(db.products.cm2 == cm2.id)'
criteria += 1
if cm3_id != 0:
cm3 = db.cm3(request.vars['cm3_id'])
if criteria > 0:
query_str += ' & '
query_str += '(db.products.cm3 == cm3.id)'
criteria += 1
if cm4_id != 0:
cm4 = db.cm4(request.vars['cm4_id'])
if criteria > 0:
query_str += ' & '
query_str += '(db.products.cm4 == cm4.id)'
criteria += 1
if ng > 0:
if criteria > 0:
query_str += ' & '
query_str += '(db.products.ng == ' + str(ng) + ')'
criteria += 1
if criteria > 0:
query_str += ' & '
query_str += '(db.cm1.id == db.products.cm1)'
if request.uri_language == 'it':
order_by = 'db.cm1.title_it'
else:
order_by = 'db.cm1.title_en'
cms = db(eval(query_main_str)).select(db.cm1.ALL, orderby=eval(order_by), groupby=db.cm1.id, join=(db.products.on(eval(query_str))))
html=''
#html += query_str
html += "<option value='0'>" + T('All') + "</option>" + ' '
if request.uri_language == 'it':
for cm in cms:
html += "<option value='" + str(cm.id) + "' "
if cm.id == cm1_id:
html += ' selected'
html += ">" + cm.title_it + "</option>" + ' '
else:
for cm in cms:
html += "<option value='" + str(cm.id) + "' "
if cm.id == cm1_id:
html += ' selected'
html += ">" + cm.title_en + "</option>" + ' '
return 'jQuery("#cm1_id").html("%s");' % html # jQuery("#cm1_id").change();
def get_products_grid():
#take all vars
search_string = request.vars['search_string']
cm1_id = int(request.vars['cm1_id'])
cm2_id = int(request.vars['cm2_id'])
cm3_id = int(request.vars['cm3_id'])
cm4_id = int(request.vars['cm4_id'])
ng = int(request.vars['ng'])
criteria = 0
query_str = ''
if len(search_string) > 0:
query_str += "((db.products.code.contains('" + search_string + "')) | (db.products.material_number.contains('" + search_string + "')) | (db.products.description.contains('" + search_string + "')))"
criteria += 1
if cm1_id != 0:
cm1 = db.cm1(cm1_id)
if criteria > 0:
query_str += ' & '
query_str += '(db.products.cm1 == cm1.id)'
criteria += 1
if cm2_id != 0:
cm2 = db.cm2(cm2_id)
if criteria > 0:
query_str += ' & '
query_str += '(db.products.cm2 == cm2.id)'
criteria += 1
if cm3_id != 0:
cm3 = db.cm3(cm3_id)
if criteria > 0:
query_str += ' & '
query_str += '(db.products.cm3 == cm3.id)'
criteria += 1
if cm4_id != 0:
cm4 = db.cm4(cm4_id)
if criteria > 0:
query_str += ' & '
query_str += '(db.products.cm4 == cm4.id)'
criteria += 1
if ng != 0:
if criteria > 0:
query_str += ' & '
query_str += '(db.products.ng == ' + str(ng) + ')'
criteria += 1
if criteria > 0:
query_str += ' & '
query_str += '(db.products.ecommerce>0)'
n_page_rows = 10
n_products = db(eval(query_str)).count()
n_pages = (n_products / n_page_rows)
if n_products % n_page_rows > 0:
n_pages += 1
if (request.vars['from'] == 'from_previous') & (session.current_first_product > n_page_rows):
session.current_first_product -= n_page_rows
elif (request.vars['from'] == 'from_next'):
if session.current_first_product + n_page_rows < n_products:
session.current_first_product += n_page_rows
else: session.current_first_product = 0
current_last_product = session.current_first_product + n_page_rows
current_product_page = current_last_product / n_page_rows
products = db(eval(query_str)).select(limitby=(session.current_first_product,current_last_product), orderby=db.products.code)
if auth.is_logged_in():
discounts=db(db.discounts.user_id == auth.user_id).select(db.discounts.ALL)
html = ''
html += "<div class='left'>" + str(n_products)
if n_products > 1:
html += ' ' + T('products found')
else:
html += ' ' + T('product found')
'''
if request.vars['from']:
html += ' ' + request.vars['from']
'''
html += "</div>"
html += "<div class='right'>" + T('Page') + ' ' + str(current_product_page) + "/" + str(n_pages) + '</div>'
html += "<table class='table table-striped cmtable'>"
html += "<thead>"
html += "<tr>"
html += "<th>" + T('Product code') + "</th>"
html += "<th>" + T('Mat. nr.') + "</th>"
html += "<th>" + T('Description') + "</th>"
html += "<th>" + T('PC1') + "</th>"
html += "<th>" + T('PC2') + "</th>"
html += "<th>" + T('PC3') + "</th>"
html += "<th>" + T('PC4') + "</th>"
html += "<th>NG</th>"
html += "<th>" + T('Price') + "</th>"
html += "<th>" + T('Catalogue') + "</th>"
html += "</thead>"
html += "<tbody>"
for product in products:
html+= "<tr>"
html+= "<td>" + product.code + "</td>"
html+= "<td>" + product.material_number + "</td>"
html+= "<td>" + product.description + "</td>"
if request.uri_language == 'it':
html+= "<td>" + product.cm1.title_it + "</td>"
html+= "<td>" + product.cm2.title_it + "</td>"
html+= "<td>" + product.cm3.title_it + "</td>"
html+= "<td>" + product.cm4.title_it + "</td>"
else:
html+= "<td>" + product.cm1.title_en + "</td>"
html+= "<td>" + product.cm2.title_en + "</td>"
html+= "<td>" + product.cm3.title_en + "</td>"
html+= "<td>" + product.cm4.title_en + "</td>"
html+= "<td>"
if product.ng > 0:
html += str(product.ng)
else:
html += '-'
html += "</td>"
html+= "<td>"
if product.special_offer:
html+= T('Special offer, contact us.')
else:
if auth.is_logged_in():
found_discount=False
for discount in discounts:
if discount.brand == product.brand:
xcent_discount=discount.xcent
found_discount=True
if found_discount and product.price_list > 0:
price_str = "{0:.2f}".format(product.price_list * (100 - xcent_discount) / 100) + "<small> EUR</small>"
html+= price_str
else:
html+= T('Ask for it')
else:
html+= T('login required')
html+= "</td>"
html+= "<td>"
html+= "<a href='" + product.pdf_path + "' target='blank' alt='Download pdf'>Download</a>"
html+= "</td>"
html+= "</tr>"
html += "</tbody>"
html += "</table>"
html += "<div class='web2py_paginator'>"
html += "</div>"
return html
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups "web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to web2py+un...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.