add article and pubications

This commit is contained in:
2026-06-25 10:30:24 +03:00
parent 7fa8a9b7fc
commit 7206a0a0c5
25 changed files with 1180 additions and 86 deletions

View File

@@ -20,6 +20,7 @@ class UserModel:
otp_code: Optional[str] = None
otp_expiration: Optional[str] = None
active: Optional[int] = None
can_create_articles: Optional[int] = 0
class Users:
def __init__(self, db_path="instance/app_database.db"):
@@ -46,10 +47,15 @@ class Users:
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
otp_code TEXT,
otp_expiration TIMESTAMPTZ,
active INTEGER DEFAULT 1
active INTEGER DEFAULT 1,
can_create_articles INTEGER DEFAULT 0
);
"""
)
try:
cursor.execute("ALTER TABLE users ADD COLUMN can_create_articles INTEGER DEFAULT 0;")
except sqlite3.OperationalError:
pass
conn.commit()
def update_user_otp(self, user_id, otp_code, expiration):
@@ -117,7 +123,8 @@ class Users:
created_at=row[11],
otp_code=row[12],
otp_expiration=row[13],
active=row[14]
active=row[14],
can_create_articles=row[15] if len(row) > 15 else 0
)
def register_user(self, email, password, workspace_id):
@@ -141,10 +148,10 @@ class Users:
cursor = conn.cursor()
cursor.execute(
"""
INSERT INTO users (workspace_id, first_name, last_name, email, password, address, profession, role, status, profile_pic)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
INSERT INTO users (workspace_id, first_name, last_name, email, password, address, profession, role, status, profile_pic, can_create_articles)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
""",
(user.workspace_id, user.first_name, user.last_name, user.email, user.password, user.address, user.profession, user.role, user.status, user.profile_pic),
(user.workspace_id, user.first_name, user.last_name, user.email, user.password, user.address, user.profession, user.role, user.status, user.profile_pic, user.can_create_articles or 0),
)
conn.commit()
return cursor.lastrowid
@@ -174,7 +181,8 @@ class Users:
created_at=row[11],
otp_code=row[12],
otp_expiration=row[13],
active=row[14]
active=row[14],
can_create_articles=row[15] if len(row) > 15 else 0
)
def get_user_by_email(self, email: str) -> UserModel | None:
@@ -201,7 +209,8 @@ class Users:
created_at=row[11],
otp_code=row[12],
otp_expiration=row[13],
active=row[14]
active=row[14],
can_create_articles=row[15] if len(row) > 15 else 0
)
def get_users_by_workspace_id(self, workspace_id):
@@ -225,7 +234,8 @@ class Users:
created_at=row[11],
otp_code=row[12],
otp_expiration=row[13],
active=row[14]
active=row[14],
can_create_articles=row[15] if len(row) > 15 else 0
)
for row in rows
]
@@ -251,13 +261,14 @@ class Users:
created_at=row[11],
otp_code=row[12],
otp_expiration=row[13],
active=row[14]
active=row[14],
can_create_articles=row[15] if len(row) > 15 else 0
)
for row in rows
]
def update_user(self, user_id, first_name=None, last_name=None, email=None, password = None, address = None, profession = None, role = None, status = None, profile_pic=None, active=None):
if first_name is None and last_name is None and email is None and password is None and address is None and profession is None and role is None and status is None and profile_pic is None and active is None:
def update_user(self, user_id, first_name=None, last_name=None, email=None, password = None, address = None, profession = None, role = None, status = None, profile_pic=None, active=None, can_create_articles=None):
if first_name is None and last_name is None and email is None and password is None and address is None and profession is None and role is None and status is None and profile_pic is None and active is None and can_create_articles is None:
return False
fields = []
@@ -293,6 +304,9 @@ class Users:
if active is not None:
fields.append("active = ?")
params.append(active)
if can_create_articles is not None:
fields.append("can_create_articles = ?")
params.append(can_create_articles)
params.append(user_id)
query = f"UPDATE users SET {', '.join(fields)} WHERE id = ?"