-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmanage.py
More file actions
64 lines (58 loc) · 2.7 KB
/
manage.py
File metadata and controls
64 lines (58 loc) · 2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import datetime
import os
import sys
import threading
import time
def update_data():
from modules import github_api
from modules.discord import discord
from modules.models import DiscordUser
from modules.storage import storage
start_time = time.time()
while True:
collaborators = github_api.GithubAPI_UserRoles.get_collaborators()
contributors = github_api.GithubAPI_UserRoles.get_contributors()
stargazers = github_api.GithubAPI_UserRoles.get_stargazers()
subscribers = github_api.GithubAPI_UserRoles.get_subscribers()
owner = github_api.GithubAPI_UserRoles.get_owner()
for user in DiscordUser.objects.all():
access_token = None
if user.expires_in < time.time():
access_token = discord.get_access_token(user.user_id, storage.get_discord_tokens(user.user_id))
con_data = discord.get_connections_data(
access_token or storage.get_discord_tokens(user.user_id)['access_token'])
for con in con_data:
if con['type'] == 'github':
github_username = con['name']
metadata = {
'collaborator': True if github_username in collaborators else False,
'contributor': True if github_username in contributors else False,
'stargazer': True if github_username in stargazers else False,
'watcher': True if github_username in subscribers else False,
'owner': True if github_username == owner else False,
}
old_metadata = discord.get_metadata(user.user_id, storage.get_discord_tokens(user.user_id))
if old_metadata != metadata:
discord.push_metadata(user.user_id, storage.get_discord_tokens(user.user_id), metadata)
print(datetime.datetime.now().strftime('%H:%M:%S'))
time.sleep(60.0 - ((time.time() - start_time) % 60.0))
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'discord_github_link.settings')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
tmain = threading.Thread(target=main)
t = threading.Thread(target=update_data)
tmain.start()
t.start()
tmain.join()