def create(self): values = dict(request.params) producttag = ProductTag(values['producttag']) Session.add(producttag) Session.commit() h.flash(_("Product tag %s created successfully")%values['producttag']) return redirect(url(controller='producttag',action='index'))
def create(self): values = dict(request.params) usertag = UserTag(values['usertag']) Session.add(usertag) Session.commit() h.flash(_("User tag %s created successfully")%values['usertag']) return redirect(url(controller='usertag',action='index'))
def update(self,id): values = dict(request.params) producttag = Session.query(ProductTag).filter_by(id=id).one() producttag.tag = values['producttag'] Session.add(producttag) Session.commit() h.flash(_("Tag %s edited successfully")%producttag.tag) return redirect(url(controller='producttag',action='index'))
def create(self): #if Session.query(Group).filter_by(group=request.POST['group']).one() != None: #abort(404) newgroup = Group(request.POST['group']) newgroup.permissions = self.form_result['permissions'] Session.add(newgroup) Session.commit() h.flash(_('Group successfully Created.')) redirect(url(controller='addgroup', action='list'))
def undelete(self, id): came_from = str(request.GET.get("came_from", "")) or url(controller="user", action="admin") try: user = Session.query(User).filter_by(id=id).one() except: h.flash(_("No user with ID:%s to delete" % id)) return redirect(h.url(controller="user", action="index")) user.deleted = False Session.add(user) Session.commit() h.flash(_("User %s undeleted!") % user.user_name) return redirect(came_from)
def save2(self): values = dict(request.params) photos_inform=[] for item in values: if item.startswith('product_id'): product_id = item.split('.')[-1] if item.startswith('photo-'): photos_inform.append(int(item.split('-')[-1])) product = Session.query(Product).filter_by(id=product_id).one() action = request.params.getone('action') del values['action'] if action == 'Save': # we need a new schema to be on par with the new Ajax form schema = EditProductForm() try: result = schema.to_python(dict(request.params), c) except Invalid, e: return render_edit2_form( self.menu_items, values=values, id=product.id, errors=variabledecode.variable_encode( e.unpack_errors() or {}, add_repetitions=False ), number_of_photos=number_of_photos(values), photos = product.photos ) else: # Move the save photo to photo controller photos = Session.query(Photo).filter(Photo.id.in_(photos_inform)).all() product.code = result['code'] product.name = result['name'] product.description = result['description'] product.quantity= result['quantity'] product.buy_price = result['buy_price'] product.sell_price = result['sell_price'] product.wholesale_price = result['wholesale_price'] product.buy_date = result['buy_date'] product.brand = result['brand'] product.photos = photos product.tags = result['tag'] Session.add(product) Session.commit() h.flash(_('Product edited successfully.')) redirect(url(controller='product',action='admin'))
def save(self,id): if id is None: abort(404) group = self.form_result['group'] del self.form_result['group'] for k,v in self.form_result.items(): if getattr(group, k) != v: setattr(group, k, v) Session.add(group) Session.commit() response.status_int = 302 response.headers['location'] = url(controller='addgroup', action='list') return "Moved temporarily"
def upload(self): values = dict(request.params) overwrite = False if "files[]" in values: picfile = values["files[]"] fname = picfile.filename.replace(os.sep, "_") file_path = os.path.join(config["pylons.paths"]["static_files"], "pics", fname) if os.path.isfile(file_path): overwrite = True thumb_path = os.path.join(config["pylons.paths"]["static_files"], "pics", "thumbs", fname) watermark_path = os.path.join(config["pylons.paths"]["static_files"], "pics", "watermark2.PNG") permanent_file = open(file_path, "wb") shutil.copyfileobj(picfile.file, permanent_file) picfile.file.close() fsize = os.fstat(permanent_file.fileno())[6] if not overwrite: photo = Photo(fname) Session.add(photo) Session.commit() else: photo = Session.query(Photo).filter_by(file_path=fname).one() permanent_file.close() # use image magic to resize and water mark the photo call(["convert", file_path, "-strip", file_path]) # convert "prepared/$i" -colorspace RGB "prepared/$i" call(["convert", file_path, "-colorspace", "RGB", file_path]) # convert -resize 300x300 -quality 70% $img $img call(["convert", "-resize", "300x300", "-quality", "70%%", file_path, file_path]) # convert -define jpeg:size=200x200 "$i" -thumbnail '69x69>' "thumbs/$i call(["convert", "-define", "jpeg:size=200x200", file_path, "-thumbnail", "69x69>", thumb_path]) # composite -dissolve 6 -tile watermark2.PNG $img $img call(["composite", "-dissolve", "6", "-tile", watermark_path, file_path, file_path]) session["photos"]["files"].append({"name": fname, "size": fsize, "id": photo.id}) session.save() retval = [] for item in session["photos"]["files"]: retdict = dict() retdict["name"] = item["name"] retdict["size"] = item["size"] retdict["id"] = item["id"] retdict["type"] = ("image\/jpeg",) retdict["url"] = "/pics/%s" % item["name"] retdict["thumbnail_url"] = "/pics/thumbs/%s" % item["name"] retdict["delete_url"] = "/photo/delete?id=%s" % item["id"] retdict["delete_type"] = "DELETE" if overwrite: retdict["info"] = "File over writen on photo with id %s" % item["id"] retval.append(retdict) return retval
def forgotaction(self): values = dict(request.params) del values["action"] msg = "" settingsf = file(config["settings_file"], "rb") session["site_settings"] = pickle.load(settingsf) settingsf.close() session.save() captchres = h.captcha.submit( values["recaptcha_challenge_field"], values["recaptcha_response_field"], "6LepGccSAAAAAMfzDtmvyRjJ7-A1FWuJa5qUTxX2", session["site_settings"]["ip_address"], ) if not captchres.is_valid: c.menu_items = h.top_menu(self.menu_items, _("Customers")) html = render("/derived/user/forgot.html") return htmlfill.render(html, values, errors={"captcha": _("Invalid Captcha try again")}) user = Session.query(User).join(User.emails).filter(Email.email_address == values["email"]).one() confcode = str(uuid.uuid1()) uconf = UserConfirm(user, confcode) Session.add(uconf) Session.commit() message = Message( session["site_settings"]["forgotpass"], user.emails[0].email_address, _("Kazhal trading Reset password"), encoding="utf-8", ) msg += _("If you requested a password reset click the below link\n") ##msg += "%s%s"%(request.application_url,h.url(controller='user',action='resetpassEmail',id=user.id,confcode=confcode)) msg += "%s%s" % ( request.application_url, url(controller="user", action="resetpassEmail", id=user.id, confcode=confcode), ) c.contents = msg msgHtml = render(_("/derived/emails/forgotpass.html")) message.rich = msgHtml message.plain = msg message.send() h.flash( _( "An email has been sent to your address.To reset your password check your email and click on the confirm link." ) ) return redirect(url(controller="user", action="forgot"))
def _save(self,result,invoice): invoice_totalprice = 0 invoice.Description = result['status'] for item in result['items']: id = item['id'] invoice_item = Session.query(Invoice_item).filter_by(id=id).one() product = invoice_item.product invoice_item.quantity = item['quantity'] invoice_item.unitprice = item['unitprice'] invoice_item.total_price =item['quantity']*item['unitprice'] Session.add(invoice_item) invoice_totalprice += invoice_item.total_price invoice.total_price = invoice_totalprice Session.add(invoice) Session.commit()
def delete(self, id): def delcommons(user): phones = Session.query(Phone).filter_by(user_id=user.id).all() addresses = Session.query(Address).filter_by(user_id=user.id).all() emails = Session.query(Email).filter_by(user_id=user.id).all() for phone in phones: Session.delete(phone) for address in addresses: Session.delete(address) for email in emails: Session.delete(email) came_from = str(request.GET.get("came_from", "")) or url(controller="user", action="admin") try: user = Session.query(User).filter_by(id=id).one() except: h.flash(_("No user with ID:%s to delete" % id)) return redirect(h.url(controller="user", action="index")) if user.user_name == "admin": h.flash("Did u lost your mind?! deleting admin user will destroy ur program!") return redirect(came_from) if user.pending: conf = Session.query(UserConfirm).filter_by(user_id=user.id).one() Session.delete(conf) delcommons(user) Session.delete(user) else: invoices = Session.query(Invoice).filter_by(customer_id=user.id).filter_by(pending=False).all() if invoices == []: invoices = Session.query(Invoice).filter_by(customer_id=user.id).all() for invoice in invoices: for invoice_item in invoice.invoice_items: Session.delete(invoice_item) Session.delete(invoice) delcommons(user) Session.delete(user) h.flash("user and all his/her pending orders were deleted") else: h.flash( "you can not delete users permanently with confirmed orders from this site.instead this user has been marked as deleted and is unable to use his/her account anymore" ) user.deleted = True Session.add(user) Session.commit() h.flash(_("User %s deleted!") % user.user_name) return redirect(came_from)
def confirmuser(self): confirmcode = request.GET.get("confirmcode", "") try: conf = Session.query(UserConfirm).filter_by(confirm_code=confirmcode).one() except: h.flash(_("Wrong confirmation code")) redirect(url(controller="home", action="index")) if conf.confirm_code[:3] != u"cu-": h.flash(_("Not a user confirmation")) redirect(url(controller="product", action="list")) user = conf.user user.pending = False Session.add(user) Session.delete(conf) Session.commit() h.flash(_("Confirmation ok. you can now login with your user name and password")) redirect(url(controller="home", action="index"))
def _delete(self,invoice): if not invoice.pending: h.flash(_('You can not delete a confirmed invoice.')) return redirect(h.url(controller='invoice',action='index')) invoice.deleted = True customer = invoice.customer invoice_items=[] for invoice_item in invoice.invoice_items: product = invoice_item.product product.quantity += invoice_item.quantity customer.balance += invoice_item.total_price Session.add(customer) Session.add(product) Session.add(invoice_item) Session.add(invoice) Session.commit() h.flash(_('Invoice %s was marked as deleted')%invoice.id) return redirect(url(controller='invoice',action='index'))
def _confirm(self,invoice): customer = invoice.customer if not is_met(has_permission('confirm_invoice')): h.flash(_("You don't have enough permision to confirm ivoice")) return redirect(url(controller='invoice', action='edit',id=invoice.id)) if invoice.total_price > customer.balance + customer.cradit: h.flash(_("Customer balance is low. <a href='%s'>Give him enough cradit or contanct him about the funds</a>")%url(controller='user',action='edit',id=customer.id)) invoice.Description = _("Low balance") Session.add(invoice) Session.commit() return redirect(url(controller='invoice',action='edit',id=invoice.id)) invoice_id = invoice.id invoice_items=[] for invoice_item in invoice.invoice_items: product = invoice_item.product product.quantity -= invoice_item.quantity customer.balance -= invoice_item.total_price Session.add(product) Session.add(customer) invoice.pending = False Session.add(invoice) Session.commit()
#composite -dissolve 6 -tile watermark2.PNG $img $img call(['composite','-dissolve','6','-tile',watermark_path,file_path,file_path]) product.code = result['code'] product.name = result['name'] product.description = result['description'] product.quantity= result['quantity'] product.buy_price = result['buy_price'] product.sell_price = result['sell_price'] product.wholesale_price = result['wholesale_price'] product.buy_date = result['buy_date'] product.brand = result['brand'] product.photos = photos product.tags = result['tag'] Session.add(product) Session.commit() h.flash(_('Product edited successfully.')) redirect(url(controller='product',action='admin')) @ActionProtector(in_group('admin')) def save2(self): values = dict(request.params) photos_inform=[] for item in values: if item.startswith('product_id'): product_id = item.split('.')[-1] if item.startswith('photo-'): photos_inform.append(int(item.split('-')[-1])) product = Session.query(Product).filter_by(id=product_id).one()
def createcustomer(self): readsettings() values = dict(request.params) # create the pending user captchres = h.captcha.submit( values["recaptcha_challenge_field"], values["recaptcha_response_field"], "6LepGccSAAAAAMfzDtmvyRjJ7-A1FWuJa5qUTxX2", session["site_settings"]["ip_address"], ) if not captchres.is_valid: c.menu_items = h.top_menu(self.menu_items, _("Customers")) c.came_from = values["came_from"] if request.GET.get("came_from", None): h.flash(_("After filling the from you will be sent back to your shopping cart")) html = render("/derived/user/new.html") return htmlfill.render(html, values, errors={"captcha": _("Invalid Captcha try again")}) email = Email(email_address=self.form_result["email"], user=None) phone = Phone(None, str(self.form_result["phone"]), None) newcustormer = User( first_name=self.form_result["first_name"], last_name=self.form_result["last_name"], user_name=self.form_result["email"], password=self.form_result["password"], user_groups=[Session.query(Group).filter_by(group="customer").one()], SSN=None, birth_date=None, balance=0, photo=None, addresses=[], customer_invoices=[], staff_invoices=[], emails=[email], phones=[phone], deleted=False, pending=True, ) # create the confirm link Session.add(newcustormer) # confurlcode = randint(10e40,10e49) confurlcode = str(uuid.uuid1()) confurlcode = "cu-" + confurlcode conf = UserConfirm(newcustormer, confurlcode) Session.add(conf) newcustormer.confirmcode = [conf] Session.add(newcustormer) message = Message( session["site_settings"]["userconf"], self.form_result["email"], _("User registration"), encoding="utf-8" ) plain = ( "someone (hopefully you) registered an account with" + str(request.application_url) + "<br/>" + "for confirming your registration click the below link" + "<br/>" + unicode(request.application_url + url(controller="user", action="confirmuser", confirmcode=confurlcode)) + "<br/>" + "After confirmation you can login with your Email address and password." ) c.confurlcode = confurlcode registerHtml = render(_("/derived/emails/register.html")) message.plain = plain message.rich = registerHtml try: message.send() except: Session.delete(conf) Session.delete(phone) Session.delete(email) Session.delete(newcustormer) Session.rollback() h.flash(_("smtp error try again")) redirect(values["came_from"]) Session.commit() h.flash( _( "Check your email and click the activation link after logging in you can continue with the purchuse in Shop online page" ) ) redirect(values["came_from"])
def _save(self, result, user=None): addresses = [] emails = [] phones = [] if user: for address in result["address"]: if address["id"]: add = Session.query(Address).filter_by(id=address["id"]).one() add.city = address["city"] add.add1 = address["add1"] add.add2 = address["add2"] add.state = address["state"] add.po_code = address["po_code"] addresses.append(add) else: addresses.append( Address( address["city"], address["add1"], address["add2"], address["state"], address["po_code"], user, None, ) ) else: for address in result["address"]: addresses.append( Address( address["city"], address["add1"], address["add2"], address["state"], address["po_code"], None, None, ) ) if result.has_key("email"): if user: for email in result["email"]: if email["id"]: em = Session.query(Email).filter_by(email_address=email["id"]).one() em.email_address = email["email_address"] emails.append(em) else: emails.append(Email(email["email_address"], user)) else: for email in result["email"]: emails.append(Email(email["email_address"], None)) for phone in result["phone"]: if user: if phone["id"]: ph = Session.query(Phone).filter_by(phone_number=str(phone["id"])).one() ph.p_type = phone["p_type"] ph.phone_number = str(phone["phone_number"]) phones.append(ph) else: phones.append(Phone(phone["p_type"], str(phone["phone_number"]), user)) else: phones.append(Phone(phone["p_type"], str(phone["phone_number"]), None)) photo = None if result["photo"]: picfile = result["photo"] permanent_file = open( os.path.join(config["pylons.paths"]["static_files"], "pics", picfile.filename.replace(os.sep, "_")), "wb", ) shutil.copyfileobj(picfile.file, permanent_file) picfile.file.close() photo = Photo(permanent_file.name.split("/")[-1]) if user: # do something to compare this two lists of Objects instead of asigning the whole list every time if user.first_name != result["first_name"]: user.first_name = result["first_name"] if user.last_name != result["last_name"]: user.last_name = result["last_name"] if user.birth_date != result["birth_date"]: user.birth_date = result["birth_date"] if user.SSN != result["SSN"]: user.SSN = result["SSN"] if "password" in result and result["password"] != "": user._set_password(result["password"]) if addresses != []: try: user.addresses = addresses Session.add_all(addresses) Session.commit() except: Session.rollback() return False if emails != []: try: user.emails = emails Session.add_all(emails) Session.commit() except: Session.rollback() return False if phones != []: try: user.phones = phones Session.add_all(phones) Session.commit() except: Session.rollback() return False if photo: try: user.photo = photo except: Session.rollback() return False if result.has_key("role") and result.has_key("tag"): # for i,group in enumerate(result['role']): # for group2 in user.groups: # if group2.group == group.group: # result['role'].pop(i) if result["role"] != []: user.groups = result["role"] # for i,tag in enumerate(result['tag']): # for tag2 in user.tags: # if tag.tag == tag2.tag: # result['tag'].pop(i) if result["tag"] != []: user.tags = result["tag"] if result["balance"] != user.balance: user.balance = result["balance"] if user.cradit != result["cradit"]: user.cradit = result["cradit"] if user.deleted != result["deleted"]: user.deleted = result["deleted"] else: user = User( result["first_name"], result["last_name"], result["user_name"], result["password"], result["role"], result["SSN"], result["birth_date"], result["balance"], photo, False, addresses, [], [], emails, phones, result["tag"], result["cradit"], False, ) Session.add(user) try: Session.commit() except: Session.rollback() return False return True
h.flash(_("wrong reset confirmation info.")) return redirect(url(controller="home", action="index")) c.user = user c.confcode = userconf.confirm_code c.menu_items = h.top_menu(self.menu_items, _("Customers")) return render("/derived/user/resetpass.html") @ActionProtector(is_anonymous()) def resetpassEmailaction(self): values = dict(request.params) user = Session.query(User).filter_by(id=values["userid"]).one() schema = ResetpassEmail() try: resutl = schema.to_python(values, c) except Invalid, e: c.user = user c.confcode = values["confcode"] c.menu_items = h.top_menu(self.menu_items, _("Customers")) html = render("/derived/user/resetpass.html") return htmlfill.render( html, values, errors=variabledecode.variable_encode(e.unpack_errors() or {}, add_repetitions=False) ) userconf = Session.query(UserConfirm).filter_by(confirm_code=values["confcode"]).one() user._set_password(resutl["password"]) Session.add(user) Session.delete(userconf) Session.commit() h.flash(_("password resert succeffuly.")) return redirect(url(controller="account", action="login"))
def create(self): action = request.params.getone('action') values = dict(request.params) del values['action'] if action == _('Add Photo'): return render_new_form( self.menu_items, values=values, number_of_photos = number_of_photos(values) + 1 ) if action.startswith(_('Remove')): new_values = remove_item(values,action,'photo') return render_new_form( self.menu_items, values=new_values, number_of_photos = number_of_photos(new_values) ) if action == _('Save'): schema = NewProductForm() try: result = schema.to_python(dict(request.params), c) except Invalid, e: return render_new_form( self.menu_items, values=values, errors=variabledecode.variable_encode( e.unpack_errors() or {}, add_repetitions=False ), number_of_photos=number_of_photos(values) ) else: #save the f*****g photo photos =[] for picfile in result['photo']: permanent_file = open( os.path.join( config['pylons.paths']['static_files'], 'pics', picfile.filename.replace(os.sep, '_') ), 'wb' ) shutil.copyfileobj(picfile.file, permanent_file) picfile.file.close() photos.append(Photo(permanent_file.name.split('/')[-1])) permanent_file.close() product = Product( result['name'], result['description'], result['quantity'], result['buy_price'], result['sell_price'], result['buy_date'], result['brand'], photos, result['tag'] ) product.code = result['code'] product.wholesale_price = result['wholesale_price'] product.deleted = False Session.add(product) Session.commit() h.flash(_('Product added successfully.')) redirect(url(controller='product', action='index'))
def save(self): values = dict(request.params) photos_inform=[] for item in values: if item.startswith('product_id'): product_id = item.split('.')[-1] if item.startswith('oldphoto'): photos_inform.append(int(item.split('-')[-1])) product = Session.query(Product).filter_by(id=product_id).one() action = request.params.getone('action') del values['action'] if action.startswith('Delete Photo'): photos = [] photo_id = int(action.split(' ')[-1]) for photo in product.photos: if photo.id != photo_id and photo.id in photos_inform: photos.append(photo) #delte photo_id from disk and data base too for photo in product.photos: if photo.id == photo_id: path = os.path.join(config['here'],'kazhal','public','pics',photo.file_path) os.remove(path) Session.delete(photo) Session.commit() #end of delete procedure product.photos = photos Session.add(product) Session.commit() new_values = remove_item(values,action,'oldphoto') return render_edit_form(self.menu_items, new_values, id=product_id, number_of_photos=number_of_photos(new_values), photos=photos) elif action.startswith(_('Remove photo')): new_values = remove_item(values,action,'photo') return render_edit_form( self.menu_items, values=new_values, id=product_id, number_of_photos = number_of_photos(new_values), photos = product.photos ) elif action == _('Add Photo'): return render_edit_form( self.menu_items, values=values, id=product_id, number_of_photos = number_of_photos(values)+1, photos = product.photos ) else: #action is save schema = NewProductForm() try: result = schema.to_python(dict(request.params), c) except Invalid, e: return render_edit_form( self.menu_items, values=values, id=product.id, errors=variabledecode.variable_encode( e.unpack_errors() or {}, add_repetitions=False ), number_of_photos=number_of_photos(values), photos = product.photos ) else:
def undelete(self,id): product = Session.query(Product).filter_by(id=id).one() product.deleted = False Session.add(product) Session.commit() return redirect(request.environ['HTTP_REFERER'])
def savebasket(self): wholesale = False if "repoze.who.identity" in request.environ: user = request.environ.get('repoze.who.identity')['user'] wholesale_tag = Session.query(UserTag).filter_by(tag='wholesale').one() if wholesale_tag in user.tags: wholesale = True c.wholesale=True values = dict(request.params) action = request.params.getone('action') del values['action'] if action == _('Remove all items from basket'): session['basket'] = {} h.flash(_('All items removed from basket')) session.save() redirect(url(controller='product', action='list')) if action.startswith(_('Remove item')): gid = int(action.split(' ')[-1]) for item in values: if item.startswith('quantityid-%s'%gid): id = int(values[item]) del session['basket'][id] session.save() newvalues = remove_item(values,action,'quantity') newvalues = remove_item(newvalues,action,'quantityid') return render_editbasket(self.menu_items,values=newvalues) if action == _('Buy'): identity = request.environ.get('repoze.who.identity') if identity is None: redirect( url(controller='account', action='login', came_from=url(controller='product', action='editbasket') ) ) schema = Editbasket() try: result = schema.to_python(dict(request.params), c) except Invalid, e: return render_editbasket(self.menu_items,values=values, errors=variabledecode.variable_encode( e.unpack_errors() or {}, add_repetitions=False) ) else: for i in range(len(result['quantityid'])): session['basket'][result['quantityid'][i]] = result['quantity'][i] session.save() # create pending invoices. email to customer and email to sales user = Session.query(User).filter_by(id=session['user']).one() items=[] dt = datetime.now() productsmsg= "" total = 0 invoice = Invoice(dt,user,None,None,0,[],True) for id in session['basket']: product = Session.query(Product).filter_by(id=id).one() quantity = session['basket'][id] if wholesale: price = product.wholesale_price else: price = product.sell_price totprice = quantity * price productsmsg +='<p>'+_('Code')+' :'+str(product.code)+'<br/>'+_('Name')+' :' + product.name+'<br/>'+_('Unit price')+' :'+str(price)+'<br/>'+_('Quantity')+' :'+str(quantity)+'<br/>'+_('Total price')+' :'+str(totprice)+'<br/>'+'</p>'+'<hr>' total += totprice item = Invoice_item(product, invoice, quantity, totprice, unitprice=price ) items.append(item) invoice.invoice_items = items invoice.total_price = total Session.add(invoice) #Session.commit() customer_message = Message(session['site_settings']['invoicealertfrom'], #user.emails[0].email_address, "*****@*****.**", _("your order details from Kazhal"), encoding='utf-8') plain = _("You placed an order of the following items with Kazhal")+' :'+ productsmsg + "<br/>"+ _("Total price")+' :'+str(total) +"<br/>"+_("our staff will contact you to confirm the purchase.<br/>Thank you.<br/>Kazhal") c.usermsg = _("You placed an order of the following items with Kazhal")+_("our staff will contact you to confirm the purchase.<br/>Thank you.<br/>Kazhal") c.user = user c.invoice = invoice c.total = total customerHtml = render(_('/derived/emails/customer_invoice.html')) customer_message.rich = customerHtml customer_message.plain = plain splain = _("User")+u' :'+user.user_name +u'<br/>'+_("Phone")+u' :'+unicode([int(phone.phone_number) for phone in user.phones])[1:-1]+u'<br/>'+ _("Items")+u' :'+productsmsg+u'<br/>'+_("Total price")+u" :"+unicode(total)+u'<br/>' splain += unicode(h.link_to(_("Click here to confirm the order."),((request.application_url)+url(controller='invoice',action='confirm',id=invoice.id)))) c.usermsg = unicode(h.link_to(_("Click here to confirm the order."),((request.application_url)+url(controller='invoice',action='confirm',id=invoice.id)))) salesHtml = render(_('/derived/emails/customer_invoice.html')) sales_messages=[] for email in session['site_settings']['invoicealertmail'].split(','): sales_message=Message(session['site_settings']['invoicealertfrom'], email, _("User ")+user.user_name+_(" placed an order"), encoding='utf-8') sales_message.plain=splain sales_message.rich = salesHtml sales_messages.append(sales_message) try: customer_message.send() for message in sales_messages: message.send() except: Session.rollback() h.flash(_('For some technical reasons we are unable to accept orders online for now please contact us by phone.(SMTP Error)')) redirect(url(controller='product', action='editbasket')) Session.commit() session['basket']={} session.save() h.flash(_('An email has beed sent to you with the detail of your purchase our staff will call you for further details')) redirect(url(controller='product', action='list'))
return redirect(url(controller='invoice', action='edit',id=invoice_id)) item_id =int(action.split('_')[-1]) invoice_items=[] totalprice = 0 for invoice_item in invoice.invoice_items: if invoice_item.id != item_id: invoice_items.append(invoice_item) totalprice += invoice_item.total_price else: delitem = invoice_item if invoice.pending is False: product = invoice_item.product product.quantity += invoice_item.quantity customer.balance += invoice_item.total_price #send mail to customer about returning founds? Session.add(customer) Session.add(product) invoice.invoice_items= invoice_items invoice.total_price = totalprice Session.add(invoice) Session.delete(delitem) Session.commit() return redirect(url(controller='invoice',action='edit',id=invoice.id)) elif action.startswith('Delete invoice'): return self._delete(invoice) elif action == 'recalc price': totalprice=0 for item in result['items']: