Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Check jinja version for consent resource #4327

Merged
merged 3 commits into from
Jan 7, 2019

Conversation

richvdh
Copy link
Member

@richvdh richvdh commented Dec 24, 2018

Fixes #3296

@richvdh richvdh requested a review from a team December 24, 2018 15:57
@codecov-io
Copy link

codecov-io commented Dec 24, 2018

Codecov Report

Merging #4327 into develop will decrease coverage by <.01%.
The diff coverage is 51.61%.

Impacted file tree graph

@@             Coverage Diff             @@
##           develop    #4327      +/-   ##
===========================================
- Coverage    73.72%   73.72%   -0.01%     
===========================================
  Files          300      300              
  Lines        29751    29770      +19     
  Branches      4878     4884       +6     
===========================================
+ Hits         21935    21947      +12     
- Misses        6388     6393       +5     
- Partials      1428     1430       +2
Impacted Files Coverage Δ
synapse/config/server.py 62.3% <46.15%> (-1.8%) ⬇️
synapse/python_dependencies.py 45.83% <55.55%> (-1.79%) ⬇️
synapse/handlers/user_directory.py 71.38% <0%> (+0.3%) ⬆️
synapse/app/homeserver.py 57.33% <0%> (+0.33%) ⬆️
synapse/state/v1.py 92.24% <0%> (+1.55%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 37f8bdc...f4ad0ba. Read the comment docs.

@erikjohnston
Copy link
Member

I'm failing to follow the changes that you're making here? It seems to be doing more than just adding checking jinja versions?

@richvdh
Copy link
Member Author

richvdh commented Dec 27, 2018

sorry. The basic problem is that we now require different versions of Jinja2 for consent (2.9) vs email notifs (2.8). I'm slightly hesitant just to bump both to 2.9, mostly because stretch only has 2.8 (although certainly this would be a lot simpler if we didn't care about that).

If we just add "resources.consent": ["Jinja2>=2.9"] to CONDITIONAL_REQUIREMENTS without updating the email notifs entry, we have more problems:

First, check_requirements will complain if Jinja2 2.8 is installed, even if consent is disabled. This is solved by:

  1. making check_requirements only enforce core deps by default. I figured the optional deps check wasn't much use here as it stood.
  2. Moving the error message code into DependencyException.message (from synapse.app.__init__) so that it can be reused
  3. In synapse.config.server.ServerConfig.read_config, adding a call to _check_resource_requirements, which in turn calls check_requirements('resources.consent') if the consent resource is enabled.
  4. While we're in there, adding a check that only known resources are being configured.
  5. Ideally, we'd litter the code with more calls to check_requirements when the relevant options are enabled, but that's left as an exercise for the future.

Second, list_requirements will list Jinja2 twice, which upsets pip when you do an xargs pip install, especially when the py27-old tox target turns the >= into ==. The solution here is to rewrite list_requirements to merge together requirements for the same project.

@richvdh
Copy link
Member Author

richvdh commented Jan 2, 2019

going to rework this to avoid the palaver over supporting different deps for different features

@richvdh richvdh force-pushed the rav/check_jinja_for_consent branch from 82f75cc to d252c2e Compare January 2, 2019 17:23
@richvdh
Copy link
Member Author

richvdh commented Jan 2, 2019

ok, hopefully this is a bit simpler now.

Copy link
Member

@erikjohnston erikjohnston left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this looks sane!

"To install run:",
" pip install --upgrade --force %s" % (" ".join(self.dependencies),),
"",
])
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd be tempted to pull this up as a top level template string and then use the multiline quotes, but that's a matter of taste

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, that would have been a good idea. I just c&ped it tbh.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fair

@richvdh richvdh merged commit b7c0218 into develop Jan 7, 2019
richvdh added a commit that referenced this pull request Jan 8, 2019
Synapse 0.34.1rc1 (2019-01-08)
==============================

Features
--------

- Special-case a support user for use in verifying behaviour of a given server. The support user does not appear in user directory or monthly active user counts. ([\#4141](#4141), [\#4344](#4344))
- Support for serving .well-known files ([\#4262](#4262))
- Rework SAML2 authentication ([\#4265](#4265), [\#4267](#4267))
- SAML2 authentication: Initialise user display name from SAML2 data ([\#4272](#4272))
- Synapse can now have its conditional/extra dependencies installed by pip. This functionality can be used by using `pip install matrix-synapse[feature]`, where feature is a comma separated list with the possible values `email.enable_notifs`, `matrix-synapse-ldap3`, `postgres`, `resources.consent`, `saml2`, `url_preview`, and `test`. If you want to install all optional dependencies, you can use "all" instead. ([\#4298](#4298), [\#4325](#4325), [\#4327](#4327))
- Add routes for reading account data. ([\#4303](#4303))
- Add opt-in support for v2 rooms ([\#4307](#4307))
- Add a script to generate a clean config file ([\#4315](#4315))
- Return server data in /login response ([\#4319](#4319))

Bugfixes
--------

- Fix contains_url check to be consistent with other instances in code-base and check that value is an instance of string. ([\#3405](#3405))
- Fix CAS login when username is not valid in an MXID ([\#4264](#4264))
- Send CORS headers for /media/config ([\#4279](#4279))
- Add 'sandbox' to CSP for media reprository ([\#4284](#4284))
- Make the new landing page prettier. ([\#4294](#4294))
- Fix deleting E2E room keys when using old SQLite versions. ([\#4295](#4295))
- The metric synapse_admin_mau:current previously did not update when config.mau_stats_only was set to True ([\#4305](#4305))
- Fixed per-room account data filters ([\#4309](#4309))
- Fix indentation in default config ([\#4313](#4313))
- Fix synapse:latest docker upload ([\#4316](#4316))
- Fix test_metric.py compatibility with prometheus_client 0.5. Contributed by Maarten de Vries <maarten@de-vri.es>. ([\#4317](#4317))
- Avoid packaging _trial_temp directory in -py3 debian packages ([\#4326](#4326))
- Check jinja version for consent resource ([\#4327](#4327))
- fix NPE in /messages by checking if all events were filtered out ([\#4330](#4330))
- Fix `python -m synapse.config` on Python 3. ([\#4356](#4356))

Deprecations and Removals
-------------------------

- Remove the deprecated v1/register API on Python 2. It was never ported to Python 3. ([\#4334](#4334))

Internal Changes
----------------

- Getting URL previews of IP addresses no longer fails on Python 3. ([\#4215](#4215))
- drop undocumented dependency on dateutil ([\#4266](#4266))
- Update the example systemd config to use a virtualenv ([\#4273](#4273))
- Update link to kernel DCO guide ([\#4274](#4274))
- Make isort tox check print diff when it fails ([\#4283](#4283))
- Log room_id in Unknown room errors ([\#4297](#4297))
- Documentation improvements for coturn setup. Contributed by Krithin Sitaram. ([\#4333](#4333))
- Update pull request template to use absolute links ([\#4341](#4341))
- Update README to not lie about required restart when updating TLS certificates ([\#4343](#4343))
- Update debian packaging for compatibility with transitional package ([\#4349](#4349))
- Fix command hint to generate a config file when trying to start without a config file ([\#4353](#4353))
- Add better logging for unexpected errors while sending transactions ([\#4358](#4358))
@richvdh richvdh deleted the rav/check_jinja_for_consent branch December 1, 2020 12:36
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants