Add Freelancer registration model.

This commit is contained in:
Jens Luedicke
2025-07-02 23:05:30 +02:00
parent ff6d2da523
commit 8e100f101a
8 changed files with 602 additions and 7 deletions

View File

@@ -13,6 +13,11 @@ class Role(enum.Enum):
SUPERVISOR = "Supervisor"
ADMIN = "Administrator" # Keep existing admin role
# Define Account Type for freelancer support
class AccountType(enum.Enum):
COMPANY_USER = "Company User"
FREELANCER = "Freelancer"
# Company model for multi-tenancy
class Company(db.Model):
id = db.Column(db.Integer, primary_key=True)
@@ -21,6 +26,9 @@ class Company(db.Model):
description = db.Column(db.Text)
created_at = db.Column(db.DateTime, default=datetime.now)
# Freelancer support
is_personal = db.Column(db.Boolean, default=False) # True for auto-created freelancer companies
# Company settings
is_active = db.Column(db.Boolean, default=True)
max_users = db.Column(db.Integer, default=100) # Optional user limit
@@ -135,6 +143,10 @@ class User(db.Model):
role = db.Column(db.Enum(Role), default=Role.TEAM_MEMBER)
team_id = db.Column(db.Integer, db.ForeignKey('team.id'), nullable=True)
# Freelancer support
account_type = db.Column(db.Enum(AccountType), default=AccountType.COMPANY_USER)
business_name = db.Column(db.String(100), nullable=True) # Optional business name for freelancers
# Unique constraints per company
__table_args__ = (
db.UniqueConstraint('company_id', 'username', name='uq_user_username_per_company'),