def item_create(request, task_id): task = get_task(task_id) workflow = WorkFlow.get(task.workflow_id) form = ExecWFItemForm() item_t = task.get_item() item = workflow.get_item() new_item = True form_url = '/couchflow/save_new_item/%s/' % task._id context = { 'workflow': workflow, 'task': task, 'item': item, 'form': form, 'new_item': new_item, 'form_url': form_url, 'is_popup': True, } if task.html_tpl: context["html_tpl"] = parse_wysiwyg_fields(task) return render_to_response('couchflow/item_form.html', context, context_instance=RequestContext(request))
def put(self, task_id): task_id = int(task_id) json_data = json.loads(self.request.body) was_positive = json_data.get("goodJob") task_event = models.update_task_event_feedback(task_id, was_positive) if task_event: task = models.get_task(task_id) obj = jsons.get_task_json(task) update_json = {} update_json['eventType'] = 'taskFeedback' update_json['taskId'] = task_id update_json['positive'] = task_event.positive_feedback update_json['negative'] = task_event.negative_feedback member = models.get_member_key().get() update_json['doneBy'] = member.first_name + " " + member.last_name #if member.avatar: #update_json['avatar'] = member.avatar json_data = json.dumps(obj) update_data = json.dumps(update_json) publisher.update_clients(models.get_members_list(), update_data) self.response.out.write(json_data)
def item_create(request, task_id): task = get_task(task_id) workflow = WorkFlow.get(task.workflow_id) form = ExecWFItemForm() item_t = task.get_item() item = workflow.get_item() new_item = True form_url = '/couchflow/save_new_item/%s/' % task._id context = {'workflow': workflow, 'task': task, 'item': item, 'form': form, 'new_item': new_item, 'form_url': form_url, 'is_popup': True, } if task.html_tpl: context["html_tpl"] = parse_wysiwyg_fields(task) return render_to_response('couchflow/item_form.html', context, context_instance=RequestContext(request) )
def back_top(request, task_id): task = get_task(task_id) if not task: return HttpResponseRedirect('/') task_tree = task.back_to_top() data = [] for i in task_tree: data.append(i.to_json()) return HttpResponse(data, mimetype='application/json')
def get(self, task_id=None): if task_id is None: tasks_list = models.get_household_tasks() task_list_json = jsons.get_all_tasks_json(tasks_list) json_data = json.dumps(task_list_json) self.response.out.write(json_data) else: task = models.get_task(int(task_id)) task_json = jsons.get_task_json(task) json_data = json.dumps(task_json) self.response.out.write(json_data)
def get_items(request, task_id): return_dict = {'status': 'Error'} task = get_task(task_id) if task.doc_type == "FilterWFItems": start = int(request.POST['iDisplayStart']) end = int(request.POST['iDisplayLength']) secho = int(request.POST['sEcho']) + 1 #sort_col = int(request.POST['iSortCol_0']) #sort_dir = request.POST['sSortDir_0'] limit = end - start orig_items = WFItem.view("couchflow/item_names", include_docs=True) orig_item = orig_items[task.item_type] orig_item = orig_item.one() opts = {'include_docs': True} if start: opts['skip'] = start if limit: opts['limit'] = limit filter_items = WFItem.view('couchflow/filter_items', **opts) val = task.item_fields['99989'] items_query = filter_items[val] count = WFItem.view('couchflow/filter_items') count = count[val] count = len(count) query_list = [] for i in items_query: for orig_value in orig_item.fields_properties: if orig_value not in i.fields_properties: i.fields_properties[orig_value] = \ orig_item.fields_properties[orig_value] i.save() blits = [field.first['exec_value'][0] \ for field in i.fields_properties.values()] blits.insert(0, i._id) query_list.append(blits) return_dict = { "sEcho": secho, "iTotalRecords": count, "iTotalDisplayRecords": count, "aaData": query_list, } return HttpResponse(simplejson.dumps(return_dict),\ mimetype='application/javascript')
def get_items(request, task_id): return_dict = {'status': 'Error'} task = get_task(task_id) if task.doc_type == "FilterWFItems": start = int(request.POST['iDisplayStart']) end = int(request.POST['iDisplayLength']) secho = int(request.POST['sEcho'])+1 #sort_col = int(request.POST['iSortCol_0']) #sort_dir = request.POST['sSortDir_0'] limit = end - start orig_items = WFItem.view("couchflow/item_names", include_docs=True) orig_item = orig_items[task.item_type] orig_item = orig_item.one() opts = {'include_docs': True} if start: opts['skip'] = start if limit: opts['limit'] = limit filter_items = WFItem.view('couchflow/filter_items',**opts) val = task.item_fields['99989'] items_query = filter_items[val] count = WFItem.view('couchflow/filter_items') count = count[val] count = len(count) query_list = [] for i in items_query: for orig_value in orig_item.fields_properties: if orig_value not in i.fields_properties: i.fields_properties[orig_value] = \ orig_item.fields_properties[orig_value] i.save() blits = [field.first['exec_value'][0] \ for field in i.fields_properties.values()] blits.insert(0, i._id) query_list.append(blits) return_dict = {"sEcho": secho, "iTotalRecords": count, "iTotalDisplayRecords": count, "aaData": query_list,} return HttpResponse(simplejson.dumps(return_dict),\ mimetype='application/javascript')
def execute_task(request, task_id): task = get_task(task_id) html_file = 'couchflow/task.html' if not task or not task.active: return HttpResponseRedirect('/') if task.doc_type == "DecisionTask": form = ExecDecisionForm(instance=task) elif task.doc_type == "DynamicDataTask": form = ExecDynamicForm(instance=task) form.add_dynamic_fields(task) elif task.doc_type == "WFItemsLoader": form = ExecWFItemsLoader(instance=task) html_file = 'couchflow/items_loader.html' elif task.doc_type == "FilterWFItems": form = FilterWFItemsForm(instance=task) html_file = 'couchflow/filter_items.html' filter_url = "/couchflow/get_items/%s/" % task._id elif task.doc_type == "MarcImport": form = ExecMarcImportForm(instance=task) html_file = 'couchflow/marcimport_form.html' form_url = "/couchflow/save_task/%s/%s/" form_url = form_url % (task.doc_type, task._id) workflow = WorkFlow.get(task.workflow_id) item = task.get_item() context = {'workflow': workflow, 'task': task, 'form': form, 'form_url': form_url, 'item': item, } if task.html_tpl: context["html_tpl"] = parse_wysiwyg_fields(task) #import IPython #embedshell = IPython.Shell.IPShellEmbed(argv=[]) #embedshell() if task.doc_type == 'FilterWFItems': context['filter_url'] = filter_url return render_to_response(html_file, context, context_instance=RequestContext(request) )
def execute_task(request, task_id): task = get_task(task_id) html_file = 'couchflow/task.html' if not task or not task.active: return HttpResponseRedirect('/') if task.doc_type == "DecisionTask": form = ExecDecisionForm(instance=task) elif task.doc_type == "DynamicDataTask": form = ExecDynamicForm(instance=task) form.add_dynamic_fields(task) elif task.doc_type == "WFItemsLoader": form = ExecWFItemsLoader(instance=task) html_file = 'couchflow/items_loader.html' elif task.doc_type == "FilterWFItems": form = FilterWFItemsForm(instance=task) html_file = 'couchflow/filter_items.html' filter_url = "/couchflow/get_items/%s/" % task._id elif task.doc_type == "MarcImport": form = ExecMarcImportForm(instance=task) html_file = 'couchflow/marcimport_form.html' form_url = "/couchflow/save_task/%s/%s/" form_url = form_url % (task.doc_type, task._id) workflow = WorkFlow.get(task.workflow_id) item = task.get_item() context = { 'workflow': workflow, 'task': task, 'form': form, 'form_url': form_url, 'item': item, } if task.html_tpl: context["html_tpl"] = parse_wysiwyg_fields(task) #import IPython #embedshell = IPython.Shell.IPShellEmbed(argv=[]) #embedshell() if task.doc_type == 'FilterWFItems': context['filter_url'] = filter_url return render_to_response(html_file, context, context_instance=RequestContext(request))
def bulk_tasks(request): if 'aceptar' not in request.POST and \ 'rechazar' not in request.POST: return HttpResponseRedirect("/") if 'aceptar' in request.POST: confirmation = True else: confirmation = False for i in request.POST: if i[:5] == 'task_': task_id = i.split('_')[1] task = get_task(task_id) if task.doc_type == 'DecisionTask': task.confirmation = confirmation task.save() task.active_conector() return HttpResponseRedirect("/")
def del_item(request, item_id, task_id): response_dict = {} item = WFItem.get(item_id) task = get_task(task_id) if item and task: if item_id in task.wfitems_ids: task.wfitems_ids.remove(item_id) item.delete() task.save() response_dict['response'] = True response_dict['status'] = "Item borrado correctamente" else: response_dict['response'] = False response_dict['status'] = "El item no existe en la tarea" return HttpResponse(simplejson.dumps(response_dict),\ mimetype='application/javascript') response_dict['response'] = False response_dict['status'] = "El item o la tarea no existen" return HttpResponse(simplejson.dumps(response_dict),\ mimetype='application/javascript')
def import_mrc(request, task_id): task = get_task(task_id) if task.doc_type != 'MarcImport': return HttpResponse('False') item = task.get_item() file_var = request.FILES['userfile'] for rec in pymarc.MARCReader(file_var): for field in rec.get_fields(): field_id = field.tag subfields = {} exec_value = None if hasattr(field, 'subfields'): # iter over pairs of subfields list for sf_name, sf_value in zip(*[iter(field.subfields)]*2): # only import subfields in field try: print field_id, field_id in item.fields_properties ifield = item.fields_properties[field_id].first print sf_name, sf_name in ifield['subfields'] # TODO: wtf? ifield['subfields'][sf_name] # TODO: better error handling except Exception, error: print "EE", error continue ifield['subfields'][sf_name]['exec_value'] = [sf_value] else: exec_value = field.format_field() if field_id in item.fields_properties and \ 'write' == task.item_fields.get(field_id): ifield = item.fields_properties[field_id].first if exec_value: ifield['exec_value'] = [exec_value] if getattr(field, 'indicators', None): ifield.indicator1, ifield.indicator2 = field.indicators
def import_mrc(request, task_id): task = get_task(task_id) if task.doc_type != 'MarcImport': return HttpResponse('False') item = task.get_item() file_var = request.FILES['userfile'] for rec in pymarc.MARCReader(file_var): for field in rec.get_fields(): field_id = field.tag subfields = {} exec_value = None if hasattr(field, 'subfields'): # iter over pairs of subfields list for sf_name, sf_value in zip(*[iter(field.subfields)] * 2): # only import subfields in field try: print field_id, field_id in item.fields_properties ifield = item.fields_properties[field_id].first print sf_name, sf_name in ifield['subfields'] # TODO: wtf? ifield['subfields'][sf_name] # TODO: better error handling except Exception, error: print "EE", error continue ifield['subfields'][sf_name]['exec_value'] = [sf_value] else: exec_value = field.format_field() if field_id in item.fields_properties and \ 'write' == task.item_fields.get(field_id): ifield = item.fields_properties[field_id].first if exec_value: ifield['exec_value'] = [exec_value] if getattr(field, 'indicators', None): ifield.indicator1, ifield.indicator2 = field.indicators
def post(self, task_id): task_id = int(task_id) new_task_event = models.add_task_event(task_id).get() task = models.get_task(task_id) obj = jsons.get_task_json(task) update_json = {} update_json['eventType'] = 'taskEvent' update_json['taskId'] = task_id update_json[strings.assignedInitials] = task.get_delagated_initials() update_json[strings.completedByInitials] = new_task_event.completed_by.get().get_initials() member = models.get_member_key().get() update_json['doneBy'] = member.first_name + " " + member.last_name #if member.avatar: #update_json['avatar'] = member.avatar json_data = json.dumps(obj) update_data = json.dumps(update_json) publisher.update_clients(models.get_members_list(), update_data) self.response.out.write(json_data)
def item_created_edit(request, task_id, item_id): task = get_task(task_id) task.wfitems_ids = [item_id] item = task.get_item() form = ExecWFItemForm() form_url = '/couchflow/edit_new_item/%s/%s/' % (task._id, item_id) context = { 'task': task, 'item': item, 'form': form, 'form_url': form_url, 'is_popup': True, } if task.html_tpl: context["html_tpl"] = parse_wysiwyg_fields(task) return render_to_response('couchflow/item_form.html', context, context_instance=RequestContext(request))
def save_new_item(request, task_id, edit_item_id=None): # if edit_item_id is provided, edit it response_dict = {} if request.method == 'POST': task = get_task(task_id) workflow = WorkFlow.get(task.workflow_id) if edit_item_id: item = WFItem.get(edit_item_id) else: item = task.get_item() item_validation_errors = item.check_form(request.POST, task) for err in item_validation_errors: if err[1] == "int": err[1] = "Numero" if item_validation_errors: response_dict = {} response_dict['response'] = False status = "No se puede crear el item, campos mal cargados" response_dict['status'] = status response_dict['errors'] = item_validation_errors return HttpResponse(simplejson.dumps(response_dict),\ mimetype='application/javascript') # TODO: set uid by hand # Clone the item if not edit_item_id: item = item.really_clone(save=True) item.is_clone = True # set no the item the order number to can keep track of an order order_nbr = task.order_nbr if not order_nbr: order_nbr = task.order_nbr = get_nro_pedido() item.order_nbr = order_nbr images = save_task_item(request, item, task) item.save() #response_dict['item_name'] = item.name + ": " + get_item_name(item) response_dict['item_name'] = get_item_name(item) save_images(item, images) if not edit_item_id: task.wfitems_ids.append(item._id) task.save() response_dict['response'] = True response_dict['status'] = "Bien" response_dict['item_id'] = item._id return HttpResponse(simplejson.dumps(response_dict),\ mimetype='application/javascript') response_dict['response'] = False response_dict['status'] = "Mal" return HttpResponse(simplejson.dumps(response_dict),\ mimetype='application/javascript')