예제 #1
0
def processRegister(request):
    if request.method != 'POST':
        print('Hack attempted')
        return redirect('/login/')
    print('Processing register')
    errors = User.objects.validate_register(request.POST)
    e = getFromSession(request.session['flash'])
    if len(errors):
        request.session['first_name'] = request.POST['first_name']
        request.session['last_name'] = request.POST['last_name']
        request.session['email'] = request.POST['email']
        request.session['location'] = request.POST['location']
        for tag, error in errors.items():
            e.addMessage(error, tag)
        request.session['flash'] = e.addToSession()
        return redirect('/login/register/')
    location = Location.objects.get(name=request.POST['location'])
    cohort_toAdd = Cohort.objects.get(location=location)
    User.objects.create(first_name=request.POST['first_name'],
                        last_name=request.POST['last_name'],
                        email=request.POST['email'],
                        password=bcrypt.hashpw(
                            request.POST['password'].encode(),
                            bcrypt.gensalt()),
                        cohort=cohort_toAdd)
    request.session['first_name'] = ''
    request.session['last_name'] = ''
    request.session['email'] = ''
    request.session['location'] = ''
    e.addMessage('Registration successful!', 'reg_good')
    request.session['flash'] = e.addToSession()
    return redirect('/login')
예제 #2
0
def register(request):
    if 'flash' not in request.session:
        request.session['flash'] = ErrorManager().addToSession()
    if 'userID' in request.session:
        return redirect('/')
    if 'remember' not in request.session:
        request.session['remember'] = ''
    if 'login_email' not in request.session:
        request.session['login_email'] = ''
    if 'first_name' not in request.session:
        request.session['first_name'] = ''
        request.session['last_name'] = ''
        request.session['email'] = ''
        request.session['location'] = ''
    e = getFromSession(request.session['flash'])
    # msgs=e.getMessages()
    # print(msgs)
    context = {
        'locations': Location.objects.all(),
        'first_name': request.session['first_name'],
        'last_name': request.session['last_name'],
        'email': request.session['email'],
        'location': request.session['location'],
        'first_name_errors': e.getMessages('first_name'),
        'last_name_errors': e.getMessages('last_name'),
        'reg_email_errors': e.getMessages('reg_email'),
        'password_errors': e.getMessages('password'),
        'confirm_errors': e.getMessages('confirm')
    }
    request.session['flash'] = e.addToSession()
    return render(request, 'clothing_login/register.html', context)
예제 #3
0
def destroy(request, course_id):
    course=Course.objects.get(id=course_id)
    course.delete()
    e=getFromSession(request.session['flash'])
    e.addMessage('Successfully deleted course', 'delete')
    request.session['flash']=e.addToSession()
    return redirect('/')
예제 #4
0
def addProduct(request):
    if 'adminLoggedIn' not in request.session:
        request.session['adminLoggedIn']=False
    if 'userID' not in request.session:
        return redirect('/admin')
    if len(User.objects.filter(id=request.session['userID']))==0:
        return redirect('/admin')
    if request.session['adminLoggedIn']==False:
        return redirect('/admin')
    if User.objects.get(id=request.session['userID']).user_level!=9:
        return redirect('/admin')

    if 'description' not in request.session:
        request.session['description']=''
    if 'price' not in request.session:
        request.session['price']=''
        request.session['product_name']=''
        request.session['image_path']=''
        request.session['description']=''
    e=getFromSession(request.session['flash'])
    context={
        'product_name_errors':e.getMessages('product_name'),
        'product_name':request.session['product_name'],
        'image_path_errors':e.getMessages('image_path'),
        'image_path':request.session['image_path'],
        'price_errors':e.getMessages('price'),
        'price':request.session['price'],
        'color_errors':e.getMessages('color'),
        'description':request.session['description'],
        'description_errors':e.getMessages('description'),
        'user':User.objects.get(id=request.session['userID'])
    }
    request.session['flash']=e.addToSession()
    return render(request, 'clothing_admin/admin_addNew.html', context)
