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.
@@ -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,8 @@
1
+ # flask-coreutils
2
+
3
+ Simple Flask cargo transportation system.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ 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,4 @@
1
+ class Config:
2
+ SQLALCHEMY_DATABASE_URI = ("postgresql://postgres:123456@localhost:5434/gruzovozoff")
3
+ SQLALCHEMY_TRACK_MODIFICATIONS = False
4
+ SECRET_KEY = "gruzovozoff_secret_key"
@@ -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,9 @@
1
+ from flask_login import current_user
2
+
3
+
4
+ def admin_required():
5
+
6
+ return (
7
+ current_user.is_authenticated
8
+ and current_user.role.name == "Администратор"
9
+ )
@@ -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,5 @@
1
+ flask
2
+ flask-login
3
+ flask-sqlalchemy
4
+ werkzeug
5
+ psycopg2-binary
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -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
+ )