""" Management command to seed appreciation categories and badges Usage: python manage.py seed_appreciation_data """ from django.core.management.base import BaseCommand from django.db import transaction from apps.appreciation.models import ( AppreciationBadge, AppreciationCategory, ) class Command(BaseCommand): help = 'Seed appreciation categories and badges' def handle(self, *args, **options): self.stdout.write('Seeding appreciation data...') with transaction.atomic(): # Seed categories self.seed_categories() # Seed badges self.seed_badges() self.stdout.write(self.style.SUCCESS('Successfully seeded appreciation data!')) def seed_categories(self): """Seed appreciation categories""" categories = [ { 'code': 'excellent_care', 'name_en': 'Excellent Care', 'name_ar': 'رعاية ممتازة', 'description_en': 'For providing exceptional patient care', 'description_ar': 'لتقديم رعاية استثنائية للمرضى', 'icon': 'fa-heart-pulse', 'color': '#FF5733', 'order': 1, }, { 'code': 'team_player', 'name_en': 'Team Player', 'name_ar': 'لاعب فريق', 'description_en': 'For outstanding teamwork and collaboration', 'description_ar': 'للعمل الجماعي والتعاون المتميز', 'icon': 'fa-users', 'color': '#33FF57', 'order': 2, }, { 'code': 'innovation', 'name_en': 'Innovation', 'name_ar': 'الابتكار', 'description_en': 'For introducing innovative solutions', 'description_ar': 'لتقديم حلول مبتكرة', 'icon': 'fa-lightbulb', 'color': '#F3FF33', 'order': 3, }, { 'code': 'leadership', 'name_en': 'Leadership', 'name_ar': 'القيادة', 'description_en': 'For demonstrating exceptional leadership', 'description_ar': 'لإظهار قيادة استثنائية', 'icon': 'fa-crown', 'color': '#FFD700', 'order': 4, }, { 'code': 'mentorship', 'name_en': 'Mentorship', 'name_ar': 'التوجيه', 'description_en': 'For guiding and supporting colleagues', 'description_ar': 'لإرشاد ودعم الزملاء', 'icon': 'fa-hands-holding-child', 'color': '#33FFF3', 'order': 5, }, { 'code': 'going_extra_mile', 'name_en': 'Going the Extra Mile', 'name_ar': 'بذل جهد إضافي', 'description_en': 'For going above and beyond', 'description_ar': 'للتجاوز التوقعات', 'icon': 'fa-rocket', 'color': '#FF33F3', 'order': 6, }, { 'code': 'reliability', 'name_en': 'Reliability', 'name_ar': 'الموثوقية', 'description_en': 'For consistent and dependable performance', 'description_ar': 'للأداء المتسابق والموثوق', 'icon': 'fa-shield-check', 'color': '#3357FF', 'order': 7, }, { 'code': 'positive_attitude', 'name_en': 'Positive Attitude', 'name_ar': 'التفاؤل', 'description_en': 'For maintaining a positive outlook', 'description_ar': 'للحفاظ على التفاؤل', 'icon': 'fa-face-smile', 'color': '#FFA500', 'order': 8, }, ] for category_data in categories: category, created = AppreciationCategory.objects.get_or_create( code=category_data['code'], hospital=None, # System-wide categories defaults=category_data ) if created: self.stdout.write( self.style.SUCCESS(f"Created category: {category.name_en}") ) else: self.stdout.write( self.style.WARNING(f"Category already exists: {category.name_en}") ) def seed_badges(self): """Seed appreciation badges""" badges = [ { 'code': 'first_appreciation', 'name_en': 'First Appreciation', 'name_ar': 'أول تكريم', 'description_en': 'Received your first appreciation', 'description_ar': 'حصلت على أول تكريم', 'icon': 'fa-star', 'color': '#FFD700', 'criteria_type': 'received_count', 'criteria_value': 1, 'order': 1, }, { 'code': 'appreciated_5', 'name_en': 'Rising Star', 'name_ar': 'نجم صاعد', 'description_en': 'Received 5 appreciations', 'description_ar': 'حصلت على 5 تكريمات', 'icon': 'fa-star-half-stroke', 'color': '#C0C0C0', 'criteria_type': 'received_count', 'criteria_value': 5, 'order': 2, }, { 'code': 'appreciated_10', 'name_en': 'Shining Star', 'name_ar': 'نجم لامع', 'description_en': 'Received 10 appreciations', 'description_ar': 'حصلت على 10 تكريمات', 'icon': 'fa-star', 'color': '#FFD700', 'criteria_type': 'received_count', 'criteria_value': 10, 'order': 3, }, { 'code': 'appreciated_25', 'name_en': 'Super Star', 'name_ar': 'نجم خارق', 'description_en': 'Received 25 appreciations', 'description_ar': 'حصلت على 25 تكريم', 'icon': 'fa-trophy', 'color': '#FFA500', 'criteria_type': 'received_count', 'criteria_value': 25, 'order': 4, }, { 'code': 'appreciated_50', 'name_en': 'Legendary', 'name_ar': 'أسطوري', 'description_en': 'Received 50 appreciations', 'description_ar': 'حصلت على 50 تكريم', 'icon': 'fa-crown', 'color': '#FF5733', 'criteria_type': 'received_count', 'criteria_value': 50, 'order': 5, }, { 'code': 'monthly_champion', 'name_en': 'Monthly Champion', 'name_ar': 'بطل الشهر', 'description_en': 'Received 10 appreciations in a month', 'description_ar': 'حصلت على 10 تكريمات في شهر واحد', 'icon': 'fa-medal', 'color': '#33FF57', 'criteria_type': 'received_month', 'criteria_value': 10, 'order': 6, }, { 'code': 'streak_4_weeks', 'name_en': 'Consistent', 'name_ar': 'مستمر', 'description_en': 'Received appreciations for 4 consecutive weeks', 'description_ar': 'حصلت على تكريمات لمدة 4 أسابيع متتالية', 'icon': 'fa-fire', 'color': '#FF4500', 'criteria_type': 'streak_weeks', 'criteria_value': 4, 'order': 7, }, { 'code': 'diverse_appreciation', 'name_en': 'Well-Loved', 'name_ar': 'محبوب', 'description_en': 'Received appreciations from 10 different people', 'description_ar': 'حصلت على تكريمات من 10 أشخاص مختلفين', 'icon': 'fa-heart', 'color': '#FF1493', 'criteria_type': 'diverse_senders', 'criteria_value': 10, 'order': 8, }, ] for badge_data in badges: badge, created = AppreciationBadge.objects.get_or_create( code=badge_data['code'], defaults=badge_data ) if created: self.stdout.write( self.style.SUCCESS(f"Created badge: {badge.name_en}") ) else: self.stdout.write( self.style.WARNING(f"Badge already exists: {badge.name_en}") )