Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backend - where we had searched #41

Closed
vaniaon opened this issue Jan 29, 2019 · 23 comments
Closed

Backend - where we had searched #41

vaniaon opened this issue Jan 29, 2019 · 23 comments
Labels
back enhancement New feature or request help wanted Extra attention is needed

Comments

@vaniaon
Copy link
Member

vaniaon commented Jan 29, 2019

Create a service that receives geolocations info as parameter and stores it in a data repository.
This service also needs to provide a list of all locations already visited.

Related #40

@vaniaon vaniaon added enhancement New feature or request help wanted Extra attention is needed back labels Jan 29, 2019
@brunolcarli
Copy link
Contributor

brunolcarli commented Jan 29, 2019

Can this be a django app running with serializers?
The API will receive CRUD and store on database, the data will be displayed as json that will be consumed by the front-end.

captura de tela 2019-01-29 as 00 15 54
captura de tela 2019-01-29 as 00 16 04
captura de tela 2019-01-29 as 00 16 19

@brunolcarli
Copy link
Contributor

I've sent a PR withe the project, hope it helps.

Gotta work to do in it like change the database used (actually using SQLite but not recommended), and find a server to host it.

Later after my work i'll refine this, and sure all hel is needed to develop it.

@vaniaon
Copy link
Member Author

vaniaon commented Jan 29, 2019

Just saw your comment and updated the project readme.
As I said there, the first in the project can choose the language and technology :)

@vaniaon
Copy link
Member Author

vaniaon commented Jan 29, 2019

PR #43

@vaniaon vaniaon closed this as completed Jan 29, 2019
@vaniaon
Copy link
Member Author

vaniaon commented Jan 29, 2019

@dezoito
Copy link

dezoito commented Jan 30, 2019

As a suggestion, I propose adding optional fields for date, radius (i.e. 30m around marker point) and observations (Something like: This place needs to be revisited with special equipment).

The radius would allow a circumference to be drawn on the map and give a better perspective one the area covered.

@JBezerra
Copy link
Contributor

@brunolcarli Tudo certo cara? tou com tua aplicação rodando aqui, eu so nao entendi o intuito dos 2 endpoints, no /geolocations/ ele cadastra os locais por Lat e Long via POST e via GET ele mostra os locais que ja foram visitados em Lat e Long, beleza.

Mas nao entendi porque no /visited_locations/ eu posso escolher uma Lat e uma Long cadastra no /geolocations/ e dar um nome a ela se no /visited_locations/ quando a gente pega a lista completa via GET eu nao tenho acesso ao nome que eu dei a sua respectiva Lat e Long, qual o intuito desse endpoint?

@brunolcarli
Copy link
Contributor

@JBezerra criei o endpoint /api/geolocations/ para poder cadastrar, listar e recuperar todas as localizações de que tenhamos certeza que pertence a zona afetada.

No endpoint /api/visited_locations/ poderá cadastrar e uma região específica baseada em sua localização, e identificá-la por uma referencia. Na última atualização que estou a trabalhar agora este endpoint receberá mais um campo para data de investigação desta localização e número de pessoas encontradas nesta localização.

Adicionarei também um endpoint /api/found_people/ para cadastrar e recuperar informações de pessoas encontradas, incluindo nome, localização, gênero e condição de saúde.

@JBezerra
Copy link
Contributor

@brunocroh Fala Bruno! tudo certo? tou fazendo um front com seu back em que pego os seus dados do /api/geolocations/ e ploto no mapa de calor pra saber onde eles ja foram ou nao, preciso o mais rapido que voce puder que voce mude o retorno pelo menos desse endpoint para um retorno GeoJSON, é bem simples, ao inves de voce retornar um JSON normal voce retorna um JSON nesse formato aqui:

{
  "type": "FeatureCollection",
  "features": [
    {
      "geometry": {
        "type": "Point",
        "coordinates": [-44.1264581,-20.1255982]  // Long e Lat
      },
      "type": "Feature",
      "properties": {}
    },
   {
      "geometry": {
        "type": "Point",
        "coordinates": [-43.1264581,-20.1195982]  // Long e Lat
      },
      "type": "Feature",
      "properties": {}
    }]
}

Pra cada long e lat voce so precis retornar um objeto geometry desse dentro da lista "features", seria possivel?

@brunolcarli
Copy link
Contributor

@JBezerra vou fazer!

@brunolcarli
Copy link
Contributor

Ok to meio perdido aqui tentando fazer funcionar nesse padrão.

Ajustei todos os paranauês pra rodar com posgresql e tenho a tela do enpoint sem dados assim:

captura de tela 2019-01-31 as 23 07 37

@brunolcarli
Copy link
Contributor

