def removeCustomItem(request, id): if not (request.user.is_authenticated() and request.method == 'POST'): return HttpResponse(json.dumps({'errCode' : dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json') db = dataBaseModel() errCode = db.removeCustomProduct(request.user.id, id) return HttpResponse(json.dumps({'errCode' : errCode}), content_type='application/json')
def getFitlist(request): if request.user.is_authenticated() == False: return HttpResponse(json.dumps([]), content_type='application/json') db = dataBaseModel() result = db.getFitList(request.user.id) data = [] if result[1] != dataBaseModel.SUCCESS: return HttpResponse(json.dumps(data), content_type='application/json') for wish in result[0]: map = { 'item_name': wish.product.name.title(), 'overlay': static('products/' + wish.product.overlay), 'image': static('products/' + wish.product.photo), 'price': wish.product.price, 'description': wish.product.description, 'category': wish.product.category.name, 'product_id': wish.product.pk, 'xoffset': wish.product.xoffset, 'yoffset': wish.product.yoffset, 'scale': wish.product.scale, 'rotation': wish.product.rotation } data.append(map) return HttpResponse(json.dumps(data), content_type='application/json')
def previewProduct(request): # authenticate if (not request.user.is_authenticated()) or request.method != "POST": return HttpResponse(json.dumps({"errCode": dataBaseModel.ERR_BAD_REQUEST}), content_type="application/json") # convert image to transparent background, save it to temp folder and let hangout api retrieve it try: # helper method to generate random token import string import random def token_generator(size=32, chars=string.ascii_lowercase + string.digits): return "".join(random.choice(chars) for _ in range(size)) token = token_generator() # generate a random token here token += str(request.user.id) filename = token + "ol.jpg" if ImageRW.writeImage(request.FILES["overlay"], False, filename) == "": return HttpResponse( json.dumps({"errCode": dataBaseModel.ERR_UNABLE_TO_PREVIEW_PRODUCT}), content_type="application/json" ) overlay = ImageRW.Process(filename, False, request.POST["category"]) # now save it to temp table db = dataBaseModel() db.addTempProduct(request.user.id, token, overlay, request.POST["category"]) return HttpResponse( json.dumps({"errCode": dataBaseModel.SUCCESS, "token": token}), content_type="application/json" ) except: return HttpResponse( json.dumps({"errCode": dataBaseModel.ERR_UNABLE_TO_PREVIEW_PRODUCT}), content_type="application/json" )
def getComments(request, category, product, id): dbModel = dataBaseModel() result = dbModel.getComments(product.lower(), id) if result[1] != dataBaseModel.SUCCESS: data = [] return HttpResponse(json.dumps(data), content_type='application/json') data = [] profilePic = {} # caching for comment in result[0]: pic = "" if comment.owner.id not in profilePic: pic = dbModel.getProfilePic(comment.owner.id) profilePic[comment.owner.id] = pic else: pic = profilePic[comment.owner.id] if pic != "": pic = static("profile/" + pic) map = { 'name': comment.owner.first_name, 'content': comment.content, 'time': str(comment.time), 'profile': pic } data.append(map) return HttpResponse(json.dumps(data), content_type='application/json')
def addComment(request, category, product, id): ## userID, productID, content if request.method == 'POST' and 'application/json' in request.META['CONTENT_TYPE'] and request.user.is_authenticated(): content = json.loads(request.body) dbModel = dataBaseModel() response = dbModel.addComment(request.user.id, product.lower(), id, content['content'], timezone.now()) return HttpResponse(json.dumps({'errCode' : response}), content_type = 'application/json') return HttpResponse(json.dumps({'errCode' : dataBaseModel.ERR_BAD_REQUEST}), content_type = 'application/json')
def removeFromFitlist(request, category, product, id): if not (request.user.is_authenticated()): return HttpResponse(json.dumps( {'errCode': dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json') db = dataBaseModel() result = db.removeFromFitList(request.user.id, product.lower(), id) return HttpResponse(json.dumps({'errCode': result}), content_type='application/json')
def getProfilePic(request): if not request.user.is_authenticated(): return HttpResponse(json.dumps({'errCode' : dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json') db = dataBaseModel() url = db.getProfilePic(request.user.id) if url != "": url = static('profile/' + url) return HttpResponse(json.dumps({'image_url' : url}), content_type='application/json')
def editCustomItem(request, id, token): db = dataBaseModel() if not (request.user.is_authenticated() and request.method == 'POST' and db.checkIfOwnCustomProduct(request.user.id, id) == True): return HttpResponse(json.dumps({'errCode' : dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json') overlayfilename = "" imagefilename = "" config = db.findPositionalConfig(token) # find before clear temp if 'overlay' in request.FILES: temppath = db.removeTempProduct(request.user.id) # try remove temp product # remove temp image if temppath != []: for path in temppath: ImageRW.removeImage(path, False) ImageRW.removeImage(path.replace('.png', '.jpg'), False) try: filename = token_generator() filename += str(request.user.id) filename += '.jpg' overlayfilename = filename.replace('.jpg', 'ol.jpg') imagefilename = ImageRW.writeImage(request.FILES['overlay'], True, filename) # write image ImageRW.writeImage(request.FILES['overlay'], True, overlayfilename) # write image #check here overlayfilename = ImageRW.Process(overlayfilename, True, request.POST["category"]) # convert it to transparent, return the new ol file name #check here ImageRW.removeImage(overlayfilename.replace('.png', '.jpg'), True) except: return HttpResponse(json.dumps({'errCode' : dataBaseModel.ERR_UNABLE_TO_EDIT_CUSTOM_PRODUCT}), content_type='application/json') form = CustomProductForm(request.POST) if form.is_valid(): pcategory = form.cleaned_data['category'].lower() pname = form.cleaned_data['itemname'].lower() pbrand = form.cleaned_data['brand'] purl = form.cleaned_data['url'] pprice = float(form.cleaned_data['price']) pdescription = form.cleaned_data['description'] result = "" if config != None: result = db.editProduct(request.user.id, imagefilename, overlayfilename, pcategory, pbrand, pname, purl, pprice, pdescription, id, config[0], config[1], config[2], config[3], True) else: result = db.editProduct(request.user.id, imagefilename, overlayfilename, pcategory, pbrand, pname, purl, pprice, pdescription, id) if result!= dataBaseModel.SUCCESS: return HttpResponse(json.dumps({'errCode' : dataBaseModel.ERR_UNABLE_TO_EDIT_CUSTOM_PRODUCT}), content_type='application/json') data = {'errCode' : dataBaseModel.SUCCESS} return HttpResponse(json.dumps(data), content_type='application/json') else: return HttpResponse(json.dumps({'errCode' : dataBaseModel.ERR_UNABLE_TO_EDIT_CUSTOM_PRODUCT}), content_type='application/json')
def removeCustomItem(request, id): if not (request.user.is_authenticated() and request.method == 'POST'): return HttpResponse(json.dumps( {'errCode': dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json') db = dataBaseModel() errCode = db.removeCustomProduct(request.user.id, id) return HttpResponse(json.dumps({'errCode': errCode}), content_type='application/json')
def getPreviewItem(request, token): if not (request.user.is_authenticated()): print "run" return HttpResponse(json.dumps({'errCode' : dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json') db = dataBaseModel() product = db.getTempProduct(request.user.id, token) if product[1] != dataBaseModel.SUCCESS: return HttpResponse(json.dumps({'errCode' : product[1]}), content_type='application/json') else: return HttpResponse(json.dumps({'errCode' : product[1], 'overlay' : static('temp/' + product[0].overlay), 'category' : product[0].category.name}), content_type='application/json')
def getUserInfo(request): if not request.user.is_authenticated(): return HttpResponse(json.dumps({'errCode' : dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json') db = dataBaseModel() user = db.getUserInfo(request.user.id) numAdded = db.getNumAdded(request.user.id) if user == "": return HttpResponse(json.dumps({'errCode' : dataBaseModel.ERR_UNABLE_TO_GET_USER_INFO}), content_type='application/json') data = {'num_of_custom_products' : numAdded, 'email' : user.email, 'first' : user.first_name, 'last' : user.last_name, 'last_login' : str(user.last_login), 'date_joined': str(user.date_joined)} return HttpResponse(json.dumps(data), content_type='application/json')
def searchProducts(request): searchProduct = request.GET.get("searchName") searchNum = int(request.GET.get("sth")) pageNum = int(request.GET.get("page")) print "searchNum is ", searchNum print "searchProduct is ",searchProduct print "pageNum is", pageNum id = [] image = [] item_name = [] price = [] db = dataBaseModel() userId = db.getUserInfo(request.user.id) print "userId is ",userId searchValue = searchProduct.lower(); if "wishlist" in searchValue: query = db.getWishList(userId) print query elif "fitlist" in searchValue: query = db.getFitList(userId) elif searchValue == "hats" or searchValue == "hat": query = db.getProducts("hats") elif searchValue == "headphones" or searchValue == "headphone": query = db.getProducts("headphones") elif searchValue == "glasses" or searchValue == "glass": query = db.getProducts("glasses") else: query = db.searchProducts(searchProduct) if (query[1] != dataBaseModel.SUCCESS): failData = data = {'id': id, 'image' : image, 'item_name' : item_name, 'price' : price} return HttpResponse(json.dumps(data ,encoding='latin-1'), content_type='application/json') else: items = query[0] if searchNum != 0: productNum = len(items) print "productNum is ",productNum endValue = pageNum * productNum / searchNum i = 0 for item in items: if searchNum == 0 or ( (pageNum -1)*searchNum <= i < (pageNum-1) * searchNum + searchNum ) : id.append(item.pk) item_name.append(item.name) price.append(item.price) image.append(static("products/" + item.photo)) i = i + 1 if searchNum == 0: data = {'id': id, 'image' : image, 'item_name' : item_name, 'price' : price, 'page':1} elif productNum % searchNum == 0: data = {'id': id, 'image' : image, 'item_name' : item_name, 'price' : price, 'page': productNum / searchNum} else: data = {'id': id, 'image' : image, 'item_name' : item_name, 'price' : price, 'page': productNum / searchNum + 1} return HttpResponse(json.dumps(data ,encoding='latin-1'), content_type='application/json')
def getCustomItem(request): if not request.user.is_authenticated(): return HttpResponse(json.dumps({'errCode' : dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json') db = dataBaseModel() custom_list = db.getCustomProduct(request.user.id) data = [] for product in custom_list: temp = {'product_id': product.id,'category': product.category.name, 'item_name':product.name, 'brand':product.brand ,'price': product.price, 'url': product.url, 'image': static('products/' + product.photo),'description': product.description} data.append(temp) return HttpResponse(json.dumps(data), content_type='application/json')
def addComment(request, category, product, id): ## userID, productID, content if request.method == 'POST' and 'application/json' in request.META[ 'CONTENT_TYPE'] and request.user.is_authenticated(): content = json.loads(request.body) dbModel = dataBaseModel() response = dbModel.addComment(request.user.id, product.lower(), id, content['content'], timezone.now()) return HttpResponse(json.dumps({'errCode': response}), content_type='application/json') return HttpResponse(json.dumps({'errCode': dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json')
def removeFromWishlist(request, category, product, id): if not (request.method == 'POST' and 'application/json' in request.META['CONTENT_TYPE'] and request.user.is_authenticated()): return HttpResponse(json.dumps( {'errCode': dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json') db = dataBaseModel() result = db.removeFromWishList(request.user.id, product.lower(), id) return HttpResponse(json.dumps({'errCode': result}), content_type='application/json')
def setConfig(request, token): if not (request.method == 'POST' and 'application/json' in request.META['CONTENT_TYPE'] and request.user.is_authenticated()): return HttpResponse(json.dumps({'errCode' : dataBaseModel.ERR_BAD_REQUEST}), content_type = 'application/json') try: db = dataBaseModel() content = json.loads(request.body) db.setPositionalConfig(token, content['xoffset'], content['yoffset'], content['scale'], content['rotation']) return HttpResponse(json.dumps({'errCode' : dataBaseModel.SUCCESS}), content_type = 'application/json') except: return HttpResponse(json.dumps({'errCode' : dataBaseModel.ERR_UNABLE_TO_SET_POSITIONAL_CONFIG}), content_type = 'application/json')
def getProfilePic(request): if not request.user.is_authenticated(): return HttpResponse(json.dumps( {'errCode': dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json') db = dataBaseModel() url = db.getProfilePic(request.user.id) if url != "": url = static('profile/' + url) return HttpResponse(json.dumps({'image_url': url}), content_type='application/json')
def addProfilePic(request): # verify first if not (request.method == 'POST' and request.user.is_authenticated()): return HttpResponse(json.dumps({'errCode' : dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json') file = request.FILES["profile"] token = token_generator() token += str(request.user.id) profilePicFileName = token + ".jpg" if ImageRW.writeImage(file, True , profilePicFileName, True) == "": return HttpResponse(json.dumps({'errCode' : dataBaseModel.ERR_UNABLE_TO_ADD_PROFILE_PIC}), content_type='application/json') db = dataBaseModel() db.addProfilePic(request.user.id, profilePicFileName) return HttpResponse(json.dumps({'errCode' : dataBaseModel.SUCCESS, 'token' : token}), content_type='application/json')
def detail(request, category, product, id): db = dataBaseModel() item = db.getDetail(product.lower(), id) if item[1] != dataBaseModel.SUCCESS: failData = {"image": "", "item_name": "", "price": -1, "description": "", "brand": ""} return HttpResponse(json.dumps(failData), content_type="application/json") item = item[0] image = static("products/" + item.photo) data = { "image": image, "item_name": item.name.title(), "price": item.price, "description": item.description, "brand": item.brand, } return HttpResponse(json.dumps(data, encoding="latin-1"), content_type="application/json")
def getWishlist(request): if request.user.is_authenticated() == False: return HttpResponse(json.dumps([]), content_type='application/json') db = dataBaseModel() result = db.getWishList(request.user.id) data = [] if result[1] != dataBaseModel.SUCCESS: return HttpResponse(json.dumps(data), content_type='application/json') for wish in result[0]: map = {'item_name': wish.product.name.title(), 'image' : static('products/' + wish.product.photo), 'price' : wish.product.price, 'description' : wish.product.description, 'category' : wish.product.category.name.title(), 'product_id' : wish.product.pk} data.append(map) return HttpResponse(json.dumps(data), content_type='application/json')
def getPreviewItem(request, token): if not (request.user.is_authenticated()): print "run" return HttpResponse(json.dumps( {'errCode': dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json') db = dataBaseModel() product = db.getTempProduct(request.user.id, token) if product[1] != dataBaseModel.SUCCESS: return HttpResponse(json.dumps({'errCode': product[1]}), content_type='application/json') else: return HttpResponse(json.dumps({ 'errCode': product[1], 'overlay': static('temp/' + product[0].overlay), 'category': product[0].category.name }), content_type='application/json')
def getUserInfo(request): if not request.user.is_authenticated(): return HttpResponse(json.dumps( {'errCode': dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json') db = dataBaseModel() user = db.getUserInfo(request.user.id) numAdded = db.getNumAdded(request.user.id) if user == "": return HttpResponse(json.dumps( {'errCode': dataBaseModel.ERR_UNABLE_TO_GET_USER_INFO}), content_type='application/json') data = { 'num_of_custom_products': numAdded, 'email': user.email, 'first': user.first_name, 'last': user.last_name, 'last_login': str(user.last_login), 'date_joined': str(user.date_joined) } return HttpResponse(json.dumps(data), content_type='application/json')
def getComments(request, category, product, id): dbModel = dataBaseModel() result = dbModel.getComments(product.lower(), id) if result[1] != dataBaseModel.SUCCESS: data = [] return HttpResponse(json.dumps(data), content_type='application/json') data = [] profilePic = {} # caching for comment in result[0]: pic = "" if comment.owner.id not in profilePic: pic = dbModel.getProfilePic(comment.owner.id) profilePic[comment.owner.id] = pic else: pic = profilePic[comment.owner.id] if pic != "": pic = static("profile/" + pic) map = {'name' : comment.owner.first_name, 'content' : comment.content, 'time' : str(comment.time), 'profile': pic} data.append(map) return HttpResponse(json.dumps(data), content_type='application/json')
def getCustomItem(request): if not request.user.is_authenticated(): return HttpResponse(json.dumps( {'errCode': dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json') db = dataBaseModel() custom_list = db.getCustomProduct(request.user.id) data = [] for product in custom_list: temp = { 'product_id': product.id, 'category': product.category.name, 'item_name': product.name, 'brand': product.brand, 'price': product.price, 'url': product.url, 'image': static('products/' + product.photo), 'description': product.description } data.append(temp) return HttpResponse(json.dumps(data), content_type='application/json')
def listProduct(request, category): db = dataBaseModel() pageOption= int(request.GET.get("pageOption")) pageNum = int(request.GET.get("page")) print "pageOption is ", pageOption print "pageNum is", pageNum id = [] image = [] item_name = [] price = [] result = db.getProducts(category.lower()) if (result[1] != dataBaseModel.SUCCESS): # fail to get products failData = {'category_name': '', 'image': [], 'item_name' : [], 'price' : []} return HttpResponse(json.dumps(failData), content_type='application/json') else: items = result[0] if pageOption != 0: productNum = len(items) print "productNum is ",productNum endValue = pageNum * productNum / pageOption i = 0 for item in items: if pageOption == 0 or ( (pageNum -1)*pageOption <= i < (pageNum-1) * pageOption + pageOption ) : id.append(item.pk) item_name.append(item.name) price.append(item.price) image.append(static("products/" + item.photo)) i = i + 1 if pageOption == 0: data = {'id': id, 'image' : image, 'item_name' : item_name, 'price' : price, 'page':1} elif productNum % pageOption == 0: data = {'id': id, 'image' : image, 'item_name' : item_name, 'price' : price, 'page': productNum / pageOption} else: data = {'id': id, 'image' : image, 'item_name' : item_name, 'price' : price, 'page': productNum / pageOption + 1} print "data[id] is ",data return HttpResponse(json.dumps(data ,encoding='latin-1'), content_type='application/json')
def addProfilePic(request): # verify first if not (request.method == 'POST' and request.user.is_authenticated()): return HttpResponse(json.dumps( {'errCode': dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json') file = request.FILES["profile"] token = token_generator() token += str(request.user.id) profilePicFileName = token + ".jpg" if ImageRW.writeImage(file, True, profilePicFileName, True) == "": return HttpResponse(json.dumps( {'errCode': dataBaseModel.ERR_UNABLE_TO_ADD_PROFILE_PIC}), content_type='application/json') db = dataBaseModel() db.addProfilePic(request.user.id, profilePicFileName) return HttpResponse(json.dumps({ 'errCode': dataBaseModel.SUCCESS, 'token': token }), content_type='application/json')
def removeFromFitlist(request, category, product, id): if not (request.user.is_authenticated()): return HttpResponse(json.dumps({'errCode' : dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json') db = dataBaseModel() result = db.removeFromFitList(request.user.id, product.lower(), id) return HttpResponse(json.dumps({'errCode' : result}), content_type='application/json')
def listProduct(request, category): db = dataBaseModel() pageOption = int(request.GET.get("pageOption")) pageNum = int(request.GET.get("page")) print "pageOption is ", pageOption print "pageNum is", pageNum id = [] image = [] item_name = [] price = [] result = db.getProducts(category.lower()) if (result[1] != dataBaseModel.SUCCESS): # fail to get products failData = { 'category_name': '', 'image': [], 'item_name': [], 'price': [] } return HttpResponse(json.dumps(failData), content_type='application/json') else: items = result[0] if pageOption != 0: productNum = len(items) print "productNum is ", productNum endValue = pageNum * productNum / pageOption i = 0 for item in items: if pageOption == 0 or ((pageNum - 1) * pageOption <= i < (pageNum - 1) * pageOption + pageOption): id.append(item.pk) item_name.append(item.name) price.append(item.price) image.append(static("products/" + item.photo)) i = i + 1 if pageOption == 0: data = { 'id': id, 'image': image, 'item_name': item_name, 'price': price, 'page': 1 } elif productNum % pageOption == 0: data = { 'id': id, 'image': image, 'item_name': item_name, 'price': price, 'page': productNum / pageOption } else: data = { 'id': id, 'image': image, 'item_name': item_name, 'price': price, 'page': productNum / pageOption + 1 } print "data[id] is ", data return HttpResponse(json.dumps(data, encoding='latin-1'), content_type='application/json')
def removeFromWishlist(request, category, product, id): if not (request.method == 'POST' and 'application/json' in request.META['CONTENT_TYPE'] and request.user.is_authenticated()): return HttpResponse(json.dumps({'errCode' : dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json') db = dataBaseModel() result = db.removeFromWishList(request.user.id, product.lower(), id) return HttpResponse(json.dumps({'errCode' : result}), content_type='application/json')
def searchProducts(request): searchProduct = request.GET.get("searchName") searchNum = int(request.GET.get("sth")) pageNum = int(request.GET.get("page")) print "searchNum is ", searchNum print "searchProduct is ", searchProduct print "pageNum is", pageNum id = [] image = [] item_name = [] price = [] db = dataBaseModel() userId = db.getUserInfo(request.user.id) print "userId is ", userId searchValue = searchProduct.lower() if "wishlist" in searchValue: query = db.getWishList(userId) print query elif "fitlist" in searchValue: query = db.getFitList(userId) elif searchValue == "hats" or searchValue == "hat": query = db.getProducts("hats") elif searchValue == "headphones" or searchValue == "headphone": query = db.getProducts("headphones") elif searchValue == "glasses" or searchValue == "glass": query = db.getProducts("glasses") else: query = db.searchProducts(searchProduct) if (query[1] != dataBaseModel.SUCCESS): failData = data = { 'id': id, 'image': image, 'item_name': item_name, 'price': price } return HttpResponse(json.dumps(data, encoding='latin-1'), content_type='application/json') else: items = query[0] if searchNum != 0: productNum = len(items) print "productNum is ", productNum endValue = pageNum * productNum / searchNum i = 0 for item in items: if searchNum == 0 or ((pageNum - 1) * searchNum <= i < (pageNum - 1) * searchNum + searchNum): id.append(item.pk) item_name.append(item.name) price.append(item.price) image.append(static("products/" + item.photo)) i = i + 1 if searchNum == 0: data = { 'id': id, 'image': image, 'item_name': item_name, 'price': price, 'page': 1 } elif productNum % searchNum == 0: data = { 'id': id, 'image': image, 'item_name': item_name, 'price': price, 'page': productNum / searchNum } else: data = { 'id': id, 'image': image, 'item_name': item_name, 'price': price, 'page': productNum / searchNum + 1 } return HttpResponse(json.dumps(data, encoding='latin-1'), content_type='application/json')
def editCustomItem(request, id, token): db = dataBaseModel() if not (request.user.is_authenticated() and request.method == 'POST' and db.checkIfOwnCustomProduct(request.user.id, id) == True): return HttpResponse(json.dumps( {'errCode': dataBaseModel.ERR_BAD_REQUEST}), content_type='application/json') overlayfilename = "" imagefilename = "" config = db.findPositionalConfig(token) # find before clear temp if 'overlay' in request.FILES: temppath = db.removeTempProduct( request.user.id) # try remove temp product # remove temp image if temppath != []: for path in temppath: ImageRW.removeImage(path, False) ImageRW.removeImage(path.replace('.png', '.jpg'), False) try: filename = token_generator() filename += str(request.user.id) filename += '.jpg' overlayfilename = filename.replace('.jpg', 'ol.jpg') imagefilename = ImageRW.writeImage(request.FILES['overlay'], True, filename) # write image ImageRW.writeImage(request.FILES['overlay'], True, overlayfilename) # write image #check here overlayfilename = ImageRW.Process( overlayfilename, True, request.POST["category"] ) # convert it to transparent, return the new ol file name #check here ImageRW.removeImage(overlayfilename.replace('.png', '.jpg'), True) except: return HttpResponse(json.dumps( {'errCode': dataBaseModel.ERR_UNABLE_TO_EDIT_CUSTOM_PRODUCT}), content_type='application/json') form = CustomProductForm(request.POST) if form.is_valid(): pcategory = form.cleaned_data['category'].lower() pname = form.cleaned_data['itemname'].lower() pbrand = form.cleaned_data['brand'] purl = form.cleaned_data['url'] pprice = float(form.cleaned_data['price']) pdescription = form.cleaned_data['description'] result = "" if config != None: result = db.editProduct(request.user.id, imagefilename, overlayfilename, pcategory, pbrand, pname, purl, pprice, pdescription, id, config[0], config[1], config[2], config[3], True) else: result = db.editProduct(request.user.id, imagefilename, overlayfilename, pcategory, pbrand, pname, purl, pprice, pdescription, id) if result != dataBaseModel.SUCCESS: return HttpResponse(json.dumps( {'errCode': dataBaseModel.ERR_UNABLE_TO_EDIT_CUSTOM_PRODUCT}), content_type='application/json') data = {'errCode': dataBaseModel.SUCCESS} return HttpResponse(json.dumps(data), content_type='application/json') else: return HttpResponse(json.dumps( {'errCode': dataBaseModel.ERR_UNABLE_TO_EDIT_CUSTOM_PRODUCT}), content_type='application/json')
def addProduct(request, token): # authenticate if (not request.user.is_authenticated()) or request.method != "POST": return HttpResponse(json.dumps({"errCode": dataBaseModel.ERR_BAD_REQUEST}), content_type="application/json") # delete the item from temp list # add the product db = dataBaseModel() config = db.findPositionalConfig(token) # find it before clear temp temppath = db.removeTempProduct(request.user.id) # try remove temp product # remove temp image if temppath != []: for path in temppath: ImageRW.removeImage(path, False) ImageRW.removeImage(path.replace(".png", ".jpg"), False) try: # helper method to generate random token import string import random def token_generator(size=32, chars=string.ascii_lowercase + string.digits): return "".join(random.choice(chars) for _ in range(size)) filename = token_generator() filename += str(request.user.id) filename += ".jpg" overlayfilename = filename.replace(".jpg", "ol.jpg") imagefilename = ImageRW.writeImage(request.FILES["overlay"], True, filename) # write image ImageRW.writeImage(request.FILES["overlay"], True, overlayfilename) # write image # check here overlayfilename = ImageRW.Process( overlayfilename, True, request.POST["category"] ) # convert it to transparent, return the new ol file name # check here ImageRW.removeImage(overlayfilename.replace(".png", ".jpg"), True) form = CustomProductForm(request.POST) if form.is_valid(): pcategory = form.cleaned_data["category"].lower() pname = form.cleaned_data["itemname"].lower() pbrand = form.cleaned_data["brand"] purl = form.cleaned_data["url"] pprice = float(form.cleaned_data["price"]) pdescription = form.cleaned_data["description"] result = "" if config != None: # print "run" result = db.addProduct( request.user.id, imagefilename, overlayfilename, pcategory, pbrand, pname, purl, pprice, pdescription, config[0], config[1], config[2], config[3], False, ) else: result = db.addProduct( request.user.id, imagefilename, overlayfilename, pcategory, pbrand, pname, purl, pprice, pdescription, ) if result != dataBaseModel.SUCCESS: return HttpResponse( json.dumps({"errCode": dataBaseModel.ERR_UNABLE_TO_ADD_PRODUCT}), content_type="application/json" ) data = {"errCode": dataBaseModel.SUCCESS} return HttpResponse(json.dumps(data), content_type="application/json") else: raise Exception("") except: return HttpResponse( json.dumps({"errCode": dataBaseModel.ERR_UNABLE_TO_ADD_PRODUCT}), content_type="application/json" )