This repository has been archived by the owner on Apr 12, 2021. It is now read-only.
/
models.py
110 lines (72 loc) · 2.33 KB
/
models.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# -*- coding: UTF-8 -*-
# Copyright 2014-2015 Luc Saffre
# License: BSD (see file COPYING for details)
"""The :xfile:`models.py` module for the :mod:`lino.modlib.lists` app.
This module defines the tables
- :class:`List`
- :class:`Membership`
"""
from __future__ import unicode_literals
from builtins import object
import logging
logger = logging.getLogger(__name__)
from django.db import models
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from lino.core.roles import SiteStaff
from lino.api import dd
from lino import mixins
class ListType(mixins.BabelNamed):
"""Represents a possible choice for the `list_type` field of a
:class:`List`.
"""
class Meta(object):
verbose_name = _("List Type")
verbose_name_plural = _("List Types")
class ListTypes(dd.Table):
required_roles = dd.required(dd.SiteStaff)
model = 'lists.ListType'
column_names = 'name *'
class List(mixins.BabelNamed, mixins.Referrable):
class Meta(object):
verbose_name = _("Partner List")
verbose_name_plural = _("Partner Lists")
list_type = dd.ForeignKey('lists.ListType', blank=True, null=True)
remarks = models.TextField(_("Remarks"), blank=True)
# print_labels = PrintLabelsAction()
class Lists(dd.Table):
required_roles = dd.required(dd.SiteStaff)
model = 'lists.List'
column_names = 'ref name list_type *'
order_by = ['ref']
insert_layout = dd.FormLayout("""
ref list_type
name
remarks
""", window_size=(60, 12))
detail_layout = dd.FormLayout("""
ref list_type id
name
remarks
MembersByList
""")
class Member(mixins.Sequenced):
class Meta(object):
verbose_name = _("List memberships")
verbose_name_plural = _("List memberships")
list = dd.ForeignKey('lists.List')
partner = dd.ForeignKey(
'contacts.Partner',
related_name="list_memberships")
remark = models.CharField(_("Remark"), max_length=200, blank=True)
class Members(dd.Table):
required_roles = dd.required(dd.SiteStaff)
model = 'lists.Member'
class MembersByList(Members):
master_key = 'list'
order_by = ['seqno']
column_names = "seqno partner remark"
class MembersByPartner(Members):
master_key = 'partner'
column_names = "list remark"
order_by = ['list__ref']