Mas não sei como inserir dados aqui, todas as formas que tento ele da um erro diferente:

@brunolcarli
Copy link
Contributor

brunolcarli commented Feb 1, 2019

# Models
class Geolocation(models.Model):

    coordinates = gis_models.PointField()

# serializers
class GeolocationSerializer(gis_serializer.GeoFeatureModelSerializer):
    class Meta:
        model = Geolocation
        fields = "__all__"
        geo_field = "coordinates"

# views
class GeolocationViewSet(viewsets.ModelViewSet):
    queryset = Geolocation.objects.all()
    serializer_class = GeolocationSerializer

I never have used this before, what am i missing? what have a done wrong?

Someone could help?

@JBezerra
Copy link
Contributor

JBezerra commented Feb 1, 2019

@brunolcarli tu tem como fazer diferente, acompanha:
1 - Salva os Dados como tu tava salvando antes, certo? lat e long tudo certinho
2- Na hora de MOSTRAR tu cria um grande objeto

{
  "type": "FeatureCollection",
  "features": []
}

3 - Cria um array, vamo chamar ele de features, e vai colocando esses objetos:

{
      "geometry": {
        "type": "Point",
        "coordinates": [Long,Lat] 
      },
      "type": "Feature",
      "properties": {}
    }

4 - Adiciona no teu array
5 - "Features": features
6 - retorna tudo pra pagina

Nao é como se tu precisasse mudar o banco, mas talvez mais simples é so trocar como ele lida com o dado

@brunolcarli
Copy link
Contributor

desta forma está correto @JBezerra ?

captura de tela 2019-02-01 as 00 37 46

@JBezerra
Copy link
Contributor

JBezerra commented Feb 1, 2019

@brunolcarli perfeito!!!! valeu monstro, so da push que eu ja modifico o meu aqui pra pegar da API

@brunolcarli
Copy link
Contributor

Vou dar push aqui pra que vc possa dar continuidade no seu trabalho, ams tenho que corrigir várias coisas ainda, a começar pelo campo de input deste endpoint.

ele está esperando:

{
    "latitude": Float,
    "longitude": Float,
    "coordinates": null
}

Deixei o coordinates como opcional pois ele NAO DEVE ser preenchido, se preencher ele de forma que não receba um objeto Point() definido pelo django.contrib.gis.geos vai retornar um erro. Então não forneça nada ou forneça null para este campo e preencha somente latitude e longitude pelo menos até eu achar uma forma de consertar isso.

:D

@brunolcarli
Copy link
Contributor

brunolcarli commented Feb 1, 2019

Ah e tive um trabalhinho pra ajustar as novas configs, me avise aqui se tiver problemas pra configurar o serviço, agora está rodando com postgis

@brunolcarli
Copy link
Contributor

PR aberto em #93

@JBezerra
Copy link
Contributor

JBezerra commented Feb 1, 2019

@brunolcarli da uma olhadinha nesse erro, nao roda nenhum comando
screen shot 2019-02-01 at 00 25 38

@brunolcarli
Copy link
Contributor

brunolcarli commented Feb 1, 2019

@JBezerra como sugerido pelo @cacarrara as settings devem ser criadas em um arquivo .env na raiz desta aplicação, padronizando com o projeto em /core deste repositório.

para lhe adiantar tempo eis aqui o arquivo modo como eu usei:

DEBUG=TRUE
SECRET_KEY=&@9mr668o!*p1=jk$=#i+l5z4*qg)s1_ey!+i*o@&%!t#c+ra2
ALLOWED_HOSTS=*

DB_NAME=geoservice
DB_USER=lem4fia
DB_PASSWORD=root
DB_HOST=localhost
DB_PORT=5432

provavelmente vc vai precisar modificar o valor das variáveis DB para coincidir com as configurações rodando em sua máquina.

crie um arquivo chamado .env contendo estas configurações e coloque-o na raiz do serviço:
captura de tela 2019-02-01 as 07 54 57

isso deve funcionar

@JBezerra
Copy link
Contributor

JBezerra commented Feb 1, 2019

@brunolcarli me da teu contato pessoal pra agt conseguir se comunicar com mais facilidade, eu consegui aqui instalar o postgre na minha maquina mas estou tendo outros erros, por exemplo da uma olhadinha aqui

screen shot 2019-02-01 at 13 48 34

isso acontece eu creio porque eu nao rodei o migrate, mas quando eu tento rodar da isso

screen shot 2019-02-01 at 13 49 47

ai eu tou meio perdido pq nunca fiz nada com Django

@brunolcarli
Copy link
Contributor

@JBezerra meu whats: 41 99828-7053

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
back enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

4 participants