Coverage for portality/api/current/data_objects/journal.py: 90%
21 statements
« prev ^ index » next coverage.py v6.4.2, created at 2022-07-22 15:59 +0100
« prev ^ index » next coverage.py v6.4.2, created at 2022-07-22 15:59 +0100
1from portality import models
3from portality.api.current.data_objects.common_journal_application import OutgoingCommonJournalApplication, _SHARED_STRUCT
5# we only have outgoing journals for the moment
6from portality.lib.coerce import COERCE_MAP
8JOURNAL_STRUCT = {
9 "objects": ["bibjson", "admin"],
10 "fields": {
11 "id": {"coerce": "unicode"},
12 "created_date": {"coerce": "utcdatetime"},
13 "last_updated": {"coerce": "utcdatetime"},
14 "last_manual_update": {"coerce": "utcdatetime"},
15 "es_type": {"coerce": "unicode"}
16 },
17 "structs": {
18 "admin": {
19 "fields": {
20 "in_doaj": {"coerce": "bool", "get__default": False},
21 "ticked": {"coerce": "bool", "get__default": False},
22 "seal": {"coerce": "bool", "get__default": False}
23 }
24 }
25 }
26}
29class OutgoingJournal(OutgoingCommonJournalApplication):
30 """
31 ~~APIOutgoingJournal:Model->APIOutgoingCommonJournalApplication:Model~~
32 ~~->Journal:Model~~
33 """
34 __SEAMLESS_COERCE__ = COERCE_MAP
35 __SEAMLESS_STRUCT__ = [
36 JOURNAL_STRUCT,
37 _SHARED_STRUCT
38 ]
40 def __init__(self, raw=None, **kwargs):
41 super(OutgoingJournal, self).__init__(raw, silent_prune=True, **kwargs)
43 @classmethod
44 def from_model(cls, jm):
45 assert isinstance(jm, models.Journal)
46 d = super(OutgoingJournal, cls).from_model(jm)
47 return d
49 @classmethod
50 def from_model_by_id(cls, id_):
51 j = models.Journal.pull(id_)
52 return cls.from_model(j)
54 @property
55 def data(self):
56 return self.__seamless__.data