fixed food import

This commit is contained in:
Götz 2017-10-06 01:27:31 +02:00
parent 3404b88c8e
commit 203bcaedd3
13 changed files with 163 additions and 356 deletions

View File

@ -46,55 +46,11 @@
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" /> <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
<component name="FileEditorManager"> <component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="univis_eventpage_parser.py" pinned="false" current-in-tab="false"> <file leaf-file-name="views.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/apps/events/utils/parser/univis_eventpage_parser.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1060">
<caret line="53" column="14" lean-forward="true" selection-start-line="53" selection-start-column="14" selection-end-line="53" selection-end-column="14" />
<folding>
<element signature="e#0#15#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="migrate_data.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/apps/events/utils/migrate_data.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="157">
<caret line="45" column="4" lean-forward="false" selection-start-line="45" selection-start-column="4" selection-end-line="45" selection-end-column="4" />
<folding>
<element signature="e#0#11#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="views.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/apps/events/views.py"> <entry file="file://$PROJECT_DIR$/apps/events/views.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="300"> <state relative-caret-position="560">
<caret line="19" column="27" lean-forward="false" selection-start-line="19" selection-start-column="27" selection-end-line="19" selection-end-column="27" /> <caret line="32" column="0" lean-forward="true" selection-start-line="32" selection-start-column="0" selection-end-line="32" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="fekide_eventpage_parser.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/apps/events/utils/parser/fekide_eventpage_parser.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="697">
<caret line="67" column="0" lean-forward="false" selection-start-line="67" selection-start-column="0" selection-end-line="67" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="all_events.jinja" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/templates/events/all_events.jinja">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="400">
<caret line="20" column="56" lean-forward="false" selection-start-line="20" selection-start-column="56" selection-end-line="20" selection-end-column="56" />
<folding /> <folding />
</state> </state>
</provider> </provider>
@ -110,42 +66,58 @@
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="migrate_data.py" pinned="false" current-in-tab="false"> <file leaf-file-name="migrate_data.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/apps/food/utils/migrate_data.py"> <entry file="file://$PROJECT_DIR$/apps/food/utils/migrate_data.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="460"> <state relative-caret-position="20">
<caret line="27" column="32" lean-forward="true" selection-start-line="27" selection-start-column="32" selection-end-line="27" selection-end-column="32" /> <caret line="23" column="6" lean-forward="false" selection-start-line="23" selection-start-column="6" selection-end-line="23" selection-end-column="6" />
<folding /> <folding>
<element signature="e#0#11#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="controller_json_events.py" pinned="false" current-in-tab="false"> <file leaf-file-name="import_food.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/apps/events/utils/json_generator/controller_json_events.py"> <entry file="file://$PROJECT_DIR$/apps/food/management/commands/import_food.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="660"> <state relative-caret-position="40">
<caret line="33" column="40" lean-forward="false" selection-start-line="33" selection-start-column="40" selection-end-line="33" selection-end-column="40" /> <caret line="2" column="40" lean-forward="true" selection-start-line="2" selection-start-column="40" selection-end-line="2" selection-end-column="40" />
<folding>
<element signature="e#0#65#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="mensa_page_parser.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/apps/food/utils/parser/mensa_page_parser.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="303">
<caret line="45" column="28" lean-forward="false" selection-start-line="45" selection-start-column="28" selection-end-line="45" selection-end-column="28" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="migrate_data.py" pinned="false" current-in-tab="false"> <file leaf-file-name="fekide_happyhour_page_parser.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/apps/donar/utils/migrate_data.py"> <entry file="file://$PROJECT_DIR$/apps/food/utils/parser/fekide_happyhour_page_parser.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="880"> <state relative-caret-position="880">
<caret line="49" column="97" lean-forward="false" selection-start-line="49" selection-start-column="97" selection-end-line="49" selection-end-column="97" /> <caret line="47" column="22" lean-forward="false" selection-start-line="47" selection-start-column="22" selection-end-line="47" selection-end-column="22" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="univis_json_prettifier.py" pinned="false" current-in-tab="false"> <file leaf-file-name="cafete_page_parser.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/apps/events/utils/parser/univis_json_prettifier.py"> <entry file="file://$PROJECT_DIR$/apps/food/utils/parser/cafete_page_parser.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="464"> <state relative-caret-position="0">
<caret line="26" column="0" lean-forward="false" selection-start-line="26" selection-start-column="0" selection-end-line="43" selection-end-column="33" /> <caret line="33" column="19" lean-forward="true" selection-start-line="33" selection-start-column="19" selection-end-line="33" selection-end-column="19" />
<folding /> <folding>
<element signature="e#0#15#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
@ -169,9 +141,6 @@
<component name="IdeDocumentHistory"> <component name="IdeDocumentHistory">
<option name="CHANGED_PATHS"> <option name="CHANGED_PATHS">
<list> <list>
<option value="$PROJECT_DIR$/templates/food/daily-food.jinja" />
<option value="$PROJECT_DIR$/food/urls.py" />
<option value="$PROJECT_DIR$/data_collectors/events/parser/fekide-eventpage-parser.py" />
<option value="$PROJECT_DIR$/food/models.py" /> <option value="$PROJECT_DIR$/food/models.py" />
<option value="$PROJECT_DIR$/events/models.py" /> <option value="$PROJECT_DIR$/events/models.py" />
<option value="$PROJECT_DIR$/events/urls.py" /> <option value="$PROJECT_DIR$/events/urls.py" />
@ -188,9 +157,6 @@
<option value="$PROJECT_DIR$/data_collectors/events/migrate_data.py" /> <option value="$PROJECT_DIR$/data_collectors/events/migrate_data.py" />
<option value="$PROJECT_DIR$/apps/events/management/commands/import.py" /> <option value="$PROJECT_DIR$/apps/events/management/commands/import.py" />
<option value="$PROJECT_DIR$/apps/events/utils/json_generator/controller_json_events.py" /> <option value="$PROJECT_DIR$/apps/events/utils/json_generator/controller_json_events.py" />
<option value="$PROJECT_DIR$/apps/food/utils/json_generator/controller_json_food.py" />
<option value="$PROJECT_DIR$/apps/food/utils/parser/mensa_page_parser.py" />
<option value="$PROJECT_DIR$/apps/food/utils/migrate_data.py" />
<option value="$PROJECT_DIR$/apps/events/admin.py" /> <option value="$PROJECT_DIR$/apps/events/admin.py" />
<option value="$PROJECT_DIR$/apps/food/admin.py" /> <option value="$PROJECT_DIR$/apps/food/admin.py" />
<option value="$PROJECT_DIR$/apps/events/urls.py" /> <option value="$PROJECT_DIR$/apps/events/urls.py" />
@ -220,6 +186,12 @@
<option value="$PROJECT_DIR$/templates/events/all_events.jinja" /> <option value="$PROJECT_DIR$/templates/events/all_events.jinja" />
<option value="$PROJECT_DIR$/apps/events/utils/migrate_data.py" /> <option value="$PROJECT_DIR$/apps/events/utils/migrate_data.py" />
<option value="$PROJECT_DIR$/apps/events/views.py" /> <option value="$PROJECT_DIR$/apps/events/views.py" />
<option value="$PROJECT_DIR$/apps/food/utils/parser/fekide_happyhour_page_parser.py" />
<option value="$PROJECT_DIR$/apps/food/utils/json_generator/controller_json_food.py" />
<option value="$PROJECT_DIR$/apps/food/management/commands/import_food.py" />
<option value="$PROJECT_DIR$/apps/food/utils/parser/cafete_page_parser.py" />
<option value="$PROJECT_DIR$/apps/food/utils/parser/mensa_page_parser.py" />
<option value="$PROJECT_DIR$/apps/food/utils/migrate_data.py" />
</list> </list>
</option> </option>
</component> </component>
@ -335,7 +307,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="events" /> <option name="myItemId" value="food" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
@ -353,7 +325,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="events" /> <option name="myItemId" value="food" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
@ -375,7 +347,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="events" /> <option name="myItemId" value="food" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
@ -401,33 +373,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="events" /> <option name="myItemId" value="food" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="utils" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="json_generator" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="ofu_app" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="ofu_app" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="apps" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="events" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
@ -449,7 +395,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="events" /> <option name="myItemId" value="food" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
@ -461,94 +407,6 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="ofu_app" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="ofu_app" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="apps" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="donar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="ofu_app" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="ofu_app" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="apps" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="donar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="utils" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="ofu_app" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="ofu_app" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="apps" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="donar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="utils" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="parser" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="ofu_app" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="ofu_app" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="apps" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="donar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="management" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane> </subPane>
</pane> </pane>
<pane id="Scratches" /> <pane id="Scratches" />
@ -922,24 +780,24 @@
<frame x="0" y="27" width="1920" height="1053" extended-state="6" /> <frame x="0" y="27" width="1920" height="1053" extended-state="6" />
<editor active="true" /> <editor active="true" />
<layout> <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.18963675" 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.32896176" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32896176" 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.33" sideWeight="0.5" 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="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3180328" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3180328" sideWeight="0.5" 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="false" weight="0.33" sideWeight="0.5" order="7" 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="false" weight="0.33" 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.32896176" 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.32896176" sideWeight="0.5" order="8" 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.32896176" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.18963675" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<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="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32896176" sideWeight="0.5" order="1" 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="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.32896176" sideWeight="0.5" order="7" side_tool="false" 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="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="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="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="Data View" 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="Data View" 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="4" 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" /> <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" />
<window_info id="Message" 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="0" side_tool="false" content_ui="tabs" /> <window_info id="Message" 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="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" 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="5" side_tool="false" content_ui="tabs" /> <window_info id="Inspection" 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="5" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32896176" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" 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="Ant Build" active="false" anchor="right" 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" />
</layout> </layout>
</component> </component>
@ -995,21 +853,7 @@
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/food/static/bootstrap-4.0.0-beta-dist/js/bootstrap.js" /> <entry file="file://$PROJECT_DIR$/food/static/bootstrap-4.0.0-beta-dist/js/bootstrap.js" />
<entry file="file://$PROJECT_DIR$/apps/food/utils/parser/cafete_page_parser.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="180">
<caret line="33" column="28" lean-forward="false" selection-start-line="33" selection-start-column="25" selection-end-line="33" selection-end-column="28" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/data_collectors/collect_and_migrate.py" /> <entry file="file://$PROJECT_DIR$/data_collectors/collect_and_migrate.py" />
<entry file="file://$PROJECT_DIR$/apps/food/management/commands/import_food.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="260">
<caret line="13" column="25" lean-forward="false" selection-start-line="13" selection-start-column="25" selection-end-line="13" selection-end-column="25" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ofu_app/wsgi.py"> <entry file="file://$PROJECT_DIR$/ofu_app/wsgi.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="0">
@ -1017,13 +861,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/apps/food/utils/parser/mensa_page_parser.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="40">
<caret line="5" column="0" lean-forward="false" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/apps/events/admin.py"> <entry file="file://$PROJECT_DIR$/apps/events/admin.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60"> <state relative-caret-position="60">
@ -1031,13 +868,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/apps/food/utils/parser/fekide_happyhour_page_parser.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-564">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/templates/base.jinja"> <entry file="file://$PROJECT_DIR$/templates/base.jinja">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="400"> <state relative-caret-position="400">
@ -1252,16 +1082,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/apps/events/utils/parser/univis_eventpage_parser.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1060">
<caret line="53" column="14" lean-forward="true" selection-start-line="53" selection-start-column="14" selection-end-line="53" selection-end-column="14" />
<folding>
<element signature="e#0#15#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/apps/donar/utils/migrate_data.py"> <entry file="file://$PROJECT_DIR$/apps/donar/utils/migrate_data.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="880"> <state relative-caret-position="880">
@ -1270,30 +1090,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/apps/food/utils/json_generator/controller_json_food.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="200">
<caret line="10" column="21" lean-forward="true" selection-start-line="10" selection-start-column="21" selection-end-line="10" selection-end-column="50" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/apps/events/utils/json_generator/controller_json_events.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="660">
<caret line="33" column="40" lean-forward="false" selection-start-line="33" selection-start-column="40" selection-end-line="33" selection-end-column="40" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/apps/food/utils/migrate_data.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="460">
<caret line="27" column="32" lean-forward="true" selection-start-line="27" selection-start-column="32" selection-end-line="27" selection-end-column="32" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/with_calendar_and_internal.txt"> <entry file="file://$PROJECT_DIR$/with_calendar_and_internal.txt">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="0">
@ -1318,16 +1114,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/apps/events/utils/migrate_data.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="157">
<caret line="45" column="4" lean-forward="false" selection-start-line="45" selection-start-column="4" selection-end-line="45" selection-end-column="4" />
<folding>
<element signature="e#0#11#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/templates/events/all_events.jinja"> <entry file="file://$PROJECT_DIR$/templates/events/all_events.jinja">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="400"> <state relative-caret-position="400">
@ -1336,13 +1122,95 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/apps/events/utils/parser/univis_eventpage_parser.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1060">
<caret line="53" column="14" lean-forward="true" selection-start-line="53" selection-start-column="14" selection-end-line="53" selection-end-column="14" />
<folding>
<element signature="e#0#15#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/apps/events/utils/migrate_data.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="157">
<caret line="45" column="4" lean-forward="false" selection-start-line="45" selection-start-column="4" selection-end-line="45" selection-end-column="4" />
<folding>
<element signature="e#0#11#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/apps/events/views.py"> <entry file="file://$PROJECT_DIR$/apps/events/views.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="300"> <state relative-caret-position="560">
<caret line="19" column="27" lean-forward="false" selection-start-line="19" selection-start-column="27" selection-end-line="19" selection-end-column="27" /> <caret line="32" column="0" lean-forward="true" selection-start-line="32" selection-start-column="0" selection-end-line="32" selection-end-column="0" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/apps/events/utils/json_generator/controller_json_events.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="660">
<caret line="33" column="40" lean-forward="false" selection-start-line="33" selection-start-column="40" selection-end-line="33" selection-end-column="40" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/apps/food/utils/parser/fekide_happyhour_page_parser.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="880">
<caret line="47" column="22" lean-forward="false" selection-start-line="47" selection-start-column="22" selection-end-line="47" selection-end-column="22" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/apps/food/utils/json_generator/controller_json_food.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="100">
<caret line="5" column="1" lean-forward="false" selection-start-line="5" selection-start-column="1" selection-end-line="5" selection-end-column="1" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/apps/food/management/commands/import_food.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="40">
<caret line="2" column="40" lean-forward="true" selection-start-line="2" selection-start-column="40" selection-end-line="2" selection-end-column="40" />
<folding>
<element signature="e#0#65#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/apps/food/utils/parser/cafete_page_parser.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="33" column="19" lean-forward="true" selection-start-line="33" selection-start-column="19" selection-end-line="33" selection-end-column="19" />
<folding>
<element signature="e#0#15#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/apps/food/utils/parser/mensa_page_parser.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="303">
<caret line="45" column="28" lean-forward="false" selection-start-line="45" selection-start-column="28" selection-end-line="45" selection-end-column="28" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/apps/food/utils/migrate_data.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="20">
<caret line="23" column="6" lean-forward="false" selection-start-line="23" selection-start-column="6" selection-end-line="23" selection-end-column="6" />
<folding>
<element signature="e#0#11#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component> </component>
</project> </project>

