computer-science-club

computer-science-club
git clone https://git.prime8.dev/computer-science-club.git
Log | Files | Refs | README | LICENSE

schoology.py (2077B)


      1 from config import (
      2     GROUP_ID,
      3     SCHOOLOGY_DOMAIN,
      4     SCHOOLOGY_API_KEY,
      5     SCHOOLOGY_API_SECRET,
      6 )
      7 from datetime import datetime
      8 from models import Group, Event, Update, Discussion, Member
      9 from schoolopy import Schoology, Auth
     10 from database import database
     11 import schedule
     12 import time
     13 from threading import Thread
     14 
     15 
     16 auth = Auth(
     17     SCHOOLOGY_API_KEY,
     18     SCHOOLOGY_API_SECRET,
     19     domain=SCHOOLOGY_DOMAIN,
     20 )
     21 api = Schoology(auth)
     22 api.limit = 64
     23 
     24 group = Group(api.get_group(GROUP_ID).title, api.get_group(GROUP_ID).description)
     25 group.projects = database.read()
     26 
     27 
     28 def get_members():
     29     group.leaders = []
     30     group.members = []
     31     for enrolled in api.get_group_enrollments(GROUP_ID):
     32         member = Member(enrolled.name_display)
     33         if enrolled.admin == 1:
     34             group.leaders.append(member)
     35         else:
     36             group.members.append(member)
     37 
     38 
     39 def get_updates():
     40     group.updates = []
     41     for update in api.get_group_updates(GROUP_ID):
     42         user = api.get_user(update.uid)
     43         member = Member(user.name_display)
     44         created = datetime.utcfromtimestamp(int(update.created))
     45         group.updates.append(Update(member, update.body, created))
     46 
     47 
     48 def get_events():
     49     group.events = []
     50     for event in api.get_group_events(GROUP_ID):
     51         start = datetime.strptime(event.start, "%Y-%m-%d %H:%M:%S")
     52         end = None
     53         if event.has_end:
     54             end = datetime.strptime(event.end, "%Y-%m-%d %H:%M:%S")
     55         event = Event(event.id, event.title, event.description, start, end)
     56         group.events.append(event)
     57 
     58 
     59 def get_discussions():
     60     group.discussions = []
     61     for discussion in api.get_group_discussions(GROUP_ID):
     62         group.discussions.append(
     63             Discussion(discussion.id, discussion.title, discussion.body)
     64         )
     65 
     66 
     67 def update():
     68     get_members()
     69     get_updates()
     70     get_events()
     71     get_discussions()
     72 
     73 
     74 update()
     75 schedule.every().hour.do(update)
     76 
     77 
     78 def run():
     79     while True:
     80         schedule.run_pending()
     81         time.sleep(1 * 60)
     82 
     83 
     84 scheduler = Thread(target=run, daemon=True)
     85 scheduler.start()