source: bell-scheduler/trunk/fuentes/bell-scheduler/python3-bellscheduler/bellmanager.py @ 6871

Last change on this file since 6871 was 6871, checked in by jrpelegrina, 19 months ago

Fix files and added translations

File size: 4.3 KB
Line 
1#!/usr/bin/env python3
2
3import os
4import json
5import codecs
6import datetime
7from mimetypes import MimeTypes
8import xmlrpc.client as n4dclient
9import ssl
10import tempfile
11import shutil
12
13
14
15class BellManager(object):
16
17        def __init__(self):
18
19                super(BellManager, self).__init__()
20
21                self.dbg=0
22                self.credentials=[]
23                server='localhost'
24                context=ssl._create_unverified_context()
25                self.n4d = n4dclient.ServerProxy("https://"+server+":9779",context=context,allow_none=True)
26               
27
28        #def __init__   
29
30        def _debug(self,function,msg):
31
32                if self.dbg==1:
33                        print("[BELLSCHEDULER]: "+ str(function) + str(msg))
34
35        #def _debug             
36
37        def sync_with_cron(self):
38
39                result=self.n4d.sync_with_cron(self.credentials,'BellSchedulerManager')
40                self._debug("Sync_with_cron: ",result)
41               
42        #def sync_with_cron
43
44
45        def read_conf(self):
46               
47                result=self.n4d.read_conf(self.credentials,'BellSchedulerManager')
48                self._debug("Read configuration file: ",result)
49                self.bells_config=result["data"]
50                return result
51               
52
53        #def read_conf 
54
55       
56        def save_conf(self,info,last_change,action):
57
58                self.bells_config=info
59                change=str(last_change)
60                               
61                result=self.n4d.save_changes(self.credentials,'BellSchedulerManager',info,change,action)
62                self._debug("Save configuration file: ",result)
63                return result
64
65        #def save_conf         
66
67        def check_data(self,name,files,duration):
68
69                if name=="":
70                        return {"result":False,"code":1}
71                       
72
73                if len(files)>0:
74                        if files["sound"]!="":
75                                if files["sound"]!=None:
76                                        self.check_mimetypes(files["sound"],"audio")
77                                else:
78                                        return {"result":False,"code":3}
79                                               
80                        if files["image"]!="":
81                                if files["image"]!=None:
82                                        self.check_mimetypes(files["image"],"image")
83                                else:
84                                        return {"result":False,"code":5}
85                                       
86
87                        if files["url"]!=None:
88                                if files["url"]=="":
89                                        return {"result":False,"code":6}
90                                               
91
92                        if files["directory"]!="":
93                                if files["directory"]==None:
94                                        return {"result":False,"code":7}       
95
96                if duration==0:
97                        return {"result":False,"code":8}                       
98
99                return {"result":True,"code":0}                 
100       
101        #def check_data
102       
103        def check_mimetypes(self,file,check):
104       
105                mime = MimeTypes()
106                mime_type = mime.guess_type(file)
107               
108                if check=="audio":
109                        sound_mime=mime.guess_type(file)
110                        if not 'audio' in sound_mime[0] and not 'video' in sound_mime[0]:
111                                return {"result":False,"code":2}
112                               
113                else:
114                        image_mime=mime.guess_type(file)
115                        if not 'image' in image_mime[0]: 
116                                return {"result":False,"code":4}
117
118        #def check_mimetypes                   
119                               
120
121        def get_order_bell(self,info=None):
122       
123                tmp=[]
124                order_bells=[]
125                if info==None:
126                        if len(self.bells_config)>0:
127                                for item in self.bells_config:
128                                        time=str(self.bells_config[item]["hour"])+":"+str(self.bells_config[item]["minute"])
129                                        time_f=datetime.datetime.strptime(time,"%H:%M")
130                                        x=()
131                                        x=item,time_f
132                                        tmp.append(x)
133                else:
134                        for item in info:
135                                time=str(info[item]["hour"])+":"+str(info[item]["minute"])
136                                time_f=datetime.datetime.strptime(time,"%H:%M")
137                                x=()
138                                x=item,time_f
139                                tmp.append(x)           
140
141                tmp.sort(key=lambda bell:bell[1])
142                for item in tmp:
143                        order_bells.append(item[0])
144
145                return order_bells     
146
147        #def get_order_bells
148       
149
150        def format_time(self,item):
151       
152                time=[]
153                hour=self.bells_config[item]["hour"]
154                minute=self.bells_config[item]["minute"]
155
156                if hour<10:
157                        hour='0'+str(hour)
158
159                if minute<10:
160                        minute='0'+str(minute)
161
162                cron=str(hour)+":"+str(minute)
163                time=[hour,minute,cron]
164                return time             
165
166        #def format_time       
167
168        def copy_media_files(self,image,sound):
169
170                result=self.n4d.copy_media_files(self.credentials,'BellSchedulerManager',image,sound)
171                self._debug("Copy files: ",result)
172                return result
173
174        #def copy_media_files   
175
176
177        def export_bells_conf(self,dest_file):
178
179                user=os.environ["USER"]
180                result=self.n4d.export_bells_conf(self.credentials,'BellSchedulerManager',dest_file,user)
181                self._debug("Export bells conf : ",result)
182                return result
183
184        #def export_bells_conf 
185
186
187        def import_bells_conf(self,orig_file,backup):
188                user=os.environ["USER"]
189                result=self.n4d.import_bells_conf(self.credentials,'BellSchedulerManager',orig_file,user,backup)
190                self._debug("Import bells conf: ",result)       
191                return result
192
193        #def import_bells_conf 
194
195
196        def recovery_bells_conf(self,orig_file,backup):
197                user=os.environ["USER"]
198                result=self.n4d.import_bells_conf(self.credentials,'BellSchedulerManager',orig_file,user,backup)
199                self._debug("Recovery bells conf: ",result)     
200                return result
201
202        #def recovery_bells_conf       
203
204
205#class BellManager             
Note: See TracBrowser for help on using the repository browser.