Editing tasks works, still needs refactoring & unittests

This commit is contained in:
2016-09-08 11:24:58 +02:00
parent dc43b7686a
commit 5543d75101
5 changed files with 71 additions and 9 deletions

View File

@@ -57,6 +57,11 @@ class AttractExtension(PillarExtension):
import os.path
return os.path.join(os.path.dirname(__file__), 'templates')
@property
def static_path(self):
import os.path
return os.path.join(os.path.dirname(__file__), 'static')
def setup_app(self, app):
"""Connects Blinker signals."""

View File

@@ -0,0 +1,29 @@
function save_task(task_id, task_url) {
console.log('Saving task to', task_url);
var $form = $('.task form');
var $button = $form.find("button[type='submit']");
var payload = $form.serialize();
$button.attr('disabled', true);
if (console) console.log('Sending:', payload);
$.post(task_url, payload)
.done(function(data) {
if (console) console.log('Done saving', data);
// Update the task list.
// NOTE: this is tightly linked to the HTML of the task list in for_project.jade.
$('#task-' + task_id).text($form.find("input[name='name']").val());
})
.fail(function(xhr_or_response_data) {
// jQuery sends the response data (if JSON), or an XHR object (if not JSON).
if (console) console.log('Failed saving', xhr_or_response_data);
})
.always(function() {
$button.attr('disabled', false);
})
;
return false; // prevent synchronous POST to current page.
}

View File

@@ -1,6 +1,6 @@
import logging
from flask import Blueprint, render_template
from flask import Blueprint, render_template, request
import flask
import flask_login
@@ -39,10 +39,28 @@ def for_project(project):
def view_embed_task(project, task_id):
api = pillar_api()
task = pillarsdk.Node.find(task_id, api=api)
node_type = project.get_node_type('attract.task')
return render_template('attract/tasks/view_task_embed.html',
task=task,
project=project)
project=project,
task_node_type=node_type)
@blueprint.route('/<project_url>/<task_id>', methods=['POST'])
@attract_project_view()
def save(project, task_id):
log.info('Saving task %s', task_id)
log.debug('Form data: %s', request.form)
api = pillar_api()
task = pillarsdk.Node.find(task_id, api=api)
task.name = request.form['name']
task.description = request.form['description']
task.properties.status = request.form['status']
task.update(api=api)
return flask.jsonify({'task_id': task_id, 'etag': task._etag})
@blueprint.route('/<project_url>/create')