def create_policy_dialog(self): table_data = declarations.define_tables() result = gadfly_utils.execute_sql_statement(db=self.db, sqlStatement=gadfly_utils.build_select_all_table_columns_statement(table_data,'store_info','1'), commit_after=1, leave_cursor_open=1, create_cursor_also=0) if result['status'] != 'success': print 'DB Error: Could not retrieve store info' return result self.policy_dialog = Pmw.Dialog(self._hull, buttons=('Ok',), defaultbutton='Ok', title='Order Policies') self.policy_data = Pmw.ScrolledText( self.policy_dialog.interior(), borderframe=1, text_padx=10, text_pady=10, text_wrap='word') order_policies = string.replace(result['result'][0][15],'<CR>','\n') self.policy_data.settext(order_policies) self.policy_data._textbox.configure(state='disabled') self.policy_data.pack(expand=1,fill=BOTH) self.policy_dialog.withdraw()
def view_cart(self,display_customer_data=0): if self.cart == {}: self.info_dialog.configure(message_text='You have no items in your shopping cart!') self.info_dialog.activate() return else: table_data = declarations.define_tables() if display_customer_data: product_data_lines = 'First Name: ' + self.firstnametextvar.get() + '\n' product_data_lines = product_data_lines + 'Middle Initial: ' + self.initialtextvar.get() + '\n' product_data_lines = product_data_lines + 'Last Name: ' + self.initialtextvar.get() + '\n' product_data_lines = product_data_lines + 'Street Line 1: ' + self.streetline1textvar.get() + '\n' product_data_lines = product_data_lines + 'Street Line 2: ' + self.streetline2textvar.get() + '\n' product_data_lines = product_data_lines + 'City: ' + self.citytextvar.get() + '\n' product_data_lines = product_data_lines + 'State: ' + self.statetextvar.get() + '\n' product_data_lines = product_data_lines + 'Zip: ' + self.ziptextvar.get() + '\n' product_data_lines = product_data_lines + 'Card Number: ' + self.cardnotextvar.get() + '\n' product_data_lines = product_data_lines + 'Expiration Date: ' + self.expdatetextvar.get() + '\n' product_data_lines = product_data_lines + 'Payment Method: ' + self.payment_methodvar.get() + '\n\nItems Ordered:\n\n' else: product_data_lines = '' product_data_lines = product_data_lines + string.center('Id',10) + ' ' + string.center('Name',40) + ' ' + string.center('Weight',6) + ' ' + string.center('Qty',3) + ' ' + string.center('Price',11) + ' ' + string.center('Total',11) + '\n' line_total = 0.0 for product_id in self.cart.keys(): result = gadfly_utils.execute_sql_statement(db=self.db, sqlStatement=gadfly_utils.build_select_all_table_columns_statement(table_data,'products',product_id), commit_after=1, leave_cursor_open=1, create_cursor_also=0) if result['status'] != 'success': print 'DB Error: Could not retrieve product info' return result product_data_lines = product_data_lines + '\n' + \ string.center(result['result'][0][0],10) + ' ' + \ string.center(result['result'][0][5],40) + ' ' + \ string.center('%s lbs.' % (result['result'][0][8]),6) + ' ' + \ string.center(`self.cart[product_id]`,3) + ' ' + \ string.center('$%9.2f' % (result['result'][0][7]),11) + ' ' + \ string.center('$%9.2f' % (self.cart[product_id] * float(result['result'][0][7])),11) + '\n' line_total = line_total + (self.cart[product_id] * float(result['result'][0][7])) product_data_lines = product_data_lines + '\n\nOrder Total: $' product_data_lines = product_data_lines + ('%9.2f' % (line_total)) self.view_cart_data.settext(product_data_lines) self.view_cart_dialog.activate()
def getProductTypes(self): result = gadfly_utils.execute_sql_statement(db=self.db, sqlStatement='SELECT DISTINCT category FROM products', commit_after=1, leave_cursor_open=1, create_cursor_also=0) if result['status'] != 'success': print 'DB Error: Could not retrieve product categories' return result product_types = [] for i in xrange(0,len(result['result'])): product_types.append(result['result'][i][0]) return {'status' : 'success', 'message' : "", 'result' : product_types}
def getProductsOfType(self, product_type): result = gadfly_utils.execute_sql_statement(db=self.db, sqlStatement="SELECT id, description FROM products WHERE category = '%s'" % (product_type), commit_after=1, leave_cursor_open=1, create_cursor_also=0) if result['status'] != 'success': print 'DB Error: Could not retrieve products of type: %s' % (product_type) return result products = [] for i in xrange(0,len(result['result'])): products.append({'db_key' : result['result'][i][0], 'name' : result['result'][i][1]}) return {'status' : 'success', 'message' : "Retrieved products for types specified", 'result' : products}
def display_product_info(self, name, db_key): table_data = declarations.define_tables() result = gadfly_utils.execute_sql_statement(db=self.db, sqlStatement=gadfly_utils.build_select_all_table_columns_statement(table_data,'products',db_key), commit_after=1, leave_cursor_open=1, create_cursor_also=0) if result['status'] != 'success': print 'DB Error: Could not retrieve product info' return result self.productidlabel.configure(text='Product Id:') self.productid.configure(image='',text=result['result'][0][0],font=default_font) self.productid.pack(side=LEFT) self.productdescription.configure(text=result['result'][0][5],font=default_font) if self.productimagedata: del self.productimagedata self.productimagedata = ImageTk.PhotoImage(Image.open('%s%s' % (imgs,result['result'][0][9]))) self.productimage['image'] = self.productimagedata self.productlongdescription.configure(text=result['result'][0][6], font=default_font, wraplength=300) self.productlongdescription.pack(side=TOP) self.shippingweightlabel.configure(text='Shipping Weight:',font=default_font) self.shippingweightlabel.pack(side=LEFT,expand=NO) self.shippingweight.configure(text='%s lbs' % (result['result'][0][8]),font=default_font) self.shippingweight.pack(side=LEFT,expand=NO) self.productpricelabel.configure(text='Price:',font=default_font) self.productprice.configure(text="$ %9.2f" % (result['result'][0][7]),font=default_font) self.quantitylabel.pack(side=LEFT,expand=NO) # initialize quantity to 0 self.quantitytextvar.set('0') self.quantitytext.pack(side=LEFT,expand=NO)
def createProductDisplay(self): global default_font self.cart = {} table_data = declarations.define_tables() result = gadfly_utils.execute_sql_statement(db=self.db, sqlStatement=gadfly_utils.build_select_all_table_columns_statement(table_data,'store_info','1'), commit_after=1, leave_cursor_open=1, create_cursor_also=0) if result['status'] != 'success': print 'DB Error: Could not retrieve product categories' return result self.line1frame = self.createcomponent('line1frame', (), None, Frame, (self.datasite,), background='white') self.line1frame.pack(side=TOP,fill=Y,expand=YES) self.productidlabel = self.createcomponent('productidlabel', (), None, Label, (self.line1frame,), background='white', foreground='black', font=default_font) self.productidlabel.pack(side=LEFT,fill=BOTH,expand=YES) self.productid = self.createcomponent('productid', (), None, Label, (self.line1frame,), background='white', font=default_font, foreground='black') self.productid.pack(side=LEFT,fill=BOTH,expand=YES) self.browser.productimagedata = ImageTk.PhotoImage(Image.open('%s%s' % (imgs,'store_logo.gif'))) self.productimagedata = self.browser.productimagedata self.productid['image'] = self.browser.productimagedata self.line2frame = self.createcomponent('line2frame', (), None, Frame, (self.datasite,), background='white') self.line2frame.pack(side=TOP,fill=Y,expand=YES) self.productdescription = self.createcomponent('productdescription', (), None, Label, (self.line2frame,), text='To Order by Phone Call: %s' % (result['result'][0][10]), font=default_font, background='white', foreground='black') self.productdescription.pack(side=TOP,expand=YES,fill=Y) self.line3frame = self.createcomponent('line3frame', (), None, Frame, (self.datasite,), background='white') self.line3frame.pack(side=TOP,fill=Y,expand=YES) self.productimage = self.createcomponent('productimage', (), None, Label, (self.line3frame,), text=result['result'][0][2], font=default_font, background='white', foreground='black') self.productimage.pack(expand=YES,fill=Y) self.line4frame = self.createcomponent('line4frame', (), None, Frame, (self.datasite,), background='white') self.line4frame.pack(side=TOP,fill=Y,expand=YES) self.productlongdescription = self.createcomponent('productlongdescription', (), None, Label, (self.line4frame,), font=default_font, background='white', foreground='black') self.line5frame = self.createcomponent('line5frame', (), None, Frame, (self.datasite,), background='white') self.line5frame.pack(side=TOP,fill=Y,expand=YES) self.shippingweightlabel = self.createcomponent('shippingweightlabel', (), None, Label, (self.line5frame,), font=default_font, background='white', foreground='black') #self.shippingweightlabel.pack(side=LEFT,expand=YES,fill=Y) self.shippingweight = self.createcomponent('shippingweight', (), None, Label, (self.line5frame,), text='%s' % (result['result'][0][14]), font=default_font, background='white') #self.shippingweight.pack(side=LEFT,expand=YES,fill=Y) self.line6frame = self.createcomponent('line6frame', (), None, Frame, (self.datasite,), background='white') self.line6frame.pack(side=TOP,fill=Y,expand=YES) self.productpricelabel = self.createcomponent('productpricelabel', (), None, Label, (self.line6frame,), font=default_font, background='white', foreground='black') self.productpricelabel.pack(side=LEFT,expand=YES,fill=Y) self.productprice = self.createcomponent('productprice', (), None, Label, (self.line6frame,), text='%s' % (result['result'][0][14]), wraplength=350, font=default_font, background='white') self.productprice.pack(side=LEFT,expand=YES,fill=Y) self.line7frame = self.createcomponent('line7frame', (), None, Frame, (self.datasite,), background='white') self.line7frame.pack(side=TOP,fill=Y,expand=YES) self.quantitylabel = self.createcomponent('quantitylabel', (), None, Label, (self.line7frame,), text='Quantity:', font=default_font, background='white', foreground='black') #self.quantitylabel.pack(side=LEFT,fill=Y,expand=YES) self.quantitytextvar = StringVar() self.quantitytextvar.set('0') self.quantitytext = self.createcomponent('quantitytext', (), None, Pmw.EntryField, (self.line7frame,), value='0', validate= {"validator" : "numeric", "min" : 0, "max" : 999}, entry_textvariable=self.quantitytextvar) self.quantitytext._entryFieldEntry.configure(width=3) self.line8frame = self.createcomponent('line8frame', (), None, Frame, (self.datasite,), background='white') self.line8frame.pack(side=TOP,fill=Y,expand=YES) self.copyrightimage = self.createcomponent('copyrightimage', (), None, Label, (self.line8frame,), background='white') self.browser.copyrightimagedata = ImageTk.PhotoImage(Image.open('%s%s' % (imgs,'linuxdenlogo.jpg'))) self.copyrightimage['image'] = self.browser.copyrightimagedata self.copyrightimage.pack(side=RIGHT,padx=5) self.browser.quantitytext = self.quantitytext self.copyrightlabel = self.createcomponent('copyrightlabel', (), None, Label, (self.line8frame,),text='Copyright (c) 2000\nwww.linuXden.com\nAll Rights Reserved.',font=copyright_font,background='white',foreground='blue') self.copyrightlabel.pack(side=RIGHT) self.browser.copyrightlabel = self.copyrightlabel self.browser.copyrightimage = self.copyrightimage self.browser.productid = self.productid self.browser.productimage = self.productimage self.browser.productdescription = self.productdescription self.browser.productprice = self.productprice self.browser.quantitylabel = self.quantitylabel
def create_customer_data_dialog(self): table_data = declarations.define_tables() result = gadfly_utils.execute_sql_statement(db=self.db, sqlStatement=gadfly_utils.build_select_all_table_columns_statement(table_data,'store_info','1'), commit_after=1, leave_cursor_open=1, create_cursor_also=0) if result['status'] != 'success': print 'DB Error: Could not retrieve store info' return result self.customer_data_dialog = Pmw.Dialog(self._hull, buttons=('Ok',), defaultbutton='Ok', title='Customer Data Entry') self.customer_data = Pmw.ScrolledFrame( self.customer_data_dialog.interior(), borderframe=1, usehullsize=1, hull_width = 400, hull_height = 220) self.customer_data.pack(expand=1,fill=BOTH) self.firstnametextvar = StringVar() self.initialtextvar = StringVar() self.lastnametextvar = StringVar() self.streetline1textvar = StringVar() self.streetline2textvar = StringVar() self.citytextvar = StringVar() self.statetextvar = StringVar() self.ziptextvar = StringVar() self.cardnotextvar = StringVar() self.expdatetextvar = StringVar() self.first_name = Pmw.EntryField(self.customer_data.interior(), labelpos = 'w', label_text = 'First Name:', value = '', validate = {'max' : 40}, entry_textvariable=self.firstnametextvar) #self.first_name._entryFieldEntry.configure(width=40) self.initial = Pmw.EntryField(self.customer_data.interior(), labelpos = 'w', label_text = 'Middle Initial:', validate = {'max' : 1}, entry_textvariable=self.initialtextvar) self.last_name = Pmw.EntryField(self.customer_data.interior(), labelpos = 'w', label_text = 'Last Name:', validate = {'max' : 40}, entry_textvariable=self.lastnametextvar) self.street_line1 = Pmw.EntryField(self.customer_data.interior(), labelpos = 'w', label_text = 'Street Line 1:', validate = {'max' : 40}, entry_textvariable=self.streetline1textvar) self.street_line2 = Pmw.EntryField(self.customer_data.interior(), labelpos = 'w', label_text = 'Street Line 2:', validate = {'max' : 40}, entry_textvariable=self.streetline2textvar) self.city = Pmw.EntryField(self.customer_data.interior(), labelpos = 'w', label_text = 'City:', validate = {'max' : 40}, entry_textvariable=self.citytextvar) self.state = Pmw.EntryField(self.customer_data.interior(), labelpos = 'w', label_text = 'State:', validate = {'max' : 2}, entry_textvariable=self.statetextvar) self.zip = Pmw.EntryField(self.customer_data.interior(), labelpos = 'w', label_text = 'Zip Code:', validate = {'max' : 5}, entry_textvariable=self.ziptextvar) result = gadfly_utils.execute_sql_statement(db=self.db, sqlStatement='SELECT payment_type FROM payment_methods', commit_after=1, leave_cursor_open=1, create_cursor_also=0) if result['status'] != 'success': print 'DB Error: Could not retrieve product categories' return result self.payment_methodvar = StringVar() self.payment_methodvar.set(result['result'][0][0]) payment_options = [] for i in xrange(0,len(result['result'])): payment_options.append(result['result'][i][0]) self.payment_method = Pmw.OptionMenu(self.customer_data.interior(), labelpos = 'w', label_text = 'Payment method:', menubutton_textvariable = self.payment_methodvar, items = payment_options, menubutton_width = 15, ) self.card_number = Pmw.EntryField(self.customer_data.interior(), labelpos = 'w', label_text = 'Credit Card Number:', validate = {'max' : 20}, entry_textvariable=self.cardnotextvar) self.expdate = Pmw.EntryField(self.customer_data.interior(), labelpos = 'w', label_text = 'Expiration Date:', value = '1-1-2000', validate = {'validator' : 'date', 'separator' : '-', 'min' : '1-1-2000', 'minstrict' : 0, 'maxstrict' : 0, 'format' : 'mdy'}, entry_textvariable=self.expdatetextvar) # payment methods # shipping method entries = (self.first_name, self.initial, self.last_name, self.street_line1,self.street_line2,self.city, self.state,self.zip, self.payment_method,self.card_number,self.expdate) for entry in entries: entry.pack(fill='x', expand=1, padx=10, pady=5) Pmw.alignlabels(entries) self.customer_data_dialog.withdraw()