Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Rex Dri
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
32
Issues
32
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Rex Dri
Rex Dri
Commits
a1ea0015
Commit
a1ea0015
authored
Apr 25, 2018
by
Florent Chehab
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Everything is ok
parent
dae6b99b
Pipeline
#22084
passed with stage
in 1 minute and 55 seconds
Changes
12
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
180 additions
and
112 deletions
+180
-112
docs/load.md
docs/load.md
+10
-12
rex/assets/country.csv
rex/assets/country.csv
+1
-0
rex/assets/destinations_extracted.csv
rex/assets/destinations_extracted.csv
+69
-68
rex/migrations/0001_initial.py
rex/migrations/0001_initial.py
+2
-2
rex/models/university/__init__.py
rex/models/university/__init__.py
+1
-1
rex/models/university/campus.py
rex/models/university/campus.py
+2
-6
rex/models/university/university.py
rex/models/university/university.py
+14
-1
rex/templates/rex/home.html
rex/templates/rex/home.html
+3
-3
rex/urls.py
rex/urls.py
+2
-1
rex/utils/extract_universities.py
rex/utils/extract_universities.py
+8
-6
rex/utils/insert_universities.py
rex/utils/insert_universities.py
+66
-12
rex/views.py
rex/views.py
+2
-0
No files found.
docs/load.md
View file @
a1ea0015
Chargement des données initiales pour l'application
Chargement des données initiales pour l'application
=====
=====
[SECTION QUI VA ÉVOLUER]
Pour charger des données dans l'application, tout se passe via l'API du site.
Chargement des données des pays :
-
Créer un superutilisateur :
```
bash
```
bash
./manage.py
shell
./manage.py
createsuperuser
```
```
Puis à l'intérieur de ce shell :
-
Créer un token dans l'administration (pour l'administrateur que vous venez de créer).
```
python
**CE TOKEN DOIT RESTER SECRET**
.
%
run
.
/
rex
/
utils
/
insert_country
.
py
```
Pour les universitées, toujours à l'intérieur du shell
`./manage.py shell`
:
-
Lancer les scripts pour insérer les données :
```
python
```
%
run
.
/
rex
/
utils
/
insert_universities
.
py
./rex/utils/insert_country.py -t <Token> [-a <server adress>]
```
./rex/utils/insert_universities.py-t <Token> [-a <Adresse-de-l'API>]
\ No newline at end of file
```
rex/assets/country.csv
View file @
a1ea0015
...
@@ -123,6 +123,7 @@
...
@@ -123,6 +123,7 @@
"001","Monde","142","Asie","143","Asie centrale","","","Turkménistan","795","TKM","","x","","Developing"
"001","Monde","142","Asie","143","Asie centrale","","","Turkménistan","795","TKM","","x","","Developing"
"001","Monde","142","Asie","143","Asie centrale","","","Ouzbékistan","860","UZB","","x","","Developing"
"001","Monde","142","Asie","143","Asie centrale","","","Ouzbékistan","860","UZB","","x","","Developing"
"001","Monde","142","Asie","030","Asie orientale","","","Chine","156","CHN","","","","Developing"
"001","Monde","142","Asie","030","Asie orientale","","","Chine","156","CHN","","","","Developing"
"001","Monde","142","Asie","030","Asie orientale","","","Taïwan","1589","TWN","","","","Developing"
"001","Monde","142","Asie","030","Asie orientale","","","Chine, région administrative spéciale de Hong Kong","344","HKG","","","","Developing"
"001","Monde","142","Asie","030","Asie orientale","","","Chine, région administrative spéciale de Hong Kong","344","HKG","","","","Developing"
"001","Monde","142","Asie","030","Asie orientale","","","Chine, région administrative spéciale de Macao","446","MAC","","","","Developing"
"001","Monde","142","Asie","030","Asie orientale","","","Chine, région administrative spéciale de Macao","446","MAC","","","","Developing"
"001","Monde","142","Asie","030","Asie orientale","","","République populaire démocratique de Corée","408","PRK","","","","Developing"
"001","Monde","142","Asie","030","Asie orientale","","","République populaire démocratique de Corée","408","PRK","","","","Developing"
...
...
rex/assets/destinations_extracted.csv
View file @
a1ea0015
"University","lat","lon"
"university","city","country","lat","lon"
"Technische Universitat Ilmenau",50.6828446,10.9383699
"Technische Universitat Ilmenau","Ilmenau","DE",50.68386845,10.9329051768032
"Universidad Del Salvador",-34.59941195,-58.392732040256
"Universidad Del Salvador","Buenos Aires","AR",-34.5562653,-58.730053914754
"Swinburne University Of Technology",-37.85240845,144.99182255
"Swinburne University Of Technology","Victoria","AU",-37.85240845,144.99182255
"Technische Universitat Graz",47.06817255,15.4497318287299
"Technische Universitat Graz","Graz","AT",47.05821,15.460195677136
"Universiteit Gent",51.0225378,3.71068134989542
"Universiteit Gent","Gent","BE",51.0450413,3.7255573
"Universidade Federal De Minas Gerais",-19.86868095,-43.962194217906
"Universidade Federal De Minas Gerais","Belo Horizonte","BR",-19.8718898,-43.9630925706377
"Universidade Federal De Campina Grande",-7.05925115,-37.2744434555441
"Universidade Federal De Campina Grande","Campina Grande","BR",-6.76287395,-38.2281578339701
"Universidade Estadual De Campinas (Unicamp)",-22.8224781,-47.0642599309425
"Universidade Estadual De Campinas (Unicamp)","Campinas-Sao Paulo","BR",-22.8224781,-47.0642599309425
"Universidade Caxias Do Sul",-29.16253545,-51.1483650151909
"Universidade Caxias Do Sul","Caxias Do Sul","BR",-29.16253545,-51.1483650151909
"Pontificia Universidade Catolica Do Parana",-23.29907785,-51.2102693622486
"Pontificia Universidade Catolica Do Parana","Curitiba","BR",-23.29907785,-51.2102693622486
"Universidade Federal Do Parana",-23.5984464,-51.6732887712978
"Universidade Federal Do Parana","Curitiba","BR",-23.5984464,-51.6732887712978
"Universidade Tecnologica Federal Do Parana",-25.0521636,-50.131186381692
"Universidade Tecnologica Federal Do Parana","Curitiba","BR",-25.0521636,-50.131186381692
"Universidade Federal De Santa Catarina",-27.5823901,-48.5050400209765
"Universidade Federal De Santa Catarina","Florianópolis","BR",-27.6033738,-48.5224633956674
"Universidade Federal De Itajuba",-22.4137971,-45.4502726
"Universidade Federal De Itajuba","Itajuba","BR",-22.4137971,-45.4502726
"Universidade Federal Da Paraiba",-6.7505593,-35.6454502176197
"Universidade Federal Da Paraiba","João Pessoa","BR",-6.7505593,-35.6454502176197
"Universidade Federal Juiz De Fora",-21.7768942,-43.3691810386558
"Universidade Federal Juiz De Fora","Juiz De Fora","BR",-21.7768942,-43.3691810386558
"Universidad Estadual De Maringa",-23.77903,-53.3252683935028
"Universidad Estadual De Maringa","Maringa","BR",-23.77903,-53.3252683935028
"Universidade Federal De Pernambuco",-8.05254345,-34.9510286675945
"Universidade Federal De Pernambuco","Recife","BR",-8.05254345,-34.9510286675945
"Universidade Federal De Rio De Janeiro",-22.2459542,-42.5232866424185
"Universidade Federal De Rio De Janeiro","Rio De Janeiro","BR",-22.2459542,-42.5232866424185
"Escola Politecnica Da Universidade De Sao Paulo",-23.5552106,-46.7310401128074
"Escola Politecnica Da Universidade De Sao Paulo","Sao Paulo","BR",-23.5552106,-46.7310401128074
"Universidade Federal De Uberlandia",-18.941683,-48.2148699674138
"Universidade Federal De Uberlandia","Uberlandia","BR",-18.941683,-48.2148699674138
"Technical University Of Sofia",42.6559773,23.35512261205
"Technical University Of Sofia","Sofia","BG",42.6559773,23.35512261205
"Universidad Arturo Prat",-33.43531325,-70.662435711441
"Universidad Arturo Prat","Iquique","CL",-23.6455954,-70.394657443203
"Pontificia Universidad Catolica De Valparaiso",-33.0449276,-71.6067964701924
"Pontificia Universidad Catolica De Valparaiso","Valparaiso","CL",-33.0449276,-71.6067964701924
"Universidad De Valparaiso",-32.7414062,-70.7024233560544
"Universidad De Valparaiso","Valparaiso","CL",-32.7414062,-70.7024233560544
"Universidad Tecnica Federico Santa Maria",-33.0354207,-71.5970503
"Universidad Tecnica Federico Santa Maria","Valparaiso","CL",-33.03510935,-71.5952505079485
"Escuela Colombiana De Ingenieria",4.78305195,-74.0442040297156
"Escuela Colombiana De Ingenieria","Bogota","CO",4.78305195,-74.0442040297156
"Universidad Autonoma De Bucaramanga",7.1168832,-73.1051629
"Universidad Autonoma De Bucaramanga","Bucaramanga","CO",7.1168832,-73.1051629
"Universidad Eafit",6.10464025,-75.4557833087589
"Universidad Eafit","Medellin","CO",6.10464025,-75.4557833087589
"Pohang University Of Science And Technology",36.0172898,129.323920997982
"Pohang University Of Science And Technology","Pohang","KR",36.0172898,129.323920997982
"Hanyang University",37.5551257,127.0447098
"Hanyang University","Seoul","KR",37.5558418,127.0438918
"Kookmin University",37.61147915,126.996468815557
"Kookmin University","Seoul","KR",37.61147915,126.996468815557
"Escuela Politecnica Nacional De Quito",-0.2101692,-78.4886323
"Seoul National University Of Science And Technology Seoultech","Seoul","KR",37.6324854,127.079487800846
"Universidad De Murcia",38.0147121,-1.1676358
"Escuela Politecnica Nacional De Quito","Quito","EC",-0.21033215,-78.4900641291908
"Universidad De Zaragoza",41.6836311,-0.885944249252812
"Universidad De Murcia","Murcia","ES",38.0147121,-1.1676358
"Oulu University Of Applied Sciences",65.00861805,25.4726477466852
"Universidad De Zaragoza","Zaragoza","ES",41.6836311,-0.885944249252812
"Tampere University Of Technology",61.44964205,23.8587746189096
"Oulu University Of Applied Sciences","Oulu","FI",65.00861805,25.4726477466852
"Universita Della Calabria",39.3614022,16.2263106
"Tampere University Of Technology","Tampere","FI",61.44964205,23.8587746189096
"Universita Di Bologna",44.49964345,11.354422008333
"Universita Della Calabria","Arcavacata","IT",39.3614022,16.2263106
"Universita Degli Studi Di Salerno",40.75586365,14.7804889453213
"Universita Di Bologna","Bologna","IT",44.50134225,11.3591361693006
"Universita Degli Studi Di Genova",44.4148861,8.9266707
"Universita Degli Studi Di Salerno","Fisciano","IT",40.75586365,14.7804889453213
"Politecnico Di Milano",45.4790288,9.23221040387672
"Universita Degli Studi Di Genova","Genova","IT",44.4148861,8.9266707
"Universita Degli Studi Di Napoli Federico Ii",40.84526205,14.2512487738249
"Politecnico Di Milano","Milan","IT",45.4790288,9.23221040387672
"Chiba Institute Of Technology",35.6888667,140.02117559587
"Universita Degli Studi Di Napoli Federico Ii","Napoli","IT",40.84526205,14.2512487738249
"Chiba University",35.62786925,140.103465749158
"Chiba Institute Of Technology","Chiba","JP",35.6888667,140.02117559587
"Tohoku University",38.2530945,140.8736593
"Chiba University","Chiba","JP",35.62786925,140.103465749158
"Universite Libanaise",33.8724848,35.5194311623001
"Tohoku University","Sendai","JP",38.2530945,140.8736593
"Université Saint-Esprit De Kaslik",33.98168505,35.6192920532997
"Universite Libanaise","Beyrouth","LB",33.8724848,35.5194311623001
"Universidad Autonoma De Aguascalientes",21.8812194,-102.2924759
"Université Saint-Esprit De Kaslik","Kaslik","LB",33.98265035,35.620356742624
"Universidad De Guanajuato",19.7242185,-101.2440472
"Universidad Autonoma De Aguascalientes","Aguascalientes","MX",21.9142883,-102.32028877891
"Universidad Anahuac Mayab",21.11060445,-89.6123220044136
"Universidad De Guanajuato","Guanajuato","MX",19.7242185,-101.2440472
"Instituto Politecnico Nacional",21.1358397,-86.8493286
"Universidad Anahuac Mayab","Merida Yucatan","MX",21.11060445,-89.6123220044136
"Universidad Iberoamericana",25.445315,-101.0046875
"Instituto Politecnico Nacional","Mexico","MX",19.4724472,-99.1373193
"Upaep",19.2818385,-98.4397356
"Universidad Iberoamericana","Mexico","MX",25.445818,-101.0056267
"Instituto Tecnologico De Zacatepec",18.65203335,-99.1833987516266
"Upaep","Pueblar, Pue","MX",19.2818385,-98.4397356
"Norwegian University Of Science And Technology",63.4103583,10.4087418620805
"Instituto Tecnologico De Zacatepec","Zacatepec De Hidalgo","MX",18.65203335,-99.1833987516266
"University Twente",52.2380139,6.8566761
"Norwegian University Of Science And Technology","Trondheim","NO",63.4103583,10.4087418620805
"Agh - University Of Science And Technology",50.0657033,19.9189586670586
"University Twente","Enschede","NL",52.2233862,6.88542315997116
"Politechnika Krakowska",50.0717009,19.941563
"Agh - University Of Science And Technology","Cracovie","PL",50.0657033,19.9189586670586
"Universidade Da Beira Interior",40.2780936,-7.50834821105263
"Politechnika Krakowska","Cracovie","PL",50.0754784,19.9089536
"City University Of Hong Kong",22.34000115,114.169702912423
"Universidade Da Beira Interior","Covilhã","PT",40.2780936,-7.50834821105263
"Technical University Of Kosice",48.73280395,21.244194264458
"City University Of Hong Kong","Hong Kong","HK",22.34000115,114.169702912423
"Chalmers University Of Technology",57.6896523,11.9766811023544
"Technical University Of Kosice","Kosice","SK",48.73280395,21.244194264458
"Lulea University Of Technology",65.61991265,22.1410701
"Chalmers University Of Technology","Goteborg","SE",57.6896523,11.9766811023544
"Ecole Polytechnique Federale De Lausanne",46.5186594,6.566561505148
"Lulea University Of Technology","Lulea","SE",65.6170445,22.1370606335398
"National Chiao Tung University",24.78676765,120.997244116807
"Ecole Polytechnique Federale De Lausanne","Lausanne","CH",46.5186594,6.566561505148
"National Taiwan University Of Science And Technology",25.01350785,121.541707560048
"National Chiao Tung University","Hsinchu","TW",24.78676765,120.997244116807
"National Taiwan University Of Science And Technology","Taipei","TW",25.01350785,121.541707560048
rex/migrations/0001_initial.py
View file @
a1ea0015
# Generated by Django 2.0.3 on 2018-04-25 1
3:44
# Generated by Django 2.0.3 on 2018-04-25 1
4:48
import
django.core.validators
import
django.core.validators
from
django.db
import
migrations
,
models
from
django.db
import
migrations
,
models
...
@@ -57,7 +57,7 @@ class Migration(migrations.Migration):
...
@@ -57,7 +57,7 @@ class Migration(migrations.Migration):
fields
=
[
fields
=
[
(
'id'
,
models
.
AutoField
(
auto_created
=
True
,
primary_key
=
True
,
serialize
=
False
,
verbose_name
=
'ID'
)),
(
'id'
,
models
.
AutoField
(
auto_created
=
True
,
primary_key
=
True
,
serialize
=
False
,
verbose_name
=
'ID'
)),
(
'name'
,
models
.
CharField
(
max_length
=
200
)),
(
'name'
,
models
.
CharField
(
max_length
=
200
)),
(
'acronym'
,
models
.
CharField
(
max_length
=
20
)),
(
'acronym'
,
models
.
CharField
(
blank
=
True
,
max_length
=
20
,
null
=
True
)),
(
'logo'
,
models
.
ImageField
(
default
=
'path/to/my/default/image.jpg'
,
max_length
=
250
,
upload_to
=
rex
.
utils
.
friendly_path
.
friendly_path
(
'uploads/universities/logos/'
,
'name'
))),
(
'logo'
,
models
.
ImageField
(
default
=
'path/to/my/default/image.jpg'
,
max_length
=
250
,
upload_to
=
rex
.
utils
.
friendly_path
.
friendly_path
(
'uploads/universities/logos/'
,
'name'
))),
(
'main_campus'
,
models
.
OneToOneField
(
on_delete
=
django
.
db
.
models
.
deletion
.
PROTECT
,
related_name
=
'main_campus_of'
,
to
=
'rex.MainCampus'
)),
(
'main_campus'
,
models
.
OneToOneField
(
on_delete
=
django
.
db
.
models
.
deletion
.
PROTECT
,
related_name
=
'main_campus_of'
,
to
=
'rex.MainCampus'
)),
],
],
...
...
rex/models/university/__init__.py
View file @
a1ea0015
from
.university
import
University
# noqa: F401
from
.university
import
University
,
UniversityViewSet
# noqa: F401
from
.campus
import
MainCampus
,
MainCampusViewSet
# noqa: F401
from
.campus
import
MainCampus
,
MainCampusViewSet
# noqa: F401
rex/models/university/campus.py
View file @
a1ea0015
...
@@ -38,13 +38,9 @@ class MainCampus(Campus):
...
@@ -38,13 +38,9 @@ class MainCampus(Campus):
class
MainCampusSerializer
(
serializers
.
ModelSerializer
):
class
MainCampusSerializer
(
serializers
.
ModelSerializer
):
gps_coordinates
=
serializers
.
SerializerMethodField
()
modified_by
=
serializers
.
SerializerMethodField
()
modified_by
=
serializers
.
SerializerMethodField
()
modified_date
=
serializers
.
SerializerMethodField
()
modified_date
=
serializers
.
SerializerMethodField
()
def
get_gps_coordinates
(
self
,
obj
):
return
obj
.
location
()
def
get_modified_by
(
self
,
obj
):
def
get_modified_by
(
self
,
obj
):
return
obj
.
modified_by
()
return
obj
.
modified_by
()
...
@@ -52,8 +48,8 @@ class MainCampusSerializer(serializers.ModelSerializer):
...
@@ -52,8 +48,8 @@ class MainCampusSerializer(serializers.ModelSerializer):
return
obj
.
modified_date
()
return
obj
.
modified_date
()
class
Meta
:
class
Meta
:
model
=
City
model
=
MainCampus
fields
=
(
'
gps_coordinates
'
,
'modified_by'
,
'modified_date'
,
'id'
)
fields
=
(
'
lat'
,
'lon'
,
'name'
,
'city
'
,
'modified_by'
,
'modified_date'
,
'id'
)
class
MainCampusViewSet
(
viewsets
.
ModelViewSet
):
# TODO switch to dict
class
MainCampusViewSet
(
viewsets
.
ModelViewSet
):
# TODO switch to dict
...
...
rex/models/university/university.py
View file @
a1ea0015
from
django.db
import
models
from
django.db
import
models
from
rest_framework
import
serializers
,
viewsets
,
permissions
from
rex.utils.friendly_path
import
friendly_path
from
rex.utils.friendly_path
import
friendly_path
from
rex.models.university.campus
import
MainCampus
from
rex.models.university.campus
import
MainCampus
...
@@ -11,7 +12,7 @@ class University(models.Model):
...
@@ -11,7 +12,7 @@ class University(models.Model):
Model storing information about universities
Model storing information about universities
"""
"""
name
=
models
.
CharField
(
max_length
=
200
)
name
=
models
.
CharField
(
max_length
=
200
)
acronym
=
models
.
CharField
(
max_length
=
20
)
acronym
=
models
.
CharField
(
max_length
=
20
,
null
=
True
,
blank
=
True
)
logo
=
models
.
ImageField
(
upload_to
=
path_and_rename
,
max_length
=
250
,
logo
=
models
.
ImageField
(
upload_to
=
path_and_rename
,
max_length
=
250
,
default
=
'path/to/my/default/image.jpg'
)
# TODO CHANGE !
default
=
'path/to/my/default/image.jpg'
)
# TODO CHANGE !
...
@@ -20,3 +21,15 @@ class University(models.Model):
...
@@ -20,3 +21,15 @@ class University(models.Model):
def
location
(
self
):
def
location
(
self
):
return
self
.
main_campus
.
location
()
# pylint: disable=E1101
return
self
.
main_campus
.
location
()
# pylint: disable=E1101
class
UniversitySerializer
(
serializers
.
ModelSerializer
):
class
Meta
:
model
=
University
fields
=
(
'name'
,
'acronym'
,
'logo'
,
'main_campus'
,
'id'
)
class
UniversityViewSet
(
viewsets
.
ModelViewSet
):
# TODO switch to dict
permission_classes
=
(
permissions
.
DjangoModelPermissions
,)
queryset
=
University
.
objects
.
all
()
# pylint: disable=E1101
serializer_class
=
UniversitySerializer
rex/templates/rex/home.html
View file @
a1ea0015
...
@@ -54,7 +54,7 @@
...
@@ -54,7 +54,7 @@
var
universities_markers
=
L
.
markerClusterGroup
();
var
universities_markers
=
L
.
markerClusterGroup
();
{
%
for
univ
in
universities
%
}
{
%
for
univ
in
universities
%
}
L
.
marker
([{{
univ
.
loc
ation_lat
}},
{{
univ
.
location_
lon
}}]).
addTo
(
universities_markers
)
L
.
marker
([{{
univ
.
loc
.
lat
}},
{{
univ
.
loc
.
lon
}}]).
addTo
(
universities_markers
)
.
bindPopup
(
"
<b>{{ univ.name }}</b>
"
);
.
bindPopup
(
"
<b>{{ univ.name }}</b>
"
);
{
%
endfor
%
}
{
%
endfor
%
}
...
@@ -77,8 +77,8 @@
...
@@ -77,8 +77,8 @@
mymap
.
on
(
'
click
'
,
onMapClick
);
mymap
.
on
(
'
click
'
,
onMapClick
);
</script>
</script>
{% for univ in universities %}
<!--
{% for univ in universities %}
<p>{{ univ.country.name }}</p>
<p>{{ univ.country.name }}</p>
{% endfor %}
{% endfor %}
-->
{% endblock %}
{% endblock %}
\ No newline at end of file
rex/urls.py
View file @
a1ea0015
...
@@ -2,7 +2,7 @@ from django.conf.urls import url, include
...
@@ -2,7 +2,7 @@ from django.conf.urls import url, include
from
rex
import
views
from
rex
import
views
from
rest_framework
import
routers
from
rest_framework
import
routers
from
rex.models.location
import
CountryViewSet
,
RegionViewSet
,
CityViewSet
from
rex.models.location
import
CountryViewSet
,
RegionViewSet
,
CityViewSet
from
rex.models.university
import
MainCampusViewSet
from
rex.models.university
import
MainCampusViewSet
,
UniversityViewSet
from
rest_framework.documentation
import
include_docs_urls
from
rest_framework.documentation
import
include_docs_urls
...
@@ -17,5 +17,6 @@ router.register(r'country', CountryViewSet)
...
@@ -17,5 +17,6 @@ router.register(r'country', CountryViewSet)
router
.
register
(
r'region'
,
RegionViewSet
)
router
.
register
(
r'region'
,
RegionViewSet
)
router
.
register
(
r'city'
,
CityViewSet
)
router
.
register
(
r'city'
,
CityViewSet
)
router
.
register
(
r'main-campus'
,
MainCampusViewSet
)
router
.
register
(
r'main-campus'
,
MainCampusViewSet
)
router
.
register
(
r'university'
,
UniversityViewSet
)
urlpatterns
+=
[
url
(
r'^api/'
,
include
(
router
.
urls
))]
urlpatterns
+=
[
url
(
r'^api/'
,
include
(
router
.
urls
))]
rex/utils/extract_universities.py
100644 → 100755
View file @
a1ea0015
...
@@ -9,6 +9,7 @@ import csv
...
@@ -9,6 +9,7 @@ import csv
import
os
import
os
import
time
import
time
from
geopy.geocoders
import
Nominatim
from
geopy.geocoders
import
Nominatim
import
reverse_geocoder
as
rg
tmp
=
os
.
path
.
join
(
os
.
path
.
realpath
(
__file__
),
'../../assets/destinations.csv'
)
tmp
=
os
.
path
.
join
(
os
.
path
.
realpath
(
__file__
),
'../../assets/destinations.csv'
)
destinations_path
=
os
.
path
.
abspath
(
tmp
)
destinations_path
=
os
.
path
.
abspath
(
tmp
)
...
@@ -33,7 +34,7 @@ with open(destinations_path, 'rt') as input:
...
@@ -33,7 +34,7 @@ with open(destinations_path, 'rt') as input:
for
row
in
reader
:
for
row
in
reader
:
# handle the header
# handle the header
if
i
==
0
:
if
i
==
0
:
header
=
[
'
Universit
y'
,
'lat'
,
'lon'
]
header
=
[
'
university'
,
'city'
,
'countr
y'
,
'lat'
,
'lon'
]
spamwriter
.
writerow
(
header
)
spamwriter
.
writerow
(
header
)
i
+=
1
i
+=
1
else
:
else
:
...
@@ -45,12 +46,13 @@ with open(destinations_path, 'rt') as input:
...
@@ -45,12 +46,13 @@ with open(destinations_path, 'rt') as input:
break
break
except
:
# noqa: E722
except
:
# noqa: E722
print
(
"error during query, retrying"
)
print
(
"error during query, retrying"
)
time
.
sleep
(
1
)
time
.
sleep
(
0.5
)
print
(
location
)
if
location
is
not
None
:
if
location
is
not
None
:
spamwriter
.
writerow
(
coord
=
(
location
.
latitude
,
location
.
longitude
)
[
row
[
2
],
location
.
latitude
,
location
.
longitude
])
res
=
rg
.
search
(
coord
,
verbose
=
False
)
line
=
[
row
[
2
],
row
[
1
],
res
[
0
][
'cc'
],
location
.
latitude
,
location
.
longitude
]
print
(
line
)
spamwriter
.
writerow
(
line
)
else
:
else
:
failed
.
append
(
query
)
failed
.
append
(
query
)
...
...
rex/utils/insert_universities.py
View file @
a1ea0015
...
@@ -5,24 +5,78 @@ Script to insert the country data in the database
...
@@ -5,24 +5,78 @@ Script to insert the country data in the database
IT HAS TO BE RUN INSIDE ./manage.py shell
IT HAS TO BE RUN INSIDE ./manage.py shell
"""
"""
import
csv
import
argparse
import
os
import
os
import
pandas
as
pd
import
requests
import
json
if
__name__
!=
"__main__"
:
print
(
__name__
)
raise
Exception
(
"Script has to be run directly"
)
# getting args from command line
parser
=
argparse
.
ArgumentParser
(
description
=
'Country and Region Insertion'
)
parser
.
add_argument
(
'--address'
,
'-a'
,
dest
=
'address'
,
action
=
'store'
,
default
=
'http://127.0.0.1:8000/api'
,
help
=
'Adresse of the web REST API'
)
parser
.
add_argument
(
'--token'
,
'-t'
,
dest
=
'token'
,
action
=
'store'
,
default
=
'NO_TOKEN_PROVIDED'
,
help
=
'Permanent token to use'
)
args
=
parser
.
parse_args
()
api_address
=
str
(
args
.
address
)
api_token
=
str
(
args
.
token
)
from
rex.models.university
import
University
tmp
=
os
.
path
.
join
(
os
.
path
.
realpath
(
__file__
),
tmp
=
os
.
path
.
join
(
os
.
path
.
realpath
(
__file__
),
'../../assets/destinations_extracted.csv'
)
'../../assets/destinations_extracted.csv'
)
destinations_path
=
os
.
path
.
abspath
(
tmp
)
destinations_path
=
os
.
path
.
abspath
(
tmp
)
if
not
os
.
path
.
isfile
(
destinations_path
):
data
=
pd
.
read_csv
(
destinations_path
,
sep
=
','
,
header
=
0
,
print
(
destinations_path
)
dtype
=
object
)
raise
Exception
(
"Missing file containing country data"
)
def
make_post
(
address
,
data
):
h
=
{
'Authorization'
:
'Token '
+
api_token
}
r
=
requests
.
post
(
address
,
headers
=
h
,
data
=
data
)
if
r
.
status_code
is
403
:
raise
Exception
(
"Authentification failed"
)
print
(
r
.
content
)
return
json
.
loads
(
r
.
content
)[
"id"
]
inserted_city_cc
=
{}
def
insert_city
(
city_name
,
country
):
if
not
city_name
+
country
in
inserted_city_cc
.
keys
():
address
=
api_address
+
"/city/"
data
=
{
'country'
:
country
,
'name'
:
city_name
}
inserted_city_cc
[
city_name
+
country
]
=
make_post
(
address
,
data
)
return
inserted_city_cc
[
city_name
+
country
]
def
insert_main_campus
(
name
,
city_id
,
lat
,
lon
):
address
=
api_address
+
"/main-campus/"
data
=
{
'name'
:
name
,
'city'
:
city_id
,
'lat'
:
lat
,
'lon'
:
lon
}
return
make_post
(
address
,
data
)
def
insert_university
(
name
,
main_campus_id
):
address
=
api_address
+
"/university/"
data
=
{
'name'
:
name
,
'main_campus'
:
main_campus_id
}
return
make_post
(
address
,
data
)
with
open
(
destinations_path
,
'rt'
)
as
f
:
reader
=
csv
.
reader
(
f
)
for
row
in
reader
:
for
index
,
row
in
data
.
iterrows
():
if
row
[
0
]
!=
'University'
:
univ
,
city
,
country
,
lat
,
lon
=
row
u
=
University
(
name
=
row
[
0
],
acronym
=
'NULL'
,
localization_lat
=
float
(
lat
=
round
(
float
(
lat
),
6
)
row
[
1
]),
localization_lon
=
float
(
row
[
2
]))
lon
=
round
(
float
(
lon
),
6
)
u
.
save
()
city_id
=
insert_city
(
city
,
country
)
m_c_id
=
insert_main_campus
(
univ
,
city_id
,
lat
,
lon
)
insert_university
(
univ
,
m_c_id
)
rex/views.py
View file @
a1ea0015
...
@@ -4,4 +4,6 @@ from rex.models.university import University
...
@@ -4,4 +4,6 @@ from rex.models.university import University
def
home
(
request
):
def
home
(
request
):
universities
=
University
.
objects
.
all
()
universities
=
University
.
objects
.
all
()
for
univ
in
universities
:
univ
.
loc
=
univ
.
location
()
return
render
(
request
,
'rex/home.html'
,
{
'universities'
:
universities
})
return
render
(
request
,
'rex/home.html'
,
{
'universities'
:
universities
})
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment