99
1010from accounts .models import EmailTemplate , SlackSiteSettings
1111
12+ from celery import shared_task
13+ from django .conf import settings
14+
15+ from accounts .models import CustomUser as User
16+ from hackathon .models import Hackathon
17+ from custom_slack_provider .slack import CustomSlackClient
18+
1219logger = logging .getLogger (__name__ )
20+ logger .setLevel (logging .INFO )
1321
1422
1523@shared_task
@@ -34,3 +42,34 @@ def send_email_from_template(user_email, user_name, hackathon_display_name, temp
3442 "Please create it on the Django Admin Panel" ))
3543 except SMTPException :
3644 logger .exception ("There was an issue sending the email." )
45+ def log_user_numbers ():
46+ users = User .objects .count ()
47+ logger .info (f'Number of users currently: { users } ' )
48+ return
49+
50+
51+ @shared_task
52+ def create_new_slack_channel (hackathon_id , channel_name ):
53+ """ Create a new Slack Channel/Conversation in an existing Workspace """
54+ if not settings .SLACK_ENABLED :
55+ logger .info ("Slack not enabled." )
56+ return
57+
58+ hackathon = Hackathon .objects .get (id = hackathon_id )
59+ logger .info (
60+ (f"Creating new Slack channel { channel_name } for hackathon "
61+ f"{ hackathon .display_name } in Slack Workspace "
62+ f"{ settings .SLACK_WORKSPACE } ({ settings .SLACK_TEAM_ID } )" ))
63+ slack_client = CustomSlackClient (settings .SLACK_BOT_TOKEN )
64+ channel_id = slack_client .create_slack_channel (
65+ channel_name , is_private = True )
66+ logger .info (f"Channel with id { channel_id } created." )
67+
68+ if not channel_id :
69+ logger .error ("No Channel Id found." )
70+ return
71+
72+ channel_url = f'https://{ settings .SLACK_WORKSPACE } .slack.com/archives/{ channel_id } ' # noqa: E501
73+ hackathon .channel_url = channel_url
74+ hackathon .save ()
75+ logger .info (f"Hackathon { hackathon .display_name } updated successfully." )
0 commit comments