View File

@ -1,8 +1,8 @@
from django.core.management.base import BaseCommand, CommandError from django.core.management.base import BaseCommand, CommandError
from apps.food.models import Menu, HappyHour, SingleFood from apps.food.models import Menu, HappyHour, SingleFood
from apps.food.utils.json_generator import controller_json_food
from apps.food.utils import migrate_data from apps.food.utils import migrate_data
class Command(BaseCommand): class Command(BaseCommand):
help = "Imports Food from special Websites" help = "Imports Food from special Websites"
@ -10,6 +10,4 @@ class Command(BaseCommand):
pass pass
def handle(self, *args, **options): def handle(self, *args, **options):
controller_json_food.main("apps/food/utils/json_generator/jsons/") migrate_data.main()
migrate_data.main("apps/food/utils/json_generator/jsons/")

View File

@ -1,60 +0,0 @@
from apps.food.utils.parser import mensa_page_parser, cafete_page_parser, fekide_happyhour_page_parser
# CONFIG
JSON_OUTPUT_DIR_FOOD = "./food/json_generator/jsons/"
# CONFIG SERVICE LINKS
LINK_FEKI_MENSA = "https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/speiseplaene.html?tx_thmensamenu_pi2%5Bmensen%5D=3&tx_thmensamenu_pi2%5Baction%5D=show&tx_thmensamenu_pi2%5Bcontroller%5D=Speiseplan&cHash=c3fe5ebb35e5fba3794f01878e798b7c"
LINK_AUSTR_MENSA = "https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/speiseplaene.html?tx_thmensamenu_pi2%5Bmensen%5D=2&tx_thmensamenu_pi2%5Baction%5D=show&tx_thmensamenu_pi2%5Bcontroller%5D=Speiseplan&cHash=511e047953ee1370c3b82c11a04624bb"
LINK_ERBA_CAFETE = "https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/sonderspeiseplaene/cafeteria-erba-insel.html"
LINK_MARKUS_CAFETE = "https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/sonderspeiseplaene/cafeteria-markusplatz.html"
LINK_FEKIDE_GUIDE = "https://www.feki.de/happyhour"
def writeToFile(jsonfile, root, filename):
with open((root + filename), "w") as file:
file.write(jsonfile)
def main(path=JSON_OUTPUT_DIR_FOOD):
try:
json_food_mensa_feki = mensa_page_parser.parsePage(LINK_FEKI_MENSA)
except IndexError:
print("Error")
json_food_mensa_feki = {}
try:
json_food_mensa_austr = mensa_page_parser.parsePage(LINK_AUSTR_MENSA)
except IndexError:
print("Error")
json_food_mensa_austr = {}
try:
json_food_cafete_erba = cafete_page_parser.parsePage(LINK_ERBA_CAFETE)
except IndexError:
print("Error")
json_food_cafete_erba = {}
try:
json_food_cafete_markus = cafete_page_parser.parsePage(LINK_MARKUS_CAFETE)
except IndexError:
print("Error")
json_food_cafete_markus = {}
try:
json_food_fekidehappyhours = fekide_happyhour_page_parser.parsePage(LINK_FEKIDE_GUIDE)
except IndexError:
print("Error")
json_food_fekidehappyhours = {}
# WRITE JSONS
writeToFile(json_food_mensa_feki, path, "mensa-feki.json")
writeToFile(json_food_mensa_austr, path, "mensa-austr.json")
writeToFile(json_food_cafete_erba, path, "cafete-erba.json")
writeToFile(json_food_cafete_markus, path, "cafete-markus.json")
writeToFile(json_food_fekidehappyhours, path, "happyhourguide-fekide.json")
if __name__ == "__main__":
main()

