From c1e241577cf5808c87a4de86013db3fb110a4e76 Mon Sep 17 00:00:00 2001
From: Patrick Michaud <vegitron@gmail.com>
Date: Fri, 18 Oct 2013 17:26:10 -0700
Subject: [PATCH] Allow generic django_management commands

This commit removes the restriction on django management commands.  If a command is unknown to the django installation, there will be a concise error produced.

for example:

  tasks:
    - name: invalid command
      django_manage: virtualenv="/valid/virtualenv" app_path="/valid/app_path" command="nowaydude"

Results in:

failed: [hostname] => {"cmd": "python manage.py nowaydude", "failed": true}
msg: stdout: Unknown command: 'nowaydude'
Type 'manage.py help' for usage.

:stderr: Unknown django command: nowaydude
---
 library/web_infrastructure/django_manage | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/library/web_infrastructure/django_manage b/library/web_infrastructure/django_manage
index ec28845d92d..fd610fb9cba 100644
--- a/library/web_infrastructure/django_manage
+++ b/library/web_infrastructure/django_manage
@@ -192,7 +192,7 @@ def main():
 
     module = AnsibleModule(
         argument_spec=dict(
-            command     = dict(default=None, required=True, choices=command_allowed_param_map.keys()),
+            command     = dict(default=None, required=True),
             app_path    = dict(default=None, required=True),
             settings    = dict(default=None, required=False),
             pythonpath  = dict(default=None, required=False, aliases=['python_path']),
@@ -254,6 +254,8 @@ def main():
         if command == 'createcachetable' and 'table' in err and 'already exists' in err:
             out = 'Already exists.'
         else:
+            if "Unknown command:" in err:
+                _fail(module, cmd, err, "Unknown django command: %s" % command)
             _fail(module, cmd, out, err, path=os.environ["PATH"], syspath=sys.path)
 
     changed = False