예제 #5
0
def paymentInfo(request):
    if 'loggedIn' not in request.session:
        return redirect('/login/')
    if request.session['loggedIn'] == False:
        return redirect('/login/')
    if 'userID' not in request.session:
        return redirect('/login/')
    try:
        User.objects.get(id=request.session['userID']).cart
    except ObjectDoesNotExist:
        print("User ", request.session['userID'], 'has no cart')
        c = Cart(user=User.objects.get(id=request.session['userID']))
        c.save()
        return redirect('/cart/')
    count = 0
    for item in User.objects.get(
            id=request.session['userID']).cart.items.all():
        count += item.quantity
    e = getFromSession(request.session['flash'])
    context = {
        'user': User.objects.get(id=request.session['userID']),
        'cart': User.objects.get(id=request.session['userID']).cart,
        'count': count,
        'card_fail': e.getMessages('card_fail'),
        'month_fail': e.getMessages('month_fail'),
        'year_fail': e.getMessages('year_fail'),
        'cvv_fail': e.getMessages('cvv_fail'),
        'publishable': settings.STRIPE_PUBLISHABLE,
    }
    request.session['flash'] = e.addToSession()
    return render(request, 'clothing_dojo/clothingDojo_payment.html', context)
예제 #6
0
def editProduct(request, product_id):
    if 'adminLoggedIn' not in request.session:
        request.session['adminLoggedIn']=False
    if 'userID' not in request.session:
        return redirect('/admin')
    if len(User.objects.filter(id=request.session['userID']))==0:
        return redirect('/admin')
    if request.session['adminLoggedIn']==False:
        return redirect('/admin')
    if User.objects.get(id=request.session['userID']).user_level!=9:
        return redirect('/admin')

    if(len(Product.objects.filter(id=product_id))==0):
        print('Attempting to edit product that does not exist')
        return redirect('/admin/products/')
    e=getFromSession(request.session['flash'])
    p=Product.objects.get(id=product_id)
    context={
        'product_name_errors':e.getMessages('product_name'),
        'image_path_errors':e.getMessages('image_path'),
        'price_errors':e.getMessages('price'),
        'color_errors':e.getMessages('color'),
        'description_errors':e.getMessages('description'),
        'product':p,
        'colors':p.colors.all(),
        'num_colors':len(p.colors.all()),
        'user':User.objects.get(id=request.session['userID'])
    }
    request.session['flash']=e.addToSession()
    return render(request, 'clothing_admin/admin_editProduct.html', context)
예제 #7
0
def addToCart(request, product_id):
    if 'loggedIn' not in request.session:
        return redirect('/login/')
    if request.session['loggedIn'] == False:
        return redirect('/login/')
    if 'userID' not in request.session:
        return redirect('/login/')

    if len(Product.objects.filter(id=product_id)) == 0:
        print('Attempting to view product that does not exist')
        return redirect('/')
    try:
        User.objects.get(id=request.session['userID']).cart
    except ObjectDoesNotExist:
        print("User ", request.session['userID'], 'has no cart')
        c = Cart(user=User.objects.get(id=request.session['userID']))
        c.save()
    print('Adding item ', Product.objects.get(id=product_id).name, ' to cart.')
    cart = User.objects.get(id=request.session['userID']).cart
    total = Product.objects.get(id=product_id).cost * int(
        request.POST['quantity'])
    CartItem.objects.create(cart=cart,
                            product=Product.objects.get(id=product_id),
                            color=Color.objects.get(id=request.POST['color']),
                            size=request.POST['size'],
                            quantity=request.POST['quantity'],
                            total=total)
    cart.total += total
    cart.save()
    e = getFromSession(request.session['flash'])
    string = 'Successfully added ' + Product.objects.get(
        id=product_id).name + ' to cart.'
    e.addMessage(string, 'cart_success')
    request.session['flash'] = e.addToSession()
    return redirect('/cart/')
예제 #8
0
def cart(request):
    if 'loggedIn' not in request.session:
        return redirect('/login/')
    if request.session['loggedIn'] == False:
        return redirect('/login/')
    if 'userID' not in request.session:
        return redirect('/login/')
    try:
        User.objects.get(id=request.session['userID']).cart
    except ObjectDoesNotExist:
        print("User ", request.session['userID'], 'has no cart')
        c = Cart(user=User.objects.get(id=request.session['userID']))
        c.save()
    count = 0
    for item in User.objects.get(
            id=request.session['userID']).cart.items.all():
        count += item.quantity
    e = getFromSession(request.session['flash'])
    showCheckout = 0
    if len(User.objects.get(id=request.session['userID']).cart.items.all()):
        showCheckout = 1
    context = {
        'cart_success': e.getMessages('cart_success'),
        'cart': User.objects.get(id=request.session['userID']).cart,
        'count': count,
        'show_checkout': showCheckout,
        'user': User.objects.get(id=request.session['userID'])
    }
    request.session['flash'] = e.addToSession()
    return render(request, 'clothing_dojo/clothingDojo_cart.html', context)
예제 #9
0
def finalizeBatch(request, batch_id):
    if 'adminLoggedIn' not in request.session:
        request.session['adminLoggedIn']=False
    if 'userID' not in request.session:
        return redirect('/admin')
    if len(User.objects.filter(id=request.session['userID']))==0:
        return redirect('/admin')
    if request.session['adminLoggedIn']==False:
        return redirect('/admin')
    if User.objects.get(id=request.session['userID']).user_level!=9:
        return redirect('/admin')

    if len(Batch.objects.filter(id=batch_id))==0:
        print('Attempting to access location that does not exist')
        return redirect('/admin/batchInfo/')
    if(Batch.objects.get(id=batch_id).status=='Closed'):
        print('This batch is already closed')
        return redirect('/admin/batchInfo/')
    
    b=Batch.objects.get(id=batch_id)
    b.status='Closed'
    b.save()
    for order in b.orders.all():
        order.ordered=True
        order.save()
        
    location=Batch.objects.get(id=batch_id).location
    Batch.objects.create(location=location)
    e=getFromSession(request.session['flash'])
    e.addMessage('Batch successfully finalized', 'batch_success')
    request.session['flash']=e.addToSession()
    print('Batch successfully finalized')
    string='/admin/batchInfo/viewLocation/'+str(location.id)+'/'
    return redirect(string)
예제 #10
0
def processRegister(request):
    if (request.method != 'POST'):
        print('Hacker ALERT')
        return redirect('/')
    print('Attempting register')
    errors = User.objects.validate_register(request.POST)
    e = getFromSession(request.session['flash'])
    if (len(errors)):
        request.session['fName'] = request.POST['first_name']
        request.session['lName'] = request.POST['last_name']
        request.session['reg_email'] = request.POST['reg_email']
        request.session['birthday'] = request.POST['birthday']
        for tag, error in errors.items():
            e.addMessage(error, tag)
        request.session['flash'] = e.addToSession()
        return redirect('/')
    hashedPW = bcrypt.hashpw(request.POST['reg_password'].encode(),
                             bcrypt.gensalt())
    User.objects.create(first_name=request.POST['first_name'],
                        last_name=request.POST['last_name'],
                        email=request.POST['reg_email'],
                        birthday=request.POST['birthday'],
                        password=hashedPW)
    e.addMessage('Successfully registered', 'reg_success')
    remember = request.session['remember']
    log_em = request.session['log_em']
    request.session.clear()
    request.session['remember'] = remember
    request.session['log_em'] = log_em
    request.session['flash'] = e.addToSession()
    return redirect('/')
