Example #1
0
 def __call__(self, request):
     if request.method != 'POST':
         return json_success({
             "available_methods": sorted(
                 map(lambda m: m.description, self._methods.itervalues()),
                 key=lambda m: m["name"]),
         })
     try:
         data = json.loads(request.body)
         method_name = data["method"]
         args = data["args"]
         kwargs = data["kwargs"]
         try:
             method = self._methods[method_name]
         except KeyError:
             raise NameError("Method {} not found!".format(method_name))
         ipaddr = get_ip(request)
         create_logger(method).info(
             "Calling with parameters {!r}{!r} from {!r}".format(tuple(args), kwargs, ipaddr))
         if method.auth:
             if "auth" in data:
                 username, password = data["auth"]
                 try:
                     user = User.objects.get(username=username)
                 except ObjectDoesNotExist:
                     return json_autherror("User {} does not exist!".format(username))
                 if not user.check_password(password):
                     return json_autherror("Wrong password for user {}!".format(username))
                 create_logger(method).info(
                     "Called by user {}/{}".format(user.id, user.username))
                 return json_success(method(user, *args, **kwargs))
             else:
                 return json_autherror("Method {} needs authentication!".format(method_name))
         else:
             return json_success(method(*args, **kwargs))
     except Exception as e:
         create_logger(method).error(
             "Exception raised during call: {}: {}".format(type(e).__name__, str(e)))
         return json_exception(e)
     else:
         create_logger(method).info("Call finished")
Example #2
0
def logger():
    return create_logger("sprout_vm_actions")
Example #3
0
 def class_logger(cls, id=None):
     return create_logger(cls, id)
Example #4
0
 def logger(self):
     return create_logger(self)
Example #5
0
 def logger(self):
     return create_logger(self)
Example #6
0
def logger():
    return create_logger("sprout_vm_actions")
Example #7
0
def provider_error_logger():
    return create_logger("provider_errors")
Example #8
0
 def class_logger(cls, id=None):
     return create_logger(cls, id)