integrate data collectors in apps

This commit is contained in:
Götz 2017-10-02 21:21:15 +02:00
parent f94d0170ff
commit 0fcb726f92
74 changed files with 531 additions and 431 deletions

133
.gitignore vendored
View File

@ -1,3 +1,19 @@
# Created by https://www.gitignore.io/api/pycharm,python,django
### Django ###
*.log
*.pot
*.pyc
__pycache__/
local_settings.py
db.sqlite3
media
# If your build process includes running collectstatic, then you probably don't need or want to include staticfiles/
# in your Git repository. Update and uncomment the following line accordingly.
# <django-project-name>/staticfiles/
### PyCharm ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
@ -31,7 +47,7 @@ cmake-build-debug/
## Plugin-specific files: ## Plugin-specific files:
# IntelliJ # IntelliJ
out/ /out/
# mpeltonen/sbt-idea plugin # mpeltonen/sbt-idea plugin
.idea_modules/ .idea_modules/
@ -42,9 +58,124 @@ atlassian-ide-plugin.xml
# Cursive Clojure plugin # Cursive Clojure plugin
.idea/replstate.xml .idea/replstate.xml
# Ruby plugin and RubyMine
/.rakeTasks
# Crashlytics plugin (for Android Studio and IntelliJ) # Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml com_crashlytics_export_strings.xml
crashlytics.properties crashlytics.properties
crashlytics-build.properties crashlytics-build.properties
fabric.properties fabric.properties
### PyCharm Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr
# Sonarlint plugin
.idea/sonarlint
### Python ###
# Byte-compiled / optimized / DLL files
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
# Translations
*.mo
# Django stuff:
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
# End of https://www.gitignore.io/api/pycharm,python,django

View File

@ -0,0 +1,7 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="useProjectProfile" value="false" />
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

4
.idea/misc.xml generated Normal file
View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.5.3 (/usr/bin/python3.5)" project-jdk-type="Python SDK" />
</project>

8
.idea/modules.xml generated Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/ofu-app.iml" filepath="$PROJECT_DIR$/.idea/ofu-app.iml" />
</modules>
</component>
</project>

18
.idea/ofu-app.iml generated Normal file
View File

@ -0,0 +1,18 @@
<?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="TemplatesService">
<option name="TEMPLATE_FOLDERS">
<list>
<option value="$MODULE_DIR$/ofu_app/templates" />
</list>
</option>
</component>
<component name="TestRunnerService">
<option name="PROJECT_TEST_RUNNER" value="Unittests" />
</component>
</module>

