From 342aa72cd0f2e89f8450b2e69bf5b0e85f92a516 Mon Sep 17 00:00:00 2001 From: Michael Wittig Date: Sat, 10 Dec 2016 21:30:33 +0100 Subject: [PATCH] #99 more moving of views --- .../__init__.py | 0 core/localizations/__init__.py | 0 core/localizations/messages.py | 4 + core/ofm_urls.py | 10 +-- core/tests/unit/views/test_parser_view.py | 20 ++--- core/urls.py | 28 +++---- core/views/__init__.py | 0 core/{views.py => views/base_views.py} | 78 +------------------ .../finance_views.py | 2 +- .../{rename_me_views => views}/match_views.py | 0 .../player_views.py | 2 +- .../stadium_views.py | 0 core/views/trigger_parsing_views.py | 72 +++++++++++++++++ core/{rename_me_views => views}/view_utils.py | 0 14 files changed, 110 insertions(+), 106 deletions(-) rename core/{rename_me_views => localization}/__init__.py (100%) create mode 100644 core/localizations/__init__.py create mode 100644 core/localizations/messages.py create mode 100644 core/views/__init__.py rename core/{views.py => views/base_views.py} (84%) rename core/{rename_me_views => views}/finance_views.py (99%) rename core/{rename_me_views => views}/match_views.py (100%) rename core/{rename_me_views => views}/player_views.py (99%) rename core/{rename_me_views => views}/stadium_views.py (100%) create mode 100644 core/views/trigger_parsing_views.py rename core/{rename_me_views => views}/view_utils.py (100%) diff --git a/core/rename_me_views/__init__.py b/core/localization/__init__.py similarity index 100% rename from core/rename_me_views/__init__.py rename to core/localization/__init__.py diff --git a/core/localizations/__init__.py b/core/localizations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/localizations/messages.py b/core/localizations/messages.py new file mode 100644 index 0000000..f21c83a --- /dev/null +++ b/core/localizations/messages.py @@ -0,0 +1,4 @@ +MSG_NOT_LOGGED_IN = "Du bist nicht eingeloggt!" +MSG_SETTINGS_SAVED = "Die neuen Einstellungen wurden gespeichert." +MSG_PASSWORDS_UNEQUAL = "Die eingegeben Passwörter stimmen nicht überein." +MSG_OFM_PASSWORDS_UNEQUAL = "Die eingegeben OFM Passwörter stimmen nicht überein." diff --git a/core/ofm_urls.py b/core/ofm_urls.py index 979d88a..2394ade 100644 --- a/core/ofm_urls.py +++ b/core/ofm_urls.py @@ -1,11 +1,11 @@ from django.conf.urls import url -from core.rename_me_views.stadium_views import StadiumStatisticsView, StadiumStatisticsAsJsonView, StadiumDetailView, \ - StadiumStandStatisticsView, StadiumStandStatisticsChartView -from core.rename_me_views.match_views import MatchesView, MatchesAsJsonView, MatchesSummaryJsonView -from core.rename_me_views.finance_views import FinanceDataView, FinancesAsJsonView, FinanceBalanceChartView, \ +from core.views.finance_views import FinanceDataView, FinancesAsJsonView, FinanceBalanceChartView, \ FinanceIncomeChartView, FinanceExpensesChartView -from core.rename_me_views.player_views import PlayerStatisticsView, PlayerStatisticsAsJsonView, PlayerDetailView, PlayerChartView +from core.views.match_views import MatchesView, MatchesAsJsonView, MatchesSummaryJsonView +from core.views.player_views import PlayerStatisticsView, PlayerStatisticsAsJsonView, PlayerDetailView, PlayerChartView +from core.views.stadium_views import StadiumStatisticsView, StadiumStatisticsAsJsonView, StadiumDetailView, \ + StadiumStandStatisticsView, StadiumStandStatisticsChartView app_name = 'ofm' urlpatterns = [ diff --git a/core/tests/unit/views/test_parser_view.py b/core/tests/unit/views/test_parser_view.py index bef7746..f39cfe3 100644 --- a/core/tests/unit/views/test_parser_view.py +++ b/core/tests/unit/views/test_parser_view.py @@ -18,27 +18,27 @@ def setUp(self): self.user = OFMUser.objects.create_user('name', '', 'pass', ofm_username='name', ofm_password='pass') self.client.login(username='name', password='pass') - @patch('core.views.SiteManager') + @patch('core.views.trigger_parsing_views.SiteManager') @patch('core.managers.parser_manager.MatchdayParser') def test_matchday_parser_view(self, site_manager_mock, matchday_parser_mock): response = self.client.get(reverse('core:trigger_matchday_parsing')) self.assertEqual(response.status_code, 302) - assert core.views.SiteManager.called + assert core.views.trigger_parsing_views.SiteManager.called assert core.managers.parser_manager.MatchdayParser.return_value.parse.called - @patch('core.views.SiteManager') + @patch('core.views.trigger_parsing_views.SiteManager') @patch('core.managers.parser_manager.MatchdayParser') @patch('core.managers.parser_manager.PlayersParser') def test_player_parser_view(self, matchday_parser_mock, site_manager_mock, players_parser_mock): response = self.client.get(reverse('core:trigger_players_parsing')) self.assertEqual(response.status_code, 302) - assert core.views.SiteManager.called + assert core.views.trigger_parsing_views.SiteManager.called assert core.managers.parser_manager.MatchdayParser.return_value.parse.called assert core.managers.parser_manager.PlayersParser.return_value.parse.called - @patch('core.views.SiteManager') + @patch('core.views.trigger_parsing_views.SiteManager') @patch('core.managers.parser_manager.MatchdayParser') @patch('core.managers.parser_manager.PlayersParser') @patch('core.managers.parser_manager.PlayerStatisticsParser') @@ -47,19 +47,19 @@ def test_player_statistics_parser_view(self, matchday_parser_mock, player_parser response = self.client.get(reverse('core:trigger_player_statistics_parsing')) self.assertEqual(response.status_code, 302) - assert core.views.SiteManager.called + assert core.views.trigger_parsing_views.SiteManager.called assert core.managers.parser_manager.MatchdayParser.return_value.parse.called assert core.managers.parser_manager.PlayersParser.return_value.parse.called assert core.managers.parser_manager.PlayerStatisticsParser.return_value.parse.called - @patch('core.views.SiteManager') + @patch('core.views.trigger_parsing_views.SiteManager') @patch('core.managers.parser_manager.MatchdayParser') @patch('core.managers.parser_manager.FinancesParser') def test_finances_parser_view(self, matchday_parser_mock, site_manager_mock, finances_parser_mock): response = self.client.get(reverse('core:trigger_finances_parsing')) self.assertEqual(response.status_code, 302) - assert core.views.SiteManager.called + assert core.views.trigger_parsing_views.SiteManager.called assert core.managers.parser_manager.MatchdayParser.return_value.parse.called assert core.managers.parser_manager.FinancesParser.return_value.parse.called @@ -68,7 +68,7 @@ def test_finances_parser_view(self, matchday_parser_mock, site_manager_mock, fin @patch('core.managers.parser_manager.ParserManager._parse_stadium_statistics') def test_match_parser_view(self, matchday_parser_mock, match_parser_mock, parse_stadium_statistics_mock): with open(os.path.join(TESTDATA_PATH, 'match_schedule.html'), encoding='utf8') as match_schedule_html: - with patch('core.views.SiteManager') as site_manager_mock: + with patch('core.views.trigger_parsing_views.SiteManager') as site_manager_mock: site_manager_instance_mock = site_manager_mock.return_value site_manager_instance_mock.browser.page_source = match_schedule_html @@ -79,7 +79,7 @@ def test_match_parser_view(self, matchday_parser_mock, match_parser_mock, parse_ assert core.managers.parser_manager.MatchParser.return_value.parse.called assert parse_stadium_statistics_mock.called - @patch('core.views.SiteManager') + @patch('core.views.trigger_parsing_views.SiteManager') @patch('core.managers.parser_manager.ParserManager.parse_matchday') @patch('core.managers.parser_manager.ParserManager.parse_players') @patch('core.managers.parser_manager.ParserManager.parse_player_statistics') diff --git a/core/urls.py b/core/urls.py index 3333009..3ccf03c 100644 --- a/core/urls.py +++ b/core/urls.py @@ -1,23 +1,23 @@ from django.conf.urls import url, include from django.views.generic.base import TemplateView, RedirectView -from core import views - -from core.views import CreateChecklistItemView, DeleteChecklistItemView, GetChecklistItemsView, \ +import core.views.trigger_parsing_views +from core.views import base_views +from core.views.base_views import CreateChecklistItemView, DeleteChecklistItemView, GetChecklistItemsView, \ UpdateChecklistItemView, GetChecklistItemsForTodayView, GetCurrentMatchdayView, UpdateChecklistPriorityView app_name = 'core' urlpatterns = [ url(r'^favicon\.ico$', RedirectView.as_view(url='/static/core/img/OFM_favicon.png', permanent=True)), url(r'^$', TemplateView.as_view(template_name='core/home.html'), name='home'), - url(r'^register/?$', views.register_view, name='register'), - url(r'^login/?$', views.login_view, name='login'), - url(r'^account/?$', views.account_view, name='account'), - url(r'^logout/?$', views.logout_view, name='logout'), + url(r'^register/?$', base_views.register_view, name='register'), + url(r'^login/?$', base_views.login_view, name='login'), + url(r'^account/?$', base_views.account_view, name='account'), + url(r'^logout/?$', base_views.logout_view, name='logout'), url(r'^ofm/', include('core.ofm_urls'), name='ofm'), url(r'^get_current_matchday/?$', GetCurrentMatchdayView.as_view(), name='get_current_matchday'), - url(r'^settings/?$', views.settings_view, name='settings'), + url(r'^settings/?$', base_views.settings_view, name='settings'), url(r'^settings_get_checklist_items/?$', GetChecklistItemsView.as_view(), name='settings_get_checklist_items'), url(r'^settings_get_checklist_items_for_today/?$', GetChecklistItemsForTodayView.as_view(), name='settings_get_checklist_items_for_today'), @@ -29,11 +29,11 @@ url(r'^settings_update_checklist_priority/?$', UpdateChecklistPriorityView.as_view(), name='settings_update_checklist_priority'), - url(r'^trigger_parsing/?$', views.trigger_parsing, name='trigger_parsing'), - url(r'^trigger_matchday_parsing/?$', views.trigger_matchday_parsing, name='trigger_matchday_parsing'), - url(r'^trigger_players_parsing/?$', views.trigger_players_parsing, name='trigger_players_parsing'), - url(r'^trigger_player_statistics_parsing/?$', views.trigger_player_statistics_parsing, + url(r'^trigger_parsing/?$', core.views.trigger_parsing_views.trigger_parsing, name='trigger_parsing'), + url(r'^trigger_matchday_parsing/?$', core.views.trigger_parsing_views.trigger_matchday_parsing, name='trigger_matchday_parsing'), + url(r'^trigger_players_parsing/?$', core.views.trigger_parsing_views.trigger_players_parsing, name='trigger_players_parsing'), + url(r'^trigger_player_statistics_parsing/?$', core.views.trigger_parsing_views.trigger_player_statistics_parsing, name='trigger_player_statistics_parsing'), - url(r'^trigger_finances_parsing/?$', views.trigger_finances_parsing, name='trigger_finances_parsing'), - url(r'^trigger_match_parsing/?$', views.trigger_match_parsing, name='trigger_match_parsing'), + url(r'^trigger_finances_parsing/?$', core.views.trigger_parsing_views.trigger_finances_parsing, name='trigger_finances_parsing'), + url(r'^trigger_match_parsing/?$', core.views.trigger_parsing_views.trigger_match_parsing, name='trigger_match_parsing'), ] diff --git a/core/views/__init__.py b/core/views/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/views.py b/core/views/base_views.py similarity index 84% rename from core/views.py rename to core/views/base_views.py index c6e1adc..104f201 100644 --- a/core/views.py +++ b/core/views/base_views.py @@ -1,5 +1,4 @@ -from braces.views import CsrfExemptMixin -from braces.views import JsonRequestResponseMixin +from braces.views import CsrfExemptMixin, JsonRequestResponseMixin from django.contrib import messages from django.contrib.auth import authenticate, login, logout from django.contrib.auth.decorators import login_required @@ -7,16 +6,11 @@ from django.utils.decorators import method_decorator from django.views.generic import View -from core.managers.parser_manager import ParserManager -from core.managers.site_manager import SiteManager +from core.localizations.messages import MSG_NOT_LOGGED_IN, MSG_SETTINGS_SAVED, MSG_PASSWORDS_UNEQUAL, \ + MSG_OFM_PASSWORDS_UNEQUAL from core.models import ChecklistItem, Checklist, Matchday, Match from users.models import OFMUser -MSG_NOT_LOGGED_IN = "Du bist nicht eingeloggt!" -MSG_SETTINGS_SAVED = "Die neuen Einstellungen wurden gespeichert." -MSG_PASSWORDS_UNEQUAL = "Die eingegeben Passwörter stimmen nicht überein." -MSG_OFM_PASSWORDS_UNEQUAL = "Die eingegeben OFM Passwörter stimmen nicht überein." - def register_view(request): if request.user.is_authenticated(): @@ -311,69 +305,3 @@ def account_view(request): else: messages.error(request, MSG_NOT_LOGGED_IN) return redirect('core:login') - - -def trigger_parsing(request): - if request.user.is_authenticated(): - site_manager = SiteManager(request.user) - site_manager.login() - - pm = ParserManager() - pm.parse_all_ofm_data(request, site_manager) - - remote_version = pm.parse_ofm_version(site_manager) - try: - with open('version', 'r') as version_file: - own_version = version_file.read().replace('\n', '') - if own_version != "null" and own_version != remote_version: - messages.info(request, "Es ist eine neuere Version von OFM Helper verfügbar: %s. Du nutzt noch: %s." % ( - remote_version, own_version)) - except IOError: - pass - - site_manager.kill() - - return redirect('core:ofm:player_statistics') - else: - messages.error(request, MSG_NOT_LOGGED_IN) - return redirect('core:login') - - -def trigger_single_parsing(request, parsing_function, redirect_to='core:account'): - if request.user.is_authenticated(): - site_manager = SiteManager(request.user) - site_manager.login() - parsing_function(request, site_manager) - return redirect(redirect_to) - else: - messages.error(request, MSG_NOT_LOGGED_IN) - return redirect('core:login') - - -def trigger_matchday_parsing(request): - pm = ParserManager() - return trigger_single_parsing(request, pm.parse_matchday) - - -def trigger_players_parsing(request): - pm = ParserManager() - redirect_to = 'core:ofm:player_statistics' - return trigger_single_parsing(request, pm.parse_players, redirect_to) - - -def trigger_player_statistics_parsing(request): - pm = ParserManager() - redirect_to = 'core:ofm:player_statistics' - return trigger_single_parsing(request, pm.parse_player_statistics, redirect_to) - - -def trigger_finances_parsing(request): - pm = ParserManager() - redirect_to = 'core:ofm:finance_overview' - return trigger_single_parsing(request, pm.parse_finances, redirect_to) - - -def trigger_match_parsing(request): - pm = ParserManager() - redirect_to = 'core:ofm:matches_overview' - return trigger_single_parsing(request, pm.parse_all_matches, redirect_to) diff --git a/core/rename_me_views/finance_views.py b/core/views/finance_views.py similarity index 99% rename from core/rename_me_views/finance_views.py rename to core/views/finance_views.py index a65e478..e5636bf 100644 --- a/core/rename_me_views/finance_views.py +++ b/core/views/finance_views.py @@ -5,7 +5,7 @@ from django.views.generic import TemplateView from core.models import Matchday, Finance -from core.rename_me_views.view_utils import validate_filtered_field +from core.views.view_utils import validate_filtered_field @method_decorator(login_required, name='dispatch') diff --git a/core/rename_me_views/match_views.py b/core/views/match_views.py similarity index 100% rename from core/rename_me_views/match_views.py rename to core/views/match_views.py diff --git a/core/rename_me_views/player_views.py b/core/views/player_views.py similarity index 99% rename from core/rename_me_views/player_views.py rename to core/views/player_views.py index 9bac683..863cda8 100644 --- a/core/rename_me_views/player_views.py +++ b/core/views/player_views.py @@ -5,7 +5,7 @@ from django.views.generic import TemplateView, DetailView from core.models import Matchday, Contract, PlayerStatistics, AwpBoundaries, Player -from core.rename_me_views.view_utils import validate_filtered_field +from core.views.view_utils import validate_filtered_field @method_decorator(login_required, name='dispatch') diff --git a/core/rename_me_views/stadium_views.py b/core/views/stadium_views.py similarity index 100% rename from core/rename_me_views/stadium_views.py rename to core/views/stadium_views.py diff --git a/core/views/trigger_parsing_views.py b/core/views/trigger_parsing_views.py new file mode 100644 index 0000000..115aeb4 --- /dev/null +++ b/core/views/trigger_parsing_views.py @@ -0,0 +1,72 @@ +from django.contrib import messages +from django.shortcuts import redirect + +from core.localizations.messages import MSG_NOT_LOGGED_IN +from core.managers.parser_manager import ParserManager +from core.managers.site_manager import SiteManager + + +def trigger_parsing(request): + if request.user.is_authenticated(): + site_manager = SiteManager(request.user) + site_manager.login() + + pm = ParserManager() + pm.parse_all_ofm_data(request, site_manager) + + remote_version = pm.parse_ofm_version(site_manager) + try: + with open('version', 'r') as version_file: + own_version = version_file.read().replace('\n', '') + if own_version != "null" and own_version != remote_version: + messages.info(request, "Es ist eine neuere Version von OFM Helper verfügbar: %s. Du nutzt noch: %s." % ( + remote_version, own_version)) + except IOError: + pass + + site_manager.kill() + + return redirect('core:ofm:player_statistics') + else: + messages.error(request, MSG_NOT_LOGGED_IN) + return redirect('core:login') + + +def trigger_single_parsing(request, parsing_function, redirect_to='core:account'): + if request.user.is_authenticated(): + site_manager = SiteManager(request.user) + site_manager.login() + parsing_function(request, site_manager) + return redirect(redirect_to) + else: + messages.error(request, MSG_NOT_LOGGED_IN) + return redirect('core:login') + + +def trigger_matchday_parsing(request): + pm = ParserManager() + return trigger_single_parsing(request, pm.parse_matchday) + + +def trigger_players_parsing(request): + pm = ParserManager() + redirect_to = 'core:ofm:player_statistics' + return trigger_single_parsing(request, pm.parse_players, redirect_to) + + +def trigger_player_statistics_parsing(request): + pm = ParserManager() + redirect_to = 'core:ofm:player_statistics' + return trigger_single_parsing(request, pm.parse_player_statistics, redirect_to) + + +def trigger_finances_parsing(request): + pm = ParserManager() + redirect_to = 'core:ofm:finance_overview' + return trigger_single_parsing(request, pm.parse_finances, redirect_to) + + +def trigger_match_parsing(request): + pm = ParserManager() + redirect_to = 'core:ofm:matches_overview' + return trigger_single_parsing(request, pm.parse_all_matches, redirect_to) diff --git a/core/rename_me_views/view_utils.py b/core/views/view_utils.py similarity index 100% rename from core/rename_me_views/view_utils.py rename to core/views/view_utils.py