Skip to content

Org: Adds ability to add generic link to daily newsletter.#2566

Open
cyrillkuettel wants to merge 2 commits into
masterfrom
ogc-3239-links-in-newsletter-taglicher-newsletter-einbauen
Open

Org: Adds ability to add generic link to daily newsletter.#2566
cyrillkuettel wants to merge 2 commits into
masterfrom
ogc-3239-links-in-newsletter-taglicher-newsletter-einbauen

Conversation

@cyrillkuettel

Copy link
Copy Markdown
Contributor

Commit message

Org: Adds ability to add generic link to daily newsletter.

TYPE: Feature
LINK: OGC-3239

Checklist

  • I have performed a self-review of my cod
  • I have tested my code thoroughly by hand
  • I have added tests for my changes/features

@linear

linear Bot commented Jul 7, 2026

Copy link
Copy Markdown

OGC-3239

@codecov

codecov Bot commented Jul 7, 2026

Copy link
Copy Markdown

❌ 11 Tests Failed:

Tests completed Failed Passed Skipped
2752 11 2741 17
View the top 3 failed test(s) by shortest run time
tests/onegov/org/test_views_newsletter.py::test_newsletter_creation_limited_to_logged_in_users
Stack Traces | 1.76s run time
client = <tests.onegov.org.conftest.Client object at 0x7fc3cf58e550>

    def test_newsletter_creation_limited_to_logged_in_users(
        client: Client
    ) -> None:
        # verify adding a new newsletter view is set to private
    
        # enable the newsletter
        client.login_admin()
        page = client.get('/module-activation-settings')
        page.form['show_newsletter'] = True
        page.form.submit().follow()
        page = client.get('/newsletter-settings')
        page.form['newsletter_categories'] = ''
>       page.form.submit().follow()

.../onegov/org/test_views_newsletter.py:435: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <200 OK text/html body=b'<!DOCTYP...\n\n'/47027>, kw = {}

    def follow(self, **kw):
        """
        If this response is a redirect, follow that redirect.  It is an
        error if it is not a redirect response. Any keyword
        arguments are passed to :class:`webtest.app.TestApp.get`. Returns
        another :class:`TestResponse` object.
        """
        if not (300 <= self.status_int < 400):
>           raise AssertionError(
                "You can only follow redirect responses (not %s)" % self.status
            )
E           AssertionError: You can only follow redirect responses (not 200 OK)

.../app/lib/python3.14.../site-packages/webtest/response.py:93: AssertionError
tests/onegov/org/test_views_newsletter.py::test_newsletter_send
Stack Traces | 1.77s run time
client = <tests.onegov.org.conftest.Client object at 0x7f6e793718d0>

    def test_newsletter_send(client: Client) -> None:
    
        client.login_admin()
        page = client.get('/module-activation-settings')
        page.form['show_newsletter'] = True
        page.form.submit().follow()
        page = client.get('/newsletter-settings')
        page.form['newsletter_categories'] = ''
>       page.form.submit().follow()

.../onegov/org/test_views_newsletter.py:465: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <200 OK text/html body=b'<!DOCTYP...\n\n'/47027>, kw = {}

    def follow(self, **kw):
        """
        If this response is a redirect, follow that redirect.  It is an
        error if it is not a redirect response. Any keyword
        arguments are passed to :class:`webtest.app.TestApp.get`. Returns
        another :class:`TestResponse` object.
        """
        if not (300 <= self.status_int < 400):
>           raise AssertionError(
                "You can only follow redirect responses (not %s)" % self.status
            )
E           AssertionError: You can only follow redirect responses (not 200 OK)

.../app/lib/python3.14.../site-packages/webtest/response.py:93: AssertionError
tests/onegov/org/test_views_newsletter.py::test_newsletter_signup_for_categories
Stack Traces | 1.8s run time
client = <tests.onegov.org.conftest.Client object at 0x7f6e85707cd0>

    def test_newsletter_signup_for_categories(client: Client) -> None:
        client.login_admin()
        page = client.get('/module-activation-settings')
        page.form['show_newsletter'] = True
        page.form.submit().follow()
        page = client.get('/newsletter-settings')
        page.form['newsletter_categories'] = """
        - News
        - Aktivitäten:
          - Anlässe
          - Sport
        """
