src/notes/models/core.py
author ymh <ymh.work@gmail.com>
Sat, 06 Jul 2019 00:59:17 +0200
changeset 202 2c1d48085efc
parent 142 56850f5c73f6
permissions -rw-r--r--
update yarn.lock + activate password reset form

"""
irinotes core module
"""
from auditlog.registry import auditlog
from django.conf import settings
from django.contrib.auth.models import Group
from django.db import models
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _

from .base import Model


class Session(Model):
    """
    Class modeling a Session
    """
    class Meta:
        verbose_name = _('Session')
        verbose_name_plural = _('Sessions')

    date = models.DateTimeField(default=timezone.now, verbose_name=_('Session|date'))

    owner = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
    )
    title = models.TextField(
        null=True,
        blank=True,
        verbose_name=_('Session|title')
    )
    description = models.TextField(
        null=True,
        blank=True,
        verbose_name=_('Session|description')
    )
    group = models.ForeignKey(
        Group,
        null=False,
        verbose_name=_('Session|group'),
        on_delete=models.PROTECT
    )
    protocol = models.TextField(
        null=True,
        blank=True,
        verbose_name=_('Session|protocol')
    )

    def get_additional_data(self):
        return {'ext_id': str(self.ext_id)}

    def __str__(self):
        return self.title


class Note(Model):
    """
    Class nodeling a Note
    """
    class Meta:
        verbose_name = _('Note')
        verbose_name_plural = _('Notes')
        ordering = ["tc_start"]

    def get_additional_data(self):
        return {'ext_id': str(self.ext_id)}

    tc_start = models.DateTimeField(verbose_name=_('Note|tc_start'))
    tc_end = models.DateTimeField(verbose_name=_('Note|tc_end'))
    session = models.ForeignKey(
        Session,
        on_delete=models.CASCADE,
        related_name='notes',
        verbose_name=_('Note|session')
    )
    plain = models.TextField(
        null=True,
        blank=True,
        verbose_name=_('Note|plain')
    )
    html = models.TextField(
        null=True,
        blank=True,
        verbose_name=_('Note|html')
    )
    raw = models.TextField(
        null=True,
        blank=True,
        verbose_name=_('Note|raw')
    )
    margin_note = models.TextField(
        null=True,
        blank=True,
        verbose_name=_('Note|margin_note')
    )
    categorization = models.TextField(
        null=True,
        blank=True,
        verbose_name=_('Note|categorization')
    )
auditlog.register(Session)
auditlog.register(Note)