def list(self,id=None,page=1): 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: c.wholesale=True c.tags = Session.query(ProductTag).all() c.menu_items = h.top_menu(self.menu_items,_('Shop online')) if session.has_key('product_querystr'): if session.has_key('paliasedtags'): for item in session['paliasedtags']: exec(item) products = eval(session['product_querystr']+".filter(Product.deleted==False)") c.paginator = paginate.Page(products, page=int(request.params.get('page', page)), items_per_page = 10) html = render('/derived/product/list.html') return htmlfill.render(html,defaults=session['product_search_values']) else: products = Session.query(Product).filter_by(deleted=False) c.paginator = paginate.Page(products, page=int(request.params.get('page', page)), items_per_page = 10) return render('/derived/product/list.html')
def createbasket(self): came_from = str(request.GET.get('came_from', '')) values = dict(request.params) for item in values: if item.startswith('product_id.'): id = int(item.split('.')[-1]) try: product = Session.query(Product).filter_by(id=id).one() except: h.flash(_('No product exist with ID: %s')%id) redirect(url(controller='product',action='list')) if values['quant']!='': quantity = int(values['quant']) else: quantity =1 if session.has_key('basket'): session['basket'][id]=quantity else: session['basket']={id:quantity} product = Session.query(Product).filter_by(id=id).one() h.flash(_('%s of product %s added to basket')%(quantity,product.name)) if came_from !='': return redirect(came_from) redirect(url(controller='product',action='list'))
def edit2(self,id): product = Session.query(Product).filter_by(id=int(id)).one() jd = jcal.gregorian_to_jd(product.buy_date.year, product.buy_date.month, product.buy_date.day) jalali = jcal.jd_to_jalali(jd) jalali = str(jalali[0])+'/'+str(jalali[1])+'/'+str(jalali[2]) values={ 'code':product.code, 'name':product.name, 'brand':product.brand, 'quantity':product.quantity, 'description':product.description, 'buy_price':product.buy_price, 'sell_price':product.sell_price, 'wholesale_price':product.wholesale_price, 'buy_date':jalali, } tags = Session.query(ProductTag).all() for i,tag in enumerate(tags): for ptag in product.tags: if ptag.tag == tag.tag: values['tag-%i.%i'%(i,tag.id)]=1 return render_edit2_form( self.menu_items, values, number_of_photos=number_of_photos(values), id=product.id, photos=product.photos)
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 delete(self,id): if id is None: abort(404) group = Session.query(Group).filter_by(id=id).one() if group is None: abort(404) h.flash(_('Group successfully deleted.')) Session.delete(group) Session.commit() redirect(url(controller='addgroup', action='list')) return "Group Deleted"
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 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 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)
def edit(self,id): values={} group = Session.query(Group).filter_by(id=id).one() values['group']= group.group c.permissions = Session.query(Permission).all() for i,perm in enumerate(c.permissions): for permission in group.permissions: if permission.name == perm.name: values['permissions-%i.%i'%(i,perm.id)]= 1 c.menu_items = h.top_menu(self.menu_items,_('Customers')) html = render('/derived/group/edit.html') return htmlfill.render(html, defaults=values)
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 render_edit_form_admin(menu_items,values=None, errors=None, id=None): 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: c.wholesale = True c.menu_items = h.top_menu(menu_items,_('Shop online')) invoice = Session.query(Invoice).filter_by(id=int(id)).one() invoice_items = Session.query(Invoice_item).filter_by(invoice_id=invoice.id).order_by(Invoice_item.product_id).all() c.invoice_items = invoice_items c.invoice = invoice if values is None: return render('/derived/invoice/staff/edit.html') else : html = render('/derived/invoice/staff/edit.html') return htmlfill.render(html, defaults=values, errors=errors)
def validate_python(self,value, state): try: phone = Session.query(Phone).filter_by(phone_number=str(int(value))).one() except: return else: raise Invalid(_('This phone number allready registered an acount'),value,state)
def render_new_form(menu_items,values=None, errors=None, number_of_photos=0): c.number_of_photos = number_of_photos c.menu_items = h.top_menu(menu_items,_('Products')) c.tags = Session.query(ProductTag).all() #c.roles = ['test1','test2'] html = render('/derived/product/new.html') return htmlfill.render(html, defaults=values, errors=errors)
def view(self,id): 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: c.wholesale = True try: product = Session.query(Product).filter_by(id=id).one() except: h.flash(_('No product exist with ID: %s')%id) redirect(url(controller='product',action='list')) if request.environ.get("repoze.who.identity") is not None: c.permissions = request.environ["repoze.what.credentials"]["permissions"] c.product = product c.menu_items = h.top_menu(self.menu_items,_('Products')) return render('/derived/product/view.html')
def _to_python(self,value,state): #items = value.items() try: customer = Session.query(User).filter(User.user_name.like('%%'+str(value)+'%%')).all() return customer except: raise Invalid("No User with name like this exists!", value, state)
def index(self,page=1): c.menu_items = h.top_menu(self.menu_items,_('Products')) products = Session.query(Product) c.paginator = paginate.Page(products, page=int(request.params.get('page', page)), items_per_page = 10) return render('/derived/product/index.html')
def validate_python(self,value, state): try: emailad = Session.query(Email).filter_by(email_address=value).one() except: return else: raise Invalid(_('This email allready registered an acount'),value,state)
def index(self,page=1): c.menu_items = h.top_menu(self.menu_items,_('Home')) tags = Session.query(ProductTag) c.paginator = paginate.Page(tags, page=int(request.params.get('page', page)), items_per_page = 10) return render('/derived/producttag/staff/index.html')
def create_dict(user): adict = {} if user.phones != []: for i, phone in enumerate(user.phones): adict["phone-%s.phone_number" % i] = phone.phone_number adict["phone-%s.p_type" % i] = phone.p_type adict["phone-%s.id" % i] = phone.phone_number if user.addresses != []: for i, address in enumerate(user.addresses): adict["address-%i.city" % i] = address.city adict["address-%i.state" % i] = address.state adict["address-%i.add1" % i] = address.add1 adict["address-%i.add2" % i] = address.add2 adict["address-%i.po_code" % i] = address.po_code adict["address-%s.id" % i] = address.id if user.photo: adict["phto"] = user.photo if user.emails != []: for i, email in enumerate(user.emails): adict["email-%s.email_address" % i] = email.email_address adict["email-%s.confirm_email_address" % i] = email.email_address adict["email-%s.id" % i] = email.email_address if user.tags != []: tags = Session.query(UserTag).all() for i, tagp in enumerate(tags): for tag in user.tags: if tagp.tag == tag.tag: adict["tag-%s.%s" % (i, tag.id)] = 1 # adict['tagid-%s.id'%i]=tag.id if user.groups != []: groups = Session.query(Group).all() for i, group in enumerate(groups): for groupu in user.groups: if groupu.group == group.group: adict["role-%s.%s" % (i, group.id)] = 1 # adict['roleid-%s.id'%i] = group.id adict["first_name"] = user.first_name adict["last_name"] = user.last_name adict["user_name"] = user.user_name adict["password"] = "" adict["confirm_password"] = "" adict["birth_date"] = h.gtoj(user.birth_date) adict["SSN"] = user.SSN adict["balance"] = user.balance adict["cradit"] = user.cradit return adict
def editbasket(self): 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: c.wholesale=True if session.has_key('basket') and session['basket']!={}: products=[] for item in session['basket']: products.append(Session.query(Product).filter_by(id=item).one()) c.products = products c.menu_items = h.top_menu(self.menu_items,_('Shop online')) return render('/derived/product/editbasket.html') else: h.flash(_('No Items in basket')) return redirect(url(controller='product', action='list'))
def render_editbasket(menu_items,values=None, errors=None): products=[] for item in session['basket']: products.append(Session.query(Product).filter_by(id=item).one()) c.products = products c.menu_items = h.top_menu(menu_items,_('Products')) html = render('/derived/product/editbasket.html') return htmlfill.render(html,defaults=values, errors=errors)
def render_edit2_form(menu_items,values=None, errors=None, number_of_photos=0, id=None, photos=None): c.number_of_photos = number_of_photos c.tags = Session.query(ProductTag).all() c.menu_items = h.top_menu(menu_items,_('Products')) c.old_photos = photos c.product_id = id html = render('/derived/product/edit2.html') return htmlfill.render(html, defaults=values, errors=errors)
def resetpassEmail(self, id): confcode = request.params.getone("confcode") try: user = Session.query(User).filter_by(id=id).one() userconf = ( Session.query(UserConfirm) .join(UserConfirm.user) .filter(User.id == user.id) .filter(UserConfirm.confirm_code == confcode) .one() ) except: 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")
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 edit(self,id): c.menu_items = h.top_menu(self.menu_items,_('Home')) c.action = "update" producttag = Session.query(ProductTag).filter_by(id=id).one() c.id=producttag.id values={} values['producttag'] = producttag.tag html = render('/derived/producttag/staff/new.html') return htmlfill.render(html,defaults=values)
def getpage(self): page = int(request.params.get("page")) photos = Session.query(Photo) itemspp = 30 if "itemspp" in request.params: itemspp = int(request.params.get("itemspp")) c.paginator = paginate.Page(photos, page=int(page), items_per_page=itemspp) return render("/derived/photo/photopage.html")