Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1# 

2# Copyright (C) 2019-2020 Leo P. Singer <leo.singer@ligo.org> 

3# 

4# This program is free software: you can redistribute it and/or modify 

5# it under the terms of the GNU General Public License as published by 

6# the Free Software Foundation, either version 3 of the License, or 

7# (at your option) any later version. 

8# 

9# This program is distributed in the hope that it will be useful, 

10# but WITHOUT ANY WARRANTY; without even the implied warranty of 

11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

12# GNU General Public License for more details. 

13# 

14# You should have received a copy of the GNU General Public License 

15# along with this program. If not, see <https://www.gnu.org/licenses/>. 

16# 

17from .base import Mapping, Mutable, Resource 

18from .log import EventLog, SupereventLog 

19from .util import field_collection, str_or_collection 

20 

21 

22# FIXME: events have a 'log/' resource whereas superevents have 'logs/'. 

23# Combine BaseLogs, EventLogs, and SupereventLogs into a single Logs class 

24# once this inconsistency has been fixed. 

25class BaseLogs(Mapping, Mutable, Resource): 

26 

27 def get(self, **kwargs): 

28 return super().get(**kwargs)['log'] 

29 

30 def create_or_update(self, key, *, 

31 filename=None, filecontents=None, tags=None, 

32 **kwargs): 

33 # FIXME: gracedb server does not support form-encoded input 

34 # if there is no file! 

35 if filename is None and filecontents is None: 

36 json = {'tagname': str_or_collection(tags), **kwargs} 

37 data = None 

38 files = None 

39 else: 

40 data = (*field_collection('tagname', tags), *kwargs.items()) 

41 json = None 

42 files = {'upload': (filename, filecontents)} 

43 return super().create_or_update(key, data=data, json=json, files=files) 

44 

45 

46class EventLogs(BaseLogs): 

47 

48 path = 'log/' 

49 mapped_class = EventLog 

50 

51 

52class SupereventLogs(BaseLogs): 

53 

54 path = 'logs/' 

55 mapped_class = SupereventLog