コード例 #1
0
def get_acutual_plan_value_deviation(request, company_objects, bookmarks,
                                     from_date, to_date, aggregation_type):
    """
    Получить данные по отклонению фактического значения от планового.
    @param company_objects: выбранные объекты
    @param bookmarks:
    @param from_date: 
    @param to_date:
    @param aggregation_type: Указывает то, как аггрегировать данные. Возможны следующие варианты: 
                            'enterprise' - по всему предприятию
                            'branch'     - по филиалам
                            'thermal'    - по тепловым районам 
                            None         - не выполнять аггрегации
    
    """
    try:
        if aggregation_type not in ['enterprise', 'thermal', 'branch', None]:
            raise ValueError(u"Неизвестный тип аггрегации")

        data = []
        boilers = get_boilers(request.user, company_objects, bookmarks)
        common_categoty_name = get_common_category_name()

        data = WaterConsumption.objects.get_consumption_data(
            boilers, from_date, to_date, aggregation_type)

        return data
    except Exception as ex:
        _logger.error(ex)
        raise ex
コード例 #2
0
def get_company_object_from_mix(request, company_objects, bookmarks_id):
    """
    Получить объекты компании для теплового района
    """
    print company_objects
    print bookmarks_id
    ids = []
    for boiler in get_boilers(request.user, company_objects, bookmarks_id):
        ids.append(boiler.id)

    print ids
    return {'boilers': ids}
コード例 #3
0
ファイル: views.py プロジェクト: johnsky/dailyreport-server
def get_problems(request, first_row, last_row, company_objects, bookmarks,
                    filter_settings, sort_by=None, sort_order=None):
    """
    Получить список проблем
    """
    try:
        _logger.info(u"[deviation.getProblems()] - Получить список проблем, пользователем: %s"%
                     unicode(request.user.username))
        
        boilers = get_boilers(request.user, company_objects, bookmarks)

        if len(boilers)>0:
            qs = ParameterDeviationProblem.objects.select_related().filter(boiler__in = boilers)            
            
            # Has start date
            if qooxdoo_utils.get_item(filter_settings, 'startDate') != None:
                from_date = string_to_date(qooxdoo_utils.get_item(filter_settings, 'startDate'))
                qs = qs.filter(start_date = from_date)

            if qooxdoo_utils.get_item(filter_settings, 'state','id') > 0:
                qs = qs.filter(state__id = qooxdoo_utils.get_item(filter_settings, 'state','id'))

            if qooxdoo_utils.get_item(filter_settings, 'cause','id') > 0:
                qs = qs.filter(Q(cause__id = qooxdoo_utils.get_item(filter_settings, 'cause','id'))
                               | Q (cause__id=None))
        
        qs = qs.order_by("boiler__branch__name",
                    "boiler__thermalArea__name",
                    "boiler__name", 'start_date', 'cause__name')
        

        problems = serializers.serialize("json",
                                         qs[first_row: last_row+1],
                                         relations={'boiler'    :   {'relations' : ('thermalArea','branch')},
                                                    'resource'  :   {},
                                                    'state'     :   {},
                                                    'cause'     :   {},
                                                    'responsible':  {},
                                                    'concerned' :   {},
                                                    'water'     :   {},
                                                    'fuel'      :   {},
                                                    'electricity':  {}
                                                    })
        return problems
    
    except Exception as ex:
        _logger.error(u"[deviation.getProblems()] - Не удалось получить список проблем пользователю: %(user)s. %(exception)s " %
                      {'user': unicode(request.user.username),
                      'exception': unicode(ex)})
        
        raise ex
コード例 #4
0
def deviation_report(request):
    """
    Отчет по воде
    """
    import json

    company_objects = request.GET['companyObjects']
    bookmarks = request.GET['bookmarks']

    boilers = get_boilers(request.user, json.loads(company_objects),
                          json.loads(bookmarks))

    if len(boilers) > 0:
        qs = ParameterDeviationProblem.objects.select_related().filter(
            boiler__in=boilers)

        # Has start date
        if request.GET['startDate'] != 'null':
            from_date = parse(request.GET['startDate']).date(
            )  #string_to_date2(request.GET['startDate'])
            qs = qs.filter(start_date=from_date)

        if request.GET['state'] > 0:
            qs = qs.filter(state__id=request.GET['state'])

        if request.GET['cause'] > 0:
            qs = qs.filter(
                Q(cause__id=request.GET['cause'])
                | Q(cause__id=None))

    deviations_id = qs.values_list('id', flat=True)

    data = DeviationsReport.objects.get_deviations(deviations_id)

    params = {
        'report_title': u'Список отклонений',
        'items': data,
        'report_delimiter': ","
    }
    context = RequestContext(request, params)
    template = get_template('deviation/deviation.html')

    #return HttpResponse(template.render(context))

    response = HttpResponse(
        template.render(context),
        content_type='application/vnd.ms-excel; charset=utf-8')
    response[
        'Content-Disposition'] = 'attachment; filename=Deviations_Report.xls'
    return response
