diff --git a/infomentor/connector.py b/infomentor/connector.py index f702fec..10a0988 100644 --- a/infomentor/connector.py +++ b/infomentor/connector.py @@ -262,14 +262,15 @@ class Infomentor(object): def get_news_list(self): """Fetches the list of 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() - 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""" - article_json = self.get_article(id) - storenewsdata = {k: article_json[k] for k in ("title", "content", "date")} + article_json = news_entry + storenewsdata = {k: article_json[k] for k in ("title", "content")} + storenewsdata["date"] = article_json["publishedDate"] storenewsdata["news_id"] = article_json["id"] storenewsdata["raw"] = json.dumps(article_json) storenewsdata["attachments"] = [] @@ -303,7 +304,7 @@ class Infomentor(object): """Fetches the image to a corresponding news entry""" self.logger.info("fetching article image: %s", 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) def get_calendar(self, offset=0, weeks=1): diff --git a/infomentor/informer.py b/infomentor/informer.py index 0a7efb3..5de2fa4 100755 --- a/infomentor/informer.py +++ b/infomentor/informer.py @@ -8,6 +8,7 @@ import hashlib import datetime import math import pushover +import urllib.parse from icalendar import Event, vDate, Calendar from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText @@ -51,16 +52,17 @@ class Informer(object): def update_news(self): session = db.get_db() newslist = self.im.get_news_list() - for newsid in newslist: + for news_entry in newslist: news = ( session.query(model.News) - .filter(model.News.news_id == newsid) + .filter(model.News.news_id == news_entry['id']) .with_parent(self.user, "news") .one_or_none() ) if news is not None: + self.logger.debug('Skipping news') continue - news = self.im.get_news_article(newsid) + news = self.im.get_news_article(news_entry) self._notify_news(news) self.user.news.append(news) session.commit() @@ -86,7 +88,7 @@ class Informer(object): for attachment in news.attachments: fid, fname = attachment.localpath.split("/") text += """
Attachment {0}: {2}/{1}
""".format( - fname, attachment.localpath, cfg["general"]["baseurl"] + fname, urllib.parse.quote(attachment.localpath), cfg["general"]["baseurl"] ) parsed_date = dateparser.parse(news.date) now = datetime.datetime.now() @@ -170,7 +172,7 @@ class Informer(object): for attachment in hw.attachments: fid, fname = attachment.localpath.split("/") text += """
Attachment {0}: {2}/{1}
""".format( - fname, attachment.localpath, cfg["general"]["baseurl"] + fname, urllib.parse.quote(attachment.localpath), cfg["general"]["baseurl"] ) if len(text) > 900: url = self._make_site(text) @@ -253,7 +255,6 @@ class Informer(object): event = Event() event.add("uid", "infomentor_{}".format(entry["id"])) event.add("summary", entry["title"]) - event.add("description", event_details["notes"]) if not event_details["allDayEvent"]: event.add("dtstart", dateparser.parse(entry["start"])) event.add("dtend", dateparser.parse(entry["end"])) @@ -261,6 +262,19 @@ class Informer(object): event.add("dtstart", dateparser.parse(entry["start"]).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) new_cal_entry = calend.to_ical().replace(b"\r", b"") new_cal_hash = hashlib.sha1(new_cal_entry).hexdigest()