6
.idea/vcs.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@ -13,9 +13,10 @@
<SUITE FILE_PATH="coverage/ofu_app$controller_json_food.coverage" NAME="controller-json-food Coverage Results" MODIFIED="1506703105217" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/data_collectors/food/json_generator" /> <SUITE FILE_PATH="coverage/ofu_app$controller_json_food.coverage" NAME="controller-json-food Coverage Results" MODIFIED="1506703105217" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/data_collectors/food/json_generator" />
<SUITE FILE_PATH="coverage/ofu_app$fekide_eventpage_parser.coverage" NAME="fekide-eventpage-parser Coverage Results" MODIFIED="1506732818806" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/data_collectors/events/parser" /> <SUITE FILE_PATH="coverage/ofu_app$fekide_eventpage_parser.coverage" NAME="fekide-eventpage-parser Coverage Results" MODIFIED="1506732818806" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/data_collectors/events/parser" />
<SUITE FILE_PATH="coverage/ofu_app$migrate_data__1_.coverage" NAME="migrate-data (1) Coverage Results" MODIFIED="1506734928822" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/data_collectors/events" /> <SUITE FILE_PATH="coverage/ofu_app$migrate_data__1_.coverage" NAME="migrate-data (1) Coverage Results" MODIFIED="1506734928822" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/data_collectors/events" />
<SUITE FILE_PATH="coverage/ofu_app$collect_and_migrate.coverage" NAME="collect_and_migrate Coverage Results" MODIFIED="1506815482638" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/data_collectors" /> <SUITE FILE_PATH="coverage/ofu_app$collect_and_migrate.coverage" NAME="collect_and_migrate Coverage Results" MODIFIED="1506956141616" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/data_collectors" />
<SUITE FILE_PATH="coverage/ofu_app$migrate_data.coverage" NAME="migrate-data Coverage Results" MODIFIED="1506814046322" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/data_collectors/food" /> <SUITE FILE_PATH="coverage/ofu_app$migrate_data.coverage" NAME="migrate-data Coverage Results" MODIFIED="1506814046322" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/data_collectors/food" />
<SUITE FILE_PATH="coverage/ofu_app$controller_json_events.coverage" NAME="controller-json-events Coverage Results" MODIFIED="1506733064332" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/data_collectors/events/json_generator" /> <SUITE FILE_PATH="coverage/ofu_app$controller_json_events.coverage" NAME="controller-json-events Coverage Results" MODIFIED="1506733064332" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/data_collectors/events/json_generator" />
<SUITE FILE_PATH="coverage/ofu_app$mensa_page_parser.coverage" NAME="mensa_page_parser Coverage Results" MODIFIED="1506961724724" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/apps/food/utils/parser" />
</component> </component>
<component name="DjangoConsoleOptions" custom-start-script="import sys; print('Python %s on %s' % (sys.version, sys.platform))&#10;import django; print('Django %s' % django.get_version())&#10;sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])&#10;if 'setup' in dir(django): django.setup()&#10;import django_manage_shell; django_manage_shell.run(PROJECT_ROOT)"> <component name="DjangoConsoleOptions" custom-start-script="import sys; print('Python %s on %s' % (sys.version, sys.platform))&#10;import django; print('Django %s' % django.get_version())&#10;sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])&#10;if 'setup' in dir(django): django.setup()&#10;import django_manage_shell; django_manage_shell.run(PROJECT_ROOT)">
<option name="myCustomStartScript" value="import sys; print('Python %s on %s' % (sys.version, sys.platform))&#10;import django; print('Django %s' % django.get_version())&#10;sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])&#10;if 'setup' in dir(django): django.setup()&#10;import django_manage_shell; django_manage_shell.run(PROJECT_ROOT)" /> <option name="myCustomStartScript" value="import sys; print('Python %s on %s' % (sys.version, sys.platform))&#10;import django; print('Django %s' % django.get_version())&#10;sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])&#10;if 'setup' in dir(django): django.setup()&#10;import django_manage_shell; django_manage_shell.run(PROJECT_ROOT)" />
@ -23,24 +24,24 @@
<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="settings.py" pinned="false" current-in-tab="false"> <file leaf-file-name="views.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/ofu_app/settings.py"> <entry file="file://$PROJECT_DIR$/apps/food/views.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="160">
<caret line="15" column="0" lean-forward="false" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="70" /> <caret line="12" column="58" lean-forward="false" selection-start-line="12" selection-start-column="58" selection-end-line="12" selection-end-column="58" />
<folding /> <folding>
<element signature="e#24#63#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="models.py" pinned="false" current-in-tab="false"> <file leaf-file-name="models.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/apps/food/models.py"> <entry file="file://$PROJECT_DIR$/apps/food/models.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="200"> <state relative-caret-position="356">
<caret line="12" column="12" lean-forward="false" selection-start-line="12" selection-start-column="4" selection-end-line="12" selection-end-column="12" /> <caret line="39" column="43" lean-forward="false" selection-start-line="39" selection-start-column="43" selection-end-line="39" selection-end-column="43" />
<folding> <folding />
<element signature="e#24#63#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
@ -55,76 +56,6 @@
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="collect_and_migrate.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/data_collectors/collect_and_migrate.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="100">
<caret line="5" column="69" lean-forward="false" selection-start-line="5" selection-start-column="69" selection-end-line="5" selection-end-column="69" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="migrate-data.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/data_collectors/events/migrate-data.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="96">
<caret line="12" column="2" lean-forward="false" selection-start-line="12" selection-start-column="2" selection-end-line="12" selection-end-column="2" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="controller-json-food.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/data_collectors/food/json_generator/controller-json-food.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="160">
<caret line="8" column="24" lean-forward="true" selection-start-line="8" selection-start-column="24" selection-end-line="8" selection-end-column="46" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="controller-json-events.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/data_collectors/events/json_generator/controller-json-events.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="700">
<caret line="35" column="33" lean-forward="false" selection-start-line="35" selection-start-column="33" selection-end-line="35" selection-end-column="33" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="food.jinja" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/templates/food/food.jinja">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60">
<caret line="3" column="11" lean-forward="false" selection-start-line="3" selection-start-column="11" selection-end-line="3" selection-end-column="11" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="week_events.jinja" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/templates/events/week_events.jinja">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="80">
<caret line="4" column="11" lean-forward="false" selection-start-line="4" selection-start-column="11" selection-end-line="4" selection-end-column="11" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="base.jinja" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/templates/base.jinja">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="460">
<caret line="23" column="24" lean-forward="false" selection-start-line="23" selection-start-column="17" selection-end-line="23" selection-end-column="24" />
<folding />
</state>
</provider>
</entry>
</file>
</leaf> </leaf>
</component> </component>
<component name="FileTemplateManagerImpl"> <component name="FileTemplateManagerImpl">
@ -152,7 +83,6 @@
<option value="$PROJECT_DIR$/events/urls.py" /> <option value="$PROJECT_DIR$/events/urls.py" />
<option value="$PROJECT_DIR$/ofu_app/urls.py" /> <option value="$PROJECT_DIR$/ofu_app/urls.py" />
<option value="$PROJECT_DIR$/events/views.py" /> <option value="$PROJECT_DIR$/events/views.py" />
<option value="$PROJECT_DIR$/ofu_app/settings.py" />
<option value="$PROJECT_DIR$/food/views.py" /> <option value="$PROJECT_DIR$/food/views.py" />
<option value="$PROJECT_DIR$/templates/base.jinja" /> <option value="$PROJECT_DIR$/templates/base.jinja" />
<option value="$PROJECT_DIR$/templates/events/week_events.jinja" /> <option value="$PROJECT_DIR$/templates/events/week_events.jinja" />
@ -160,9 +90,22 @@
<option value="$PROJECT_DIR$/templates/food/food.jinja" /> <option value="$PROJECT_DIR$/templates/food/food.jinja" />
<option value="$PROJECT_DIR$/data_collectors/food/migrate-data.py" /> <option value="$PROJECT_DIR$/data_collectors/food/migrate-data.py" />
<option value="$PROJECT_DIR$/data_collectors/events/migrate-data.py" /> <option value="$PROJECT_DIR$/data_collectors/events/migrate-data.py" />
<option value="$PROJECT_DIR$/data_collectors/collect_and_migrate.py" /> <option value="$PROJECT_DIR$/apps/events/views.py" />
<option value="$PROJECT_DIR$/data_collectors/food/json_generator/controller-json-food.py" />
<option value="$PROJECT_DIR$/data_collectors/events/json_generator/controller-json-events.py" /> <option value="$PROJECT_DIR$/data_collectors/events/json_generator/controller-json-events.py" />
<option value="$PROJECT_DIR$/data_collectors/food/json_generator/controller-json-food.py" />
<option value="$PROJECT_DIR$/data_collectors/collect_and_migrate.py" />
<option value="$PROJECT_DIR$/apps/food/management/commands/import.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/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$/ofu_app/settings.py" />
<option value="$PROJECT_DIR$/apps/food/admin.py" />
<option value="$PROJECT_DIR$/apps/food/views.py" />
<option value="$PROJECT_DIR$/apps/food/models.py" />
</list> </list>
</option> </option>
</component> </component>
@ -192,6 +135,8 @@
<foldersAlwaysOnTop value="true" /> <foldersAlwaysOnTop value="true" />
</navigator> </navigator>
<panes> <panes>
<pane id="Scratches" />
<pane id="Scope" />
<pane id="ProjectPane"> <pane id="ProjectPane">
<subPane> <subPane>
<PATH> <PATH>
@ -204,126 +149,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="data_collectors" />
<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="data_collectors" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="food" />
<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="data_collectors" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="food" />
<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="data_collectors" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="food" />
<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_ELEMENT>
<option name="myItemId" value="jsons" />
<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="data_collectors" />
<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" />
</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="data_collectors" />
<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" />
</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>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ofu_app" /> <option name="myItemId" value="ofu_app" />
@ -340,8 +165,6 @@
</PATH> </PATH>
</subPane> </subPane>
</pane> </pane>
<pane id="Scope" />
<pane id="Scratches" />
</panes> </panes>
</component> </component>
<component name="PropertiesComponent"> <component name="PropertiesComponent">
@ -350,14 +173,19 @@
<property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" /> <property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" />
</component> </component>
<component name="RecentsManager"> <component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/apps" />
</key>
<key name="CopyFile.RECENT_KEYS"> <key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/apps/events" />
<recent name="$PROJECT_DIR$/data_collectors/events/parser" /> <recent name="$PROJECT_DIR$/data_collectors/events/parser" />
<recent name="$PROJECT_DIR$/food/static" /> <recent name="$PROJECT_DIR$/food/static" />
<recent name="$PROJECT_DIR$/data_collectors/food/parser" /> <recent name="$PROJECT_DIR$/data_collectors/food/parser" />
</key> </key>
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/apps/events/utils" />
<recent name="$PROJECT_DIR$/apps/food/utils" />
<recent name="$PROJECT_DIR$/apps/food" />
<recent name="$PROJECT_DIR$/apps/food/management/utils" />
<recent name="$PROJECT_DIR$/apps" />
</key>
</component> </component>
<component name="RunDashboard"> <component name="RunDashboard">
<option name="ruleStates"> <option name="ruleStates">
@ -371,7 +199,7 @@
</list> </list>
</option> </option>
</component> </component>
<component name="RunManager" selected="Python.collect_and_migrate"> <component name="RunManager" selected="Python.mensa_page_parser">
<configuration default="false" name="migrate-data" type="PythonConfigurationType" factoryName="Python" activateToolWindowBeforeRun="false" temporary="true"> <configuration default="false" name="migrate-data" type="PythonConfigurationType" factoryName="Python" activateToolWindowBeforeRun="false" temporary="true">
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
@ -385,7 +213,7 @@
<option name="ADD_SOURCE_ROOTS" value="true" /> <option name="ADD_SOURCE_ROOTS" value="true" />
<module name="ofu_app" /> <module name="ofu_app" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" /> <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/data_collectors/food/migrate-data.py" /> <option name="SCRIPT_NAME" value="$PROJECT_DIR$/apps/food/utils/migrate_data.py" />
<option name="PARAMETERS" value="" /> <option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" /> <option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" /> <option name="EMULATE_TERMINAL" value="false" />
@ -404,26 +232,7 @@
<option name="ADD_SOURCE_ROOTS" value="true" /> <option name="ADD_SOURCE_ROOTS" value="true" />
<module name="ofu_app" /> <module name="ofu_app" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" /> <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/data_collectors/events/json_generator/controller-json-events.py" /> <option name="SCRIPT_NAME" value="$PROJECT_DIR$/data_collectors/events/json_generator/controller_json_events.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<method />
</configuration>
<configuration default="false" name="fekide-eventpage-parser" 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="/usr/bin/python3.5" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/data_collectors/events/parser" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="ofu_app" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/data_collectors/events/parser/fekide-eventpage-parser.py" />
<option name="PARAMETERS" value="" /> <option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" /> <option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" /> <option name="EMULATE_TERMINAL" value="false" />
@ -442,7 +251,7 @@
<option name="ADD_SOURCE_ROOTS" value="true" /> <option name="ADD_SOURCE_ROOTS" value="true" />
<module name="ofu_app" /> <module name="ofu_app" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" /> <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/data_collectors/events/migrate-data.py" /> <option name="SCRIPT_NAME" value="$PROJECT_DIR$/apps/events/utils/migrate_data.py" />
<option name="PARAMETERS" value="" /> <option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" /> <option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" /> <option name="EMULATE_TERMINAL" value="false" />
@ -467,6 +276,25 @@
<option name="EMULATE_TERMINAL" value="false" /> <option name="EMULATE_TERMINAL" value="false" />
<method /> <method />
</configuration> </configuration>
<configuration default="false" name="mensa_page_parser" 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="/usr/bin/python3.5" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/apps/food/utils/parser" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="ofu_app" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/apps/food/utils/parser/mensa_page_parser.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<method />
</configuration>
<configuration default="true" type="DjangoTestsConfigurationType" factoryName="Django tests"> <configuration default="true" type="DjangoTestsConfigurationType" factoryName="Django tests">
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
@ -665,17 +493,17 @@
<item index="0" class="java.lang.String" itemvalue="Django server.ofu_app" /> <item index="0" class="java.lang.String" itemvalue="Django server.ofu_app" />
<item index="1" class="java.lang.String" itemvalue="Python.migrate-data" /> <item index="1" class="java.lang.String" itemvalue="Python.migrate-data" />
<item index="2" class="java.lang.String" itemvalue="Python.controller-json-events" /> <item index="2" class="java.lang.String" itemvalue="Python.controller-json-events" />
<item index="3" class="java.lang.String" itemvalue="Python.fekide-eventpage-parser" /> <item index="3" class="java.lang.String" itemvalue="Python.migrate-data (1)" />
<item index="4" class="java.lang.String" itemvalue="Python.migrate-data (1)" /> <item index="4" class="java.lang.String" itemvalue="Python.collect_and_migrate" />
<item index="5" class="java.lang.String" itemvalue="Python.collect_and_migrate" /> <item index="5" class="java.lang.String" itemvalue="Python.mensa_page_parser" />
</list> </list>
<recent_temporary> <recent_temporary>
<list size="5"> <list size="5">
<item index="0" class="java.lang.String" itemvalue="Python.collect_and_migrate" /> <item index="0" class="java.lang.String" itemvalue="Python.mensa_page_parser" />
<item index="1" class="java.lang.String" itemvalue="Python.migrate-data" /> <item index="1" class="java.lang.String" itemvalue="Python.collect_and_migrate" />
<item index="2" class="java.lang.String" itemvalue="Python.migrate-data (1)" /> <item index="2" class="java.lang.String" itemvalue="Python.migrate-data" />
<item index="3" class="java.lang.String" itemvalue="Python.controller-json-events" /> <item index="3" class="java.lang.String" itemvalue="Python.migrate-data (1)" />
<item index="4" class="java.lang.String" itemvalue="Python.fekide-eventpage-parser" /> <item index="4" class="java.lang.String" itemvalue="Python.controller-json-events" />
</list> </list>
</recent_temporary> </recent_temporary>
</component> </component>
@ -703,19 +531,18 @@
</component> </component>
<component name="ToolWindowManager"> <component name="ToolWindowManager">
<frame x="0" y="27" width="1920" height="1053" extended-state="7" /> <frame x="0" y="27" width="1920" height="1053" extended-state="7" />
<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.2628205" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" /> <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.26602563" 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="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="true" show_stripe_button="true" weight="0.32896176" 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="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="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="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32896176" 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="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="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="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="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="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="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" /> <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" />
@ -734,11 +561,27 @@
</component> </component>
<component name="XDebuggerManager"> <component name="XDebuggerManager">
<breakpoint-manager> <breakpoint-manager>
<option name="time" value="3" /> <option name="time" value="4" />
</breakpoint-manager> </breakpoint-manager>
<watches-manager /> <watches-manager />
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/templates/food/food.jinja">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60">
<caret line="3" column="11" lean-forward="false" selection-start-line="3" selection-start-column="11" selection-end-line="3" selection-end-column="11" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/data_collectors/collect_and_migrate.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="100">
<caret line="5" column="72" lean-forward="true" selection-start-line="5" selection-start-column="72" selection-end-line="5" selection-end-column="72" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ofu_app/settings.py"> <entry file="file://$PROJECT_DIR$/ofu_app/settings.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2980"> <state relative-caret-position="2980">
@ -752,7 +595,7 @@
<state relative-caret-position="200"> <state relative-caret-position="200">
<caret line="12" column="12" lean-forward="false" selection-start-line="12" selection-start-column="4" selection-end-line="12" selection-end-column="12" /> <caret line="12" column="12" lean-forward="false" selection-start-line="12" selection-start-column="4" selection-end-line="12" selection-end-column="12" />
<folding> <folding>
<element signature="e#24#63#0" expanded="true" /> <element signature="e#24#63#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
@ -769,7 +612,6 @@
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="80"> <state relative-caret-position="80">
<caret line="4" column="11" lean-forward="false" selection-start-line="4" selection-start-column="11" selection-end-line="4" selection-end-column="11" /> <caret line="4" column="11" lean-forward="false" selection-start-line="4" selection-start-column="11" selection-end-line="4" selection-end-column="11" />
<folding />
</state> </state>
</provider> </provider>
</entry> </entry>
@ -777,7 +619,6 @@
<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="460">
<caret line="23" column="24" lean-forward="false" selection-start-line="23" selection-start-column="17" selection-end-line="23" selection-end-column="24" /> <caret line="23" column="24" lean-forward="false" selection-start-line="23" selection-start-column="17" selection-end-line="23" selection-end-column="24" />
<folding />
</state> </state>
</provider> </provider>
</entry> </entry>
@ -810,7 +651,7 @@
<state relative-caret-position="200"> <state relative-caret-position="200">
<caret line="12" column="12" lean-forward="false" selection-start-line="12" selection-start-column="4" selection-end-line="12" selection-end-column="12" /> <caret line="12" column="12" lean-forward="false" selection-start-line="12" selection-start-column="4" selection-end-line="12" selection-end-column="12" />
<folding> <folding>
<element signature="e#24#63#0" expanded="true" /> <element signature="e#24#63#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
@ -827,7 +668,6 @@
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="80"> <state relative-caret-position="80">
<caret line="4" column="11" lean-forward="false" selection-start-line="4" selection-start-column="11" selection-end-line="4" selection-end-column="11" /> <caret line="4" column="11" lean-forward="false" selection-start-line="4" selection-start-column="11" selection-end-line="4" selection-end-column="11" />
<folding />
</state> </state>
</provider> </provider>
</entry> </entry>
@ -835,7 +675,6 @@
<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="460">
<caret line="23" column="24" lean-forward="false" selection-start-line="23" selection-start-column="17" selection-end-line="23" selection-end-column="24" /> <caret line="23" column="24" lean-forward="false" selection-start-line="23" selection-start-column="17" selection-end-line="23" selection-end-column="24" />
<folding />
</state> </state>
</provider> </provider>
</entry> </entry>
@ -868,19 +707,19 @@
<state relative-caret-position="480"> <state relative-caret-position="480">
<caret line="24" column="69" lean-forward="false" selection-start-line="24" selection-start-column="69" selection-end-line="24" selection-end-column="69" /> <caret line="24" column="69" lean-forward="false" selection-start-line="24" selection-start-column="69" selection-end-line="24" selection-end-column="69" />
<folding> <folding>
<element signature="e#24#63#0" expanded="true" /> <element signature="e#24#63#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/data_collectors/food/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="20"> <state relative-caret-position="20">
<caret line="1" column="24" lean-forward="true" selection-start-line="1" selection-start-column="24" selection-end-line="1" selection-end-column="24" /> <caret line="1" column="24" lean-forward="true" selection-start-line="1" selection-start-column="24" selection-end-line="1" selection-end-column="24" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/data_collectors/food/parser/cafete-page-parser.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="0"> <state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
@ -900,34 +739,20 @@
<state relative-caret-position="460"> <state relative-caret-position="460">
<caret line="23" column="4" lean-forward="false" selection-start-line="23" selection-start-column="4" selection-end-line="23" selection-end-column="4" /> <caret line="23" column="4" lean-forward="false" selection-start-line="23" selection-start-column="4" selection-end-line="23" selection-end-column="4" />
<folding> <folding>
<element signature="e#24#63#0" expanded="true" /> <element signature="e#24#63#0" expanded="false" />
</folding> </folding>
</state> </state>
</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$/data_collectors/food/parser/fekide-happyhour-page-parser.py"> <entry file="file://$PROJECT_DIR$/apps/events/utils/parser/univis_json_prettifier.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$/data_collectors/food/parser/mensa-page-parser.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-40">
<caret line="22" column="25" lean-forward="false" selection-start-line="22" selection-start-column="25" selection-end-line="22" selection-end-column="25" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/data_collectors/events/parser/univis-json-prettifier.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="296"> <state relative-caret-position="296">
<caret line="136" column="29" lean-forward="false" selection-start-line="136" selection-start-column="20" selection-end-line="136" selection-end-column="29" /> <caret line="136" column="29" lean-forward="false" selection-start-line="136" selection-start-column="20" selection-end-line="136" selection-end-column="29" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/data_collectors/events/parser/fekide-eventpage-parser.py"> <entry file="file://$PROJECT_DIR$/apps/events/utils/parser/fekide_eventpage_parser.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1136"> <state relative-caret-position="1136">
<caret line="71" column="2" lean-forward="false" selection-start-line="71" selection-start-column="2" selection-end-line="71" selection-end-column="2" /> <caret line="71" column="2" lean-forward="false" selection-start-line="71" selection-start-column="2" selection-end-line="71" selection-end-column="2" />
@ -969,34 +794,17 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/apps/events/views.py"> <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="160">
<caret line="8" column="23" lean-forward="false" selection-start-line="8" selection-start-column="23" selection-end-line="8" selection-end-column="23" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/data_collectors/food/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="180"> <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" /> <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> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/apps/food/views.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="120">
<caret line="12" column="35" lean-forward="false" selection-start-line="12" selection-start-column="35" selection-end-line="12" selection-end-column="35" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/templates/events/week_events.jinja"> <entry file="file://$PROJECT_DIR$/templates/events/week_events.jinja">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="80"> <state relative-caret-position="80">
<caret line="4" column="11" lean-forward="false" selection-start-line="4" selection-start-column="11" selection-end-line="4" selection-end-column="11" /> <caret line="4" column="11" lean-forward="false" selection-start-line="4" selection-start-column="11" selection-end-line="4" selection-end-column="11" />
<folding />
</state> </state>
</provider> </provider>
</entry> </entry>
@ -1004,33 +812,6 @@
<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="460">
<caret line="23" column="24" lean-forward="false" selection-start-line="23" selection-start-column="17" selection-end-line="23" selection-end-column="24" /> <caret line="23" column="24" lean-forward="false" selection-start-line="23" selection-start-column="17" selection-end-line="23" selection-end-column="24" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ofu_app/settings.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60">
<caret line="15" column="0" lean-forward="false" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="70" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/apps/food/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="200">
<caret line="12" column="12" lean-forward="false" selection-start-line="12" selection-start-column="4" selection-end-line="12" selection-end-column="12" />
<folding>
<element signature="e#24#63#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/templates/food/daily_food.jinja">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="80">
<caret line="4" column="8" lean-forward="false" selection-start-line="4" selection-start-column="3" selection-end-line="4" selection-end-column="8" />
<folding />
</state> </state>
</provider> </provider>
</entry> </entry>
@ -1042,44 +823,162 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/data_collectors/food/migrate-data.py"> <entry file="file://$PROJECT_DIR$/apps/events/utils/parser/univis_eventpage_parser.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="180"> <state relative-caret-position="60">
<caret line="12" column="2" lean-forward="false" selection-start-line="12" selection-start-column="2" selection-end-line="12" selection-end-column="2" /> <caret line="6" column="74" lean-forward="false" selection-start-line="6" selection-start-column="18" selection-end-line="6" selection-end-column="74" />
<folding>
<element signature="e#0#15#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/data_collectors/collect_and_migrate.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="40">
<caret line="2" column="0" lean-forward="false" selection-start-line="2" selection-start-column="0" selection-end-line="2" selection-end-column="0" />
<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="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" />
<folding>
<element signature="e#0#65#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ofu_app/wsgi.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" 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$/apps/events/views.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="80">
<caret line="4" column="23" lean-forward="false" selection-start-line="4" selection-start-column="23" selection-end-line="4" selection-end-column="23" />
<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="617">
<caret line="31" column="0" lean-forward="true" selection-start-line="31" selection-start-column="0" selection-end-line="31" selection-end-column="0" />
<folding> <folding>
<element signature="e#0#11#0" expanded="false" /> <element signature="e#0#11#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/data_collectors/events/migrate-data.py"> <entry file="file://$PROJECT_DIR$/apps/events/management/commands/import_events.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="96"> <state relative-caret-position="240">
<caret line="12" column="2" lean-forward="false" selection-start-line="12" selection-start-column="2" selection-end-line="12" selection-end-column="2" /> <caret line="12" column="39" lean-forward="false" selection-start-line="12" selection-start-column="39" selection-end-line="12" selection-end-column="39" />
<folding>
<element signature="e#0#65#0" expanded="false" />
</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 /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/data_collectors/collect_and_migrate.py"> <entry file="file://$PROJECT_DIR$/apps/food/utils/parser/mensa_page_parser.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="100"> <state relative-caret-position="40">
<caret line="5" column="69" lean-forward="false" selection-start-line="5" selection-start-column="69" selection-end-line="5" selection-end-column="69" /> <caret line="5" column="0" lean-forward="false" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/data_collectors/food/json_generator/controller-json-food.py"> <entry file="file://$PROJECT_DIR$/templates/food/daily_food.jinja">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="80">
<caret line="4" column="8" lean-forward="false" selection-start-line="4" selection-start-column="3" selection-end-line="4" selection-end-column="8" />
<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="220">
<caret line="29" column="30" lean-forward="true" selection-start-line="29" selection-start-column="30" selection-end-line="29" selection-end-column="30" />
<folding>
<element signature="e#0#11#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/apps/events/admin.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60">
<caret line="3" column="25" lean-forward="false" selection-start-line="3" selection-start-column="25" selection-end-line="3" selection-end-column="25" />
<folding>
<element signature="e#0#32#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ofu_app/settings.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="240">
<caret line="39" column="1" lean-forward="false" selection-start-line="39" selection-start-column="1" selection-end-line="39" selection-end-column="1" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/apps/food/admin.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="180">
<caret line="9" column="29" lean-forward="false" selection-start-line="9" selection-start-column="29" selection-end-line="9" selection-end-column="29" />
<folding>
<element signature="e#24#63#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/apps/food/views.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="160"> <state relative-caret-position="160">
<caret line="8" column="24" lean-forward="true" selection-start-line="8" selection-start-column="24" selection-end-line="8" selection-end-column="46" /> <caret line="12" column="58" lean-forward="false" selection-start-line="12" selection-start-column="58" selection-end-line="12" selection-end-column="58" />
<folding>
<element signature="e#24#63#0" expanded="true" />
</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="-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" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/data_collectors/events/json_generator/controller-json-events.py"> <entry file="file://$PROJECT_DIR$/apps/food/utils/json_generator/controller_json_food.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="700"> <state relative-caret-position="200">
<caret line="35" column="33" lean-forward="false" selection-start-line="35" selection-start-column="33" selection-end-line="35" selection-end-column="33" /> <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/food/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="356">
<caret line="39" column="43" lean-forward="false" selection-start-line="39" selection-start-column="43" selection-end-line="39" selection-end-column="43" />
<folding /> <folding />
</state> </state>
</provider> </provider>

