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')
예제 #2
0
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"
        )
예제 #4
0
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')
예제 #6
0
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')
예제 #9
0
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')
예제 #14
0
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')
예제 #15
0
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')
예제 #16
0
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')
예제 #17
0
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')
예제 #21
0
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')
예제 #22
0
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')
예제 #24
0
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')
예제 #26
0
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')
예제 #28
0
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')
예제 #30
0
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')
예제 #31
0
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"
        )