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

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

Disabled debug mode

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