def create(self, request): ready_data_true = {'success': True } ready_data_false = {'success': False} if not request.user.is_authenticated(): ready_data_false["error"] = "Authorization is failed" return ready_data_false currentProfile = Profile.getProfile( request.user) try: ext_posted_data = simplejson.loads(request.POST.get('items')) attrs = self.flatten_dict(ext_posted_data) req = check(request, id=None, attrs=attrs) if req == True: reason=[] item = self.model.objects.create(\ name = replace(attrs['name']), \ category_id = attrs['category_id'], \ unit_id = attrs['unit_id'], \ upc = replace(attrs['upc']), \ upc_2 = replace(attrs['upc_2']), \ upc_3 = replace(attrs['upc_3']), \ upc_case = replace(attrs['upc_case']), \ notes=replace(attrs['notes']), \ image_url=attrs['image_url'], \ qt_in_stock=0, \ qt_to_stock=0, \ min_qt_in_stock=2, \ enabled=True, \ sales_price=0, \ loc_stock = u'',\ loc_ret_dept = u'',\ loc_ret_col = u'',\ loc_ret_row = u'',\ inventory_no_count = False,\ so_ignore_no_sales = False,\ so_do_not_order = False,\ so_always_order = 0,\ user=currentProfile.parent_user) ready_data_true['items'] = item.list(item.id) return ready_data_true else: ready_data_false['errors'] = req return ready_data_false except Exception, err: logger.error(err) logger.error('REQUEST: %s' % str(request) ) ready_data_false['errors'] = err.message ready_data_false['name'] = replace(attrs['name']) return ready_data_false
def read(self, request, id=None): ready_data_true = {'success': True } ready_data_false = {'success': False} if not request.user.is_authenticated(): ready_data_false["error"] = "Authorization is failed" return ready_data_false try: currentProfile = Profile.getProfile( request.user) ready_data_false['id'] = id action = request.GET.get('action') if not id: id = request.GET.get('id') if id: req = check(request, id, attrs=None) if req == True: item = self.model.objects.select_related(depth=1).get(pk=id) ready_data_true['items'] = item.list() ready_data_true['total'] = 1 return ready_data_true else: ready_data_false['errors'] = req return ready_data_false if action == 'showQtToStockItems': items = Item.objects.filter(user=currentProfile.parent_user).exclude(qt_to_stock=None).exclude(qt_to_stock='0') data = [] i = 0 for item in items: data.append(item.list(i)) i = i + 1 ready_data_true['total'] = len(items) ready_data_true['items'] = data #ready_data_true['action'] = action return ready_data_true sort = [] if 'sort' in request.GET: sortAttrib = simplejson.loads(request.GET['sort']) for s in sortAttrib: if s['property'] == 'total_cost': s['property'] = 'total_cost' if s['property'] == 'category_name': s['property'] = 'category__name' if s['property'] == 'order_qt': s['property'] = 'order__qt' if s['direction'] == 'DESC': s['property'] = '-' + s['property'] sort.append(s['property']) else: sort.append('name') if 'start' in request.GET and 'limit' in request.GET: start = int(request.GET['start']) limit = start + int(request.GET['limit']) else: start = 0 limit = 25 if action == 'inventory': sort = [] sort.append('loc_ret_dept') items = Item.objects.filter(user=currentProfile.parent_user).exclude(temp_stock=None). \ extra(order_by = sort)[start:limit] data = [] for item in items: data.append(item.list()) ready_data_true['total'] = len(items) ready_data_true['items'] = data #ready_data_true['action'] = action return ready_data_true else: show_disabled = True if 'show_disabled' in request.GET: if request.GET['show_disabled'].lstrip().rstrip() == 'false': show_disabled = False if show_disabled == True: sort.append('-enabled') sq = Q() if 'search' in request.GET: search = request.GET['search'] words = search.split() sq = Q() if len(words) > 1: # search is multiple words sq_name = Q() sq_name1 = Q() sq_brand = Q() sq_notes = Q() sq_item_notes = Q() for word in words: # on Item sq_name = sq_name & Q(name__icontains=word) # on Item sq_name1 = sq_name1 & Q(orders__product__name1__icontains=word)# on Order sq_brand = sq_brand & Q(orders__product__brand__icontains=word)# on Order sq_notes = sq_notes & Q(orders__product__notes__icontains=word)# on Order sq_item_notes = sq_item_notes & Q(notes__icontains=word)# on Order sq = sq | sq_name | sq_name1 | sq_brand | sq_notes | sq_item_notes else: # search is a single word # on Item sq = sq | Q(upc__icontains=search) | Q(name__icontains=search) sq = sq | Q(upc_2__icontains=search) | Q(upc_3__icontains=search) | Q(upc_case__icontains=search) # on OrderProduct sq = sq | Q(orders__product__product_num__icontains=search) | Q(orders__product__name1__icontains=search) sq = sq | Q(orders__product__upc__icontains=search) | Q(orders__product__brand__icontains=search) sq = sq | Q(orders__product__notes__icontains=search) | Q(notes__icontains=search) if 'searchByDept' in request.GET: searchByDept = request.GET['searchByDept'] sq = sq & Q(loc_ret_dept=searchByDept) if 'searchByVendor' in request.GET: searchByVendor = request.GET['searchByVendor'] sq = sq & Q(orders__product__vendor=searchByVendor) if 'show_best' in request.GET: show_best = request.GET['show_best'] if show_best == 'true': sq = sq & Q(orders__best_priced=True) if show_disabled == True: if len(sq) == 0: # distinct is expensive, if no search let's avoid it items = Item.objects.filter(sq, user=currentProfile.parent_user).extra(order_by = sort)[start:limit] #exclude(enabled=False) count = Item.objects.filter(sq, user=currentProfile.parent_user).count() else: items = Item.objects.filter(sq, user=currentProfile.parent_user).distinct().extra(order_by = sort)[start:limit] #exclude(enabled=False) count = Item.objects.filter(sq, user=currentProfile.parent_user).distinct().count() else: if len(sq) == 0: # distinct is expensive, if no search let's avoid it items = Item.objects.filter(sq, user=currentProfile.parent_user, enabled=True).extra(order_by = sort)[start:limit] #exclude(enabled=False) count = Item.objects.filter(sq, user=currentProfile.parent_user, enabled=True).count() else: items = Item.objects.filter(sq, user=currentProfile.parent_user, enabled=True).distinct().extra(order_by = sort)[start:limit] #exclude(enabled=False) count = Item.objects.filter(sq, user=currentProfile.parent_user, enabled=True).distinct().count() data = [] i = 0 for item in items: data.append(item.list()) i = i + 1 #ready_data_true['len'] = len(items) #ready_data_true['sort'] = sort #ready_data_true['start'] = start #ready_data_true['limit'] = limit #ready_data_true['show_disabled'] = show_disabled #ready_data_true['sq'] = sq ready_data_true['total'] = count ready_data_true['items'] = data return ready_data_true except Exception, err: logger.error(str(err) + 'REQEST.QUERY_STRING: %s' % str(request.META['QUERY_STRING'])) ready_data_false['errors'] = err return ready_data_false