Skip to content

Full review of repository code by Denys Velychko - #1

Open
Shushpin wants to merge 136 commits into
Initial-commitfrom
main
Open

Full review of repository code by Denys Velychko#1
Shushpin wants to merge 136 commits into
Initial-commitfrom
main

Conversation

@Shushpin

@ShushpinShushpin commented May 25, 2023

Copy link
Copy Markdown
Owner

Взагалі красава, проект вартує 51-го балу +. Я б такого не зробив, як мінімум через те, що не вчу пітон. Ти молодець, продовжй працювати над проектом.

@ShushpinShushpin left a comment

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Взагалі красава, проект вартує 51-го балу +. Я б такого не зробив, як мінімум через те, що не вчу пітон. Ти молодець, продовжй працювати над проектом.

Comment threadmodels.py

class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(LONGTEXT, nullable=False)

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В класі User ти використовуєте db.String(300) для поля password, що вказує максимальну довжину рядка у 300 символів, зазвичай, для збереження хешів паролів використовуються поля з достатньою довжиною, щоб помістити хеші будь-якої довжини.Я б рекомендується використовувати більшу довжину, наприклад, db.String(512) або використати тип даних, який безпечніше зберігати хеші паролів, такий як db.Binary або db.LargeBinary.

Comment threadmanage.py
from app import create_app,db
from flask_migrate import upgrade,migrate,init,stamp
from models import User

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ти використовуєте app.app_context().push() для створення контексту додатка перед створенням таблиць бази даних. Це може бути зайвим, оскільки app.app_context() автоматично викликає push() для контексту додатка. Можна просто викликати app.app_context() без виклику push().

Comment threadmanage.py
db.create_all()

# migrate database to latest revision
init()

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Потрібно виконати міграцію бази даних перед оновленням (upgrade()) для переконанняся, що структура бази даних відповідає останній ревізії. Можна викликати migrate() перед upgrade().

Comment threadmanage.py
@@ -0,0 +1,19 @@

def deploy():

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ти повторно імпортуєте модуль app на початку функції deploy(). Це може призвести до проблем з виконанням коду, якщо модуль app вже імпортований в головному файлі програми. Рекомендується імпортувати модуль app поза функцією deploy(), наприклад, в головному файлі програми або в файлі, який викликає функцію deploy().

Comment threadforms.py

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Код виглядає красиво і зрозуміло, але ти використовуєш повторювані значення, такі як мінімальна і максимальна довжина рядка для валідаторів Length. Для полегшення зміни цих значень у майбутньому рекомендується використовувати константи або змінні для їх зберігання.

Comment threadforms.py

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ще проблема у використанні іменованих валідаторів. У тебе є декілька валідаторів з однаковими параметрами для різних полів форми. Це можна спростити, використовуючи іменовані валідатори за допомогою wtforms.validators модуля.

Comment threadconfig.py

load_dotenv() # зчитує значення з файлу .env

class Config:

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ти можете використати параметри за замовчуванням для os.getenv(), щоб задати значення за замовчуванням, якщо змінна середовища не знайдена. Це забезпечить більшу гнучкість, коли ти працюєш з різними середовищами

Comment threadtemplates/update.html
@@ -0,0 +1,19 @@
{% extends 'base.html' %}

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Взагалі прикольно зроблено, але можна ще використати форматування рядків для класів CSS та використати блоки для кращої організації коду, типу такого:
{% block form_fields %}

{{ form.title.label(class_="form-label") }}
{{ form.title(class_="form-control", value=post.title) }}

{{ form.content.label(class_="form-label") }}
{{ form.content(class_="form-control", rows=5)}}

{% endblock %}

@ShushpinShushpin left a comment

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Взагалі красава, проект вартує 51-го балу +. Я б такого не зробив, як мінімум через те, що не вчу пітон. Ти молодець, продовжй працювати над проектом.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Shushpin@VitaliySynytskyi@SashaBeetle@npogoncuk