Beispiel #1
0
    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
Beispiel #2
0
 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