コード例 #1
0
 def get(self, page=1, name=None, date=None):
     if name:
         employee = self.collection.find_one({'name': name})
         return employee
     elif page == 'all':
         employees = self.collection.find(sort=[('name', 1)])
         employees_list = []
         for employee in employees:
             regular = True
             if 'regular' in employee and employee['regular'] == '비상근':
                 regular = False
             if 'email' in employee and employee['email']:
                 email = employee['email']
             else:
                 email = None
             if 'status' in employee and employee['status']:
                 status = employee['status']
             else:
                 status = None
             # 퇴사하지 않은 직원만 포함하기 위해서
             if status != '퇴사':
                 if 'endDate' not in employee:
                     employees_list.append({'name': employee['name'], 'employeeId': employee['employeeId'], 'email': email, 'regular': regular, 'status': status})
                 else:
                     if date and date <= employee['endDate']:
                         employees_list.append({'name': employee['name'], 'employeeId': employee['employeeId'], 'email': email, 'regular': regular, 'status': status})
         return employees_list
     else:
         data_list = self.collection.find(sort=[('department', 1), ('name', 1)])
         get_page = Page(page)
         return get_page.paginate(data_list)
コード例 #2
0
 def get_device_list(self, page=1, date=None):
     device_list = []
     data_list = self.collection.aggregate([
         {'$match':{'date': date, 'time': {"$gt": WORKING['time']['overNight']}}},
         {'$group':{'_id': '$mac'}}])
     for data in data_list:
         for key in data:
             device_list.append(data[key])
     if page == 'all':
         return device_list
     else:
         get_page = Page(page)
         return get_page.paginate(device_list)
コード例 #3
0
 def get(self, page=1, date=None):
     if date is None and page=='all':
         device_list = self.collection.find()
     else:
         if date is None:
             _, _, today, _ = check_time()
             date = today
         date = get_date_several_months_before(date, delta=2)
         device_list = self.collection.find({'endDate': {"$gt": date}})
     if page == 'all':
         return device_list
     else:
         get_page = Page(page)
         return get_page.paginate(device_list)
コード例 #4
0
ファイル: report.py プロジェクト: overthecloud75/attendance
    def summary(self, page=1, start=None, end=None):

        data_list = None
        summary_list = []
        if start and end:
            data_list = self.collection.find(
                {'date': {
                    "$gte": start,
                    "$lte": end
                }},
                sort=[('name', 1), ('date', -1)])
        if data_list:
            summary = OrderedDict()
            for data in data_list:
                if data['workingHours'] is not None:
                    name = data['name']
                    if name not in summary:
                        summary[name] = {'name': name}
                    if 'totalDay' not in summary[name]:
                        summary[name]['totalDay'] = 0
                    if 'totalWorkingDay' not in summary[name]:
                        summary[name]['totalWorkingDay'] = 0
                    if 'totalWorkingHours' not in summary[name]:
                        summary[name]['totalWorkingHours'] = 0
                    for status in WORKING['inStatus']:
                        if status not in summary[name]:
                            summary[name][status] = 0
                    for status in WORKING['status']:
                        if status not in summary[name]:
                            summary[name][status] = 0

                    summary[name]['totalDay'] = summary[name]['totalDay'] + 1
                    if 'status' in data:
                        if data['status'][0]:
                            summary[name][data['status'][0]] = summary[name][
                                data['status'][0]] + 1
                    if 'reason' in data and data['reason'] and data[
                            'reason'] in summary[name]:
                        summary[name][
                            data['reason']] = summary[name][data['reason']] + 1
                    summary[name]['totalWorkingHours'] = summary[name][
                        'totalWorkingHours'] + data['workingHours']
            for name in summary:
                summary[name] = self.get_summary(summary[name])
                summary_list.append(summary[name])

        get_page = Page(page)
        return get_page.paginate(summary_list)
コード例 #5
0
    def attend(self, page=None, name=None, start=None, end=None):
        if page == 'all':
            employee = self.employee.get(name=name)
            if start:
                data_list = self.collection.find({'date': {"$gte": start, "$lte": end}, 'name': name},
                                                 sort=[('name', 1), ('date', 1)])
            else:
                data_list = self.collection.find({'name': name}, sort=[('date', 1)])
            attend_list = []
            for data in data_list:
                if data['begin']:
                    begin = data['begin'][0:2] + ':' + data['begin'][2:4]
                else:
                    begin = ''
                if data['end']:
                    end = data['end'][0:2] + ':' + data['end'][2:4]
                else:
                    end = ''
                if 'reason' in data:
                    reason = data['reason']
                else:
                    reason = ''
                attend_list.append(
                    {'name': data['name'], 'rank': employee['rank'], 'department': employee['department'],
                     'date': data['date'], 'begin': begin, 'end': end, 'reason': reason})
            return attend_list
        else:
            if start and end:
                if name:
                    data_list = self.collection.find({'date': {"$gte": start, "$lte": end}, 'name': name},
                                                     sort=[('name', 1), ('date', -1)])
                else:
                    data_list = self.collection.find({'date': {"$gte": start, "$lte": end}},
                                                     sort=[('name', 1), ('date', -1)])
            else:
                if name:
                    data_list = self.collection.find({'date': self.today, 'name': name}, sort=[('date', -1)])
                else:
                    data_list = self.collection.find({'date': self.today}, sort=[('name', 1)])

            get_page = Page(page)
            paging, data_list = get_page.paginate(data_list)

            summary = OrderedDict()
            if name:
                attend_list = []
                summary['totalDay'] = 0
                summary['totalWorkingDay'] = 0
                summary['totalWorkingHours'] = 0
                for status in WORKING['inStatus']:
                    summary[status] = 0
                for status in WORKING['status']:
                    summary[status] = 0
                for data in data_list:
                    if data['workingHours'] is not None:
                        summary['totalDay'] = summary['totalDay'] + 1
                        del data['_id']
                        if 'status' in data:
                            if data['status'][0]:
                                summary[data['status'][0]] = summary[data['status'][0]] + 1
                        if 'reason' in data and data['reason']:
                            summary[data['reason']] = summary[data['reason']] + 1
                        summary['totalWorkingHours'] = summary['totalWorkingHours'] + data['workingHours']
                    attend_list.append(data)
                summary = self.get_summary(summary)
                return paging, self.today, attend_list, summary
            else:
                return paging, self.today, data_list, summary
コード例 #6
0
ファイル: board.py プロジェクト: overthecloud75/attendance
 def get(self, page=1, start=None, end=None):
     data_list = self.collection.find(sort=[('create_time', -1)])
     get_page = Page(page)
     return get_page.paginate(data_list)