def __process_online_data(self, page, data=None): html = '' if page in self.online_pages: if MOCKDATA: self.__print_debug('Using MOCK Data for page ' + page) html = MockData.getpage(page) else: post_data = None if data is not None: post_data = urllib.parse.urlencode(data).encode('utf-8') response = self.opener.open( self.portal_url + '/' + self.online_pages[page], post_data) html = response.read().decode('utf-8') if page != 'login' and self.login_detect_regex.search(html): #self.__notify_message('notification','Cookie expired, relogin for page' + page) if self.login(): self.__print_debug( 'Recursive restart processing online data') html = self.__process_online_data(page, data) return html
def __parse_account_data(self, html): self.application_data['mobile_number'] = self.regex_phonenumber.search( html).group('phonenumber') self.application_data['mobile_plan'] = self.regex_mobile_plan.search( html).group('mobileplan') self.application_data['extra_costs'] = self.regex_extra_costs.search( html).group('extra_costs') sms_usage = self.regex_sms_usage.search(html) if sms_usage: self.application_data['sms_usage']['total'] = int( sms_usage.group('totalsms')) self.application_data['sms_usage']['used'] = int( float(self.application_data['sms_usage']['total']) * (float(sms_usage.group('usedsms')) / 100)) # Mock data if MOCKDATA: self.application_data['sms_usage']['used'] = MockData.random( self.application_data['sms_usage']['total']) self.application_data['sms_usage']['free'] = int( self.application_data['sms_usage']['total']) - int( self.application_data['sms_usage']['used']) call_usage = self.regex_call_usage.search(html) if call_usage: self.application_data['call_usage']['total'] = int( call_usage.group('totalcall')) self.application_data['call_usage']['used'] = int( float(self.application_data['call_usage']['total']) * (float(call_usage.group('usedcall')) / 100)) # Mock data if MOCKDATA: self.application_data['call_usage']['used'] = MockData.random( self.application_data['sms_usage']['total']) self.application_data['call_usage']['free'] = int( self.application_data['call_usage']['total']) - int( self.application_data['call_usage']['used']) data_usage = self.regex_data_usage.search(html) if data_usage: self.application_data['data_usage']['total'] = int( float(data_usage.group('totaldata')) * self.__data_unit_factor(data_usage.group('dataunit'))) self.application_data['data_usage']['used'] = int( float(self.application_data['data_usage']['total']) * (float(data_usage.group('useddata')) / 100)) # Mock data if MOCKDATA: self.application_data['data_usage']['used'] = MockData.random( self.application_data['data_usage']['total']) self.application_data['data_usage']['free'] = int( self.application_data['data_usage']['total']) - int( self.application_data['data_usage']['used']) now = date.today() self.application_data['days_usage']['total'] = self.__days_in_month( now) self.application_data['days_usage']['used'] = now.day self.application_data['days_usage']['free'] = int( self.application_data['days_usage']['total']) - int( self.application_data['days_usage']['used'])