>       page.form.submit().follow()

.../onegov/org/test_views_newsletter.py:223: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <200 OK text/html body=b'<!DOCTYP...\n\n'/47094>, kw = {}

    def follow(self, **kw):
        """
        If this response is a redirect, follow that redirect.  It is an
        error if it is not a redirect response. Any keyword
        arguments are passed to :class:`webtest.app.TestApp.get`. Returns
        another :class:`TestResponse` object.
        """
        if not (300 <= self.status_int < 400):
>           raise AssertionError(
                "You can only follow redirect responses (not %s)" % self.status
            )
E           AssertionError: You can only follow redirect responses (not 200 OK)

.../app/lib/python3.14.../site-packages/webtest/response.py:93: AssertionError
tests/onegov/org/test_views_newsletter.py::test_newsletter_send_with_categories
Stack Traces | 1.8s run time
client = <tests.onegov.org.conftest.Client object at 0x7ff90debc450>

    def test_newsletter_send_with_categories(client: Client) -> None:
    
        client.login_admin()
        page = client.get('/module-activation-settings')
        page.form['show_newsletter'] = True
        page.form.submit().follow()
        page = client.get('/newsletter-settings')
        page.form['newsletter_categories'] = """
        - News
        - Aktivitäten:
          - Anlässe
          - Sport
        """
>       page.form.submit().follow()

.../onegov/org/test_views_newsletter.py:579: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <200 OK text/html body=b'<!DOCTYP...\n\n'/47094>, kw = {}

    def follow(self, **kw):
        """
        If this response is a redirect, follow that redirect.  It is an
        error if it is not a redirect response. Any keyword
        arguments are passed to :class:`webtest.app.TestApp.get`. Returns
        another :class:`TestResponse` object.
        """
        if not (300 <= self.status_int < 400):
>           raise AssertionError(
                "You can only follow redirect responses (not %s)" % self.status
            )
E           AssertionError: You can only follow redirect responses (not 200 OK)

.../app/lib/python3.14.../site-packages/webtest/response.py:93: AssertionError
tests/onegov/town6/test_views_newsletter.py::test_newsletter_secret_private_content
Stack Traces | 1.82s run time
client = <tests.onegov.town6.conftest.Client object at 0x7fc5ed05f110>

    def test_newsletter_secret_private_content(client: Client) -> None:
        client.login_admin()
        page = client.get('/module-activation-settings')
        page.form['show_newsletter'] = True
        page.form.submit().follow()
    
        page = client.get('/newsletter-settings')
        page.form['secret_content_allowed'] = False
>       page.form.submit().follow()

.../onegov/town6/test_views_newsletter.py:188: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <200 OK text/html body=b'<!DOCTYP...\n\n'/55168>, kw = {}

    def follow(self, **kw):
        """
        If this response is a redirect, follow that redirect.  It is an
        error if it is not a redirect response. Any keyword
        arguments are passed to :class:`webtest.app.TestApp.get`. Returns
        another :class:`TestResponse` object.
        """
        if not (300 <= self.status_int < 400):
>           raise AssertionError(
                "You can only follow redirect responses (not %s)" % self.status
            )
E           AssertionError: You can only follow redirect responses (not 200 OK)

.../app/lib/python3.14.../site-packages/webtest/response.py:93: AssertionError
tests/onegov/org/test_views_newsletter.py::test_newsletter_signup
Stack Traces | 1.88s run time
client = <tests.onegov.org.conftest.Client object at 0x7f410b098250>

    def test_newsletter_signup(client: Client) -> None:
    
        client.login_admin()
        page = client.get('/module-activation-settings')
        page.form['show_newsletter'] = True
        page.form.submit().follow()
        client.logout()
    
        page = client.get('/newsletters')
        assert 'daily_newsletter' not in page.form.fields
    
        # activate automatic newsletter
        client.login_admin()
        page = client.get('/newsletter-settings')
        page.form['enable_automatic_newsletters'] = True
        page.form['newsletter_times'] = '10'
        page.form.submit()
        client.logout()
    
        page = client.get('/newsletters')
