def change_view(self, request, object_id, extra_context=None): obj = self.get_object(request, admin.util.unquote(object_id)) if obj is None: raise Http404("Profile object with primary key %d does not exist." % object_id) last_order_buy = obj.user.buyorder_set.order_by("-id") last_order_buy = last_order_buy[0] if len(last_order_buy) > 0 else None last_order_trade = obj.user.tradeorder_set.order_by("-id") last_order_trade = last_order_trade[0] if len(last_order_trade) > 0 else None last_order_rent = obj.user.rentorder_set.order_by("-id") last_order_rent = last_order_rent[0] if len(last_order_rent) > 0 else None stat = { "buy": { "last_date": last_order_buy.create_date if last_order_buy else "", "status": "Active" if obj.user.buyorder_set.count() else "Inactive", "earned_total": obj.user.buyorder_set.aggregate(Sum("total"))["total__sum"] or 0, "earned_avg": obj.user.buyorder_set.aggregate(Avg("total"))["total__avg"] or 0, }, "trade": { "last_date": last_order_trade.create_date if last_order_trade else "", "status": "Active" if obj.user.tradeorder_set.count() else "Inactive", "earned_total": obj.user.tradeorder_set.aggregate(Sum("total"))["total__sum"] or 0, "earned_avg": obj.user.tradeorder_set.aggregate(Avg("total"))["total__avg"] or 0, }, "rent": { "last_date": last_order_rent.date_rent if last_order_rent else "", "status": "Active" if obj.user.rentorder_set.count() else "Inactive", "earned_total": obj.user.billinghistory_set.filter(status=0).aggregate(Sum("debit"))["debit__sum"] or 0, "earned_avg": obj.user.billinghistory_set.filter(status=0).aggregate(Avg("debit"))["debit__avg"] or 0, }, } stat["earned_total"] = ( stat["buy"]["earned_total"] + stat["trade"]["earned_total"] + stat["rent"]["earned_total"] ) / 3 stat["earned_avg"] = (stat["buy"]["earned_avg"] + stat["trade"]["earned_avg"] + stat["rent"]["earned_avg"]) / 3 last_order = {} last_order["buy"] = last_order_buy last_order["trade"] = last_order_trade last_order["rent"] = last_order_rent buy_cart, _created = BuyCart.objects.get_or_create(user=obj.user) trade_list = TradeListItem.get_for_user(obj.user) extra_context = extra_context or {} extra_context.update( { "stat": stat, "last_order": last_order, "cart": buy_cart, "cart_total": sum([item.get_retail_price() * item.quantity for item in buy_cart.items.all()]), "trade_list": trade_list, "trade_total": sum([item.get_price() for item in trade_list]), } ) return super(ProfileAdmin, self).change_view(request, object_id, extra_context)
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
def _trade_action(request): if request.is_ajax(): from project.members.context_processors import core list = TradeListItem.get(request) context = { 'trade_list': list, 'trade_list_total': sum([item.get_price() for item in list]) } res = { 'trade_list': { 'size': list.count(), }, 'lists_size': core(request)['lists_size'], 'html': render_to_string('members/lists/trade_list_grid.html', context, RequestContext(request)), } return JsonResponse(res) return redirect('trade:list')
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()], }
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()], }
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()], }
def add(request, id): item = get_object_or_404(Item, id=id) if not request.is_ajax(): return redirect(item.get_absolute_url()) if request.method == 'POST': dest_wizard = False form = AddItemCompletenessForm(request.POST) if form.is_valid(): is_complete = form.cleaned_data['completeness'] == 'cg' is_valid_choice = True if not is_complete: if not request.user.is_authenticated(): is_valid_choice = False elif not request.user.get_profile().has_game_perks(): is_valid_choice = False if is_valid_choice: if request.POST.get('submit') == 'list': # add to list TradeListItem.add(request, item, is_complete) if request.user.is_authenticated(): return JsonResponse({'redirect_to': reverse('trade:list')}) else: request.session['entry_point'] = ProfileEntryPoint.Trade return JsonResponse({'goto_url': reverse('members:create_account')}) else: # add to cart if not item.trade_flag: return redirect(item.get_absolute_url()) cart = TradeCart.get(request) cart.push_item(request, item, inc_quantity=1, is_complete=is_complete) if request.user.is_authenticated(): dest = reverse('trade:cart') else: request.session['entry_point'] = ProfileEntryPoint.Trade return JsonResponse({'goto_url': reverse('members:create_account')}) # dest_wizard = True # dest = reverse('trade:login') template = 'trade/check_upc.html' form = CheckUPCForm() else: template = 'trade/add.dialog.html' dest = None else: template = 'trade/add.dialog.html' dest = None ctx = { 'form': form, 'item': item, 'dest': dest, 'dest_wizard': dest_wizard, } res = {} res['form'] = loader.render_to_string(template, ctx, RequestContext(request)) return JsonResponse(res) form = AddItemCompletenessForm() return render_to_response('trade/add.dialog.html', {'form': form, 'item': item, }, context_instance=RequestContext(request))