added homework notification
This commit is contained in:
58
login.py
58
login.py
@@ -51,10 +51,23 @@ class NewsInformer(object):
|
|||||||
'news_notification',
|
'news_notification',
|
||||||
primary_id=False,
|
primary_id=False,
|
||||||
)
|
)
|
||||||
|
self.db_homework = db.create_table(
|
||||||
|
'homework',
|
||||||
|
primary_id='id',
|
||||||
|
primary_type=db.types.integer
|
||||||
|
)
|
||||||
|
self.db_homework_notification = db.create_table(
|
||||||
|
'homework_notification',
|
||||||
|
primary_id=False,
|
||||||
|
)
|
||||||
self.db_news_attachments = db.create_table(
|
self.db_news_attachments = db.create_table(
|
||||||
'news_attachments',
|
'news_attachments',
|
||||||
primary_id=False,
|
primary_id=False,
|
||||||
)
|
)
|
||||||
|
self.db_hw_attachments = db.create_table(
|
||||||
|
'homework_attachments',
|
||||||
|
primary_id=False,
|
||||||
|
)
|
||||||
self.db_attachments = db.create_table(
|
self.db_attachments = db.create_table(
|
||||||
'attachments',
|
'attachments',
|
||||||
primary_id='id',
|
primary_id='id',
|
||||||
@@ -111,6 +124,46 @@ class NewsInformer(object):
|
|||||||
def appSetup(self):
|
def appSetup(self):
|
||||||
print(self.im.appsetup())
|
print(self.im.appsetup())
|
||||||
|
|
||||||
|
def notify_homework(self):
|
||||||
|
homework = self.im.get_homework()
|
||||||
|
self.logger.info('Parsing %d items', len(homework))
|
||||||
|
for datehw in homework:
|
||||||
|
for hw in datehw['items']:
|
||||||
|
storehw = self.db_homework.find_one(id=hw['id'])
|
||||||
|
if storehw is None:
|
||||||
|
self.logger.info('NEW homework found %s', hw['subject'])
|
||||||
|
storehw = {
|
||||||
|
k: hw[k] for k in ('id', 'subject', 'courseElement', 'homeworkText')
|
||||||
|
}
|
||||||
|
for attachment in hw['attachments']:
|
||||||
|
self.logger.info('found attachment %s', attachment['title'])
|
||||||
|
att_id = re.findall('Download/([0-9]+)?', attachment['url'])[0]
|
||||||
|
f = self.im.download(attachment['url'], directory='files', skip=True)
|
||||||
|
try:
|
||||||
|
_path, urlname = os.path.split(f)
|
||||||
|
storehw['homeworkText'] += '''\nAttachment {0}: https://files.hyttioaoa.de/{0}\n'''.format(urlname)
|
||||||
|
if self.db_attachments.find_one(id=int(att_id)):
|
||||||
|
continue
|
||||||
|
self.db_attachments.insert(
|
||||||
|
{'id': int(att_id), 'filename':f}
|
||||||
|
);
|
||||||
|
self.db_hw_attachments.insert({'att_id': att_id, 'hw_id':hw['id']})
|
||||||
|
except Exception as e:
|
||||||
|
self.logger.exception('failed to store attachment')
|
||||||
|
self.logger.info(storehw)
|
||||||
|
self.db_homework.insert(storehw)
|
||||||
|
|
||||||
|
if not self._notification_sent(storehw['id']):
|
||||||
|
self.logger.info('Notify %s about %s',
|
||||||
|
self.username, storehw['subject'])
|
||||||
|
self.send_notification(
|
||||||
|
storehw['id'],
|
||||||
|
storehw['homeworkText'],
|
||||||
|
storehw['subject'],
|
||||||
|
timestamp=True
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def notify_news(self):
|
def notify_news(self):
|
||||||
im_news = self.im.get_news()
|
im_news = self.im.get_news()
|
||||||
@@ -130,7 +183,7 @@ class NewsInformer(object):
|
|||||||
f = self.im.download(attachment['url'], directory='files', skip=True)
|
f = self.im.download(attachment['url'], directory='files', skip=True)
|
||||||
try:
|
try:
|
||||||
_path, urlname = os.path.split(f)
|
_path, urlname = os.path.split(f)
|
||||||
storenewsdata['content'] += '''Attachment {0}: https://files.hyttioaoa.de/{0}\n'''.format(urlname)
|
storenewsdata['content'] += '''\nAttachment {0}: https://files.hyttioaoa.de/{0}\n'''.format(urlname)
|
||||||
if self.db_attachments.find_one(id=int(att_id)):
|
if self.db_attachments.find_one(id=int(att_id)):
|
||||||
continue
|
continue
|
||||||
self.db_attachments.insert(
|
self.db_attachments.insert(
|
||||||
@@ -372,7 +425,6 @@ class Infomentor(object):
|
|||||||
def appsetup(self):
|
def appsetup(self):
|
||||||
self.logger.info('appsetup')
|
self.logger.info('appsetup')
|
||||||
r = self._do_get(self._mim_url('account/PairedDevices/PairedDevices'))
|
r = self._do_get(self._mim_url('account/PairedDevices/PairedDevices'))
|
||||||
print(r.content)
|
|
||||||
return r.json()
|
return r.json()
|
||||||
|
|
||||||
def get_newsimage(self, id):
|
def get_newsimage(self, id):
|
||||||
@@ -535,6 +587,8 @@ def main():
|
|||||||
'date': now, 'ok': False, 'info': '', 'degraded_count':0}
|
'date': now, 'ok': False, 'info': '', 'degraded_count':0}
|
||||||
try:
|
try:
|
||||||
ni.notify_news()
|
ni.notify_news()
|
||||||
|
if user['username'] == 'mbilger':
|
||||||
|
ni.notify_homework()
|
||||||
statusinfo['ok'] = True
|
statusinfo['ok'] = True
|
||||||
statusinfo['degraded'] = False
|
statusinfo['degraded'] = False
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
Reference in New Issue
Block a user