if not infos['model'].startswith('GXP'): print u'\tTrouvé téléphone inconnu (%s), abandon' % (infos), continue print u'\tTrouvé téléphone %s (%s)' % (infos['model'], infos['version']), if not force: x = None while (x not in ('o', 'n')): x = raw_input(u'le configurer (O/N) ? ').lower() if x == 'n': print continue else: print print u'\tconfiguration en cours... ', gs.configure( p.password, directory_tftp, \ server_firmware + '/phones/firmware', \ server_config + '/phones/config', server_syslog, \ server_config + ':8080/phonebook/gs_phonebook_xml', '', '', '', \ server_sip, sip_id, '', 1) print u'ok\n' # else: # print u'ko :', l[:40], '...' print u'Fin normale !'
sip_display_name = '' mwi_subscribe = 0 if p.user: print u'Utilisateur:', p.user.ascii_name, p.user.email_address sip_display_name = p.user.ascii_name if p.user.email_address: mwi_subscribe = 1 print u'\tconfiguration en cours... ', # gs.configure( p.password, directory_tftp, \ # server_firmware + '/phones/firmware', \ # server_config + '/phones/config', server_syslog, \ # server_config + ':8080/phonebook/gs_phonebook_xml', '', '', '', \ # server_sip, sip_id, '', 1, exten=p.exten) gs.configure( p.password, directory_tftp, server_firmware + '/phones/firmware', server_config + '/phones/config', server_ntp, server_config, '', '', '', server_sip, sip_id, sip_display_name, mwi_subscribe, screen_url = server_config, exten=p.exten, sip_server2='') print u'ok\n' # else: # print u'ko :', l[:40], '...' print u'Fin normale !'
def put(self, phone_id, dptm_id, user_id, exten, dnis, contexts, hide_from_phonebook, fax, block_cid_in, block_cid_out, priority, phonebook_label, secretary, ringtone_id, callgroups=None, pickupgroups=None): ''' Update phone User and exten information is independant from phone, there is no need to modify provisionning file. Create or update entry in Asterisk sip.conf. If a exten is attached to the phone, create exten in Asterisk database. If a user is attached to the phone, add callerid to SIP account ; if the user has email, add voicemail info to sip.conf and add entry in voicemail.conf. ''' log.info('update %d' % phone_id) log.debug('Contexts %s' % contexts) log.debug('Callgroups %s' % callgroups) log.debug('Pickupgroups %s' % pickupgroups) log.debug('Hide from phonebook %s' % hide_from_phonebook) log.debug('Fax %s' % fax) log.debug('Block cid in %s' % block_cid_in) log.debug('Block cid out %s' % block_cid_out) p = DBSession.query(Phone).get(phone_id) old_exten = p.exten old_dnis = p.dnis if exten!=p.exten: exten = re.sub(r'\D', '', exten) log.debug('Exten has changed, %s -> %s' % (p.exten, exten)) if exten=='': p.exten = None else: p.exten = exten if dnis!=p.dnis: dnis = re.sub(r'\D', '', dnis) if dnis is not None else '' log.debug('DNIS has changed, %s -> %s' % (p.dnis, dnis)) if dnis=='': p.dnis = None else: p.dnis = dnis if p.department_id!=dptm_id: if dptm_id==-9999: p.department_id = None else: p.department_id = dptm_id if p.user_id!=user_id: if user_id==-9999: p.user_id = None else: p.user_id = user_id ringtone_id = int(ringtone_id) log.debug('before ringtone = %s', ringtone_id) if ringtone_id==-1: p.ringtone_id = None ringtone = None else: p.ringtone_id = ringtone_id try: ringtone = DBSession.query(Sound).get(int(ringtone_id)).name except: ringtone = None p.ringtone_id = None log.debug('after ringtone = %s (%s)', ringtone, ringtone_id) x = ','.join([str(x) for x in contexts]) if p.contexts != x: log.debug('New contexts !') p.contexts = x x = ','.join([str(x) for x in callgroups]) if p.callgroups != x: p.callgroups = x x = ','.join([str(x) for x in pickupgroups]) if p.pickupgroups != x: p.pickupgroups = x p.hide_from_phonebook = hide_from_phonebook p.fax = fax p.block_cid_in = block_cid_in p.block_cid_out = block_cid_out p.priority = priority p.phonebook_label = phonebook_label p.secretary = secretary asterisk_update_phone(p, old_exten, old_dnis) if p.vendor == 'Grandstream': # Create provisionning file and configure phone ip, ua, state = peer_info(p.sip_id, p.exten) log.info('Configure %s %s %s %s', p.mac, ip, ua, state) gs = Grandstream(ip, p.mac) gs.login(p.password) gs.infos() mwi_subscribe = 0 sip_display_name = None if p.user_id!='-9999': try: u = DBSession.query(User).get(p.user_id) sip_display_name = u.ascii_name if u.email_address: mwi_subscribe = 1 except: pass gs.configure( p.password, directory_tftp, server_firmware + '/phones/firmware', server_config + '/phones/config', server_ntp, server_config, '', '', '', server_sip, p.sip_id, sip_display_name, mwi_subscribe, screen_url = server_config, exten=p.exten, sip_server2=server_sip2, secretary=secretary, ringtone=ringtone) flash(u'Téléphone modifié') redirect('/phones/%d/edit' % phone_id)