From 0e38af6ecd3277cdf00f1d13631a2a32d220d80a Mon Sep 17 00:00:00 2001 From: Rafa de la Torre Date: Tue, 8 Nov 2016 18:47:22 +0100 Subject: [PATCH] Add cdb_remaining_quota to server #302 --- server/extension/sql/200_quotas.sql | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/server/extension/sql/200_quotas.sql b/server/extension/sql/200_quotas.sql index a2e627f..7c65869 100644 --- a/server/extension/sql/200_quotas.sql +++ b/server/extension/sql/200_quotas.sql @@ -13,3 +13,27 @@ RETURNS integer AS $$ else: raise 'not implemented' $$ LANGUAGE plpythonu; + + +CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_remaining_quota( + username TEXT, + orgname TEXT, + service TEXT) +RETURNS integer AS $$ + from datetime import date + from cartodb_services.metrics.user import UserMetricsService + + plpy.execute("SELECT cdb_dataservices_server._connect_to_redis('{0}')".format(username)) + redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection'] + + if service == 'isolines': + plpy.execute("SELECT cdb_dataservices_server._get_isolines_routing_config({0}, {1})".format(plpy.quote_nullable(username), plpy.quote_nullable(orgname))) + user_isolines_config = GD["user_isolines_routing_config_{0}".format(username)] + monthly_quota = user_isolines_config.isolines_quota + + user_service = UserMetricsService(user_isolines_config, redis_conn) + current_used = user_service.used_quota(user_isolines_config.service_type, date.today()) + return monthly_quota - current_used + else: + raise 'not implemented' +$$ LANGUAGE plpythonu;