updated to new api

This commit is contained in:
2019-05-11 11:14:42 +02:00
parent a96a8ba82c
commit 999beb6269
2 changed files with 27 additions and 12 deletions

View File

@@ -262,14 +262,15 @@ class Infomentor(object):
def get_news_list(self): def get_news_list(self):
"""Fetches the list of news""" """Fetches the list of news"""
self.logger.info("fetching news") self.logger.info("fetching news")
self._do_post(self._mim_url("News/news/GetArticleList")) self._do_post(self._mim_url("Communication/News/GetNewsList"))
news_json = self.get_json_return() news_json = self.get_json_return()
return [str(i["id"]) for i in news_json["items"]] return news_json['items']
def get_news_article(self, id): def get_news_article(self, news_entry):
"""Receive all the article information""" """Receive all the article information"""
article_json = self.get_article(id) article_json = news_entry
storenewsdata = {k: article_json[k] for k in ("title", "content", "date")} storenewsdata = {k: article_json[k] for k in ("title", "content")}
storenewsdata["date"] = article_json["publishedDate"]
storenewsdata["news_id"] = article_json["id"] storenewsdata["news_id"] = article_json["id"]
storenewsdata["raw"] = json.dumps(article_json) storenewsdata["raw"] = json.dumps(article_json)
storenewsdata["attachments"] = [] storenewsdata["attachments"] = []
@@ -303,7 +304,7 @@ class Infomentor(object):
"""Fetches the image to a corresponding news entry""" """Fetches the image to a corresponding news entry"""
self.logger.info("fetching article image: %s", id) self.logger.info("fetching article image: %s", id)
filename = "{}.image".format(id) filename = "{}.image".format(id)
url = "News/NewsImage/GetImage?id={}".format(id) url = "Communication/NewsImage/GetImage?id={}".format(id)
return self.download_file(url, directory="images", filename=filename) return self.download_file(url, directory="images", filename=filename)
def get_calendar(self, offset=0, weeks=1): def get_calendar(self, offset=0, weeks=1):

View File

@@ -8,6 +8,7 @@ import hashlib
import datetime import datetime
import math import math
import pushover import pushover
import urllib.parse
from icalendar import Event, vDate, Calendar from icalendar import Event, vDate, Calendar
from email.mime.multipart import MIMEMultipart from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText from email.mime.text import MIMEText
@@ -51,16 +52,17 @@ class Informer(object):
def update_news(self): def update_news(self):
session = db.get_db() session = db.get_db()
newslist = self.im.get_news_list() newslist = self.im.get_news_list()
for newsid in newslist: for news_entry in newslist:
news = ( news = (
session.query(model.News) session.query(model.News)
.filter(model.News.news_id == newsid) .filter(model.News.news_id == news_entry['id'])
.with_parent(self.user, "news") .with_parent(self.user, "news")
.one_or_none() .one_or_none()
) )
if news is not None: if news is not None:
self.logger.debug('Skipping news')
continue continue
news = self.im.get_news_article(newsid) news = self.im.get_news_article(news_entry)
self._notify_news(news) self._notify_news(news)
self.user.news.append(news) self.user.news.append(news)
session.commit() session.commit()
@@ -86,7 +88,7 @@ class Informer(object):
for attachment in news.attachments: for attachment in news.attachments:
fid, fname = attachment.localpath.split("/") fid, fname = attachment.localpath.split("/")
text += """<br>Attachment {0}: {2}/{1} <br>""".format( text += """<br>Attachment {0}: {2}/{1} <br>""".format(
fname, attachment.localpath, cfg["general"]["baseurl"] fname, urllib.parse.quote(attachment.localpath), cfg["general"]["baseurl"]
) )
parsed_date = dateparser.parse(news.date) parsed_date = dateparser.parse(news.date)
now = datetime.datetime.now() now = datetime.datetime.now()
@@ -170,7 +172,7 @@ class Informer(object):
for attachment in hw.attachments: for attachment in hw.attachments:
fid, fname = attachment.localpath.split("/") fid, fname = attachment.localpath.split("/")
text += """<br>Attachment {0}: {2}/{1}<br>""".format( text += """<br>Attachment {0}: {2}/{1}<br>""".format(
fname, attachment.localpath, cfg["general"]["baseurl"] fname, urllib.parse.quote(attachment.localpath), cfg["general"]["baseurl"]
) )
if len(text) > 900: if len(text) > 900:
url = self._make_site(text) url = self._make_site(text)
@@ -253,7 +255,6 @@ class Informer(object):
event = Event() event = Event()
event.add("uid", "infomentor_{}".format(entry["id"])) event.add("uid", "infomentor_{}".format(entry["id"]))
event.add("summary", entry["title"]) event.add("summary", entry["title"])
event.add("description", event_details["notes"])
if not event_details["allDayEvent"]: if not event_details["allDayEvent"]:
event.add("dtstart", dateparser.parse(entry["start"])) event.add("dtstart", dateparser.parse(entry["start"]))
event.add("dtend", dateparser.parse(entry["end"])) event.add("dtend", dateparser.parse(entry["end"]))
@@ -261,6 +262,19 @@ class Informer(object):
event.add("dtstart", dateparser.parse(entry["start"]).date()) event.add("dtstart", dateparser.parse(entry["start"]).date())
event.add("dtend", dateparser.parse(entry["end"]).date()) event.add("dtend", dateparser.parse(entry["end"]).date())
description = event_details["notes"]
self.logger.debug(event_details['info'])
self.logger.debug(type(event_details['info']))
eventinfo = event_details['info']
self.logger.debug(eventinfo)
self.logger.debug(type(eventinfo))
for res in eventinfo['resources']:
f = self.im.download_file(res["url"], directory="files")
description += """\nAttachment {0}: {2}/{1}""".format(
res['title'], urllib.parse.quote(f), cfg["general"]["baseurl"]
)
event.add("description", description)
calend.add_component(event) calend.add_component(event)
new_cal_entry = calend.to_ical().replace(b"\r", b"") new_cal_entry = calend.to_ical().replace(b"\r", b"")
new_cal_hash = hashlib.sha1(new_cal_entry).hexdigest() new_cal_hash = hashlib.sha1(new_cal_entry).hexdigest()