import utils
from flask_sqlalchemy import SQLAlchemy
import flask
import random
from datetime import datetime
from user import User, db


class AnswerToComment(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey("user.id"))
    parent_id = db.Column(db.Integer, db.ForeignKey("comment.id"))
    text = db.Column(db.String(512))
    publication_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)

    @classmethod
    def register(cls, user, text, parent, commit=True):
        text = utils.clean_html(text)
        try:
            c = AnswerToComment(user=user, text=text, parent=parent)
            db.session.add(c)
            print("     adding answer from", user.username, "to comment", parent.id)
            if commit:
                db.session.commit()
            return True
        except Exception as e:
            print("Failed to register " + cls.__name__)
            print("Error:", e)
            db.session.rollback()
            return False

    def __repr__(self):
        return "<Answer: {} : --> u:{}>".format(self.id, self.user.username)

    def get_html(self):
        html = ""
        html += '<div class="AnswerDiv">'
        html += '<div class="CommentDate">' + self.user.username + ' : ' + \
                self.publication_date.strftime('%d-%m-%Y %H:%M:%S') + '</div>'
        html += '<div class="CommentText">' + self.text + '</div>'
        html += '</div>' #AnswerDiv
        return html