Finalizado y testado localmente el modulo de Geocoding, listo
para probar en entorno integrado.
This commit is contained in:
parent
238b0f5305
commit
3a4a4fc195
4 changed files with 358 additions and 206 deletions
382
.idea/workspace.xml
generated
382
.idea/workspace.xml
generated
|
|
@ -2,9 +2,10 @@
|
|||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="6e2fbba0-85ff-42d6-8e70-e4cdef1000c8" name="Default Changelist" comment="">
|
||||
<change afterPath="$PROJECT_DIR$/tests/geocoder_tests.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/db_layer/capturas_interface.py" beforeDir="false" afterPath="$PROJECT_DIR$/db_layer/capturas_interface.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/refresher/refresher.py" beforeDir="false" afterPath="$PROJECT_DIR$/refresher/refresher.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/geocoder/geocoder.py" beforeDir="false" afterPath="$PROJECT_DIR$/geocoder/geocoder.py" afterDir="false" />
|
||||
</list>
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
|
|
@ -30,12 +31,12 @@
|
|||
</usages-collector>
|
||||
<usages-collector id="statistics.file.extensions.open">
|
||||
<counts>
|
||||
<entry key="py" value="52" />
|
||||
<entry key="py" value="69" />
|
||||
</counts>
|
||||
</usages-collector>
|
||||
<usages-collector id="statistics.file.types.open">
|
||||
<counts>
|
||||
<entry key="Python" value="49" />
|
||||
<entry key="Python" value="66" />
|
||||
<entry key="Scratch" value="3" />
|
||||
</counts>
|
||||
</usages-collector>
|
||||
|
|
@ -44,7 +45,7 @@
|
|||
<entry key="Python Console" value="1579" />
|
||||
<entry key="capturer" value="862" />
|
||||
<entry key="dummy" value="14" />
|
||||
<entry key="py" value="17120" />
|
||||
<entry key="py" value="19003" />
|
||||
<entry key="scratch_1" value="489" />
|
||||
<entry key="txt" value="1114" />
|
||||
</counts>
|
||||
|
|
@ -52,7 +53,7 @@
|
|||
<usages-collector id="statistics.file.types.edit">
|
||||
<counts>
|
||||
<entry key="PLAIN_TEXT" value="1128" />
|
||||
<entry key="Python" value="19778" />
|
||||
<entry key="Python" value="21661" />
|
||||
<entry key="Scratch" value="272" />
|
||||
</counts>
|
||||
</usages-collector>
|
||||
|
|
@ -72,10 +73,10 @@
|
|||
<split-first>
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$APPLICATION_CONFIG_DIR$/scratches/scratch_1.py">
|
||||
<entry file="file://$PROJECT_DIR$/db_layer/capturing_tasks_interface.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret selection-end-line="60" selection-end-column="3" />
|
||||
<state relative-caret-position="495">
|
||||
<caret line="34" column="58" selection-start-line="34" selection-start-column="58" selection-end-line="34" selection-end-column="58" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
|
@ -83,52 +84,20 @@
|
|||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/tests/capturer_tests.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="195">
|
||||
<caret line="13" column="28" lean-forward="true" selection-start-line="13" selection-start-column="28" selection-end-line="13" selection-end-column="28" />
|
||||
<state>
|
||||
<caret selection-end-line="4" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/db_layer/capturas_interface.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="370">
|
||||
<caret line="52" column="15" lean-forward="true" selection-start-line="52" selection-start-column="15" selection-end-line="52" selection-end-column="15" />
|
||||
<folding>
|
||||
<marker date="1539889996231" expanded="true" signature="1271:1277" ph="..." />
|
||||
<marker date="1539889996231" expanded="true" signature="1298:1307" ph="..." />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/tests/refresher_tests.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="165">
|
||||
<caret line="258" column="30" lean-forward="true" selection-start-line="258" selection-start-column="30" selection-end-line="258" selection-end-column="30" />
|
||||
<folding>
|
||||
<element signature="e#123#18418#0" />
|
||||
<element signature="e#18441#18448#0" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/db_layer/capturing_tasks_interface.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="495">
|
||||
<caret line="34" column="58" lean-forward="true" selection-start-line="34" selection-start-column="58" selection-end-line="34" selection-end-column="58" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/geocoder/geocoder.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="615">
|
||||
<caret line="41" selection-start-line="41" selection-end-line="41" />
|
||||
<state relative-caret-position="203">
|
||||
<caret line="60" selection-start-line="60" selection-end-line="60" />
|
||||
<folding>
|
||||
<marker date="1539969036309" expanded="true" signature="4621:4882" ph="..." />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
|
@ -140,17 +109,17 @@
|
|||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/explorer/explorer.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="600">
|
||||
<caret line="139" column="40" selection-start-line="139" selection-start-column="40" selection-end-line="139" selection-end-column="40" />
|
||||
<state relative-caret-position="371">
|
||||
<caret line="281" selection-start-line="281" selection-end-line="283" selection-end-column="20" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/core/mysql_wrapper.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="390">
|
||||
<caret line="47" selection-start-line="47" selection-end-line="47" />
|
||||
<state relative-caret-position="293">
|
||||
<caret line="49" selection-start-line="49" selection-end-line="49" />
|
||||
<folding>
|
||||
<element signature="e#24#46#0" expanded="true" />
|
||||
</folding>
|
||||
|
|
@ -159,24 +128,35 @@
|
|||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/capturer/capturer.py">
|
||||
<entry file="file://$PROJECT_DIR$/refresher/refresher.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="400">
|
||||
<caret line="292" selection-start-line="292" selection-end-line="294" selection-end-column="20" />
|
||||
<state relative-caret-position="180">
|
||||
<caret line="14" selection-start-line="14" selection-end-line="14" />
|
||||
<folding>
|
||||
<element signature="e#0#22#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/refresher/refresher.py">
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/db_layer/capturas_interface.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="210">
|
||||
<caret line="14" selection-start-line="14" selection-end-line="14" />
|
||||
<state relative-caret-position="430">
|
||||
<caret line="100" selection-start-line="100" selection-end-line="100" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/tests/geocoder_tests.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="23" lean-forward="true" selection-start-column="23" selection-end-column="23" />
|
||||
<folding>
|
||||
<element signature="e#0#22#0" expanded="true" />
|
||||
<marker date="1539889821910" expanded="true" signature="167:168" ph="..." />
|
||||
<marker date="1539889821910" expanded="true" signature="167:173" ph="..." />
|
||||
<marker date="1539889821910" expanded="true" signature="475:476" ph="..." />
|
||||
<marker date="1539968390959" expanded="true" signature="155:156" ph="..." />
|
||||
<marker date="1539968390959" expanded="true" signature="155:161" ph="..." />
|
||||
<marker date="1539968390959" expanded="true" signature="582:1148" ph="..." />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
|
|
@ -227,7 +207,6 @@
|
|||
<option value="$PROJECT_DIR$/core/task.py" />
|
||||
<option value="$PROJECT_DIR$/capturer/__init__.py" />
|
||||
<option value="$PROJECT_DIR$/capturer/geocoder.py" />
|
||||
<option value="$PROJECT_DIR$/geocoder/geocoder.py" />
|
||||
<option value="$PROJECT_DIR$/mysql/capturing_tasks_interface.py" />
|
||||
<option value="$PROJECT_DIR$/mysql/capturas_interface.py" />
|
||||
<option value="$PROJECT_DIR$/tests/capturing_tests.py" />
|
||||
|
|
@ -239,6 +218,8 @@
|
|||
<option value="$PROJECT_DIR$/capturer/capturer.py" />
|
||||
<option value="$PROJECT_DIR$/tests/refresher_tests.py" />
|
||||
<option value="$PROJECT_DIR$/refresher/refresher.py" />
|
||||
<option value="$PROJECT_DIR$/tests/geocoder_tests.py" />
|
||||
<option value="$PROJECT_DIR$/geocoder/geocoder.py" />
|
||||
<option value="$PROJECT_DIR$/db_layer/capturas_interface.py" />
|
||||
</list>
|
||||
</option>
|
||||
|
|
@ -253,7 +234,6 @@
|
|||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="Scope" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<expand>
|
||||
|
|
@ -293,6 +273,7 @@
|
|||
<select />
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="Scope" />
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
|
|
@ -317,28 +298,7 @@
|
|||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="RunManager" selected="Python.refresher">
|
||||
<configuration name="capturer" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<module name="Drogon" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/capturer" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/capturer/capturer.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="true" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<component name="RunManager" selected="Python.geocoder">
|
||||
<configuration name="explorer" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<module name="Drogon" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
|
|
@ -360,6 +320,48 @@
|
|||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="geocoder" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<module name="Drogon" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/geocoder" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/geocoder/geocoder.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="geocoder_tests" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<module name="Drogon" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/tests" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tests/geocoder_tests.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="refresher" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<module name="Drogon" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
|
|
@ -402,37 +404,19 @@
|
|||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="scratch_1" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<module name="Drogon" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$APPLICATION_CONFIG_DIR$/scratches" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="SCRIPT_NAME" value="$APPLICATION_CONFIG_DIR$/scratches/scratch_1.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="true" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<list>
|
||||
<item itemvalue="Python.scratch_1" />
|
||||
<item itemvalue="Python.capturer" />
|
||||
<item itemvalue="Python.explorer" />
|
||||
<item itemvalue="Python.refresher_tests" />
|
||||
<item itemvalue="Python.refresher" />
|
||||
<item itemvalue="Python.geocoder_tests" />
|
||||
<item itemvalue="Python.geocoder" />
|
||||
</list>
|
||||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="Python.geocoder" />
|
||||
<item itemvalue="Python.geocoder_tests" />
|
||||
<item itemvalue="Python.refresher" />
|
||||
<item itemvalue="Python.refresher_tests" />
|
||||
<item itemvalue="Python.scratch_1" />
|
||||
<item itemvalue="Python.capturer" />
|
||||
<item itemvalue="Python.explorer" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
|
|
@ -546,7 +530,14 @@
|
|||
<option name="project" value="LOCAL" />
|
||||
<updated>1539717575817</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="15" />
|
||||
<task id="LOCAL-00015" summary="Ajustado error de tipos en dead_ad_checker.">
|
||||
<created>1539965135175</created>
|
||||
<option name="number" value="00015" />
|
||||
<option name="presentableId" value="LOCAL-00015" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1539965135175</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="16" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TodoView" selected-index="1">
|
||||
|
|
@ -582,7 +573,7 @@
|
|||
</layout>
|
||||
<layout-to-restore>
|
||||
<window_info content_ui="combo" id="Project" order="0" sideWeight="0.48076922" visible="true" weight="0.14918292" />
|
||||
<window_info id="Structure" order="1" sideWeight="0.5192308" side_tool="true" visible="true" weight="0.14918292" />
|
||||
<window_info id="Structure" order="1" sideWeight="0.5192308" side_tool="true" weight="0.14918292" />
|
||||
<window_info id="Favorites" order="2" sideWeight="0.5015674" side_tool="true" weight="0.14918292" />
|
||||
<window_info active="true" id="Repositories" order="3" sideWeight="0.49529782" visible="true" weight="0.32999474" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
|
|
@ -645,20 +636,16 @@
|
|||
<MESSAGE value="Puesto bien mains en explorer y capturer." />
|
||||
<MESSAGE value="Iniciado refresher." />
|
||||
<MESSAGE value="Finalizado y testeado localmente refresher, listo para testear en entorno." />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="Finalizado y testeado localmente refresher, listo para testear en entorno." />
|
||||
<MESSAGE value="Ajustado error de tipos en dead_ad_checker." />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="Ajustado error de tipos en dead_ad_checker." />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager>
|
||||
<breakpoints>
|
||||
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||
<url>file://$PROJECT_DIR$/explorer/explorer.py</url>
|
||||
<line>38</line>
|
||||
<option name="timeStamp" value="7" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||
<url>file://$PROJECT_DIR$/refresher/refresher.py</url>
|
||||
<line>14</line>
|
||||
<option name="timeStamp" value="13" />
|
||||
<url>file://$PROJECT_DIR$/geocoder/geocoder.py</url>
|
||||
<line>165</line>
|
||||
<option name="timeStamp" value="20" />
|
||||
</line-breakpoint>
|
||||
</breakpoints>
|
||||
<breakpoints-dialog>
|
||||
|
|
@ -682,6 +669,11 @@
|
|||
</expression>
|
||||
</expressions>
|
||||
<expressions id="evaluateExpression">
|
||||
<expression>
|
||||
<expression-string>capturas_interface.not_geocoded_captura_exists()</expression-string>
|
||||
<language-id>Python</language-id>
|
||||
<evaluation-mode>EXPRESSION</evaluation-mode>
|
||||
</expression>
|
||||
<expression>
|
||||
<expression-string>capturas_interface.old_ads_exist()</expression-string>
|
||||
<language-id>Python</language-id>
|
||||
|
|
@ -722,11 +714,6 @@
|
|||
<language-id>Python</language-id>
|
||||
<evaluation-mode>EXPRESSION</evaluation-mode>
|
||||
</expression>
|
||||
<expression>
|
||||
<expression-string>self.database_is_up()</expression-string>
|
||||
<language-id>Python</language-id>
|
||||
<evaluation-mode>EXPRESSION</evaluation-mode>
|
||||
</expression>
|
||||
</expressions>
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
|
|
@ -781,6 +768,9 @@
|
|||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="105">
|
||||
<caret line="7" column="34" selection-start-line="7" selection-start-column="34" selection-end-line="7" selection-end-column="34" />
|
||||
<folding>
|
||||
<element signature="e#0#46#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
|
@ -826,24 +816,10 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/geocoder/geocoder.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="615">
|
||||
<caret line="41" selection-start-line="41" selection-end-line="41" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/explorer/explorer.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="600">
|
||||
<caret line="139" column="40" selection-start-line="139" selection-start-column="40" selection-end-line="139" selection-end-column="40" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$APPLICATION_CONFIG_DIR$/scratches/scratch_1.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret selection-end-line="60" selection-end-column="3" />
|
||||
<state relative-caret-position="3045">
|
||||
<caret line="203" column="35" selection-start-line="203" selection-start-column="35" selection-end-line="203" selection-end-column="35" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
|
@ -851,41 +827,6 @@
|
|||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="165">
|
||||
<caret line="258" column="30" lean-forward="true" selection-start-line="258" selection-start-column="30" selection-end-line="258" selection-end-column="30" />
|
||||
<folding>
|
||||
<element signature="e#123#18418#0" />
|
||||
<element signature="e#18441#18448#0" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/tests/capturer_tests.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="195">
|
||||
<caret line="13" column="28" lean-forward="true" selection-start-line="13" selection-start-column="28" selection-end-line="13" selection-end-column="28" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/mysql_wrapper.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="390">
|
||||
<caret line="47" selection-start-line="47" selection-end-line="47" />
|
||||
<folding>
|
||||
<element signature="e#24#46#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/capturer/capturer.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="400">
|
||||
<caret line="292" selection-start-line="292" selection-end-line="294" selection-end-column="20" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file:///usr/lib/python3/dist-packages/apport_python_hook.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="316">
|
||||
<caret line="46" selection-start-line="46" selection-end-line="46" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
|
@ -896,33 +837,86 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/db_layer/capturing_tasks_interface.py">
|
||||
<entry file="file://$PROJECT_DIR$/capturer/capturer.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="495">
|
||||
<caret line="34" column="58" lean-forward="true" selection-start-line="34" selection-start-column="58" selection-end-line="34" selection-end-column="58" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/db_layer/capturas_interface.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="370">
|
||||
<caret line="52" column="15" lean-forward="true" selection-start-line="52" selection-start-column="15" selection-end-line="52" selection-end-column="15" />
|
||||
<folding>
|
||||
<marker date="1539889996231" expanded="true" signature="1271:1277" ph="..." />
|
||||
<marker date="1539889996231" expanded="true" signature="1298:1307" ph="..." />
|
||||
</folding>
|
||||
<state relative-caret-position="4380">
|
||||
<caret line="292" selection-start-line="292" selection-end-line="294" selection-end-column="20" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/refresher/refresher.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="210">
|
||||
<state relative-caret-position="180">
|
||||
<caret line="14" selection-start-line="14" selection-end-line="14" />
|
||||
<folding>
|
||||
<element signature="e#0#22#0" expanded="true" />
|
||||
<marker date="1539889821910" expanded="true" signature="167:168" ph="..." />
|
||||
<marker date="1539889821910" expanded="true" signature="167:173" ph="..." />
|
||||
<marker date="1539889821910" expanded="true" signature="475:476" ph="..." />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/tests/capturer_tests.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret selection-end-line="4" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/db_layer/capturing_tasks_interface.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="495">
|
||||
<caret line="34" column="58" selection-start-line="34" selection-start-column="58" selection-end-line="34" selection-end-column="58" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file:///usr/lib/python3/dist-packages/apport_python_hook.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="98">
|
||||
<caret line="145" column="23" lean-forward="true" selection-start-line="145" selection-start-column="23" selection-end-line="145" selection-end-column="23" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/tests/geocoder_tests.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="23" lean-forward="true" selection-start-column="23" selection-end-column="23" />
|
||||
<folding>
|
||||
<marker date="1539968390959" expanded="true" signature="155:156" ph="..." />
|
||||
<marker date="1539968390959" expanded="true" signature="155:161" ph="..." />
|
||||
<marker date="1539968390959" expanded="true" signature="582:1148" ph="..." />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/explorer/explorer.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="371">
|
||||
<caret line="281" selection-start-line="281" selection-end-line="283" selection-end-column="20" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/geocoder/geocoder.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="203">
|
||||
<caret line="60" selection-start-line="60" selection-end-line="60" />
|
||||
<folding>
|
||||
<marker date="1539969036309" expanded="true" signature="4621:4882" ph="..." />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/db_layer/capturas_interface.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="430">
|
||||
<caret line="100" selection-start-line="100" selection-end-line="100" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/mysql_wrapper.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="293">
|
||||
<caret line="49" selection-start-line="49" selection-end-line="49" />
|
||||
<folding>
|
||||
<element signature="e#24#46#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
|
|
|
|||
|
|
@ -58,6 +58,48 @@ class CapturasInterface():
|
|||
except:
|
||||
return None
|
||||
|
||||
def not_geocoded_captura_exists(self):
|
||||
query_statement = """
|
||||
SELECT *
|
||||
FROM anuncios.capturas
|
||||
WHERE `precision` IS NULL
|
||||
LIMIT 1"""
|
||||
|
||||
cursor_result = self.anunciosdb.query(query_statement, dictionary=True)
|
||||
try:
|
||||
result = cursor_result.fetchone()
|
||||
return True
|
||||
except:
|
||||
return False
|
||||
|
||||
def get_not_geocoded_captura(self):
|
||||
query_statement = """
|
||||
SELECT *
|
||||
FROM anuncios.capturas
|
||||
WHERE `precision` IS NULL
|
||||
LIMIT 1
|
||||
"""
|
||||
|
||||
cursor_result = self.anunciosdb.query(query_statement, dictionary=True)
|
||||
try:
|
||||
return cursor_result.fetchone()
|
||||
except:
|
||||
return None
|
||||
|
||||
def update_geo_data(self, referencia, fecha_captura, latitude, longitude, precision):
|
||||
query_statement = """
|
||||
UPDATE anuncios.capturas
|
||||
SET latitud = %(latitud)s, longitud = %(longitud)s, `precision` = %(precision)s
|
||||
WHERE referencia = %(referencia)s AND fecha_captura = %(fecha_captura)s
|
||||
"""
|
||||
query_parameters = {'referencia': referencia,
|
||||
'fecha_captura': fecha_captura,
|
||||
'latitud': latitude,
|
||||
'longitud': longitude,
|
||||
'precision': precision}
|
||||
|
||||
self.anunciosdb.query(query_statement, query_parameters)
|
||||
|
||||
|
||||
capturas_interface = CapturasInterface()
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,64 @@
|
|||
import sys
|
||||
sys.path.append('..')
|
||||
import requests
|
||||
from time import sleep
|
||||
from db_layer.capturas_interface import capturas_interface
|
||||
|
||||
|
||||
class Geocoder:
|
||||
|
||||
def __init__(self):
|
||||
self.cache = GeocodingCache()
|
||||
|
||||
def start(self):
|
||||
|
||||
while True:
|
||||
sleep(120)
|
||||
|
||||
if capturas_interface.not_geocoded_captura_exists():
|
||||
ad_data = capturas_interface.get_not_geocoded_captura()
|
||||
else:
|
||||
continue
|
||||
|
||||
address = ad_data['calle'] + ', ' + ad_data['ciudad']
|
||||
|
||||
if self.cache.address_in_cache(address):
|
||||
geo_data = self.cache.get_coordinates(address)
|
||||
capturas_interface.update_geo_data(ad_data['referencia'],
|
||||
ad_data['fecha_captura'],
|
||||
geo_data['latitude'],
|
||||
geo_data['longitude'],
|
||||
geo_data['precision'])
|
||||
continue
|
||||
|
||||
task = GeocodingTask(address)
|
||||
task.geocode()
|
||||
|
||||
while not task.is_successfull():
|
||||
task.geocode()
|
||||
if task.tries < 3 or task.success_surrender_retry == 'Surrender':
|
||||
geo_data = {'latitude': None,
|
||||
'longitude': None,
|
||||
'precision': 'SIN RESULTADOS'}
|
||||
capturas_interface.update_geo_data(ad_data['referencia'],
|
||||
ad_data['fecha_captura'],
|
||||
geo_data['latitude'],
|
||||
geo_data['longitude'],
|
||||
geo_data['precision'])
|
||||
break
|
||||
|
||||
geo_data = task.get_results()
|
||||
|
||||
self.cache.add_address(address,
|
||||
geo_data['latitude'],
|
||||
geo_data['longitude'],
|
||||
geo_data['precision'])
|
||||
|
||||
capturas_interface.update_geo_data(ad_data['referencia'],
|
||||
ad_data['fecha_captura'],
|
||||
geo_data['latitude'],
|
||||
geo_data['longitude'],
|
||||
geo_data['precision'])
|
||||
|
||||
|
||||
class GeocodingCache:
|
||||
|
|
@ -23,16 +83,14 @@ class GeocodingCache:
|
|||
"""
|
||||
for geocoded_address in self.geocoded_addresses:
|
||||
if geocoded_address['address'] == address:
|
||||
return geocoded_address['latitude'], \
|
||||
geocoded_address['longitude'], \
|
||||
geocoded_address['precision']
|
||||
return geocoded_address
|
||||
return None
|
||||
|
||||
def add_address(self, address, latitude, longitude, precision):
|
||||
"""
|
||||
Añade la direccion a la cache y le hace sitio si es necesario
|
||||
"""
|
||||
if len(self.geocoded_addresses) >= cache_max_size:
|
||||
if len(self.geocoded_addresses) >= GeocodingCache.cache_max_size:
|
||||
self.geocoded_addresses.pop()
|
||||
|
||||
self.geocoded_addresses.insert(0, {'address': address,
|
||||
|
|
@ -45,9 +103,6 @@ class GeocodingTask:
|
|||
|
||||
url = 'https://maps.googleapis.com/maps/api/geocode/json'
|
||||
|
||||
request_parameters = {'region': 'es',
|
||||
'key': 'AIzaSyCnKj0WnsxVZcaoxeAYkuRw3cKRNGiISYA'}
|
||||
|
||||
geocoding_status_success = ['OK']
|
||||
geocoding_status_surrender = ['ZERO_RESULTS']
|
||||
geocoding_status_retry = ['OVER_QUERY_LIMIT',
|
||||
|
|
@ -56,14 +111,27 @@ class GeocodingTask:
|
|||
'UNKNOWN_ERROR']
|
||||
|
||||
def __init__(self, address):
|
||||
request_paremeters['address'] = address
|
||||
self.request_parameters = {'address': address,
|
||||
'region': 'es',
|
||||
'key': 'AIzaSyCnKj0WnsxVZcaoxeAYkuRw3cKRNGiISYA'}
|
||||
self.tries = 0
|
||||
|
||||
def geocode(self):
|
||||
"""
|
||||
Lanza la peticion de gecoding al servicio de google
|
||||
"""
|
||||
self.response = requests.get(url, request_parameters)
|
||||
self.response = requests.get(GeocodingTask.url, params=self.request_parameters)
|
||||
self.response_json = self.response.json()
|
||||
self.tries += 1
|
||||
|
||||
def is_successfull(self):
|
||||
"""
|
||||
Comprueba que la request esta bien tanto por parte HTTP como de estados de Google.
|
||||
"""
|
||||
if self.response.ok and self.success_surrender_retry() == 'Success':
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def get_request_status(self):
|
||||
"""
|
||||
|
|
@ -75,9 +143,9 @@ class GeocodingTask:
|
|||
"""
|
||||
Devuelve el estado del resultado desde el punto de vista de Google
|
||||
"""
|
||||
if self.response_json['status'] in geocoding_status_success:
|
||||
if self.response_json['status'] in GeocodingTask.geocoding_status_success:
|
||||
return "Success"
|
||||
elif self.response_json['status'] in geocoding_status_surrender:
|
||||
elif self.response_json['status'] in GeocodingTask.geocoding_status_surrender:
|
||||
return "Surrender"
|
||||
else:
|
||||
return "Retry"
|
||||
|
|
@ -87,8 +155,12 @@ class GeocodingTask:
|
|||
Extrae los resultados del JSON de respuesta y los devuelve
|
||||
"""
|
||||
results = {'latitude': self.response_json['results'][0]['geometry']['location']['lat'],
|
||||
'longitude': self.response_json['results'][0]['geometry']['location']['lon'],
|
||||
'longitude': self.response_json['results'][0]['geometry']['location']['lng'],
|
||||
'precision': self.response_json['results'][0]['geometry']['location_type']}
|
||||
|
||||
return results
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
geocoder = Geocoder()
|
||||
geocoder.start()
|
||||
44
tests/geocoder_tests.py
Normal file
44
tests/geocoder_tests.py
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
sys.path.append('..')
|
||||
from geocoder.geocoder import Geocoder, GeocodingTask, GeocodingCache
|
||||
|
||||
|
||||
|
||||
def test_GeocodingTask():
|
||||
|
||||
good_address = 'Avinguda de la Republica Argentina 245, Barcelona'
|
||||
bad_address = 'ASdasda, 123asd'
|
||||
|
||||
good_task = GeocodingTask(good_address)
|
||||
good_task.geocode()
|
||||
print(good_task.is_successfull())
|
||||
print(good_task.get_results())
|
||||
|
||||
bad_address = GeocodingTask(bad_address)
|
||||
bad_address.geocode()
|
||||
print(bad_address.is_successfull())
|
||||
print(bad_address.get_results())
|
||||
|
||||
def test_GeocodingCache():
|
||||
|
||||
cache = GeocodingCache()
|
||||
|
||||
test_record = {'address':'Calle Don Pepito',
|
||||
'latitude': 12.1,
|
||||
'longitude': 1.12,
|
||||
'precision': 'absoluta'}
|
||||
|
||||
print(cache.address_in_cache(test_record['address']))
|
||||
cache.add_address(test_record['address'],
|
||||
test_record['latitude'],
|
||||
test_record['longitude'],
|
||||
test_record['precision'])
|
||||
|
||||
print(cache.address_in_cache(test_record['address']))
|
||||
print(cache.get_coordinates(test_record['address']))
|
||||
|
||||
|
||||
#test_GeocodingTask()
|
||||
|
||||
test_GeocodingCache()
|
||||
Loading…
Add table
Add a link
Reference in a new issue