|
@@ -2,7 +2,9 @@
|
|
|
# create default user in PoLZy DB
|
|
|
#
|
|
|
|
|
|
-from polzybackend.models import User, Role, Company, UserToCompany, CompanyToCompany
|
|
|
+from polzybackend.models import User, Role, Company, UserToCompany, CompanyToCompany, \
|
|
|
+ GamificationEvent, GamificationBadgeLevel, GamificationBadgeType, GamificationBadge, GamificationBadgeDescription
|
|
|
+from random import sample, choice
|
|
|
from polzybackend.utils.auth_utils import generate_token
|
|
|
import uuid
|
|
|
from datetime import datetime, timedelta
|
|
@@ -15,15 +17,37 @@ app = create_app(Config)
|
|
|
db = SQLAlchemy(app)
|
|
|
print(db)
|
|
|
|
|
|
-# create OAuth provider
|
|
|
-'''
|
|
|
-print('Creating OAuth Provider...')
|
|
|
-provider = OAuthProvider(
|
|
|
- name='SampleProvider',
|
|
|
- client_id=str(uuid.uuid4()),
|
|
|
- secret_key=generate_token(16),
|
|
|
+# Gamification Badges
|
|
|
+print('Creating Gamification Badges...')
|
|
|
+badge_levels = [
|
|
|
+ "Bronze",
|
|
|
+ "Silver",
|
|
|
+ "Gold",
|
|
|
+]
|
|
|
+levels = []
|
|
|
+next_level = None
|
|
|
+for name in reversed(badge_levels):
|
|
|
+ level = GamificationBadgeLevel(name=name, next_level=next_level, is_lowest=(name == 'Bronze'))
|
|
|
+ levels.append(level)
|
|
|
+ next_level = level
|
|
|
+db.session.add_all(levels)
|
|
|
+
|
|
|
+# add many types
|
|
|
+total_badge_number = 20
|
|
|
+types = [
|
|
|
+ GamificationBadgeType(
|
|
|
+ name=f"type{i+1}",
|
|
|
+ title=f"Type {i+1}",
|
|
|
+ ) for i in range(total_badge_number)]
|
|
|
+db.session.add_all(types)
|
|
|
+# type-level descriptions
|
|
|
+db.session.add_all([
|
|
|
+ GamificationBadgeDescription(
|
|
|
+ level=level,
|
|
|
+ type=type,
|
|
|
+ description=f"Requirements to earn {level.name} Badge {type.title}",
|
|
|
+ ) for level in levels for type in types]
|
|
|
)
|
|
|
-'''
|
|
|
|
|
|
# create roles
|
|
|
print('Creating roles...')
|
|
@@ -111,6 +135,17 @@ db.session.add(company_admin)
|
|
|
db.session.add(organization_agent)
|
|
|
db.session.add(organization_clerk)
|
|
|
|
|
|
+# add badges
|
|
|
+user_badge_num = 10
|
|
|
+db.session.add_all([
|
|
|
+ GamificationBadge(
|
|
|
+ user=admin,
|
|
|
+ company=company,
|
|
|
+ type_id=_+1,
|
|
|
+ level=choice(levels),
|
|
|
+ ) for _ in sample(range(total_badge_number), user_badge_num)
|
|
|
+])
|
|
|
+
|
|
|
company = Company(
|
|
|
name="SportIns",
|
|
|
displayed_name="Sports Insurance - just do it and be save",
|