View File

@ -1 +0,0 @@
{"execution_time": "Thursday, 05.10.2017", "name": "Cafeteria Markusplatz", "weekmenu": [{"menu": ["Vegetarisches Chili sin Carne"], "date": "24.07."}, {"menu": ["Gem\u00fcseschnitzel mit Kr\u00e4utercreme und Kartoffeln"], "date": "25.07."}, {"menu": ["\u00dcberbackene Zucchini an Paprikaso\u00dfe mit P\u00fcree"], "date": "26.07."}, {"menu": ["Kaiserschmarrn mit Apfelmus"], "date": "27.07."}]}

View File

@ -1 +0,0 @@
{"happyhours": [{"time": "11:00 - 18:00", "description": "10% Rabatt auf Beefburger & belg. Fritten", "location": "Fritz Heaven"}, {"time": "12:00 - 22:00", "description": "Burger, Wraps und Baguettes f\u00fcr 5,20 \u20ac", "location": "Caf\u00e9 Esspress"}, {"time": "16:00 - 20:00", "description": "Aperitivo Italiano incl. Antipasti", "location": "Caff\u00e8bar Kranen"}, {"time": "16:00 - 23:59", "description": "Burger-Tag 6\u20ac", "location": "Bowlinghaus Bamberg"}, {"time": "17:00 - 21:00", "description": "Burger f\u00fcr Studenten 5,50\u20ac", "location": "Cafe Arte"}, {"time": "17:30 - 21:00", "description": "Alle vegetarischen Hauptgerichte kosten f\u00fcr Studierende nur 8,90 \u20ac", "location": "Restaurant Kornblume"}, {"time": "18:00 - 21:00", "description": "Burger mit Pommes oder Westernkartoffeln + 0,5 Mahr's Bier - 7,99\u20ac", "location": "Brasserie"}, {"time": "18:00 - 21:00", "description": "Spare-Ribs AYCE mit Pommes 9,90 \u20ac oder mit Weissbrot 7,70 \u20ac", "location": "Bamberger Weissbierhaus"}, {"time": "19:00 - 22:00", "description": "Brotzeitplatten 7,50 \u20ac", "location": "Ah\u00f6rnla im Sand"}, {"time": "19:00 - 23:00", "description": "Jeder Burger f\u00fcr 4,90 \u20ac", "location": "Mainfranken Bowling"}], "execution_time": "Thursday, 05.10.2017", "day": "Thursday, 05.10.2017"}

