Example #1
0
 def import_rent_list(self, user_id):
     c = self.mconn.cursor()
     c.execute("select w.add_date, w.position, i.upc, i.id from wishes w inner join items i on w.ref_item=i.id where w.ref_user=%s order by w.id", [user_id,])
     for add_date, position, upc, id in c.fetchall():
         item = self.get_item(upc)
         if not item: 
             self.missing_items.add(id)
             continue 
         rl = RentList(
             user_id = user_id,
             item = item,
             order = position,
             added = add_date
             )
         rl.save()
Example #2
0
 def do_weight_matrix(self):
     for o in RentList.get_priority1():
         w = RentAllocationMatrix.calculate_weight(o)
         debug('Allocation weight for %s - %s %s (%s): %s (old: %s)', o.id, o.item, o.item.category, o.user, w, o.weight)
         if w != o.weight:
             o.weight = w
             o.save()
Example #3
0
def add(request, id):
    item = get_object_or_404(Item, pk=id)
    if not request.is_ajax():
        return redirect(item.get_absolute_url())
    if request.method == 'POST':
        res = {}
        if 'move_to_1' in request.POST:
            RentList.add_to_list(request, item, True)
            if not request.user.is_authenticated():
                return JsonResponse({'goto_url': reverse('new_rent:sign_up')})
            res['redirect_to'] = reverse('members:rent_list')
        else:
            added_at = RentList.add_to_list(request, item)
            if not request.user.is_authenticated():
                return JsonResponse({'goto_url': reverse('new_rent:sign_up')})
            other_games = item.rent_games_like_this(5, user=request.user)
            context = {
                'item': item,
                'other_games': other_games,
                'added_at': added_at,
                'item_rent_status': item.get_rent_status(request.user),
            }
            res['form'] = loader.render_to_string('rent/dialogs/add.dialog.html',
                                                  context,
                                                  RequestContext(request))
        return JsonResponse(res)
    elif 'quietly' in request.GET:
        added_at = RentList.add_to_list(request, item)
        if not request.user.is_authenticated():
            return JsonResponse({'goto_url': reverse('new_rent:sign_up')})
        other_games = item.rent_games_like_this(5, user=request.user)
        return render_to_response('rent/dialogs/add.dialog.html', {
            'item': item,
            'other_games': other_games,
            'added_at': added_at,
            'item_rent_status': item.get_rent_status(request.user),
        }, context_instance=RequestContext(request))
    else:
        item_position = RentList.find_position(request, item)
        other_games = item.rent_games_like_this(5, user=request.user)
        return render_to_response('rent/dialogs/add.dialog.html', {
            'item': item,
            'other_games': other_games,
            'added_at': item_position,
            'at_home': item.get_rent_status(request.user) == 'At Home',
            'item_rent_status': item.get_rent_status(request.user),
        }, context_instance=RequestContext(request))
Example #4
0
 def do_send_empty_list_nofitications(self):
     debug('Sending "empty" rent list notifications...')
     qs = MemberRentalPlan.objects.filter(status=RentalPlanStatus.Active)
     for member_plan in qs:
         if RentList.get(member_plan.user).count() < 10:
             user = member_plan.user
             debug("  Send to %s...", user.email)
             mail(user.email, "emails/rent_emails/add_more_games.html", {
                 "user": user,
             }, subject="Your Rent List is Low! - Add More Games")
Example #5
0
def _get_rent_list(user, limit=None):
    qs = RentList.get(user)
    if limit:
        qs = qs[:limit]
    res = []
    for q in qs:
        res.append({
            'item': q,
            'in_stock': Inventory.objects.filter(item=q.item, status=InventoryStatus.InStock, buy_only=False).count(),
            'vendor': DistributorItem.objects.filter(item=q.item).exclude(distributor__id=5).count(),
        })
    return res
def core(request):
    result = {}

    if not request.user.is_authenticated():
        result['login_form'] = AuthenticationByEmailForm.create(request)
        result['sigup_form'] = SignupForm(request)

    lists_size = request.buy_list.count() + \
        RentList.get(request=request).count() + \
        TradeListItem.get(request).count()

    result['lists_size'] = lists_size

    return result
Example #7
0
 def do_process_matrix(self):
     debug('Allocate inventory for buy orders...')
     self.do_allocate_inventory_for_buy_orders()
     debug('Canceling dead plans...')
     MemberRentalPlan.cancel_dead_plans()
     debug('Canceling expired plans...')
     MemberRentalPlan.cancel_expired_plans()
     debug('Calculating weights...')
     self.do_weight_matrix()
     debug('OK')
     debug('Processing matrix...')
     for o in RentList.get_priority1():
         debug('--------------------------')
         debug('Allocation matrix for %s - %s %s (%s) %s', o.id, o.item, o.item.category, o.user, o.weight)
         RentAllocationMatrix.process_item(o)
     debug('OK')