View File

@ -1,3 +1,4 @@
from django.contrib import admin from django.contrib import admin
from apps.events.models import Event
# Register your models here. # Register your models here.
admin.site.register(Event)

View File

@ -0,0 +1,16 @@
from django.core.management.base import BaseCommand, CommandError
from apps.events.models import Event
from apps.events.utils.json_generator import controller_json_events
from apps.events.utils import migrate_data
class Command(BaseCommand):
help = "Imports Food from special Websites"
def add_arguments(self, parser):
pass
def handle(self, *args, **options):
controller_json_events.main("apps/events/utils/json_generator/jsons/")
migrate_data.main("apps/events/utils/json_generator/jsons/")
self.stdout.write(self.style.SUCCESS('Successfully migrate data'))

View File

@ -0,0 +1,38 @@
from apps.events.utils.parser import fekide_eventpage_parser, univis_eventpage_parser, univis_json_prettifier
# CONFIG
JSON_OUTPUT_DIR_EVENTS = "./events/json_generator/jsons/"
def writeToFile(jsonfile, root, filename):
with open((root + filename), "w") as file:
file.write(jsonfile)
def main(path=JSON_OUTPUT_DIR_EVENTS):
try:
json_events_univis = univis_eventpage_parser.parsePage()
except Exception as err:
print(err.args)
json_events_univis = "{}"
writeToFile(json_events_univis, path, "events-univis.json")
try:
json_events_univis_pretty = univis_json_prettifier.prettify(path + "events-univis.json")
except Exception as err:
print(err.args)
json_events_univis_pretty = "{}"
try:
json_events_fekide = fekide_eventpage_parser.parsePage()
except:
print("Error")
json_events_fekide = "{}"
writeToFile(json_events_univis_pretty, path, "events-univis-pretty.json")
writeToFile(json_events_fekide, path, "events-fekide.json")
if __name__ == '__main__':
main()