예제 #11
0
def processNew(request):
    if 'adminLoggedIn' not in request.session:
        request.session['adminLoggedIn']=False
    if 'userID' not in request.session:
        return redirect('/admin')
    if len(User.objects.filter(id=request.session['userID']))==0:
        return redirect('/admin')
    if request.session['adminLoggedIn']==False:
        return redirect('/admin')
    if User.objects.get(id=request.session['userID']).user_level!=9:
        return redirect('/admin')

    if(request.method!='POST'):
        return redirect('/admin')
    print('Recieved Data: ', request.POST)
    # print('Color: ',request.POST['color'])
    errors=Product.objects.validate(request.POST)
    e=getFromSession(request.session['flash'])
    if(len(request.POST['color_1'])==0):
            errors['color']='Product must have atleast one color'
    else:
        for i in range(2, int(request.POST['num_colors'])+1):
            if len(request.POST['color_'+str(i)])==0:
                e.addMessage('Color cannot be empty', 'color')
                break

    if(len(errors)):
        print('Errors: ', errors)
        for tag,error in errors.items():
            e.addMessage(error, tag)
        request.session['flash']=e.addToSession()
        request.session['product_name']=request.POST['product_name']
        request.session['image_path']=request.POST['image_path']
        request.session['price']=request.POST['price']
        request.session['description']=request.POST['description']
        return redirect('/admin/addProduct/')
    
    colors=[]
    for i in range(1, int(request.POST['num_colors'])+1):
        color=Color(name=request.POST['color_'+str(i)])
        color.save()
        colors.append(color)

    p=Product(name=request.POST['product_name'], cost=request.POST['price'], image_path=request.POST['image_path'], description=request.POST['description'])
    p.save()
    # print('P-id',p.id)
    # Product.objects.create(name=request.POST['product_name'], cost=request.POST['price'], image_path=request.POST['image_path'])
    # for i in range(0, len(colors)):
    for color in colors:
        color.product=Product.objects.get(id=p.id)
        color.save()
        # p.colors.add(colors[i])
    request.session['product_name']=''
    request.session['image_path']=''
    request.session['price']=''
    request.session['description']=''
    e.addMessage('Product successfully added', 'product_success')
    request.session['flash']=e.addToSession()
    
    return redirect('/admin/products/')
예제 #12
0
파일: views.py 프로젝트: Bryan-Kane/exam
def index(request):
    # return HttpResponse("hello")
    if 'flash' not in request.session:
        request.session['flash'] = ErrorManager().addToSession()
    e = getFromSession(request.session['flash'])
    first_name_errors = e.getMessages('first_name')
    last_name_errors = e.getMessages('last_name')
    email_errors = e.getMessages('email')
    password_errors = e.getMessages('password')
    passc_errors = e.getMessages('passc')
    email2_errors = e.getMessages('email2')
    email_login_errors = e.getMessages('email_login')
    email2_login_errors = e.getMessages('email_login2')
    pass_login_errors = e.getMessages('pass_login2')
    request.session['flash'] = e.addToSession()
    context={
        'first_name_e':first_name_errors,
        'last_name_e':last_name_errors,
        'email_e': email_errors,
        'email2_e': email2_errors,
        'password_e':password_errors,
        'passc_e':passc_errors,
        'email_1':email_login_errors,
        'email_2':email2_login_errors,
        'pass_log':pass_login_errors
    }
        
    if 'first_name' not in request.session:
        return render(request, 'handyhelper/index.html', context)
    else:
        return redirect('/clear')
예제 #13
0
def loginorregister(request):
    if 'flash' not in request.session:
        request.session['flash'] = ErrorManager().addToSession()
    e = getFromSession(request.session['flash'])
    first_name_errors = e.getMessages('first_name')
    last_name_errors = e.getMessages('last_name')
    email_errors = e.getMessages('email')
    password_errors = e.getMessages('password')
    passc_errors = e.getMessages('passc')
    email2_errors = e.getMessages('email2')
    email_login_errors = e.getMessages('email_login')
    email2_login_errors = e.getMessages('email_login2')
    pass_login_errors = e.getMessages('pass_login2')
    request.session['flash'] = e.addToSession()
    context = {
        'first_name_e': first_name_errors,
        'last_name_e': last_name_errors,
        'email_e': email_errors,
        'email2_e': email2_errors,
        'password_e': password_errors,
        'passc_e': passc_errors,
        'email_1': email_login_errors,
        'email_2': email2_login_errors,
        'pass_log': pass_login_errors
    }
    return render(request, 'egg/login.html', context)
