From bae49b5fccfc1a336c41f8eec99f67322d852d8e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jakub=20=C5=A0tercl?= <Jakub Ĺ tercl>
Date: Sun, 12 Mar 2017 18:09:19 +0100
Subject: [PATCH] mend

---
 Implementation/.gitignore => .gitignore       |  0
 .../Nov\303\275 textov\303\275 dokument.txt"  |  0
 Implementace/controllers/base_controller.py   |  5 ++
 .../controllers/mainwindow_controller.py      | 20 ++++++
 Implementace/database.py                      | 18 +++++
 Implementace/database_create.py               | 33 +++++++++
 Implementace/main.py                          | 17 +++++
 Implementace/model/group.py                   |  6 ++
 Implementace/windows/mainwindow.py            | 59 ++++++++++++++++
 Implementace/windows/qt/mainwindow.ui         | 69 +++++++++++++++++++
 10 files changed, 227 insertions(+)
 rename Implementation/.gitignore => .gitignore (100%)
 create mode 100644 "Implementace/Nov\303\275 textov\303\275 dokument.txt"
 create mode 100644 Implementace/controllers/base_controller.py
 create mode 100644 Implementace/controllers/mainwindow_controller.py
 create mode 100644 Implementace/database.py
 create mode 100644 Implementace/database_create.py
 create mode 100644 Implementace/main.py
 create mode 100644 Implementace/model/group.py
 create mode 100644 Implementace/windows/mainwindow.py
 create mode 100644 Implementace/windows/qt/mainwindow.ui

