def GET(self, name): """ Get countries.""" logger.debug("Query: %s" % (web.input())) country_name = web.input().get('country_name') if country_name: results = Country.get_from_name(country_name) else: results = Country.get_all() if not results: raise Error(NORESULT) data = results_to_countries(results) return data
def get_all_payments(request): try: records = UserPayment.objects.all().order_by('-modification_date') except ObjectDoesNotExist: body = { 'status': 'error', 'message': 'No se puede consultar la lista de pagos recurrentes' } return HttpResponse(json.dumps(body), content_type='application/json', status=http_BAD_REQUEST) datatables = request.GET draw = int(datatables['draw']) length = int(datatables['length']) start = int(datatables['start']) search = datatables['search[value]'] records_total = records.count() records_filtered = records_total # Columns Dict columns_dic = { '3': 'user__country__name', '4': 'user__country__name', '5': 'user__country__name', '6': 'recurrence', '7': 'user__country__name', '8': 'status', } # Filter def filter_table(filter_col, column_index): filter_input = filter_col.replace('^', '').replace('$', '') filtered_records = records.filter( **{columns_dic[column_index]: filter_input}) if len(filter_input) == 51: date_filter = filter_input.split(',') # modification_date if column_index == '4': filtered_records = records.filter( modification_date__range=[date_filter[0], date_filter[1]]) # payment_date elif column_index == '5': filtered_records = records.filter(payment_date__range=[ date_filter[0][slice(10)], date_filter[1][slice(10)] ]) # expiration if column_index == '7': if filter_col == 'true': filtered_records = records.filter( user__expiration__gt=date.today()) elif filter_col == 'false': filtered_records = records.filter( user__expiration__lte=date.today()) return filtered_records # Find Filters for key, value in columns_dic.iteritems(): for param in datatables: if len(param) > 8 and param[8] == key: value = datatables['columns[' + key + '][search][value]'] if value: records = filter_table(value, key) records_total = records.count() records_filtered = records_total break # Order Dict order_dic = { '0': 'user_id', '1': 'amount', '2': 'currency__name', '3': 'user__country__name', '4': 'modification_date', '5': 'payment_date', '6': 'recurrence', '8': 'status', '9': 'retries', } # Order for param in datatables: if param[slice(5)] == 'order': column = datatables['order[0][column]'] direction = datatables['order[0][dir]'] if direction == 'desc': records = records.order_by('-' + order_dic[column]) elif direction == 'asc': records = records.order_by(order_dic[column]) break # Search if search: records = UserPayment.objects.filter( Q(user__user_id__icontains=search) | Q(amount__icontains=search) | Q(currency__name__icontains=search) | Q(user__country__name__icontains=search) | Q(recurrence__icontains=search) | Q(retries__icontains=search) | Q(message__icontains=search) | Q(payment_date__icontains=search) | Q(payday__icontains=search) | Q(message__icontains=search)) records_total = records.count() records_filtered = records_total # Paginator paginator = Paginator(records, length) page_number = start / length + 1 try: object_list = paginator.page(page_number).object_list except PageNotAnInteger: print 'PageNotAnInteger' object_list = paginator.page(1).object_list except EmptyPage: print 'EmptyPage' object_list = paginator.page(1).object_list countries = Country.get_all() data = [] for payment in object_list: up_data = payment.user_payment_id.split("_") user_id = "%s_%s_%s" % (up_data[1], up_data[2], up_data[3]) ret = {} ret['amount'] = payment.amount ret['channel'] = payment.channel ret['country'] = countries[up_data[1]]["name"] ret['creation_date'] = payment.creation_date ret['currency'] = countries[up_data[1]]["currency"] ret['disc_counter'] = payment.disc_counter ret['disc_pct'] = payment.disc_pct ret['enabled'] = payment.enabled ret['message'] = payment.message ret['is_active'] = payment.user.is_active ret['modification_date'] = payment.modification_date ret['payday'] = payment.payday ret['payment_date'] = payment.payment_date ret['recurrence'] = payment.recurrence ret['retries'] = payment.retries ret['status'] = payment.status ret['user_payment_id'] = payment.user_payment_id ret['user'] = user_id data.append(ret) body = { 'data': data, 'draw': draw, 'recordsFiltered': records_filtered, 'recordsTotal': records_total, } return HttpResponse(json.dumps(body, cls=DjangoJSONEncoder), content_type='application/json', status=http_REQUEST_OK)