예제 #14
0
def processLogin(request):
    if (request.method != 'POST'):
        print('Hacker ALERT')
        return redirect('/')
    print('Attempting to log in')
    errors = User.objects.validate_login(request.POST)
    e = getFromSession(request.session['flash'])
    if (len(errors)):
        for tag, error in errors.items():
            e.addMessage(error, tag)
        request.session['flash'] = e.addToSession()
        return redirect('/')
    print('Login attempt successful')
    request.session['loggedIn'] = True
    if 'remember_me' in request.POST:
        print('Remembering user')
        request.session['log_em'] = request.POST['login_email']
        request.session['remember'] = 'checked'
    else:
        request.session['log_em'] = ''
        request.session['remember'] = ''
    this_user = User.objects.get(email=request.POST['login_email'])
    request.session['userID'] = this_user.id
    request.session['systemCheck'] = customHash.createHash(
        str(this_user.created_at))
    return redirect('/login/')
예제 #15
0
파일: views.py 프로젝트: Bryan-Kane/exam
def register(request):
    if request.method == 'POST':
        errors = User.objects.basic_validator(request.POST)
        e = getFromSession(request.session['flash'])
        if len(errors):
            for tag, error in errors.items():
                e.addMessage(error,tag)
            request.session['flash'] = e.addToSession()
            return redirect('/')
        # need to add another vaidator for login
        print(request.POST)
        first_name = request.POST['first_name']
        last_name = request.POST['last_name']
        email = request.POST['email']
        password = request.POST['password']
        conf = request.POST['passconf']
        hash1 = bcrypt.hashpw(password.encode(), bcrypt.gensalt())
        User.objects.create(first_name = first_name, last_name = last_name, email = email, password = hash1)
        user = User.objects.get(first_name = first_name, last_name = last_name, email = email, password = hash1)
        request.session['first_name'] = first_name
        request.session['last_name'] = last_name
        request.session['id']=user.id
        return redirect('/dashboard')
    else:
        return redirect('/')
예제 #16
0
def products(request):
    e = getFromSession(request.session['flash'])
    context = {
        'product_success': e.getMessages('product_success'),
        'products': Product.objects.all()
    }
    request.session['flash'] = e.addToSession()
    return render(request, 'clothing_admin/admin_products.html', context)
예제 #17
0
def batchInfo(request):
    e = getFromSession(request.session['flash'])
    context = {
        'locations': Location.objects.all(),
        'batch_success': e.getMessages('batch_success')
    }
    request.session['flash'] = e.addToSession()
    return render(request, 'clothing_admin/admin_batchInfo.html', context)
예제 #18
0
def processEdit(request, product_id):
    if 'adminLoggedIn' not in request.session:
        request.session['adminLoggedIn']=False
    if 'userID' not in request.session:
        return redirect('/admin')
    if len(User.objects.filter(id=request.session['userID']))==0:
        return redirect('/admin')
    if request.session['adminLoggedIn']==False:
        return redirect('/admin')
    if User.objects.get(id=request.session['userID']).user_level!=9:
        return redirect('/admin')

    if(request.method!='POST'):
        return redirect('/admin/products/')
    if(len(Product.objects.filter(id=product_id))==0):
        print('Attempting edit on product that doesn\'t exist')
        return redirect('/admin/products/')
    print('Processing edit')
    print('Request: ', request.POST)
    colors=request.POST.getlist('color')
    print(colors)
    e=getFromSession(request.session['flash'])
   
    errors=Product.objects.validate(request.POST)
    # if(len(colors[0])==0):
    #     errors['color']='Product must have atleast one color'
    if(len(colors)==0):
        errors['color']='Product must have atleast one color'
    for i in range(1, int(request.POST['num_colors'])):
        if len(colors[i])==0:
            errors['color']='Color cannot be empty'
            break

    if(len(errors)):
        print('Errors: ', errors)
        for tag,error in errors.items():
            e.addMessage(error, tag)
        request.session['flash']=e.addToSession()
        return redirect('/admin/edit/'+str(product_id)+'/')

    p=Product.objects.get(id=product_id)
    p.name=request.POST['product_name']
    p.image_path=request.POST['image_path']
    p.price=request.POST['price']
    p.description=request.POST['description']
    # UPDATE COLORS OF P
    p.colors.clear()
    color_objects=[]
    for color in colors:
        color_objects.append(Color.objects.create(name=color))
    for color in color_objects:
        color.product=Product.objects.get(id=product_id)
        color.save()
    p.save()

    e.addMessage('Product successfully edited!', 'product_success')
    request.session['flash']=e.addToSession()
    return redirect('/admin/products/')
