Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
| Download
Views: 18655
1
from pbx_gs_python_utils.utils.Files import Files
2
3
from oss_hugo.Hugo_Page import Hugo_Page
4
5
6
class OSS_Participant:
7
8
def __init__(self,name=None):
9
self.base_folder = 'content/participant/'
10
self.hugo_page = Hugo_Page(base_folder=self.base_folder)
11
self.name = name
12
self.data = None
13
self.path_md_file = None
14
if self.name:
15
self.load()
16
17
def create(self):
18
if self.exists() is False:
19
self.hugo_page.create(self.name)
20
self.load()
21
return self
22
23
def delete(self):
24
if self.exists() is False:
25
return False
26
self.hugo_page.delete(self.path_md_file)
27
return self.exists() is False
28
29
def delete_field(self,field, auto_save=False):
30
if field in self.fields():
31
del self.metadata()[field]
32
if auto_save:
33
self.save()
34
return True
35
return False
36
37
def exists(self):
38
self.load()
39
return Files.exists(self.path_md_file)
40
41
def field(self, key, value=None):
42
metadata = self.metadata()
43
if metadata:
44
if value is not None:
45
metadata[key] = value
46
return self
47
else:
48
return metadata.get(key)
49
return None
50
51
def fields(self):
52
metadata = self.metadata()
53
if metadata:
54
return list(set(self.metadata()))
55
return []
56
57
def load(self,reload=False):
58
if self.data is None or reload:
59
path = self.name
60
if Files.exists(path) and '.md' in path:
61
self.path_md_file = path
62
else:
63
if '.md' not in path:
64
path = self.hugo_page.fix_name(path) + '.md'
65
if self.name.startswith(self.base_folder) is False: # fix path
66
path = self.base_folder + path
67
self.path_md_file = self.hugo_page.md_file_path(path)
68
self.data = self.hugo_page.load(self.path_md_file)
69
title = self.field('title')
70
if title:
71
self.name = title
72
return self
73
74
def metadata(self):
75
if self.data:
76
return self.data.get('metadata')
77
return None
78
79
def save(self):
80
self.hugo_page.save(self.data)
81
return self
82
83
def set_field(self,key, value):
84
return self.field(key,value)
85