def show_model(request, instance_id, model): model_class_name = model.capitalize() init_actions() instance = get_object_or_404(get_class('glue.models.' + model_class_name), pk=instance_id) # the following could improve performance, but did not work once... maybe some kind # of cache issue. The taskactions where not found. #task_actions = TaskAction.objects.select_related().filter(task=t) filt = {str(model_class_name.lower()) : instance} model_actions = get_class('glue.models.' + model_class_name + 'Action').objects.filter(**filt) #print "task id %s: task_actions = %s" % (task_id, task_actions) actionsRequiringParameter = {} model_action_id_numbers_map = {} i = 0 for model_action in model_actions: model_action_id_numbers_map[model_action.id] = i i += 1 for model_action in model_actions: action = get_class(model_action.action.classname)(model_action) for param in action.get_required_parameters(): if not param in actionsRequiringParameter: actionsRequiringParameter[param] = [] actionsRequiringParameter[param].append(model_action.id); return render('glue/show_model.html', {'model': instance, 'model_class': model_class_name, 'model_actions': model_actions, 'actionsRequiringParameter': actionsRequiringParameter, 'model_action_id_numbers_map': model_action_id_numbers_map}, request)
def create_actions(model): """ Creates a TaskAction instance for all actions and relates it to the task. """ init_actions() nr = 0; for action in Action.objects.filter(model_name=modelType): if action.name != "Free action": print "Creating TaskAction for %s %s and action %s" % (modelType, model,action) nr += 1; filt = {'action': action, str(modelType) : model, 'nr' : nr} model_action_class = get_class('glue.models.' + modelType.capitalize() + 'Action') new_taskaction = model_action_class(**filt) new_taskaction.save()