Skip to content

Commit

Permalink
Simplification et factorisation de code (utilisation de dict pour ove…
Browse files Browse the repository at this point in the history
…rrider des val par défaut) + ajout de docstrings
  • Loading branch information
KrazyMax committed Oct 18, 2019
1 parent f275301 commit 5deb5dd
Show file tree
Hide file tree
Showing 97 changed files with 22,329 additions and 90 deletions.
29 changes: 15 additions & 14 deletions demo.py
Original file line number Diff line number Diff line change
@@ -1,33 +1,34 @@
#-*- coding: utf-8 -*-
# NOTE : à exécuter dans un shell Python plutôt que comme un script !
from manager import Manager

test_manager = Manager() # avec proxy
test_manager = Manager(how_to_auth='cert') # avec cert
requestedFlightFields = ['flightState', 'cfmuFlightType']

other_params = {
'requestedFlightFields': [
'flightState',
'cfmuFlightType'
]
}

# démo queryFlightsByAirspace
flight_list = test_manager.queryFlightsByAirspace(
airspace="LFFFTH",
startTime="2019-10-16 17:00",
endTime="2019-10-16 18:30",
requestedFlightFields=requestedFlightFields)
airspace="LFFFTH",
startTime="2019-10-18 17:00", endTime="2019-10-18 18:30",
other_params=other_params)
print(flight_list.data)

# démo queryFlightsByAerodrome
flight_list = test_manager.queryFlightsByAerodrome(
aerodrome="LFPG",
aerodromeRole="DEPARTURE",
startTime="2019-10-16 17:00",
endTime="2019-10-16 18:30",
requestedFlightFields=requestedFlightFields)
startTime="2019-10-18 17:00", endTime="2019-10-18 18:30",
other_params=other_params)
print(flight_list.data)

# démo queryFlightsByTrafficVolume
flight_list = test_manager.queryFlightsByTrafficVolume(
trafficVolume='LFFTN',
startTime="2019-10-16 17:00",
endTime="2019-10-16 18:30",
requestedFlightFields=requestedFlightFields)
print(flight_list.data)

startTime="2019-10-18 17:00", endTime="2019-10-18 18:30",
other_params=other_params)
print(flight_list.data)
143 changes: 68 additions & 75 deletions manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,14 @@ def __init__(
self.available_services = []
self.available_operations = {}
self._default_params_for_queries = {
'requestedFlightFields': [],
'dataset': get_dataset(dataset),
'trafficType': 'LOAD',
'includeProposalFlights': True,
'includeForecastFlights': True,
'sendTime': utils.sendTime(),
}
self.params_for_queries = self._default_params_for_queries

# ------------- certificat ou proxy ? ------------- #
if how_to_auth == 'cert':
Expand Down Expand Up @@ -72,11 +74,6 @@ def __init__(
}
self.tmp_data = None


# -----------------------------------------------------------------------------------------
def get_wsdl_file(self):
pass

# -----------------------------------------------------------------------------------------
def set_available_services(self):
self.available_services = []
Expand Down Expand Up @@ -112,90 +109,86 @@ def show_operations_of_service(self, service_name):
def convert_data_to_json(self, obj):
return serialize_object(self.tmp_data)

def update_params_for_queries(self, new_params):
for param in new_params:
if param in self.params_for_queries:
self.params_for_queries[param] = new_params[param]

# -----------------------------------------------------------------------------------------
def queryFlightsByAirspace(
self,
airspace,
startTime,
endTime,
requestedFlightFields= [],
dataset= None,
trafficType= None,
includeProposalFlights= None,
includeForecastFlights= None,
sendTime= None,
):

dataset = self._default_params_for_queries['dataset'] if not dataset else dataset
trafficType = self._default_params_for_queries['trafficType'] if not trafficType else trafficType
includeProposalFlights = self._default_params_for_queries['includeProposalFlights'] if not includeProposalFlights else includeProposalFlights
includeForecastFlights = self._default_params_for_queries['includeForecastFlights'] if not includeForecastFlights else includeForecastFlights
sendTime = self._default_params_for_queries['sendTime'] if not sendTime else sendTime
def queryFlightsByAirspace(self, airspace, startTime, endTime, other_params={}):
""" Liste des vols par airspace
Récupère la liste des vols transitant par un volume d'espace donné.
Parameters
----------
airspace
volume d'espace souhaité
startTime
heure de début (UTC)
endTime
heure de fin (UTC)
other_params
dictionnaire pour overrider les valeurs par défaut de _default_params_for_queries
"""

trafficWindow = {'wef': startTime, 'unt': endTime}

self.update_params_for_queries(other_params)
client = Client(**self.conf, service_name='FlightManagementService')
self.tmp_data = client.service.queryFlightsByAirspace(
airspace=airspace,
dataset=dataset, trafficType=trafficType,
includeProposalFlights=includeProposalFlights, includeForecastFlights=includeForecastFlights,
trafficWindow=trafficWindow, requestedFlightFields=requestedFlightFields, sendTime=sendTime)
trafficWindow=trafficWindow,
**self.params_for_queries)
return self.tmp_data