>       assert 'daily_newsletter' in page.form.fields
E       assert 'daily_newsletter' in OrderedDict({'csrf_token': [<Hidden name="csrf_token" id="csrf_token">], 'address': [<Text name="address" id="address">], 'name': [<Text name="name" id="name">], None: [<Submit name="None">]})
E        +  where OrderedDict({'csrf_token': [<Hidden name="csrf_token" id="csrf_token">], 'address': [<Text name="address" id="address">], 'name': [<Text name="name" id="name">], None: [<Submit name="None">]}) = <Form />.fields
E        +    where <Form /> = <200 OK text/html body=b'<!DOCTYP...\n\n'/32524>.form

.../onegov/org/test_views_newsletter.py:160: AssertionError
tests/onegov/town6/test_views_newsletter.py::test_admin_receives_email_notification_on_unsubscription
Stack Traces | 1.9s run time
client = <tests.onegov.town6.conftest.Client object at 0x7fc5ed94ddb0>

    def test_admin_receives_email_notification_on_unsubscription(
        client: Client
    ) -> None:
    
        def extract_unsubscription_link(client: Client, index: int) -> str:
            message = client.get_email(index)['TextBody']
            unsubscribe = re.search(r'abzumelden.\]\(([^\)]+)', message).group(1)  # type: ignore[union-attr]
            return unsubscribe
    
        client.login_admin()
    
        # newsletter settings no admin notification
        page = client.get('/module-activation-settings')
        page.form['show_newsletter'] = True
        page.form.submit().follow()
        page = client.get('/newsletter-settings')
        page.form['notify_on_unsubscription'] = []
>       page.form.submit().follow()

.../onegov/town6/test_views_newsletter.py:997: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <200 OK text/html body=b'<!DOCTYP...\n\n'/55168>, kw = {}

    def follow(self, **kw):
        """
        If this response is a redirect, follow that redirect.  It is an
        error if it is not a redirect response. Any keyword
        arguments are passed to :class:`webtest.app.TestApp.get`. Returns
        another :class:`TestResponse` object.
        """
        if not (300 <= self.status_int < 400):
>           raise AssertionError(
                "You can only follow redirect responses (not %s)" % self.status
            )
E           AssertionError: You can only follow redirect responses (not 200 OK)

.../app/lib/python3.14.../site-packages/webtest/response.py:93: AssertionError
tests/onegov/town6/test_views_newsletter.py::test_newsletter_creation_limited_to_logged_in_users
Stack Traces | 1.96s run time
client = <tests.onegov.town6.conftest.Client object at 0x7fc5eef3b890>

    def test_newsletter_creation_limited_to_logged_in_users(
        client: Client
    ) -> None:
        # verify adding a new newsletter view is set to private
    
        # enable the newsletter
        client.login_admin()
        page = client.get('/module-activation-settings')
        page.form['show_newsletter'] = True
        page.form.submit().follow()
        page = client.get('/newsletter-settings')
        page.form['newsletter_categories'] = ''
>       page.form.submit().follow()

.../onegov/town6/test_views_newsletter.py:551: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <200 OK text/html body=b'<!DOCTYP...\n\n'/55168>, kw = {}

    def follow(self, **kw):
        """
        If this response is a redirect, follow that redirect.  It is an
        error if it is not a redirect response. Any keyword
        arguments are passed to :class:`webtest.app.TestApp.get`. Returns
        another :class:`TestResponse` object.
        """
        if not (300 <= self.status_int < 400):
>           raise AssertionError(
                "You can only follow redirect responses (not %s)" % self.status
            )
E           AssertionError: You can only follow redirect responses (not 200 OK)

