flask-coreutils-ivzvr 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- flask_coreutils_ivzvr-0.1.0/PKG-INFO +36 -0
- flask_coreutils_ivzvr-0.1.0/README.md +8 -0
- flask_coreutils_ivzvr-0.1.0/flask_coreutils/__init__.py +32 -0
- flask_coreutils_ivzvr-0.1.0/flask_coreutils/app.py +36 -0
- flask_coreutils_ivzvr-0.1.0/flask_coreutils/config.py +4 -0
- flask_coreutils_ivzvr-0.1.0/flask_coreutils/models.py +75 -0
- flask_coreutils_ivzvr-0.1.0/flask_coreutils/utils.py +9 -0
- flask_coreutils_ivzvr-0.1.0/flask_coreutils/validators.py +25 -0
- flask_coreutils_ivzvr-0.1.0/flask_coreutils_ivzvr.egg-info/PKG-INFO +36 -0
- flask_coreutils_ivzvr-0.1.0/flask_coreutils_ivzvr.egg-info/SOURCES.txt +13 -0
- flask_coreutils_ivzvr-0.1.0/flask_coreutils_ivzvr.egg-info/dependency_links.txt +1 -0
- flask_coreutils_ivzvr-0.1.0/flask_coreutils_ivzvr.egg-info/requires.txt +5 -0
- flask_coreutils_ivzvr-0.1.0/flask_coreutils_ivzvr.egg-info/top_level.txt +1 -0
- flask_coreutils_ivzvr-0.1.0/setup.cfg +4 -0
- flask_coreutils_ivzvr-0.1.0/setup.py +28 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: flask-coreutils-ivzvr
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A simple Flask-based cargo transportation system
|
|
5
|
+
Home-page: https://github.com/yourusername/flask-coreutils
|
|
6
|
+
Author: Your Name
|
|
7
|
+
Author-email: your@email.com
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: Framework :: Flask
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Requires-Python: >=3.8
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
Requires-Dist: flask
|
|
15
|
+
Requires-Dist: flask-login
|
|
16
|
+
Requires-Dist: flask-sqlalchemy
|
|
17
|
+
Requires-Dist: werkzeug
|
|
18
|
+
Requires-Dist: psycopg2-binary
|
|
19
|
+
Dynamic: author
|
|
20
|
+
Dynamic: author-email
|
|
21
|
+
Dynamic: classifier
|
|
22
|
+
Dynamic: description
|
|
23
|
+
Dynamic: description-content-type
|
|
24
|
+
Dynamic: home-page
|
|
25
|
+
Dynamic: requires-dist
|
|
26
|
+
Dynamic: requires-python
|
|
27
|
+
Dynamic: summary
|
|
28
|
+
|
|
29
|
+
# flask-coreutils
|
|
30
|
+
|
|
31
|
+
Simple Flask cargo transportation system.
|
|
32
|
+
|
|
33
|
+
## Installation
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
pip install flask-coreutils
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from flask import Flask
|
|
2
|
+
from .config import Config
|
|
3
|
+
from .models import db
|
|
4
|
+
from .routes.auth import auth_bp
|
|
5
|
+
from .routes.admin import admin_bp
|
|
6
|
+
from .routes.request import request_bp
|
|
7
|
+
|
|
8
|
+
def create_app():
|
|
9
|
+
app = Flask(__name__)
|
|
10
|
+
app.config.from_object(Config)
|
|
11
|
+
|
|
12
|
+
db.init_app(app)
|
|
13
|
+
|
|
14
|
+
from flask_login import LoginManager
|
|
15
|
+
login_manager = LoginManager()
|
|
16
|
+
login_manager.init_app(app)
|
|
17
|
+
login_manager.login_view = "auth.login"
|
|
18
|
+
|
|
19
|
+
@login_manager.user_loader
|
|
20
|
+
def load_user(user_id):
|
|
21
|
+
from .models import User
|
|
22
|
+
return User.query.get(int(user_id))
|
|
23
|
+
|
|
24
|
+
app.register_blueprint(auth_bp)
|
|
25
|
+
app.register_blueprint(admin_bp)
|
|
26
|
+
app.register_blueprint(request_bp)
|
|
27
|
+
|
|
28
|
+
@app.route("/")
|
|
29
|
+
def index():
|
|
30
|
+
return "Flask CoreUtils is running!"
|
|
31
|
+
|
|
32
|
+
return app
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from flask import Flask, render_template
|
|
2
|
+
from flask_login import LoginManager
|
|
3
|
+
from config import Config
|
|
4
|
+
from models import db, User
|
|
5
|
+
from routes.auth import auth_bp
|
|
6
|
+
from routes.admin import admin_bp
|
|
7
|
+
from routes.request import request_bp
|
|
8
|
+
from routes.admin import admin_bp
|
|
9
|
+
|
|
10
|
+
app = Flask(__name__)
|
|
11
|
+
app.config.from_object(Config)
|
|
12
|
+
|
|
13
|
+
db.init_app(app)
|
|
14
|
+
|
|
15
|
+
login_manager = LoginManager()
|
|
16
|
+
login_manager.init_app(app)
|
|
17
|
+
|
|
18
|
+
login_manager.login_view = "auth.login"
|
|
19
|
+
login_manager.login_message = "Для доступа необходимо войти в систему"
|
|
20
|
+
|
|
21
|
+
@login_manager.user_loader
|
|
22
|
+
def load_user(user_id):
|
|
23
|
+
return User.query.get(int(user_id))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
app.register_blueprint(auth_bp)
|
|
27
|
+
app.register_blueprint(request_bp)
|
|
28
|
+
app.register_blueprint(admin_bp)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@app.route("/")
|
|
32
|
+
def index():
|
|
33
|
+
return render_template("index.html")
|
|
34
|
+
|
|
35
|
+
if __name__ == "__main__":
|
|
36
|
+
app.run(debug=True)
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
from flask_sqlalchemy import SQLAlchemy
|
|
2
|
+
from flask_login import UserMixin
|
|
3
|
+
|
|
4
|
+
db = SQLAlchemy()
|
|
5
|
+
|
|
6
|
+
class Role(db.Model):
|
|
7
|
+
__tablename__ = "roles"
|
|
8
|
+
|
|
9
|
+
id = db.Column(db.Integer, primary_key=True)
|
|
10
|
+
name = db.Column(db.String(50), unique=True, nullable=False)
|
|
11
|
+
|
|
12
|
+
users = db.relationship("User", backref="role")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class User(UserMixin, db.Model):
|
|
16
|
+
__tablename__ = "users"
|
|
17
|
+
|
|
18
|
+
id = db.Column(db.Integer, primary_key=True)
|
|
19
|
+
|
|
20
|
+
role_id = db.Column(db.Integer, db.ForeignKey("roles.id"), nullable=False)
|
|
21
|
+
full_name = db.Column(db.String(255), nullable=False)
|
|
22
|
+
phone = db.Column(db.String(20), nullable=False)
|
|
23
|
+
email = db.Column(db.String(255), unique=True, nullable=False)
|
|
24
|
+
login = db.Column(db.String(100), unique=True, nullable=False)
|
|
25
|
+
password_hash = db.Column(db.Text, nullable=False)
|
|
26
|
+
created_at = db.Column(db.DateTime, server_default=db.func.now())
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class CargoType(db.Model):
|
|
30
|
+
__tablename__ = "cargo_types"
|
|
31
|
+
|
|
32
|
+
id = db.Column(db.Integer, primary_key=True)
|
|
33
|
+
name = db.Column(db.String(100), unique=True, nullable=False)
|
|
34
|
+
|
|
35
|
+
class RequestStatus(db.Model):
|
|
36
|
+
__tablename__ = "request_statuses"
|
|
37
|
+
|
|
38
|
+
id = db.Column(db.Integer, primary_key=True)
|
|
39
|
+
name = db.Column(db.String(50), unique=True, nullable=False)
|
|
40
|
+
|
|
41
|
+
class Request(db.Model):
|
|
42
|
+
__tablename__ = "requests"
|
|
43
|
+
|
|
44
|
+
id = db.Column(db.Integer, primary_key=True)
|
|
45
|
+
user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False)
|
|
46
|
+
cargo_type_id = db.Column(db.Integer, db.ForeignKey("cargo_types.id"), nullable=False)
|
|
47
|
+
status_id = db.Column(db.Integer, db.ForeignKey("request_statuses.id"), nullable=False)
|
|
48
|
+
transportation_datetime = db.Column(db.DateTime, nullable=False)
|
|
49
|
+
cargo_weight = db.Column(db.Numeric(10, 2), nullable=False)
|
|
50
|
+
cargo_size = db.Column(db.String(255), nullable=False)
|
|
51
|
+
pickup_address = db.Column(db.Text, nullable=False)
|
|
52
|
+
delivery_address = db.Column(db.Text, nullable=False)
|
|
53
|
+
created_at = db.Column(db.DateTime, server_default=db.func.now())
|
|
54
|
+
|
|
55
|
+
user = db.relationship("User")
|
|
56
|
+
cargo_type = db.relationship("CargoType")
|
|
57
|
+
status = db.relationship("RequestStatus")
|
|
58
|
+
review = db.relationship("Review", back_populates="request", uselist=False)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class Review(db.Model):
|
|
62
|
+
__tablename__ = "reviews"
|
|
63
|
+
|
|
64
|
+
id = db.Column(db.Integer, primary_key=True)
|
|
65
|
+
request_id = db.Column(db.Integer, db.ForeignKey("requests.id"), unique=True, nullable=False)
|
|
66
|
+
review_text = db.Column(db.Text, nullable=False)
|
|
67
|
+
created_at = db.Column(db.DateTime, server_default=db.func.now())
|
|
68
|
+
|
|
69
|
+
request = db.relationship("Request", back_populates="review")
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import re
|
|
2
|
+
|
|
3
|
+
def validate_login(login):
|
|
4
|
+
return bool(
|
|
5
|
+
re.fullmatch(
|
|
6
|
+
r"[А-Яа-яЁё]{6,}",
|
|
7
|
+
login
|
|
8
|
+
)
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
def validate_full_name(full_name):
|
|
12
|
+
return bool(
|
|
13
|
+
re.fullmatch(
|
|
14
|
+
r"[А-Яа-яЁё ]+",
|
|
15
|
+
full_name
|
|
16
|
+
)
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
def validate_phone(phone):
|
|
20
|
+
return bool(
|
|
21
|
+
re.fullmatch(
|
|
22
|
+
r"\+7\(\d{3}\)-\d{3}-\d{2}-\d{2}",
|
|
23
|
+
phone
|
|
24
|
+
)
|
|
25
|
+
)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: flask-coreutils-ivzvr
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A simple Flask-based cargo transportation system
|
|
5
|
+
Home-page: https://github.com/yourusername/flask-coreutils
|
|
6
|
+
Author: Your Name
|
|
7
|
+
Author-email: your@email.com
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: Framework :: Flask
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Requires-Python: >=3.8
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
Requires-Dist: flask
|
|
15
|
+
Requires-Dist: flask-login
|
|
16
|
+
Requires-Dist: flask-sqlalchemy
|
|
17
|
+
Requires-Dist: werkzeug
|
|
18
|
+
Requires-Dist: psycopg2-binary
|
|
19
|
+
Dynamic: author
|
|
20
|
+
Dynamic: author-email
|
|
21
|
+
Dynamic: classifier
|
|
22
|
+
Dynamic: description
|
|
23
|
+
Dynamic: description-content-type
|
|
24
|
+
Dynamic: home-page
|
|
25
|
+
Dynamic: requires-dist
|
|
26
|
+
Dynamic: requires-python
|
|
27
|
+
Dynamic: summary
|
|
28
|
+
|
|
29
|
+
# flask-coreutils
|
|
30
|
+
|
|
31
|
+
Simple Flask cargo transportation system.
|
|
32
|
+
|
|
33
|
+
## Installation
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
pip install flask-coreutils
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
README.md
|
|
2
|
+
setup.py
|
|
3
|
+
flask_coreutils/__init__.py
|
|
4
|
+
flask_coreutils/app.py
|
|
5
|
+
flask_coreutils/config.py
|
|
6
|
+
flask_coreutils/models.py
|
|
7
|
+
flask_coreutils/utils.py
|
|
8
|
+
flask_coreutils/validators.py
|
|
9
|
+
flask_coreutils_ivzvr.egg-info/PKG-INFO
|
|
10
|
+
flask_coreutils_ivzvr.egg-info/SOURCES.txt
|
|
11
|
+
flask_coreutils_ivzvr.egg-info/dependency_links.txt
|
|
12
|
+
flask_coreutils_ivzvr.egg-info/requires.txt
|
|
13
|
+
flask_coreutils_ivzvr.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
flask_coreutils
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from setuptools import setup, find_packages
|
|
2
|
+
|
|
3
|
+
setup(
|
|
4
|
+
name="flask-coreutils-ivzvr",
|
|
5
|
+
version="0.1.0",
|
|
6
|
+
author="Your Name",
|
|
7
|
+
author_email="your@email.com",
|
|
8
|
+
description="A simple Flask-based cargo transportation system",
|
|
9
|
+
long_description=open("README.md", encoding="utf-8").read(),
|
|
10
|
+
long_description_content_type="text/markdown",
|
|
11
|
+
url="https://github.com/yourusername/flask-coreutils",
|
|
12
|
+
packages=find_packages(),
|
|
13
|
+
include_package_data=True,
|
|
14
|
+
install_requires=[
|
|
15
|
+
"flask",
|
|
16
|
+
"flask-login",
|
|
17
|
+
"flask-sqlalchemy",
|
|
18
|
+
"werkzeug",
|
|
19
|
+
"psycopg2-binary",
|
|
20
|
+
],
|
|
21
|
+
classifiers=[
|
|
22
|
+
"Programming Language :: Python :: 3",
|
|
23
|
+
"Framework :: Flask",
|
|
24
|
+
"License :: OSI Approved :: MIT License",
|
|
25
|
+
"Operating System :: OS Independent",
|
|
26
|
+
],
|
|
27
|
+
python_requires=">=3.8",
|
|
28
|
+
)
|