def queryFlightsByAerodrome(
self,
aerodrome,
aerodromeRole,
startTime,
endTime,
requestedFlightFields= [],
dataset= None,
trafficType= None,
includeProposalFlights= None,
includeForecastFlights= None,
sendTime= None,
):

dataset = self._default_params_for_queries['dataset'] if not dataset else dataset
trafficType = self._default_params_for_queries['trafficType'] if not trafficType else trafficType
includeProposalFlights = self._default_params_for_queries['includeProposalFlights'] if not includeProposalFlights else includeProposalFlights
includeForecastFlights = self._default_params_for_queries['includeForecastFlights'] if not includeForecastFlights else includeForecastFlights
sendTime = self._default_params_for_queries['sendTime'] if not sendTime else sendTime
def queryFlightsByAerodrome(self, aerodrome, aerodromeRole, startTime, endTime, other_params={}):
""" Liste des vols par aérodrome
Récupère la liste des vols au départ ou à l'arrivée d'un aérodrome.
Parameters
----------
aerodrome
code OACI du terrain souhaité
aerodromeRole
rôle du terrain (DEPARTURE...)
startTime
heure de début (UTC)
endTime
heure de fin (UTC)
other_params
dictionnaire pour overrider les valeurs par défaut de _default_params_for_queries
"""
trafficWindow = {'wef': startTime, 'unt': endTime}

self.update_params_for_queries(other_params)
client = Client(**self.conf, service_name='FlightManagementService')
self.tmp_data = client.service.queryFlightsByAerodrome(
aerodrome=aerodrome, aerodromeRole=aerodromeRole,
dataset=dataset, trafficType=trafficType,
includeProposalFlights=includeProposalFlights, includeForecastFlights=includeForecastFlights,
trafficWindow=trafficWindow, requestedFlightFields=requestedFlightFields, sendTime=sendTime)
aerodrome=aerodrome, aerodromeRole=aerodromeRole,
trafficWindow=trafficWindow,
**self.params_for_queries)
return self.tmp_data

def queryFlightsByTrafficVolume(
self,
trafficVolume,
startTime,
endTime,
requestedFlightFields= [],
dataset= None,
trafficType= None,
includeProposalFlights= None,
includeForecastFlights= None,
sendTime= None,
**kwargs
):

dataset = self._default_params_for_queries['dataset'] if not dataset else dataset
trafficType = self._default_params_for_queries['trafficType'] if not trafficType else trafficType
includeProposalFlights = self._default_params_for_queries['includeProposalFlights'] if not includeProposalFlights else includeProposalFlights
includeForecastFlights = self._default_params_for_queries['includeForecastFlights'] if not includeForecastFlights else includeForecastFlights
sendTime = self._default_params_for_queries['sendTime'] if not sendTime else sendTime
def queryFlightsByTrafficVolume(self, trafficVolume, startTime, endTime, other_params={}):
""" Liste des vols par Traffic Volume (TV)
Récupère la liste des vols transitant par un TV.
Parameters
----------
trafficVolume
nom du TV
startTime
heure de début (UTC)
endTime
heure de fin (UTC)
other_params
dictionnaire pour overrider les valeurs par défaut de _default_params_for_queries
"""
trafficWindow = {'wef': startTime, 'unt': endTime}