File diff suppressed because one or more lines are too long

View File

@ -1,13 +1,8 @@
import json import json
from datetime import datetime from datetime import datetime
from pprint import pprint from pprint import pprint
import django
import os
from django.db.utils import IntegrityError from django.db.utils import IntegrityError
os.environ['DJANGO_SETTINGS_MODULE'] = 'ofu_app.settings'
django.setup()
from apps.events.models import Event from apps.events.models import Event
# JSON_FILES_PATH_EVENTS = "json_generator/jsons/" # JSON_FILES_PATH_EVENTS = "json_generator/jsons/"
@ -31,11 +26,12 @@ def writeFekideDataInDB(data):
break break
def main(): def main(path=JSON_FILES_PATH_EVENTS):
# get food jsons # get food jsons
writeFekideDataInDB(getJsonFromFile(JSON_FILES_PATH_EVENTS + "events-fekide.json")) writeFekideDataInDB(getJsonFromFile(path + "events-fekide.json"))
pprint("Event: " + str(Event.objects.count())) pprint("Event: " + str(Event.objects.count()))
if __name__ == '__main__':
main() main()

View File

@ -2,5 +2,10 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from django.contrib import admin from django.contrib import admin
from apps.food.models import SingleFood, Menu, HappyHour
# Register your models here. # Register your models here.
admin.site.register(SingleFood)
admin.site.register(Menu)
admin.site.register(HappyHour)