View File

@ -1 +0,0 @@
{"name": "Speiseplan f\u00fcr Austra\u00dfe Bamberg", "execution_time": "Thursday, 05.10.2017", "weekmenu": [{"menu": ["Pennenudeln mit Lachs, Spinat und Kirschtomaten", "Rinderhacksteak mit Cognac - Pfefferso\u00dfe", "Schneller Teller: H\u00e4hnchenspie\u00df mit Gefl\u00fcgelso\u00dfe, Bratkartoffeln und Blumenkohl", "Kartoffelgnocchi - Gem\u00fcsepfanne", "Dampfkartoffeln mit hausgemachtem Schnittlauchquark"], "date": "02.10."}, {"menu": [], "date": "03.10."}, {"menu": ["Siebenschwabenplatte mit Bratenso\u00dfe", "Moussaka vom Rind", "Putenbrustgeschnetzeltes in Pilzrahm", "Schneller Teller: Veganes Soja - Gem\u00fcsegeschnetzeltes mit Penine Rigate, Apfel", "\u00dcberbackene Zucchini \"mediterrane Art\" an Paprikaso\u00dfe"], "date": "04.10."}, {"menu": ["Chicken Burger mit Ananas Currydip", "Kasseler mit gr\u00fcnem Bohnengem\u00fcse", "Schneller Teller: Paprikagulsch vom Schwein mit Spiralnudeln und Rosenkohl", "Putenbrustgeschnetzeltes in Pilzrahm", "Schneller Teller: Veganes Soja - Gem\u00fcsegeschnetzeltes mit Penine Rigate, Apfel", "Nudelgem\u00fcseauflauf", "Pizza \"Spinat & Hirtenk\u00e4se\""], "date": "05.10."}, {"menu": ["Schneller Teller: Seelachsfilet an \"S\u00fc\u00df - Scharfer\" Tomatenso\u00dfe, Langkornreis und Brokkoli", "Gyros mit hausgemachtem Tsatsiki", "Green Tacos mit Walnuss - Chili - P\u00e2t\u00e9"], "date": "06.10."}]}

