Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added Kostya Zinchuk/workshop3/WorkShop2 Flask.pdf
Binary file not shown.
56 changes: 56 additions & 0 deletions Kostya Zinchuk/workshop3/app.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
from flask import Flask, render_template,redirect, request, url_for
from distionaries import user_dict, book_dict

app = Flask(__name__)


@app.route('/')
def home():
return render_template('index.html')


@app.route('/<action>/')
def api_action(action):
if action == "book":
return render_template('book.html', book=book_dict)
elif action == "user":
return render_template('user.html', user=user_dict)
elif action == "all":
return render_template('show.html', book=book_dict, user=user_dict)
else:
return render_template('404.html')


@app.route('/book', methods=['GET', 'POST'] )
def api_book():
if request.method == "POST":
book_dict['name'] = request.form['name']
book_dict['url'] = request.form['url']
book_dict['create_time'] = request.form['create_time']
book_dict['author'] = request.form['author']
return redirect(url_for('api_action', action='all'))
else:
return redirect(url_for('api_action', action='book'))


@app.route('/user', methods=['GET', 'POST'])
def api_user():
if request.method == "POST":
user_dict['fullname'] = request.form['fname']
user_dict['email'] = request.form['email']
user_dict['registration'] = request.form['rgstr']
user_dict['id'] = request.form['id']
user_dict['login'] = request.form['login']
user_dict['book_amount'] = request.form['amount']
return redirect(url_for('api_action', action='all'))
else:
return redirect(url_for('api_action', action='user'))


@app.errorhandler(404)
def page404(error):
return render_template("404.html")


if __name__ == '__main__':
app.run()
15 changes: 15 additions & 0 deletions Kostya Zinchuk/workshop3/distionaries.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
book_dict = {
"name": "Robinson Crusoe",
"url": "soon",
"create_time": "19.03.2020",
"author": "Daniel Defoe"
}

user_dict = {
"fullname" : "Kostya Zinchuk",
"email" : "truvka90@gmail.com",
"registration": "01.01.2000",
"id": "1000000001",
"login" : "useradmin",
"book_amount": 4,
}
10 changes: 10 additions & 0 deletions Kostya Zinchuk/workshop3/templates/404.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>404</title>
</head>
<body>
<h1>Page Or action is not found</h1>
</body>
</html>
25 changes: 25 additions & 0 deletions Kostya Zinchuk/workshop3/templates/book.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Book</title>
</head>
<body>
<h1>Book info</h1>
<form action="/book" method = "POST" id = "book_d">
<p>Name
<input type="text" name="name" value="{{ book['name'] }}">
</p>
<p>URL
<input type="text" name="url" value="{{ book['url'] }}">
</p>
<p>Create time
<input type="text" name="create_time" value="{{ book['create_time'] }}">
</p>
<p>Author
<input type="text" name="author" value="{{ book['author'] }}">
</p>
</form>
<button type="submit" form = "book_d" >Submit</button>
</body>
</html>
13 changes: 13 additions & 0 deletions Kostya Zinchuk/workshop3/templates/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home</title>
</head>
<body>
<p>Hello, try use in url some of command</p>
<p>/book</p>
<p>/user</p>
<p>/all</p>
</body>
</html>
22 changes: 22 additions & 0 deletions Kostya Zinchuk/workshop3/templates/show.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ALL</title>

</head>
<body>
<h1>User info</h1>
<p>{{ user['fullname'] }} </p>
<p>{{ user['email'] }} </p>
<p>{{ user['registration'] }} </p>
<p>{{ user['id'] }} </p>
<p>{{ user['login'] }} </p>
<p>{{ user['book_amount'] }} </p>
<h1>Book info</h1>
<p>{{ book['name'] }}</p>
<p>{{ book['url'] }}</p>
<p>{{ book['create_time'] }} </p>
<p>{{ book['author'] }} </p>
</body>
</html>
31 changes: 31 additions & 0 deletions Kostya Zinchuk/workshop3/templates/user.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>User</title>
</head>
<body>
<h1>User info</h1>
<form action="/user" method = "POST" id = "user_d">
<p>Full name
<input type="text" name="fname" value="{{ user['fullname'] }}">
</p>
<p>email
<input type="text" name="email" value="{{ user['email'] }}">
</p>
<p>Registration
<input type="text" name="rgstr" value="{{ user['registration'] }}">
</p>
<p>ID
<input type="text" name="id" value="{{ user['id'] }}">
</p>
<p>Login
<input type="text" name="login" value="{{ user['login'] }}">
</p>
<p>Books in usage
<input type="text" name="amount" value="{{ user['book_amount'] }}">
</p>
</form>
<button type="submit" form = "user_d" >Submit</button>
</body>
</html>
194 changes: 194 additions & 0 deletions Kostya Zinchuk/workshop4/source/sql/MYDATABASE_XE.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
CREATE TABLE book (
book_id NUMERIC(10) NOT NULL,
book_name VARCHAR2(50) NOT NULL,
author_name VARCHAR2(50) NOT NULL,
author_lastname VARCHAR2(50) NOT NULL,
book_url VARCHAR2(70) NOT NULL,
CONSTRAINT book_pk PRIMARY KEY ( book_id ),
CONSTRAINT check_id CHECK ( book_id > 0 )
);

