euscanwww: Admin improved and simple task launcher added
Signed-off-by: volpino <fox91@anche.no>
This commit is contained in:
		@@ -0,0 +1,77 @@
 | 
			
		||||
{% extends "admin/change_list.html" %}
 | 
			
		||||
 | 
			
		||||
{% load url from future %}
 | 
			
		||||
 | 
			
		||||
{% block object-tools %}
 | 
			
		||||
  <div>
 | 
			
		||||
    <span id="task_selector"></span>
 | 
			
		||||
    <form id="task_data"></form>
 | 
			
		||||
    <a href="#" id="task_launch">Launch task</a>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  <script type="text/javascript">
 | 
			
		||||
    (function($){
 | 
			
		||||
      $(document).ready(function() {
 | 
			
		||||
 | 
			
		||||
        $.get("{% url "registered_tasks" %}", function (data) {
 | 
			
		||||
          var selector = $("<select/>");
 | 
			
		||||
          selector.append(
 | 
			
		||||
            $("<option/>").text("-------------").attr("selected", "selected")
 | 
			
		||||
          );
 | 
			
		||||
          for (task in data["tasks"]) {
 | 
			
		||||
            var t = data["tasks"][task];
 | 
			
		||||
            selector.append(
 | 
			
		||||
              $("<option/>").val(task).text(task)
 | 
			
		||||
            )
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          selector.change(function() {
 | 
			
		||||
            $("#task_data").empty();
 | 
			
		||||
            var task = data["tasks"][$(this).val()];
 | 
			
		||||
            if (task.args) {
 | 
			
		||||
              for (var i = 0; i < task.args.length; i++) {
 | 
			
		||||
                var arg = task.args[i];
 | 
			
		||||
                var arg_input = $("<input/>").attr("name", arg);
 | 
			
		||||
                var default_arg;
 | 
			
		||||
 | 
			
		||||
                if (task.defaults) {
 | 
			
		||||
                  var default_arg_i = task.args.length - 1 - i;
 | 
			
		||||
                  if (task.defaults[default_arg_i] !== undefined) {
 | 
			
		||||
                    default_arg = task.defaults[default_arg_i];
 | 
			
		||||
                    if (task.defaults_types && task.defaults_types[default_arg_i] === "bool") {
 | 
			
		||||
                      arg_input.attr("type", "checkbox");
 | 
			
		||||
                    }
 | 
			
		||||
                    else {
 | 
			
		||||
                      continue
 | 
			
		||||
                    }
 | 
			
		||||
                  }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                arg_input.val(default_arg);
 | 
			
		||||
 | 
			
		||||
                $("#task_data").append(
 | 
			
		||||
                  $("<label/>").text(arg + ": ").attr("for", arg)
 | 
			
		||||
                ).append(
 | 
			
		||||
                  arg_input
 | 
			
		||||
                );
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          })
 | 
			
		||||
 | 
			
		||||
          $("#task_selector").append(selector);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        $("#task_launch").click(function() {
 | 
			
		||||
            var task_name = $("#task_selector").find("select").val();
 | 
			
		||||
            var data = $("#task_data").serialize();
 | 
			
		||||
            var url = "{% url "apply_task" "task_name" %}";
 | 
			
		||||
 | 
			
		||||
            $.post(url.replace("task_name", task_name), data, function() {
 | 
			
		||||
              location.reload();
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
      });
 | 
			
		||||
    })(django.jQuery);
 | 
			
		||||
  </script>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
		Reference in New Issue
	
	Block a user