View File

@ -0,0 +1,15 @@
from django.core.management.base import BaseCommand, CommandError
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
class Command(BaseCommand):
help = "Imports Food from special Websites"
def add_arguments(self, parser):
pass
def handle(self, *args, **options):
controller_json_food.main("apps/food/utils/json_generator/jsons/")
migrate_data.main("apps/food/utils/json_generator/jsons/")

View File

@ -13,6 +13,9 @@ class Menu(models.Model):
location = models.CharField(max_length=MAX_LENGTH) location = models.CharField(max_length=MAX_LENGTH)
menu = models.ManyToManyField("SingleFood") menu = models.ManyToManyField("SingleFood")
def __str__(self):
return str(self.date.strftime("%d.%m.%Y"))
class Meta: class Meta:
unique_together = ('date', 'location') unique_together = ('date', 'location')
@ -21,6 +24,9 @@ class SingleFood(models.Model):
id = models.AutoField(primary_key=True) id = models.AutoField(primary_key=True)
name = models.CharField(unique=True, max_length=MAX_LENGTH) name = models.CharField(unique=True, max_length=MAX_LENGTH)
def __str__(self):
return str(self.name)
class HappyHour(models.Model): class HappyHour(models.Model):
id = models.AutoField(primary_key=True) id = models.AutoField(primary_key=True)
@ -30,5 +36,8 @@ class HappyHour(models.Model):
location = models.CharField(max_length=MAX_LENGTH) location = models.CharField(max_length=MAX_LENGTH)
description = models.CharField(max_length=MAX_LENGTH) description = models.CharField(max_length=MAX_LENGTH)
def __str__(self):
return "Date: %s, Location: %s" % (self.date.strftime("%Y.%m.%d"), self.location)
class Meta: class Meta:
unique_together = ('date', 'location') unique_together = ('date', 'location')

