From e42885308cd0b5603b7bd9cab6f7726d4d06d9cd Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Thu, 19 Oct 2017 18:28:28 +0200 Subject: [PATCH] Add diario --- .gitignore | 3 ++- db.py | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e5e290c3..d92785a6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ config.ini .idea/ -__pycache__ \ No newline at end of file +__pycache__ +diario.json \ No newline at end of file diff --git a/db.py b/db.py index 4465a896..957ef5e3 100644 --- a/db.py +++ b/db.py @@ -1,4 +1,5 @@ import time +import datetime from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker, relationship from sqlalchemy import Column, BigInteger, Integer, String, Numeric, DateTime, ForeignKey, Float, Enum, create_engine, UniqueConstraint @@ -519,6 +520,42 @@ class Overwatch(Base): self.level = j["prestige"] * 100 + j["level"] self.rank = j["comprank"] + +class Diario(Base): + __tablename__ = "diario" + + id = Column(Integer, primary_key=True) + timestamp = Column(DateTime, nullable=False) + saver_id = Column(Integer, ForeignKey("telegram.telegram_id")) + saver = relationship("Telegram", foreign_keys=saver_id) + author_id = Column(Integer, ForeignKey("telegram.telegram_id")) + author = relationship("Telegram", foreign_keys=author_id) + text = Column(String) + + def __repr__(self): + return f"" + + def __str__(self): + return f"{self.id} - {self.timestamp} - {self.author}: {self.text}" + + @staticmethod + def import_from_json(file): + import json + file = open(file, "r") + j = json.load(file) + for entry in j: + if "sender" in entry: + author = session.query(Telegram).filter_by(username=entry["sender"].lstrip("@")).first() + else: + author = None + d = Diario(timestamp=datetime.datetime.fromtimestamp(float(entry["timestamp"])), + author=author, + text=entry["text"]) + print(d) + session.add(d) + session.commit() + + # If run as script, create all the tables in the db if __name__ == "__main__": Base.metadata.create_all(bind=engine) \ No newline at end of file