예제 #19
0
def deleteProduct(request, product_id):
    print('Deleting product ', product_id)
    if (len(Product.objects.filter(id=product_id)) == 0):
        print('Attempting to delete product that does not exist')
        return redirect('/admin/products/')
    p = Product.objects.get(id=product_id)
    p.delete()
    e = getFromSession(request.session['flash'])
    e.addMessage('Product successfully deleted', 'product_success')
    request.session['flash'] = e.addToSession()
    return redirect('/admin/products/')
예제 #20
0
파일: views.py 프로젝트: Bryan-Kane/exam
def adding(request):
    errors = Job.objects.adding_validator(request.POST)
    e = getFromSession(request.session['flash'])
    if len(errors):
        for tag, error in errors.items():
            e.addMessage(error, tag)
        request.session['flash'] = e.addToSession()
        return redirect('/addJob/')
    user = User.objects.get(id = request.session['id'])
    Job.objects.create(user = user, title=request.POST['title'], description=request.POST['description'], location=request.POST['location'])
    return redirect('/dashboard')
예제 #21
0
def processClaim(request):
    if 'loggedIn' not in request.session:
        return redirect('/login_page/')
    if request.session['loggedIn']==False:
        return redirect('/login_page/')
    if 'userID' not in request.session:
        return redirect('/login_page/')
    if User.objects.get(id=request.session['userID']).claimed_shirt==True:
        print('User has already claimed shirt')
        e=getFromSession(request.session['flash'])
        e.addMessage('You have already ordered your free shirt.', 'shirt_fail')
        request.session['flash']=e.addToSession()
        return redirect('/')
    if request.method!='POST':
        return redirect('/')
    o=Order(user=User.objects.get(id=request.session['userID']), total=0, location=User.objects.get(id=request.session['userID']).cohort.location)
    o.save()
    shirt=Product.objects.get(id=FREE_SHIRT_ID)
    OrderItem.objects.create(product=shirt, order=o, size=request.POST['size'], color=Color.objects.get(id=request.POST['color']), quantity=1, total=0)
    o.num_items=1
    shirt.num_sold+=1
    shirt.save()
    location=User.objects.get(id=request.session['userID']).cohort.location
    o.batch=location.batches.last()
    o.save()
    user=User.objects.get(id=request.session['userID'])
    user.claimed_shirt=True
    user.save()
    
    if len(location.batches.last().items.filter(product=shirt, size=request.POST['size'], color=Color.objects.get(id=request.POST['color'])))==0:
        bt=BatchItem.objects.create(product=shirt, batch=location.batches.last(), size=request.POST['size'], color=Color.objects.get(id=request.POST['color']), quantity=1, total=0)
    else:
        bt=location.batches.last().items.get(product=shirt, size=request.POST['size'], color=Color.objects.get(id=request.POST['color']))
        bt.quantity+=1
        bt.save()

    e=getFromSession(request.session['flash'])
    e.addMessage('Your shirt has been successfully claimed.', 'shirt_success')
    request.session['flash']=e.addToSession()
    print('Successfully claimed shirt')
    return redirect('/')