View File

View File

@ -1,9 +1,4 @@
import importlib from apps.food.utils.parser import mensa_page_parser, cafete_page_parser, fekide_happyhour_page_parser
# OWN MODULS
parser_food_mensa = importlib.import_module('data_collectors.food.parser.mensa-page-parser')
parser_food_cafete = importlib.import_module('data_collectors.food.parser.cafete-page-parser')
parser_food_fekidehappyhour = importlib.import_module('data_collectors.food.parser.fekide-happyhour-page-parser')
# CONFIG # CONFIG
JSON_OUTPUT_DIR_FOOD = "./food/json_generator/jsons/" JSON_OUTPUT_DIR_FOOD = "./food/json_generator/jsons/"
@ -21,44 +16,45 @@ def writeToFile(jsonfile, root, filename):
file.write(jsonfile) file.write(jsonfile)
def main(): def main(path=JSON_OUTPUT_DIR_FOOD):
try: try:
json_food_mensa_feki = parser_food_mensa.parsePage(LINK_FEKI_MENSA) json_food_mensa_feki = mensa_page_parser.parsePage(LINK_FEKI_MENSA)
except IndexError: except IndexError:
print("Error") print("Error")
json_food_mensa_feki = {} json_food_mensa_feki = {}
try: try:
json_food_mensa_austr = parser_food_mensa.parsePage(LINK_AUSTR_MENSA) json_food_mensa_austr = mensa_page_parser.parsePage(LINK_AUSTR_MENSA)
except IndexError: except IndexError:
print("Error") print("Error")
json_food_mensa_austr = {} json_food_mensa_austr = {}
try: try:
json_food_cafete_erba = parser_food_cafete.parsePage(LINK_ERBA_CAFETE) json_food_cafete_erba = cafete_page_parser.parsePage(LINK_ERBA_CAFETE)
except IndexError: except IndexError:
print("Error") print("Error")
json_food_cafete_erba = {} json_food_cafete_erba = {}
try: try:
json_food_cafete_markus = parser_food_cafete.parsePage(LINK_MARKUS_CAFETE) json_food_cafete_markus = cafete_page_parser.parsePage(LINK_MARKUS_CAFETE)
except IndexError: except IndexError:
print("Error") print("Error")
json_food_cafete_markus = {} json_food_cafete_markus = {}
try: try:
json_food_fekidehappyhours = parser_food_fekidehappyhour.parsePage(LINK_FEKIDE_GUIDE) json_food_fekidehappyhours = fekide_happyhour_page_parser.parsePage(LINK_FEKIDE_GUIDE)
except IndexError: except IndexError:
print("Error") print("Error")
json_food_fekidehappyhours = {} json_food_fekidehappyhours = {}
# WRITE JSONS # WRITE JSONS
writeToFile(json_food_mensa_feki, JSON_OUTPUT_DIR_FOOD, "mensa-feki.json") writeToFile(json_food_mensa_feki, path, "mensa-feki.json")
writeToFile(json_food_mensa_austr, JSON_OUTPUT_DIR_FOOD, "mensa-austr.json") writeToFile(json_food_mensa_austr, path, "mensa-austr.json")
writeToFile(json_food_cafete_erba, JSON_OUTPUT_DIR_FOOD, "cafete-erba.json") writeToFile(json_food_cafete_erba, path, "cafete-erba.json")
writeToFile(json_food_cafete_markus, JSON_OUTPUT_DIR_FOOD, "cafete-markus.json") writeToFile(json_food_cafete_markus, path, "cafete-markus.json")
writeToFile(json_food_fekidehappyhours, JSON_OUTPUT_DIR_FOOD, "happyhourguide-fekide.json") writeToFile(json_food_fekidehappyhours, path, "happyhourguide-fekide.json")
if __name__ == "__main__":
main() main()

