Example #1
0
def registerPOSTHandler(post_request, new_user):
    """ Salva um novo medico relacionado a um novo usuario. """    


    doctor_name = post_request['first_name'] + ' ' + post_request['last_name']

    doctor = Doctor(name=doctor_name, user=new_user)
    doctor.save()

    phone_number = post_request['phone']
    region = phone_number[:2] 
    number = phone_number[2:]
    phone  = PhoneNumber(doctor=doctor, region=region, phone=number)

    phone.save()

    return doctor
Example #2
0
def profilePOSTHandler(request, doctor, forms):
    """ Lida com as informacoes do request.POST enviadas via formulario 
        para alteracao do perfil do usuario """
    user = request.user
    user.first_name = request.POST['first_name'] 
    user.last_name  = request.POST['last_name']
    user.email = request.POST['email']
    user.save() #salva os novos nome e email do usuario.

    #Deleta os itens e campos que devem ser deletados por terem sido desmarcados
    #pelo medico.
    doc_itens = doctor.item_set.all()
    for item in doc_itens:  
        for field in item.field_set.all():
            f = field.name + '_' + item.name
            #caso o campo 'f' nao esteja marcado no formulario, ele eh deletado do BD.
            if not f in request.POST:
                field.delete()
        #caso o item em questao nao tenha nenhum campo associado a ele, este eh deletado.
        if not item.field_set.all():
            item.delete()

    doc_phones = doctor.phonenumber_set.all()

    phone_number = ''

    #caso o telefone em questao nao esta presente no request, significa que ele
    #foi descartado pelo medico, entao eh deletado do BD.
    for phone in doc_phones:
        phone_number = phone.region + phone.phone
        deleted_phone = True

        for elem in request.POST:
            if elem.startswith('Phone_') and phone_number == request.POST[elem]:
                deleted_phone = False
                break
        if deleted_phone:
            phone.delete()

    #Adiciona ao BD as informacoes adicionadas pelo medico.
    for elem in request.POST:
        part = elem.partition('_')
        #se o terceiro elemento da tripla "part" existir e constar na lista
        #de 'itens' do CCR, significa que se trata de um 'field'.
        if part[2] and part[2] in info_itens:
            doc_item = doctor.item_set.filter(name=part[2])
            if not doc_item:
                item = Item(name=part[2], doctor=doctor)
                item.save()
                field = Field(name=part[0], item=item)
                field.save()
                item.field_set.add(field)
                item.save()
                doctor.item_set.add(item)
                doctor.save()
            else:
                item_field = doc_item[0].field_set.filter(name=part[0])
                if not item_field:
                    field = Field(name=part[0], item=doc_item[0])
                    field.save()
                    doc_item[0].field_set.add(field)
                    doc_item[0].save()
        #Se o primeiro elemento da tripla 'part' for "Phone", significa que se trata
        #de um telefone.
        elif part[0] == 'Phone':
            phone = request.POST[elem]

            #como o telefone passado eh um numero de 10digitos, os dois primeiros
            #representam o numero da regiao e o resto o numero do telefone propriamente dito.
            region = phone[:2]
            number = phone[2:]

            doc_phone = doctor.phonenumber_set.filter(region=region, phone=number)   
            if not doc_phone:
                new_phone = PhoneNumber(region=region, phone=number, doctor=doctor)
                new_phone.save()
                doctor.phonenumber_set.add(new_phone)
                doctor.save()