예제 #22
0
def processCancel(request, order_id):
    #General Validations
    if 'loggedIn' not in request.session:
        return redirect('/login_page/')
    if request.session['loggedIn'] == False:
        return redirect('/login_page/')
    if 'userID' not in request.session:
        return redirect('/login_page/')
    if len(User.objects.filter(id=request.session['userID'])) == 0:
        return redirect('/login_page/')
    #End of General Validations

    #MORE VALIDATIONS SPECIFIC TO THIS CASE
    if len(Order.objects.filter(id=order_id)) == 0:
        print("Attempting to cancel order that doesn't exist")
        return redirect('/viewOrders/')
    order = Order.objects.get(id=order_id)
    if order.user.id != request.session['userID']:
        print("Attempt to cancel order that isnt yours")
        return redirect('/viewOrders/')
    if order.ordered == True:
        print("This order has already been ordered. It is too late to cancel")
        return redirect('/viewOrders/')
    #End of Specific Validations

    print("Cancelling the order: ", order_id)
    location = User.objects.get(id=request.session['userID']).location
    batch = location.batches.last()
    for i in range(len(order.items.all()) - 1, -1, -1):
        item = order.items.all()[i]
        bt = batch.items.get(product=item.product,
                             size=item.size,
                             color=item.color)
        bt.quantity -= item.quantity
        bt.total -= item.total
        bt.save()
        if bt.quantity == 0:
            bt.delete()
        p = item.product
        p.num_sold -= item.quantity
        p.save()
        item.delete()
    #Refund Card
    if (order.stripe_id != None):
        re = stripe.Refund.create(charge=order.stripe_id)
        print(re)

    order.delete()
    e = getFromSession(request.session['flash'])
    e.addMessage("Your order has been successfully cancelled.",
                 'order_cancel_success')
    request.session['flash'] = e.addToSession()
    return redirect('/viewOrders/')
예제 #23
0
def processCheckout(request):
    print('Processing Checkout')
    if 'loggedIn' not in request.session:
        return redirect('/login_page/')
    if request.session['loggedIn']==False:
        return redirect('/login_page/')
    if 'userID' not in request.session:
        return redirect('/login_page/')
    try:
        User.objects.get(id=request.session['userID']).cart
    except ObjectDoesNotExist:
        print("User ", request.session['userID'], 'has no cart')
        c=Cart(user=User.objects.get(id=request.session['userID']))
        c.save()
        return redirect('/cart/')
    if len(User.objects.get(id=request.session['userID']).cart.items.all())==0:
        print('Cannot checkout on an empty cart')
        return redirect('/cart/')

    cart=User.objects.get(id=request.session['userID']).cart
    o=Order(user=User.objects.get(id=request.session['userID']), total=0, location=User.objects.get(id=request.session['userID']).cohort.location)
    o.save()
    for item in cart.items.all():
        ot=OrderItem.objects.create(product=item.product, order=o, size=item.size, color=item.color, quantity=item.quantity, total=item.total)
        o.total+=ot.total
        o.num_items+=ot.quantity
        p=ot.product
        p.num_sold+=ot.quantity
        p.save()

    location=User.objects.get(id=request.session['userID']).cohort.location
    o.batch=location.batches.last()
    o.save()
    
    for item in o.items.all():
        if len(location.batches.last().items.filter(product=item.product, size=item.size, color=item.color))==0:
            bt=BatchItem.objects.create(product=item.product, batch=location.batches.last(), size=item.size, color=item.color, quantity=item.quantity, total=item.total)
        else:
            bt=location.batches.last().items.get(product=item.product, size=item.size, color=item.color)
            bt.quantity+=item.quantity
            bt.total+=item.total
            bt.save()

    print('Checkout successful')
    cart.delete()
    e=getFromSession(request.session['flash'])
    e.addMessage('Your order has been successfully placed!','shirt_success')
    request.session['flash']=e.addToSession()
    return redirect('/')
예제 #24
0
def index(request):
    if 'flash' not in request.session:
        request.session['flash']=ErrorManager().addToSession()

    context={'courses':Course.objects.all()}

    e=getFromSession(request.session['flash'])
    name_errors=e.getMessages('name')
    description_errors=e.getMessages('description')
    deletion_success=e.getMessages('delete')
    request.session['flash']=e.addToSession()
    
    context['deletion_success']=deletion_success
    context['name_errors']=name_errors
    context['description_errors']=description_errors
    return render(request, 'courses/courses.html',context)
