示例#1
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')
示例#2
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')
示例#3
0
def item_delete(request):
    context = {}

    render = lambda: render_to_response('couchflow/item_delete.html',
                                        context,
                                        context_instance=RequestContext(request
                                                                        ))

    if not request.method == "POST":
        return render()

    nro_inv = request.POST.get("inventory_nbr", None)

    if not nro_inv:
        context["status"] = "Debe ingresar el numero de inventario"
        return render()

    item = WFItem.view('couchflow/by_inventory_nbr',
                       include_docs=True,
                       startkey=nro_inv,
                       endkey=nro_inv).first()

    if not item:
        context["status"] = "Ese item no existe"
        return render()

    # TODO: make it a list
    item.fields_properties['99989'].first['exec_value'] = ['eliminado']
    item.save()
    context["status"] = "Item dado de baja"

    return render()
示例#4
0
文件: views.py 项目: GaloC/gplib
def item_delete(request):
    context = {}

    render = lambda: render_to_response('couchflow/item_delete.html',
        context, context_instance=RequestContext(request))

    if not request.method == "POST":
        return render()

    nro_inv = request.POST.get("inventory_nbr", None)

    if not nro_inv:
        context["status"] = "Debe ingresar el numero de inventario"
        return render()

    item = WFItem.view('couchflow/by_inventory_nbr', include_docs=True,
        startkey=nro_inv, endkey=nro_inv).first()

    if not item:
        context["status"] = "Ese item no existe"
        return render()

    # TODO: make it a list
    item.fields_properties['99989'].first['exec_value'] = ['eliminado']
    item.save()
    context["status"] = "Item dado de baja"

    return render()
示例#5
0
文件: views.py 项目: GaloC/gplib
def search_references(request, task_id=None):
    items = [(item._id, item.name) for item in
        WFItem.view("couchflow/items", include_docs=True) if item.reference]

    context = {'items': items}

    if not task_id:
        tpl = 'couchflow/search_reference.html'
    else:
        task = Task.get(task_id)
        task_item = task.get_item()
        context['task_item'] = task_item.get_id
        if not task_item.is_clone:
            context['client_side_changes'] = True

        tpl = 'couchflow/search.html'

    return render_to_response(tpl, context,
            context_instance=RequestContext(request))
示例#6
0
def search_references(request, task_id=None):
    items = [(item._id, item.name)
             for item in WFItem.view("couchflow/items", include_docs=True)
             if item.reference]

    context = {'items': items}

    if not task_id:
        tpl = 'couchflow/search_reference.html'
    else:
        task = Task.get(task_id)
        task_item = task.get_item()
        context['task_item'] = task_item.get_id
        if not task_item.is_clone:
            context['client_side_changes'] = True

        tpl = 'couchflow/search.html'

    return render_to_response(tpl,
                              context,
                              context_instance=RequestContext(request))
示例#7
0
def save_task(request, task_type, task_id):
    try:
        if task_type == "DecisionTask":
            task = DecisionTask.get(task_id)
            form = DecisionTaskForm(request.POST)
        elif task_type == "DynamicDataTask":
            task = DynamicDataTask.get(task_id)
            form = ExecDynamicForm(request.POST)
        elif task_type == "WFItemsLoader":
            task = WFItemsLoader.get(task_id)
            form = ExecWFItemsLoader(request.POST)
        elif task_type == "FilterWFItems":
            task = FilterWFItems.get(task_id)
            form = ExecFilterWFItemsForm(request.POST)
        elif task_type == "MarcImport":
            task = MarcImport.get(task_id)
            form = ExecMarcImportForm(request.POST)
    except ResourceNotFound:
        return HttpResponseRedirect('/')

    workflow = WorkFlow.get(task.workflow_id)

    if 'cancelar' in request.POST and \
           task.doc_type != 'FilterWFItems':
        if task.node_type == 'start':
            workflow.remove_relations()
            workflow.delete()
        return HttpResponseRedirect('/')

    elif 'cancelar' in request.POST and \
             task.doc_type == 'FilterWFItems':
        response_dict = {}
        response_dict['response'] = False
        response_dict['url'] = '/'
        return HttpResponse(simplejson.dumps(response_dict),\
                            mimetype='application/javascript')

    item = task.get_item()
    response_dict = {}

    item_validation_errors = []
    if task_type not in ('WFItemsLoader', ):
        item_validation_errors = item.check_form(request.POST, task)

    if form.is_valid() and not item_validation_errors:
        user = request.user

        task.saved_by = user._id

        if item.is_clone:
            item.comments = form.cleaned_data['comments']
            item.save()

        if task.doc_type == "DecisionTask" or \
                task.doc_type == "DynamicDataTask":
            if item.is_clone:

                images = save_task_item(request, item, task)
                item.save()

                save_images(item, images)

                more_items = []
                if len(task.wfitems_ids) > 1:
                    more_items = [WFItem.get(x) for x in task.wfitems_ids]
                elif task.group_by_urn:
                    more_items = WFItem.view(
                        "couchflow/by_urn", include_docs=True)[item.urn].all()

                if more_items:
                    for new_item in more_items:
                        if new_item._id != item._id:
                            # TODO: don't replace all the properties
                            new_item.fields_properties = item.fields_properties

                            new_item.comments = item.comments
                            try:
                                new_item.save()
                            except ResourceConflict:
                                pass

        if task.doc_type == "DynamicDataTask":
            for field in task.extra_fields:
                field_data = request.POST.getlist(field)
                if field_data == "":
                    field_data = None
                task.extra_fields[field]['exec_value'] = field_data
            task.save()
            task.active_conector()
            try:
                task.save()
            except ResourceConflict:
                pass
        elif task.doc_type == "WFItemsLoader":
            task.save()
            task.active_conector()
        elif task.doc_type == "DecisionTask":
            if 'aceptar' in request.POST:
                task.confirmation = True
            else:
                task.confirmation = False
            task.save()
            task.active_conector()

        elif task.doc_type == "FilterWFItems":
            selected_items = request.POST.getlist('selected_items')
            task.wfitems_ids = selected_items
            task.save()
            task.active_conector()
            response_dict['response'] = True
            return HttpResponse(simplejson.dumps(response_dict),\
                                mimetype='application/javascript')
        elif task.doc_type == "MarcImport":
            task.active_conector()

        groups = user.groups
        new_tasks = workflow.get_active_tasks()

        url_redirect = '/'
        for task in new_tasks:
            if task.group_id in groups or user.is_superuser:
                url_redirect = '/couchflow/execute_task/%s' % task._id
                break

        return HttpResponseRedirect(url_redirect)

    if task.doc_type == 'FilterWFItems':
        response_dict['response'] = True
        response_dict['status'] = "Campos mal cargados"
        return HttpResponse(simplejson.dumps(response_dict),
                            mimetype='application/javascript')
    else:
        context = {
            'form': form,
            'task': task,
            'item_errors': item_validation_errors
        }
        return render_to_response('couchflow/save_task_error.html',
                                  context,
                                  context_instance=RequestContext(request))
示例#8
0
文件: views.py 项目: GaloC/gplib
def save_task(request, task_type, task_id):
    try:
        if task_type == "DecisionTask":
            task = DecisionTask.get(task_id)
            form = DecisionTaskForm(request.POST)
        elif task_type == "DynamicDataTask":
            task = DynamicDataTask.get(task_id)
            form = ExecDynamicForm(request.POST)
        elif task_type == "WFItemsLoader":
            task = WFItemsLoader.get(task_id)
            form = ExecWFItemsLoader(request.POST)
        elif task_type == "FilterWFItems":
            task = FilterWFItems.get(task_id)
            form = ExecFilterWFItemsForm(request.POST)
        elif task_type == "MarcImport":
            task = MarcImport.get(task_id)
            form = ExecMarcImportForm(request.POST)
    except ResourceNotFound:
        return  HttpResponseRedirect('/')

    workflow = WorkFlow.get(task.workflow_id)

    if 'cancelar' in request.POST and \
           task.doc_type != 'FilterWFItems':
        if task.node_type == 'start':
            workflow.remove_relations()
            workflow.delete()
        return HttpResponseRedirect('/')

    elif 'cancelar' in request.POST and \
             task.doc_type == 'FilterWFItems':
        response_dict = {}
        response_dict['response'] = False
        response_dict['url'] = '/'
        return HttpResponse(simplejson.dumps(response_dict),\
                            mimetype='application/javascript')

    item = task.get_item()
    response_dict = {}

    item_validation_errors = []
    if task_type not in ('WFItemsLoader',):
        item_validation_errors = item.check_form(request.POST, task)

    if form.is_valid() and not item_validation_errors:
        user = request.user

        task.saved_by = user._id

        if item.is_clone:
            item.comments = form.cleaned_data['comments']
            item.save()

        if task.doc_type == "DecisionTask" or \
                task.doc_type == "DynamicDataTask":
            if item.is_clone:

                images = save_task_item(request, item, task)
                item.save()

                save_images(item, images)

                more_items = []
                if len(task.wfitems_ids) > 1:
                    more_items = [WFItem.get(x) for x in task.wfitems_ids]
                elif task.group_by_urn:
                    more_items = WFItem.view("couchflow/by_urn",
                        include_docs=True)[item.urn].all()

                if more_items:
                    for new_item in more_items:
                        if new_item._id != item._id:
                            # TODO: don't replace all the properties
                            new_item.fields_properties = item.fields_properties

                            new_item.comments = item.comments
                            try:
                                new_item.save()
                            except ResourceConflict:
                                pass

        if task.doc_type == "DynamicDataTask":
            for field in task.extra_fields:
                field_data = request.POST.getlist(field)
                if field_data == "":
                    field_data = None
                task.extra_fields[field]['exec_value'] = field_data
            task.save()
            task.active_conector()
            try:
                task.save()
            except ResourceConflict:
                pass
        elif task.doc_type == "WFItemsLoader":
            task.save()
            task.active_conector()
        elif task.doc_type == "DecisionTask":
            if  'aceptar' in request.POST:
                task.confirmation = True
            else:
                task.confirmation = False
            task.save()
            task.active_conector()

        elif task.doc_type == "FilterWFItems":
            selected_items = request.POST.getlist('selected_items')
            task.wfitems_ids = selected_items
            task.save()
            task.active_conector()
            response_dict['response'] = True
            return HttpResponse(simplejson.dumps(response_dict),\
                                mimetype='application/javascript')
        elif task.doc_type == "MarcImport":
            task.active_conector()

        groups = user.groups
        new_tasks = workflow.get_active_tasks()

        url_redirect = '/'
        for task in new_tasks:
            if task.group_id in groups or user.is_superuser:
                url_redirect = '/couchflow/execute_task/%s' % task._id
                break

        return  HttpResponseRedirect(url_redirect)

    if task.doc_type == 'FilterWFItems':
        response_dict['response'] = True
        response_dict['status'] = "Campos mal cargados"
        return HttpResponse(simplejson.dumps(response_dict),
                            mimetype='application/javascript')
    else:
        context = {
            'form': form,
            'task': task,
            'item_errors': item_validation_errors
        }
        return render_to_response('couchflow/save_task_error.html',
            context, context_instance=RequestContext(request))