示例#1
0
def draw_chart(request):
    
    def validate_and_get_date(request):
        date_from = request.GET.get('date_from')
        date_to = request.GET.get('date_to')
        date_from = datetime.datetime.strptime(date_from, '%Y-%m-%d').date()
        date_to = datetime.datetime.strptime(date_to, '%Y-%m-%d').date()
        if date_to < date_from:
            messages.error(request, _('Invalid period entered'))
            return HttpResponseRedirect(request.META['HTTP_REFERER']), date_to, date_from
        return None, date_to, date_from
    
    group = None
    if request.GET.get('group'):
        group = request.GET.get('group')
    response, date_to, date_from = validate_and_get_date(request)
    if response:
        return response
    quality = Orderfailure.calculate_service_level(date_from, date_to, group)
    tooltip_date = "%d %b %Y %H:%M:%S %p"
    extra_series = {"tooltip": {"y_start": "", "y_end": " calls"},
                    "date_format": tooltip_date}
    chartdata = {
        'x': quality.keys(),
        'name1': _('Quality cofficient'), 'y1': quality.values(), 'extra1': extra_series
    }
    charttype = "cumulativeLineChart"
    data = {
        'charttype': charttype,
        'chartdata': chartdata,
    }
    rc = RequestContext(request, {})
    rc.autoescape = False
    res = render_to_response('graph.html', data, rc)
    return res
示例#2
0
def File_form(request):
    if request.method == 'GET':
        form = FileForm()
        data_for_templete = {'form' : form}
        rc = RequestContext(request, {})
        rc.autoescape = False
        return render_to_response('stock_info/fileimport.html', data_for_templete, rc)
    else:
        form = FileForm(request.POST, request.FILES)
        if form.is_valid():
            
            data = form.cleaned_data['file_name']
            try:
                results = Data_import(data)
                err_msg = []
                if results['not_found']:
                    err_msg.append(unicode(ugettext_lazy('Not found operations: %d' % results['not_found'])))
                if results['failed']:
                    err_msg.append(unicode(ugettext_lazy('Failed rows: %d' % results['failed'])))
                if len(err_msg) > 0:
                    messages.error(request, '; '.join(err_msg))
                else:
                    messages.info(request, unicode(ugettext_lazy('Success: %s rows' % results['success'])))
            except:
                messages.error(request, ugettext_lazy('Import failed'))
    return HttpResponseRedirect('/admin/stock_info/orderfailure')
示例#3
0
def handle(request):
    if request.method in ['GET','HEAD']:
        role = dataplus.dictGetSafeVal(request.REQUEST, 'role', '')
        if role and role.find('_') > 0:
            role_parts = role.split('_')
            role_list = findSubFromList(industries, role_parts[0])
            if role_list:
                industries['default'] = role_parts[0]
                if findSubFromList(role_list, role_parts[1]):
                    role_list['default'] = role_parts[1]
        
        context=RequestContext(request)
        context.autoescape = False
        return codejar.actions.render(request, 'gallery/index.htm',
            {'categorization': simplejson.dumps(industries)}, context)
示例#4
0
def render_quality(request):
    if request.method == 'POST':
        try:    
            date_from = request.POST.get('date_from')
            date_from = datetime.datetime.strptime(date_from, '%Y-%m-%d').date()
            date_to = request.POST.get('date_to')
            date_to = datetime.datetime.strptime(date_to, '%Y-%m-%d').date()
        except:
            messages.error(request, ugettext_lazy('Enter a correct date'))
            return HttpResponseRedirect(request.META['HTTP_REFERER'])
        group = request.POST.getlist('group')
        chart_type = request.POST.get('type')
        rc = RequestContext(request, {})
        rc.autoescape = False
        url = '/admin/stock_info/quality_form?group=%(group)s&date_from=%(date_from)s&date_to=%(date_to)s&type=%(type)s'
        url = url % {'date_from' : date_from,
                     'date_to' : date_to,
                     'group' : ', '.join([g for g in group]),
                     'type' : chart_type}
        return HttpResponseRedirect(url)
    
    date_from = request.GET.get('date_from')
    try:
        date_from = datetime.datetime.strptime(date_from, '%Y-%m-%d').date()
        date_to = request.GET.get('date_to')
        date_to = datetime.datetime.strptime(date_to, '%Y-%m-%d').date()
        if date_to < date_from:
            raise
    except:
        messages.error(request, ugettext_lazy('Enter a correct date'))
        return HttpResponseRedirect(request.META['HTTP_REFERER'])
    group = request.GET.get('group').split(', ')
    chart_type = request.GET.get('type')
    form = QualityForm(initial=request.GET.copy())
    form.initial['group'] = group
    ydata = []
    counter = 1
    for g in group:
        if chart_type == QualityForm.SKU_AMOUNT:
            x_data, y_data = Orderfailure.calculate_service_level(date_from, date_to, g)
        elif chart_type == QualityForm.ORDER_AMOUNT:
            x_data, y_data = Orderfailure.calculate_service_level_by_orders(date_from, date_to, g)
        ydata.append(['y%s' % counter, y_data, g, 'name%s' % counter])
        counter += 1
    if 'print' in request.GET.keys():
        name_file = "service_level%s.csv" % datetime.datetime.now().strftime("%Y-%m-%d_%H:%M:%S")
        mimetype = 'text/csv'
        export_file = get_data_file(x_data, ydata)
        response = HttpResponse(content=export_file.getvalue(),
                                        mimetype=mimetype)
        response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(name_file)        
        return response
    charttype = 'lineChart'
    chart_data = {'x' : x_data}
    for d in ydata:
        chart_data[d[0]] = d[1]
        chart_data[d[3]] = d[2]
    data = {'form' : form,
            'charttype' : charttype,
            'chartdata' : chart_data,
            'extra' : {'x_is_date' : True}}
    rc = RequestContext(request, {})
    rc.autoescape = False
    return render_to_response('stock_info/quality_service.html', data, rc)