From 17cddbf348b3898742942bb53911a9068c99a291 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 07 2019 10:19:05 +0000 Subject: [PATCH 1/13] Start porting fedocal to use oidc --- diff --git a/fedocal/__init__.py b/fedocal/__init__.py index 579bf01..bbf69f1 100644 --- a/fedocal/__init__.py +++ b/fedocal/__init__.py @@ -42,7 +42,7 @@ import six import six.moves import vobject from dateutil.relativedelta import relativedelta -from flask_fas_openid import FAS +from flask.ext.oidc import OpenIDConnect from flask_multistatic import MultiStaticFlask from functools import wraps from pytz import common_timezones @@ -93,7 +93,7 @@ APP.static_folder = [ os.path.join(APP.root_path, 'static', 'default') ] -FAS = FAS(APP) +FAS = OpenIDConnect(APP) APP.wsgi_app = fedocal.proxy.ReverseProxied(APP.wsgi_app) SESSION = fedocallib.create_session(APP.config['DB_URL']) @@ -391,6 +391,12 @@ def validate_input_file(input_file): def index(): """ Displays the index page presenting all the calendars available. """ + print FAS.user_loggedin + + if FAS.user_loggedin: + print flask.g.oidc_id_token + print FAS.user_getfield('email') + calendars_enabled = Calendar.by_status(SESSION, 'Enabled') calendars_disabled = Calendar.by_status(SESSION, 'Disabled') return flask.render_template( @@ -704,6 +710,7 @@ def my_meetings(): @APP.route('/login/', methods=('GET', 'POST')) +@FAS.require_login def auth_login(): """ Method to log into the application using FAS OpenID. """ @@ -725,7 +732,8 @@ def auth_login(): else: groups.update(APP.config['ADMIN_GROUP']) - return FAS.login(return_url=return_point, groups=groups) + #return FAS.login(return_url=return_point, groups=groups) + return flask.redirect(return_point) @APP.route('/logout/') diff --git a/fedocal/default_config.py b/fedocal/default_config.py index eaea502..47d54d3 100644 --- a/fedocal/default_config.py +++ b/fedocal/default_config.py @@ -79,3 +79,11 @@ ICAL_REMINDER_OPTIONS = ( ('60', '1 hour'), ('1440', '1 day') ) + + + +OIDC_CLIENT_SECRETS = os.path.join(os.path.dirname( + os.path.abspath(__file__)), '..', 'client_secrets.json') +OIDC_ID_TOKEN_COOKIE_SECURE = False +OIDC_REQUIRE_VERIFIED_EMAIL = False +OIDC_OPENID_REALM = 'http://localhost:5000/oidc_callback' From edb4a0039e676a1ac9c1d875b03718a954fbfbfb Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 07 2019 10:19:05 +0000 Subject: [PATCH 2/13] Specify the OIDC scopes to request at login --- diff --git a/fedocal/default_config.py b/fedocal/default_config.py index 47d54d3..5307535 100644 --- a/fedocal/default_config.py +++ b/fedocal/default_config.py @@ -87,3 +87,4 @@ OIDC_CLIENT_SECRETS = os.path.join(os.path.dirname( OIDC_ID_TOKEN_COOKIE_SECURE = False OIDC_REQUIRE_VERIFIED_EMAIL = False OIDC_OPENID_REALM = 'http://localhost:5000/oidc_callback' +OIDC_SCOPES = ['openid', 'email', 'profile', 'fedora'] From 10d201f21a56e9b441382f151782d969bc8474b3 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 07 2019 10:20:21 +0000 Subject: [PATCH 3/13] Store the user's data on the session so it survives a reload --- diff --git a/fedocal/__init__.py b/fedocal/__init__.py index bbf69f1..94d3fd3 100644 --- a/fedocal/__init__.py +++ b/fedocal/__init__.py @@ -38,6 +38,7 @@ import flask import bleach import jinja2 import markdown +import munch import six import six.moves import vobject @@ -93,7 +94,7 @@ APP.static_folder = [ os.path.join(APP.root_path, 'static', 'default') ] -FAS = OpenIDConnect(APP) +FAS = OpenIDConnect(APP, credentials_store=flask.session ) APP.wsgi_app = fedocal.proxy.ReverseProxied(APP.wsgi_app) SESSION = fedocallib.create_session(APP.config['DB_URL']) @@ -256,6 +257,22 @@ def set_session(): """ Set the flask session as permanent. """ flask.session.permanent = True + if FAS.user_loggedin: + if not hasattr(flask.session, 'fas_user') or not flask.session.fas_user: + flask.session.fas_user = munch.Munch({ + 'username': FAS.user_getfield('nickname'), + 'email': FAS.user_getfield('email'), + 'timezone': FAS.user_getfield('zoneinfo'), + 'cla_done': \ + 'http://admin.fedoraproject.org/accounts/cla/done' \ + in FAS.user_getfield('cla'), + 'groups': FAS.user_getfield('groups'), + }) + flask.g.fas_user = flask.session.fas_user + else: + flask.session.fas_user = None + flask.g.fas_user = None + # Local function def is_admin(): @@ -391,12 +408,6 @@ def validate_input_file(input_file): def index(): """ Displays the index page presenting all the calendars available. """ - print FAS.user_loggedin - - if FAS.user_loggedin: - print flask.g.oidc_id_token - print FAS.user_getfield('email') - calendars_enabled = Calendar.by_status(SESSION, 'Enabled') calendars_disabled = Calendar.by_status(SESSION, 'Disabled') return flask.render_template( @@ -749,6 +760,8 @@ def auth_logout(): if authenticated(): FAS.logout() + flask.session.fas_user = None + flask.g.fas_user = None flask.flash(gettext('You have been logged out')) return flask.redirect(next_url) From 8f12ca3493cdbe7a1e6bc92625a8084108e86613 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 07 2019 10:20:21 +0000 Subject: [PATCH 4/13] Rename the FAS variable to OIDC to reflect better what it is --- diff --git a/fedocal/__init__.py b/fedocal/__init__.py index 94d3fd3..ae43140 100644 --- a/fedocal/__init__.py +++ b/fedocal/__init__.py @@ -94,7 +94,7 @@ APP.static_folder = [ os.path.join(APP.root_path, 'static', 'default') ] -FAS = OpenIDConnect(APP, credentials_store=flask.session ) +OIDC = OpenIDConnect(APP, credentials_store=flask.session ) APP.wsgi_app = fedocal.proxy.ReverseProxied(APP.wsgi_app) SESSION = fedocallib.create_session(APP.config['DB_URL']) @@ -257,16 +257,16 @@ def set_session(): """ Set the flask session as permanent. """ flask.session.permanent = True - if FAS.user_loggedin: + if OIDC.user_loggedin: if not hasattr(flask.session, 'fas_user') or not flask.session.fas_user: flask.session.fas_user = munch.Munch({ - 'username': FAS.user_getfield('nickname'), - 'email': FAS.user_getfield('email'), - 'timezone': FAS.user_getfield('zoneinfo'), + 'username': OIDC.user_getfield('nickname'), + 'email': OIDC.user_getfield('email'), + 'timezone': OIDC.user_getfield('zoneinfo'), 'cla_done': \ 'http://admin.fedoraproject.org/accounts/cla/done' \ - in FAS.user_getfield('cla'), - 'groups': FAS.user_getfield('groups'), + in OIDC.user_getfield('cla'), + 'groups': OIDC.user_getfield('groups'), }) flask.g.fas_user = flask.session.fas_user else: @@ -721,7 +721,7 @@ def my_meetings(): @APP.route('/login/', methods=('GET', 'POST')) -@FAS.require_login +@OIDC.require_login def auth_login(): """ Method to log into the application using FAS OpenID. """ @@ -759,7 +759,7 @@ def auth_logout(): next_url = flask.url_for('index') if authenticated(): - FAS.logout() + OIDC.logout() flask.session.fas_user = None flask.g.fas_user = None flask.flash(gettext('You have been logged out')) From c5a7cec316ed817b57039cdb4c34f92d374d1d56 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 07 2019 10:20:21 +0000 Subject: [PATCH 5/13] Log the flask_oidc module to the same place as fedocal itself --- diff --git a/fedocal/__init__.py b/fedocal/__init__.py index ae43140..e2a221f 100644 --- a/fedocal/__init__.py +++ b/fedocal/__init__.py @@ -109,6 +109,8 @@ if not APP.debug: handler = logging.StreamHandler() handler.setLevel(APP.config.get('log_level', 'INFO')) APP.logger.addHandler(handler) +oidc_logs = logging.getLogger('flask_oidc') +oidc_logs.addHandler(handler) LOG = APP.logger From 043b205c3113df2ca3ffd9053c73f7cc7bf8bf10 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 07 2019 10:21:11 +0000 Subject: [PATCH 6/13] Fix running the fedocal tests with OIDC --- diff --git a/tests/__init__.py b/tests/__init__.py index 61d3089..19955b2 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -96,6 +96,7 @@ def user_set(APP, user): def handler(sender, **kwargs): g.fas_user = user + g.oidc_id_token = None with appcontext_pushed.connected_to(handler, APP): yield diff --git a/tests/test_flask.py b/tests/test_flask.py index 9a70fb1..8fa5cff 100644 --- a/tests/test_flask.py +++ b/tests/test_flask.py @@ -841,20 +841,8 @@ class Flasktests(Modeltests): self.assertFalse( fedocal.is_safe_url('https://fedoraproject.org/')) - def test_auth_login(self): - """ Test the auth_login function. """ - app = flask.Flask('fedocal') - - with app.test_request_context(): - flask.g.fas_user = FakeUser(['gitr2spec']) - output = self.app.get('/login/') - self.assertEqual(output.status_code, 200) - - output = self.app.get('/login/?next=http://localhost/') - self.assertEqual(output.status_code, 200) - @flask10_only - def test_auth_login_logedin(self): + def test_auth_login(self): """ Test the auth_login function. """ self.__setup_db() user = FakeUser([], username='pingou') @@ -996,7 +984,7 @@ class Flasktests(Modeltests): # discoveryfailure happens if there is no network self.assertTrue( 'OpenID transaction in progress' - in output_text or 'discoveryfailure', output_text) + in output_text or 'discoveryfailure' in output_text) user = FakeUser(['test']) with user_set(fedocal.APP, user): From 6bf3669fcc5d0d279932bb836d6d600c185185ae Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 07 2019 10:21:11 +0000 Subject: [PATCH 7/13] Specify a dedicated client_secrets file for the tests --- diff --git a/tests/client_secrets.json b/tests/client_secrets.json new file mode 100644 index 0000000..0ce3ce2 --- /dev/null +++ b/tests/client_secrets.json @@ -0,0 +1,12 @@ +{ + "web": { + "redirect_uris": ["http://localhost:5002/oidc_callback"], + "token_uri": "https://iddev.fedorainfracloud.org/openidc/Token", + "auth_uri": "https://iddev.fedorainfracloud.org/openidc/Authorization", + "client_id": "client_id", + "client_secret": "client_secret", + "userinfo_uri": "https://iddev.fedorainfracloud.org/openidc/UserInfo", + "token_introspection_uri": "https://iddev.fedorainfracloud.org/openidc/TokenInfo", + "issuer": "https://iddev.fedorainfracloud.org/openidc/" + } +} diff --git a/tests/fedocal_test.cfg b/tests/fedocal_test.cfg index d6d8b22..6ca498a 100644 --- a/tests/fedocal_test.cfg +++ b/tests/fedocal_test.cfg @@ -8,3 +8,7 @@ DB_URL = 'sqlite:///%s/test.db' % (os.path.dirname(os.path.abspath(__file__))) ### The FAS group in which the admin of fedocal are ADMIN_GROUP='packager' + +import os +OIDC_CLIENT_SECRETS = os.path.join(os.path.dirname( + os.path.abspath(__file__)), 'client_secrets.json') From fd9d4d98e413e6ca9ae9c3c7c7ee2acf9d176eba Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 07 2019 10:21:11 +0000 Subject: [PATCH 8/13] Add flask-oidc as a dependency --- diff --git a/requirements.txt b/requirements.txt index 915890e..7edf3e5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,6 +5,7 @@ bleach flask-wtf flask flask-babel +flask-oidc kitchen mock==1.1.2 python-dateutil #<= 1.5 From f6996c69b8276ad985ec95fb4403bed4295709a4 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 07 2019 10:22:35 +0000 Subject: [PATCH 9/13] Finally fix running the unit-tests on jenkins --- diff --git a/tests/test_flask.py b/tests/test_flask.py index 8fa5cff..62e5f35 100644 --- a/tests/test_flask.py +++ b/tests/test_flask.py @@ -1469,9 +1469,11 @@ class Flasktests(Modeltests): follow_redirects=True) self.assertEqual(output.status_code, 200) output_text = output.get_data(as_text=True) - self.assertIn( - 'Time must be of type "HH:MM"', - output_text) + self.assertTrue( + 'Time must be of type &HH:MM"' in output_text + or + 'Time must be of type "HH:MM"' in output_text + ) # Start time should have integer data = { @@ -1488,9 +1490,11 @@ class Flasktests(Modeltests): follow_redirects=True) self.assertEqual(output.status_code, 200) output_text = output.get_data(as_text=True) - self.assertIn( - 'Time must be of type "HH:MM"', - output_text) + self.assertTrue( + 'Time must be of type &HH:MM"' in output_text + or + 'Time must be of type "HH:MM"' in output_text + ) # End date earlier than the start date data = { From e2a1e5cfe14b0bcc48bf7379bae5935552a1dacf Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 07 2019 10:24:42 +0000 Subject: [PATCH 10/13] Fix import of flask-oidc Signed-off-by: Pierre-Yves Chibon --- diff --git a/fedocal/__init__.py b/fedocal/__init__.py index e2a221f..97fd49f 100644 --- a/fedocal/__init__.py +++ b/fedocal/__init__.py @@ -43,7 +43,7 @@ import six import six.moves import vobject from dateutil.relativedelta import relativedelta -from flask.ext.oidc import OpenIDConnect +from flask_oidc import OpenIDConnect from flask_multistatic import MultiStaticFlask from functools import wraps from pytz import common_timezones From 187de6bbc7753c6c068d45d539bf0e7ab5ea1870 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 07 2019 11:09:30 +0000 Subject: [PATCH 11/13] Fix part of the tests Signed-off-by: Pierre-Yves Chibon --- diff --git a/fedocal/fedocallib/__init__.py b/fedocal/fedocallib/__init__.py index 660f9a7..500fb3e 100644 --- a/fedocal/fedocallib/__init__.py +++ b/fedocal/fedocallib/__init__.py @@ -611,6 +611,7 @@ def delete_recursive_meeting( # Re-create after deletion has occured new_meeting = meeting.copy() + new_meeting.save(session) new_meeting.add_manager(session, meeting.meeting_manager) new_meeting.meeting_date = meeting_date + timedelta( @@ -619,8 +620,6 @@ def delete_recursive_meeting( days=meeting.recursion_frequency) new_meeting.recursion_ends = original_rec_end - new_meeting.save(session) - # pylint: disable=C0103 def _generate_date_rounded_to_the_hour(meetingdate, offset): @@ -1054,22 +1053,21 @@ def edit_meeting( if meeting_date > meeting.meeting_date: old_meeting = meeting.copy() - old_meeting.add_manager(session, meeting.meeting_manager) - old_meeting.recursion_ends = end_rec if old_meeting.recursion_ends > old_meeting.meeting_date: old_meeting.save(session) + old_meeting.add_manager(session, meeting.meeting_manager) + old_meeting.recursion_ends = end_rec if not edit_all_meeting: remove_recursion = True new_meeting = meeting.copy() + new_meeting.save(session) new_meeting.add_manager(session, meeting.meeting_manager) new_meeting.meeting_date = closest_meeting.meeting_date \ + timedelta(days=meeting.recursion_frequency) new_meeting.meeting_date_end = closest_meeting.meeting_date_end \ + timedelta(days=meeting.recursion_frequency) - new_meeting.save(session) - meeting.meeting_name = meeting_name meeting.clear_managers(session) diff --git a/fedocal/fedocallib/dbaction.py b/fedocal/fedocallib/dbaction.py index 0f73957..bca4914 100644 --- a/fedocal/fedocallib/dbaction.py +++ b/fedocal/fedocallib/dbaction.py @@ -79,7 +79,8 @@ def add_meeting( recursion_frequency=recursion_frequency, recursion_ends=recursion_ends, full_day=full_day) + meeting.save(session) meeting.add_manager(session, meeting_manager) meeting.save(session) - session.flush() + session.commit() return meeting diff --git a/tests/test_cron.py b/tests/test_cron.py index 1c29df1..ced96c0 100644 --- a/tests/test_cron.py +++ b/tests/test_cron.py @@ -138,8 +138,8 @@ class Crontests(Modeltests): meeting_information='This is a test meeting with reminder', calendar_name='test_calendar', reminder_id=remobj.reminder_id) - obj.add_manager(self.session, ['pingou']) obj.save(self.session) + obj.add_manager(self.session, ['pingou']) self.session.commit() self.assertNotEqual(obj, None) @@ -174,8 +174,8 @@ class Crontests(Modeltests): meeting_information='This is a test meeting with reminder', calendar_name='test_calendar', reminder_id=remobj.reminder_id) - obj.add_manager(self.session, ['pingou']) obj.save(self.session) + obj.add_manager(self.session, ['pingou']) self.session.commit() self.assertNotEqual(obj, None) @@ -212,8 +212,8 @@ class Crontests(Modeltests): meeting_information='This is a test meeting with reminder', calendar_name='test_calendar', reminder_id=remobj.reminder_id) - obj.add_manager(self.session, ['pingou']) obj.save(self.session) + obj.add_manager(self.session, ['pingou']) self.session.commit() self.assertNotEqual(obj, None) diff --git a/tests/test_fedocallib.py b/tests/test_fedocallib.py index d0001f4..0cfe7d6 100644 --- a/tests/test_fedocallib.py +++ b/tests/test_fedocallib.py @@ -328,8 +328,8 @@ class Fedocallibtests(Modeltests): meeting_information='This is a test meeting', calendar_name='test_calendar4', full_day=True) - obj.add_manager(self.session, 'pingou') obj.save(self.session) + obj.add_manager(self.session, 'pingou') self.session.commit() # Meeting ending on the week's start @@ -342,8 +342,8 @@ class Fedocallibtests(Modeltests): meeting_information='This is a test meeting ending on week start', calendar_name='test_calendar4', full_day=True) - obj.add_manager(self.session, 'pingou') obj.save(self.session) + obj.add_manager(self.session, 'pingou') self.session.commit() calendar = model.Calendar.by_id(self.session, 'test_calendar4') @@ -394,8 +394,8 @@ class Fedocallibtests(Modeltests): meeting_time_stop=time(13, 00), meeting_information='This is a past test meeting', calendar_name='test_calendar') - obj.add_manager(self.session, 'pingou') obj.save(self.session) + obj.add_manager(self.session, 'pingou') self.session.commit() meetings = fedocallib.get_past_meeting_of_user( self.session, 'pingou', from_date=TODAY - timedelta(days=100)) @@ -690,8 +690,8 @@ class Fedocallibtests(Modeltests): meeting_information='This is a test meeting with reminder', calendar_name='test_calendar', reminder_id=remobj.reminder_id) - meeting.add_manager(self.session, 'pingou') meeting.save(self.session) + meeting.add_manager(self.session, 'pingou') self.session.commit() meetings = fedocallib.retrieve_meeting_to_remind(self.session) diff --git a/tests/test_fedocallib_extras.py b/tests/test_fedocallib_extras.py index 9c376cb..1e839f8 100644 --- a/tests/test_fedocallib_extras.py +++ b/tests/test_fedocallib_extras.py @@ -80,8 +80,8 @@ class FedocallibExtratests(Modeltests): recursion_frequency=7, recursion_ends=datetime(2014, 10, 27).date(), ) - obj.add_manager(self.session, 'pingou') obj.save(self.session) + obj.add_manager(self.session, 'pingou') self.session.commit() self.assertNotEqual(obj, None) @@ -205,8 +205,8 @@ class FedocallibExtratests(Modeltests): recursion_frequency=7, recursion_ends=datetime(2014, 10, 27).date(), ) - obj.add_manager(self.session, 'pingou') obj.save(self.session) + obj.add_manager(self.session, 'pingou') self.session.commit() self.assertNotEqual(obj, None) @@ -341,8 +341,8 @@ class FedocallibExtratests(Modeltests): recursion_frequency=7, recursion_ends=datetime(2014, 10, 27).date(), ) - obj.add_manager(self.session, 'pingou') obj.save(self.session) + obj.add_manager(self.session, 'pingou') self.session.commit() self.assertNotEqual(obj, None) diff --git a/tests/test_flask.py b/tests/test_flask.py index 62e5f35..5b735f7 100644 --- a/tests/test_flask.py +++ b/tests/test_flask.py @@ -133,7 +133,7 @@ class Flasktests(Modeltests): self.__setup_db() output = self.app.get('/test_calendar') - self.assertEqual(output.status_code, 301) + self.assertTrue(output.status_code in [301, 308]) output = self.app.get('/test_calendar', follow_redirects=True) self.assertEqual(output.status_code, 200) @@ -172,7 +172,7 @@ class Flasktests(Modeltests): self.__setup_db() output = self.app.get('/location/test') - self.assertEqual(output.status_code, 301) + self.assertTrue(output.status_code in [301, 308]) output = self.app.get('/location/test/', follow_redirects=True) self.assertEqual(output.status_code, 200) @@ -202,7 +202,7 @@ class Flasktests(Modeltests): output = self.app.get( '/test_calendar/%s/%s/%s' % ( today.year, today.month, today.day)) - self.assertEqual(output.status_code, 301) + self.assertTrue(output.status_code in [301, 308]) output = self.app.get('/test_calendar/%s/%s/%s/' % ( today.year, today.month, today.day), follow_redirects=True) @@ -247,7 +247,7 @@ class Flasktests(Modeltests): output = self.app.get('/list/test_calendar/%s/%s/%s' % ( today.year, today.month, today.day)) - self.assertEqual(output.status_code, 301) + self.assertTrue(output.status_code in [301, 308]) output = self.app.get('/list/test_calendar/%s/%s/%s/' % ( today.year, today.month, today.day), follow_redirects=True) @@ -680,8 +680,8 @@ class Flasktests(Modeltests): recursion_frequency=7, recursion_ends=mdate + timedelta(days=365) ) - obj.add_manager(self.session, 'pingou, shaiton,') obj.save(self.session) + obj.add_manager(self.session, 'pingou, shaiton,') self.session.commit() self.assertNotEqual(obj, None) @@ -872,7 +872,7 @@ class Flasktests(Modeltests): self.__setup_db() output = self.app.get('/location/EMEA') - self.assertEqual(output.status_code, 301) + self.assertTrue(output.status_code in [301, 308]) output = self.app.get('/location/EMEA', follow_redirects=True) self.assertEqual(output.status_code, 200) diff --git a/tests/test_flask_api.py b/tests/test_flask_api.py index cb23b0a..034960b 100644 --- a/tests/test_flask_api.py +++ b/tests/test_flask_api.py @@ -73,7 +73,7 @@ class FlaskApitests(Modeltests): def test_api(self): """ Test the index function. """ output = self.app.get('/api') - self.assertEqual(output.status_code, 301) + self.assertTrue(output.status_code in [301, 308]) output = self.app.get('/api/') self.assertEqual(output.status_code, 200) diff --git a/tests/test_meeting.py b/tests/test_meeting.py index 4a52023..69192aa 100644 --- a/tests/test_meeting.py +++ b/tests/test_meeting.py @@ -62,8 +62,8 @@ class Meetingtests(Modeltests): meeting_time_stop=time(20, 50), meeting_information='This is a test meeting', calendar_name='test_calendar') - obj.add_manager(self.session, 'pingou, shaiton,') obj.save(self.session) + obj.add_manager(self.session, 'pingou, shaiton,') self.session.commit() self.assertNotEqual(obj, None) @@ -75,8 +75,8 @@ class Meetingtests(Modeltests): meeting_time_stop=time(16, 15), meeting_information='This is another test meeting', calendar_name='test_calendar') - obj.add_manager(self.session, ['pingou']) obj.save(self.session) + obj.add_manager(self.session, ['pingou']) self.session.commit() self.assertNotEqual(obj, None) @@ -88,8 +88,8 @@ class Meetingtests(Modeltests): meeting_time_stop=time(23, 59), meeting_information='This is another test meeting', calendar_name='test_calendar') - obj.add_manager(self.session, ['pingou23h']) obj.save(self.session) + obj.add_manager(self.session, ['pingou23h']) self.session.commit() self.assertNotEqual(obj, None) @@ -104,8 +104,8 @@ class Meetingtests(Modeltests): calendar_name='test_calendar3', recursion_frequency=7, recursion_ends=TODAY - timedelta(days=7)) - obj.add_manager(self.session, ['test2']) obj.save(self.session) + obj.add_manager(self.session, ['test2']) self.session.commit() self.assertNotEqual(obj, None) @@ -119,8 +119,8 @@ class Meetingtests(Modeltests): meeting_information='This is a test meeting at the same time', calendar_name='test_calendar4', meeting_location='NA') - obj.add_manager(self.session, ['test']) obj.save(self.session) + obj.add_manager(self.session, ['test']) self.session.commit() self.assertNotEqual(obj, None) @@ -134,8 +134,8 @@ class Meetingtests(Modeltests): ' same time', calendar_name='test_calendar4', meeting_location='EMEA') - obj.add_manager(self.session, ['test']) obj.save(self.session) + obj.add_manager(self.session, ['test']) self.session.commit() self.assertNotEqual(obj, None) @@ -150,8 +150,9 @@ class Meetingtests(Modeltests): calendar_name='test_calendar', recursion_frequency=7, recursion_ends=TODAY + timedelta(days=90)) - obj.add_manager(self.session, ['pingou']) obj.save(self.session) + obj.add_manager(self.session, ['pingou']) + self.session.commit() obj = model.Meeting( # id:8 meeting_name='Another test meeting2', @@ -163,8 +164,8 @@ class Meetingtests(Modeltests): calendar_name='test_calendar', recursion_frequency=14, recursion_ends=TODAY + timedelta(days=90)) - obj.add_manager(self.session, ['pingou']) obj.save(self.session) + obj.add_manager(self.session, ['pingou']) self.session.commit() self.assertNotEqual(obj, None) @@ -183,8 +184,8 @@ class Meetingtests(Modeltests): meeting_information='This is a test meeting with reminder', calendar_name='test_calendar', reminder_id=remobj.reminder_id) - obj.add_manager(self.session, ['pingou']) obj.save(self.session) + obj.add_manager(self.session, ['pingou']) self.session.commit() self.assertNotEqual(obj, None) @@ -207,8 +208,8 @@ class Meetingtests(Modeltests): reminder_id=remobj.reminder_id, recursion_frequency=7, recursion_ends=TODAY + timedelta(days=60)) - obj.add_manager(self.session, ['pingou']) obj.save(self.session) + obj.add_manager(self.session, ['pingou']) self.session.commit() self.assertNotEqual(obj, None) @@ -221,8 +222,8 @@ class Meetingtests(Modeltests): meeting_information='This is a second test meeting in EMEA', calendar_name='test_calendar4', meeting_location='EMEA') - obj.add_manager(self.session, ['test']) obj.save(self.session) + obj.add_manager(self.session, ['test']) self.session.commit() self.assertNotEqual(obj, None) @@ -238,8 +239,8 @@ class Meetingtests(Modeltests): recursion_frequency=7, recursion_ends=TODAY + timedelta(days=90), full_day=False) - obj.add_manager(self.session, ['pingou']) obj.save(self.session) + obj.add_manager(self.session, ['pingou']) self.session.commit() self.assertNotEqual(obj, None) @@ -255,8 +256,8 @@ class Meetingtests(Modeltests): recursion_frequency=None, recursion_ends=None, full_day=True) - obj.add_manager(self.session, ['pingou']) obj.save(self.session) + obj.add_manager(self.session, ['pingou']) self.session.commit() self.assertNotEqual(obj, None) @@ -272,8 +273,8 @@ class Meetingtests(Modeltests): recursion_frequency=7, recursion_ends=TODAY + timedelta(days=30), full_day=True) - obj.add_manager(self.session, ['pingou']) obj.save(self.session) + obj.add_manager(self.session, ['pingou']) self.session.commit() self.assertNotEqual(obj, None) @@ -287,8 +288,8 @@ class Meetingtests(Modeltests): meeting_information='Full day meeting 2', calendar_name='test_calendar2', full_day=True) - obj.add_manager(self.session, ['toshio']) obj.save(self.session) + obj.add_manager(self.session, ['toshio']) self.session.commit() self.assertNotEqual(obj, None) From d91e4d87cdfa9cb4a6ca2f73e9d20b62109bb707 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Sep 11 2019 13:49:22 +0000 Subject: [PATCH 12/13] Remove commented out line of code Signed-off-by: Pierre-Yves Chibon --- diff --git a/fedocal/__init__.py b/fedocal/__init__.py index 97fd49f..05ad006 100644 --- a/fedocal/__init__.py +++ b/fedocal/__init__.py @@ -745,7 +745,6 @@ def auth_login(): else: groups.update(APP.config['ADMIN_GROUP']) - #return FAS.login(return_url=return_point, groups=groups) return flask.redirect(return_point) From f43f810397d49c99be446fa8398e4d0560e5de6d Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Sep 11 2019 13:50:44 +0000 Subject: [PATCH 13/13] Drop un-used code Signed-off-by: Pierre-Yves Chibon --- diff --git a/fedocal/__init__.py b/fedocal/__init__.py index 05ad006..b52d16c 100644 --- a/fedocal/__init__.py +++ b/fedocal/__init__.py @@ -732,19 +732,6 @@ def auth_login(): if is_safe_url(flask.request.args['next']): return_point = flask.request.args['next'] - if authenticated(): - return flask.redirect(return_point) - - groups = set() - for cal in fedocallib.get_calendars(SESSION): - groups.update(cal.admin_groups) - groups.update(cal.editor_groups) - - if isinstance(APP.config['ADMIN_GROUP'], six.string_types): - groups.update([APP.config['ADMIN_GROUP']]) - else: - groups.update(APP.config['ADMIN_GROUP']) - return flask.redirect(return_point)