def update_user(data): try: simcard = Enduser.get_or_create_simcard(data.get('telephone')) if not simcard: return ( 'Bad Telephone',None) telephone = simcard.msisdn user = Enduser.get_active_user(telephone) #if nid is invalid return if len(data.get('national_id')) != 16: return ( 'Bad National ID',None) national_id = data.get('national_id') old_user = fetch_enduser(national_id, telephone) ## Check national_id registered for the telephone if not old_user: return ( 'User does not exist with NID %s and Telephone %s' % (national_id, telephone) , None) else: if (user and old_user) and old_user.indexcol != user.indexcol: return ( 'User with NID %s and Telephone %s is active, please deactive him/her first.' % ( user.national_id, user.telephone) , None) elif (old_user.indexcol == user.indexcol) or (old_user.indexcol == data.get('indexcol')): # He is the same user, check if credentials have been updated new_passwd = data.get('passwd') if old_user.email != data.get('email') or new_passwd: if new_passwd: generated_password = MchSecurity.generatedPassword(new_passwd) data.update({"salt" : generated_password[0]}) data.update({"passwd" : generated_password[1]}) else: new_passwd = simcard.msin generated_password = MchSecurity.generatedPassword(new_passwd) data.update({"salt" : generated_password[0]}) data.update({"passwd" : generated_password[1]}) data.update({"simcard_pk": simcard.indexcol}) data.update({"telephone": telephone}) #print "SAVE DATA: ", data migrate(Enduser._table, data) user = Enduser.get_active_user( data.get('telephone') ) sent = False if user.role_code == 'BINOME' or user.role_code == 'ASM' or user.language_code == 'RW': sent = Enduser.send_message(telephone, "Twabamenyeshaga ko mumaze gukosorwa kuri list, muri sisitemu ya RapidSMS Rwanda, nka %(role)s, ku rwego rw %(level)s, %(nat)s, Intara %(prv)s, Akarere ka %(dst)s, ibitaro bya %(hp)s ikigo nderabuzima cya %(hc)s, umurenge wa %(sec)s, akagari ka %(cel)s, umudugudu wa %(vil)s. Murakoze."% { 'role': user.role_name, 'hc': user.facility_name, 'sec': user.sector_name, 'cel': user.cell_name , 'vil': user.village_name, 'level': Enduser._levels.get(user.location_level_code)[1], 'dst': user.district_name, 'hp': user.referral_name, 'nat': user.nation_name, 'prv': user.province_name}) else: sent = Enduser.send_message(telephone, "You have been updated in RapidSMS, your username is: %(email)s, and password is: %(pwd)s. Thanks." % {'email': user.email, 'pwd': new_passwd}) if not sent: return ("User updated, but SMS not sent, please contact username: %(email)s, and password: %(pwd)s" % {'email': user.email, 'pwd': data.get('passwd')}, old_user) return ( 'User updated', old_user) else: return ( 'User with NID %s and Telephone %s cannot be updated, contact system administrator.' % ( old_user.national_id, old_user.telephone) , None) except Exception, e: print e pass
def get_or_create( data): try: simcard = Enduser.get_or_create_simcard(data.get('telephone')) if not simcard: return ( 'Bad Telephone',None) telephone = simcard.msisdn user = Enduser.get_active_user(telephone) if not user: if len(data.get('national_id')) != 16: return ( 'Bad National ID',None) if not data.get('email'): data.update({"email": '*****@*****.**' % simcard.indexcol}) data.update({"simcard_pk": simcard.indexcol}) data.update({"telephone": telephone}) generated_password = MchSecurity.generatedPassword(simcard.msin) data.update({"salt" : generated_password[0]}) data.update({"passwd" : generated_password[1]}) national_id = data.get('national_id') #print "SAVE DATA: ", data migrate(Enduser._table, data) #user = fetch_enduser(national_id, telephone) user = Enduser.get_active_user( telephone ) sent = False if user.role_code == 'BINOME' or user.role_code == 'ASM' or user.language_code == 'RW': sent = Enduser.send_message(telephone, "Twabamenyeshaga ko mumaze kwandikwa kuri list, muri sisitemu ya RapidSMS Rwanda, nka %(role)s, ku rwego rw %(level)s, %(nat)s, Intara %(prv)s, Akarere ka %(dst)s, ibitaro bya %(hp)s ikigo nderabuzima cya %(hc)s, umurenge wa %(sec)s, akagari ka %(cel)s, umudugudu wa %(vil)s. Murakoze."% { 'role': user.role_name, 'hc': user.facility_name, 'sec': user.sector_name, 'cel': user.cell_name , 'vil': user.village_name, 'level': Enduser._levels.get(user.location_level_code)[1], 'dst': user.district_name, 'hp': user.referral_name, 'nat': user.nation_name, 'prv': user.province_name}) else: sent = Enduser.send_message(telephone, "You have been registered in RapidSMS as %(role)s, your username is: %(email)s, and password is: %(pwd)s. Thanks." % {'role': user.role_name, 'email': user.email, 'pwd': simcard.msin}) email = Enduser.send_email("RapidSMS Credentials", user.email, "You have been registered in RapidSMS as %(role)s, your username is: %(email)s, and password is: %(pwd)s. Thanks." % {'role': user.role_name, 'email': user.email, 'pwd': simcard.msin}) if not sent: return ("User Created, but SMS not sent, please contact username: %(email)s, and password: %(pwd)s" % {'email': user.email, 'pwd': simcard.msin}, user) return ( 'User created', user) return ( 'User exists', user) except Exception, e: print e pass