diff --git a/Implementation/.gitignore b/.gitignore
similarity index 100%
rename from Implementation/.gitignore
rename to .gitignore
diff --git "a/Implementace/Nov\303\275 textov\303\275 dokument.txt" "b/Implementace/Nov\303\275 textov\303\275 dokument.txt"
new file mode 100644
index 0000000..e69de29
diff --git a/Implementace/controllers/base_controller.py b/Implementace/controllers/base_controller.py
new file mode 100644
index 0000000..809d6a7
--- /dev/null
+++ b/Implementace/controllers/base_controller.py
@@ -0,0 +1,5 @@
+
+
+class BaseController:
+    def __init__(self, db):
+        self.db = db
diff --git a/Implementace/controllers/mainwindow_controller.py b/Implementace/controllers/mainwindow_controller.py
new file mode 100644
index 0000000..4445a54
--- /dev/null
+++ b/Implementace/controllers/mainwindow_controller.py
@@ -0,0 +1,20 @@
+from controllers.base_controller import BaseController
+from windows import mainwindow
+from PyQt5 import QtWidgets as Qt
+
+
+class Mainwindow(Qt.QMainWindow, mainwindow.Ui_MainWindow, BaseController):
+    def __init__(self, db, parent=None):
+        super(Mainwindow, self).__init__(parent)
+        BaseController.__init__(self, db)
+        self.setupUi(self)
+        print(self.db.get_groups())
+        for group in self.db.get_groups():
+            self.listGroups.addItem(group.name)
+        self.listGroups.currentItemChanged.connect(self.show_people)
+        #self.btnBrowse.clicked.connect(self.browse_folder)
+        #self.list1.currentItemChanged.connect(self.show_content)
+
+    def show_people(self, current):
+        self.listPeople.clear()
+
diff --git a/Implementace/database.py b/Implementace/database.py
new file mode 100644
index 0000000..e9d0fce
--- /dev/null
+++ b/Implementace/database.py
@@ -0,0 +1,18 @@
+import sqlite3 as sqlite
+from model.group import Group
+
+
+class Database:
+    def __init__(self):
+        self.connection = sqlite.connect('database.db')
+        self.connection.isolation_level = None  # so we don't have to use self.connection.commit()
+
+    def get_groups(self, person_id = None):
+        if person_id is not None:
+            curs = self.connection.execute("SELECT * FROM GROUPS WHERE person_id=?", person_id)
+        else:
+            curs = self.connection.execute("SELECT * FROM GROUPS")
+        res = []
+        for row in curs:
+            res.append(Group(row))
+        return res
\ No newline at end of file
diff --git a/Implementace/database_create.py b/Implementace/database_create.py
new file mode 100644
index 0000000..d7da7ef
--- /dev/null
+++ b/Implementace/database_create.py
@@ -0,0 +1,33 @@
+#!/usr/bin/env python3
+
+import sqlite3 as sqlite
+
+conn = sqlite.connect('database.db')
+conn.isolation_level = None  # so we don't have to use self.connection.commit()
+curs = conn.cursor()
+
+curs.execute(
+    '''CREATE TABLE Person (
+    person_id INTEGER PRIMARY KEY AUTOINCREMENT,
+    name      VARCHAR,
+    surname   VARCHAR
+    );''')
+
+curs.execute(
+    '''CREATE TABLE Groups (
+    id   INTEGER PRIMARY KEY,
+    name VARCHAR UNIQUE
+                 NOT NULL
+    );'''
+)
+
+curs.execute(
+    '''CREATE TABLE Person_to_group (
+    person_id INTEGER REFERENCES Person (person_id),
+    group_id  INTEGER REFERENCES Groups (group_id),
+    PRIMARY KEY (
+        person_id,
+        group_id
+    )
+    );'''
+)
diff --git a/Implementace/main.py b/Implementace/main.py
new file mode 100644
index 0000000..5cd23ed
--- /dev/null
+++ b/Implementace/main.py
@@ -0,0 +1,17 @@
+#!/usr/bin/env python3
+
+import sys
+from PyQt5 import QtWidgets as Qt
+from controllers.mainwindow_controller import Mainwindow
+from database import Database
+
+
+def main():
+    db = Database()
+    app = Qt.QApplication(sys.argv)
+    form = Mainwindow(db)
+    form.show()
+    app.exec_()
+
+if __name__ == '__main__':
+    main()
\ No newline at end of file
diff --git a/Implementace/model/group.py b/Implementace/model/group.py
new file mode 100644
index 0000000..582b041
--- /dev/null
+++ b/Implementace/model/group.py
@@ -0,0 +1,6 @@
+
+
+class Group:
+    def __init__(self, db_row):
+        self.id = db_row[0]
+        self.name = db_row[1]
diff --git a/Implementace/windows/mainwindow.py b/Implementace/windows/mainwindow.py
new file mode 100644
index 0000000..e32eba5
--- /dev/null
+++ b/Implementace/windows/mainwindow.py
@@ -0,0 +1,59 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'mainwindow.ui'
+#
+# Created by: PyQt5 UI code generator 5.8.1
+#
+# WARNING! All changes made in this file will be lost!
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+class Ui_MainWindow(object):
+    def setupUi(self, MainWindow):
+        MainWindow.setObjectName("MainWindow")
+        MainWindow.resize(748, 464)
+        self.centralWidget = QtWidgets.QWidget(MainWindow)
+        self.centralWidget.setObjectName("centralWidget")
+        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.centralWidget)
+        self.verticalLayout_2.setContentsMargins(11, 11, 11, 11)
+        self.verticalLayout_2.setSpacing(6)
+        self.verticalLayout_2.setObjectName("verticalLayout_2")
+        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
+        self.horizontalLayout_2.setContentsMargins(11, 11, 11, 11)
+        self.horizontalLayout_2.setSpacing(6)
+        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+        self.btnAddGroup = QtWidgets.QPushButton(self.centralWidget)
+        self.btnAddGroup.setFlat(False)
+        self.btnAddGroup.setObjectName("btnAddGroup")
+        self.horizontalLayout_2.addWidget(self.btnAddGroup, 0, QtCore.Qt.AlignLeft)
+        self.verticalLayout_2.addLayout(self.horizontalLayout_2)
+        self.horizontalLayout = QtWidgets.QHBoxLayout()
+        self.horizontalLayout.setContentsMargins(11, 11, 11, 11)
+        self.horizontalLayout.setSpacing(6)
+        self.horizontalLayout.setObjectName("horizontalLayout")
+        self.listGroups = QtWidgets.QListWidget(self.centralWidget)
+        self.listGroups.setViewMode(QtWidgets.QListView.ListMode)
+        self.listGroups.setObjectName("listGroups")
+        self.horizontalLayout.addWidget(self.listGroups)
+        self.tablePeople = QtWidgets.QTableWidget(self.centralWidget)
+        self.tablePeople.setObjectName("tablePeople")
+        self.tablePeople.setColumnCount(0)
+        self.tablePeople.setRowCount(0)
+        self.horizontalLayout.addWidget(self.tablePeople)
+        self.verticalLayout_2.addLayout(self.horizontalLayout)
+        MainWindow.setCentralWidget(self.centralWidget)
+        self.menuBar = QtWidgets.QMenuBar(MainWindow)
+        self.menuBar.setGeometry(QtCore.QRect(0, 0, 748, 21))
+        self.menuBar.setObjectName("menuBar")
+        MainWindow.setMenuBar(self.menuBar)
+
+        self.retranslateUi(MainWindow)
+        QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+    def retranslateUi(self, MainWindow):
+        _translate = QtCore.QCoreApplication.translate
+        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
+        self.btnAddGroup.setText(_translate("MainWindow", "Vytvořit skupinu"))
+        self.listGroups.setSortingEnabled(True)
+        self.tablePeople.setSortingEnabled(True)
+
diff --git a/Implementace/windows/qt/mainwindow.ui b/Implementace/windows/qt/mainwindow.ui
new file mode 100644
index 0000000..5a2de86
--- /dev/null
+++ b/Implementace/windows/qt/mainwindow.ui
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>748</width>
+    <height>464</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>MainWindow</string>
+  </property>
+  <widget class="QWidget" name="centralWidget">
+   <layout class="QVBoxLayout" name="verticalLayout_2">
+    <item>
+     <layout class="QHBoxLayout" name="horizontalLayout_2">
+      <item alignment="Qt::AlignLeft">
+       <widget class="QPushButton" name="btnAddGroup">
+        <property name="text">
+         <string>Vytvořit skupinu</string>
+        </property>
+        <property name="flat">
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </item>
+    <item>
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <item>
+       <widget class="QListWidget" name="listGroups">
+        <property name="viewMode">
+         <enum>QListView::ListMode</enum>
+        </property>
+        <property name="sortingEnabled">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QTableWidget" name="tablePeople">
+        <property name="sortingEnabled">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menuBar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>748</width>
+     <height>21</height>
+    </rect>
+   </property>
+  </widget>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections/>
+</ui>
-- 
GitLab