コード例 #1
0
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))
コード例 #2
0
    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)
コード例 #3
0
ファイル: views.py プロジェクト: GaloC/gplib
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)
                                  )
コード例 #4
0
ファイル: views.py プロジェクト: GaloC/gplib
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')
コード例 #5
0
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')
コード例 #6
0
 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)
コード例 #7
0
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')
コード例 #8
0
ファイル: views.py プロジェクト: GaloC/gplib
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')
コード例 #9
0
ファイル: views.py プロジェクト: GaloC/gplib
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)
                                  )
コード例 #10
0
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))
コード例 #11
0
ファイル: views.py プロジェクト: GaloC/gplib
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("/")
コード例 #12
0
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("/")
コード例 #13
0
ファイル: views.py プロジェクト: GaloC/gplib
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')
コード例 #14
0
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')
コード例 #15
0
ファイル: views.py プロジェクト: GaloC/gplib
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
コード例 #16
0
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
コード例 #17
0
    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)
コード例 #18
0
ファイル: views.py プロジェクト: GaloC/gplib
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))
コード例 #19
0
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))
コード例 #20
0
ファイル: views.py プロジェクト: GaloC/gplib
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')
コード例 #21
0
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')