CREATE TABLE l_user (
user_name VARCHAR2(50),
user_lastname VARCHAR2(50),
email VARCHAR2(50) NOT NULL PRIMARY KEY,
registration DATE NOT NULL,
login VARCHAR2(20) NOT NULL UNIQUE,
password VARCHAR2(30) NOT NULL,
book_amount NUMERIC,
CONSTRAINT ba_ch CHECK ( book_amount >= 0 )
);

CREATE TABLE user_book (
t_book_id NUMERIC(10) NOT NULL,
user_email VARCHAR2(50) NOT NULL,
CONSTRAINT ub_pk PRIMARY KEY ( t_book_id,
user_email ),
CONSTRAINT book_fk FOREIGN KEY ( t_book_id )
REFERENCES book ( book_id ),
CONSTRAINT user_fk FOREIGN KEY ( user_email )
REFERENCES l_user ( email )
);

CREATE OR REPLACE TRIGGER check_author_name BEFORE
UPDATE OF author_name ON book
FOR EACH ROW
DECLARE
tmp VARCHAR2(50);
BEGIN
SELECT
regexp_replace(:new.author_name, '[[:alpha:]]|_')
INTO tmp
FROM
dual;

IF tmp IS NOT NULL THEN
raise_application_error(-20001, 'Author name cant be with digits');
END IF;
END;
/

CREATE OR REPLACE TRIGGER check_author_name_insert BEFORE
INSERT ON book
FOR EACH ROW
DECLARE
tmp VARCHAR2(50);
BEGIN
SELECT
regexp_replace(:new.author_name, '[[:alpha:]]|_')
INTO tmp
FROM
dual;

IF tmp IS NOT NULL THEN
raise_application_error(-20002, 'Wrong Author name format. Can not be insert in book table');
END IF;
END;
/

CREATE OR REPLACE TRIGGER check_author_lastname BEFORE
UPDATE OF author_lastname ON book
FOR EACH ROW
DECLARE
tmp VARCHAR2(50);
BEGIN
SELECT
regexp_replace(:new.author_lastname, '[[:alpha:]]|_')
INTO tmp
FROM
dual;

IF tmp IS NOT NULL THEN
raise_application_error(-20003, 'Author lastname cant be with digits');
END IF;
END;
/

CREATE OR REPLACE TRIGGER check_author_lastname_insert BEFORE
INSERT ON book
FOR EACH ROW
DECLARE
tmp VARCHAR2(50);
BEGIN
SELECT
regexp_replace(:new.author_lastname, '[[:alpha:]]|_')
INTO tmp
FROM
dual;

IF tmp IS NOT NULL THEN
raise_application_error(-20004, 'Author lastname wrong format. Can not be insert');
END IF;
END;
/

CREATE OR REPLACE TRIGGER check_user_name BEFORE
UPDATE OF user_name ON l_user
FOR EACH ROW
DECLARE
tmp VARCHAR2(50);
BEGIN
SELECT
regexp_replace(:new.user_name, '[[:alpha:]]|_')
INTO tmp
FROM
dual;

IF tmp IS NOT NULL THEN
raise_application_error(-20005, 'User name cant be with digits');
END IF;
END;
/

CREATE OR REPLACE TRIGGER check_user_name_insert BEFORE
INSERT ON l_user
FOR EACH ROW
DECLARE
tmp VARCHAR2(50);
BEGIN
SELECT
regexp_replace(:new.user_name, '[[:alpha:]]|_')
INTO tmp
FROM
dual;

IF tmp IS NOT NULL THEN
raise_application_error(-20006, 'User name wrong format. Can not be insert');
END IF;
END;
/

CREATE OR REPLACE TRIGGER check_user_lastname BEFORE
UPDATE OF user_lastname ON l_user
FOR EACH ROW
DECLARE
tmp VARCHAR2(50);
BEGIN
SELECT
regexp_replace(:new.user_lastname, '[[:alpha:]]|_')
INTO tmp
FROM
dual;

IF tmp IS NOT NULL THEN
raise_application_error(-20007, 'User name cant be with digits');
END IF;
END;
/

CREATE OR REPLACE TRIGGER check_user_lastname_insert BEFORE
INSERT ON l_user
FOR EACH ROW
DECLARE
tmp VARCHAR2(50);
BEGIN
SELECT
regexp_replace(:new.user_lastname, '[[:alpha:]]|_')
INTO tmp
FROM
dual;

IF tmp IS NOT NULL THEN
raise_application_error(-20008, 'User lastname wrong format. Can not be insert');
END IF;
END;
/

CREATE OR REPLACE TRIGGER check_email BEFORE
UPDATE OF email ON l_user
FOR EACH ROW
BEGIN
IF :new.email NOT LIKE '%@%.%' THEN
raise_application_error(-20009, 'Email format is invalid');
END IF;
END;
/

CREATE OR REPLACE TRIGGER check_email_insert BEFORE
INSERT ON l_user
FOR EACH ROW
BEGIN
IF :new.email NOT LIKE '%@%.%' THEN
raise_application_error(-20009, 'Email format is invalid');
END IF;
END;
1 change: 1 addition & 0 deletions Kostya Zinchuk/workshop4/source/sql/readme.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#toto list
Loading