View File

@ -1 +0,0 @@
{"name": "Speiseplan f\u00fcr Feldkirchenstra\u00dfe Bamberg", "execution_time": "Thursday, 05.10.2017", "weekmenu": [{"menu": ["Rinderhacksteak mit Cognac - Pfefferso\u00dfe", "Schneller Teller: H\u00e4hnchenspie\u00df mit Gefl\u00fcgelso\u00dfe, Bratkartoffeln und Blumenkohl", "Kartoffelgnocchi - Gem\u00fcsepfanne", "Dampfkartoffeln mit hausgemachtem Schnittlauchquark"], "date": "02.10."}, {"menu": [], "date": "03.10."}, {"menu": ["Siebenschwabenplatte mit Bratenso\u00dfe", "Putenbrustgeschnetzeltes in Pilzrahm", "Schneller Teller: Veganes Soja - Gem\u00fcsegeschnetzeltes mit Penine Rigate, Apfel", "\u00dcberbackene Zucchini \"mediterrane Art\" an Paprikaso\u00dfe"], "date": "04.10."}, {"menu": ["Chicken Burger mit Ananas Currydip", "Schneller Teller: Paprikagulsch vom Schwein mit Spiralnudeln und Rosenkohl", "\u00dcberbackene Zucchini \"mediterrane Art\" an Paprikaso\u00dfe", "Nudelgem\u00fcseauflauf", "Pizza \"Spinat & Hirtenk\u00e4se\""], "date": "05.10."}, {"menu": ["Schneller Teller: Seelachsfilet an \"S\u00fc\u00df - Scharfer\" Tomatenso\u00dfe, Langkornreis und Brokkoli", "Gyros mit hausgemachtem Tsatsiki", "Green Tacos mit Walnuss - Chili - P\u00e2t\u00e9"], "date": "06.10."}]}