Example #8
0
def  _rent_action(request, message=None):
    if request.is_ajax():
        from project.members.context_processors import core
        list = RentList.get(request=request)
        context = {
            'rent_list': list,
        }
        res = {
            'rent_list': {
                'size': list.count(),
            },
            'lists_size': core(request)['lists_size'],
            'html': render_to_string('members/lists/rent_list_grid.html', context, RequestContext(request)),
            'message': message,
        }
        return JsonResponse(res)
    return redirect('members:rent_list')
Example #9
0
def move_to(request, id, pos):
    filter = {'pk': id}
    if request.user.is_authenticated():
        filter['user'] = request.user
    else:
        filter['session_id'] = request.current_session_id
    item = get_object_or_404(RentList, **filter)
    r = []
    for i in RentList.get(request=request):
        if i != item:
            r.append(i)
    pos = int(pos)
    r.insert(pos, item)
    for order, rr in itertools.izip(itertools.count(1), r):
        rr.order = order
        rr.save()
    return _rent_action(request)
Example #10
0
def rent_list(request):
    rent_plan = MemberRentalPlan.get_current_plan(request.user)
    rent_list = RentList.get(request=request)
    if request.user.is_authenticated():
        rent_orders = RentOrder.objects.filter(user=request.user).order_by('-id')
        rent_orders = rent_orders.filter(status__in=[RentOrderStatus.Pending, RentOrderStatus.Prepared, RentOrderStatus.Shipped])
        rent_orders = rent_orders.filter(list_item=None)
    else:
        rent_orders = None
    return {
        'buy_list': request.buy_list,
        'trade_list': TradeListItem.get(request),
        'rent_plan': rent_plan,
        'rent_list': rent_list,
        'rent_orders': rent_orders,
        'pending_credits': request.user.get_profile().get_pending_credits(),
        'banners': [ListPageBanner.objects.get_random()],
    }
Example #11
0
def move_down(request, id):
    filter = {'pk': id}
    if request.user.is_authenticated():
        filter['user'] = request.user
    else:
        filter['session_id'] = request.current_session_id
    item = get_object_or_404(RentList, **filter)
    a, b = [], []
    r = a
    for i in RentList.get(request=request):
        if i == item:
            if a:
                del a[-1]
            r = b
        else:
            r.append(i)
    for order, rr in itertools.izip(itertools.count(1), itertools.chain(a, [b[0]], [item], b[1:])):
        rr.order = order
        rr.save()
    return _rent_action(request)
Example #12
0
def buy_list(request):
    if request.method == 'POST':
        # add to cart
        cart = BuyCart.get(request)
        for item in request.buy_list:
            if ('item-%d' % item.id) in request.POST:
                cart.push_item(request, item.item, inc_quantity=1, is_new=item.is_new)
                item.delete()
        return redirect(reverse('cart:index'))

    date_x = datetime.now() - timedelta(30)
    buy_orders = BuyOrder.objects.filter(user=request.user, create_date__gt=date_x).exclude(status=BuyOrderStatus.Canceled) if request.user.is_authenticated() else None

    return {
        'buy_list': request.buy_list,
        'buy_orders': buy_orders,
        'trade_list': TradeListItem.get(request),
        'rent_list': RentList.get(request=request),
        'pending_credits': request.user.get_profile().get_pending_credits(),
        'banners': [ListPageBanner.objects.get_random()],
    }
Example #13
0
def list(request):
    trade_list = TradeListItem.get(request)
    trade_list_total = sum([item.get_price() for item in trade_list])

    if request.method == 'POST':
        # add to cart
        cart = TradeCart.get(request)
        for item in trade_list:
            if ('item-%d' % item.id) in request.POST:
                cart.push_item(request, item.item, inc_quantity=1, is_complete=item.is_complete)
                item.delete()
        return redirect(reverse('trade:cart'))

    orders = TradeOrder.objects.filter(user=request.user).extra(where=["exists(select * from trade_tradeorderitem where order_id=trade_tradeorder.id and processed='f')"])

    return {
        'buy_list': request.buy_list,
        'rent_list': RentList.get(request.user, request),
        'trade_orders': orders,
        'trade_list': trade_list,
        'trade_list_total': trade_list_total,
        'pending_credits': request.user.get_profile().get_pending_credits(),
        'banners': [ListPageBanner.objects.get_random()],
    }
Example #14
0
 def do_purge(self):
     MemberRentalPlan.purge_expired_plans()
     MemberRentalPlan.cleanup_expired_cancellations()
     RentList.purge()