Skip to content

Commit

Permalink
Utilisation d'objets datetime.datetime possible pour startTime et end…
Browse files Browse the repository at this point in the history
…Time
  • Loading branch information
RENAUD Maxence DGAC/CRNA-N committed Oct 21, 2019
1 parent 9167ada commit d8e0a2d
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 20 deletions.
12 changes: 9 additions & 3 deletions demo.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#-*- coding: utf-8 -*-
from manager import Manager
import datetime

test_manager = Manager() # avec proxy
test_manager = Manager(how_to_auth='cert') # avec cert
Expand All @@ -11,24 +12,29 @@
]
}

# startTime et endTime peuvent être des objets datetime.datetime ou des str au format AAAA-MM-JJ HH:MM
# attention : startTime et endTime doivent être exprimées en heures UTC
startTime=datetime.datetime(year=2019, month=10, day=21, hour=14, minute=30, tzinfo=datetime.timezone.utc)
endTime= datetime.datetime(year=2019, month=10, day=21, hour=15, minute=30, tzinfo=datetime.timezone.utc)

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

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

# démo queryFlightsByTrafficVolume
flight_list = test_manager.queryFlightsByTrafficVolume(
trafficVolume='LFFTN',
startTime="2019-10-18 17:00", endTime="2019-10-18 18:30",
startTime=startTime, endTime=endTime,
other_params=other_params)
print(flight_list.data)
12 changes: 9 additions & 3 deletions manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,12 @@ def update_params_for_queries(self, new_params):
if param in self.params_for_queries:
self.params_for_queries[param] = new_params[param]

def set_traffic_window(self, startTime, endTime):
return {
'wef': utils.format_datetime_for_nm(startTime),
'unt': utils.format_datetime_for_nm(endTime)
}

# -----------------------------------------------------------------------------------------
def queryFlightsByAirspace(self, airspace, startTime, endTime, other_params={}):
""" Liste des vols par airspace
Expand All @@ -132,7 +138,7 @@ def queryFlightsByAirspace(self, airspace, startTime, endTime, other_params={}):
dictionnaire pour overrider les valeurs par défaut de _default_params_for_queries
"""

trafficWindow = {'wef': startTime, 'unt': endTime}
trafficWindow = self.set_traffic_window(startTime, endTime)
self.update_params_for_queries(other_params)
client = Client(**self.conf, service_name='FlightManagementService')
self.tmp_data = client.service.queryFlightsByAirspace(
Expand All @@ -159,7 +165,7 @@ def queryFlightsByAerodrome(self, aerodrome, aerodromeRole, startTime, endTime,
other_params
dictionnaire pour overrider les valeurs par défaut de _default_params_for_queries
"""
trafficWindow = {'wef': startTime, 'unt': endTime}
trafficWindow = self.set_traffic_window(startTime, endTime)
self.update_params_for_queries(other_params)
client = Client(**self.conf, service_name='FlightManagementService')
self.tmp_data = client.service.queryFlightsByAerodrome(
Expand All @@ -184,7 +190,7 @@ def queryFlightsByTrafficVolume(self, trafficVolume, startTime, endTime, other_p
other_params
dictionnaire pour overrider les valeurs par défaut de _default_params_for_queries
"""
trafficWindow = {'wef': startTime, 'unt': endTime}
trafficWindow = self.set_traffic_window(startTime, endTime)
self.update_params_for_queries(other_params)
client = Client(**self.conf, service_name='FlightManagementService')
self.tmp_data = client.service.queryFlightsByTrafficVolume(
Expand Down
33 changes: 19 additions & 14 deletions utils.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,12 @@
#!/usr/bin/env python
#-*- coding: utf-8 -*-

import argparse
import datetime
import logging
import os
import re
import sys
import xml.etree.ElementTree as ET

import requests
#from elasticsearch import Elasticsearch

#from decolog import *
#from dsnaproxies import dsnaproxies
from shared_vars import DATA_PATH


# -------------------------------------------------------------------
# -------------------------------------------------------------------
# Nouveaux utilitaires par Maxence
def write_content_to_file(filename, content, rep=DATA_PATH):
os.makedirs(os.path.dirname(rep+filename), exist_ok=True)
full_path = os.path.join(rep, filename)
Expand All @@ -39,4 +26,22 @@ def get_datetime(nbr_days=0):

def sendTime():
sendTime = f"{datetime.datetime.utcnow().replace(microsecond=0)}"
return sendTime[:19]
return sendTime[:19]

def format_datetime_for_nm(datetime_to_format):
# TODO : affiner les warnings, messages d'erreurs etc

if type(datetime_to_format) == str:
# TODO : vérifier que le format correspond bien à ce qui est attendu par NM
return datetime_to_format

elif isinstance(datetime_to_format, datetime.datetime):
if datetime_to_format.tzinfo != datetime.timezone.utc:
print("Attention : l'objet datetime.datetime que vous avez passé en argument n'est pas formaté UTC.")
return datetime_to_format.strftime("%Y-%m-%d %H:%M")

else:
print("La date+heure que vous avez passé en argument n'est pas un format \
accepté par soapy (str ou objet datetime.datetime).")
# TODO rapidement : lever une exception plutôt
exit(1)

0 comments on commit d8e0a2d

Please sign in to comment.