Example #1
0
 def get_record_data(self, record_id=None, rdate=None):
     """
     Description: Метод получения данных для инициализации полей формы
     существующей записью, включая расширенные состояния при наличии
     """
     if not record_id and rdate:
         try:
             record_id = self.record_set.filter(date=rdate)[0].id
         except IndexError:
             return None
     if record_id:
         data = {}
         rec = self.record_set.get(pk=record_id)
         data['date'] = rec.date.strftime('%d.%m.%Y')
         data['work'] = stat_timedelta(rec.work)
         data['pusk_cnt'] = rec.pusk_cnt
         data['ostanov_cnt'] = rec.ostanov_cnt
         if self.extended_stat:
             # сначала инициализация всего набора
             for state in EXT_STATE_DATA:
                 data[state] = '0:00'
             # потом ненулевых состояний
             for state_item in rec.stateitem_set.all():
                 data[state_item.state.lower()] = stat_timedelta(state_item.time_in_state)
         return data
     else:
         return None
Example #2
0
 def get_data(self):
     """
     Метод подготовки всех данных записи и выдачи в виде словаря.
     Продолжительность приведена в строках
     """
     rec_data = {'record_id': self.id}
     for name in STANDARD_STATE_DATA:
         rec_data[name] = self.__getattribute__[name]
     rec_data.update(dict.fromkeys(EXT_STATE_DATA, '0:00'))
     for ext_state in self.stateitem_set.all():
         rec_data[ext_state.state.lower()] = stat_timedelta(ext_state.time_in_state)
     return rec_data
Example #3
0
 def get_state_summary(self, date_from=None, date_to=None):
     """
     Description: Метод подсчета базовой статистики, возможно,
     от определенной даты
     """
     if self.record_set.count():
         recs = self.record_set
         if date_from:
             recs = recs.filter(date__gte=date_from)
         if date_to:
             recs = recs.exclude(date__gte=date_to)
         stat = "wd=%s,psk=%d,ost=%d" % (
             stat_timedelta(recs.aggregate(models.Sum('work'))['work__sum']),
             recs.aggregate(models.Sum('pusk_cnt'))['pusk_cnt__sum'],
             recs.aggregate(models.Sum('ostanov_cnt'))['ostanov_cnt__sum'],)
     else:
         stat = "wd=00:00,psk=0,ost=0"
     return stat
Example #4
0
 def get_records_on_dates(unit_tree, start_date, days_cnt):
     """
     Метод класса Record готовит словарь словарей наработки оборудования
     из журналов (тех, что имеют статистику) на даты для дерева оборудования
     """
     res = {}
     date_list = [
         (start_date + timedelta(days=dc)).strftime("%Y-%m-%d")
         for dc in range(days_cnt)
     ]
     res.update(dict(dates=date_list))
     recordsDataSet = Record.objects.filter(date__in=date_list)
     for uitem, ident in unit_tree:
         try:
             journal_key = str(uitem.journal.id)
             work_on_dates_dict = {}
             for rec in recordsDataSet.filter(journal_id=uitem.journal.id).all():
                 date_key = rec.date.strftime("%Y-%m-%d")
                 work_on_dates_dict.update({date_key: stat_timedelta(rec.work)})
             res.update({journal_key: work_on_dates_dict})
         except Journal.DoesNotExist:
             continue
     return res