src/notes/models/core.py
author salimr <riwad.salim@yahoo.fr>
Mon, 08 Oct 2018 03:30:54 +0200
changeset 160 183b128a4189
parent 142 56850f5c73f6
permissions -rw-r--r--
Change sessions list disposition and add sessions number

"""
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)