View File

@ -0,0 +1 @@
{"execution_time": "Monday, 02.10.2017", "name": "Cafeteria Erba-Insel", "weekmenu": [{"date": "24.07.", "menu": ["Rinderhacksteak an Cognacso\u00dfe und Sp\u00e4tzle"]}, {"date": "25.07.", "menu": ["Gem\u00fcseschnitzel mit Kr\u00e4utercreme und Kartoffeln"]}, {"date": "26.07.", "menu": ["Penne-Nudeln mit Hackfleischso\u00dfe"]}, {"date": "27.07.", "menu": ["Kaiserschmarrn mit Apfelmus"]}]}

View File

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

View File

@ -0,0 +1 @@
{"execution_time": "Monday, 02.10.2017", "happyhours": [{"description": "Panini f\u00fcr je 4,50 \u20ac", "time": "12:00 - 22:00", "location": "Caf\u00e9 Esspress"}, {"description": "Salat-Tag: Varianten f\u00fcr je 6 \u20ac", "time": "16:00 - 23:59", "location": "Bowlinghaus Bamberg"}, {"description": "Jede Pizza nur 5,20\u20ac", "time": "17:00 - 21:00", "location": "Cafe Arte"}, {"description": "Jede Tapa - 2,50 \u20ac", "time": "17:00 - 21:00", "location": "Bolero"}, {"description": "Schnitzel + 0,2l Getr\u00e4nk 7,90 \u20ac", "time": "17:30 - 21:30", "location": "Luitpold"}, {"description": "Riesen-Pizzen 12,50 \u20ac", "time": "18:00 - 21:00", "location": "Aposto"}, {"description": "1 Paar Bradw\u00f6rschd, 1 Ah\u00f6rnla Bier + Beilage ab 7,50 \u20ac", "time": "19:00 - 22:00", "location": "Ah\u00f6rnla im Sand"}, {"description": "Jede Pizza 4,90 \u20ac", "time": "19:00 - 01:00", "location": "Mainfranken Bowling"}], "day": "Monday, 02.10.2017"}

View File

@ -0,0 +1 @@
{"execution_time": "Monday, 02.10.2017", "name": "Speiseplan f\u00fcr Austra\u00dfe Bamberg", "weekmenu": [{"date": "02.10.", "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": "03.10.", "menu": []}, {"date": "04.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": "05.10.", "menu": ["Chicken Burger mit Ananas Currydip", "Schneller Teller: Paprikagulsch vom Schwein mit Spiralnudeln und Rosenkohl", "Nudelgem\u00fcseauflauf", "Pizza \"Spinat & Hirtenk\u00e4se\""]}, {"date": "06.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", "Kartoffel Broccoli Gratin"]}]}

View File

@ -0,0 +1 @@
{"execution_time": "Monday, 02.10.2017", "name": "Speiseplan f\u00fcr Feldkirchenstra\u00dfe Bamberg", "weekmenu": [{"date": "02.10.", "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": "03.10.", "menu": []}, {"date": "04.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": "05.10.", "menu": ["Chicken Burger mit Ananas Currydip", "Schneller Teller: Paprikagulsch vom Schwein mit Spiralnudeln und Rosenkohl", "Nudelgem\u00fcseauflauf", "Pizza \"Spinat & Hirtenk\u00e4se\""]}, {"date": "06.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", "Kartoffel Broccoli Gratin"]}]}

View File

@ -1,13 +1,7 @@
import json import json
from datetime import datetime from datetime import datetime
from pprint import pprint from pprint import pprint
import django
import os
from django.db.utils import IntegrityError from django.db.utils import IntegrityError
os.environ['DJANGO_SETTINGS_MODULE'] = 'ofu_app.settings'
django.setup()
from apps.food.models import SingleFood, Menu, HappyHour from apps.food.models import SingleFood, Menu, HappyHour
# JSON_FILES_PATH_FOOD = "json_generator/jsons/" # JSON_FILES_PATH_FOOD = "json_generator/jsons/"
@ -32,6 +26,7 @@ def writeStudentenwerkDataInDB(data):
menu = Menu.objects.create(location=data['name'], menu = Menu.objects.create(location=data['name'],
date=date) date=date)
menu.menu = foodlist menu.menu = foodlist
menu.save()
except IntegrityError: except IntegrityError:
# ignored # ignored
break break
@ -50,18 +45,19 @@ def writeFekideDataInDB(data):
break break
def main(): def main(path=JSON_FILES_PATH_FOOD):
# get food jsons # get food jsons
writeStudentenwerkDataInDB(getJsonFromFile(JSON_FILES_PATH_FOOD + "mensa-austr.json")) writeStudentenwerkDataInDB(getJsonFromFile(path + "mensa-austr.json"))
writeStudentenwerkDataInDB(getJsonFromFile(JSON_FILES_PATH_FOOD + "cafete-erba.json")) writeStudentenwerkDataInDB(getJsonFromFile(path + "cafete-erba.json"))
writeStudentenwerkDataInDB(getJsonFromFile(JSON_FILES_PATH_FOOD + "cafete-markus.json")) writeStudentenwerkDataInDB(getJsonFromFile(path + "cafete-markus.json"))
writeStudentenwerkDataInDB(getJsonFromFile(JSON_FILES_PATH_FOOD + "mensa-feki.json")) writeStudentenwerkDataInDB(getJsonFromFile(path + "mensa-feki.json"))
json_food_fekide = getJsonFromFile(JSON_FILES_PATH_FOOD + "happyhourguide-fekide.json") json_food_fekide = getJsonFromFile(path + "happyhourguide-fekide.json")
writeFekideDataInDB(json_food_fekide) 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()))
if __name__ == '__main__':
main() main()

View File

@ -3,6 +3,8 @@ from bs4 import BeautifulSoup
import json import json
import datetime import datetime
FEKI_URL = "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"
def loadPage(url: str): def loadPage(url: str):
return requests.get(url).content return requests.get(url).content
@ -41,6 +43,7 @@ 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
@ -48,3 +51,4 @@ def parsePage(url: str):
def getFoodplanName(soup): def getFoodplanName(soup):
foodplan_name = soup.select('.mensamenu h2')[0].getText() foodplan_name = soup.select('.mensamenu h2')[0].getText()
return foodplan_name return foodplan_name
# parsePage(FEKI_URL)

View File

