Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

exibindo convites recebidos - video

Como eu faço para anexar os arquivo do meu projeto para enviar para voces ??

Minha pagina não esta mostrando os convites recebidos, não consigo encontrar o erro

ConnectedIn Todos os Perfis Oswaldo Alterado / oswaldo@oswaldo.com.br / 1 Steve / steve@minecraft.com / 3 Flavio Almeida / flavio@flavio.com.br / 4 Romulo Henrique / romulo@romulo.com.br / 5 Nenhum convite recebifo :(

--atualização do convite recebido --C:\Caca\Alura\Python\Django\projetoDjango\connectedin>python manage.py shell Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole)

from perfis.models import Convite, Perfil a_convidar = Perfil.objects.get(id=1) solicitante = Perfil.objects.get(id=3) solicitante.convidar(a_convidar)

solicitante.id 3 a_convidar.id 1

--
arquivo views.py
# -*- coding: UTF-8 -*-
from django.shortcuts import render
from django.shortcuts import redirect
from perfis.models import Perfil
#from django.http import HttpResponse

# Create your views here.
def index(request):
    #return HttpResponse('Bem-vindo ao Connectedin')
    return render(request, 'index.html', {'perfis' : Perfil.objects.all(), 'perfil_logado' : get_perfil_logado(request)})

def exibir(request, perfil_id):
    print 'ID do perfil recebido: %s' % (perfil_id)

    #perfil = Perfil()
    #if perfil_id == '1':
    #    perfil = Perfil('Flavio Almeida', 'flavio@flavio.com.br', '3724777777', 'Caelum')

    #if perfil_id == '2':
    #    perfil = Perfil('Romulo Henrique', 'romulo@romulo.com.br', '37248888888', 'Caelum')

    # agora buscando dados no banco de dados
    perfil = Perfil.objects.get(id=perfil_id)

    return render(request, 'perfil.html', {"perfil" : perfil})

def convidar(request, perfil_id):
    perfil_a_convidar = Perfil.objects.get(id=perfil_id)
    perfil_logado = get_perfil_logado(request)
    perfil_logado.convidar(perfil_a_convidar)

    #este comando era necessario antes de importar o objeto "redirect"
    #return render(request, 'index.html', {"perfis" : Perfil.objects.all()})

    return redirect('index')

# esta função esta apenas simulando o perfil logado
# no futuro sera modificado para que o perfil log na pagina
def get_perfil_logado(request):
        return Perfil.objects.get(id=1)    

--
arquivo models.py
# -*- coding: UTF-8 -*-
from django.db import models

#class Perfil(object):
#    def __init__(self, nome='', email='', telefone='', nome_empresa=''):
#        self.nome = nome
#        self.email = email
#        self.telefone = telefone
#        self.nome_empresa = nome_empresa

class Perfil(models.Model):

    nome = models.CharField(max_length=255, null=False)
    email = models.CharField(max_length=255, null=False)
    telefone = models.CharField(max_length=15, null=False)
    nome_empresa = models.CharField(max_length=255, null=False)

    #não confunda este método com a view convidar
    def convidar(self, perfil_convidado):
        convite = Convite(solicitante=self, convidado=perfil_convidado).save()


class Convite(models.Model):
    solicitante = models.ForeignKey(Perfil, related_name='convites_feitos')
    convidado = models.ForeignKey(Perfil, related_name='convites_recebidos')

--
arquivo index.html
{% extends "base.html" %}
{% block body %}
<div class="col-lg-12">
     <div class-"panel panel-defaul">
         <div class=panel-heading!>
             <strong>
                     Todos os Perfis
             </strong>
         </div>
         <div>
            {% if perfis %}
            <ul>
                {% for perfil in perfis %}
                <li> 
                <a href="{% url 'exibir' perfil.id %}">
                    {{ perfil.nome }}
                </a> 
                    / {{ perfil.email }}
                    / {{ perfil.id}}
                </li>
                {% endfor %}
            </ul>
            {% else %}
            <p>
                Nenhum perfil encontrado
            </p>
            {% endif %}
         </div>
     </div>
     <div class-"panel panel-defaul">
        {% if perfis_logado.convites_recebidos.count %}
            <div class="panel-heading">
                <strong>
                    Convites aguardando aprovação
                </strong>
            </div>
            <ul class="list-group">
                {% for convite in perfis_logado.convites_recebidos.all %}
                    <li class="list-group-item">
                        {{ convite.solicitante.nome }}
                        <a href="#" class="pyll-right">
                            aceitar
                        </a>

                    </li>
                {% endfor %}

            </ul>
        {% else %}
        <div class=p"anel-body">
            <p>
                Nenhum convite recebifo :(
            </p>
        </div>
        {% endif %}
     </div>
</div>
{% endblock %}

--
arquivo base.html
{% load staticfiles %}
<!DOCTYPE html>
<html lang="pt-br">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-wifth">
        <title>
            ConnectedIn
        </title>
        <link rel="stylesheet" href="{% static "styles/bootstrap.css"%}">
        <link rel="stylesheet" href="{% static "styles/main.css"%}">
    </head>
    <body>
          <div class="container">
               <div class="header">
                    <ul class="nav nav-pills pull-right">
                        <li>
                            <a href="{% url 'index' %}">
                                NOME
                            </a>
                        </li>
                        <li>
                            <a href="/logout/">
                                logout
                            </a>

                        </li>
                    </ul>
                    <h3 class="test-mutted">
                        ConnectedIn
                    </h3>
                </div>
                <div class="row content">
                        {% block body %}
                        {% endblock %}
                </div>
          </div>
    </body>
</html>

--  
arquivo perfil,html
{% extends "base.html" %}
{% block body %}
<div class="row">
     <div class="col-lg-12">
        <h2 style="margin-top: 0">
              {{ perfil.nome }} 
        </h2>
        <address>
            <strong>
                {{ perfil.nome_empresa }} 
            </strong>
            <br>
            <abbr title="Telefone">
                {{ perfil.telefone }}
            </abbr>
            <br>
            <a href="mailto:{{ perfil.email }}">
                {{ perfil.email }}
            </a>
        </address>
        <a href="{% url 'convidar' perfil.id %}">
            convidar
        </a>     
     </div>
</div>
{% endblock %}
1 resposta
solução!

No arquivo views.py, troque import

from perfis.models import Perfil

por

from perfis.models import Perfil, Convite

Arquivo models.py faltou o metodo aceitar da classe convite:

class Convite(models.Model):
    solicitante = models.ForeignKey(Perfil, related_name='convites_feitos')
    convidado = models.ForeignKey(Perfil, related_name='convites_recebidos')

    def aceitar(self):
        self.convidado.contatos.add(self.solicitante)
        self.solicitante.contatos.add(self.convidado)
        self.delete()

E verifique se o erro persiste.