summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgilad_ilsar <gandismidas1>2016-09-22 11:51:49 +0300
committergilad_ilsar <gandismidas1>2016-09-22 11:51:49 +0300
commite34be2e06f88032824beaec5173419c60602591f (patch)
treefef5b1046980bb07631f0c92c1a87046c795cdc9
parentbd3956dc019d7f56bfd2cb8b667e8cacf9e80f59 (diff)
tester and person entity
-rw-r--r--.idea/misc.xml12
-rw-r--r--.idea/modules.xml2
-rw-r--r--.idea/parser.iml12
-rw-r--r--.idea/workspace.xml517
-rw-r--r--entities/person.py34
-rw-r--r--factories/INL_factory.py73
-rw-r--r--parsers/INL_xml_parser.py14
-rw-r--r--parsers/__init__.py3
-rw-r--r--testers/factorytester.py21
9 files changed, 524 insertions, 164 deletions
diff --git a/.idea/misc.xml b/.idea/misc.xml
index df245c4..f778c9e 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,14 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
- <component name="ProjectLevelVcsManager" settingsEditedManually="false">
- <OptionsSetting value="true" id="Add" />
- <OptionsSetting value="true" id="Remove" />
- <OptionsSetting value="true" id="Checkout" />
- <OptionsSetting value="true" id="Update" />
- <OptionsSetting value="true" id="Status" />
- <OptionsSetting value="true" id="Edit" />
- <ConfirmationsSetting value="0" id="Add" />
- <ConfirmationsSetting value="0" id="Remove" />
- </component>
- <component name="ProjectRootManager" version="2" project-jdk-name="Python 2.7.10 (C:\Python27\python.exe)" project-jdk-type="Python SDK" />
+ <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.5.2 (C:\Users\Ilsar\Anaconda3\python.exe)" project-jdk-type="Python SDK" />
</project> \ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 9a7bd2d..405d108 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -2,7 +2,7 @@
<project version="4">
<component name="ProjectModuleManager">
<modules>
- <module fileurl="file://$PROJECT_DIR$/.idea/lib2wiki.iml" filepath="$PROJECT_DIR$/.idea/lib2wiki.iml" />
+ <module fileurl="file://$PROJECT_DIR$/.idea/parser.iml" filepath="$PROJECT_DIR$/.idea/parser.iml" />
</modules>
</component>
</project> \ No newline at end of file
diff --git a/.idea/parser.iml b/.idea/parser.iml
new file mode 100644
index 0000000..6f63a63
--- /dev/null
+++ b/.idea/parser.iml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+ <component name="NewModuleRootManager">
+ <content url="file://$MODULE_DIR$" />
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ </component>
+ <component name="TestRunnerService">
+ <option name="projectConfiguration" value="Nosetests" />
+ <option name="PROJECT_TEST_RUNNER" value="Nosetests" />
+ </component>
+</module> \ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index f2b732c..69eda32 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -1,9 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
- <list default="true" id="b3a73108-18f8-44f3-8073-d1952fb9639d" name="Default" comment="">
+ <list default="true" id="1d9b5e9b-4282-4345-b663-d1b92a287a32" name="Default" comment="tester and person entity">
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/parser.iml" />
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/testers/factorytester.py" />
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/misc.xml" afterPath="$PROJECT_DIR$/.idea/misc.xml" />
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/modules.xml" afterPath="$PROJECT_DIR$/.idea/modules.xml" />
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/entities/person.py" afterPath="$PROJECT_DIR$/entities/person.py" />
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/factories/INL_factory.py" afterPath="$PROJECT_DIR$/factories/INL_factory.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/parsers/INL_xml_parser.py" afterPath="$PROJECT_DIR$/parsers/INL_xml_parser.py" />
- <change type="MODIFICATION" beforePath="$PROJECT_DIR$/readers/xml_reader.py" afterPath="$PROJECT_DIR$/readers/xml_reader.py" />
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/parsers/__init__.py" afterPath="$PROJECT_DIR$/parsers/__init__.py" />
</list>
<ignored path="lib2wiki.iws" />
<ignored path=".idea/workspace.xml" />
@@ -16,7 +23,7 @@
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="CoverageDataManager">
- <SUITE FILE_PATH="coverage/lib2wiki$xml_reader.coverage" NAME="xml_reader Coverage Results" MODIFIED="1474527548475" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/readers" />
+ <SUITE FILE_PATH="coverage/parser$factorytester.coverage" NAME="factorytester Coverage Results" MODIFIED="1474534270581" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testers" />
</component>
<component name="CreatePatchCommitExecutor">
<option name="PATCH_PATH" value="" />
@@ -27,21 +34,97 @@
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
- <file leaf-file-name="xml_reader.py" pinned="false" current-in-tab="false">
- <entry file="file://$PROJECT_DIR$/readers/xml_reader.py">
+ <file leaf-file-name="basic_factory.py" pinned="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/factories/basic_factory.py">
<provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="435">
- <caret line="26" column="43" selection-start-line="26" selection-start-column="0" selection-end-line="27" selection-end-column="0" />
+ <state relative-caret-position="17">
+ <caret line="1" column="37" selection-start-line="1" selection-start-column="37" selection-end-line="1" selection-end-column="37" />
<folding />
</state>
</provider>
</entry>
</file>
- <file leaf-file-name="INL_xml_parser.py" pinned="false" current-in-tab="true">
+ <file leaf-file-name="INL_xml_parser.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/parsers/INL_xml_parser.py">
<provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="333">
- <caret line="30" column="0" selection-start-line="30" selection-start-column="0" selection-end-line="30" selection-end-column="0" />
+ <state relative-caret-position="153">
+ <caret line="23" column="46" selection-start-line="23" selection-start-column="46" selection-end-line="23" selection-end-column="46" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="__init__.py" pinned="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/parsers/__init__.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="0">
+ <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="INL_factory.py" pinned="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/factories/INL_factory.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="629">
+ <caret line="37" column="31" selection-start-line="37" selection-start-column="31" selection-end-line="37" selection-end-column="31" />
+ <folding>
+ <element signature="e#0#15#0" expanded="true" />
+ <element signature="e#1812#2015#0" expanded="false" />
+ <element signature="e#2263#2459#0" expanded="false" />
+ </folding>
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="person.py" pinned="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/entities/person.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="680">
+ <caret line="40" column="20" selection-start-line="40" selection-start-column="8" selection-end-line="40" selection-end-column="20" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="factorytester.py" pinned="false" current-in-tab="true">
+ <entry file="file://$PROJECT_DIR$/testers/factorytester.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="255">
+ <caret line="15" column="40" selection-start-line="15" selection-start-column="40" selection-end-line="15" selection-end-column="40" />
+ <folding>
+ <element signature="e#0#38#0" expanded="true" />
+ </folding>
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="location.py" pinned="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/entities/location.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="68">
+ <caret line="4" column="51" selection-start-line="4" selection-start-column="51" selection-end-line="4" selection-end-column="51" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="__init__.py" pinned="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/entities/__init__.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="34">
+ <caret line="2" column="14" selection-start-line="2" selection-start-column="14" selection-end-line="2" selection-end-column="14" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="json_tools.py" pinned="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/libs/json_tools.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="51">
+ <caret line="3" column="22" selection-start-line="3" selection-start-column="6" selection-end-line="3" selection-end-column="22" />
<folding />
</state>
</provider>
@@ -49,14 +132,35 @@
</file>
</leaf>
</component>
+ <component name="FileTemplateManagerImpl">
+ <option name="RECENT_TEMPLATES">
+ <list>
+ <option value="Python Script" />
+ </list>
+ </option>
+ </component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
+ <option value="$PROJECT_DIR$/parsers/basic_parser.py" />
+ <option value="$PROJECT_DIR$/libs/json_tools.py" />
+ <option value="$PROJECT_DIR$/factories/basic_factory.py" />
+ <option value="$PROJECT_DIR$/entities/basic_entity.py" />
+ <option value="$PROJECT_DIR$/entities/institution.py" />
+ <option value="$PROJECT_DIR$/.gitignore" />
+ <option value="$PROJECT_DIR$/entities/__init__.py" />
+ <option value="$PROJECT_DIR$/factories/__init__.py" />
+ <option value="$PROJECT_DIR$/libs/__init__.py" />
+ <option value="$PROJECT_DIR$/entities/location.py" />
+ <option value="$PROJECT_DIR$/entities/testers/factorytester.py" />
+ <option value="$PROJECT_DIR$/parsers/__init__.py" />
+ <option value="$PROJECT_DIR$/factories/INL_factory.py" />
+ <option value="$PROJECT_DIR$/entities/person.py" />
+ <option value="$PROJECT_DIR$/testers/factorytester.py" />
<option value="$PROJECT_DIR$/parsers/INL_xml_parser.py" />
- <option value="$PROJECT_DIR$/readers/xml_reader.py" />
</list>
</option>
</component>
@@ -69,8 +173,8 @@
<component name="ProjectFrameBounds">
<option name="x" value="-8" />
<option name="y" value="-8" />
- <option name="width" value="1616" />
- <option name="height" value="876" />
+ <option name="width" value="1382" />
+ <option name="height" value="744" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
<OptionsSetting value="true" id="Add" />
@@ -101,87 +205,17 @@
<subPane>
<PATH>
<PATH_ELEMENT>
- <option name="myItemId" value="lib2wiki" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
- </PATH_ELEMENT>
- </PATH>
- <PATH>
- <PATH_ELEMENT>
- <option name="myItemId" value="lib2wiki" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="lib2wiki" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
- </PATH>
- <PATH>
- <PATH_ELEMENT>
- <option name="myItemId" value="lib2wiki" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="lib2wiki" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="readers" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
- </PATH>
- <PATH>
- <PATH_ELEMENT>
- <option name="myItemId" value="lib2wiki" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="lib2wiki" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="parsers" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
- </PATH>
- <PATH>
- <PATH_ELEMENT>
- <option name="myItemId" value="lib2wiki" />
+ <option name="myItemId" value="parser" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="lib2wiki" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="libs" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
- <option name="myItemId" value="lib2wiki" />
+ <option name="myItemId" value="parser" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId" value="lib2wiki" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="factories" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
- </PATH>
- <PATH>
- <PATH_ELEMENT>
- <option name="myItemId" value="lib2wiki" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="lib2wiki" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="entities" />
+ <option name="myItemId" value="parser" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
@@ -192,11 +226,28 @@
</panes>
</component>
<component name="PropertiesComponent">
- <property name="last_opened_file_path" value="$PROJECT_DIR$/readers/xml_reader.py" />
+ <property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="WebServerToolWindowFactoryState" value="false" />
- <property name="prop_add_unversioned_files" value="true" />
</component>
- <component name="RunManager" selected="Python.xml_reader">
+ <component name="RunManager" selected="Python.factorytester">
+ <configuration default="false" name="factorytester" type="PythonConfigurationType" factoryName="Python" temporary="true">
+ <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$/testers" />
+ <option name="IS_MODULE_SDK" value="true" />
+ <option name="ADD_CONTENT_ROOTS" value="true" />
+ <option name="ADD_SOURCE_ROOTS" value="true" />
+ <module name="parser" />
+ <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+ <option name="SCRIPT_NAME" value="$PROJECT_DIR$/testers/factorytester.py" />
+ <option name="PARAMETERS" value="" />
+ <option name="SHOW_COMMAND_LINE" value="false" />
+ <method />
+ </configuration>
<configuration default="true" type="DjangoTestsConfigurationType" factoryName="Django tests">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
@@ -254,7 +305,7 @@
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
- <option name="SDK_HOME" value="C:\Python27\python.exe" />
+ <option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
@@ -405,54 +456,56 @@
<option name="USE_KEYWORD" value="false" />
<method />
</configuration>
- <configuration default="false" name="xml_reader" type="PythonConfigurationType" factoryName="Python">
- <option name="INTERPRETER_OPTIONS" value="" />
- <option name="PARENT_ENVS" value="true" />
- <envs>
- <env name="PYTHONUNBUFFERED" value="1" />
- </envs>
- <option name="SDK_HOME" value="C:\Python27\python.exe" />
- <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/readers" />
- <option name="IS_MODULE_SDK" value="false" />
- <option name="ADD_CONTENT_ROOTS" value="true" />
- <option name="ADD_SOURCE_ROOTS" value="true" />
- <module name="lib2wiki" />
- <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
- <option name="SCRIPT_NAME" value="$PROJECT_DIR$/readers/xml_reader.py" />
- <option name="PARAMETERS" value="" />
- <option name="SHOW_COMMAND_LINE" value="false" />
- <method />
- </configuration>
<list size="1">
- <item index="0" class="java.lang.String" itemvalue="Python.xml_reader" />
+ <item index="0" class="java.lang.String" itemvalue="Python.factorytester" />
</list>
+ <recent_temporary>
+ <list size="1">
+ <item index="0" class="java.lang.String" itemvalue="Python.factorytester" />
+ </list>
+ </recent_temporary>
</component>
<component name="ShelveChangesManager" show_recycled="false">
<option name="remove_strategy" value="false" />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
- <changelist id="b3a73108-18f8-44f3-8073-d1952fb9639d" name="Default" comment="" />
- <created>1474498136177</created>
+ <changelist id="1d9b5e9b-4282-4345-b663-d1b92a287a32" name="Default" comment="" />
+ <created>1474481137431</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
- <updated>1474498136177</updated>
+ <updated>1474481137431</updated>
+ </task>
+ <task id="LOCAL-00001" summary="implemented the factory">
+ <created>1474490333649</created>
+ <option name="number" value="00001" />
+ <option name="presentableId" value="LOCAL-00001" />
+ <option name="project" value="LOCAL" />
+ <updated>1474490333649</updated>
+ </task>
+ <task id="LOCAL-00002" summary="update the parser">
+ <created>1474498941858</created>
+ <option name="number" value="00002" />
+ <option name="presentableId" value="LOCAL-00002" />
+ <option name="project" value="LOCAL" />
+ <updated>1474498941858</updated>
</task>
+ <option name="localTasksCounter" value="3" />
<servers />
</component>
<component name="ToolWindowManager">
- <frame x="-8" y="-8" width="1616" height="876" extended-state="6" />
+ <frame x="-8" y="-8" width="1382" height="744" extended-state="6" />
<editor active="true" />
<layout>
- <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
+ <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25549048" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
- <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32898173" sideWeight="0.5025" order="7" side_tool="true" content_ui="tabs" />
+ <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
- <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
- <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
- <window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32898173" sideWeight="0.4975" order="2" side_tool="false" content_ui="tabs" />
+ <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3298969" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
+ <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
+ <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32913387" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
- <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+ <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
@@ -475,12 +528,34 @@
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
</component>
+ <component name="VcsManagerConfiguration">
+ <MESSAGE value="implemented the factory" />
+ <option name="LAST_COMMIT_MESSAGE" value="implemented the factory" />
+ </component>
<component name="XDebuggerManager">
- <breakpoint-manager />
+ <breakpoint-manager>
+ <option name="time" value="4" />
+ </breakpoint-manager>
<watches-manager />
</component>
<component name="editorHistoryManager">
- <entry file="file://$PROJECT_DIR$/.gitignore">
+ <entry file="file://$PROJECT_DIR$/factories/basic_factory.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="17">
+ <caret line="1" column="37" selection-start-line="1" selection-start-column="37" selection-end-line="1" selection-end-column="37" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/parsers/INL_xml_parser.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="374">
+ <caret line="22" column="38" selection-start-line="22" selection-start-column="38" selection-end-line="22" selection-end-column="38" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/parsers/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
@@ -488,29 +563,219 @@
</state>
</provider>
</entry>
+ <entry file="file://$PROJECT_DIR$/factories/INL_factory.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="629">
+ <caret line="37" column="31" selection-start-line="37" selection-start-column="31" selection-end-line="37" selection-end-column="31" />
+ <folding>
+ <element signature="e#0#15#0" expanded="true" />
+ <element signature="e#1812#2015#0" expanded="false" />
+ <element signature="e#2263#2459#0" expanded="false" />
+ </folding>
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/entities/person.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="680">
+ <caret line="40" column="20" selection-start-line="40" selection-start-column="8" selection-end-line="40" selection-end-column="20" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/testers/factorytester.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="0">
+ <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+ <folding>
+ <element signature="e#0#38#0" expanded="true" />
+ </folding>
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/entities/location.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="68">
+ <caret line="4" column="51" selection-start-line="4" selection-start-column="51" selection-end-line="4" selection-end-column="51" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/entities/__init__.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="34">
+ <caret line="2" column="14" selection-start-line="2" selection-start-column="14" selection-end-line="2" selection-end-column="14" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/libs/json_tools.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="51">
+ <caret line="3" column="22" selection-start-line="3" selection-start-column="6" selection-end-line="3" selection-end-column="22" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/factories/basic_factory.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="17">
+ <caret line="1" column="37" selection-start-line="1" selection-start-column="37" selection-end-line="1" selection-end-column="37" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/factories/INL_factory.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="0">
+ <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+ <folding>
+ <element signature="e#0#15#0" expanded="true" />
+ <element signature="e#1812#2015#0" expanded="false" />
+ <element signature="e#2263#2459#0" expanded="false" />
+ </folding>
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/libs/json_tools.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="51">
+ <caret line="3" column="22" selection-start-line="3" selection-start-column="6" selection-end-line="3" selection-end-column="22" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/entities/basic_entity.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="85">
+ <caret line="5" column="0" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/entities/institution.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="85">
+ <caret line="5" column="34" selection-start-line="5" selection-start-column="34" selection-end-line="5" selection-end-column="34" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/parsers/basic_parser.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="85">
+ <caret line="5" column="22" selection-start-line="5" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
<entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="255">
+ <caret line="15" column="5" selection-start-line="15" selection-start-column="5" selection-end-line="15" selection-end-column="5" />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/factories/__init__.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="17">
+ <caret line="1" column="15" selection-start-line="1" selection-start-column="15" selection-end-line="1" selection-end-column="15" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/libs/__init__.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="0">
+ <caret line="0" column="10" selection-start-line="0" selection-start-column="10" selection-end-line="0" selection-end-column="10" />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/entities/__init__.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="34">
+ <caret line="2" column="14" selection-start-line="2" selection-start-column="14" selection-end-line="2" selection-end-column="14" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/libs/json_tools.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="51">
+ <caret line="3" column="22" selection-start-line="3" selection-start-column="6" selection-end-line="3" selection-end-column="22" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/entities/location.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="68">
+ <caret line="4" column="51" selection-start-line="4" selection-start-column="51" selection-end-line="4" selection-end-column="51" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/entities/person.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="680">
+ <caret line="40" column="20" selection-start-line="40" selection-start-column="8" selection-end-line="40" selection-end-column="20" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/parsers/__init__.py">
+ <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/readers/xml_reader.py">
+ <entry file="file://$PROJECT_DIR$/factories/basic_factory.py">
<provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="435">
- <caret line="26" column="43" selection-start-line="26" selection-start-column="0" selection-end-line="27" selection-end-column="0" />
+ <state relative-caret-position="17">
+ <caret line="1" column="37" selection-start-line="1" selection-start-column="37" selection-end-line="1" selection-end-column="37" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/factories/INL_factory.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="629">
+ <caret line="37" column="31" selection-start-line="37" selection-start-column="31" selection-end-line="37" selection-end-column="31" />
+ <folding>
+ <element signature="e#0#15#0" expanded="true" />
+ <element signature="e#1812#2015#0" expanded="false" />
+ <element signature="e#2263#2459#0" expanded="false" />
+ </folding>
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/factories/basic_factory.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="17">
+ <caret line="1" column="37" selection-start-line="1" selection-start-column="37" selection-end-line="1" selection-end-column="37" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/parsers/INL_xml_parser.py">
<provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="333">
- <caret line="30" column="0" selection-start-line="30" selection-start-column="0" selection-end-line="30" selection-end-column="0" />
+ <state relative-caret-position="153">
+ <caret line="23" column="46" selection-start-line="23" selection-start-column="46" selection-end-line="23" selection-end-column="46" />
<folding />
</state>
</provider>
</entry>
+ <entry file="file://$PROJECT_DIR$/testers/factorytester.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state relative-caret-position="255">
+ <caret line="15" column="40" selection-start-line="15" selection-start-column="40" selection-end-line="15" selection-end-column="40" />
+ <folding>
+ <element signature="e#0#38#0" expanded="true" />
+ </folding>
+ </state>
+ </provider>
+ </entry>
</component>
</project> \ No newline at end of file
diff --git a/entities/person.py b/entities/person.py
index b9e9d78..d541bb4 100644
--- a/entities/person.py
+++ b/entities/person.py
@@ -2,7 +2,7 @@ from entities.basic_entity import BasicEntity
class Person(BasicEntity):
- def __init__(self, name, date_of_birth, name_in_langs):
+ def __init__(self, name, date_of_birth, name_in_langs, bio_data):
"""
:param name:
@@ -14,5 +14,35 @@ class Person(BasicEntity):
}
"""
self.name = name
- self.date_of_birth = date_of_birth
+ years_parts = date_of_birth.split('-')
+ if (len(years_parts) == 2):
+ self.birth_year = years_parts[0]
+ self.death_year = years_parts[1]
+ else:
+ self.birth_year = date_of_birth.strip()
+ self.death_year = ''
self.name_in_langs = name_in_langs
+ place_of_birth = list()
+ place_of_death = list()
+ profession = list()
+ for comment in bio_data:
+ encoded_comment = ''.join(comment).strip()
+ if encoded_comment.startswith(u"מקום לידה: "):
+ place_of_birth.append(encoded_comment.partition(u"מקום לידה: ")[2])
+ if encoded_comment.startswith(u"מקום פטירה: "):
+ place_of_death.append(encoded_comment.partition(u"מקום פטירה: ")[2])
+ if encoded_comment.startswith(u"מקצוע: "):
+ profession.append(encoded_comment.partition(u"מקום פטירה: ")[2])
+
+ self.place_of_birth = place_of_birth
+ self.place_of_death = place_of_death
+ self.profession = profession
+
+ def print_entity(self):
+ print("Name = " + self.name)
+ print("Birth year = " + self.birth_year)
+ print("Death year = " + self.death_year)
+ print("Names in langs" + str(self.name_in_langs))
+ print("Places of birth = " + str(self.place_of_birth))
+ print("Places of death = " + str(self.place_of_death))
+ print("profession = " + str(self.profession))
diff --git a/factories/INL_factory.py b/factories/INL_factory.py
index b61c487..adc5b1a 100644
--- a/factories/INL_factory.py
+++ b/factories/INL_factory.py
@@ -1,5 +1,6 @@
import entities
from factories import BasicFactory
+import xml.etree.cElementTree as ET
TAG_TO_ENTITY_MAPPING = {
'100': entities.Person,
@@ -10,15 +11,20 @@ TAG_TO_ENTITY_MAPPING = {
ENTITY_KEYS = {
'100.a': 'name',
+ '100.9': 'name_langindic',
'100.d': 'date_of_birth',
'400.a': 'name_in_langs',
+ '400.9': 'langs_langindic',
+ '678.a': 'bio_data',
'151.a': 'name',
+ '151.9': 'name_langindic',
'451:a': 'name_in_langs',
+ '451:9': 'langs_langindic',
'550.a': 'type'
}
-def get_record_key(self, record):
+def get_record_key(record):
root = record.getroot()
for field in root:
field_tag = field.attrib.get('tag')
@@ -33,40 +39,73 @@ class INLFactory(BasicFactory):
def __init__(self, tag_to_entity_mapping=None):
self.mapping = tag_to_entity_mapping or TAG_TO_ENTITY_MAPPING
- def get_entity(self, entity_keys, raw_object):
+ def get_entity(self, raw_object, entity_keys=ENTITY_KEYS):
record_key = get_record_key(raw_object)
if record_key == '100':
- has_name = False
- name_in_langs = []
+ name = ''
+ name_in_langs = dict()
+ bio_data = list()
+ eng_name = ''
+ date_of_birth = ''
+ #get the names and date of birth and bio data
for field in raw_object.getroot():
key = field.attrib.get('tag')
tag = entity_keys.get(key)
- if tag == 'name' and not has_name:
+ if tag == 'name':
name = field.text
- has_name = True
+ elif tag == 'name_langindic':
+ # chack if this english name
+ if field.text == 'lat':
+ eng_name = name
+ # else add it to name_in_langs
+ else:
+ if field.text in name_in_langs:
+ name_in_langs.get(field.text).append(name)
+ else:
+ name_in_langs.update({field.text: [name]})
elif tag == 'date_of_birth':
date_of_birth = field.text
elif tag == 'name_in_langs':
- name_in_langs.append(field.text)
- return entities.Person(name, date_of_birth, name_in_langs)
+ name_diff = field.text
+ elif tag == 'langs_langindic':
+ if field.text in name_in_langs:
+ name_in_langs.get(field.text).append(name_diff)
+ else:
+ name_in_langs.update({field.text: [name]})
+ elif tag == 'bio_data':
+ bio_data.append(field.text)
+ return entities.Person(eng_name, date_of_birth, name_in_langs, bio_data)
elif record_key == '110':
return entities.Institution()
elif record_key == '151':
- has_name = False
- name_in_langs = []
- type = []
+ name_in_langs = dict()
+ types = []
for field in raw_object.getroot():
key = field.attrib.get('tag')
tag = entity_keys.get(key)
- if tag == 'name' and not has_name:
+ if tag == 'name':
name = field.text
- has_name = True
+ elif tag == 'name_langindic':
+ # chack if this english name
+ if field.text == 'lat':
+ eng_name = name
+ # else add it to name_in_langs
+ else:
+ if field.text in name_in_langs:
+ name_in_langs.get(field.text).append(name)
+ else:
+ name_in_langs.update({field.text: [name]})
elif tag == 'type':
- type.append(field.text)
+ types.append(field.text)
elif tag == 'name_in_langs':
- name_in_langs.append(field.text)
- return entities.Location(name, type, name_in_langs)
+ name_diff = field.text
+ elif tag == 'langs_langindic':
+ if field.text in name_in_langs:
+ name_in_langs.get(field.text).append(name_diff)
+ else:
+ name_in_langs.update({field.text: [name]})
+ return entities.Location(eng_name, types, name_in_langs)
else:
- raise KeyError('Key {} was not recognized for factory {}'.format(entity_key, type(self)))
+ raise KeyError('Key {} was not recognized for factory {}'.format(entity_keys, type(self)))
diff --git a/parsers/INL_xml_parser.py b/parsers/INL_xml_parser.py
index 4cd04ef..968bf55 100644
--- a/parsers/INL_xml_parser.py
+++ b/parsers/INL_xml_parser.py
@@ -20,14 +20,16 @@ class INLXmlParser:
for field in self.reader:
fieldtag = field.attrib.get('tag')
if fieldtag in self.whitelist:
- newFieldTag = fieldtag
+ temptag = fieldtag
# tag 700 and 400 are the same
- if newFieldTag == '700':
- newFieldTag = '400'
- newTag = ET.SubElement(newRecord, 'datafield', {'tag': newFieldTag})
+ if temptag == '700':
+ temptag = '400'
for data in field:
- subData = ET.SubElement(newTag, data.tag, data.attrib)
- subData.text = data.text
+ newFieldTag = temptag
+ newFieldTag += '.'
+ newFieldTag += data.attrib.get('code')
+ newTag = ET.SubElement(newRecord, 'datafield', {'tag': newFieldTag})
+ newTag.text = data.text
newRecordTree = ET.ElementTree(newRecord)
return newRecordTree
diff --git a/parsers/__init__.py b/parsers/__init__.py
index e3a246d..d32c917 100644
--- a/parsers/__init__.py
+++ b/parsers/__init__.py
@@ -1 +1,2 @@
-from INL_xml_parser import INLXmlParser \ No newline at end of file
+
+from .INL_xml_parser import INLXmlParser \ No newline at end of file
diff --git a/testers/factorytester.py b/testers/factorytester.py
new file mode 100644
index 0000000..cc95bab
--- /dev/null
+++ b/testers/factorytester.py
@@ -0,0 +1,21 @@
+from __future__ import absolute_import
+import parsers
+import factories
+import xml.etree.cElementTree as ET
+
+xmlpath = 'C:/Users/Ilsar/Documents/datahack/xml_example.xml'
+whitelist = ['100', '374', '400', '151', '451', '550', '551', '678']
+
+
+xmltree = ET.parse(xmlpath)
+entities = list()
+inl_factory = factories.INLFactory()
+
+for record in xmltree.getroot():
+ inl_parser = parsers.INLXmlParser(record, whitelist)
+ clean_record = inl_parser.clearxml()
+ entities.append(inl_factory.get_entity(clean_record))
+
+for entity in entities:
+ entity.print_entity()
+