@ -10,13 +10,14 @@ from apps.food.models import Menu, HappyHour
# Create your views here. # Create your views here.
def daily_food(request): def daily_food(request):
today = datetime.datetime.now() today = datetime.datetime.now() + datetime.timedelta(2)
daily_menus = Menu.objects.filter(date__exact=today) daily_menus = Menu.objects.filter(date__exact=today)
feki_menu = daily_menus.filter(location__contains="Feldkirchenstraße").last() feki_menu = daily_menus.filter(location__contains="Feldkirchenstraße").last()
austr_menu = daily_menus.filter(location__contains="Austraße").last() austr_menu = daily_menus.filter(location__contains="Austraße").last()
erba_cafete = daily_menus.filter(location__contains="Erba").last() erba_cafete = daily_menus.filter(location__contains="Erba").last()
markus_cafete = daily_menus.filter(location__contains="markus").last() markus_cafete = daily_menus.filter(location__contains="markus").last()
happy_hours = HappyHour.objects.filter(date__exact=today) happy_hours = HappyHour.objects.filter(date__exact=today)
print(feki_menu.menu)
return render(request, "food/daily_food.jinja", { return render(request, "food/daily_food.jinja", {
'day': today, 'day': today,
'happy_hours': happy_hours, 'happy_hours': happy_hours,

View File

@ -1,7 +0,0 @@
import importlib
importlib.import_module('food.json_generator.controller-json-food')
importlib.import_module('food.migrate-data')
importlib.import_module('events.json_generator.controller-json-events')
importlib.import_module('events.migrate-data')

View File

@ -1,42 +0,0 @@
import importlib
# OWN MODULS
parser_event_univis = importlib.import_module('data_collectors.events.parser.univis-eventpage-parser')
parser_event_univis_pretty = importlib.import_module('data_collectors.events.parser.univis-json-prettifier')
parser_event_fekide = importlib.import_module('data_collectors.events.parser.fekide-eventpage-parser')
# CONFIG
JSON_OUTPUT_DIR_EVENTS = "./events/json_generator/jsons/"
def writeToFile(jsonfile, root, filename):
with open((root + filename), "w") as file:
file.write(jsonfile)
def main():
try:
json_events_univis = parser_event_univis.parsePage()
except:
print("Error")
json_events_univis = "{}"
writeToFile(json_events_univis, JSON_OUTPUT_DIR_EVENTS, "events-univis.json")
try:
json_events_univis_pretty = parser_event_univis_pretty.prettify(JSON_OUTPUT_DIR_EVENTS + "events-univis.json")
except:
print("Error")
json_events_univis_pretty = "{}"
try:
json_events_fekide = parser_event_fekide.parsePage()
except:
print("Error")
json_events_fekide = "{}"
writeToFile(json_events_univis_pretty, JSON_OUTPUT_DIR_EVENTS, "events-univis-pretty.json")
writeToFile(json_events_fekide, JSON_OUTPUT_DIR_EVENTS, "events-fekide.json")
main()

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
{"weekmenu": [{"menu": ["Rinderhacksteak an Cognacso\u00dfe und Sp\u00e4tzle"], "date": "24.07."}, {"menu": ["Gem\u00fcseschnitzel mit Kr\u00e4utercreme und Kartoffeln"], "date": "25.07."}, {"menu": ["Penne-Nudeln mit Hackfleischso\u00dfe"], "date": "26.07."}, {"menu": ["Kaiserschmarrn mit Apfelmus"], "date": "27.07."}], "execution_time": "Monday, 02.10.2017", "name": "Cafeteria Erba-Insel"}

View File

@ -1 +0,0 @@
{"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."}], "execution_time": "Monday, 02.10.2017", "name": "Cafeteria Markusplatz"}

View File

@ -1 +0,0 @@
{"day": "Monday, 02.10.2017", "execution_time": "Monday, 02.10.2017", "happyhours": [{"time": "11:00 - 18:00", "location": "Fritz Heaven", "description": "10% Rabatt auf Beefburger & belg. Fritten"}, {"time": "12:00 - 22:00", "location": "Caf\u00e9 Esspress", "description": "Panini f\u00fcr je 4,50 \u20ac"}, {"time": "15:00 - 17:30", "location": "Orlando", "description": "Dolce Vita (Cappucino & Tiramisu) f\u00fcr nur 3,50 \u20ac"}, {"time": "16:00 - 20:00", "location": "Caff\u00e8bar Kranen", "description": "Aperitivo Italiano incl. Antipasti"}, {"time": "16:00 - 23:59", "location": "Bowlinghaus Bamberg", "description": "Salat-Tag: Varianten f\u00fcr je 6 \u20ac"}, {"time": "17:00 - 21:00", "location": "Cafe Arte", "description": "Jede Pizza nur 5,20\u20ac"}, {"time": "17:00 - 21:00", "location": "Bolero", "description": "Jede Tapa - 2,50 \u20ac"}, {"time": "17:30 - 21:30", "location": "Luitpold", "description": "Schnitzel + 0,2l Getr\u00e4nk 7,90 \u20ac"}, {"time": "18:00 - 21:00", "location": "Aposto", "description": "Riesen-Pizzen 12,50 \u20ac"}, {"time": "19:00 - 22:00", "location": "Ah\u00f6rnla im Sand", "description": "1 Paar Bradw\u00f6rschd, 1 Ah\u00f6rnla Bier + Beilage ab 7,50 \u20ac"}, {"time": "19:00 - 01:00", "location": "Mainfranken Bowling", "description": "Jede Pizza 4,90 \u20ac"}]}

View File

@ -1 +0,0 @@
{"weekmenu": [{"menu": [], "date": "02.10."}, {"menu": [], "date": "03.10."}, {"menu": [], "date": "04.10."}, {"menu": [], "date": "05.10."}, {"menu": [], "date": "06.10."}], "execution_time": "Monday, 02.10.2017", "name": "Speiseplan f\u00fcr Austra\u00dfe Bamberg"}

View File

@ -1 +0,0 @@
{"weekmenu": [{"menu": [], "date": "02.10."}, {"menu": [], "date": "03.10."}, {"menu": [], "date": "04.10."}, {"menu": [], "date": "05.10."}, {"menu": [], "date": "06.10."}], "execution_time": "Monday, 02.10.2017", "name": "Speiseplan f\u00fcr Feldkirchenstra\u00dfe Bamberg"}

Binary file not shown.

View File

@ -23,8 +23,7 @@ SECRET_KEY = '7tm($-7tz!co8762!)ptmj%)80)qa^z0odee*8-!be!i(a!p4j'
# SECURITY WARNING: don't run with debug turned on in production! # SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True DEBUG = True
ALLOWED_HOSTS = ['mg-server.ddns.net', 'localhost' ] ALLOWED_HOSTS = ['mg-server.ddns.net', 'localhost', '127.0.0.1', ]
# Application definition # Application definition
@ -162,4 +161,4 @@ STATICFILES_DIRS = [
USE_X_FORWARDED_HOST = True USE_X_FORWARDED_HOST = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
FORCE_SCRIPT_NAME = "app" # FORCE_SCRIPT_NAME = "app"