import logging
import json

from django.conf import settings
from django.contrib.auth import get_user_model
from django.db import models

logger = logging.getLogger(__name__)
User = get_user_model()

class Page(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)

    slug = models.SlugField(blank=True, unique=True)
    public = models.BooleanField(default=False)

    title = models.TextField(blank=True)
    body = models.TextField(blank=True)
    data = models.JSONField(default=dict, blank=True)

    def __str__(self):
        return '%s (%s)' % (self.title, self.slug)

    def get_absolute_url(self):
        if self.slug:
            return '/' + settings.URL_PREFIX + '' + self.slug
        else:
            return '/' + settings.URL_PREFIX[:-1]


class Text(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)

    slug = models.SlugField()
    public = models.BooleanField(default=False)
    position = models.IntegerField(default=0)

    title = models.TextField()
    byline = models.TextField(default="", blank=True)
    body = models.TextField(default="", blank=True)

    data = models.JSONField(default=dict)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return '/' + settings.URL_PREFIX + 'assemblies/' + self.slug

    def json(self):
        data = {}
        data['title'] = self.title
        data['byline'] = self.byline
        data['body'] = self.body
        data.update(self.data)
        return json.dumps(data)