This commit is contained in:
Louis Mazin 2025-10-30 18:10:23 +01:00
parent 4ee7f50d65
commit deb80bc9b2
5 changed files with 24 additions and 22 deletions

View File

@ -3,7 +3,7 @@ import platform
import uuid import uuid
import requests import requests
from datetime import datetime from datetime import datetime
from typing import Optional, Dict from typing import Dict
from PyQt6.QtCore import QObject, pyqtSignal from PyQt6.QtCore import QObject, pyqtSignal
import os import os
from dotenv import load_dotenv from dotenv import load_dotenv
@ -173,11 +173,11 @@ class LicenseManager(QObject):
"""Retourne le type de licence (free, premium, etc.)""" """Retourne le type de licence (free, premium, etc.)"""
# Si le système de licence est désactivé, retourner "free" # Si le système de licence est désactivé, retourner "free"
if not self.licensing_enabled: if not self.licensing_enabled:
return "free" return None
if not self.license_data: if not self.license_data:
return "free" return None
return self.license_data.get("type", "free") return self.license_data.get("type", None)
def is_feature_available(self, feature_id: str) -> bool: def is_feature_available(self, feature_id: str) -> bool:
""" """
@ -192,7 +192,7 @@ class LicenseManager(QObject):
# Si pas de licence, vérifier dans la config des features gratuites # Si pas de licence, vérifier dans la config des features gratuites
if not self.is_activated(): if not self.is_activated():
free_features = self.settings_manager.get_config("features_by_license").get("free", []) free_features = self.settings_manager.get_config("features_by_license").get(None, [])
return feature_id in free_features return feature_id in free_features
# Vérifier les features autorisées par la licence # Vérifier les features autorisées par la licence
@ -200,13 +200,13 @@ class LicenseManager(QObject):
features_by_type = self.settings_manager.get_config("features_by_license") features_by_type = self.settings_manager.get_config("features_by_license")
allowed_features = features_by_type.get(license_type, []) allowed_features = features_by_type.get(license_type, [])
return feature_id in allowed_features or feature_id in self.settings_manager.get_config("free_features") return feature_id in allowed_features
def get_license_info(self) -> Dict: def get_license_info(self) -> Dict:
"""Retourne les informations de la licence""" """Retourne les informations de la licence"""
if not self.license_data: if not self.license_data:
return { return {
"type": "free", "type": None,
"status": "inactive", "status": "inactive",
"expires_at": None "expires_at": None
} }

View File

@ -150,7 +150,7 @@ class ActivationWindow(QWidget):
self.key_input.setEnabled(False) self.key_input.setEnabled(False)
self.activate_btn.setEnabled(False) self.activate_btn.setEnabled(False)
else: else:
status_text = f"{self.language_manager.get_text('license_free_mode')}" status_text = f"{self.language_manager.get_text('no_license')}"
self.status_label.setText(status_text) self.status_label.setText(status_text)
def format_license_key(self, text): def format_license_key(self, text):

View File

@ -9,16 +9,15 @@
"git_repo": "https://gitea.louismazin.ovh/LouisMazin/PythonApplicationTemplate", "git_repo": "https://gitea.louismazin.ovh/LouisMazin/PythonApplicationTemplate",
"enable_licensing": true, "enable_licensing": true,
"features_by_license": { "features_by_license": {
"free": [ "basic": [
"basic_features" "support"
], ],
"premium": [ "premium": [
"basic_features",
"priority_support" "priority_support"
], ],
"enterprise": [ "enterprise": [
"basic_features", "priority_support",
"priority_support" "unlimited_key_uses"
] ]
} }
} }

View File

@ -42,22 +42,23 @@
"activate": "Activate", "activate": "Activate",
"buy_license": "Buy License", "buy_license": "Buy License",
"comparaisons": "Version Comparison", "comparaisons": "Version Comparison",
"free_version": "Free Version", "basic_version": "Basic Version",
"premium_version": "Premium Version", "premium_version": "Premium Version",
"enterprise_version": "Enterprise Version", "enterprise_version": "Enterprise Version",
"basic_features": "Basic features", "support": "Support",
"priority_support": "Priority support", "priority_support": "Priority support",
"unlimited_key_uses": "Unlimited key uses",
"license_active": "License active", "license_active": "License active",
"license_type": "Type", "license_type": "Type",
"license_email": "Email", "license_email": "Email",
"license_expires": "Expires on", "license_expires": "Expires on",
"license_free_mode": "Free mode - Activate a license for more features", "license_basic_mode": "Basic mode - Activate a license for more features",
"invalid_license_key": "Invalid license key. It must contain at least 16 characters.", "invalid_license_key": "Invalid license key. It must contain at least 16 characters.",
"premium_feature": "Premium Feature",
"premium_feature_message": "The feature '{feature}' requires a Premium or Enterprise license.", "premium_feature_message": "The feature '{feature}' requires a Premium or Enterprise license.",
"upgrade_prompt": "Would you like to upgrade your license?", "upgrade_prompt": "Would you like to upgrade your license?",
"buy_now": "Buy Now", "buy_now": "Buy Now",
"cancel": "Cancel", "cancel": "Cancel",
"activation_required": "Activation is required to continue.", "activation_required": "Activation is required to continue.",
"compare_versions": "Compare Versions" "compare_versions": "Compare Versions",
"no_license": "No License"
} }

View File

@ -42,16 +42,17 @@
"activate": "Activer", "activate": "Activer",
"buy_license": "Acheter une licence", "buy_license": "Acheter une licence",
"comparaisons": "Comparaison des versions", "comparaisons": "Comparaison des versions",
"free_version": "Version Gratuite", "basic_version": "Version Basique",
"premium_version": "Version Premium", "premium_version": "Version Premium",
"enterprise_version": "Version Enterprise", "enterprise_version": "Version Enterprise",
"basic_features": "Fonctionnalités de base", "support": "Support",
"priority_support": "Support prioritaire", "priority_support": "Support prioritaire",
"unlimited_key_uses": "Utilisations de clé illimitées",
"license_active": "Licence active", "license_active": "Licence active",
"license_type": "Type", "license_type": "Type",
"license_email": "Email", "license_email": "Email",
"license_expires": "Expire le", "license_expires": "Expire le",
"license_free_mode": "Mode gratuit - Activez une licence pour plus de fonctionnalités", "license_basic_mode": "Mode basique - Activez une licence pour plus de fonctionnalités",
"invalid_license_key": "Clé de licence invalide. Elle doit contenir au moins 16 caractères.", "invalid_license_key": "Clé de licence invalide. Elle doit contenir au moins 16 caractères.",
"premium_feature": "Fonctionnalité Premium", "premium_feature": "Fonctionnalité Premium",
"premium_feature_message": "La fonctionnalité '{feature}' nécessite une licence Premium ou Enterprise.", "premium_feature_message": "La fonctionnalité '{feature}' nécessite une licence Premium ou Enterprise.",
@ -59,5 +60,6 @@
"buy_now": "Acheter maintenant", "buy_now": "Acheter maintenant",
"cancel": "Annuler", "cancel": "Annuler",
"activation_required": "L'activation est requise pour continuer.", "activation_required": "L'activation est requise pour continuer.",
"compare_versions": "Comparer les versions" "compare_versions": "Comparer les versions",
"no_license": "Pas de licence"
} }