View File

@ -3,9 +3,14 @@ from datetime import datetime
from pprint import pprint from pprint import pprint
from django.db.utils import IntegrityError from django.db.utils import IntegrityError
from apps.food.models import SingleFood, Menu, HappyHour from apps.food.models import SingleFood, Menu, HappyHour
from apps.food.utils.parser import mensa_page_parser, fekide_happyhour_page_parser, cafete_page_parser
# JSON_FILES_PATH_FOOD = "json_generator/jsons/" # CONFIG SERVICE LINKS
JSON_FILES_PATH_FOOD = "food/json_generator/jsons/" LINK_FEKI_MENSA = "https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/speiseplaene.html?tx_thmensamenu_pi2%5Bmensen%5D=3&tx_thmensamenu_pi2%5Baction%5D=show&tx_thmensamenu_pi2%5Bcontroller%5D=Speiseplan&cHash=c3fe5ebb35e5fba3794f01878e798b7c"
LINK_AUSTR_MENSA = "https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/speiseplaene.html?tx_thmensamenu_pi2%5Bmensen%5D=2&tx_thmensamenu_pi2%5Baction%5D=show&tx_thmensamenu_pi2%5Bcontroller%5D=Speiseplan&cHash=511e047953ee1370c3b82c11a04624bb"
LINK_ERBA_CAFETE = "https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/sonderspeiseplaene/cafeteria-erba-insel.html"
LINK_MARKUS_CAFETE = "https://www.studentenwerk-wuerzburg.de/bamberg/essen-trinken/sonderspeiseplaene/cafeteria-markusplatz.html"
LINK_FEKIDE_GUIDE = "https://www.feki.de/happyhour"
def getJsonFromFile(path): def getJsonFromFile(path):
@ -14,6 +19,7 @@ def getJsonFromFile(path):
def writeStudentenwerkDataInDB(data): def writeStudentenwerkDataInDB(data):
data = json.loads(data)
for menu in data['weekmenu']: for menu in data['weekmenu']:
foodlist = [] foodlist = []
for single_food in menu['menu']: for single_food in menu['menu']:
@ -45,15 +51,14 @@ def writeFekideDataInDB(data):
break break
def main(path=JSON_FILES_PATH_FOOD): def main():
# get food jsons # get food jsons
writeStudentenwerkDataInDB(getJsonFromFile(path + "mensa-austr.json")) writeStudentenwerkDataInDB(mensa_page_parser.parsePage(LINK_AUSTR_MENSA))
writeStudentenwerkDataInDB(getJsonFromFile(path + "cafete-erba.json")) writeStudentenwerkDataInDB(mensa_page_parser.parsePage(LINK_FEKI_MENSA))
writeStudentenwerkDataInDB(getJsonFromFile(path + "cafete-markus.json")) writeStudentenwerkDataInDB(cafete_page_parser.parsePage(LINK_ERBA_CAFETE))
writeStudentenwerkDataInDB(getJsonFromFile(path + "mensa-feki.json")) writeStudentenwerkDataInDB(cafete_page_parser.parsePage(LINK_MARKUS_CAFETE))
writeFekideDataInDB(fekide_happyhour_page_parser.parsePage(LINK_FEKIDE_GUIDE))
json_food_fekide = getJsonFromFile(path + "happyhourguide-fekide.json")
writeFekideDataInDB(json_food_fekide)
pprint("SingleFood: " + str(SingleFood.objects.count())) pprint("SingleFood: " + str(SingleFood.objects.count()))
pprint("Menu: " + str(Menu.objects.count())) pprint("Menu: " + str(Menu.objects.count()))
pprint("HappyHour: " + str(HappyHour.objects.count())) pprint("HappyHour: " + str(HappyHour.objects.count()))

