diff --git a/app.py b/app.py index 4b059ec..0028db7 100755 --- a/app.py +++ b/app.py @@ -1,11 +1,36 @@ -from flask import Flask +from flask import Flask, render_template, request, redirect, url_for + +from data.data_provider import DataProvider +from data.models import Activity app = Flask(__name__) +data_provider = DataProvider( + "postgresql://yaric359:yaric359@localhost:5432/yaric359" +) @app.route('/') def hello_world(): - return 'Hello World!' + return render_template('pages/index.html') + + +@app.route('/activities/add/', methods=["GET"]) +def add_activity(): + return render_template('pages/activities/add_activity.html') + + +@app.route('/activities/add/', methods=["POST"]) +def add_activity_post(): + name = request.form["name"] + act = Activity(None, name) + data_provider.create_activity(act) + return redirect(url_for('add_activity')) + + +@app.route('/activities/', methods=["GET"]) +def list_activities(): + return render_template('pages/activities/index.html', + data=data_provider.get_activities()) if __name__ == '__main__': diff --git a/data/data_provider.py b/data/data_provider.py index 3c3c2b3..7de6226 100755 --- a/data/data_provider.py +++ b/data/data_provider.py @@ -18,6 +18,7 @@ class DataProvider: "r") cur.execute(f.read()) f.close() + self._connection.commit() def get_enterprises(self) -> List[Enterprise]: with self._connection.cursor() as cursor: @@ -30,6 +31,7 @@ class DataProvider: name, short_name ) for ent_id, name, short_name in cursor.fetchall()] + self._connection.commit() return res def get_enterprise_by_id(self, ent_id: int): @@ -37,6 +39,7 @@ class DataProvider: cursor.execute("SELECT id, name, short_name " "FROM enterprise where id=%s;", (ent_id,)) ent_id, name, short_name = cursor.fetchone() + self._connection.commit() return Enterprise( ent_id, self.get_activities_by_enterprpise(ent_id), @@ -53,6 +56,7 @@ class DataProvider: "right join do_activity da on activity.id = da.activity " "where enterprise = %s", (ent_id,)) + self._connection.commit() return [Activity(act_id, name) for act_id, name in cursor.fetchall()] @@ -61,6 +65,7 @@ class DataProvider: cur.execute( "SELECT id from division where enterprise = %s", (ent_id,) ) + self._connection.commit() return [Division(div_id, self.get_contact_info_by_division(div_id), self.get_activities_by_division(div_id) @@ -74,6 +79,7 @@ class DataProvider: "FROM enterprise WHERE enterprise.id = %s)", (ent_id,)) con_id, email = cur.fetchone() + self._connection.commit() return ContactInfo( con_id, email, @@ -90,6 +96,7 @@ class DataProvider: "FROM division WHERE division.id = %s)", (div_id,)) con_id, email = cur.fetchone() + self._connection.commit() return ContactInfo( con_id, email, @@ -103,6 +110,7 @@ class DataProvider: cur.execute("SELECT id, date_of_start, date_of_end " "FROM phone_number where contact_info = %s", (con_id,)) + self._connection.commit() return [PhoneNumber( ph_id, date_start, @@ -115,6 +123,7 @@ class DataProvider: "FROM head WHERE contact_info = %s", (con_id,)) cur.fetchall() + self._connection.commit() return [Head(id, date_start, date_end) for id, date_start, date_end in cur] @@ -125,6 +134,7 @@ class DataProvider: "date_of_start, date_of_end FROM location " "where contact_info = %s", (con_id,)) + self._connection.commit() return [ Location(id, country, city, street, house, room, date_of_start, date_of_end) for @@ -139,6 +149,7 @@ class DataProvider: "right join do_activity da on activity.id = da.activity " "where division = %s", (div_id,)) + self._connection.commit() return [Activity(act_id, name) for act_id, name in cursor.fetchall()] @@ -147,6 +158,7 @@ class DataProvider: cur.execute("INSERT INTO contact_info (email) VALUES (%s) " "RETURNING id", (info.email, )) info.id = cur.fetchone()[0] + self._connection.commit() for head in info.head: self.create_head(head, info.id) for loc in info.locations: @@ -161,6 +173,7 @@ class DataProvider: "VALUES (%s, %s, %s) RETURNING id", (head.date_of_start, head.date_of_end, con_id)) head.id = cur.fetchone()[0] + self._connection.commit() def create_location(self, loc: Location, con_id: int): with self._connection.cursor() as cur: @@ -170,6 +183,7 @@ class DataProvider: (loc.country, loc.city, loc.street, loc.house, loc.room, loc.date_of_start, loc.date_of_end, con_id)) loc.id = cur.fetchone()[0] + self._connection.commit() def create_phone_number(self, phone: PhoneNumber, con_id: int): with self._connection.cursor() as cur: @@ -178,6 +192,7 @@ class DataProvider: "(%s, %s, %s) RETURNING id", (con_id, phone.date_of_start, phone.date_of_end)) phone.id = cur.fetchone()[0] + self._connection.commit() def create_division(self, division: Division, ent_id: int): with self._connection.cursor() as cur: @@ -188,6 +203,7 @@ class DataProvider: division.id = cur.fetchone()[0] for act in division.activities: self.add_activity_to_division(division, act) + self._connection.commit() def create_enterprise(self, enterprise: Enterprise): with self._connection.cursor() as cur: @@ -203,22 +219,33 @@ class DataProvider: self.add_activity_to_enterprise(enterprise, act) for division in enterprise.divisions: self.create_division(division, enterprise.id) + self._connection.commit() def create_activity(self, activity: Activity): with self._connection.cursor() as cur: cur.execute("INSERT INTO activity (name) VALUES (%s) RETURNING id", (activity.name, )) activity.id = cur.fetchone()[0] + self._connection.commit() def add_activity_to_division(self, division: Division, activity: Activity): with self._connection.cursor() as cur: cur.execute("INSERT INTO do_activity (activity, division) " "VALUES (%s, %s)", (activity.id, division.id)) + self._connection.commit() def add_activity_to_enterprise(self, enterprise: Enterprise, activity: Activity): with self._connection.cursor() as cur: cur.execute("INSERT INTO do_activity (activity, enterprise) " "VALUES (%s, %s)", (activity.id, enterprise.id)) + self._connection.commit() + + def get_activities(self): + with self._connection.cursor() as cur: + cur.execute("SELECT id, name FROM activity") + res = [Activity(id, name) for id, name in cur.fetchall()] + self._connection.commit() + return res diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000..3715bb4 --- /dev/null +++ b/templates/base.html @@ -0,0 +1,47 @@ + + +
+ +| + Id + | ++ Имя + | +
|---|---|
| + {{ item.id }} + | ++ {{ item.name }} + | +