.../app/lib/python3.14.../site-packages/webtest/response.py:93: AssertionError
tests/onegov/town6/test_views_newsletter.py::test_newsletter_signup_for_categories
Stack Traces | 1.98s run time
client = <tests.onegov.town6.conftest.Client object at 0x7f580cbf3450>

    def test_newsletter_signup_for_categories(client: Client) -> None:
        client.login_admin()
        page = client.get('/module-activation-settings')
        page.form['show_newsletter'] = True
        page.form.submit().follow()
        page = client.get('/newsletter-settings')
        page.form['newsletter_categories'] = """
        - News
        - Aktivitäten:
          - Anlässe
          - Sport
        """
>       page.form.submit().follow()

.../onegov/town6/test_views_newsletter.py:340: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <200 OK text/html body=b'<!DOCTYP...\n\n'/55235>, kw = {}

    def follow(self, **kw):
        """
        If this response is a redirect, follow that redirect.  It is an
        error if it is not a redirect response. Any keyword
        arguments are passed to :class:`webtest.app.TestApp.get`. Returns
        another :class:`TestResponse` object.
        """
        if not (300 <= self.status_int < 400):
>           raise AssertionError(
                "You can only follow redirect responses (not %s)" % self.status
            )
E           AssertionError: You can only follow redirect responses (not 200 OK)

.../app/lib/python3.14.../site-packages/webtest/response.py:93: AssertionError
tests/onegov/town6/test_views_newsletter.py::test_newsletter_send_with_categories
Stack Traces | 1.98s run time
client = <tests.onegov.town6.conftest.Client object at 0x7fc5ed9bac10>

    def test_newsletter_send_with_categories(client: Client) -> None:
    
        client.login_admin()
        page = client.get('/module-activation-settings')
        page.form['show_newsletter'] = True
        page.form.submit().follow()
        page = client.get('/newsletter-settings')
        page.form['newsletter_categories'] = """
          - News
          - Aktivitäten:
            - Anlässe
            - Sport
        """
>       page.form.submit().follow()

.../onegov/town6/test_views_newsletter.py:700: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <200 OK text/html body=b'<!DOCTYP...\n\n'/55243>, kw = {}

    def follow(self, **kw):
        """
        If this response is a redirect, follow that redirect.  It is an
        error if it is not a redirect response. Any keyword
        arguments are passed to :class:`webtest.app.TestApp.get`. Returns
        another :class:`TestResponse` object.
        """
        if not (300 <= self.status_int < 400):
>           raise AssertionError(
                "You can only follow redirect responses (not %s)" % self.status
            )
E           AssertionError: You can only follow redirect responses (not 200 OK)

.../app/lib/python3.14.../site-packages/webtest/response.py:93: AssertionError
tests/onegov/town6/test_views_newsletter.py::test_newsletter_send
Stack Traces | 2s run time
client = <tests.onegov.town6.conftest.Client object at 0x7f580c545bd0>

    def test_newsletter_send(client: Client) -> None:
    
        client.login_admin()
        page = client.get('/module-activation-settings')
        page.form['show_newsletter'] = True
        page.form.submit().follow()
        page = client.get('/newsletter-settings')
        page.form['newsletter_categories'] = ''
>       page.form.submit().follow()

.../onegov/town6/test_views_newsletter.py:582: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <200 OK text/html body=b'<!DOCTYP...\n\n'/55168>, kw = {}

    def follow(self, **kw):
        """
        If this response is a redirect, follow that redirect.  It is an
        error if it is not a redirect response. Any keyword
        arguments are passed to :class:`webtest.app.TestApp.get`. Returns
        another :class:`TestResponse` object.
        """
        if not (300 <= self.status_int < 400):
>           raise AssertionError(
                "You can only follow redirect responses (not %s)" % self.status
            )
E           AssertionError: You can only follow redirect responses (not 200 OK)

.../app/lib/python3.14.../site-packages/webtest/response.py:93: AssertionError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant