Example #1
0
def customerModify(params):
	""" Modify customer's record """

	try:
		srv = zones.write_zone(params['id'])
		if not srv['local']:
			return jsonrpc.result({ 'status':'redirect', 'server': srv['server'] })

		if len(params) == 1:
			return jsonrpc.result({ 'status':'ok' })

		if 'state' in params:
			v = customers.constants.import_state(params['state'])
			if v == None or v == customers.constants.STATE_DELETED:
				return jsonrpc.result_error('InvalidRequest', {'status':'error',
				'message':'Wrong state: ' + str(params['state'])})
			params['state'] = v

		if 'wallet_mode' in params:
			v = customers.constants.import_wallet_mode(params['wallet_mode'])
			if v == None:
				return jsonrpc.result_error('InvalidRequest', {'status':'error',
				'message':'Wrong wallet_mode: ' + str(params['wallet_mode'])})
			params['wallet_mode'] = v

		customers.modify('id', params['id'], params)

	except Exception, e:
		LOG.error(e)
		return jsonrpc.result_error('ServerError',
			{ 'status': 'error', 'message': 'Unable to modify customer' })
Example #2
0
def rateAdd(params):
    """ Adds new rate """

    try:
        srv = zones.write_zone(params["tariff_id"])
        if not srv["local"]:
            return jsonrpc.result({"status": "redirect", "server": srv["server"]})

        if "currency" in params:
            v = rates.constants.import_currency(params["currency"])
            w = rates.constants.import_state(params["state"])
            if v == None:
                return jsonrpc.result_error(
                    "InvalidRequest", {"status": "error", "message": "Wrong currency: " + str(params["currency"])}
                )
            if w == None:
                return jsonrpc.result_error(
                    "InvalidRequest", {"status": "error", "message": "Wrong state: " + str(params["state"])}
                )
            params["currency"] = v
            params["state"] = w

        o = rates.Rate(params)
        rates.add(o)

    except Exception, e:
        LOG.error(e)
        return jsonrpc.result_error("ServerError", {"status": "error", "message": "Unable to add new rate"})
Example #3
0
def rateModify(params):
    """ Modify rate """

    try:
        srv = zones.write_zone(params["tariff_id"])
        if not srv["local"]:
            return jsonrpc.result({"status": "redirect", "server": srv["server"]})

        if len(params) <= 2:
            return jsonrpc.result_error("InvalidRequest", {"status": "error", "message": "More arguments required"})

        if "currency" in params:
            v = rates.constants.import_currency(params["currency"])
            if v == None:
                return jsonrpc.result_error(
                    "InvalidRequest", {"status": "error", "message": "Wrong currency: " + str(params["currency"])}
                )
            params["currency"] = v

        tid, mid = params["tariff_id"], params["metric_id"]
        del params["tariff_id"], params["metric_id"]

        rates.modify(tid, mid, params)

    except Exception, e:
        LOG.error(e)
        return jsonrpc.result_error("ServerError", {"status": "error", "message": "Unable to modify rate"})
Example #4
0
def rateRemove(params):
    try:
        srv = zones.write_zone(params["tariff_id"])
        if not srv["local"]:
            return jsonrpc.result({"status": "redirect", "server": srv["server"]})

        rates.remove(params["tariff_id"], params["metric_id"])

    except Exception, e:
        LOG.error(e)
        return jsonrpc.result_error("ServerError", {"status": "error", "message": "Unable to remove rate"})
Example #5
0
def tariffRemove(params):
	try:
		srv = zones.write_zone(params['id'])
		if not srv['local']:
			return jsonrpc.result({ 'status':'redirect', 'server': srv['server'] })

		tariffs.remove('id', params['id'])

	except Exception, e:
		LOG.error(e)
		return jsonrpc.result_error('ServerError',
			{ 'status': 'error', 'message': 'Unable to remove tariff' })
Example #6
0
def tariffAdd(params):
	try:
		srv = zones.write_zone(params['id'])
		if not srv['local']:
			return jsonrpc.result({ 'status':'redirect', 'server': srv['server'] })

		c = tariffs.Tariff(params)
		tariffs.add(c)

	except Exception, e:
		LOG.error(e)
		return jsonrpc.result_error('ServerError',
			{ 'status': 'error', 'message': 'Unable to add new tariff' })
Example #7
0
def rateGet(params):
    try:
        ret = rates.get_by_metric(params["tariff_id"], params["metric_id"])
        if not ret:
            srv = zones.write_zone(params["tariff_id"])
            if not srv["local"]:
                return jsonrpc.result({"status": "redirect", "server": srv["server"]})

            return jsonrpc.result_error("InvalidRequest", {"status": "error", "message": "Rate not found"})

    except Exception, e:
        LOG.error(e)
        return jsonrpc.result_error("ServerError", {"status": "error", "message": "Unable to obtain rate list"})
Example #8
0
def customerRemove(params):
	""" Remove customer by name """

	try:
		srv = zones.write_zone(params['id'])
		if not srv['local']:
			return jsonrpc.result({ 'status':'redirect', 'server': srv['server'] })

		c = customers.remove('id', params['id'])

	except Exception, e:
		LOG.error(e)
		return jsonrpc.result_error('ServerError',
			{ 'status': 'error', 'message': 'Unable to remove customer' })
Example #9
0
def tariffModify(params):
	try:
		srv = zones.write_zone(params['id'])
		if not srv['local']:
			return jsonrpc.result({ 'status':'redirect', 'server': srv['server'] })

		if len(params) == 1:
			return jsonrpc.result({ 'status':'ok' })

		if 'state' in params:
			v = tariffs.constants.import_state(params['state'])
			if v == None or v == tariffs.constants.STATE_DELETED:
				return jsonrpc.result_error('InvalidRequest',
					{ 'status':'error',
						'message':'Wrong state: ' + str(params['state'])})
			params['state'] = v

		tariffs.modify('id', params['id'], params)

	except Exception, e:
		LOG.error(e)
		return jsonrpc.result_error('ServerError',
			{ 'status': 'error', 'message': 'Unable to modify tariff' })
Example #10
0
def customerDeposit(params):
	""" Make deposit to customer """

	try:
		srv = zones.write_zone(params['id'])
		if not srv['local']:
			return jsonrpc.result({ 'status':'redirect', 'server': srv['server'] })

		if params['value'] != 0:
			customers.deposit(params['id'], params['value'])

	except Exception, e:
		LOG.error(e)
		return jsonrpc.result_error('ServerError',
			{ 'status': 'error', 'message': 'Unable to make a deposit' })
Example #11
0
def tariffGet(params):
	try:
		ret = tariffs.get(params['id'])

		if not ret:
			srv = zones.write_zone(params['id'])
			if not srv['local']:
				return jsonrpc.result({ 'status':'redirect', 'server': srv['server'] })

			return jsonrpc.result_error('InvalidRequest',
				{ 'status': 'error', 'message': 'Tariff not found' })
	except Exception, e:
		LOG.error(e)
		return jsonrpc.result_error('ServerError',
			{ 'status': 'error', 'message': 'Unable to obtain tariff' })
Example #12
0
def customerAdd(params):
	""" Adds new customer account """

	try:
		srv = zones.write_zone(params['id'])
		if not srv['local']:
			return jsonrpc.result({ 'status':'redirect', 'server': srv['server'] })

		wallet_mode = customers.constants.import_wallet_mode(params['wallet_mode'])

		if wallet_mode == None:
			return jsonrpc.result_error('InvalidRequest', {'status':'error',
				'message':'Wrong wallet_mode: ' + str(params['wallet_mode'])})

		params['wallet_mode'] = wallet_mode

		c = customers.Customer(params)
		customers.add(c)

	except Exception, e:
		LOG.error(e)
		return jsonrpc.result_error('ServerError',
			{ 'status': 'error', 'message': 'Unable to add new customer' })
Example #13
0
				'time_create':  request['time-create'],
				'time_check':   request['time-create'],
				'time_destroy': request['time-destroy'],

				'target_user':  request['user'],
				'target_uuid':  request['uuid'],
				'target_descr': request['descr'],
			})
		tasks.add(t)

	except Exception, e:
		LOG.exception("Unable to add new task: %s", e)
		return jsonrpc.result_error('ServerError',
			{ 'status': 'error', 'message': 'Unable to add new task' })

	return jsonrpc.result({'status':'ok', 'id':t.base_id})


@jsonrpc.method(
	validate = V({
		'id':    V(basestring, min=36, max=36),
		'value': V(int),
		'user':  V(basestring, min=1,  max=64),
		'uuid':  V(basestring, min=36, max=36),
		'descr': V(basestring),
		'time':  V(int, default=0),
	}),
	auth = True)
def taskModify(request):
	try:
		tasks.update(request['id'],
Example #14
0
from bc import zones

LOG = log.logger("wapi.tariffs")


@jsonrpc.method(validate=False, auth=True)
def tariffList(params):
	try:
		ret = map(lambda c: c.values, tariffs.get_all())

	except Exception, e:
		LOG.error(e)
		return jsonrpc.result_error('ServerError',
			{ 'status': 'error', 'message': 'Unable to obtain tariff list' })

	return jsonrpc.result({ 'status':'ok', 'tariffs': ret })


@jsonrpc.method(
	validate = V({ 'id': V(basestring, min=36, max=36) }),
	auth = True)
def tariffGet(params):
	try:
		ret = tariffs.get(params['id'])

		if not ret:
			srv = zones.write_zone(params['id'])
			if not srv['local']:
				return jsonrpc.result({ 'status':'redirect', 'server': srv['server'] })

			return jsonrpc.result_error('InvalidRequest',
Example #15
0
def test(params):
	return jsonrpc.result({'status':'ok'})
Example #16
0
LOG = log.logger("wapi.metrics")

@jsonrpc.method(validate = False, auth = True)
def metricList(request):
	""" Returns a list of all registered metrics """

	try:
		ret = map(lambda m: m.values, metrics.get_all())

	except Exception, e:
		LOG.error(e)
		return jsonrpc.result_error('ServerError',
			{ 'status': 'error', 'message': 'Unable to obtain metric list' })

	return jsonrpc.result({ 'status': 'ok', 'metrics': ret })


@jsonrpc.method(
	validate = V({
		'id':         V(basestring, min=1, max=128),
		'type':       V(basestring, min=1, max=32),
		'formula':    V(basestring, min=1, max=32),
		'aggregate':  V(int),
	}),
	auth = True)
def metricAdd(request):
	""" Adds new billing metric """

	try:
		m = metrics.Metric(request)
Example #17
0
@jsonrpc.method(
	validate = V({
		'table':  V(basestring, min=3, max=36),
		'record': V(dict),
	}),
	auth = True)
def sync(params):
	try:
		bc_sync.record(params['table'], params['record'])

	except Exception, e:
		LOG.error(e)
		return jsonrpc.result_error('ServerError',
			{ 'status': 'error', 'message': 'Unable to sync object' })

	return jsonrpc.result({ 'status':'ok' })


@jsonrpc.method(
	validate = V({
		'table': V(basestring, min=3, max=36),
		'list':  V(list),
	}),
	auth = True)
def syncList(params):
	try:
		for r in params['list']:
			bc_sync.record(params['table'], r)

	except Exception, e:
		LOG.error(e)
Example #18
0

@jsonrpc.method(validate=V({"tariff_id": V(basestring, required=False, min=36, max=36)}, drop_optional=True), auth=True)
def rateList(params):
    try:
        if len(params) == 0:
            ret = map(lambda c: c.values, rates.get_all())

        elif len(params) == 1:
            ret = map(lambda c: c.values, rates.get_by_tariff(params["tariff_id"]))

    except Exception, e:
        LOG.error(e)
        return jsonrpc.result_error("ServerError", {"status": "error", "message": "Unable to obtain rate list"})

    return jsonrpc.result({"status": "ok", "rates": ret})


@jsonrpc.method(
    validate=V(
        {
            "metric_id": V(basestring, required=True, min=1, max=128),
            "tariff_id": V(basestring, required=True, min=36, max=36),
        }
    ),
    auth=True,
)
def rateGet(params):
    try:
        ret = rates.get_by_metric(params["tariff_id"], params["metric_id"])
        if not ret:
Example #19
0
LOG = log.logger("wapi.customers")


@jsonrpc.method(validate = False, auth = True)
def customerList(request):
	""" Returns a list of all registered customers """

	try:
		ret = map(lambda c: c.values, customers.get_all())

	except Exception, e:
		LOG.error(e)
		return jsonrpc.result_error('ServerError',
			{ 'status': 'error', 'message': 'Unable to obtain customer list' })

	return jsonrpc.result({ 'status':'ok', 'customers': ret })


@jsonrpc.method(
	validate = V({ 'id': V(basestring, min=36, max=36) }),
	auth = True)
def customerGet(params):
	try:
		ret = customers.get(params['id'], 'id')

		if not ret:
			srv = zones.write_zone(params['id'])
			if not srv['local']:
				return jsonrpc.result({ 'status':'redirect', 'server': srv['server'] })

			return jsonrpc.result_error('InvalidRequest',