self.update_params_for_queries(other_params)
client = Client(**self.conf, service_name='FlightManagementService')
self.tmp_data = client.service.queryFlightsByTrafficVolume(
trafficVolume=trafficVolume,
dataset=dataset, trafficType=trafficType,
includeProposalFlights=includeProposalFlights, includeForecastFlights=includeForecastFlights,
trafficWindow=trafficWindow, requestedFlightFields=requestedFlightFields, sendTime=sendTime,
**kwargs)
trafficWindow=trafficWindow,
**self.params_for_queries)
return self.tmp_data
18 changes: 18 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,21 +1,39 @@
alabaster==0.7.12
appdirs==1.4.3
astroid==2.2.5
attrs==19.1.0
Babel==2.7.0
cached-property==1.5.1
certifi==2019.6.16
chardet==3.0.4
defusedxml==0.6.0
docutils==0.15.2
idna==2.8
imagesize==1.1.0
isodate==0.6.0
isort==4.3.21
Jinja2==2.10.3
lazy-object-proxy==1.4.1
lxml==4.3.4
MarkupSafe==1.1.1
mccabe==0.6.1
packaging==19.2
Pygments==2.4.2
pylint==2.3.1
pyparsing==2.4.2
pytz==2019.1
requests==2.22.0
requests-toolbelt==0.9.1
six==1.12.0
snowballstemmer==2.0.0
Sphinx==2.2.0
sphinx-rtd-theme==0.4.3
sphinxcontrib-applehelp==1.0.1
sphinxcontrib-devhelp==1.0.1
sphinxcontrib-htmlhelp==1.0.2
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.2
sphinxcontrib-serializinghtml==1.1.3
typed-ast==1.4.0
urllib3==1.25.3
wrapt==1.11.2
Expand Down
3 changes: 2 additions & 1 deletion set_cert_key.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/bin/sh
NBR_RESULTS=$(find ./cert -name '*.p12' | wc -l)
if [ $NBR_RESULTS = '0' ]; then
printf "Aucun fichier trouvé avec l'extension .p12 dans cert/"
printf "Aucun fichier trouvé avec l'extension .p12 dans cert/\n"
exit 1
elif [ $NBR_RESULTS -gt '1' ]; then
printf "Il existe plusieurs fichiers avec l'extension .p12 dans cert/\nMerci de n'en laisser qu'un seul"
Expand All @@ -13,4 +13,5 @@ else
printf "On créé maintenant les fichier crt.pem et key.pem.\n"
openssl pkcs12 -in ${FILE_NAME} -passin=pass:${PASSWORD} -out ./cert/crt.pem -clcerts -nokeys # pour le certificat
openssl pkcs12 -in ${FILE_NAME} -passin=pass:${PASSWORD} -out ./cert/key.pem -nocerts -nodes # pour la clé
printf "Fichiers créés avec succès"
fi
20 changes: 20 additions & 0 deletions soapy_doc/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Minimal makefile for Sphinx documentation
#

# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = .
BUILDDIR = _build

# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

.PHONY: help Makefile

# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
Binary file added soapy_doc/_build/doctrees/demo.doctree
Binary file not shown.
Binary file added soapy_doc/_build/doctrees/dev_test.doctree
Binary file not shown.
Binary file added soapy_doc/_build/doctrees/environment.pickle
Binary file not shown.
Binary file added soapy_doc/_build/doctrees/index.doctree
Binary file not shown.
Binary file added soapy_doc/_build/doctrees/manager.doctree
Binary file not shown.
Binary file added soapy_doc/_build/doctrees/modules.doctree
Binary file not shown.
Binary file added soapy_doc/_build/doctrees/shared_vars.doctree
Binary file not shown.
Binary file added soapy_doc/_build/doctrees/utils.doctree
Binary file not shown.
4 changes: 4 additions & 0 deletions soapy_doc/_build/html/.buildinfo
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 4e622732717a105303eaf08e9b3daebe
tags: 645f666f9bcd5a90fca523b33c5a78b7
7 changes: 7 additions & 0 deletions soapy_doc/_build/html/_sources/demo.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
demo module
===========

.. automodule:: demo
:members:
:undoc-members:
:show-inheritance:
7 changes: 7 additions & 0 deletions soapy_doc/_build/html/_sources/dev_test.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
dev\_test module
================

.. automodule:: dev_test
:members:
:undoc-members:
:show-inheritance:
20 changes: 20 additions & 0 deletions soapy_doc/_build/html/_sources/index.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
.. soapy documentation master file, created by
sphinx-quickstart on Fri Oct 18 14:41:13 2019.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to soapy's documentation!
=================================

.. toctree::
:maxdepth: 2
:caption: Contents:



Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
7 changes: 7 additions & 0 deletions soapy_doc/_build/html/_sources/manager.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
manager module
==============

.. automodule:: manager
:members:
:undoc-members:
:show-inheritance:
11 changes: 11 additions & 0 deletions soapy_doc/_build/html/_sources/modules.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
soapy
=====

.. toctree::
:maxdepth: 4

demo
dev_test
manager
shared_vars
utils
7 changes: 7 additions & 0 deletions soapy_doc/_build/html/_sources/shared_vars.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
shared\_vars module
===================

.. automodule:: shared_vars
:members:
:undoc-members:
:show-inheritance:
7 changes: 7 additions & 0 deletions soapy_doc/_build/html/_sources/utils.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
utils module
============

.. automodule:: utils
:members:
:undoc-members:
:show-inheritance:
Loading

0 comments on commit 5deb5dd

Please sign in to comment.