コード例 #1
0
def department_list(request):
    if request.method == 'GET':
        with sqlite3.connect(Connection.db_path) as conn:
            conn.row_factory = sqlite3.Row
            db_cursor = conn.cursor()

            db_cursor.execute("""
            SELECT
                d.id,
                d.dept_name,
                d.budget,
                e.id AS 'employee_id'
            FROM hrapp_department d
            LEFT JOIN hrapp_employee e
            ON d.id = e.department_id
            """)

            all_departments = []
            dataset = db_cursor.fetchall()

            for row in dataset:
                department = Department()
                department.id = row['id']
                department.name = row['dept_name']
                department.budget = row['budget']
                if(department not in all_departments):
                    all_departments.append(department)

            department_sizes = dict()
            for row in dataset:
                if(row['dept_name'] not in department_sizes):
                    name = row['dept_name']
                    department_sizes[name] = 0

            for row in dataset:
                if(row['employee_id'] is not None):
                    name = row['dept_name']
                    department_sizes[name] += 1

            for department in all_departments:
                department.size = department_sizes[department.name]

        template = 'departments/department_list.html'
        

        context = {
            'departments': all_departments
        }

        return render(request, template, context)

    elif request.method == 'POST':
        form_data = request.POST

        with sqlite3.connect(Connection.db_path) as conn:
            db_cursor = conn.cursor()

            db_cursor.execute("""
            INSERT into hrapp_department
            (
                dept_name, budget
            )
            VALUES (?, ?)
            """,
            (form_data['dept_name'], form_data['budget']))

        return redirect(reverse('hrapp:department_list'))
def department_list(request):
    if request.method == 'GET':
        with sqlite3.connect(Connection.db_path) as conn:
            conn.row_factory = sqlite3.Row
            db_cursor = conn.cursor()

            db_cursor.execute("""
            SELECT
                d.id,
                d.name,
                d.budget,
                e.id AS 'employee_id'
            FROM hrapp_department d
            LEFT JOIN hrapp_employee e
            ON d.id = e.department_id
            """)

            all_departments = []
            dataset = db_cursor.fetchall()

            # creates a list of all unique department objects
            for row in dataset:
                department = Department()
                department.id = row['id']
                department.name = row['name']
                department.budget = row['budget']
                if (department not in all_departments):
                    all_departments.append(department)

            # creates a dictionary of all unique department names with values representing employee count
            department_sizes = dict()
            for row in dataset:
                if (row['name'] not in department_sizes):
                    name = row['name']
                    department_sizes[name] = 0

            # and here we set the employee count for each department
            for row in dataset:
                if (row['employee_id'] is not None):
                    name = row['name']
                    department_sizes[name] += 1

            # transfer the department sizes to the department objects in all_departments
            for department in all_departments:
                department.size = department_sizes[department.name]

        if request.user.is_authenticated:
            template = 'departments/department_list.html'
        else:
            template = 'departments/department_list_view_only.html'

        context = {'departments': all_departments}

        return render(request, template, context)

    elif request.method == 'POST':
        form_data = request.POST

        with sqlite3.connect(Connection.db_path) as conn:
            db_cursor = conn.cursor()

            db_cursor.execute(
                """
            INSERT into hrapp_department
            (
                name, budget
            )
            VALUES (?, ?)
            """, (form_data['name'], form_data['budget']))

        return redirect(reverse('hrapp:department_list'))