src/notes/models/core.py
author ymh <ymh.work@gmail.com>
Wed, 18 Jul 2018 17:32:09 +0200
changeset 142 56850f5c73f6
parent 131 adad5563603c
permissions -rw-r--r--
- upgrade libraries - python 3.7 compatibility - First protocol management implementation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
24
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
"""
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
irinotes core module
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
"""
126
ba8bc0199464 add log api for syncing
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
     4
from auditlog.registry import auditlog
24
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
from django.conf import settings
131
adad5563603c add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
     6
from django.contrib.auth.models import Group
24
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
from django.db import models
71
75dc1e794cf4 add date field on session object
ymh <ymh.work@gmail.com>
parents: 31
diff changeset
     8
from django.utils import timezone
24
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
from django.utils.translation import ugettext_lazy as _
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
from .base import Model
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
class Session(Model):
71
75dc1e794cf4 add date field on session object
ymh <ymh.work@gmail.com>
parents: 31
diff changeset
    15
    """
75dc1e794cf4 add date field on session object
ymh <ymh.work@gmail.com>
parents: 31
diff changeset
    16
    Class modeling a Session
75dc1e794cf4 add date field on session object
ymh <ymh.work@gmail.com>
parents: 31
diff changeset
    17
    """
24
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
    class Meta:
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
        verbose_name = _('Session')
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
        verbose_name_plural = _('Sessions')
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
71
75dc1e794cf4 add date field on session object
ymh <ymh.work@gmail.com>
parents: 31
diff changeset
    22
    date = models.DateTimeField(default=timezone.now, verbose_name=_('Session|date'))
75dc1e794cf4 add date field on session object
ymh <ymh.work@gmail.com>
parents: 31
diff changeset
    23
24
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
    owner = models.ForeignKey(
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
        settings.AUTH_USER_MODEL,
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
        on_delete=models.CASCADE,
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
    )
31
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    28
    title = models.TextField(
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    29
        null=True,
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    30
        blank=True,
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    31
        verbose_name=_('Session|title')
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    32
    )
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    33
    description = models.TextField(
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    34
        null=True,
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    35
        blank=True,
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    36
        verbose_name=_('Session|description')
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    37
    )
131
adad5563603c add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    38
    group = models.ForeignKey(
adad5563603c add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    39
        Group,
adad5563603c add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    40
        null=False,
142
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents: 131
diff changeset
    41
        verbose_name=_('Session|group'),
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents: 131
diff changeset
    42
        on_delete=models.PROTECT
131
adad5563603c add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    43
    )
31
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    44
    protocol = models.TextField(
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    45
        null=True,
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    46
        blank=True,
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    47
        verbose_name=_('Session|protocol')
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    48
    )
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    49
126
ba8bc0199464 add log api for syncing
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
    50
    def get_additional_data(self):
ba8bc0199464 add log api for syncing
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
    51
        return {'ext_id': str(self.ext_id)}
ba8bc0199464 add log api for syncing
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
    52
ba8bc0199464 add log api for syncing
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
    53
    def __str__(self):
ba8bc0199464 add log api for syncing
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
    54
        return self.title
ba8bc0199464 add log api for syncing
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
    55
24
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
class Note(Model):
71
75dc1e794cf4 add date field on session object
ymh <ymh.work@gmail.com>
parents: 31
diff changeset
    58
    """
75dc1e794cf4 add date field on session object
ymh <ymh.work@gmail.com>
parents: 31
diff changeset
    59
    Class nodeling a Note
75dc1e794cf4 add date field on session object
ymh <ymh.work@gmail.com>
parents: 31
diff changeset
    60
    """
24
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
    class Meta:
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
        verbose_name = _('Note')
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
        verbose_name_plural = _('Notes')
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
        ordering = ["tc_start"]
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
126
ba8bc0199464 add log api for syncing
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
    66
    def get_additional_data(self):
ba8bc0199464 add log api for syncing
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
    67
        return {'ext_id': str(self.ext_id)}
ba8bc0199464 add log api for syncing
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
    68
24
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
    tc_start = models.DateTimeField(verbose_name=_('Note|tc_start'))
3b3999550508 first data model for backend
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
    tc_end = models.DateTimeField(verbose_name=_('Note|tc_end'))
31
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    71
    session = models.ForeignKey(
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    72
        Session,
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    73
        on_delete=models.CASCADE,
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    74
        related_name='notes',
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    75
        verbose_name=_('Note|session')
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    76
    )
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    77
    plain = models.TextField(
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    78
        null=True,
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    79
        blank=True,
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    80
        verbose_name=_('Note|plain')
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    81
    )
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    82
    html = models.TextField(
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    83
        null=True,
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    84
        blank=True,
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    85
        verbose_name=_('Note|html')
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    86
    )
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    87
    raw = models.TextField(
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    88
        null=True,
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    89
        blank=True,
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    90
        verbose_name=_('Note|raw')
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    91
    )
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    92
    margin_note = models.TextField(
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    93
        null=True,
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    94
        blank=True,
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    95
        verbose_name=_('Note|margin_note')
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    96
    )
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    97
    categorization = models.TextField(
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    98
        null=True,
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
    99
        blank=True,
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
   100
        verbose_name=_('Note|categorization')
63be3ce389f7 improve api
ymh <ymh.work@gmail.com>
parents: 24
diff changeset
   101
    )
126
ba8bc0199464 add log api for syncing
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
   102
auditlog.register(Session)
ba8bc0199464 add log api for syncing
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
   103
auditlog.register(Note)