View File

@ -2,6 +2,7 @@ import requests
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
import json import json
import datetime import datetime
import re
SPEISEPLAN_NAME_SELECTOR = '.csc-default .csc-header .csc-firstHeader' SPEISEPLAN_NAME_SELECTOR = '.csc-default .csc-header .csc-firstHeader'
@ -16,18 +17,20 @@ def getFoodplanName(soup):
def getRightLine(lines): def getRightLine(lines):
foodlines = []
pattern = re.compile("[0-9]+.+[A-Z]+")
for line in list(lines): for line in list(lines):
if str(line).__contains__("<br/>"): line = line.getText()
return line if pattern.match(line):
return "" foodlines.append(line)
return foodlines
def getFoodPerDay(soup): def getFoodPerDay(soup):
days = [] days = []
lines = soup.select('.csc-default .bodytext') lines = soup.select('.csc-default .bodytext')
line = getRightLine(lines) foodlines = getRightLine(lines)
foods = str(line).strip('<p class="bodytext">').strip('</').split("<br/>") for food in foodlines:
for food in foods:
dayObj = {} dayObj = {}
day = str(food).split()[0] day = str(food).split()[0]
foodName = str(food).replace(day, "").strip() foodName = str(food).replace(day, "").strip()

View File

@ -45,9 +45,7 @@ def parsePage(url: str):
pagecontent['happyhours'] = happyhours pagecontent['happyhours'] = happyhours
pagecontent['day'] = getDay() pagecontent['day'] = getDay()
pagecontent['execution_time'] = datetime.datetime.today().strftime("%A, %d.%m.%Y") pagecontent['execution_time'] = datetime.datetime.today().strftime("%A, %d.%m.%Y")
return pagecontent
jsondata = json.dumps(pagecontent)
return jsondata
# LINK_FEKIDE_GUIDE = "https://www.feki.de/happyhour/wochenuebersicht" # LINK_FEKIDE_GUIDE = "https://www.feki.de/happyhour/wochenuebersicht"
# parsePage(LINK_FEKIDE_GUIDE) # parsePage(LINK_FEKIDE_GUIDE)

View File

@ -43,7 +43,6 @@ def parsePage(url: str):
mensaSpeiseplan['weekmenu'] = days mensaSpeiseplan['weekmenu'] = days
mensaSpeiseplan['name'] = foodplan_name mensaSpeiseplan['name'] = foodplan_name
mensaSpeiseplan['execution_time'] = datetime.datetime.today().strftime("%A, %d.%m.%Y") mensaSpeiseplan['execution_time'] = datetime.datetime.today().strftime("%A, %d.%m.%Y")
# print(mensaSpeiseplan)
mensaSpeiseplanJson = json.dumps(mensaSpeiseplan) mensaSpeiseplanJson = json.dumps(mensaSpeiseplan)
return mensaSpeiseplanJson return mensaSpeiseplanJson