예제 #25
0
def processPost(request):
    if request.method!='POST':
        print('Hack attempted')
        return redirect('/wall')
    errors=Post.objects.validate(request.POST)
    e=getFromSession(request.session['flash'])
    if(len(errors)):
        for tag, error in errors.items():
            e.addMessage(error, tag)
        request.session['flash']=e.addToSession()
        return redirect('/wall')
    e.addMessage('Successfully posted', 'post_success')
    request.session['flash']=e.addToSession()
    Post.objects.create(content=request.POST['message'], sender_id=User.objects.get(id=request.session['userID']))
    print('Processing new post')
    return redirect('/wall')
예제 #26
0
def index(request):
    if 'flash' not in request.session:
        request.session['flash'] = ErrorManager().addToSession()
    if 'loggedIn' in request.session and request.session['loggedIn'] == True:
        if 'userID' in request.session and len(
                User.objects.filter(id=request.session['userID'])) == 1:
            if User.objects.get(id=request.session['userID']).user_level == 9:
                return redirect('/main')
    e = getFromSession(request.session['flash'])
    context = {
        'email_error': e.getMessages('email_error'),
        'password_error': e.getMessages('password_error'),
        'main_error': e.getMessages('main_error')
    }
    request.session['flash'] = e.addToSession()
    return render(request, 'passenger_server/login.html', context)
예제 #27
0
파일: views.py 프로젝트: Bryan-Kane/exam
def addjob(request):
    if 'flash' not in request.session:
        request.session['flash'] = ErrorManager().addToSession()
    e = getFromSession(request.session['flash'])
    title_errors = e.getMessages('title_errors')
    description_errors = e.getMessages('description_errors')
    location_errors = e.getMessages('location_errors')
    
    request.session['flash'] = e.addToSession()
    context={
        'title_e':title_errors,
        'desc_e':description_errors,
        'loc_e': location_errors,
    }

    return render(request, 'handyhelper/addjob.html', context)
예제 #28
0
파일: views.py 프로젝트: Bryan-Kane/exam
def editing(request, numbers):
    errors = Job.objects.adding_validator(request.POST)
    e = getFromSession(request.session['flash'])
    if len(errors):
        for tag, error in errors.items():
            e.addMessage(error, tag)
        request.session['flash'] = e.addToSession()
        return redirect('/addJob/')
    user = User.objects.get(id = request.session['id'])
    job = Job.objects.get(id = numbers)
    # job.user = user
    job.title = request.POST['title']
    job.description = request.POST['description']
    job.location = request.POST['location']
    job.save()
    return redirect('/dashboard')
예제 #29
0
def index(request):
    if 'adminLoggedIn' not in request.session:
        request.session['adminLoggedIn']=False
    if 'userID' not in request.session:
        request.session['userID']=-1
    if 'flash' not in request.session:
        request.session['flash']=ErrorManager().addToSession()
    if request.session['adminLoggedIn']==True and 'userID' in request.session and len(User.objects.filter(id=request.session['userID']))==1:
        return redirect('/admin/orders/')

    e=getFromSession(request.session['flash'])
    context={
        "login_main_errors":e.getMessages('login_main'),
        "login_email_errors":e.getMessages('login_email'),
    }
    request.session['flash']=e.addToSession()
    return render(request, 'clothing_admin/admin_login.html', context)
예제 #30
0
def editProduct(request, product_id):
    if (len(Product.objects.filter(id=product_id)) == 0):
        print('Attempting to edit product that does not exist')
        return redirect('/admin/products/')
    e = getFromSession(request.session['flash'])
    p = Product.objects.get(id=product_id)
    context = {
        'product_name_errors': e.getMessages('product_name'),
        'image_path_errors': e.getMessages('image_path'),
        'price_errors': e.getMessages('price'),
        'color_errors': e.getMessages('color'),
        'description_errors': e.getMessages('description'),
        'product': p,
        'colors': p.colors.all(),
        'num_colors': len(p.colors.all())
    }
    request.session['flash'] = e.addToSession()
    return render(request, 'clothing_admin/admin_editProduct.html', context)