diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..a8c11cd --- /dev/null +++ b/.env.example @@ -0,0 +1,4 @@ +SECRET_KEY=some_super_secret_key +RECAPTCHA_PUBLIC_KEY=your_public_recaptcha_key +RECAPTCHA_PRIVATE_KEY=your_private_recaptcha_key +SQLALCHEMY_DATABASE_URI=db_path \ No newline at end of file diff --git a/.gitignore b/.gitignore index 0c24a22..f0366ba 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ /static/thumbnails/ /static/videos/ /venv/ -/__pycache__/ \ No newline at end of file +/__pycache__/ +.env \ No newline at end of file diff --git a/README.md b/README.md index 80b1065..ef074ea 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![](https://artberry.xyz/static/Logo.svg "test")](https://artberry.xyz/static/Logo.svg "test") ### booru сайт нового поколения -**Приватный репозиторий для разработки и тестирования новых версий веб-приложения artberry** +**репозиторий для разработки и тестирования новых версий веб-приложения artberry** ------------ @@ -21,28 +21,28 @@ #### ЗАПУСК И ТЕСТИРОВАНИЕ -**Для удобства и скорости разработки выполните следующие шаги:** +#### Для удобства и скорости разработки выполните следующие шаги: #### создайте виртуальное окружение: -`python -m venv venv` +- `python -m venv venv` #### запустите виртуальное окружение: -WINDOWS: -**powershell: **` .\venv\Scripts\Activate` -**CMD: **`venv\Scripts\activate.bat` +*WINDOWS*: +- **powershell:** ` .\venv\Scripts\Activate` +- **CMD:** `venv\Scripts\activate.bat` -LINUX | MAC: -`source venv/bin/activate` +*LINUX* | *MAC*: +- `source venv/bin/activate` #### установите зависимости: -`pip install -r requirements.txt` +- `pip install -r requirements.txt` #### запустите проект -`python app.py` или `flask run` +- `python app.py` или `flask run` -##### Для отладки в конце файла `app.py` измените: +#### Для отладки в конце файла `app.py` измените: -`app.run(debug=False)` **на:** `app.run(debug=True)` +- `app.run(debug=False)` **на:** `app.run(debug=True)` ------------ diff --git a/app.py b/app.py index 45fb75d..410a3f6 100644 --- a/app.py +++ b/app.py @@ -24,26 +24,28 @@ from wtforms.validators import DataRequired, Length, EqualTo, ValidationError, R from wtforms import StringField, PasswordField, SubmitField from wtforms.validators import DataRequired, EqualTo, Regexp from flask_wtf import FlaskForm, RecaptchaField +from dotenv import load_dotenv app = Flask(__name__) csrf = CSRFProtect(app) +load_dotenv() app.config.update( - SECRET_KEY='PASTE SOMETHING HERE', + SECRET_KEY=os.getenv('SECRET_KEY'), WTF_CSRF_ENABLED=True, - RECAPTCHA_PUBLIC_KEY="PASTE RECAPTCHA KEY HERE", - RECAPTCHA_PRIVATE_KEY="PASTE RECAPTCHA KEY HERE", - SQLALCHEMY_DATABASE_URI='sqlite:///artberry.db', + RECAPTCHA_PUBLIC_KEY=os.getenv('RECAPTCHA_PUBLIC_KEY'), + RECAPTCHA_PRIVATE_KEY=os.getenv('RECAPTCHA_PRIVATE_KEY'), + SQLALCHEMY_DATABASE_URI=os.getenv('SQLALCHEMY_DATABASE_URI'), UPLOAD_FOLDER={ - 'images': 'static/arts/', - 'arts': 'static/arts/', - 'videos': 'static/videos/', - 'thumbnails': 'static/thumbnails/', - 'avatars': 'static/avatars/', - 'banners': 'static/banners/', - 'comics': 'static/comics', - 'comicthumbs': 'static/comicthumbs', - 'posts': 'static/posts/' + 'images': 'static/arts/', + 'arts': 'static/arts/', + 'videos': 'static/videos/', + 'thumbnails': 'static/thumbnails/', + 'avatars': 'static/avatars/', + 'banners': 'static/banners/', + 'comics': 'static/comics', + 'comicthumbs': 'static/comicthumbs', + 'posts': 'static/posts/' }, ALLOWED_IMAGE_EXTENSIONS={'png', 'jpg', 'jpeg', 'gif', 'webp', 'gif'}, ALLOWED_VIDEO_EXTENSIONS={'mp4', 'avi', 'mov'}, @@ -97,9 +99,6 @@ class User(db.Model, UserMixin): avatar_file = db.Column(db.String(50), nullable=True) banner_file = db.Column(db.String(50), nullable=True) bio = db.Column(db.Text, nullable=True) - show_publications = db.Column(db.Boolean, default=True) - hide_elements = db.Column(db.Boolean, default=False) - site_mask = db.Column(db.Boolean, default=False) current_item = db.Column(db.String(30), nullable=True) def __repr__(self): @@ -461,9 +460,9 @@ def image_edit(id): ) class EditVideoForm(FlaskForm): - video_name = StringField('Title', validators=[DataRequired(), Length(max=100)], render_kw={"placeholder": "Введите название видео"}) - video_thumbnail = FileField('Thumbnail', validators=[FileAllowed(['jpg', 'jpeg', 'png', 'gif'], 'Только изображения!')]) - description = TextAreaField('Description', validators=[DataRequired(), Length(max=500)], render_kw={"placeholder": "Введите описание видео"}) + video_name = StringField('Title', validators=[DataRequired(), Length(max=100)], render_kw={"placeholder": "Enter video title"}) + video_thumbnail = FileField('Thumbnail', validators=[FileAllowed(['jpg', 'jpeg', 'png', 'gif'], 'Only images!')]) + description = TextAreaField('Description', validators=[DataRequired(), Length(max=500)], render_kw={"placeholder": "Enter video description"}) tags = StringField('Tags', validators=[DataRequired(), Length(max=100)], render_kw={"placeholder": "Tags"}) submit = SubmitField('Save') @@ -1596,4 +1595,4 @@ def buy_item(item_id): if __name__ == '__main__': with app.app_context(): db.create_all() - app.run(debug=True) \ No newline at end of file + app.run(debug=False) \ No newline at end of file