コード例 #5
0
ファイル: views.py プロジェクト: johnsky/dailyreport-server
def get_problems_count(request, company_objects, bookmarks, filter_settings):
    """
    Получить количество записей.
    
    @param company_objects: Объекты компании
    @param bookmarks: Закладки 
    @param resources: Ресурсы 
    @param states: Состояния
    @param start_date: Дата начала проблемы 
    """
    try:
        boilers = get_boilers(request.user, company_objects, bookmarks)
        number_rows = 0
        
        if len(boilers)>0:
            qs = ParameterDeviationProblem.objects.filter(boiler__in = boilers)            
            
            # Has start date
            if qooxdoo_utils.get_item(filter_settings, 'startDate') != None:
                from_date = string_to_date(qooxdoo_utils.get_item(filter_settings, 'startDate'))
                print from_date
                qs = qs.filter(start_date = from_date)

            if qooxdoo_utils.get_item(filter_settings, 'state','id') > 0:
                qs = qs.filter(state__id = qooxdoo_utils.get_item(filter_settings, 'state','id'))

            if qooxdoo_utils.get_item(filter_settings, 'cause','id') > 0:
                qs = qs.filter(Q(cause__id = qooxdoo_utils.get_item(filter_settings, 'cause','id'))
                               | Q (cause__id=None))
            
            number_rows = qs.count()
            
        return {'count': number_rows}
    except:
        traceback.print_exc(file=sys.stdout)
        raise
コード例 #6
0
ファイル: utils.py プロジェクト: johnsky/dailyreport-server
def look_for_problems(actor,
                      first_row,
                      last_row,
                      company_objects,
                      bookmarks,
                      state,
                      resource,
                      sort_by=None,
                      sort_order=None):
    """
    Найти проблемы по указанным параметрам.
    
    @param actor: 
    @param state: Состояние проблемы
    @param company_objects: Объекты структуры. Список метаданных,
                в котором указывается [{name: <Branch|ThermalArea|BoilerHouse>, id: <Идентификатор>},{...}]
    """

    problems = []
    boilers = get_boilers(actor, company_objects, bookmarks)
    print boilers
    problems = ParameterDeviationProblem.objects.filter(
        boiler__in=boilers,
        state__name__in=state, resource__name__in=resource).values(
            'id', 'start_date', 'boiler__branch__name',
            'boiler__thermalArea__name', 'boiler__name', 'resource__name',
            'state__name')[first_row:last_row + 1]
    print problems
    #if state:
    #    print "==========================================="
    #    query_set.filter(state__name == state)

    #if sort_by =='ID':
    #    query_set.extra(order_by("-id"))
    #elif sort_by == 'start_date':
    #    query_set.extra(order_by("-start_date"))
    #elif sort_by == 'branch':
    #query_set.order_by().boiler.branch.name
    #    pass
    #elif sort_by == 'thermal':
    #query_set.order_by().boiler.thermalArea.name
    #    pass
    #elif sort_by =='company_object':
    #    pass
    #query_set.get_resource().boiler.name,
    #elif sort_by =='resource':
    #query_set.get_resource_name(),
    #    pass
    #elif sort_by =='state':
    #query_set(problem.state)
    #    pass
    #else:
    #    pass
    #query_set.order_by("boiler__branch__name","boiler__therame","boiler__name", "start_date")
    #query_set = query_set.extra(order_by = ["branch.name","thermal.name","boiler.name", "deviation.start_date"])

    #print query_set[first_row: last_row+1].query
    '''problems = query_set.values('id','start_date',
                               'boiler__branch__name',
                               'boiler__thermalArea__name',
                               'boiler__name',
                               'resource__name',
                               'state__name')[first_row: last_row+1]'''
    #print problems

    data = {}
    try:
        a = []
        for problem in problems:
            o = {
                'ID': problem['id'],
                'start_date': unicode(problem['start_date']),
                'branch': unicode(problem['boiler__branch__name']),
                'thermal': unicode(problem['boiler__thermalArea__name']),
                'company_object': unicode(problem['boiler__name']),
                'resource': unicode(problem['resource__name']),
                'state': unicode(problem['state__name'])
            }
            a.append(o)

        data = {'data': a}

    except Exception as ex:
        print ex

    return data
コード例 #7
0
ファイル: utils.py プロジェクト: johnsky/dailyreport-server
def look_for_problems_query(actor,
                            company_objects=[],
                            bookmarks=[],
                            state=None,
                            resource=None,
                            sort_by=None,
                            sort_order=None):
    """
    Найти проблемы по указанным параметрам.
    
    @param actor: 
    @param state: Состояние проблемы
    @param company_objects: Объекты структуры. Список метаданных,
                в котором указывается [{name: <Branch|ThermalArea|BoilerHouse>, id: <Идентификатор>},{...}]
    """

    problems = []

    boilers = get_boilers(actor, company_objects, bookmarks)

    query_set = ParameterDeviationProblem.objects.select_related()

    if boilers != []:
        if resource == 'Вода':
            query_set.filter(water__boiler__in=boilers)
        elif resource == 'Электричество':
            query_set.filter(electricity__boiler__in=boilers)
        elif resource == 'Топливо':
            query_set.filter(fuel__boiler__in=boilers)
        else:
            query_set.filter(
                Q(water__boiler__in=boilers)
                | Q(electricity__boiler__in=boilers)
                | Q(fuel__boiler__in=boilers))
    else:
        if resource == 'Вода':
            query_set.filter(water__isnull=False)
        elif resource == 'Электричество':
            query_set.filter(electricity__isnull=False)
        elif resource == 'Топливо':
            query_set.filter(fuel__isnull=False)

    if state:
        query_set.filter(state__name == state)

    if sort_by == 'ID':
        query_set.extra(order_by("-id"))
    elif sort_by == 'start_date':
        query_set.extra(order_by("-start_date"))
    elif sort_by == 'branch':
        query_set.order_by().boiler.branch.name
    elif sort_by == 'thermal':
        query_set.order_by().boiler.thermalArea.name

    elif sort_by == 'company_object':
        query_set.get_resource().boiler.name,
    elif sort_by == 'resource':
        query_set.get_resource_name(),
    elif sort_by == 'state':
        query_set(problem.state)

    return query_set